{"version":3,"mappings":"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AAK,CACpC,EAKA,kBAAmB,CACd,KAAK,aACR,SAAS,eAAc,EAEvB,KAAK,IAAI,kBAAiB,CAE5B,CACF,CACA,ECrMAjE,GAAA,CACA,2BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,2nBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,+pBChBAA,GAAA,CACA,sBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,8lBChBAA,GAAA,CACA,0BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,kmBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,8uBChBAA,GAAA,CACA,qBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,imBCmLAoE,EAAA,IAAAC,EAAA,gDAAAC,KAAA,sDACAC,GAAA,IAAAF,EAAA,4FACAG,GAAA,IAAAH,EAAA,wGAEArE,GAAAyE,GAAA,CACA,cAEA,YACA,OAAAC,GACA,UAAAC,GACA,SAAAC,GACA,MAAAC,GACA,WAAAC,GACA,eAAAC,GACA,eAAAP,GACA,aAAAD,GACA,QAAAH,EACA,OAAAY,EACA,EAEA,QAAAC,GAAAC,EAAA,EAEA,OACA,OAEA,kBACA,sCAGA,cACA,cACA,sBAGA,eACA,gBACA,eACA,oBACA,YACA,YACA,mBAGA,YACA,aACA,WACA,oBACA,gBAGA,yBACA,2BAGA,kBACA,kBACA,oBACA,YACA,gBACA,WACA,mBACA,KAAAC,EACA,aAEA,eACA,CACA,EAEA,UACA,eACA,wDACA,EACA,cACA,gCACA,kCACA,EACA,UACA,gCACA,gCACA,EACA,OACA,uBACA,EACA,WACA,2BACA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","names":["index","isFullscreenState","isMobileState","canDownload","fileInfo","shareAttributes","scope","key","CancelableRequest","request","controller","url","options","_sfc_main","fetchNode","path","client","getClient","propfindPayload","getDefaultPropfind","result","getRootPath","resultToNode","File","mime","component","data","getDavPath","getFileList","getDavNameSpaces","getDavProperties","genFileInfo","getSortingConfig","viewConfigs","getViewConfigs","asc","isPublicShare","generateUrl","axios","response","debounce","function_","wait","immediate","storedContext","storedArguments","timeoutId","timestamp","run","callContext","callArguments","later","last","debounced","arguments_","callNow","PreviewUrl","getPreviewIfAny","isWindows","process","splitWindowsRe","win32","win32SplitPath","filename","pathString","allParts","splitPathRe","posix","posixSplitPath","pathParseModule","Mime","parsePath","val","old","e","modalWrapper","modalContainer","parentHeight","parentWidth","heightRatio","widthRatio","NcModal","__vitePreload","n","NcActionLink","NcActionButton","defineComponent","Delete","DockRight","Download","Error","Fullscreen","FullscreenExit","Pencil","isFullscreen","isMobile","defaultRemoteURL","defaultRootPath","loadState","fileList","element","logger","viewerRoot","el","currentIndex","file","isEndOfList","list","handler","subscribe","unsubscribe","isOpen","toggleEditor","event","sidebar","overrideHandlerId","fileRequest","cancelRequestFile","cancelableRequest","getFileInfo","fileName","extractFilePaths","title","error","showError","source","extractFilePathFromSource","node","emit","alias","h","defaultThemeIsLight","group","mimes","folderRequest","cancelRequestFolder","dirPath","filteredFiles","nodes","NcFile","sortedNodes","sortNodes","filesByPath","prev","next","Vue","currentFileId","fileid","isDavResource","a","t","ViewerRoot","VideoControls","ViewerComponent"],"ignoreList":[0,1,9,11,13,14,15,16,17,18],"sources":["../node_modules/@nextcloud/vue/dist/Mixins/isFullscreen.mjs","../node_modules/@nextcloud/vue/dist/Mixins/isMobile.mjs","../src/utils/canDownload.ts","../src/utils/CancelableRequest.js","../src/components/Error.vue","../src/services/FetchFile.ts","../src/models/file.js","../src/services/FileList.ts","../src/services/FileSortingConfig.ts","../node_modules/debounce/index.js","../src/mixins/PreviewUrl.js","../node_modules/path-parse/index.js","../src/mixins/Mime.js","../node_modules/vue-material-design-icons/TrashCanOutline.vue","../node_modules/vue-material-design-icons/TrayArrowDown.vue","../node_modules/vue-material-design-icons/Fullscreen.vue","../node_modules/vue-material-design-icons/FullscreenExit.vue","../node_modules/vue-material-design-icons/PencilOutline.vue","../node_modules/vue-material-design-icons/DockRight.vue","../src/views/Viewer.vue","../src/main.js"],"sourcesContent":["import { isFullscreenState } from \"../Composables/useIsFullscreen.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsFullscreen` instead.\n */\n isFullscreen() {\n return isFullscreenState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isFullscreen.mjs.map\n","import { isMobileState } from \"../Composables/useIsMobile.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsMobile` instead.\n */\n isMobile() {\n return isMobileState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isMobile.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileInfo } from './fileUtils'\n\n/**\n * Check if download permissions are granted for a file\n * @param fileInfo The file info to check\n */\nexport function canDownload(fileInfo: FileInfo) {\n\tif (fileInfo.hideDownload) {\n\t\treturn false\n\t}\n\n\t// TODO: This should probably be part of `@nextcloud/sharing`\n\t// check share attributes\n\tconst shareAttributes = typeof fileInfo?.shareAttributes === 'string' ? JSON.parse(fileInfo.shareAttributes || '[]') : fileInfo?.shareAttributes\n\n\tif (shareAttributes && shareAttributes.length > 0) {\n\t\tconst downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download')\n\t\t// We only forbid download if the attribute is *explicitly* set to 'false'\n\t\treturn downloadAttribute?.value !== false\n\t}\n\t// otherwise return true (as the file needs read permission otherwise we would not have opened it)\n\treturn true\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst CancelableRequest = function(request) {\n\tconst controller = new AbortController()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\t{ ...options, signal: controller.signal },\n\t\t)\n\t}\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: () => controller.abort(),\n\t}\n}\n\nexport default CancelableRequest\n","\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav'\n\nexport default async (path: string): Promise => {\n\tif (!path.startsWith('/')) {\n\t\tpath = `/${path}`\n\t}\n\tconst client = getClient()\n\tconst propfindPayload = getDefaultPropfind()\n\tconst result = await client.stat(`${getRootPath()}${path}`, {\n\t\tdetails: true,\n\t\tdata: propfindPayload,\n\t}) as ResponseDataDetailed\n\treturn resultToNode(result.data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getDavPath } from '../utils/fileUtils.ts'\n\n/**\n * @param {object} fileInfo a FileInfo object\n * @param {string} mime the file mime type\n * @param {object} component the component to render\n */\nexport default function(fileInfo, mime, component) {\n\tconst data = {\n\t\tmime,\n\t\tmodal: component,\n\t\tfailed: false,\n\t\tloaded: false,\n\t\tdavPath: getDavPath(fileInfo),\n\t\tsource: fileInfo.source ?? getDavPath(fileInfo),\n\t}\n\n\treturn Object.assign({}, fileInfo, data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getDavNameSpaces, getDavProperties } from '@nextcloud/files/dav'\nimport { client } from './WebdavClient'\nimport { genFileInfo, type FileInfo } from '../utils/fileUtils'\n\n/**\n * Retrieve the files list\n * @param path\n * @param options\n */\nexport default async function(path: string, options = {}): Promise {\n\tconst response = await client.getDirectoryContents(path, Object.assign({\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${getDavProperties()}\n\t\t\t\t\n\t\t\t`,\n\t\tdetails: true,\n\t}, options)) as ResponseDataDetailed\n\n\treturn response.data.map(genFileInfo)\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { isPublicShare } from '@nextcloud/sharing/public'\n\n/**\n * @return {object}\n */\nexport default async function getSortingConfig() {\n\tconst viewConfigs = await getViewConfigs()\n\n\tif (!viewConfigs) {\n\t\treturn { key: 'basename', asc: true }\n\t}\n\n\tconst keyMap = { mtime: 'lastmod' }\n\tconst key = keyMap[viewConfigs.sorting_mode] || viewConfigs.sorting_mode || 'basename'\n\tconst asc = viewConfigs.sorting_direction === 'asc' || !viewConfigs.sorting_direction\n\n\treturn { key, asc }\n}\n\n/**\n * @return {object}\n */\nasync function getViewConfigs() {\n\tif (isPublicShare()) {\n\t\treturn null\n\t}\n\tconst url = generateUrl('apps/files/api/v1/views')\n\treturn await axios.get(url)\n\t\t.then((response) => {\n\t\t\treturn response.data.data?.files\n\t\t})\n\t\t.catch(() => {\n\t\t\treturn null\n\t\t})\n}\n","export default function debounce(function_, wait = 100, options = {}) {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError(`Expected the first parameter to be a function, got \\`${typeof function_}\\`.`);\n\t}\n\n\tif (wait < 0) {\n\t\tthrow new RangeError('`wait` must not be negative.');\n\t}\n\n\tif (typeof options === 'boolean') {\n\t\tthrow new TypeError('The `options` parameter must be an object, not a boolean. Use `{immediate: true}` instead.');\n\t}\n\n\tconst {immediate} = options;\n\n\tlet storedContext;\n\tlet storedArguments;\n\tlet timeoutId;\n\tlet timestamp;\n\tlet result;\n\n\tfunction run() {\n\t\tconst callContext = storedContext;\n\t\tconst callArguments = storedArguments;\n\t\tstoredContext = undefined;\n\t\tstoredArguments = undefined;\n\t\tresult = function_.apply(callContext, callArguments);\n\t\treturn result;\n\t}\n\n\tfunction later() {\n\t\tconst last = Date.now() - timestamp;\n\n\t\tif (last < wait && last >= 0) {\n\t\t\ttimeoutId = setTimeout(later, wait - last);\n\t\t} else {\n\t\t\ttimeoutId = undefined;\n\n\t\t\tif (!immediate) {\n\t\t\t\tresult = run();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst debounced = function (...arguments_) {\n\t\tif (\n\t\t\tstoredContext\n\t\t\t&& this !== storedContext\n\t\t\t&& Object.getPrototypeOf(this) === Object.getPrototypeOf(storedContext)\n\t\t) {\n\t\t\tthrow new Error('Debounced method called with different contexts of the same prototype.');\n\t\t}\n\n\t\tstoredContext = this; // eslint-disable-line unicorn/no-this-assignment\n\t\tstoredArguments = arguments_;\n\t\ttimestamp = Date.now();\n\n\t\tconst callNow = immediate && !timeoutId;\n\n\t\tif (!timeoutId) {\n\t\t\ttimeoutId = setTimeout(later, wait);\n\t\t}\n\n\t\tif (callNow) {\n\t\t\tresult = run();\n\t\t\treturn result;\n\t\t}\n\n\t\treturn undefined;\n\t};\n\n\tObject.defineProperty(debounced, 'isPending', {\n\t\tget() {\n\t\t\treturn timeoutId !== undefined;\n\t\t},\n\t});\n\n\tdebounced.clear = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = undefined;\n\t\tstoredContext = undefined;\n\t\tstoredArguments = undefined;\n\t};\n\n\tdebounced.flush = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounced.trigger();\n\t};\n\n\tdebounced.trigger = () => {\n\t\tresult = run();\n\n\t\tdebounced.clear();\n\t};\n\n\treturn debounced;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getPreviewIfAny } from '../utils/previewUtils.ts'\nimport { getDavPath } from '../utils/fileUtils.ts'\n\nexport default {\n\tcomputed: {\n\t\t/**\n\t\t * Link to the preview path if the file have a preview\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tpreviewPath() {\n\t\t\treturn this.getPreviewIfAny({\n\t\t\t\tfileid: this.fileid,\n\t\t\t\tfilename: this.filename,\n\t\t\t\tpreviewUrl: this.previewUrl,\n\t\t\t\thasPreview: this.hasPreview,\n\t\t\t\tdavPath: this.davPath,\n\t\t\t\tetag: this.$attrs.etag,\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Absolute dav remote path of the file\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tdavPath() {\n\t\t\treturn getDavPath({\n\t\t\t\tfilename: this.filename,\n\t\t\t\tbasename: this.basename,\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Return the preview url if the file have an existing\n\t\t * preview or the absolute dav remote path if none.\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.fileid the file id\n\t\t * @param {string} [data.previewUrl] URL of the file preview\n\t\t * @param {boolean} data.hasPreview have the file an existing preview ?\n\t\t * @param {string} data.davPath the absolute dav path\n\t\t * @param {string} data.filename the file name\n\t\t * @param {string|null} data.etag the etag of the file\n\t\t * @return {string} the absolute url\n\t\t */\n\t\tgetPreviewIfAny(data) {\n\t\t\treturn getPreviewIfAny(data)\n\t\t},\n\t},\n}\n","'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into into [dir, root, basename, name, ext]\nvar splitWindowsRe =\n /^(((?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?[\\\\\\/]?)(?:[^\\\\\\/]*[\\\\\\/])*)((\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))[\\\\\\/]*$/;\n\nvar win32 = {};\n\nfunction win32SplitPath(filename) {\n return splitWindowsRe.exec(filename).slice(1);\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[1],\n dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3]\n };\n};\n\n\n\n// Split a filename into [dir, root, basename, name, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^((\\/?)(?:[^\\/]*\\/)*)((\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))[\\/]*$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n \n return {\n root: allParts[1],\n dir: allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3],\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport debounce from 'debounce'\nimport PreviewUrl from '../mixins/PreviewUrl.js'\nimport parsePath from 'path-parse'\n\nexport default {\n\tinheritAttrs: false,\n\tmixins: [PreviewUrl],\n\tprops: {\n\t\t// Is the current component shown\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// file name\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file path relative to user folder\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file source to fetch contents from\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// URL the file preview\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// should the standard core preview be used?\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// unique file id\n\t\tfileid: {\n\t\t\ttype: [Number, String],\n\t\t\trequired: false,\n\t\t},\n\t\t// list of all the visible files\n\t\tfileList: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\t// file mime (aliased if specified in the model)\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// can the user swipe\n\t\tcanSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tcanZoom: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the content loaded?\n\t\t// synced with parent\n\t\tloaded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the sidebar currently opened ?\n\t\tisSidebarShown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// are we in fullscreen mode ?\n\t\tisFullScreen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// The file id of the peer live photo file\n\t\tmetadataFilesLivePhoto: {\n\t\t\ttype: Number,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theight: null,\n\t\t\twidth: null,\n\t\t\tnaturalHeight: null,\n\t\t\tnaturalWidth: null,\n\t\t\tisLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tname() {\n\t\t\treturn parsePath(this.basename).name\n\t\t},\n\t\text() {\n\t\t\treturn parsePath(this.basename).ext\n\t\t},\n\t\tsrc() {\n\t\t\treturn this.source ?? this.davPath\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\t// just in case the file was preloaded, let's warn the viewer\n\t\t\t\tif (this.isLoaded) {\n\t\t\t\t\tthis.doneLoading()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// update image size on sidebar toggle\n\t\tisSidebarShown() {\n\t\t\t// wait for transition to complete (100ms)\n\t\t\tsetTimeout(this.updateHeightWidth, 200)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// detect error and let the viewer know\n\t\tthis.$el.addEventListener('error', e => {\n\t\t\tconsole.error('Error loading', this.filename, e)\n\t\t\tthis.$emit('error', e)\n\t\t})\n\n\t\t// update image size on window resize\n\t\twindow.addEventListener('resize', debounce(() => {\n\t\t\tthis.updateHeightWidth()\n\t\t}, 100))\n\t},\n\n\tmethods: {\n\n\t\t/**\n\t\t * This is used to make the viewer know this file is complete or ready\n\t\t * ! you NEED to use it to make the viewer aware of the current loading state\n\t\t */\n\t\tdoneLoading() {\n\t\t\t// send the current state\n\t\t\tthis.$emit('update:loaded', true)\n\t\t\t// save the current state\n\t\t\tthis.isLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Updates the current height and width data\n\t\t * based on the viewer maximum size\n\t\t */\n\t\tupdateHeightWidth() {\n\t\t\tconst modalWrapper = this.$parent.$el.querySelector('.modal-wrapper')\n\t\t\tif (modalWrapper && this.naturalHeight > 0 && this.naturalWidth > 0) {\n\t\t\t\tconst modalContainer = modalWrapper.querySelector('.modal-container')\n\n\t\t\t\tconst parentHeight = modalContainer.clientHeight\n\t\t\t\tconst parentWidth = modalContainer.clientWidth\n\n\t\t\t\tconst heightRatio = parentHeight / this.naturalHeight\n\t\t\t\tconst widthRatio = parentWidth / this.naturalWidth\n\n\t\t\t\t// if the video height is capped by the parent height\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\tif (heightRatio < widthRatio && heightRatio < 1) {\n\t\t\t\t\tthis.height = parentHeight\n\t\t\t\t\tthis.width = Math.round(this.naturalWidth / this.naturalHeight * parentHeight)\n\n\t\t\t\t// if the video width is capped by the parent width\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\t} else if (heightRatio > widthRatio && widthRatio < 1) {\n\t\t\t\t\tthis.width = parentWidth\n\t\t\t\t\tthis.height = Math.round(this.naturalHeight / this.naturalWidth * parentWidth)\n\n\t\t\t\t// RESET\n\t\t\t\t} else {\n\t\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\t\tthis.width = this.naturalWidth\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\tthis.width = this.naturalWidth\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enable the viewer swiping previous/next capability\n\t\t */\n\t\tenableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', true)\n\t\t},\n\n\t\t/**\n\t\t * Disable the viewer swiping previous/next capability\n\t\t */\n\t\tdisableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', false)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the fullscreen on the current visible element\n\t\t */\n\t\ttoggleFullScreen() {\n\t\t\tif (this.isFullScreen) {\n\t\t\t\tdocument.exitFullscreen()\n\t\t\t} else {\n\t\t\t\tthis.$el.requestFullscreen()\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport ViewerComponent from './views/Viewer.vue'\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nVue.prototype.OC = window.OC\nVue.prototype.OCA = window.OCA\n\n// Create document root\nconst ViewerRoot = document.createElement('div')\nViewerRoot.id = 'viewer'\ndocument.body.appendChild(ViewerRoot)\n\n// Put controls for video viewer\n// Needed as Firefox CSP blocks the loading of the svg through the normal plyr system\nconst VideoControls = document.createElement('div')\nVideoControls.innerHTML = PLYR_ICONS\nVideoControls.style.display = 'none'\ndocument.body.appendChild(VideoControls)\n\n// Init vue\nexport default new Vue({\n\tel: '#viewer',\n\t// When debugging the page, it's easier to find which app\n\t// is which. Especially when there is multiple apps\n\t// roots mounted o the same page!\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'ViewerRoot',\n\trender: h => h(ViewerComponent),\n})\n"],"file":"viewer-main.mjs"}