mirror of
https://github.com/nextcloud/server.git
synced 2026-11-01 19:11:49 +01:00
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
1 line
96 KiB
Plaintext
1 line
96 KiB
Plaintext
{"version":3,"file":"FilePicker-CYKWmY7E.chunk.mjs","sources":["../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/sharing/dist/share/ShareType.js","../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/sharing/dist/public.js","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker.mjs"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nexport var ShareType;\n(function (ShareType) {\n ShareType[ShareType[\"User\"] = 0] = \"User\";\n ShareType[ShareType[\"Group\"] = 1] = \"Group\";\n ShareType[ShareType[\"Link\"] = 3] = \"Link\";\n ShareType[ShareType[\"Email\"] = 4] = \"Email\";\n ShareType[ShareType[\"Remote\"] = 6] = \"Remote\";\n /**\n * Was called `Circle` before Nextcloud 29\n */\n ShareType[ShareType[\"Team\"] = 7] = \"Team\";\n ShareType[ShareType[\"Guest\"] = 8] = \"Guest\";\n ShareType[ShareType[\"RemoteGroup\"] = 9] = \"RemoteGroup\";\n ShareType[ShareType[\"Room\"] = 10] = \"Room\";\n ShareType[ShareType[\"Deck\"] = 12] = \"Deck\";\n /**\n * @since 26.0.0\n */\n ShareType[ShareType[\"FederatedGroup\"] = 14] = \"FederatedGroup\";\n /**\n * Third party share types\n *\n * @since 25.0.0\n */\n ShareType[ShareType[\"ScienceMesh\"] = 15] = \"ScienceMesh\";\n})(ShareType || (ShareType = {}));\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n/**\n * @module public\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the current page is on a public share\n */\nexport function isPublicShare() {\n // check both the new initial state version and fallback to legacy input\n return (loadState('files_sharing', 'isPublic', null)\n ?? document.querySelector('input#isPublic[type=\"hidden\"][name=\"isPublic\"][value=\"1\"]') !== null);\n}\n/**\n * Get the sharing token for the current public share\n */\nexport function getSharingToken() {\n return (loadState('files_sharing', 'sharingToken', null)\n ?? document.querySelector('input#sharingToken[type=\"hidden\"]')?.value\n ?? null);\n}\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, useModel, onUnmounted, withCtx, createTextVNode, renderList, mergeModels, nextTick, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc, t, l as logger, s as showError } from \"./index.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\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$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_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 file-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$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\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$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_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 menu-down-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$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\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$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_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 menu-up-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$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\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$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_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 folder-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$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_1aykw_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_1aykw_22\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_1aykw_26\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\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$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { 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 home-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$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\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$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { 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 plus-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$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\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$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { 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 close-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$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\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$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { 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 magnify-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, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const filterString = ref(\"\");\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n filterString.value = \"\";\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value && (!props.canPickFn || props.canPickFn(currentFolder.value)) ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-39182aaf\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker.mjs.map\n"],"names":["ShareType","isPublicShare","loadState","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","IconFile","_export_sfc","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","IconFolder","fileListIconStyles","_sfc_main$a","defineComponent","__props","props","fileListIconStyles$1","ref","previewURL","previewLoaded","usePreviewURL","toRef","computed","isFile","FileType","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","normalizeClass","Fragment","createBlock","NcIconSvgWrapper","createVNode","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","withModifiers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","logger","data","axios","generateUrl","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","toValue","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","path","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","index","onUnmounted","NcButton","withCtx","createTextVNode","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","name","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","i","elements","NcBreadcrumbs","createSlots","NcBreadcrumb","NcActions","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","_sfc_render$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","_hoisted_3","_hoisted_4","_sfc_render","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","_hoisted_1$1","_sfc_main$1","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","_hoisted_1","_hoisted_2","_sfc_main","emit$1","isOpen","savedPath","navigatedPath","filterString","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","open","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2]} |