Files
nextcloud-server-mirror/dist/NcProfileHoverCard-RZrrM7IM.chunk.mjs.map
2026-10-07 08:58:40 +00:00

1 line
53 KiB
Plaintext

{"version":3,"file":"NcProfileHoverCard-RZrrM7IM.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcProfileHoverCard.mjs"],"sourcesContent":["import '../assets/NcProfileHoverCard.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, watch, onMounted, unref, normalizeClass, createVNode, Fragment, createBlock, withCtx, resolveDynamicComponent, createSlots, createTextVNode, renderList } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { generateUrl, generateOcsUrl } from \"@nextcloud/router\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter.mjs\";\nimport { N as NcActions } from \"./NcActions.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar.mjs\";\nimport { N as NcButton } from \"./NcButton.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon.mjs\";\nimport { N as NcRichText } from \"./NcRichText.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, R as t25, a as t } from \"./_l10n.mjs\";\nimport { l as logger } from \"./logger.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper.mjs\";\nconst _sfc_main$4 = {\n name: \"BriefcaseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$4 = { d: \"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z\" };\nconst _hoisted_4$4 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon briefcase-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$4, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$4);\n}\nconst BriefcaseIcon = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n name: \"ClockOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon clock-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$3);\n}\nconst ClockIcon = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n name: \"MapMarkerOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon map-marker-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst MapMarkerIcon = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n name: \"PencilOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst PencilIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister(t25);\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst PROFILE_CACHE_TTL_MS = 30 * 60 * 1e3;\nconst cache = /* @__PURE__ */ new Map();\nconst inflight = /* @__PURE__ */ new Map();\nfunction getCachedProfile(userId) {\n const entry = cache.get(userId);\n if (!entry) {\n return null;\n }\n if (Date.now() >= entry.expiresAt) {\n cache.delete(userId);\n return null;\n }\n return entry.data;\n}\nfunction setCachedProfile(userId, data, ttlMs = PROFILE_CACHE_TTL_MS) {\n cache.set(userId, {\n data,\n expiresAt: Date.now() + ttlMs\n });\n}\nasync function fetchProfileCached(userId, fetcher, ttlMs = PROFILE_CACHE_TTL_MS) {\n const cached = getCachedProfile(userId);\n if (cached) {\n return cached;\n }\n const pending = inflight.get(userId);\n if (pending) {\n return pending;\n }\n const promise = (async () => {\n try {\n const data = await fetcher();\n if (data) {\n setCachedProfile(userId, data, ttlMs);\n }\n return data;\n } finally {\n inflight.delete(userId);\n }\n })();\n inflight.set(userId, promise);\n return promise;\n}\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"profile-hover-card__loading\"\n};\nconst _hoisted_3 = { class: \"profile-hover-card__header\" };\nconst _hoisted_4 = { class: \"profile-hover-card__header__container\" };\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-hover-card__header__container__placeholder\"\n};\nconst _hoisted_6 = { class: \"profile-hover-card__header__container__identity\" };\nconst _hoisted_7 = { class: \"profile-hover-card__header__container__displayname\" };\nconst _hoisted_8 = [\"href\"];\nconst _hoisted_9 = { key: 1 };\nconst _hoisted_10 = {\n key: 2,\n class: \"profile-hover-card__header__container__pronoun-separator\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"profile-hover-card__header__container__pronouns\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"profile-hover-card__header__container__status\"\n};\nconst _hoisted_13 = { class: \"profile-hover-card__header__container__status-content\" };\nconst _hoisted_14 = { class: \"profile-hover-card__body\" };\nconst _hoisted_15 = { class: \"profile-hover-card__content\" };\nconst _hoisted_16 = { class: \"profile-hover-card__sidebar\" };\nconst _hoisted_17 = { class: \"user-actions\" };\nconst _hoisted_18 = {\n key: 0,\n class: \"user-actions__loading\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 0,\n class: \"profile-hover-card__blocks\"\n};\nconst _hoisted_22 = {\n key: 0,\n class: \"profile-hover-card__blocks-details\"\n};\nconst _hoisted_23 = {\n key: 0,\n class: \"detail\"\n};\nconst _hoisted_24 = { key: 0 };\nconst _hoisted_25 = {\n key: 1,\n class: \"detail\"\n};\nconst _hoisted_26 = {\n key: 2,\n class: \"detail\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"profile-hover-card__blocks-headline\"\n};\nconst _hoisted_28 = {\n key: 1,\n class: \"profile-hover-card__blocks-biography\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProfileHoverCard\",\n props: {\n user: { default: null },\n displayName: { default: null },\n profile: { default: null },\n preloadedUserStatus: { default: null },\n open: { type: Boolean, default: false },\n actions: { default: null },\n actionsLoading: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const loading = ref(false);\n const error = ref(false);\n const profileData = ref(props.profile);\n const userStatus = ref(props.preloadedUserStatus ?? {});\n const profileEnabled = ref(!!props.profile);\n const userStatusReady = ref(props.preloadedUserStatus !== null);\n const isMobile = useIsSmallMobile();\n const showLoading = computed(() => loading.value || !!profileData.value && !error.value && !userStatusReady.value);\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n const isCurrentUser = computed(() => !!props.user && getCurrentUser()?.uid === props.user);\n const settingsUrl = generateUrl(\"/settings/user\");\n const profileUrl = computed(() => {\n if (!profileEnabled.value) {\n return null;\n }\n const userId = profileData.value?.userId || props.user;\n if (!userId) {\n return null;\n }\n return generateUrl(\"/u/{userId}\", { userId });\n });\n const resolvedDisplayName = computed(() => profileData.value?.displayname || props.displayName || profileData.value?.userId || props.user || \"\");\n const profileLinkProps = computed(() => {\n if (!profileUrl.value) {\n return {};\n }\n return {\n href: profileUrl.value,\n \"aria-label\": t(\"View profile\")\n };\n });\n function isSidebarAction(action) {\n return action.appId !== \"timezone\" && action.appId !== \"profile\" && action.id !== \"profile\";\n }\n function actionDisplayText(action) {\n if (isCurrentUser.value) {\n return action.text;\n }\n if (action.id === \"talk-call\" || isSpreedDirectCallAction(action)) {\n return t(\"Start call\");\n }\n if (action.id === \"talk\" || action.appId === \"spreed\") {\n return t(\"Send message\");\n }\n return action.text;\n }\n function isSpreedDirectCallAction(action) {\n if (action.appId !== \"spreed\") {\n return false;\n }\n const href = action.href ?? (typeof action.to === \"string\" ? action.to : \"\");\n return typeof href === \"string\" && href.includes(\"#direct-call\");\n }\n const resolvedActions = computed(() => {\n if (props.actions && props.actions.length > 0) {\n return props.actions.filter(isSidebarAction);\n }\n return (profileData.value?.actions ?? []).filter(isSidebarAction).map((action) => ({\n id: action.id,\n appId: action.appId,\n text: action.title,\n href: action.target || void 0,\n icon: action.icon,\n target: action.id === \"phone\" ? \"_self\" : \"_blank\",\n rel: action.id === \"fediverse\" ? \"me\" : void 0\n }));\n });\n const localTimeLabel = computed(() => {\n const time = formatProfileLocalTime(/* @__PURE__ */ new Date());\n if (!time) {\n return null;\n }\n return t(\"Local time: {time}\", { time });\n });\n const primaryAction = computed(() => resolvedActions.value[0]);\n const otherActions = computed(() => resolvedActions.value.slice(1));\n const primaryActionButtonProps = computed(() => {\n const action = primaryAction.value;\n if (!action) {\n return {};\n }\n if (action.to) {\n return { to: action.to };\n }\n if (action.href) {\n return {\n href: action.href,\n target: action.target ?? (action.href.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel\n };\n }\n return {};\n });\n const avatarUserStatus = computed(() => ({\n status: userStatus.value.status ?? null,\n icon: userStatus.value.icon ?? null,\n message: userStatus.value.message ?? null\n }));\n function formatProfileLocalTime(date) {\n const timeZone = profileData.value?.timezone;\n if (timeZone) {\n try {\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone,\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(date);\n } catch {\n }\n }\n if (typeof profileData.value?.timezoneOffset === \"number\") {\n const shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1e3);\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone: \"UTC\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(shifted);\n }\n return null;\n }\n function isIconUrl(icon) {\n return !!icon && (/^(https?:)?\\/\\//.test(icon) || icon.startsWith(\"/\") || icon.startsWith(\"data:\"));\n }\n function otherActionComponent(action) {\n if (action.to) {\n return NcActionRouter;\n }\n if (action.onClick && !action.href) {\n return NcActionButton;\n }\n return NcActionLink;\n }\n function otherActionProps(action) {\n if (action.to) {\n return { to: action.to, closeAfterClick: true };\n }\n if (action.onClick && !action.href) {\n return { onClick: action.onClick, closeAfterClick: true };\n }\n return {\n href: action.href,\n target: action.target ?? (action.href?.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel,\n closeAfterClick: true\n };\n }\n watch(() => props.profile, (value) => {\n if (value) {\n profileData.value = value;\n profileEnabled.value = true;\n if (props.user) {\n setCachedProfile(props.user, value);\n }\n error.value = false;\n }\n });\n watch(() => props.preloadedUserStatus, (value) => {\n if (value) {\n userStatus.value = value;\n userStatusReady.value = true;\n }\n });\n watch(() => props.displayName, (value) => {\n if (value && profileData.value && !profileEnabled.value) {\n profileData.value = { ...profileData.value, displayname: value };\n }\n });\n watch(() => props.user, () => {\n profileData.value = props.profile;\n userStatus.value = props.preloadedUserStatus ?? {};\n userStatusReady.value = props.preloadedUserStatus !== null;\n profileEnabled.value = !!props.profile;\n error.value = false;\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n if (props.open) {\n loadProfile();\n }\n });\n watch(() => props.open, (isOpen) => {\n if (isOpen) {\n loadProfile();\n }\n });\n onMounted(() => {\n if (props.open) {\n loadProfile();\n }\n });\n async function resolveDisplayName(userId) {\n if (props.displayName) {\n return props.displayName;\n }\n try {\n const { data } = await axios.post(generateUrl(\"/displaynames\"), { users: [userId] });\n return data?.users?.[userId] || userId;\n } catch (e) {\n logger.debug(\"Failed to load display name for hovercard\", { error: e, userId });\n return userId;\n }\n }\n async function createLimitedProfile(userId) {\n return {\n userId,\n displayname: await resolveDisplayName(userId),\n actions: [],\n isUserAvatarVisible: true\n };\n }\n async function ensureUserStatus(userId) {\n if (!userStatusReady.value) {\n userStatus.value = await fetchUserStatus(userId);\n userStatusReady.value = true;\n }\n }\n async function loadProfile() {\n if (!props.user || loading.value) {\n return;\n }\n const userId = props.user;\n if (!profileData.value) {\n const cached = getCachedProfile(userId);\n if (cached) {\n profileData.value = cached;\n profileEnabled.value = true;\n }\n }\n if (profileData.value && profileEnabled.value) {\n if (!userStatusReady.value) {\n loading.value = true;\n try {\n await ensureUserStatus(userId);\n } finally {\n loading.value = false;\n }\n }\n return;\n }\n loading.value = true;\n error.value = false;\n const statusPromise = userStatusReady.value ? Promise.resolve(userStatus.value) : fetchUserStatus(userId);\n try {\n const profile = await fetchProfileCached(userId, async () => {\n const { data } = await axios.get(generateOcsUrl(\"/profile/{userId}\", { userId }));\n return data.ocs?.data ?? null;\n });\n if (profile) {\n profileData.value = profile;\n profileEnabled.value = true;\n } else {\n profileData.value = await createLimitedProfile(userId);\n profileEnabled.value = false;\n }\n } catch (e) {\n logger.debug(\"Failed to load profile for hovercard, showing limited info\", { error: e, user: userId });\n profileData.value = await createLimitedProfile(userId);\n profileEnabled.value = false;\n }\n try {\n userStatus.value = await statusPromise;\n userStatusReady.value = true;\n } finally {\n loading.value = false;\n }\n }\n async function fetchUserStatus(userId) {\n try {\n if (!getCapabilities()?.user_status?.enabled || !getCurrentUser()) {\n return {};\n }\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{userId}\", { userId }));\n return data.ocs?.data ?? {};\n } catch (e) {\n logger.debug(\"Failed to load user status for hovercard\", { error: e, userId });\n return {};\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"profile-hover-card\", { \"profile-hover-card--limited\": !showLoading.value && !!profileData.value && !error.value && !profileEnabled.value }]),\n role: \"dialog\",\n \"aria-label\": unref(t)(\"Profile of {user}\", { user: resolvedDisplayName.value })\n }, [\n showLoading.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createVNode(NcLoadingIcon, {\n size: 32,\n name: unref(t)(\"Loading profile\")\n }, null, 8, [\"name\"])\n ])) : profileData.value && !error.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createElementVNode(\"div\", _hoisted_3, [\n isCurrentUser.value ? (openBlock(), createBlock(NcButton, {\n key: 0,\n class: \"profile-hover-card__header__edit\",\n variant: \"tertiary\",\n \"aria-label\": unref(t)(\"Edit profile\"),\n title: unref(t)(\"Edit profile\"),\n href: unref(settingsUrl),\n target: \"_blank\"\n }, {\n icon: withCtx(() => [\n createVNode(PencilIcon, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"href\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n unref(isMobile) ? (openBlock(), createBlock(resolveDynamicComponent(profileUrl.value ? \"a\" : \"div\"), mergeProps({\n key: 0,\n class: [\"profile-hover-card__header__container__avatar\", { \"profile-hover-card__profile-link\": !!profileUrl.value }]\n }, profileLinkProps.value), {\n default: withCtx(() => [\n createVNode(NcAvatar, {\n class: \"avatar\",\n user: profileData.value.userId,\n displayName: resolvedDisplayName.value,\n size: 96,\n disableMenu: \"\",\n disableTooltip: \"\",\n preloadedUserStatus: avatarUserStatus.value,\n isNoUser: !profileData.value.isUserAvatarVisible\n }, null, 8, [\"user\", \"displayName\", \"preloadedUserStatus\", \"isNoUser\"])\n ]),\n _: 1\n }, 16, [\"class\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_5)),\n createElementVNode(\"div\", _hoisted_6, [\n createElementVNode(\"div\", _hoisted_7, [\n profileUrl.value ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n class: \"profile-hover-card__profile-link\",\n href: profileUrl.value\n }, [\n createElementVNode(\"h2\", null, toDisplayString(resolvedDisplayName.value), 1)\n ], 8, _hoisted_8)) : (openBlock(), createElementBlock(\"h2\", _hoisted_9, toDisplayString(resolvedDisplayName.value), 1)),\n profileData.value.pronouns ? (openBlock(), createElementBlock(\"span\", _hoisted_10, \"·\")) : createCommentVNode(\"\", true),\n profileData.value.pronouns ? (openBlock(), createElementBlock(\"span\", _hoisted_11, toDisplayString(profileData.value.pronouns), 1)) : createCommentVNode(\"\", true)\n ]),\n userStatus.value.icon || userStatus.value.message ? (openBlock(), createElementBlock(\"div\", _hoisted_12, [\n createElementVNode(\"span\", _hoisted_13, [\n createElementVNode(\"span\", null, toDisplayString(userStatus.value.icon) + \" \" + toDisplayString(userStatus.value.message), 1)\n ])\n ])) : createCommentVNode(\"\", true)\n ])\n ])\n ]),\n createElementVNode(\"div\", _hoisted_14, [\n createElementVNode(\"div\", _hoisted_15, [\n createElementVNode(\"div\", _hoisted_16, [\n !unref(isMobile) ? (openBlock(), createBlock(resolveDynamicComponent(profileUrl.value ? \"a\" : \"div\"), mergeProps({\n key: 0,\n class: { \"profile-hover-card__profile-link\": !!profileUrl.value }\n }, profileLinkProps.value), {\n default: withCtx(() => [\n createVNode(NcAvatar, {\n class: \"avatar\",\n user: profileData.value.userId,\n displayName: resolvedDisplayName.value,\n size: 135,\n disableMenu: \"\",\n disableTooltip: \"\",\n preloadedUserStatus: avatarUserStatus.value,\n isNoUser: !profileData.value.isUserAvatarVisible\n }, null, 8, [\"user\", \"displayName\", \"preloadedUserStatus\", \"isNoUser\"])\n ]),\n _: 1\n }, 16, [\"class\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_17, [\n __props.actionsLoading && resolvedActions.value.length === 0 ? (openBlock(), createElementBlock(\"div\", _hoisted_18, [\n createVNode(NcLoadingIcon, {\n size: 20,\n name: unref(t)(\"Loading actions\")\n }, null, 8, [\"name\"])\n ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n primaryAction.value ? (openBlock(), createBlock(NcButton, mergeProps({\n key: 0,\n variant: \"primary\",\n class: \"user-actions__primary\"\n }, primaryActionButtonProps.value, {\n onClick: primaryAction.value.onClick\n }), createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(actionDisplayText(primaryAction.value)), 1)\n ]),\n _: 2\n }, [\n primaryAction.value.iconSvg || primaryAction.value.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n primaryAction.value.iconSvg ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n svg: primaryAction.value.iconSvg\n }, null, 8, [\"svg\"])) : isIconUrl(primaryAction.value.icon) ? (openBlock(), createElementBlock(\"img\", {\n key: 1,\n src: primaryAction.value.icon,\n alt: \"\",\n class: \"user-actions__primary__icon\"\n }, null, 8, _hoisted_19)) : (openBlock(), createElementBlock(\"span\", {\n key: 2,\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"user-actions__primary__icon-class\", primaryAction.value.icon])\n }, null, 2))\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"onClick\"])) : createCommentVNode(\"\", true),\n otherActions.value.length > 0 ? (openBlock(), createBlock(NcActions, {\n key: 1,\n class: \"user-actions__other\",\n inline: unref(isMobile) ? 5 : 4\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(otherActions.value, (action, index) => {\n return openBlock(), createBlock(resolveDynamicComponent(otherActionComponent(action)), mergeProps({\n key: action.id || action.href || index\n }, { ref_for: true }, otherActionProps(action)), createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(actionDisplayText(action)), 1)\n ]),\n _: 2\n }, [\n action.iconSvg || action.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n action.iconSvg ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n svg: action.iconSvg\n }, null, 8, [\"svg\"])) : isIconUrl(action.icon) ? (openBlock(), createElementBlock(\"img\", {\n key: 1,\n src: action.icon,\n alt: \"\",\n class: \"user-actions__other__icon\"\n }, null, 8, _hoisted_20)) : (openBlock(), createElementBlock(\"span\", {\n key: 2,\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"user-actions__other__icon-class\", action.icon])\n }, null, 2))\n ]),\n key: \"0\"\n } : void 0\n ]), 1040);\n }), 128))\n ]),\n _: 1\n }, 8, [\"inline\"])) : createCommentVNode(\"\", true)\n ], 64))\n ])\n ]),\n profileEnabled.value ? (openBlock(), createElementBlock(\"div\", _hoisted_21, [\n profileData.value.organisation || profileData.value.role || profileData.value.address || localTimeLabel.value ? (openBlock(), createElementBlock(\"div\", _hoisted_22, [\n profileData.value.organisation || profileData.value.role ? (openBlock(), createElementBlock(\"div\", _hoisted_23, [\n createElementVNode(\"p\", null, [\n createVNode(BriefcaseIcon, {\n class: \"detail-icon\",\n size: 16,\n title: \"\"\n }),\n createTextVNode(\" \" + toDisplayString(profileData.value.organisation) + \" \", 1),\n profileData.value.organisation && profileData.value.role ? (openBlock(), createElementBlock(\"span\", _hoisted_24, \"•\")) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(profileData.value.role), 1)\n ])\n ])) : createCommentVNode(\"\", true),\n profileData.value.address ? (openBlock(), createElementBlock(\"div\", _hoisted_25, [\n createElementVNode(\"p\", null, [\n createVNode(MapMarkerIcon, {\n class: \"detail-icon\",\n size: 16,\n title: \"\"\n }),\n createTextVNode(\" \" + toDisplayString(profileData.value.address), 1)\n ])\n ])) : createCommentVNode(\"\", true),\n localTimeLabel.value ? (openBlock(), createElementBlock(\"div\", _hoisted_26, [\n createElementVNode(\"p\", null, [\n createVNode(ClockIcon, {\n class: \"detail-icon\",\n size: 16,\n title: \"\"\n }),\n createTextVNode(\" \" + toDisplayString(localTimeLabel.value), 1)\n ])\n ])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n profileData.value.headline || profileData.value.biography ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n profileData.value.headline ? (openBlock(), createElementBlock(\"h3\", _hoisted_27, toDisplayString(profileData.value.headline), 1)) : createCommentVNode(\"\", true),\n profileData.value.biography ? (openBlock(), createElementBlock(\"div\", _hoisted_28, [\n createVNode(NcRichText, {\n text: profileData.value.biography,\n useExtendedMarkdown: \"\"\n }, null, 8, [\"text\"])\n ])) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true)\n ])\n ])\n ], 64)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1);\n };\n }\n});\nconst NcProfileHoverCard = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-592f6ec3\"]]);\nexport {\n NcProfileHoverCard as default\n};\n//# sourceMappingURL=NcProfileHoverCard.mjs.map\n"],"names":["_sfc_main$4","_hoisted_1$4","_hoisted_2$4","_hoisted_3$4","_hoisted_4$4","_sfc_render$3","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","BriefcaseIcon","_export_sfc","_sfc_main$3","_hoisted_1$3","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$2","ClockIcon","_sfc_main$2","_hoisted_1$2","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_sfc_render$1","MapMarkerIcon","_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render","PencilIcon","register","t25","PROFILE_CACHE_TTL_MS","cache","inflight","getCachedProfile","userId","entry","setCachedProfile","data","ttlMs","fetchProfileCached","fetcher","cached","pending","promise","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_sfc_main","defineComponent","__props","props","loading","ref","error","profileData","userStatus","profileEnabled","userStatusReady","isMobile","useIsSmallMobile","showLoading","computed","isCurrentUser","getCurrentUser","settingsUrl","generateUrl","profileUrl","resolvedDisplayName","profileLinkProps","t","isSidebarAction","action","actionDisplayText","isSpreedDirectCallAction","href","resolvedActions","localTimeLabel","time","formatProfileLocalTime","primaryAction","otherActions","primaryActionButtonProps","avatarUserStatus","date","timeZone","getCanonicalLocale","shifted","isIconUrl","icon","otherActionComponent","NcActionRouter","NcActionButton","NcActionLink","otherActionProps","watch","value","loadProfile","isOpen","onMounted","resolveDisplayName","axios","e","logger","createLimitedProfile","ensureUserStatus","fetchUserStatus","statusPromise","profile","generateOcsUrl","getCapabilities","normalizeClass","unref","createVNode","NcLoadingIcon","Fragment","createBlock","NcButton","withCtx","resolveDynamicComponent","NcAvatar","createSlots","createTextVNode","NcIconSvgWrapper","NcActions","renderList","index","NcRichText","NcProfileHoverCard"],"mappings":"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","x_google_ignoreList":[0]}