{"version":3,"file":"collectives-init.mjs","sources":["../node_modules/@nextcloud/files-legacy/dist/chunks/dav-Rt1kTtvI.mjs","../node_modules/@nextcloud/files-legacy/dist/index.mjs","../src/views/FileListInfo.vue","../src/files/FilesCollectiveHeader.js","../src/init.js"],"sourcesContent":["import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { join, encodePath, basename, extname, dirname } from \"@nextcloud/paths\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nconst isDavResource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n if (!data.mime) {\n data.mime = \"application/octet-stream\";\n }\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n validateData({ ...this._data, displayname }, this._knownDavService);\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime || \"application/octet-stream\";\n }\n /**\n * Set the file mime\n * Removing the mime type will set it to `application/octet-stream`\n */\n set mime(mime) {\n mime ??= \"application/octet-stream\";\n validateData({ ...this._data, mime }, this._knownDavService);\n this._data.mime = mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n validateData({ ...this._data, mtime }, this._knownDavService);\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n validateData({ ...this._data, size }, this._knownDavService);\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n validateData({ ...this._data, permissions }, this._knownDavService);\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * @deprecated use `isDavResource` instead - will be removed in next major version.\n */\n get isDavRessource() {\n return this.isDavResource;\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavResource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n validateData({ ...this._data, status }, this._knownDavService);\n this._data.status = status;\n }\n /**\n * Get the node data\n */\n get data() {\n return structuredClone(this._data);\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n /**\n * Returns a clone of the file\n */\n clone() {\n return new File(this.data);\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n /**\n * Returns a clone of the folder\n */\n clone() {\n return new Folder(this.data);\n }\n}\nconst parsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst getDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst getFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst getRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nconst getClient = function(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = defaultRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst resultToNode = function(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n getRemoteURL as a,\n defaultRemoteURL as b,\n getClient as c,\n defaultRootPath as d,\n getFavoriteNodes as e,\n defaultDavProperties as f,\n getRootPath as g,\n defaultDavNamespaces as h,\n registerDavProperty as i,\n getDavProperties as j,\n getDavNameSpaces as k,\n getDefaultPropfind as l,\n getFavoritesReport as m,\n getRecentSearch as n,\n logger as o,\n parsePermissions as p,\n File as q,\n resultToNode as r,\n Folder as s,\n NodeStatus as t\n};\n//# sourceMappingURL=dav-Rt1kTtvI.mjs.map\n","import { o as logger, F as FileType } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { q, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t2.PRERELEASELOOSE] : re2[t2.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h2) => {\n try {\n ;\n h2(event[0]);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n var len = parser[buffers[i2]].length;\n if (len > maxAllowed) {\n switch (buffers[i2]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m2 + parser.position;\n }\n function clearBuffers(parser) {\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n parser[buffers[i2]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h2) {\n if (!h2) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h2;\n return h2;\n }\n me.on(ev, h2);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n // \n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\nimport FileListInfo from '../views/FileListInfo.vue'\n\nlet vm = null\n\n/**\n * @type {import('@nextcloud/files').IFileListHeader}\n */\nconst FilesCollectiveHeader = {\n\tid: 'collective',\n\torder: 9,\n\n\tenabled(folder, view) {\n\t\treturn view.id === 'files' || view.id === 'files.public'\n\t},\n\n\trender(el, folder) {\n\t\tel.id = 'files-collective-wrapper'\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.n = window.n\n\t\tconst collectivesFolder = loadState('collectives', 'user_folder', null)\n\t\tconst View = Vue.extend(FileListInfo)\n\t\tvm = new View({\n\t\t\tpropsData: {\n\t\t\t\tcollectivesFolder,\n\t\t\t\tpath: folder.path,\n\t\t\t},\n\t\t}).$mount(el)\n\t},\n\n\tupdated(folder) {\n\t\tvm.path = folder.path\n\t},\n}\n\nexport {\n\tFilesCollectiveHeader,\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { registerFileListHeader } from '@nextcloud/files'\nimport { registerFileListHeaders as legacyRegisterFileListHeader } from '@nextcloud/files-legacy'\nimport { FilesCollectiveHeader } from './files/FilesCollectiveHeader.js'\n\nconst version = Number.parseInt((window.OC?.config?.version ?? '0').split('.')[0])\n\nif (version >= 33) {\n\tregisterFileListHeader(FilesCollectiveHeader)\n} else {\n\tlegacyRegisterFileListHeader(FilesCollectiveHeader)\n}\n"],"names":["logger","getLoggerBuilder","getRootPath","isPublicShare","getSharingToken","getCurrentUser","getRemoteURL","url","generateRemoteUrl","debug_1","hasRequiredDebug","requireDebug","process","define_process_env_default","args","constants","hasRequiredConstants","requireConstants","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","re","hasRequiredRe","requireRe","module","exports","debug","re2","safeRe","src","safeSrc","t2","R","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","value","token","max","createToken","name","isGlobal","safe","index","parseOptions_1","hasRequiredParseOptions","requireParseOptions","looseOption","emptyOpts","options","identifiers","hasRequiredIdentifiers","requireIdentifiers","numeric","compareIdentifiers","a2","b2","anum","bnum","semver","hasRequiredSemver","requireSemver","parseOptions","SemVer","version","m2","id","num","other","i2","release","identifier","identifierBase","match","base","prerelease","major_1","hasRequiredMajor","requireMajor","loose","parse_1","hasRequiredParse","requireParse","throwErrors","er","valid_1","hasRequiredValid","requireValid","parse","v","registerFileListHeaders","header","search","sax$1","hasRequiredSax","requireSax","sax2","strict","opt","SAXParser","SAXStream","createStream","buffers","parser","clearBuffers","S","rootNS","emit2","o","F","newf","checkBufferLength","maxAllowed","maxActual","l2","len","closeText","emitNode","error","flushBuffers","end","write","Stream","streamWraps","ev","me","h2","data","Buffer","SD","require$$1","chunk","handler","CDATA","DOCTYPE","XML_NAMESPACE","XMLNS_NAMESPACE","nameStart","nameBody","entityStart","entityBody","isWhitespace","c2","isQuote","isAttribEnd","isMatch","regex","notMatch","key","e2","s3","s2","event","nodeType","textopts","text","strictFail","message","newTag","parent","tag","qname","attribute","qualName","prefix","local","attrib","qn","openTag","selfClosing","p2","nv","uri","closeTag","tagName","closeTo","close","x","n2","parseEntity","entity","entityLC","numStr","beginWhiteSpace","charAt","result","starti","pad","returnState","buffer","parsedEntity","stringFromCharCode","floor","fromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","length","codePoint","_sfc_main","InformationIcon","NcButton","collectivesPath","generateUrl","vm","FilesCollectiveHeader","folder","view","el","Vue","collectivesFolder","loadState","View","FileListInfo","_c","_b","_a","registerFileListHeader","legacyRegisterFileListHeader"],"mappings":"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","x_google_ignoreList":[0,1]}