{"version":3,"file":"gpxpod-filesPlugin.mjs","sources":["../img/app_black.svg?raw","../src/filesPlugin.ts"],"sourcesContent":["export default \"<svg width=\\\"512px\\\" height=\\\"512px\\\" fill=\\\"#000\\\" enable-background=\\\"new 0 0 512 512\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 512 512\\\" xml:space=\\\"preserve\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<g>\\n\\t\\t<path d=\\\"m250.45 509.25c-18.349-9.169-58.044-54.694-94.123-107.95-45.696-67.447-77.159-132.54-87.231-180.46-3.0862-14.685-3.8582-35.465-1.9093-51.391 5.2805-43.151 24.264-82.157 54.886-112.78 22.014-22.014 47.49-37.669 76.607-47.076 20.072-6.4846 36.328-8.961 58.799-8.9574 15.821 0.0025 25.202 0.87869 38.588 3.6037 29.28 5.9607 57.258 19.102 81.566 38.312 7.1626 5.6605 23.62 22.091 29.148 29.1 27.69 35.11 42.058 75.52 42.114 118.45 0.0195 14.721-1.1704 24.053-5.0755 39.805-11.108 44.805-40.59 104.78-81.745 166.3-43.607 65.182-89.027 115.34-104.45 115.34-1.4232 0-4.6528-1.032-7.1769-2.2933zm17.328-189.49c45.482-4.0255 84.135-30.218 104.51-70.82 14.096-28.09 17.187-60.241 8.7633-91.162-12.359-45.366-50.515-81.408-96.458-91.114-22.979-4.8547-45.101-3.6026-67.459 3.8182-67.122 22.278-103.61 95.091-81.207 162.06 14.257 42.62 49.885 74.724 93.796 84.521 14.096 3.145 24.606 3.8907 38.056 2.7004z\\\" />\\n\\t\\t<g>\\n\\t\\t\\t<rect x=\\\"171.05\\\" y=\\\"140.76\\\" width=\\\"41.42\\\" height=\\\"123.49\\\"/>\\n\\t\\t\\t<rect x=\\\"238.35\\\" y=\\\"111.61\\\" width=\\\"41.42\\\" height=\\\"151.87\\\"/>\\n\\t\\t\\t<rect x=\\\"306.05\\\" y=\\\"164.73\\\" width=\\\"41.42\\\" height=\\\"98.947\\\"/>\\n\\t\\t</g>\\n\\t</g>\\n</svg>\\n\"","/**\n * SPDX-FileCopyrightText: 2015 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { registerFileAction, Permission, FileType, DefaultType } from '@nextcloud/files'\nimport type { IFileAction, INode } from '@nextcloud/files'\nimport GpxPodIcon from '../img/app_black.svg?raw'\n\ntype GenericObject<T> = {\n\t[key: string]: T;\n}\n\nconst state = loadState('gpxpod', 'gpxpod-files', { sharingToken: '' })\nif (!OCA.GpxPod) {\n\tOCA.GpxPod = {\n\t\tsharingToken: state.sharingToken,\n\t\tactionIgnoreLists: [\n\t\t\t'trashbin',\n\t\t\t// 'files.public',\n\t\t],\n\t}\n}\n\nconst openDirectory = (path: string) => {\n\tconst url = OCA.GpxPod.sharingToken\n\t\t? generateUrl('apps/gpxpod/s/{sharingToken}?path={path}', { sharingToken: OCA.GpxPod.sharingToken, path })\n\t\t: generateUrl('apps/gpxpod/?dir={path}', { path })\n\twindow.open(url, '_blank')\n}\n\nconst addDirectoryOpenDirectory = (path: string) => {\n\t// user is not connected\n\tif (OCA.GpxPod.sharingToken) {\n\t\topenDirectory(path)\n\t\treturn\n\t}\n\n\tconst req = {\n\t\tpath,\n\t}\n\tconst url = generateUrl('/apps/gpxpod/directories')\n\taxios.post(url, req).then(() => {\n\t\tconsole.debug(t('gpxpod', 'Directory {p} has been added', { p: path }))\n\t}).catch((error) => {\n\t\tconsole.debug(t('gpxpod', 'Failed to add directory'), error)\n\t}).then(() => {\n\t\topenDirectory(path)\n\t})\n}\n\nconst openFile = (path: string, fileName: string, dir: string) => {\n\t// if we are logged in\n\tconst url = OCA.GpxPod.sharingToken\n\t\t? generateUrl('apps/gpxpod/s/{sharingToken}?path={path}', {\n\t\t\t\tsharingToken: OCA.GpxPod.sharingToken,\n\t\t\t\tpath,\n\t\t\t})\n\t\t: generateUrl('apps/gpxpod/?dir={dir}&file={fileName}', { dir, fileName })\n\twindow.open(url, '_blank')\n}\n\nconst addDirectoryOpenFile = (path: string, fileName: string, dir: string) => {\n\t// user is not connected\n\tif (OCA.GpxPod.sharingToken) {\n\t\topenFile(path, fileName, dir)\n\t\treturn\n\t}\n\n\tconst dirPath = dir === ''\n\t\t? '/'\n\t\t: dir\n\tconst req = {\n\t\tpath: dirPath,\n\t}\n\tconst url = generateUrl('/apps/gpxpod/directories')\n\taxios.post(url, req).then(() => {\n\t\tconsole.debug(t('gpxpod', 'Directory {p} has been added', { p: dirPath }))\n\t}).catch((error) => {\n\t\tconsole.debug(t('gpxpod', 'Failed to add directory'), error)\n\t}).then(() => {\n\t\topenFile(path, fileName, dir)\n\t})\n}\n\nconst compare = (files: Array<INode>) => {\n\tlet i = 1\n\tconst params: GenericObject<string> = {}\n\tfiles.forEach((f) => {\n\t\tparams['path' + i] = f.path\n\t\ti++\n\t})\n\tconst urlParams = new URLSearchParams(params)\n\tconst url = generateUrl('apps/gpxpod/compare?') + urlParams.toString()\n\twindow.open(url, '_blank')\n}\n\nconst viewDirectoryAction: IFileAction = {\n\tid: 'viewDirectoryGpxPod',\n\tdisplayName: () => t('gpxpod', 'View in GpxPod'),\n\tenabled({ nodes, view }) {\n\t\treturn !OCA.GpxPod.actionIgnoreLists.includes(view.id)\n\t\t\t&& nodes.length > 0\n\t\t\t&& nodes.every(({ permissions }) => (permissions & Permission.READ) !== 0)\n\t\t\t&& nodes.every(({ type }) => type === FileType.Folder)\n\t},\n\ticonSvgInline: () => GpxPodIcon,\n\tasync exec({ nodes }) {\n\t\taddDirectoryOpenDirectory(nodes[0].path)\n\t\treturn null\n\t},\n}\nregisterFileAction(viewDirectoryAction)\n\nconst viewFileAction: IFileAction = {\n\tid: 'viewFileGpxPod',\n\tdisplayName: () => t('gpxpod', 'View in GpxPod'),\n\tenabled({ nodes, view }) {\n\t\treturn !OCA.GpxPod.actionIgnoreLists.includes(view.id)\n\t\t\t&& nodes.length > 0\n\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t&& !nodes.some(({ type }) => type !== FileType.File)\n\t\t\t&& !nodes.some(({ mime }) => mime !== 'application/gpx+xml')\n\t},\n\ticonSvgInline: () => GpxPodIcon,\n\tasync exec({ nodes }) {\n\t\tconst node = nodes[0]\n\t\taddDirectoryOpenFile(node.path, node.basename, node.dirname)\n\t\treturn true\n\t},\n\tdefault: OCA.GpxPod.sharingToken ? undefined : DefaultType.DEFAULT,\n}\nregisterFileAction(viewFileAction)\n\nconst compareAction: IFileAction = {\n\tid: 'gpxpodCompare',\n\tdisplayName: () => t('gpxpod', 'Compare with GpxPod'),\n\torder: -2,\n\tenabled({ nodes, view }) {\n\t\t// we don't want 'files.public' or any other view\n\t\treturn view.id === 'files'\n\t\t\t&& nodes.length > 1\n\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t&& !nodes.some(({ type }) => type !== FileType.File)\n\t\t\t&& !nodes.some(({ mime }) => mime !== 'application/gpx+xml')\n\t},\n\ticonSvgInline: () => GpxPodIcon,\n\tasync exec() { return null },\n\tasync execBatch({ nodes }) {\n\t\tcompare(nodes)\n\t\treturn nodes.map(() => null)\n\t},\n}\nregisterFileAction(compareAction)\n"],"names":["GpxPodIcon","state","loadState","openDirectory","path","url","generateUrl","addDirectoryOpenDirectory","req","axios","error","openFile","fileName","dir","addDirectoryOpenFile","dirPath","compare","files","i","params","f","urlParams","viewDirectoryAction","nodes","view","permissions","Permission","type","FileType","registerFileAction","viewFileAction","mime","node","DefaultType","compareAction"],"mappings":"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"}