{"version":3,"file":"index--bLvrHeb.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSelectTags-CTHyuMcq.mjs"],"sourcesContent":["import { r as register, j as t0, a as t } from \"./_l10n-Dq_eYxz_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcEllipsisedOption } from \"./NcEllipsisedOption-dT-CtXYp.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DLheQ2yp.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { resolveComponent, createBlock, openBlock, mergeProps, createSlots, withCtx, createVNode, renderList, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"[NcSelectTags] Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `\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\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n \"update:modelValue\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.passthru) {\n return this.modelValue;\n }\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.modelValue.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.modelValue);\n }\n },\n propsToForward() {\n const propsToForward = { ...this.$props };\n delete propsToForward.fetchTags;\n delete propsToForward.optionsFilter;\n delete propsToForward.passthru;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"[NcSelectTags] Loading systemtags failed\", error);\n }\n },\n methods: {\n handleInput(value) {\n if (this.passthru) {\n this.$emit(\"update:modelValue\", value);\n return;\n }\n if (this.multiple) {\n this.$emit(\"update:modelValue\", value.map((element) => element.id));\n } else {\n if (value === null) {\n this.$emit(\"update:modelValue\", null);\n } else {\n this.$emit(\"update:modelValue\", value.id);\n }\n }\n }\n }\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcEllipsisedOption = resolveComponent(\"NcEllipsisedOption\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createBlock(_component_NcSelect, mergeProps($options.propsToForward, {\n options: $options.availableOptions,\n closeOnSelect: !$props.multiple,\n modelValue: $options.localValue,\n onSearch: _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n \"onUpdate:modelValue\": $options.handleInput\n }), createSlots({\n option: withCtx((option) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(option),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(selectedOption),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n _: 2\n }, [\n renderList(_ctx.$slots, (_, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1040, [\"options\", \"closeOnSelect\", \"modelValue\", \"onUpdate:modelValue\"]);\n}\nconst NcSelectTags = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-CTHyuMcq.mjs.map\n"],"names":["register","t0","xmlToJson","xml","obj","j","attribute","i","item","nodeName","old","parseXml","dom","error","logger","xmlToTagList","list","result","index","tag","searchTags","axios","generateRemoteUrl","_sfc_main","NcEllipsisedOption","NcSelect","option","displayName","userVisible","userAssignable","t","id","tag2","propsToForward","value","element","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcEllipsisedOption","resolveComponent","_component_NcSelect","openBlock","createBlock","mergeProps","$event","createSlots","withCtx","createVNode","selectedOption","renderList","_","name","data","renderSlot","normalizeProps","guardReactiveProps","NcSelectTags","_export_sfc"],"mappings":"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","x_google_ignoreList":[0]}