{"version":3,"file":"NcTextArea-BwFQx9Bj-DPiGPuCQ.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-CgYSlRXJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationList-CGSWabRB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-Bb54U_qJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationCaption-CwaRTmmd.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronUp-ChH8oB7p.mjs","../node_modules/@nextcloud/vue/dist/chunks/ArrowRight-B1ncAhus.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-BL_BkfXh.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-Dg2d2AwS.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-BWHsAoc1.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-CJ2z5cYU.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-37Ko8yBC.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-C0io5RJP.mjs","../node_modules/@nextcloud/vue/dist/directives/Focus/index.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@nextcloud/vue/dist/directives/Linkify/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-Bk4yFBHY.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-CV2t1fDr.mjs","../node_modules/@nextcloud/vue/dist/functions/preloadImage/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-CU1Tigay.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-CPI2VARK.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-DPiYJu5B.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-Caeq706M.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-Ca7AtgZ9.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-vZ-OTxIa.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-JyXXoHLT.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-C7C0-pBV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-2L4I2yvb.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-CYgEv80h.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-BwFQx9Bj.mjs"],"sourcesContent":["import '../assets/NcActionButtonGroup-Bt8kRk79.css';\nimport { defineComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n  name: \"NcActionButtonGroup\",\n  inject: {\n    isInSemanticMenu: {\n      from: NC_ACTIONS_IS_SEMANTIC_MENU,\n      default: false\n    }\n  },\n  props: {\n    /**\n     * Optional text shown below the button group\n     */\n    name: {\n      required: false,\n      default: void 0,\n      type: String\n    }\n  },\n  setup() {\n    return {\n      labelId: createElementId()\n    };\n  },\n  methods: {\n    t\n  }\n});\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"li\", {\n    class: \"nc-button-group-base\",\n    role: _ctx.isInSemanticMenu && \"presentation\"\n  }, [\n    _ctx.name ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      id: _ctx.labelId\n    }, toDisplayString(_ctx.name), 9, _hoisted_2)) : createCommentVNode(\"\", true),\n    createElementVNode(\"ul\", {\n      class: \"nc-button-group-content\",\n      role: \"group\",\n      \"aria-labelledby\": _ctx.name ? _ctx.labelId : void 0\n    }, [\n      renderSlot(_ctx.$slots, \"default\")\n    ], 8, _hoisted_3)\n  ], 8, _hoisted_1);\n}\nconst NcActionButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6a2b8de0\"]]);\nexport {\n  NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-CgYSlRXJ.mjs.map\n","import '../assets/NcAppNavigationList--36j6Acm.css';\nimport { openBlock, createElementBlock, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"NcAppNavigationList\"\n};\nconst _hoisted_1 = { class: \"app-navigation-list\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n    renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n  ]);\n}\nconst NcAppNavigationList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-d72957ed\"]]);\nexport {\n  NcAppNavigationList as N\n};\n//# sourceMappingURL=NcAppNavigationList-CGSWabRB.mjs.map\n","import '../assets/NcAppNavigation-ykL7Wz6L.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, createVNode, unref, withCtx, inject, warn, useTemplateRef, ref, watchEffect, watch, onMounted, onUnmounted, normalizeClass, createElementVNode, withKeys, renderSlot, createBlock, createCommentVNode } from \"vue\";\nimport { subscribe, emit, unsubscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcAppNavigationList } from \"./NcAppNavigationList-CGSWabRB.mjs\";\nimport { G as mdiMenuOpen, H as mdiMenu } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, P as t20, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY } from \"./constants-Ciwvl5xb.mjs\";\nregister(t20);\nconst _hoisted_1$1 = { class: \"app-navigation-toggle-wrapper\" };\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppNavigationToggle\",\n  props: {\n    \"open\": { type: Boolean, ...{ required: true } },\n    \"openModifiers\": {}\n  },\n  emits: [\"update:open\"],\n  setup(__props) {\n    const open = useModel(__props, \"open\");\n    const title = computed(() => open.value ? t(\"Close navigation\") : t(\"Open navigation\"));\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n        createVNode(unref(NcButton), {\n          class: \"app-navigation-toggle\",\n          \"aria-controls\": \"app-navigation-vue\",\n          \"aria-expanded\": open.value ? \"true\" : \"false\",\n          \"aria-label\": title.value,\n          title: title.value,\n          variant: \"tertiary\",\n          onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n        }, {\n          icon: withCtx(() => [\n            createVNode(NcIconSvgWrapper, {\n              path: open.value ? unref(mdiMenuOpen) : unref(mdiMenu)\n            }, null, 8, [\"path\"])\n          ]),\n          _: 1\n        }, 8, [\"aria-expanded\", \"aria-label\", \"title\"])\n      ]);\n    };\n  }\n});\nconst NcAppNavigationToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-5a15295d\"]]);\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"inert\"];\nconst _hoisted_2 = { class: \"app-navigation__search\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppNavigation\",\n  props: {\n    ariaLabel: {},\n    ariaLabelledby: {}\n  },\n  setup(__props) {\n    const props = __props;\n    let focusTrap;\n    const setHasAppNavigation = inject(\n      HAS_APP_NAVIGATION_KEY,\n      () => warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n      false\n    );\n    const appNavigationContainerElement = useTemplateRef(\"appNavigationContainer\");\n    const isMobile = useIsMobile();\n    const open = ref(!isMobile.value);\n    watchEffect(() => {\n      if (!props.ariaLabel && !props.ariaLabelledby) {\n        warn(\"NcAppNavigation requires either `ariaLabel` or `ariaLabelledby` to be set for accessibility.\");\n      }\n    });\n    watch(isMobile, () => {\n      open.value = !isMobile.value;\n    });\n    watch(open, () => {\n      toggleFocusTrap();\n    });\n    onMounted(() => {\n      setHasAppNavigation(true);\n      subscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n      emit(\"navigation-toggled\", {\n        open: open.value\n      });\n      focusTrap = createFocusTrap(appNavigationContainerElement.value, {\n        allowOutsideClick: true,\n        clickOutsideDeactivates: () => {\n          if (isMobile.value) {\n            focusTrap.deactivate({ returnFocus: false });\n            toggleNavigation(false);\n          }\n          return false;\n        },\n        fallbackFocus: appNavigationContainerElement.value,\n        trapStack: getTrapStack(),\n        escapeDeactivates: false\n      });\n      toggleFocusTrap();\n    });\n    onUnmounted(() => {\n      setHasAppNavigation(false);\n      unsubscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n      focusTrap.deactivate();\n    });\n    function toggleNavigation(state) {\n      if (open.value === state) {\n        emit(\"navigation-toggled\", {\n          open: open.value\n        });\n        return;\n      }\n      open.value = state === void 0 ? !open.value : state;\n      const bodyStyles = getComputedStyle(document.body);\n      const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n      setTimeout(() => {\n        emit(\"navigation-toggled\", {\n          open: open.value\n        });\n      }, 1.5 * animationLength);\n    }\n    function toggleNavigationByEventBus({ open: open2 }) {\n      return toggleNavigation(open2);\n    }\n    function toggleFocusTrap() {\n      if (isMobile.value && open.value) {\n        focusTrap.activate();\n      } else {\n        focusTrap.deactivate();\n      }\n    }\n    function handleEsc() {\n      if (isMobile.value) {\n        toggleNavigation(false);\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        ref: \"appNavigationContainer\",\n        class: normalizeClass([\"app-navigation\", {\n          \"app-navigation--closed\": !open.value,\n          \"app-navigation--legacy\": unref(isLegacy34)\n        }])\n      }, [\n        createElementVNode(\"nav\", {\n          id: \"app-navigation-vue\",\n          \"aria-hidden\": open.value ? \"false\" : \"true\",\n          \"aria-label\": _ctx.ariaLabel || void 0,\n          \"aria-labelledby\": _ctx.ariaLabelledby || void 0,\n          class: \"app-navigation__content\",\n          inert: !open.value || void 0,\n          onKeydown: withKeys(handleEsc, [\"esc\"])\n        }, [\n          createElementVNode(\"div\", _hoisted_2, [\n            renderSlot(_ctx.$slots, \"search\", {}, void 0, true)\n          ]),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"app-navigation__body\", { \"app-navigation__body--no-list\": !_ctx.$slots.list }])\n          }, [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ], 2),\n          _ctx.$slots.list ? (openBlock(), createBlock(NcAppNavigationList, {\n            key: 0,\n            class: \"app-navigation__list\"\n          }, {\n            default: withCtx(() => [\n              renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n            ]),\n            _: 3\n          })) : createCommentVNode(\"\", true),\n          renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n        ], 40, _hoisted_1),\n        createVNode(NcAppNavigationToggle, {\n          open: open.value,\n          \"onUpdate:open\": toggleNavigation\n        }, null, 8, [\"open\"])\n      ], 2);\n    };\n  }\n});\nconst NcAppNavigation = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-3b634fbd\"]]);\nexport {\n  NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-Bb54U_qJ.mjs.map\n","import '../assets/NcAppNavigationCaption-ggcWspH2.css';\nimport { N as NcActions } from \"./NcActions-fCXSb_0o.mjs\";\nimport { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementBlock, createVNode, normalizeProps, guardReactiveProps, renderSlot, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"NcAppNavigationCaption\",\n  components: {\n    NcActions\n  },\n  props: {\n    /**\n     * The text of the caption\n     */\n    name: {\n      type: String,\n      required: true\n    },\n    /**\n     * `id` to set on the inner caption\n     * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n     */\n    headingId: {\n      type: String,\n      default: null\n    },\n    /**\n     * Enable when used as a heading\n     * e.g. Before NcAppNavigationList\n     */\n    isHeading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * If `isHeading` is set, this defines the heading level that should be used\n     */\n    headingLevel: {\n      type: Number,\n      default: 2\n    },\n    /**\n     * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n     */\n    // Not an actual prop but needed to show in vue-styleguidist docs\n    ...NcActions.props\n  },\n  computed: {\n    actionsProps() {\n      const actionProps = Object.keys(NcActions.props);\n      const props = Object.entries(this.$props).filter(([key, _value]) => actionProps.includes(key));\n      return Object.fromEntries(props);\n    },\n    wrapperTag() {\n      return this.isHeading ? \"div\" : \"li\";\n    },\n    captionTag() {\n      const headingLevel = Math.max(2, this.headingLevel);\n      return this.isHeading ? `h${headingLevel}` : \"span\";\n    }\n  }\n};\nconst _hoisted_1 = {\n  key: 0,\n  class: \"app-navigation-caption__actions\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcActions = resolveComponent(\"NcActions\");\n  return openBlock(), createBlock(resolveDynamicComponent($options.wrapperTag), {\n    class: normalizeClass([\"app-navigation-caption\", { \"app-navigation-caption--heading\": $props.isHeading }])\n  }, {\n    default: withCtx(() => [\n      (openBlock(), createBlock(resolveDynamicComponent($options.captionTag), {\n        id: $props.headingId,\n        class: \"app-navigation-caption__name\"\n      }, {\n        default: withCtx(() => [\n          createTextVNode(toDisplayString($props.name), 1)\n        ]),\n        _: 1\n      }, 8, [\"id\"])),\n      !!_ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n        createVNode(_component_NcActions, normalizeProps(guardReactiveProps($options.actionsProps)), {\n          icon: withCtx(() => [\n            renderSlot(_ctx.$slots, \"actionsTriggerIcon\", {}, void 0, true)\n          ]),\n          default: withCtx(() => [\n            renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n          ]),\n          _: 3\n        }, 16)\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  }, 8, [\"class\"]);\n}\nconst NcAppNavigationCaption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f0e411c2\"]]);\nexport {\n  NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-CwaRTmmd.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"ChevronUpIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon chevron-up-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2))\n  ], 16, _hoisted_1);\n}\nconst ChevronUp = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n  ChevronUp as C\n};\n//# sourceMappingURL=ChevronUp-ChH8oB7p.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"ArrowRightIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon arrow-right-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2))\n  ], 16, _hoisted_1);\n}\nconst IconArrowRight = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n  IconArrowRight as I\n};\n//# sourceMappingURL=ArrowRight-B1ncAhus.mjs.map\n","import '../assets/NcInputConfirmCancel-BEmwC87z.css';\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { r as register, k as t14, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, withKeys, withDirectives, vModelText, createVNode, withCtx } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t14);\nconst _sfc_main = {\n  name: \"NcInputConfirmCancel\",\n  components: {\n    IconArrowRight,\n    IconClose,\n    NcButton\n  },\n  setup() {\n    return { isLegacy34 };\n  },\n  props: {\n    /**\n     * If this element is used on a primary element set to true for primary styling.\n     */\n    primary: {\n      default: false,\n      type: Boolean\n    },\n    /**\n     * Placeholder of the edit field\n     */\n    placeholder: {\n      default: \"\",\n      type: String\n    },\n    /**\n     * The current name (model value)\n     */\n    modelValue: {\n      default: \"\",\n      type: String\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"confirm\",\n    \"update:modelValue\"\n  ],\n  data() {\n    return {\n      labelConfirm: t(\"Confirm changes\"),\n      labelCancel: t(\"Cancel changes\")\n    };\n  },\n  computed: {\n    valueModel: {\n      get() {\n        return this.modelValue;\n      },\n      set(newValue) {\n        this.$emit(\"update:modelValue\", newValue);\n      }\n    }\n  },\n  methods: {\n    confirm() {\n      this.$emit(\"confirm\");\n    },\n    cancel() {\n      this.$emit(\"cancel\");\n    },\n    focusInput() {\n      this.$refs.input.focus();\n    }\n  }\n};\nconst _hoisted_1 = [\"placeholder\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  const _component_IconClose = resolveComponent(\"IconClose\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass([\"app-navigation-input-confirm\", { \"app-navigation-input-confirm--legacy\": $setup.isLegacy34 }])\n  }, [\n    createElementVNode(\"form\", {\n      onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.confirm && $options.confirm(...args), [\"prevent\"])),\n      onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.cancel && $options.cancel(...args), [\"exact\", \"stop\", \"prevent\"]), [\"esc\"])),\n      onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n      }, [\"stop\", \"prevent\"]))\n    }, [\n      withDirectives(createElementVNode(\"input\", {\n        ref: \"input\",\n        \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $options.valueModel = $event),\n        type: \"text\",\n        class: \"app-navigation-input-confirm__input\",\n        placeholder: $props.placeholder\n      }, null, 8, _hoisted_1), [\n        [vModelText, $options.valueModel]\n      ]),\n      createVNode(_component_NcButton, {\n        \"aria-label\": $data.labelConfirm,\n        type: \"submit\",\n        variant: \"primary\",\n        onClick: withModifiers($options.confirm, [\"stop\", \"prevent\"])\n      }, {\n        icon: withCtx(() => [\n          createVNode(_component_IconArrowRight, { size: 20 })\n        ]),\n        _: 1\n      }, 8, [\"aria-label\", \"onClick\"]),\n      createVNode(_component_NcButton, {\n        \"aria-label\": $data.labelCancel,\n        type: \"reset\",\n        variant: $props.primary ? \"primary\" : \"tertiary\",\n        onClick: withModifiers($options.cancel, [\"stop\", \"prevent\"])\n      }, {\n        icon: withCtx(() => [\n          createVNode(_component_IconClose, { size: 20 })\n        ]),\n        _: 1\n      }, 8, [\"aria-label\", \"variant\", \"onClick\"])\n    ], 32)\n  ], 2);\n}\nconst NcInputConfirmCancel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-a8724c7f\"]]);\nexport {\n  NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-BL_BkfXh.mjs.map\n","import '../assets/NcAppNavigationItem-DF81QkEz.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, normalizeClass, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, withKeys, withModifiers, renderSlot, createVNode, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { r as register, N as t21, a as t, b as t51, O as t23 } from \"./_l10n-BCg4udFv.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-BL_BkfXh.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BJKJG2zO.mjs\";\nimport { N as NcActions } from \"./NcActions-fCXSb_0o.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { _ as _sfc_main$4 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nconst _sfc_main$3 = {\n  name: \"PencilIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon pencil-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$2, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$2))\n  ], 16, _hoisted_1$2);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n  name: \"UndoIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon undo-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$1))\n  ], 16, _hoisted_1$1);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t21);\nconst _sfc_main$1 = {\n  name: \"NcAppNavigationIconCollapsible\",\n  components: {\n    NcButton,\n    ChevronDown,\n    ChevronUp\n  },\n  setup() {\n    return { isLegacy34 };\n  },\n  props: {\n    /**\n     * Is the list currently open (or collapsed)\n     */\n    open: {\n      type: Boolean,\n      required: true\n    },\n    /**\n     * Is the navigation item currently active.\n     */\n    active: {\n      type: Boolean,\n      required: true\n    }\n  },\n  emits: [\"click\"],\n  computed: {\n    labelButton() {\n      return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n    }\n  },\n  methods: {\n    onClick(e) {\n      this.$emit(\"click\", e);\n    }\n  }\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n  const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  return openBlock(), createBlock(_component_NcButton, {\n    class: normalizeClass([\"icon-collapse\", {\n      \"icon-collapse--active\": $props.active,\n      \"icon-collapse--open\": $props.open\n    }]),\n    \"aria-label\": $options.labelButton,\n    variant: $props.active && $setup.isLegacy34 ? \"tertiary-on-primary\" : \"tertiary\",\n    onClick: $options.onClick\n  }, {\n    icon: withCtx(() => [\n      $props.open ? (openBlock(), createBlock(_component_ChevronUp, {\n        key: 0,\n        size: 20\n      })) : (openBlock(), createBlock(_component_ChevronDown, {\n        key: 1,\n        size: 20\n      }))\n    ]),\n    _: 1\n  }, 8, [\"class\", \"aria-label\", \"variant\", \"onClick\"]);\n}\nconst NcAppNavigationIconCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-acf5ed2f\"]]);\nregister(t23, t51);\nconst _sfc_main = {\n  name: \"NcAppNavigationItem\",\n  components: {\n    NcActions,\n    NcActionButton,\n    NcAppNavigationIconCollapsible,\n    NcInputConfirmCancel,\n    NcLoadingIcon,\n    NcVNodes: _sfc_main$4,\n    Pencil,\n    Undo\n  },\n  props: {\n    /**\n     * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n     * When using vue-router and the `to` property this is set automatically.\n     */\n    active: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * The main text content of the entry.\n     */\n    name: {\n      type: String,\n      required: true\n    },\n    /**\n     * The title attribute of the element.\n     */\n    title: {\n      type: String,\n      default: null\n    },\n    /**\n     * id attribute of the list item element\n     */\n    id: {\n      type: String,\n      default: () => createElementId(),\n      validator: (id) => id.trim() !== \"\"\n    },\n    /**\n     * Refers to the icon on the left, this prop accepts a class\n     * like 'icon-category-enabled'.\n     */\n    icon: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Displays a loading animated icon on the left of the element\n     * instead of the icon.\n     */\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Passing in a route will make the root element of this\n     * component a `<router-link />` that points to that route.\n     * By leaving this blank, the root element will be a `<li>`.\n     */\n    to: {\n      type: [String, Object],\n      default: null\n    },\n    /**\n     * A direct link. This will be used as the `href` attribute.\n     * This will ignore any `to` prop being defined.\n     */\n    href: {\n      type: String,\n      default: null\n    },\n    /**\n     * Gives the possibility to collapse the children elements into the\n     * parent element (true) or expands the children elements (false).\n     */\n    allowCollapse: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Makes the name of the item editable by providing an `ActionButton`\n     * component that toggles a form\n     */\n    editable: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Only for 'editable' items, sets label for the edit action button.\n     */\n    editLabel: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n     */\n    editPlaceholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Pins the item to the bottom left area, above the settings. Do not\n     * place 'non-pinned' `AppnavigationItem` components below `pinned`\n     * ones.\n     */\n    pinned: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Puts the item in the 'undo' state.\n     */\n    undo: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * The navigation collapsible state (synced)\n     */\n    open: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * The actions menu open state (synced)\n     */\n    menuOpen: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Force the actions to display in a three dot menu\n     */\n    forceMenu: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * The action's menu default icon\n     */\n    menuIcon: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * The action's menu direction\n     */\n    menuPlacement: {\n      type: String,\n      default: \"bottom\"\n    },\n    /**\n     * Entry aria details\n     */\n    ariaDescription: {\n      type: String,\n      default: null\n    },\n    /**\n     * To be used only when the elements in the actions menu are very important\n     */\n    forceDisplayActions: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Number of action items outside the menu\n     */\n    inlineActions: {\n      type: Number,\n      default: 0\n    }\n  },\n  emits: [\n    \"update:menuOpen\",\n    \"update:open\",\n    \"update:name\",\n    \"click\",\n    \"undo\"\n  ],\n  setup() {\n    return {\n      isMobile: useIsMobile(),\n      isLegacy34\n    };\n  },\n  data() {\n    return {\n      actionsBoundariesElement: void 0,\n      editingValue: \"\",\n      opened: this.open,\n      // Collapsible state\n      editingActive: false,\n      /**\n       * Tracks the open state of the actions menu\n       */\n      menuOpenLocalValue: false,\n      focused: false\n    };\n  },\n  computed: {\n    isRouterLink() {\n      return this.to && !this.href;\n    },\n    // Checks if the component is already a children of another\n    // instance of AppNavigationItem\n    canHaveChildren() {\n      if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n        return false;\n      } else {\n        return true;\n      }\n    },\n    editButtonAriaLabel() {\n      return this.editLabel ? this.editLabel : t(\"Edit item\");\n    },\n    undoButtonAriaLabel() {\n      return t(\"Undo changes\");\n    }\n  },\n  watch: {\n    open(newVal) {\n      this.opened = newVal;\n    }\n  },\n  mounted() {\n    this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n  },\n  methods: {\n    // sync opened menu state with prop\n    onMenuToggle(state) {\n      this.$emit(\"update:menuOpen\", state);\n      this.menuOpenLocalValue = state;\n    },\n    // toggle the collapsible state\n    toggleCollapse() {\n      this.opened = !this.opened;\n      this.$emit(\"update:open\", this.opened);\n    },\n    /**\n     * Handle link click\n     *\n     * @param {PointerEvent} event - Native click event\n     * @param {Function} [navigate] - VueRouter link's navigate if any\n     * @param {string} [routerLinkHref] - VueRouter link's href\n     */\n    onClick(event, navigate, routerLinkHref) {\n      this.$emit(\"click\", event);\n      if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n        return;\n      }\n      if (routerLinkHref) {\n        navigate?.(event);\n        event.preventDefault();\n      }\n    },\n    // Edition methods\n    handleEdit() {\n      this.editingValue = this.name;\n      this.editingActive = true;\n      this.onMenuToggle(false);\n      this.$nextTick(() => {\n        this.$refs.editingInput.focusInput();\n      });\n    },\n    cancelEditing() {\n      this.editingActive = false;\n    },\n    handleEditingDone() {\n      this.$emit(\"update:name\", this.editingValue);\n      this.editingValue = \"\";\n      this.editingActive = false;\n    },\n    // Undo methods\n    handleUndo() {\n      this.$emit(\"undo\");\n    },\n    /**\n     * Show actions upon focus\n     */\n    handleFocus() {\n      this.focused = true;\n    },\n    handleBlur() {\n      this.focused = false;\n    },\n    /**\n     * This method checks if the root element of the component is focused and\n     * if that's the case it focuses the actions button if available\n     *\n     * @param {Event} e the keydown event\n     */\n    handleTab(e) {\n      if (!this.$refs.actions) {\n        return;\n      }\n      if (this.focused) {\n        e.preventDefault();\n        this.$refs.actions.$refs.triggerButton.$el.focus();\n        this.focused = false;\n      } else {\n        this.$refs.actions.$refs.triggerButton.$el.blur();\n      }\n    },\n    /**\n     * Is this an external link\n     *\n     * @param {string} href The link to check\n     * @return {boolean} Whether it is external or not\n     */\n    isExternal(href) {\n      return href && href.match(/[a-z]+:\\/\\//i);\n    }\n  }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-description\", \"aria-expanded\", \"href\", \"target\", \"title\", \"onClick\"];\nconst _hoisted_3 = {\n  key: 0,\n  class: \"editingContainer\"\n};\nconst _hoisted_4 = {\n  key: 1,\n  class: \"app-navigation-entry__deleted\"\n};\nconst _hoisted_5 = { class: \"app-navigation-entry__deleted-description\" };\nconst _hoisted_6 = {\n  key: 0,\n  class: \"app-navigation-entry__counter-wrapper\"\n};\nconst _hoisted_7 = {\n  key: 0,\n  class: \"app-navigation-entry__children\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n  const _component_NcInputConfirmCancel = resolveComponent(\"NcInputConfirmCancel\");\n  const _component_Pencil = resolveComponent(\"Pencil\");\n  const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n  const _component_Undo = resolveComponent(\"Undo\");\n  const _component_NcActions = resolveComponent(\"NcActions\");\n  const _component_NcAppNavigationIconCollapsible = resolveComponent(\"NcAppNavigationIconCollapsible\");\n  return openBlock(), createElementBlock(\"li\", {\n    id: $props.id,\n    class: normalizeClass([{\n      \"app-navigation-entry--opened\": $data.opened,\n      \"app-navigation-entry--pinned\": $props.pinned,\n      \"app-navigation-entry--collapsible\": $props.allowCollapse && !!_ctx.$slots.default\n    }, \"app-navigation-entry-wrapper\"])\n  }, [\n    (openBlock(), createBlock(resolveDynamicComponent($options.isRouterLink ? \"router-link\" : \"NcVNodes\"), normalizeProps(guardReactiveProps({ ...$options.isRouterLink && { custom: true, to: $props.to } })), {\n      default: withCtx(({ href: routerLinkHref, navigate, isActive }) => [\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"app-navigation-entry\", {\n            \"app-navigation-entry--editing\": $data.editingActive,\n            \"app-navigation-entry--deleted\": $props.undo,\n            \"app-navigation-entry--legacy\": $setup.isLegacy34,\n            active: $props.to && isActive || $props.active\n          }])\n        }, [\n          !$props.undo ? (openBlock(), createElementBlock(\"a\", {\n            key: 0,\n            class: \"app-navigation-entry-link\",\n            \"aria-current\": $props.active || $props.to && isActive ? \"page\" : void 0,\n            \"aria-description\": $props.ariaDescription,\n            \"aria-expanded\": !!_ctx.$slots.default ? $data.opened.toString() : void 0,\n            href: $props.href || routerLinkHref || \"#\",\n            target: $options.isExternal($props.href) ? \"_blank\" : void 0,\n            title: $props.title || $props.name,\n            onBlur: _cache[1] || (_cache[1] = (...args) => $options.handleBlur && $options.handleBlur(...args)),\n            onClick: ($event) => $options.onClick($event, navigate, routerLinkHref),\n            onFocus: _cache[2] || (_cache[2] = (...args) => $options.handleFocus && $options.handleFocus(...args)),\n            onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.handleTab && $options.handleTab(...args), [\"exact\"]), [\"tab\"]))\n          }, [\n            createElementVNode(\"div\", {\n              class: normalizeClass([\"app-navigation-entry-icon\", { [$props.icon]: $props.icon }])\n            }, [\n              $props.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", {\n                key: 1,\n                active: $props.active || $props.to && isActive\n              }, void 0, true)\n            ], 2),\n            createElementVNode(\"span\", {\n              class: normalizeClass([\"app-navigation-entry__name\", { \"hidden-visually\": $data.editingActive }])\n            }, toDisplayString($props.name), 3),\n            $data.editingActive ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n              createVNode(_component_NcInputConfirmCancel, {\n                ref: \"editingInput\",\n                modelValue: $data.editingValue,\n                \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.editingValue = $event),\n                placeholder: $props.editPlaceholder !== \"\" ? $props.editPlaceholder : $props.name,\n                primary: $props.to && isActive || $props.active,\n                onCancel: $options.cancelEditing,\n                onConfirm: $options.handleEditingDone\n              }, null, 8, [\"modelValue\", \"placeholder\", \"primary\", \"onCancel\", \"onConfirm\"])\n            ])) : createCommentVNode(\"\", true)\n          ], 40, _hoisted_2)) : createCommentVNode(\"\", true),\n          $props.undo ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n            createElementVNode(\"div\", _hoisted_5, toDisplayString($props.name), 1)\n          ])) : createCommentVNode(\"\", true),\n          (!!_ctx.$slots.actions || !!_ctx.$slots.counter || $props.editable || $props.undo) && !$data.editingActive ? (openBlock(), createElementBlock(\"div\", {\n            key: 2,\n            class: normalizeClass([\"app-navigation-entry__utils\", { \"app-navigation-entry__utils--display-actions\": $props.forceDisplayActions || $data.menuOpenLocalValue || $props.menuOpen }])\n          }, [\n            !!_ctx.$slots.counter ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n              renderSlot(_ctx.$slots, \"counter\", {}, void 0, true)\n            ])) : createCommentVNode(\"\", true),\n            !!_ctx.$slots.actions || $props.editable && !$data.editingActive || $props.undo ? (openBlock(), createBlock(_component_NcActions, {\n              key: 1,\n              ref: \"actions\",\n              class: \"app-navigation-entry__actions\",\n              container: \"#app-navigation-vue\",\n              boundariesElement: $data.actionsBoundariesElement,\n              inline: $props.inlineActions,\n              placement: $props.menuPlacement,\n              open: $props.menuOpen,\n              forceMenu: $props.forceMenu,\n              defaultIcon: $props.menuIcon,\n              variant: \"tertiary\",\n              \"onUpdate:open\": $options.onMenuToggle\n            }, {\n              icon: withCtx(() => [\n                renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n              ]),\n              default: withCtx(() => [\n                $props.editable && !$data.editingActive ? (openBlock(), createBlock(_component_NcActionButton, {\n                  key: 0,\n                  \"aria-label\": $options.editButtonAriaLabel,\n                  onClick: $options.handleEdit\n                }, {\n                  icon: withCtx(() => [\n                    createVNode(_component_Pencil, { size: 20 })\n                  ]),\n                  default: withCtx(() => [\n                    createTextVNode(\" \" + toDisplayString($props.editLabel), 1)\n                  ]),\n                  _: 1\n                }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n                $props.undo ? (openBlock(), createBlock(_component_NcActionButton, {\n                  key: 1,\n                  \"aria-label\": $options.undoButtonAriaLabel,\n                  onClick: $options.handleUndo\n                }, {\n                  icon: withCtx(() => [\n                    createVNode(_component_Undo, { size: 20 })\n                  ]),\n                  _: 1\n                }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n                renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n              ]),\n              _: 3\n            }, 8, [\"boundariesElement\", \"inline\", \"placement\", \"open\", \"forceMenu\", \"defaultIcon\", \"onUpdate:open\"])) : createCommentVNode(\"\", true)\n          ], 2)) : createCommentVNode(\"\", true),\n          $props.allowCollapse && !!_ctx.$slots.default ? (openBlock(), createBlock(_component_NcAppNavigationIconCollapsible, {\n            key: 3,\n            active: $props.to && isActive || $props.active,\n            open: $data.opened,\n            onClick: withModifiers($options.toggleCollapse, [\"prevent\", \"stop\"])\n          }, null, 8, [\"active\", \"open\", \"onClick\"])) : createCommentVNode(\"\", true),\n          renderSlot(_ctx.$slots, \"extra\", {}, void 0, true)\n        ], 2)\n      ]),\n      _: 3\n    }, 16)),\n    $options.canHaveChildren && !!_ctx.$slots.default ? (openBlock(), createElementBlock(\"ul\", _hoisted_7, [\n      renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n    ])) : createCommentVNode(\"\", true)\n  ], 10, _hoisted_1);\n}\nconst NcAppNavigationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e4d562ae\"]]);\nexport {\n  NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-Dg2d2AwS.mjs.map\n","import '../assets/NcAppNavigationSearch-DD7mo6OW.css';\nimport { defineComponent, useModel, useSlots, ref, useTemplateRef, watch, openBlock, createElementBlock, normalizeClass, createVNode, unref, withCtx, renderSlot, createCommentVNode, mergeModels, nextTick } from \"vue\";\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcInputField } from \"./NcInputField-C3iof9pY.mjs\";\nimport { r as register, C as t44, u as t16, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t16, t44);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppNavigationSearch\",\n  props: /* @__PURE__ */ mergeModels({\n    /**\n     * Text used to label the search input\n     */\n    label: {\n      type: String,\n      default: t(\"Search …\")\n    },\n    /**\n     * Placeholder of the search input\n     * By default the value of `label` is used.\n     */\n    placeholder: {\n      type: String,\n      default: null\n    }\n  }, {\n    \"modelValue\": { default: \"\" },\n    \"modelModifiers\": {}\n  }),\n  emits: [\"update:modelValue\"],\n  setup(__props) {\n    const model = useModel(__props, \"modelValue\");\n    const slots = useSlots();\n    const inputElement = ref();\n    const { focused: inputHasFocus } = useFocusWithin(inputElement);\n    const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n    const actionsContainerElement = useTemplateRef(\"actionsContainer\");\n    const hasActions = () => !!slots.actions?.({});\n    const showActions = ref(true);\n    const timeoutId = ref();\n    const hideActions = ref(false);\n    watch(inputHasFocus, () => {\n      showActions.value = !inputHasFocus.value;\n      window.clearTimeout(timeoutId.value);\n      if (showActions.value) {\n        hideActions.value = false;\n      } else {\n        window.setTimeout(() => {\n          hideActions.value = !showActions.value;\n        }, transitionTimeout);\n      }\n    });\n    function onCloseSearch() {\n      model.value = \"\";\n      if (hasActions()) {\n        showActions.value = true;\n        nextTick(() => actionsContainerElement.value?.querySelector(\"button\")?.focus());\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"app-navigation-search\", {\n          \"app-navigation-search--has-actions\": hasActions()\n        }])\n      }, [\n        createVNode(NcInputField, {\n          ref_key: \"inputElement\",\n          ref: inputElement,\n          modelValue: model.value,\n          \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => model.value = $event),\n          \"aria-label\": __props.label,\n          class: \"app-navigation-search__input\",\n          labelOutside: \"\",\n          placeholder: __props.placeholder ?? __props.label,\n          showTrailingButton: model.value.length > 0,\n          trailingButtonLabel: unref(t)(\"Clear search\"),\n          type: \"search\",\n          onTrailingButtonClick: onCloseSearch\n        }, {\n          \"trailing-button-icon\": withCtx(() => [\n            createVNode(IconClose, { size: 20 })\n          ]),\n          _: 1\n        }, 8, [\"modelValue\", \"aria-label\", \"placeholder\", \"showTrailingButton\", \"trailingButtonLabel\"]),\n        hasActions() ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          ref: \"actionsContainer\",\n          class: normalizeClass([\"app-navigation-search__actions\", {\n            \"app-navigation-search__actions--hidden\": !showActions.value,\n            \"hidden-visually\": hideActions.value\n          }])\n        }, [\n          renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n        ], 2)) : createCommentVNode(\"\", true)\n      ], 2);\n    };\n  }\n});\nconst NcAppNavigationSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-191b6717\"]]);\nexport {\n  NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-BWHsAoc1.mjs.map\n","import '../assets/NcAppNavigationSettings-HQEDobBQ.css';\nimport { defineComponent, ref, useTemplateRef, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, withCtx, createTextVNode, toDisplayString, Transition, withDirectives, renderSlot, vShow } from \"vue\";\nimport { C as mdiCog, D as mdiCogOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, B as t47, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t47);\nconst _hoisted_1 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppNavigationSettings\",\n  props: {\n    excludeClickOutsideSelectors: { default: () => [] },\n    name: { default: () => t(\"Settings\") }\n  },\n  setup(__props) {\n    const contentId = createElementId();\n    const open = ref(false);\n    const container2 = useTemplateRef(\"wrapperElement\");\n    const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n    onClickOutside(container2, () => {\n      open.value = false;\n    }, { ignore });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        ref: \"wrapperElement\",\n        class: normalizeClass(_ctx.$style.container)\n      }, [\n        createElementVNode(\"div\", {\n          class: normalizeClass(_ctx.$style.header)\n        }, [\n          createVNode(NcButton, {\n            \"aria-controls\": unref(contentId),\n            \"aria-expanded\": open.value ? \"true\" : \"false\",\n            class: normalizeClass(_ctx.$style.button),\n            alignment: \"start\",\n            variant: \"tertiary\",\n            wide: \"\",\n            onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n          }, {\n            icon: withCtx(() => [\n              createVNode(NcIconSvgWrapper, {\n                path: unref(isLegacy) ? unref(mdiCog) : unref(mdiCogOutline)\n              }, null, 8, [\"path\"])\n            ]),\n            default: withCtx(() => [\n              createTextVNode(\" \" + toDisplayString(_ctx.name), 1)\n            ]),\n            _: 1\n          }, 8, [\"aria-controls\", \"aria-expanded\", \"class\"])\n        ], 2),\n        createVNode(Transition, {\n          enterActiveClass: _ctx.$style.animationActive,\n          leaveActiveClass: _ctx.$style.animationActive,\n          enterFromClass: _ctx.$style.animationStop,\n          leaveToClass: _ctx.$style.animationStop\n        }, {\n          default: withCtx(() => [\n            withDirectives(createElementVNode(\"div\", {\n              id: unref(contentId),\n              class: normalizeClass(_ctx.$style.content)\n            }, [\n              renderSlot(_ctx.$slots, \"default\")\n            ], 10, _hoisted_1), [\n              [vShow, open.value]\n            ])\n          ]),\n          _: 3\n        }, 8, [\"enterActiveClass\", \"leaveActiveClass\", \"enterFromClass\", \"leaveToClass\"])\n      ], 2);\n    };\n  }\n});\nconst container = \"_container_RFk6U\";\nconst header = \"_header_2CtDS\";\nconst button = \"_button_tAyis\";\nconst content = \"_content_--KYD\";\nconst animationActive = \"_animationActive_DAG1p\";\nconst animationStop = \"_animationStop_fWYQj\";\nconst style0 = {\n  container,\n  header,\n  button,\n  content,\n  animationActive,\n  animationStop\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcAppNavigationSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n  NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-CJ2z5cYU.mjs.map\n","import '../assets/NcAppSettingsDialog-B6-RqGYA.css';\nimport { defineComponent, inject, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, useModel, provide, toRef, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createSlots, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, withKeys, withModifiers, mergeModels } from \"vue\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-D-qxVQxL.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-DyNMVZpX.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, I as t48, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppSettingsDialogVersion\",\n  setup(__props) {\n    const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n    const localizedAppName = useLocalizedAppName();\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([_ctx.$style.appSettingsDialogVersion, { [_ctx.$style.appSettingsDialogVersion__legacy]: unref(legacy) }])\n      }, toDisplayString(unref(localizedAppName)) + \" \" + toDisplayString(unref(APP_VERSION)), 3);\n    };\n  }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_8Xr7R\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_7MO71\";\nconst style0 = {\n  \"material-design-icon\": \"_material-design-icon_qDIHA\",\n  appSettingsDialogVersion,\n  appSettingsDialogVersion__legacy\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcAppSettingsDialogVersion = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__cssModules\", cssModules]]);\nregister(t48);\nconst _hoisted_1 = {\n  key: 0,\n  class: \"app-settings__title\"\n};\nconst _hoisted_2 = {\n  key: 1,\n  class: \"navigation-list\"\n};\nconst _hoisted_3 = [\"aria-current\", \"href\", \"onClick\", \"onKeydown\"];\nconst _hoisted_4 = {\n  key: 0,\n  class: \"navigation-list__link-icon\"\n};\nconst _hoisted_5 = { class: \"navigation-list__link-text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppSettingsDialog\",\n  props: /* @__PURE__ */ mergeModels({\n    showNavigation: { type: Boolean },\n    container: { default: \"body\" },\n    name: { default: \"\" },\n    additionalTrapElements: { default: () => [] },\n    legacy: { type: Boolean, default: false },\n    noVersion: { type: Boolean, default: false }\n  }, {\n    \"open\": { type: Boolean, ...{ required: true } },\n    \"openModifiers\": {}\n  }),\n  emits: [\"update:open\"],\n  setup(__props) {\n    const open = useModel(__props, \"open\");\n    const props = __props;\n    provide(APP_SETTINGS_REGISTRATION_KEY, {\n      registerSection,\n      unregisterSection\n    });\n    provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n    const settingsScrollerElement = useTemplateRef(\"settingsScroller\");\n    const isMobile = useIsMobile();\n    const selectedSection = ref(\"\");\n    const linkClicked = ref(false);\n    const registeredSections = ref([]);\n    const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n    const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n    const unfocusNavigationItem = debounce(() => {\n      selectedSection.value = \"\";\n      if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n        document.activeElement.blur();\n      }\n    }, 300);\n    const sectionsOrderMap = /* @__PURE__ */ new Map();\n    onBeforeUnmount(() => {\n      sectionsOrderMap.clear();\n    });\n    function handleSettingsNavigationClick(item) {\n      linkClicked.value = true;\n      document.getElementById(\"settings-section_\" + item).scrollIntoView({\n        behavior: \"smooth\",\n        inline: \"nearest\"\n      });\n      selectedSection.value = item;\n      setTimeout(() => {\n        linkClicked.value = false;\n      }, 1e3);\n    }\n    function handleCloseModal(isOpen) {\n      if (isOpen) {\n        return;\n      }\n      open.value = false;\n      settingsScrollerElement.value.scrollTop = 0;\n    }\n    function handleScroll() {\n      if (open.value && !linkClicked.value) {\n        unfocusNavigationItem();\n      }\n    }\n    function registerSection(id, name, order, icon) {\n      if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n        throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n      }\n      if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n        warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n      }\n      if (order !== void 0) {\n        sectionsOrderMap.set(id, order);\n      } else if (sectionsOrderMap.has(id)) {\n        order = sectionsOrderMap.get(id);\n      } else {\n        order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n        sectionsOrderMap.set(id, order);\n      }\n      registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n        return orderA - orderB;\n      });\n      if (registeredSections.value.length === 1) {\n        selectedSection.value = id;\n      }\n    }\n    function unregisterSection(id) {\n      registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n      if (selectedSection.value === id) {\n        selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n      }\n    }\n    return (_ctx, _cache) => {\n      return open.value ? (openBlock(), createBlock(NcDialog, {\n        key: 0,\n        class: normalizeClass([\"app-settings\", { \"app-settings--legacy\": unref(isLegacy34) }]),\n        contentClasses: \"app-settings__content\",\n        navigationClasses: \"app-settings__navigation\",\n        additionalTrapElements: _ctx.additionalTrapElements,\n        container: _ctx.container,\n        closeOnClickOutside: \"\",\n        \"navigation-aria-label\": unref(t)(\"Settings navigation\"),\n        size: \"large\",\n        name: _ctx.name,\n        \"onUpdate:open\": handleCloseModal\n      }, createSlots({\n        default: withCtx(() => [\n          createElementVNode(\"div\", {\n            ref: \"settingsScroller\",\n            onScroll: handleScroll\n          }, [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n            !_ctx.noVersion ? (openBlock(), createBlock(NcAppSettingsDialogVersion, { key: 0 })) : createCommentVNode(\"\", true)\n          ], 544)\n        ]),\n        _: 2\n      }, [\n        hasNavigation.value ? {\n          name: \"navigation\",\n          fn: withCtx(({ isCollapsed }) => [\n            !unref(isLegacy34) ? (openBlock(), createElementBlock(\"div\", _hoisted_1, toDisplayString(_ctx.name), 1)) : createCommentVNode(\"\", true),\n            !isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_2, [\n              (openBlock(true), createElementBlock(Fragment, null, renderList(registeredSections.value, (section) => {\n                return openBlock(), createElementBlock(\"li\", {\n                  key: section.id\n                }, [\n                  createElementVNode(\"a\", {\n                    \"aria-current\": `${section.id === selectedSection.value}`,\n                    class: normalizeClass([\"navigation-list__link\", {\n                      \"navigation-list__link--active\": section.id === selectedSection.value,\n                      \"navigation-list__link--icon\": hasNavigationIcons.value\n                    }]),\n                    href: `#settings-section_${section.id}`,\n                    tabindex: \"0\",\n                    onClick: withModifiers(($event) => handleSettingsNavigationClick(section.id), [\"prevent\"]),\n                    onKeydown: withKeys(($event) => handleSettingsNavigationClick(section.id), [\"enter\"])\n                  }, [\n                    hasNavigationIcons.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n                      section.icon ? (openBlock(), createBlock(_sfc_main$2, {\n                        key: 0,\n                        vnodes: section.icon\n                      }, null, 8, [\"vnodes\"])) : createCommentVNode(\"\", true)\n                    ])) : createCommentVNode(\"\", true),\n                    createElementVNode(\"span\", _hoisted_5, toDisplayString(section.name), 1)\n                  ], 42, _hoisted_3)\n                ]);\n              }), 128))\n            ])) : createCommentVNode(\"\", true)\n          ]),\n          key: \"0\"\n        } : void 0\n      ]), 1032, [\"class\", \"additionalTrapElements\", \"container\", \"navigation-aria-label\", \"name\"])) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d360e001\"]]);\nexport {\n  NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-37Ko8yBC.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-BonG0SgH.css';\nimport { defineComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-MusCsTGg.mjs\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppSettingsShortcutsSection\",\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(NcAppSettingsSection, {\n        id: \"keyboard-shortcuts\",\n        name: unref(t)(\"Keyboard shortcuts\")\n      }, {\n        default: withCtx(() => [\n          createElementVNode(\"div\", {\n            class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)\n          }, [\n            renderSlot(_ctx.$slots, \"default\")\n          ], 2)\n        ]),\n        _: 3\n      }, 8, [\"name\"]);\n    };\n  }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_RqpkA\";\nconst style0 = {\n  appSettingsSectionShortcuts\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcAppSettingsShortcutsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n  NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-C0io5RJP.mjs.map\n","const directive = {\n  mounted(el) {\n    el.focus();\n  }\n};\nexport {\n  directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n  if (!(name in groups)) {\n    groups[name] = [];\n  }\n  return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n  if (flags[numeric]) {\n    flags[asciinumeric] = true;\n    flags[alphanumeric] = true;\n  }\n  if (flags[ascii]) {\n    flags[asciinumeric] = true;\n    flags[alpha] = true;\n  }\n  if (flags[asciinumeric]) {\n    flags[alphanumeric] = true;\n  }\n  if (flags[alpha]) {\n    flags[alphanumeric] = true;\n  }\n  if (flags[alphanumeric]) {\n    flags[domain] = true;\n  }\n  if (flags[emoji]) {\n    flags[domain] = true;\n  }\n  for (const k in flags) {\n    const group = registerGroup(k, groups);\n    if (group.indexOf(t) < 0) {\n      group.push(t);\n    }\n  }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n  const result = {};\n  for (const c in groups) {\n    if (groups[c].indexOf(t) >= 0) {\n      result[c] = true;\n    }\n  }\n  return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n  // this.n = null; // DEBUG: State name\n  /** @type {{ [input: string]: State<T> }} j */\n  this.j = {}; // IMPLEMENTATION 1\n  // this.j = []; // IMPLEMENTATION 2\n  /** @type {[RegExp, State<T>][]} jr */\n  this.jr = [];\n  /** @type {?State<T>} jd */\n  this.jd = null;\n  /** @type {?T} t */\n  this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n  accepts() {\n    return !!this.t;\n  },\n  /**\n   * Follow an existing transition from the given input to the next state.\n   * Does not mutate.\n   * @param {string} input character or token type to transition on\n   * @returns {?State<T>} the next state, if any\n   */\n  go(input) {\n    const state = this;\n    const nextState = state.j[input];\n    if (nextState) {\n      return nextState;\n    }\n    for (let i = 0; i < state.jr.length; i++) {\n      const regex = state.jr[i][0];\n      const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n      if (nextState && regex.test(input)) {\n        return nextState;\n      }\n    }\n    // Nowhere left to jump! Return default, if any\n    return state.jd;\n  },\n  /**\n   * Whether the state has a transition for the given input. Set the second\n   * argument to true to only look for an exact match (and not a default or\n   * regular-expression-based transition)\n   * @param {string} input\n   * @param {boolean} exactOnly\n   */\n  has(input, exactOnly = false) {\n    return exactOnly ? input in this.j : !!this.go(input);\n  },\n  /**\n   * Short for \"transition all\"; create a transition from the array of items\n   * in the given list to the same final resulting state.\n   * @param {string | string[]} inputs Group of inputs to transition on\n   * @param {Transition<T> | State<T>} [next] Transition options\n   * @param {Flags} [flags] Collections flags to add token to\n   * @param {Collections<T>} [groups] Master list of token groups\n   */\n  ta(inputs, next, flags, groups) {\n    for (let i = 0; i < inputs.length; i++) {\n      this.tt(inputs[i], next, flags, groups);\n    }\n  },\n  /**\n   * Short for \"take regexp transition\"; defines a transition for this state\n   * when it encounters a token which matches the given regular expression\n   * @param {RegExp} regexp Regular expression transition (populate first)\n   * @param {T | State<T>} [next] Transition options\n   * @param {Flags} [flags] Collections flags to add token to\n   * @param {Collections<T>} [groups] Master list of token groups\n   * @returns {State<T>} taken after the given input\n   */\n  tr(regexp, next, flags, groups) {\n    groups = groups || State.groups;\n    let nextState;\n    if (next && next.j) {\n      nextState = next;\n    } else {\n      // Token with maybe token groups\n      nextState = new State(next);\n      if (flags && groups) {\n        addToGroups(next, flags, groups);\n      }\n    }\n    this.jr.push([regexp, nextState]);\n    return nextState;\n  },\n  /**\n   * Short for \"take transitions\", will take as many sequential transitions as\n   * the length of the given input and returns the\n   * resulting final state.\n   * @param {string | string[]} input\n   * @param {T | State<T>} [next] Transition options\n   * @param {Flags} [flags] Collections flags to add token to\n   * @param {Collections<T>} [groups] Master list of token groups\n   * @returns {State<T>} taken after the given input\n   */\n  ts(input, next, flags, groups) {\n    let state = this;\n    const len = input.length;\n    if (!len) {\n      return state;\n    }\n    for (let i = 0; i < len - 1; i++) {\n      state = state.tt(input[i]);\n    }\n    return state.tt(input[len - 1], next, flags, groups);\n  },\n  /**\n   * Short for \"take transition\", this is a method for building/working with\n   * state machines.\n   *\n   * If a state already exists for the given input, returns it.\n   *\n   * If a token is specified, that state will emit that token when reached by\n   * the linkify engine.\n   *\n   * If no state exists, it will be initialized with some default transitions\n   * that resemble existing default transitions.\n   *\n   * If a state is given for the second argument, that state will be\n   * transitioned to on the given input regardless of what that input\n   * previously did.\n   *\n   * Specify a token group flags to define groups that this token belongs to.\n   * The token will be added to corresponding entires in the given groups\n   * object.\n   *\n   * @param {string} input character, token type to transition on\n   * @param {T | State<T>} [next] Transition options\n   * @param {Flags} [flags] Collections flags to add token to\n   * @param {Collections<T>} [groups] Master list of groups\n   * @returns {State<T>} taken after the given input\n   */\n  tt(input, next, flags, groups) {\n    groups = groups || State.groups;\n    const state = this;\n\n    // Check if existing state given, just a basic transition\n    if (next && next.j) {\n      state.j[input] = next;\n      return next;\n    }\n    const t = next;\n\n    // Take the transition with the usual default mechanisms and use that as\n    // a template for creating the next state\n    let nextState,\n      templateState = state.go(input);\n    if (templateState) {\n      nextState = new State();\n      Object.assign(nextState.j, templateState.j);\n      nextState.jr.push.apply(nextState.jr, templateState.jr);\n      nextState.jd = templateState.jd;\n      nextState.t = templateState.t;\n    } else {\n      nextState = new State();\n    }\n    if (t) {\n      // Ensure newly token is in the same groups as the old token\n      if (groups) {\n        if (nextState.t && typeof nextState.t === 'string') {\n          const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n          addToGroups(t, allFlags, groups);\n        } else if (flags) {\n          addToGroups(t, flags, groups);\n        }\n      }\n      nextState.t = t; // overwrite anything that was previously there\n    }\n    state.j[input] = nextState;\n    return nextState;\n  }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // （\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // ）\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // ＜\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // ＞\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n  utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n  // Frequently used states (name argument removed during minification)\n  /** @type Collections<string> */\n  const groups = {}; // of tokens\n  State.groups = groups;\n  /** @type State<string> */\n  const Start = new State();\n  if (tlds == null) {\n    tlds = decodeTlds(encodedTlds);\n  }\n  if (utlds == null) {\n    utlds = decodeTlds(encodedUtlds);\n  }\n\n  // States for special URL symbols that accept immediately after start\n  tt(Start, \"'\", APOSTROPHE);\n  tt(Start, '{', OPENBRACE);\n  tt(Start, '}', CLOSEBRACE);\n  tt(Start, '[', OPENBRACKET);\n  tt(Start, ']', CLOSEBRACKET);\n  tt(Start, '(', OPENPAREN);\n  tt(Start, ')', CLOSEPAREN);\n  tt(Start, '<', OPENANGLEBRACKET);\n  tt(Start, '>', CLOSEANGLEBRACKET);\n  tt(Start, '（', FULLWIDTHLEFTPAREN);\n  tt(Start, '）', FULLWIDTHRIGHTPAREN);\n  tt(Start, '「', LEFTCORNERBRACKET);\n  tt(Start, '」', RIGHTCORNERBRACKET);\n  tt(Start, '『', LEFTWHITECORNERBRACKET);\n  tt(Start, '』', RIGHTWHITECORNERBRACKET);\n  tt(Start, '＜', FULLWIDTHLESSTHAN);\n  tt(Start, '＞', FULLWIDTHGREATERTHAN);\n  tt(Start, '&', AMPERSAND);\n  tt(Start, '*', ASTERISK);\n  tt(Start, '@', AT);\n  tt(Start, '`', BACKTICK);\n  tt(Start, '^', CARET);\n  tt(Start, ':', COLON);\n  tt(Start, ',', COMMA);\n  tt(Start, '$', DOLLAR);\n  tt(Start, '.', DOT);\n  tt(Start, '=', EQUALS);\n  tt(Start, '!', EXCLAMATION);\n  tt(Start, '-', HYPHEN);\n  tt(Start, '%', PERCENT);\n  tt(Start, '|', PIPE);\n  tt(Start, '+', PLUS);\n  tt(Start, '#', POUND);\n  tt(Start, '?', QUERY);\n  tt(Start, '\"', QUOTE);\n  tt(Start, '/', SLASH);\n  tt(Start, ';', SEMI);\n  tt(Start, '~', TILDE);\n  tt(Start, '_', UNDERSCORE);\n  tt(Start, '\\\\', BACKSLASH);\n  tt(Start, '・', FULLWIDTHMIDDLEDOT);\n  const Num = tr(Start, DIGIT, NUM, {\n    [numeric]: true\n  });\n  tr(Num, DIGIT, Num);\n  const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n    [asciinumeric]: true\n  });\n  const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n    [alphanumeric]: true\n  });\n\n  // State which emits a word token\n  const Word = tr(Start, ASCII_LETTER, WORD, {\n    [ascii]: true\n  });\n  tr(Word, DIGIT, Asciinumeric);\n  tr(Word, ASCII_LETTER, Word);\n  tr(Asciinumeric, DIGIT, Asciinumeric);\n  tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n  // Same as previous, but specific to non-fsm.ascii alphabet words\n  const UWord = tr(Start, LETTER, UWORD, {\n    [alpha]: true\n  });\n  tr(UWord, ASCII_LETTER); // Non-accepting\n  tr(UWord, DIGIT, Alphanumeric);\n  tr(UWord, LETTER, UWord);\n  tr(Alphanumeric, DIGIT, Alphanumeric);\n  tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n  tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n  // Whitespace jumps\n  // Tokens of only non-newline whitespace are arbitrarily long\n  // If any whitespace except newline, more whitespace!\n  const Nl = tt(Start, LF, NL, {\n    [whitespace]: true\n  });\n  const Cr = tt(Start, CR, WS, {\n    [whitespace]: true\n  });\n  const Ws = tr(Start, SPACE, WS, {\n    [whitespace]: true\n  });\n  tt(Start, OBJECT_REPLACEMENT, Ws);\n  tt(Cr, LF, Nl); // \\r\\n\n  tt(Cr, OBJECT_REPLACEMENT, Ws);\n  tr(Cr, SPACE, Ws);\n  tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n  tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n  tr(Ws, SPACE, Ws);\n  tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n  // Emoji tokens. They are not grouped by the scanner except in cases where a\n  // zero-width joiner is present\n  const Emoji = tr(Start, EMOJI, EMOJI$1, {\n    [emoji]: true\n  });\n  tt(Emoji, '#'); // no transition, emoji regex seems to match #\n  tr(Emoji, EMOJI, Emoji);\n  tt(Emoji, EMOJI_VARIATION, Emoji);\n  // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n  const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n  tt(EmojiJoiner, '#');\n  tr(EmojiJoiner, EMOJI, Emoji);\n  // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n  // Generates states for top-level domains\n  // Note that this is most accurate when tlds are in alphabetical order\n  const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n  const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n  for (let i = 0; i < tlds.length; i++) {\n    fastts(Start, tlds[i], TLD, WORD, wordjr);\n  }\n  for (let i = 0; i < utlds.length; i++) {\n    fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n  }\n  addToGroups(TLD, {\n    tld: true,\n    ascii: true\n  }, groups);\n  addToGroups(UTLD, {\n    utld: true,\n    alpha: true\n  }, groups);\n\n  // Collect the states generated by different protocols. NOTE: If any new TLDs\n  // get added that are also protocols, set the token to be the same as the\n  // protocol to ensure parsing works as expected.\n  fastts(Start, 'file', SCHEME, WORD, wordjr);\n  fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n  fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n  fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n  fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n  fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n  addToGroups(SCHEME, {\n    scheme: true,\n    ascii: true\n  }, groups);\n  addToGroups(SLASH_SCHEME, {\n    slashscheme: true,\n    ascii: true\n  }, groups);\n\n  // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n  customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n  for (let i = 0; i < customSchemes.length; i++) {\n    const sch = customSchemes[i][0];\n    const optionalSlashSlash = customSchemes[i][1];\n    const flags = optionalSlashSlash ? {\n      [scheme]: true\n    } : {\n      [slashscheme]: true\n    };\n    if (sch.indexOf('-') >= 0) {\n      flags[domain] = true;\n    } else if (!ASCII_LETTER.test(sch)) {\n      flags[numeric] = true; // numbers only\n    } else if (DIGIT.test(sch)) {\n      flags[asciinumeric] = true;\n    } else {\n      flags[ascii] = true;\n    }\n    ts(Start, sch, sch, flags);\n  }\n\n  // Localhost token\n  ts(Start, 'localhost', LOCALHOST, {\n    ascii: true\n  });\n\n  // Set default transition for start state (some symbol)\n  Start.jd = new State(SYM);\n  return {\n    start: Start,\n    tokens: Object.assign({\n      groups\n    }, tk)\n  };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n  // State machine is not case sensitive, so input is tokenized in lowercased\n  // form (still returns regular case). Uses selective `toLowerCase` because\n  // lowercasing the entire string causes the length and character position to\n  // vary in some non-English strings with V8-based runtimes.\n  const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n  const charCount = iterable.length; // <= len if there are emojis, etc\n  const tokens = []; // return value\n\n  // cursor through the string itself, accounting for characters that have\n  // width with length 2 such as emojis\n  let cursor = 0;\n\n  // Cursor through the array-representation of the string\n  let charCursor = 0;\n\n  // Tokenize the string\n  while (charCursor < charCount) {\n    let state = start;\n    let nextState = null;\n    let tokenLength = 0;\n    let latestAccepting = null;\n    let sinceAccepts = -1;\n    let charsSinceAccepts = -1;\n    while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n      state = nextState;\n\n      // Keep track of the latest accepting state\n      if (state.accepts()) {\n        sinceAccepts = 0;\n        charsSinceAccepts = 0;\n        latestAccepting = state;\n      } else if (sinceAccepts >= 0) {\n        sinceAccepts += iterable[charCursor].length;\n        charsSinceAccepts++;\n      }\n      tokenLength += iterable[charCursor].length;\n      cursor += iterable[charCursor].length;\n      charCursor++;\n    }\n\n    // Roll back to the latest accepting state\n    cursor -= sinceAccepts;\n    charCursor -= charsSinceAccepts;\n    tokenLength -= sinceAccepts;\n\n    // No more jumps, just make a new token from the last accepting one\n    tokens.push({\n      t: latestAccepting.t,\n      // token type/name\n      v: str.slice(cursor - tokenLength, cursor),\n      // string value\n      s: cursor - tokenLength,\n      // start index\n      e: cursor // end index (excluding)\n    });\n  }\n  return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n  const result = [];\n  const len = str.length;\n  let index = 0;\n  while (index < len) {\n    let first = str.charCodeAt(index);\n    let second;\n    let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n    : str.slice(index, index + 2); // two-index characters\n    result.push(char);\n    index += char.length;\n  }\n  return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n  let next;\n  const len = input.length;\n  for (let i = 0; i < len - 1; i++) {\n    const char = input[i];\n    if (state.j[char]) {\n      next = state.j[char];\n    } else {\n      next = new State(defaultt);\n      next.jr = jr.slice();\n      state.j[char] = next;\n    }\n    state = next;\n  }\n  next = new State(t);\n  next.jr = jr.slice();\n  state.j[input[len - 1]] = next;\n  return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n  const words = [];\n  const stack = [];\n  let i = 0;\n  let digits = '0123456789';\n  while (i < encoded.length) {\n    let popDigitCount = 0;\n    while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n      popDigitCount++; // encountered some digits, have to pop to go one level up trie\n    }\n    if (popDigitCount > 0) {\n      words.push(stack.join('')); // whatever preceded the pop digits must be a word\n      for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n        stack.pop();\n      }\n      i += popDigitCount;\n    } else {\n      stack.push(encoded[i]); // drop down a level into the trie\n      i++;\n    }\n  }\n  return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n *  events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n *  ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n  defaultProtocol: 'http',\n  events: null,\n  format: noop,\n  formatHref: noop,\n  nl2br: false,\n  tagName: 'a',\n  target: null,\n  rel: null,\n  validate: true,\n  truncate: Infinity,\n  className: null,\n  attributes: null,\n  ignoreTags: [],\n  render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n *   internal use) default render function that determines how to generate an\n *   HTML element based on a link token's derived tagName, attributes and HTML.\n *   Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n  let o = Object.assign({}, defaults);\n  if (opts) {\n    o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n  }\n\n  // Ensure all ignored tags are uppercase\n  const ignoredTags = o.ignoreTags;\n  const uppercaseIgnoredTags = [];\n  for (let i = 0; i < ignoredTags.length; i++) {\n    uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n  }\n  /** @protected */\n  this.o = o;\n  if (defaultRender) {\n    this.defaultRender = defaultRender;\n  }\n  this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n  o: defaults,\n  /**\n   * @type string[]\n   */\n  ignoreTags: [],\n  /**\n   * @param {IntermediateRepresentation} ir\n   * @returns {any}\n   */\n  defaultRender(ir) {\n    return ir;\n  },\n  /**\n   * Returns true or false based on whether a token should be displayed as a\n   * link based on the user options.\n   * @param {MultiToken} token\n   * @returns {boolean}\n   */\n  check(token) {\n    return this.get('validate', token.toString(), token);\n  },\n  // Private methods\n\n  /**\n   * Resolve an option's value based on the value of the option and the given\n   * params. If operator and token are specified and the target option is\n   * callable, automatically calls the function with the given argument.\n   * @template {keyof Opts} K\n   * @param {K} key Name of option to use\n   * @param {string} [operator] will be passed to the target option if it's a\n   * function. If not specified, RAW function value gets returned\n   * @param {MultiToken} [token] The token from linkify.tokenize\n   * @returns {Opts[K] | any}\n   */\n  get(key, operator, token) {\n    const isCallable = operator != null;\n    let option = this.o[key];\n    if (!option) {\n      return option;\n    }\n    if (typeof option === 'object') {\n      option = token.t in option ? option[token.t] : defaults[key];\n      if (typeof option === 'function' && isCallable) {\n        option = option(operator, token);\n      }\n    } else if (typeof option === 'function' && isCallable) {\n      option = option(operator, token.t, token);\n    }\n    return option;\n  },\n  /**\n   * @template {keyof Opts} L\n   * @param {L} key Name of options object to use\n   * @param {string} [operator]\n   * @param {MultiToken} [token]\n   * @returns {Opts[L] | any}\n   */\n  getObj(key, operator, token) {\n    let obj = this.o[key];\n    if (typeof obj === 'function' && operator != null) {\n      obj = obj(operator, token.t, token);\n    }\n    return obj;\n  },\n  /**\n   * Convert the given token to a rendered element that may be added to the\n   * calling-interface's DOM\n   * @param {MultiToken} token Token to render to an HTML element\n   * @returns {any} Render result; e.g., HTML string, DOM element, React\n   *   Component, etc.\n   */\n  render(token) {\n    const ir = token.render(this); // intermediate representation\n    const renderFn = this.get('render', null, token) || this.defaultRender;\n    return renderFn(ir, token.t, token);\n  }\n};\nfunction noop(val) {\n  return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n  this.t = 'token';\n  this.v = value;\n  this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n  isLink: false,\n  /**\n   * Return the string this token represents.\n   * @return {string}\n   */\n  toString() {\n    return this.v;\n  },\n  /**\n   * What should the value for this token be in the `href` HTML attribute?\n   * Returns the `.toString` value by default.\n   * @param {string} [scheme]\n   * @return {string}\n   */\n  toHref(scheme) {\n    return this.toString();\n  },\n  /**\n   * @param {Options} options Formatting options\n   * @returns {string}\n   */\n  toFormattedString(options) {\n    const val = this.toString();\n    const truncate = options.get('truncate', val, this);\n    const formatted = options.get('format', val, this);\n    return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n  },\n  /**\n   *\n   * @param {Options} options\n   * @returns {string}\n   */\n  toFormattedHref(options) {\n    return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n  },\n  /**\n   * The start index of this token in the original input string\n   * @returns {number}\n   */\n  startIndex() {\n    return this.tk[0].s;\n  },\n  /**\n   * The end index of this token in the original input string (up to this\n   * index but not including it)\n   * @returns {number}\n   */\n  endIndex() {\n    return this.tk[this.tk.length - 1].e;\n  },\n  /**\n  \tReturns an object  of relevant values for this token, which includes keys\n  \t* type - Kind of token ('url', 'email', etc.)\n  \t* value - Original text\n  \t* href - The value that should be added to the anchor tag's href\n  \t\tattribute\n  \t\t@method toObject\n  \t@param {string} [protocol] `'http'` by default\n  */\n  toObject(protocol = defaults.defaultProtocol) {\n    return {\n      type: this.t,\n      value: this.toString(),\n      isLink: this.isLink,\n      href: this.toHref(protocol),\n      start: this.startIndex(),\n      end: this.endIndex()\n    };\n  },\n  /**\n   *\n   * @param {Options} options Formatting option\n   */\n  toFormattedObject(options) {\n    return {\n      type: this.t,\n      value: this.toFormattedString(options),\n      isLink: this.isLink,\n      href: this.toFormattedHref(options),\n      start: this.startIndex(),\n      end: this.endIndex()\n    };\n  },\n  /**\n   * Whether this token should be rendered as a link according to the given options\n   * @param {Options} options\n   * @returns {boolean}\n   */\n  validate(options) {\n    return options.get('validate', this.toString(), this);\n  },\n  /**\n   * Return an object that represents how this link should be rendered.\n   * @param {Options} options Formattinng options\n   */\n  render(options) {\n    const token = this;\n    const href = this.toHref(options.get('defaultProtocol'));\n    const formattedHref = options.get('formatHref', href, this);\n    const tagName = options.get('tagName', href, token);\n    const content = this.toFormattedString(options);\n    const attributes = {};\n    const className = options.get('className', href, token);\n    const target = options.get('target', href, token);\n    const rel = options.get('rel', href, token);\n    const attrs = options.getObj('attributes', href, token);\n    const eventListeners = options.getObj('events', href, token);\n    attributes.href = formattedHref;\n    if (className) {\n      attributes.class = className;\n    }\n    if (target) {\n      attributes.target = target;\n    }\n    if (rel) {\n      attributes.rel = rel;\n    }\n    if (attrs) {\n      Object.assign(attributes, attrs);\n    }\n    return {\n      tagName,\n      attributes,\n      content,\n      eventListeners\n    };\n  }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n  class Token extends MultiToken {\n    constructor(value, tokens) {\n      super(value, tokens);\n      this.t = type;\n    }\n  }\n  for (const p in props) {\n    Token.prototype[p] = props[p];\n  }\n  Token.t = type;\n  return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n  isLink: true,\n  toHref() {\n    return 'mailto:' + this.toString();\n  }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n  isLink: true,\n  /**\n  \tLowercases relevant parts of the domain and adds the protocol if\n  \trequired. Note that this will not escape unsafe HTML characters in the\n  \tURL.\n  \t\t@param {string} [scheme] default scheme (e.g., 'https')\n  \t@return {string} the full href\n  */\n  toHref(scheme = defaults.defaultProtocol) {\n    // Check if already has a prefix scheme\n    return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n  },\n  /**\n   * Check whether this URL token has a protocol\n   * @return {boolean}\n   */\n  hasProtocol() {\n    const tokens = this.tk;\n    return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n  }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n  groups\n}) {\n  // Types of characters the URL can definitely end in\n  const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n  // Types of tokens that can follow a URL and be part of the query string\n  // but cannot be the very last characters\n  // Characters that cannot appear in the URL at all should be excluded\n  const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n  // For addresses without the mailto prefix\n  // Tokens allowed in the localpart of the email\n  const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n  // The universal starting state.\n  /**\n   * @type State<Token>\n   */\n  const Start = makeState();\n  const Localpart = tt(Start, TILDE); // Local part of the email address\n  ta(Localpart, localpartAccepting, Localpart);\n  ta(Localpart, groups.domain, Localpart);\n  const Domain = makeState(),\n    Scheme = makeState(),\n    SlashScheme = makeState();\n  ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n  ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n  ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n  ta(Domain, localpartAccepting, Localpart);\n  ta(Domain, groups.domain, Domain);\n  const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n  tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n  // Local part of an email address can be e.g. 'http' or 'mailto'\n  tt(Scheme, AT, LocalpartAt);\n  tt(SlashScheme, AT, LocalpartAt);\n  const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n  ta(LocalpartDot, localpartAccepting, Localpart);\n  ta(LocalpartDot, groups.domain, Localpart);\n  const EmailDomain = makeState();\n  ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n  ta(EmailDomain, groups.domain, EmailDomain);\n  const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n  ta(EmailDomainDot, groups.domain, EmailDomain);\n  const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n  ta(EmailDomainDot, groups.tld, Email$1);\n  ta(EmailDomainDot, groups.utld, Email$1);\n  tt(LocalpartAt, LOCALHOST, Email$1);\n\n  // Hyphen can jump back to a domain name\n  const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n  tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n  ta(EmailDomainHyphen, groups.domain, EmailDomain);\n  ta(Email$1, groups.domain, EmailDomain);\n  tt(Email$1, DOT, EmailDomainDot);\n  tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n  // Final possible email states\n  const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n  /*const EmailColonPort = */\n  ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n  // Account for dots and hyphens. Hyphens are usually parts of domain names\n  // (but not TLDs)\n  const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n  const DomainDot = tt(Domain, DOT); // domain followed by DOT\n  tt(DomainHyphen, HYPHEN, DomainHyphen);\n  ta(DomainHyphen, groups.domain, Domain);\n  ta(DomainDot, localpartAccepting, Localpart);\n  ta(DomainDot, groups.domain, Domain);\n  const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n  ta(DomainDot, groups.tld, DomainDotTld);\n  ta(DomainDot, groups.utld, DomainDotTld);\n  ta(DomainDotTld, groups.domain, Domain);\n  ta(DomainDotTld, localpartAccepting, Localpart);\n  tt(DomainDotTld, DOT, DomainDot);\n  tt(DomainDotTld, HYPHEN, DomainHyphen);\n  tt(DomainDotTld, AT, LocalpartAt);\n  const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n  const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n  ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n  // Long URL with optional port and maybe query string\n  const Url$1 = makeState(Url);\n\n  // URL with extra symbols at the end, followed by an opening bracket\n  const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n  // Query strings\n  ta(Url$1, qsAccepting, Url$1);\n  ta(Url$1, qsNonAccepting, UrlNonaccept);\n  ta(UrlNonaccept, qsAccepting, Url$1);\n  ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n  // Become real URLs after `SLASH` or `COLON NUM SLASH`\n  // Here works with or without scheme:// prefix\n  tt(DomainDotTld, SLASH, Url$1);\n  tt(DomainDotTldColonPort, SLASH, Url$1);\n\n  // Note that domains that begin with schemes are treated slighly differently\n  const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n  const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n  const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n  const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n  // Scheme states can transition to domain states\n  ta(Scheme, groups.domain, Domain);\n  tt(Scheme, DOT, DomainDot);\n  tt(Scheme, HYPHEN, DomainHyphen);\n  ta(SlashScheme, groups.domain, Domain);\n  tt(SlashScheme, DOT, DomainDot);\n  tt(SlashScheme, HYPHEN, DomainHyphen);\n\n  // Force URL with scheme prefix followed by anything sane\n  ta(SchemeColon, groups.domain, Url$1);\n  tt(SchemeColon, SLASH, Url$1);\n  tt(SchemeColon, QUERY, Url$1);\n  ta(UriPrefix, groups.domain, Url$1);\n  ta(UriPrefix, qsAccepting, Url$1);\n  tt(UriPrefix, SLASH, Url$1);\n  const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n  // {}\n  [OPENBRACKET, CLOSEBRACKET],\n  // []\n  [OPENPAREN, CLOSEPAREN],\n  // ()\n  [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n  // <>\n  [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n  // （）\n  [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n  // 「」\n  [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n  // 『』\n  [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // ＜＞\n  ];\n  for (let i = 0; i < bracketPairs.length; i++) {\n    const [OPEN, CLOSE] = bracketPairs[i];\n    const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n    // Continue not accepting for open brackets\n    tt(UrlNonaccept, OPEN, UrlOpen);\n\n    // Closing bracket component. This character WILL be included in the URL\n    tt(UrlOpen, CLOSE, Url$1);\n\n    // URL that beings with an opening bracket, followed by a symbols.\n    // Note that the final state can still be `UrlOpen` (if the URL has a\n    // single opening bracket for some reason).\n    const UrlOpenQ = makeState(Url);\n    ta(UrlOpen, qsAccepting, UrlOpenQ);\n    const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n    ta(UrlOpen, qsNonAccepting);\n\n    // URL that begins with an opening bracket, followed by some symbols\n    ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n    ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n    ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n    ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n    // Close brace/bracket to become regular URL\n    tt(UrlOpenQ, CLOSE, Url$1);\n    tt(UrlOpenSyms, CLOSE, Url$1);\n  }\n  tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n  tt(Start, NL, Nl); // single new line\n\n  return {\n    start: Start,\n    tokens: tk\n  };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n  let len = tokens.length;\n  let cursor = 0;\n  let multis = [];\n  let textTokens = [];\n  while (cursor < len) {\n    let state = start;\n    let secondState = null;\n    let nextState = null;\n    let multiLength = 0;\n    let latestAccepting = null;\n    let sinceAccepts = -1;\n    while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n      // Starting tokens with nowhere to jump to.\n      // Consider these to be just plain text\n      textTokens.push(tokens[cursor++]);\n    }\n    while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n      // Get the next state\n      secondState = null;\n      state = nextState;\n\n      // Keep track of the latest accepting state\n      if (state.accepts()) {\n        sinceAccepts = 0;\n        latestAccepting = state;\n      } else if (sinceAccepts >= 0) {\n        sinceAccepts++;\n      }\n      cursor++;\n      multiLength++;\n    }\n    if (sinceAccepts < 0) {\n      // No accepting state was found, part of a regular text token add\n      // the first text token to the text tokens array and try again from\n      // the next\n      cursor -= multiLength;\n      if (cursor < len) {\n        textTokens.push(tokens[cursor]);\n        cursor++;\n      }\n    } else {\n      // Accepting state!\n      // First close off the textTokens (if available)\n      if (textTokens.length > 0) {\n        multis.push(initMultiToken(Text, input, textTokens));\n        textTokens = [];\n      }\n\n      // Roll back to the latest accepting state\n      cursor -= sinceAccepts;\n      multiLength -= sinceAccepts;\n\n      // Create a new multitoken\n      const Multi = latestAccepting.t;\n      const subtokens = tokens.slice(cursor - multiLength, cursor);\n      multis.push(initMultiToken(Multi, input, subtokens));\n    }\n  }\n\n  // Finally close off the textTokens (if available)\n  if (textTokens.length > 0) {\n    multis.push(initMultiToken(Text, input, textTokens));\n  }\n  return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n  const startIdx = tokens[0].s;\n  const endIdx = tokens[tokens.length - 1].e;\n  const value = input.slice(startIdx, endIdx);\n  return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n  scanner: null,\n  parser: null,\n  tokenQueue: [],\n  pluginQueue: [],\n  customSchemes: [],\n  initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n  State.groups = {};\n  INIT.scanner = null;\n  INIT.parser = null;\n  INIT.tokenQueue = [];\n  INIT.pluginQueue = [];\n  INIT.customSchemes = [];\n  INIT.initialized = false;\n  return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n  if (typeof plugin !== 'function') {\n    throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n  }\n  for (let i = 0; i < INIT.tokenQueue.length; i++) {\n    if (name === INIT.tokenQueue[i][0]) {\n      warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n      INIT.tokenQueue[i] = [name, plugin];\n      return;\n    }\n  }\n  INIT.tokenQueue.push([name, plugin]);\n  if (INIT.initialized) {\n    warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n  }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n  if (typeof plugin !== 'function') {\n    throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n  }\n  for (let i = 0; i < INIT.pluginQueue.length; i++) {\n    if (name === INIT.pluginQueue[i][0]) {\n      warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n      INIT.pluginQueue[i] = [name, plugin];\n      return;\n    }\n  }\n  INIT.pluginQueue.push([name, plugin]);\n  if (INIT.initialized) {\n    warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n  }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n  if (INIT.initialized) {\n    warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n  }\n  if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n    throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n  }\n  INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n  // Initialize scanner state machine and plugins\n  INIT.scanner = init$2(INIT.customSchemes);\n  for (let i = 0; i < INIT.tokenQueue.length; i++) {\n    INIT.tokenQueue[i][1]({\n      scanner: INIT.scanner\n    });\n  }\n\n  // Initialize parser state machine and plugins\n  INIT.parser = init$1(INIT.scanner.tokens);\n  for (let i = 0; i < INIT.pluginQueue.length; i++) {\n    INIT.pluginQueue[i][1]({\n      scanner: INIT.scanner,\n      parser: INIT.parser\n    });\n  }\n  INIT.initialized = true;\n  return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n  if (!INIT.initialized) {\n    init();\n  }\n  return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n  if (type && typeof type === 'object') {\n    if (opts) {\n      throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n    }\n    opts = type;\n    type = null;\n  }\n  const options = new Options(opts);\n  const tokens = tokenize(str);\n  const filtered = [];\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    if (token.isLink && (!type || token.t === type) && options.check(token)) {\n      filtered.push(token.toFormattedObject(options));\n    }\n  }\n  return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n *     linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n  const tokens = tokenize(str);\n  return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import escapeHTML from \"escape-html\";\nimport { Options, tokenize } from \"linkifyjs\";\nfunction linkifyString(str) {\n  const options = new Options({\n    defaultProtocol: \"https\",\n    target: \"_blank\",\n    className: \"external linkified\",\n    attributes: {\n      rel: \"nofollow noopener noreferrer\"\n    }\n  }, defaultRender);\n  const tokens = tokenize(str);\n  const result = [];\n  for (const token of tokens) {\n    if (token.t === \"nl\" && options.get(\"nl2br\")) {\n      result.push(\"<br>\\n\");\n    } else if (!token.isLink || !options.check(token)) {\n      result.push(escapeHTML(token.toString()));\n    } else {\n      result.push(options.render(token));\n    }\n  }\n  return result.join(\"\");\n}\nfunction escapeAttr(href) {\n  return href.replace(/\"/g, \"&quot;\");\n}\nfunction attributesToString(attributes) {\n  const result = [];\n  for (const attr in attributes) {\n    const val = attributes[attr] + \"\";\n    result.push(`${attr}=\"${escapeAttr(val)}\"`);\n  }\n  return result.join(\" \");\n}\nfunction defaultRender({ tagName, attributes, content }) {\n  return `<${tagName} ${attributesToString(attributes)}>${escapeHTML(content)}</${tagName}>`;\n}\nconst directive = function(el, { value }) {\n  if (value?.linkify === true) {\n    el.innerHTML = linkifyString(value.text);\n  }\n};\nexport {\n  directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, inject, withDirectives, openBlock, createElementBlock, createTextVNode, toDisplayString, unref } from \"vue\";\nimport directive from \"../directives/Linkify/index.mjs\";\nconst _hoisted_1 = [\"title\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppSidebarHeader\",\n  props: {\n    name: {},\n    title: {},\n    linkify: { type: Boolean }\n  },\n  setup(__props) {\n    const headerRef = inject(\"NcAppSidebar:header:ref\");\n    return (_ctx, _cache) => {\n      return withDirectives((openBlock(), createElementBlock(\"h2\", {\n        ref_key: \"headerRef\",\n        ref: headerRef,\n        tabindex: \"-1\",\n        title: _ctx.title\n      }, [\n        createTextVNode(toDisplayString(_ctx.name), 1)\n      ], 8, _hoisted_1)), [\n        [unref(directive), { text: _ctx.name, linkify: _ctx.linkify }]\n      ]);\n    };\n  }\n});\nexport {\n  _sfc_main as _\n};\n//# sourceMappingURL=NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-Bk4yFBHY.mjs.map\n","import '../assets/NcAppSidebar-BMon2CtX.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useModel, normalizeClass, unref, createVNode, withCtx, mergeModels, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from \"vue\";\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { _ as _sfc_main$6 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport directive from \"../directives/Focus/index.mjs\";\nimport { r as register, V as t15, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isSlotPopulated, N as NcActions } from \"./NcActions-fCXSb_0o.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _sfc_main$7 } from \"./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-Bk4yFBHY.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent--TRhmNAW.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nconst _sfc_main$5 = {\n  name: \"DockRightIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon dock-right-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$3))\n  ], 16, _hoisted_1$5);\n}\nconst IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$4 = {\n  name: \"StarIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon star-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$2, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$2))\n  ], 16, _hoisted_1$4);\n}\nconst IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n  name: \"StarOutlineIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon star-outline-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$1))\n  ], 16, _hoisted_1$3);\n}\nconst IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$2 = [\"aria-selected\", \"tabindex\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n  __name: \"NcAppSidebarTabsButton\",\n  props: /* @__PURE__ */ mergeModels({\n    tab: {}\n  }, {\n    \"selected\": { type: Boolean, ...{ required: true } },\n    \"selectedModifiers\": {}\n  }),\n  emits: [\"update:selected\"],\n  setup(__props) {\n    const selected = useModel(__props, \"selected\");\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"button\", {\n        class: normalizeClass([\"button-vue\", [_ctx.$style.sidebarTabsButton, {\n          [_ctx.$style.sidebarTabsButton_selected]: selected.value,\n          [_ctx.$style.sidebarTabsButton_legacy]: unref(isLegacy34)\n        }]]),\n        role: \"tab\",\n        \"aria-selected\": selected.value,\n        tabindex: selected.value ? 0 : -1,\n        onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)\n      }, [\n        createElementVNode(\"span\", {\n          class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)\n        }, [\n          createVNode(_sfc_main$6, {\n            vnodes: _ctx.tab.renderIcon()\n          }, {\n            default: withCtx(() => [\n              createElementVNode(\"span\", {\n                class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, _ctx.tab.icon])\n              }, null, 2)\n            ]),\n            _: 1\n          }, 8, [\"vnodes\"])\n        ], 2),\n        createElementVNode(\"span\", {\n          class: normalizeClass(_ctx.$style.sidebarTabsButton__name)\n        }, toDisplayString(_ctx.tab.name), 3)\n      ], 10, _hoisted_1$2);\n    };\n  }\n});\nconst sidebarTabsButton = \"_sidebarTabsButton_6hxfz\";\nconst sidebarTabsButton_legacy = \"_sidebarTabsButton_legacy_Qp20k\";\nconst sidebarTabsButton_selected = \"_sidebarTabsButton_selected_eBHM-\";\nconst sidebarTabsButton__name = \"_sidebarTabsButton__name_YlW5S\";\nconst sidebarTabsButton__icon = \"_sidebarTabsButton__icon_MPS-D\";\nconst sidebarTabsButton__legacyIcon = \"_sidebarTabsButton__legacyIcon_rzPOu\";\nconst style0 = {\n  \"material-design-icon\": \"_material-design-icon_m4vbX\",\n  sidebarTabsButton,\n  sidebarTabsButton_legacy,\n  sidebarTabsButton_selected,\n  sidebarTabsButton__name,\n  sidebarTabsButton__icon,\n  sidebarTabsButton__legacyIcon\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__cssModules\", cssModules]]);\nconst _sfc_main$1 = {\n  name: \"NcAppSidebarTabs\",\n  components: {\n    NcAppSidebarTabsButton\n  },\n  provide() {\n    return {\n      registerTab: this.registerTab,\n      unregisterTab: this.unregisterTab,\n      // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n      getActiveTab: () => this.activeTab,\n      // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n      isTablistShown: () => this.hasMultipleTabs\n    };\n  },\n  props: {\n    /**\n     * Id of the tab to activate\n     */\n    active: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Force the tab navigation to display even if there is only one tab\n     */\n    forceTabs: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"update:active\"],\n  data(props) {\n    return {\n      /**\n       * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n       */\n      tabs: [],\n      /**\n       * Local active (open) tab's ID. It allows to use component without v-model:active\n       */\n      activeTab: props.active,\n      isLegacy34\n    };\n  },\n  computed: {\n    /**\n     * Has multiple tabs. If only one tab - its content is shown without navigation\n     *\n     * @return {boolean}\n     */\n    hasMultipleTabs() {\n      return this.tabs.length > 1;\n    },\n    showForSingleTab() {\n      return this.forceTabs && this.tabs.length === 1;\n    },\n    currentTabIndex() {\n      return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n    }\n  },\n  watch: {\n    tabs() {\n      if (this.active) {\n        this.updateActive();\n      }\n    },\n    active(active) {\n      if (active !== this.activeTab) {\n        this.updateActive();\n      }\n    }\n  },\n  methods: {\n    /**\n     * Set the current active tab\n     *\n     * @param {string} id the id of the tab\n     */\n    setActive(id) {\n      this.activeTab = id;\n      this.$emit(\"update:active\", this.activeTab);\n    },\n    /**\n     * Focus the previous tab\n     * and emit to the parent component\n     */\n    focusPreviousTab() {\n      if (this.currentTabIndex > 0) {\n        this.setActive(this.tabs[this.currentTabIndex - 1].id);\n      }\n      this.focusActiveTab();\n    },\n    /**\n     * Focus the next tab\n     * and emit to the parent component\n     */\n    focusNextTab() {\n      if (this.currentTabIndex < this.tabs.length - 1) {\n        this.setActive(this.tabs[this.currentTabIndex + 1].id);\n      }\n      this.focusActiveTab();\n    },\n    /**\n     * Focus the first tab\n     * and emit to the parent component\n     */\n    focusFirstTab() {\n      this.setActive(this.tabs[0].id);\n      this.focusActiveTab();\n    },\n    /**\n     * Focus the last tab\n     * and emit to the parent component\n     */\n    focusLastTab() {\n      this.setActive(this.tabs[this.tabs.length - 1].id);\n      this.focusActiveTab();\n    },\n    /**\n     * Focus the current active tab\n     */\n    focusActiveTab() {\n      this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n    },\n    /**\n     * Focus the content on tab\n     * see aria accessibility guidelines\n     */\n    focusActiveTabContent() {\n      this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n    },\n    /**\n     * Update the current active tab\n     */\n    updateActive() {\n      this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? \"\";\n    },\n    /**\n     * Register child tab in the tabs\n     *\n     * @param {object} tab child tab passed to slot\n     */\n    registerTab(tab) {\n      this.tabs.push(tab);\n      this.tabs.sort((a, b) => {\n        if (a.order === b.order) {\n          return a.name.localeCompare(b.name, [getCanonicalLocale()]);\n        }\n        return a.order - b.order;\n      });\n      this.updateActive();\n    },\n    /**\n     * Unregister child tab from the tabs\n     *\n     * @param {string} id tab's id\n     */\n    unregisterTab(id) {\n      const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n      if (tabIndex !== -1) {\n        this.tabs.splice(tabIndex, 1);\n      }\n      if (this.activeTab === id) {\n        this.updateActive();\n      }\n    }\n  }\n};\nconst _hoisted_1$1 = { class: \"app-sidebar-tabs\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcAppSidebarTabsButton = resolveComponent(\"NcAppSidebarTabsButton\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n    $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      role: \"tablist\",\n      class: normalizeClass([\"app-sidebar-tabs__nav\", { \"app-sidebar-tabs__nav--legacy\": $data.isLegacy34 }]),\n      onKeydown: [\n        _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.focusPreviousTab && $options.focusPreviousTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"left\"])),\n        _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.focusNextTab && $options.focusNextTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"right\"])),\n        _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.focusActiveTabContent && $options.focusActiveTabContent(...args), [\"exact\", \"prevent\", \"stop\"]), [\"tab\"])),\n        _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"home\"])),\n        _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"end\"])),\n        _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-up\"])),\n        _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-down\"]))\n      ]\n    }, [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {\n        return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {\n          id: `tab-button-${tab.id}`,\n          key: tab.id,\n          class: \"app-sidebar-tabs__tab\",\n          \"aria-controls\": `tab-${tab.id}`,\n          selected: $data.activeTab === tab.id,\n          tab,\n          \"onUpdate:selected\": ($event) => $options.setActive(tab.id)\n        }, null, 8, [\"id\", \"aria-controls\", \"selected\", \"tab\", \"onUpdate:selected\"]);\n      }), 128))\n    ], 34)) : createCommentVNode(\"\", true),\n    createElementVNode(\"div\", {\n      class: normalizeClass([\"app-sidebar-tabs__content\", { \"app-sidebar-tabs__content--multiple\": $options.hasMultipleTabs }])\n    }, [\n      renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n    ], 2)\n  ]);\n}\nconst NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-e74d1502\"]]);\nregister(t15);\nconst _sfc_main = {\n  name: \"NcAppSidebar\",\n  components: {\n    NcActions,\n    NcAppSidebarHeader: _sfc_main$7,\n    NcAppSidebarTabs,\n    NcButton,\n    NcLoadingIcon,\n    NcEmptyContent,\n    IconArrowRight,\n    IconClose,\n    IconDockRight,\n    IconStar,\n    IconStarOutline\n  },\n  directives: {\n    Focus: directive,\n    /** @type {import('vue').ObjectDirective} */\n    ClickOutside: vOnClickOutside\n  },\n  inject: {\n    ncContentSelector: {\n      from: CONTENT_SELECTOR_KEY,\n      default: void 0\n    }\n  },\n  props: {\n    /**\n     * The active tab\n     */\n    active: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Main text of the sidebar\n     */\n    name: {\n      type: String,\n      required: true\n    },\n    /**\n     * Allow to edit the sidebar name.\n     */\n    nameEditable: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Placeholder in the edit field if the name is editable.\n     */\n    namePlaceholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Secondary name of the sidebar (subline)\n     */\n    subname: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Title to display for the subname.\n     */\n    subtitle: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Url to the top header background image\n     * Applied with css\n     */\n    background: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Enable the favourite icon if not null\n     * See fired events\n     */\n    starred: {\n      type: Boolean,\n      default: null\n    },\n    /**\n     * Show loading spinner instead of the star icon\n     */\n    starLoading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Show loading spinner instead of tabs\n     */\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Display the sidebar in compact mode\n     */\n    compact: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Only display close button and default slot content.\n     * Don't display other header content and primary and secondary actions.\n     * Useful when showing the EmptyContent component as content.\n     */\n    empty: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Force the actions to display in a three dot menu\n     */\n    forceMenu: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Force the tab navigation to display even if there is only one tab\n     */\n    forceTabs: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Linkify the name\n     */\n    linkifyName: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Title to display for the name.\n     * Can be set to the same text in case it's too long.\n     */\n    title: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Allow to conditionally show the sidebar\n     * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n     * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n     *\n     * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n     * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n     */\n    open: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Custom classes to assign to the sidebar toggle button.\n     * If needed this can be used to assign styles to the button using `:deep()` selector.\n     */\n    toggleClasses: {\n      type: [String, Array, Object],\n      default: \"\"\n    },\n    /**\n     * Custom attrs to assign to the sidebar toggle button.\n     */\n    toggleAttrs: {\n      type: Object,\n      default: void 0\n    },\n    /**\n     * Do not add the built-in toggle button with `open` prop.\n     */\n    noToggle: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\n    \"close\",\n    \"closed\",\n    \"opened\",\n    // 'figureClick', not emitted on purpose to make \"hasFigureClickListener\" work\n    \"update:active\",\n    \"update:name\",\n    \"update:nameEditable\",\n    \"update:open\",\n    \"update:starred\",\n    \"submitName\",\n    \"dismissEditing\"\n  ],\n  setup() {\n    const headerRef = ref(null);\n    provide(\"NcAppSidebar:header:ref\", headerRef);\n    return {\n      uid: createElementId(),\n      isMobile: useIsSmallMobile(),\n      headerRef\n    };\n  },\n  data() {\n    return {\n      changeNameTranslated: t(\"Change name\"),\n      closeTranslated: t(\"Close sidebar\"),\n      favoriteTranslated: t(\"Favorite\"),\n      isStarred: this.starred,\n      focusTrap: null,\n      elementToReturnFocus: null\n    };\n  },\n  computed: {\n    canStar() {\n      return this.isStarred !== null;\n    },\n    hasFigureClickListener() {\n      return !!this.$attrs.onFigureClick;\n    }\n  },\n  watch: {\n    starred() {\n      this.isStarred = this.starred;\n    },\n    isMobile() {\n      this.toggleFocusTrap();\n    },\n    open() {\n      this.checkToggleButtonContainerAvailability();\n    }\n  },\n  created() {\n    this.preserveElementToReturnFocus();\n    this.checkToggleButtonContainerAvailability();\n  },\n  beforeUnmount() {\n    this.$emit(\"closed\");\n    this.focusTrap?.deactivate();\n  },\n  methods: {\n    isSlotPopulated,\n    t,\n    preserveElementToReturnFocus() {\n      if (document.activeElement && document.activeElement !== document.body) {\n        this.elementToReturnFocus = document.activeElement;\n        if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n          const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n          if (menu) {\n            const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n            this.elementToReturnFocus = menuTrigger;\n          }\n        }\n      }\n    },\n    initFocusTrap() {\n      if (this.focusTrap) {\n        return;\n      }\n      this.focusTrap = createFocusTrap([\n        // The sidebar itself\n        this.$refs.sidebar,\n        // Nextcloud Server header navigation\n        document.querySelector(\"#header\")\n      ], {\n        allowOutsideClick: true,\n        fallbackFocus: this.$refs.closeButton.$el,\n        trapStack: getTrapStack(),\n        escapeDeactivates: false\n      });\n    },\n    /**\n     * Activate focus trap if it is currently needed, otherwise deactivate\n     */\n    toggleFocusTrap() {\n      if (this.open && this.isMobile) {\n        this.initFocusTrap();\n        this.focusTrap.activate();\n      } else {\n        this.focusTrap?.deactivate();\n      }\n    },\n    /**\n     * Close the sidebar on pressing the escape key on mobile\n     *\n     * @param {KeyboardEvent} event key down event\n     */\n    onKeydownEsc(event) {\n      if (this.isMobile) {\n        event.stopPropagation();\n        this.closeSidebar();\n      }\n    },\n    onAfterEnter(element) {\n      if (this.elementToReturnFocus) {\n        this.focus();\n      }\n      this.toggleFocusTrap();\n      this.$emit(\"opened\", element);\n    },\n    onAfterLeave(element) {\n      this.$emit(\"closed\", element);\n      this.toggleFocusTrap();\n      this.elementToReturnFocus?.focus({ focusVisible: true });\n      this.elementToReturnFocus = null;\n    },\n    /**\n     * Used to tell parent component the user asked to close the sidebar\n     *\n     * @param {Event} e close icon click event\n     */\n    closeSidebar(e) {\n      this.$emit(\"close\", e);\n      this.$emit(\"update:open\", false);\n    },\n    /**\n     * Emit figure click event to parent component\n     *\n     * @param {Event} e click event\n     */\n    onFigureClick(e) {\n      this.$emit(\"figureClick\", e);\n    },\n    /**\n     * Toggle the favourite state\n     * and emit to the parent component\n     */\n    toggleStarred() {\n      this.isStarred = !this.isStarred;\n      this.$emit(\"update:starred\", this.isStarred);\n    },\n    async editName() {\n      this.$emit(\"update:nameEditable\", true);\n      if (this.nameEditable) {\n        await this.$nextTick();\n        this.$refs.nameInput.focus();\n      }\n    },\n    /**\n     * Focus the sidebar\n     *\n     * @public\n     */\n    focus() {\n      if (!this.open && !this.noToggle) {\n        this.$refs.toggle.$el.focus();\n        return;\n      }\n      try {\n        this.headerRef.focus();\n      } catch {\n        warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n      }\n    },\n    /**\n     * Focus the active tab\n     *\n     * @public\n     */\n    focusActiveTabContent() {\n      this.preserveElementToReturnFocus();\n      this.$refs.tabs.focusActiveTabContent();\n    },\n    /**\n     * Check if the toggle button container is available\n     */\n    checkToggleButtonContainerAvailability() {\n      if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n        logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n      }\n    },\n    /**\n     * Emit name change event to parent component\n     *\n     * @param {Event} event input event\n     */\n    onNameInput(event) {\n      this.$emit(\"update:name\", event.target.value);\n    },\n    /**\n     * Emit when the name form edit confirm button is pressed in order\n     * to change the name.\n     *\n     * @param {Event} event submit event\n     */\n    onSubmitName(event) {\n      this.$emit(\"update:nameEditable\", false);\n      this.$emit(\"submitName\", event);\n    },\n    onDismissEditing() {\n      this.$emit(\"update:nameEditable\", false);\n      this.$emit(\"dismissEditing\");\n    },\n    onUpdateActive(activeTab) {\n      this.$emit(\"update:active\", activeTab);\n    }\n  }\n};\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = { class: \"app-sidebar-header__info\" };\nconst _hoisted_3 = {\n  key: 0,\n  class: \"app-sidebar-header__tertiary-actions\"\n};\nconst _hoisted_4 = { class: \"app-sidebar-header__name-container\" };\nconst _hoisted_5 = { class: \"app-sidebar-header__mainname-container\" };\nconst _hoisted_6 = [\"placeholder\", \"value\"];\nconst _hoisted_7 = [\"title\"];\nconst _hoisted_8 = {\n  key: 2,\n  class: \"app-sidebar-header__description\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_IconDockRight = resolveComponent(\"IconDockRight\");\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n  const _component_IconStar = resolveComponent(\"IconStar\");\n  const _component_IconStarOutline = resolveComponent(\"IconStarOutline\");\n  const _component_NcAppSidebarHeader = resolveComponent(\"NcAppSidebarHeader\");\n  const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n  const _component_NcActions = resolveComponent(\"NcActions\");\n  const _component_IconClose = resolveComponent(\"IconClose\");\n  const _component_NcAppSidebarTabs = resolveComponent(\"NcAppSidebarTabs\");\n  const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n  const _directive_focus = resolveDirective(\"focus\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createBlock(Transition, {\n    appear: \"\",\n    name: \"slide-right\",\n    onAfterEnter: $options.onAfterEnter,\n    onAfterLeave: $options.onAfterLeave\n  }, {\n    default: withCtx(() => [\n      withDirectives(createElementVNode(\"aside\", {\n        id: \"app-sidebar-vue\",\n        ref: \"sidebar\",\n        class: \"app-sidebar\",\n        \"aria-labelledby\": `app-sidebar-vue-${$setup.uid}__header`,\n        onKeydown: _cache[6] || (_cache[6] = withKeys((...args) => $options.onKeydownEsc && $options.onKeydownEsc(...args), [\"esc\"]))\n      }, [\n        $options.ncContentSelector && !$props.open && !$props.noToggle ? (openBlock(), createBlock(Teleport, {\n          key: 0,\n          to: $options.ncContentSelector\n        }, [\n          createVNode(_component_NcButton, mergeProps({\n            ref: \"toggle\",\n            \"aria-label\": $options.t(\"Open sidebar\"),\n            class: [\"app-sidebar__toggle\", $props.toggleClasses],\n            variant: \"tertiary\"\n          }, $props.toggleAttrs, {\n            onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:open\", true))\n          }), {\n            icon: withCtx(() => [\n              renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n                createVNode(_component_IconDockRight, { size: 20 })\n              ], true)\n            ]),\n            _: 3\n          }, 16, [\"aria-label\", \"class\"])\n        ], 8, [\"to\"])) : createCommentVNode(\"\", true),\n        createElementVNode(\"header\", {\n          class: normalizeClass([\"app-sidebar-header\", {\n            \"app-sidebar-header--with-figure\": $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background,\n            \"app-sidebar-header--compact\": $props.compact\n          }])\n        }, [\n          !$props.empty ? renderSlot(_ctx.$slots, \"info\", { key: 0 }, () => [\n            createElementVNode(\"div\", _hoisted_2, [\n              $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: normalizeClass([\"app-sidebar-header__figure\", {\n                  \"app-sidebar-header__figure--with-action\": $options.hasFigureClickListener\n                }]),\n                style: normalizeStyle({\n                  backgroundImage: `url(${$props.background})`\n                }),\n                tabindex: \"0\",\n                onClick: _cache[1] || (_cache[1] = (...args) => $options.onFigureClick && $options.onFigureClick(...args)),\n                onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => $options.onFigureClick && $options.onFigureClick(...args), [\"enter\"]))\n              }, [\n                renderSlot(_ctx.$slots, \"header\", { class: \"app-sidebar-header__background\" }, void 0, true)\n              ], 38)) : createCommentVNode(\"\", true),\n              createElementVNode(\"div\", {\n                class: normalizeClass([\"app-sidebar-header__desc\", {\n                  \"app-sidebar-header__desc--with-tertiary-action\": $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()),\n                  \"app-sidebar-header__desc--editable\": $props.nameEditable && !$props.subname,\n                  \"app-sidebar-header__desc--with-subname--editable\": $props.nameEditable && $props.subname,\n                  \"app-sidebar-header__desc--without-actions\": !$options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.())\n                }])\n              }, [\n                $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()) ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n                  renderSlot(_ctx.$slots, \"tertiary-actions\", {}, () => [\n                    $options.canStar ? (openBlock(), createBlock(_component_NcButton, {\n                      key: 0,\n                      \"aria-label\": $data.favoriteTranslated,\n                      pressed: $data.isStarred,\n                      class: \"app-sidebar-header__star\",\n                      variant: \"secondary\",\n                      onClick: withModifiers($options.toggleStarred, [\"prevent\"])\n                    }, {\n                      icon: withCtx(() => [\n                        $props.starLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : $data.isStarred ? (openBlock(), createBlock(_component_IconStar, {\n                          key: 1,\n                          size: 20\n                        })) : (openBlock(), createBlock(_component_IconStarOutline, {\n                          key: 2,\n                          size: 20\n                        }))\n                      ]),\n                      _: 1\n                    }, 8, [\"aria-label\", \"pressed\", \"onClick\"])) : createCommentVNode(\"\", true)\n                  ], true)\n                ])) : createCommentVNode(\"\", true),\n                createElementVNode(\"div\", _hoisted_4, [\n                  createElementVNode(\"div\", _hoisted_5, [\n                    withDirectives(createVNode(_component_NcAppSidebarHeader, {\n                      class: \"app-sidebar-header__mainname\",\n                      name: $props.name,\n                      linkify: $props.linkifyName,\n                      title: $props.title,\n                      tabindex: $props.nameEditable ? 0 : -1,\n                      onClick: withModifiers($options.editName, [\"self\"])\n                    }, null, 8, [\"name\", \"linkify\", \"title\", \"tabindex\", \"onClick\"]), [\n                      [vShow, !$props.nameEditable]\n                    ]),\n                    $props.nameEditable ? withDirectives((openBlock(), createElementBlock(\"form\", {\n                      key: 0,\n                      class: \"app-sidebar-header__mainname-form\",\n                      onSubmit: _cache[5] || (_cache[5] = withModifiers((...args) => $options.onSubmitName && $options.onSubmitName(...args), [\"prevent\"]))\n                    }, [\n                      withDirectives(createElementVNode(\"input\", {\n                        ref: \"nameInput\",\n                        class: \"app-sidebar-header__mainname-input\",\n                        type: \"text\",\n                        placeholder: $props.namePlaceholder,\n                        value: $props.name,\n                        onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.onDismissEditing && $options.onDismissEditing(...args), [\"stop\"]), [\"esc\"])),\n                        onInput: _cache[4] || (_cache[4] = (...args) => $options.onNameInput && $options.onNameInput(...args))\n                      }, null, 40, _hoisted_6), [\n                        [_directive_focus]\n                      ]),\n                      createVNode(_component_NcButton, {\n                        \"aria-label\": $data.changeNameTranslated,\n                        type: \"submit\",\n                        variant: \"tertiary-no-background\"\n                      }, {\n                        icon: withCtx(() => [\n                          createVNode(_component_IconArrowRight, { size: 20 })\n                        ]),\n                        _: 1\n                      }, 8, [\"aria-label\"])\n                    ], 32)), [\n                      [_directive_click_outside, () => $options.onSubmitName()]\n                    ]) : createCommentVNode(\"\", true),\n                    $options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.()) ? (openBlock(), createBlock(_component_NcActions, {\n                      key: 1,\n                      class: \"app-sidebar-header__menu\",\n                      forceMenu: $props.forceMenu\n                    }, {\n                      default: withCtx(() => [\n                        renderSlot(_ctx.$slots, \"secondary-actions\", {}, void 0, true)\n                      ]),\n                      _: 3\n                    }, 8, [\"forceMenu\"])) : createCommentVNode(\"\", true)\n                  ]),\n                  $props.subname.trim() !== \"\" || _ctx.$slots[\"subname\"] ? (openBlock(), createElementBlock(\"p\", {\n                    key: 0,\n                    title: $props.subtitle || void 0,\n                    class: \"app-sidebar-header__subname\"\n                  }, [\n                    renderSlot(_ctx.$slots, \"subname\", {}, () => [\n                      createTextVNode(toDisplayString($props.subname), 1)\n                    ], true)\n                  ], 8, _hoisted_7)) : createCommentVNode(\"\", true)\n                ])\n              ], 2)\n            ])\n          ], true) : (openBlock(), createBlock(_component_NcAppSidebarHeader, {\n            key: 1,\n            class: \"app-sidebar-header__mainname--hidden\",\n            name: $props.name,\n            tabindex: \"-1\"\n          }, null, 8, [\"name\"])),\n          createVNode(_component_NcButton, {\n            ref: \"closeButton\",\n            \"aria-label\": $data.closeTranslated,\n            title: $data.closeTranslated,\n            class: \"app-sidebar__close\",\n            variant: \"tertiary\",\n            onClick: withModifiers($options.closeSidebar, [\"prevent\"])\n          }, {\n            icon: withCtx(() => [\n              createVNode(_component_IconClose, { size: 20 })\n            ]),\n            _: 1\n          }, 8, [\"aria-label\", \"title\", \"onClick\"]),\n          $options.isSlotPopulated(_ctx.$slots.description?.()) && !$props.empty ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n            renderSlot(_ctx.$slots, \"description\", {}, void 0, true)\n          ])) : createCommentVNode(\"\", true)\n        ], 2),\n        withDirectives(createVNode(_component_NcAppSidebarTabs, {\n          ref: \"tabs\",\n          active: $props.active,\n          forceTabs: $props.forceTabs,\n          \"onUpdate:active\": $options.onUpdateActive\n        }, {\n          default: withCtx(() => [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ]),\n          _: 3\n        }, 8, [\"active\", \"forceTabs\", \"onUpdate:active\"]), [\n          [vShow, !$props.loading]\n        ]),\n        $props.loading ? (openBlock(), createBlock(_component_NcEmptyContent, { key: 1 }, {\n          icon: withCtx(() => [\n            createVNode(_component_NcLoadingIcon, { size: 64 })\n          ]),\n          _: 1\n        })) : createCommentVNode(\"\", true)\n      ], 40, _hoisted_1), [\n        [vShow, $props.open]\n      ])\n    ]),\n    _: 3\n  }, 8, [\"onAfterEnter\", \"onAfterLeave\"]);\n}\nconst NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e8979b7f\"]]);\nexport {\n  NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-CV2t1fDr.mjs.map\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n  const { resolve, promise } = Promise.withResolvers();\n  queue.add(() => {\n    const image = new Image();\n    image.onerror = () => resolve(false);\n    image.onload = () => resolve(true);\n    image.src = url;\n    return promise;\n  });\n  return promise;\n}\nexport {\n  preloadImage\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcCollectionList-e5JFvzqX.css';\nimport debounce from \"debounce\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, withModifiers, normalizeClass, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, ref } from \"vue\";\nimport { r as register, L as t28, a as t, M as t6 } from \"./_l10n-BCg4udFv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BJKJG2zO.mjs\";\nimport { N as NcActions } from \"./NcActions-fCXSb_0o.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-QYahYt2p.mjs\";\nimport { g as getRoute } from \"./autolink-_k1FETYm.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DK4ZWMha.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n  name: \"NcCollectionListItem\",\n  components: {\n    NcAvatar,\n    NcActions,\n    NcActionButton\n  },\n  props: {\n    /**\n     * The collection\n     */\n    collection: {\n      type: Object,\n      default: null\n    },\n    /**\n     * Current error if any\n     */\n    error: {\n      type: String,\n      default: void 0\n    }\n  },\n  emits: [\n    \"removeResource\",\n    \"renameCollection\"\n  ],\n  data() {\n    return {\n      detailsOpen: false,\n      newName: null\n    };\n  },\n  computed: {\n    getIcon() {\n      return (resource) => [resource.iconClass];\n    },\n    typeClass() {\n      return (resource) => \"resource-type-\" + resource.type;\n    },\n    resources() {\n      return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n    },\n    getComponent() {\n      return (resource) => {\n        const route = getRoute(this.$router, resource.link);\n        return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n      };\n    },\n    iconUrl() {\n      return (resource) => {\n        if (resource.mimetype) {\n          return OC.MimeType.getIconUrl(resource.mimetype);\n        }\n        if (resource.iconUrl) {\n          return resource.iconUrl;\n        }\n        return \"\";\n      };\n    }\n  },\n  methods: {\n    t,\n    toggleDetails() {\n      this.detailsOpen = !this.detailsOpen;\n    },\n    showDetails() {\n      this.detailsOpen = true;\n    },\n    removeResource(collection, resource) {\n      this.$emit(\"removeResource\", {\n        collectionId: collection.id,\n        resourceType: resource.type,\n        resourceId: resource.id\n      });\n    },\n    openRename() {\n      this.newName = this.collection.name;\n    },\n    renameCollection() {\n      if (this.newName) {\n        this.$emit(\"renameCollection\", {\n          collectionId: this.collection.id,\n          name: this.newName\n        });\n      }\n      this.newName = null;\n    }\n  }\n};\nconst _hoisted_1$1 = { class: \"collection-list-item\" };\nconst _hoisted_2$1 = {\n  key: 2,\n  class: \"linked-icons\"\n};\nconst _hoisted_3$1 = [\"src\", \"alt\"];\nconst _hoisted_4$1 = {\n  key: 3,\n  class: \"sharingOptionsGroup\"\n};\nconst _hoisted_5$1 = {\n  key: 0,\n  class: \"error\"\n};\nconst _hoisted_6$1 = {\n  key: 0,\n  class: \"resource-list-details\"\n};\nconst _hoisted_7$1 = [\"src\", \"alt\"];\nconst _hoisted_8$1 = { class: \"resource-name\" };\nconst _hoisted_9 = [\"onClick\"];\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n  const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n  const _component_NcActions = resolveComponent(\"NcActions\");\n  return openBlock(), createElementBlock(\"li\", _hoisted_1$1, [\n    createVNode(_component_NcAvatar, {\n      displayName: $props.collection.name,\n      allowPlaceholder: \"\",\n      class: \"collection-avatar\"\n    }, null, 8, [\"displayName\"]),\n    $data.newName === null ? (openBlock(), createElementBlock(\"span\", {\n      key: 0,\n      class: \"collection-item-name\",\n      title: \"\",\n      onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))\n    }, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock(\"form\", {\n      key: 1,\n      class: normalizeClass({ \"should-shake\": $props.error }),\n      onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), [\"prevent\"]))\n    }, [\n      withDirectives(createElementVNode(\"input\", {\n        \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),\n        type: \"text\",\n        autocomplete: \"off\",\n        autocapitalize: \"off\"\n      }, null, 512), [\n        [vModelText, $data.newName]\n      ]),\n      _cache[3] || (_cache[3] = createElementVNode(\"input\", {\n        type: \"submit\",\n        value: \"\",\n        class: \"icon-confirm\"\n      }, null, -1))\n    ], 34)),\n    !$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock(\"div\", _hoisted_2$1, [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {\n        return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n          key: resource.type + \"|\" + resource.id,\n          title: resource.name,\n          to: $options.getComponent(resource).to,\n          href: $options.getComponent(resource).href,\n          class: normalizeClass($options.typeClass(resource))\n        }, {\n          default: withCtx(() => [\n            createElementVNode(\"img\", {\n              src: $options.iconUrl(resource),\n              alt: resource.name\n            }, null, 8, _hoisted_3$1)\n          ]),\n          _: 2\n        }, 1032, [\"title\", \"to\", \"href\", \"class\"]);\n      }), 128))\n    ])) : createCommentVNode(\"\", true),\n    $data.newName === null ? (openBlock(), createElementBlock(\"span\", _hoisted_4$1, [\n      createVNode(_component_NcActions, null, {\n        default: withCtx(() => [\n          createVNode(_component_NcActionButton, {\n            icon: \"icon-info\",\n            onClick: withModifiers($options.toggleDetails, [\"prevent\"])\n          }, {\n            default: withCtx(() => [\n              createTextVNode(toDisplayString($data.detailsOpen ? $options.t(\"Hide details\") : $options.t(\"Show details\")), 1)\n            ]),\n            _: 1\n          }, 8, [\"onClick\"]),\n          createVNode(_component_NcActionButton, {\n            icon: \"icon-rename\",\n            onClick: withModifiers($options.openRename, [\"prevent\"])\n          }, {\n            default: withCtx(() => [\n              createTextVNode(toDisplayString($options.t(\"Rename project\")), 1)\n            ]),\n            _: 1\n          }, 8, [\"onClick\"])\n        ]),\n        _: 1\n      })\n    ])) : createCommentVNode(\"\", true),\n    createVNode(Transition, { name: \"fade\" }, {\n      default: withCtx(() => [\n        $props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, toDisplayString($props.error), 1)) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }),\n    createVNode(Transition, { name: \"fade\" }, {\n      default: withCtx(() => [\n        $data.detailsOpen ? (openBlock(), createElementBlock(\"ul\", _hoisted_6$1, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {\n            return openBlock(), createElementBlock(\"li\", {\n              key: resource.type + \"|\" + resource.id,\n              class: normalizeClass($options.typeClass(resource))\n            }, [\n              (openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n                to: $options.getComponent(resource).to,\n                href: $options.getComponent(resource).href\n              }, {\n                default: withCtx(() => [\n                  createElementVNode(\"img\", {\n                    src: $options.iconUrl(resource),\n                    alt: resource.name\n                  }, null, 8, _hoisted_7$1),\n                  createElementVNode(\"span\", _hoisted_8$1, toDisplayString(resource.name || \"\"), 1)\n                ]),\n                _: 2\n              }, 1032, [\"to\", \"href\"])),\n              createElementVNode(\"span\", {\n                class: \"icon-close\",\n                onClick: ($event) => $options.removeResource($props.collection, resource)\n              }, null, 8, _hoisted_9)\n            ], 2);\n          }), 128))\n        ])) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    })\n  ]);\n}\nconst NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-8ebb9fc1\"]]);\nregister(t6);\nfunction extractOcsData(response) {\n  return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n  return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n  return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n  return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n  return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n  return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n  return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n  const storedCollections = ref([]);\n  const addCollections = (collections) => {\n    storedCollections.value = collections;\n  };\n  const addCollection = (collection) => {\n    storedCollections.value.push(collection);\n  };\n  const removeCollection = (collectionId) => {\n    storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);\n  };\n  const updateCollection = (collection) => {\n    const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n    if (index !== -1) {\n      storedCollections.value[index] = collection;\n    } else {\n      addCollection(collection);\n    }\n  };\n  const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n    const collections = await getCollectionsByResourceService(resourceType, resourceId);\n    addCollections(collections);\n  };\n  const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n    const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n    addCollection(collection);\n    await addResourceToCollection({\n      collectionId: collection.id,\n      resourceType,\n      resourceId\n    });\n  };\n  const renameCollection = async ({ collectionId, name }) => {\n    const collection = await renameCollectionService(collectionId, name);\n    updateCollection(collection);\n  };\n  async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n    const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n    updateCollection(collection);\n  }\n  const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n    const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n    if (collection.resources.length > 0) {\n      updateCollection(collection);\n    } else {\n      removeCollection(collectionId);\n    }\n  };\n  return {\n    storedCollections,\n    fetchCollectionsByResource,\n    createCollection,\n    renameCollection,\n    addResourceToCollection,\n    removeResourceFromCollection\n  };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n  name: \"NcCollectionList\",\n  components: {\n    NcCollectionListItem,\n    NcAvatar,\n    NcSelect\n  },\n  props: {\n    /**\n     * Resource type identifier\n     */\n    type: {\n      type: String,\n      default: null\n    },\n    /**\n     * Unique id of the resource\n     */\n    id: {\n      type: String,\n      default: null\n    },\n    /**\n     * Name of the resource\n     */\n    name: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Whether the component is active (to start fetch resources)\n     */\n    isActive: {\n      type: Boolean,\n      default: true\n    }\n  },\n  setup() {\n    const {\n      storedCollections,\n      fetchCollectionsByResource,\n      createCollection,\n      addResourceToCollection,\n      removeResourceFromCollection,\n      renameCollection\n    } = useCollections();\n    const searchCollections = ref([]);\n    const search = debounce(function(query, loading) {\n      if (query !== \"\") {\n        loading(true);\n        searchService(query).then((collections) => {\n          searchCollections.value = collections;\n        }).catch((error) => {\n          logger.error(\"Failed to search for collections\", { error });\n        }).finally(() => {\n          loading(false);\n        });\n      }\n    }, 500);\n    return {\n      storedCollections,\n      fetchCollectionsByResource,\n      createCollection,\n      addResourceToCollection,\n      removeResourceFromCollection,\n      renameCollection,\n      searchCollections,\n      search\n    };\n  },\n  data() {\n    return {\n      selectIsOpen: false,\n      generatingCodes: false,\n      codes: void 0,\n      value: null,\n      model: {},\n      collectionsError: {},\n      error: null,\n      isSelectOpen: false\n    };\n  },\n  computed: {\n    collections() {\n      return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n    },\n    placeholder() {\n      return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n    },\n    options() {\n      const options = [];\n      window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n        options.push({\n          method: METHOD_CREATE_COLLECTION,\n          type,\n          title: window.OCP.Collaboration.getLabel(type),\n          class: window.OCP.Collaboration.getIcon(type),\n          action: () => window.OCP.Collaboration.trigger(type)\n        });\n      });\n      for (const index in this.searchCollections) {\n        if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n          options.push({\n            method: METHOD_ADD_TO_COLLECTION,\n            title: this.searchCollections[index].name,\n            collectionId: this.searchCollections[index].id\n          });\n        }\n      }\n      return options;\n    },\n    resourceIdentifier() {\n      return {\n        resourceType: this.type,\n        resourceId: this.id,\n        isActive: this.isActive\n      };\n    }\n  },\n  watch: {\n    resourceIdentifier: {\n      deep: true,\n      immediate: true,\n      handler(resourceIdentifier) {\n        if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n          return;\n        }\n        this.fetchCollectionsByResource(resourceIdentifier);\n      }\n    }\n  },\n  methods: {\n    t,\n    select(selectedOption) {\n      if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n        selectedOption.action().then((resourceId) => {\n          this.createCollection({\n            baseResourceType: this.type,\n            baseResourceId: this.id,\n            resourceType: selectedOption.type,\n            resourceId,\n            name: this.name\n          }).catch((e) => {\n            this.setError(t(\"Failed to create a project\"), e);\n          });\n        }).catch((e) => {\n          logger.error(\"[NcCollectionList] No resource selected\", e);\n        });\n      }\n      if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n        this.addResourceToCollection({\n          collectionId: selectedOption.collectionId,\n          resourceType: this.type,\n          resourceId: this.id\n        }).catch((e) => {\n          this.setError(t(\"Failed to add the item to the project\"), e);\n        });\n      }\n      this.value = null;\n    },\n    showSelect() {\n      this.selectIsOpen = true;\n      this.$refs.select.$el.focus();\n    },\n    setError(error, e) {\n      logger.error(error, { error: e });\n      this.error = error;\n      setTimeout(() => {\n        this.error = null;\n      }, 5e3);\n    },\n    renameCollectionFromItem({ collectionId, name }) {\n      this.renameCollection({ collectionId, name }).catch((e) => {\n        logger.error(t(\"Failed to rename the project\"), { error: e });\n        this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n        setTimeout(() => {\n          this.collectionsError[collectionId] = null;\n        }, 5e3);\n      });\n    }\n  }\n};\nconst _hoisted_1 = {\n  key: 0,\n  id: \"collection-list\",\n  class: \"collection-list\"\n};\nconst _hoisted_2 = { id: \"collection-select-container\" };\nconst _hoisted_3 = { class: \"option__desc\" };\nconst _hoisted_4 = { class: \"option__title\" };\nconst _hoisted_5 = { class: \"option__wrapper\" };\nconst _hoisted_6 = { class: \"option__title\" };\nconst _hoisted_7 = { class: \"hint\" };\nconst _hoisted_8 = {\n  key: 0,\n  class: \"error\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n  const _component_NcSelect = resolveComponent(\"NcSelect\");\n  const _component_NcCollectionListItem = resolveComponent(\"NcCollectionListItem\");\n  return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n    createElementVNode(\"li\", {\n      onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))\n    }, [\n      _cache[4] || (_cache[4] = createElementVNode(\"div\", { class: \"avatar\" }, [\n        createElementVNode(\"span\", { class: \"icon-projects\" })\n      ], -1)),\n      createElementVNode(\"div\", _hoisted_2, [\n        createVNode(_component_NcSelect, {\n          ref: \"select\",\n          modelValue: $data.value,\n          \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.value = $event),\n          \"aria-label-combobox\": $options.t(\"Add to a project\"),\n          options: $options.options,\n          placeholder: $options.placeholder,\n          label: \"title\",\n          limit: 5,\n          onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),\n          onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),\n          \"onOption:selected\": $options.select,\n          onSearch: $setup.search\n        }, {\n          \"selected-option\": withCtx((option) => [\n            createElementVNode(\"span\", _hoisted_3, [\n              createElementVNode(\"span\", _hoisted_4, toDisplayString(option.title), 1)\n            ])\n          ]),\n          option: withCtx((option) => [\n            createElementVNode(\"span\", _hoisted_5, [\n              option.class ? (openBlock(), createElementBlock(\"span\", {\n                key: 0,\n                class: normalizeClass([option.class, \"avatar\"])\n              }, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {\n                key: 1,\n                allowPlaceholder: \"\",\n                displayName: option.title\n              }, null, 8, [\"displayName\"])) : createCommentVNode(\"\", true),\n              createElementVNode(\"span\", _hoisted_6, toDisplayString(option.title), 1)\n            ])\n          ]),\n          default: withCtx(() => [\n            createElementVNode(\"p\", _hoisted_7, toDisplayString($options.t(\"Connect items to a project to make them easier to find\")), 1)\n          ]),\n          _: 1\n        }, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"onOption:selected\", \"onSearch\"])\n      ])\n    ]),\n    createVNode(Transition, { name: \"fade\" }, {\n      default: withCtx(() => [\n        $data.error ? (openBlock(), createElementBlock(\"li\", _hoisted_8, toDisplayString($data.error), 1)) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }),\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {\n      return openBlock(), createBlock(_component_NcCollectionListItem, {\n        key: collection.id,\n        collection,\n        error: $data.collectionsError[collection.id],\n        onRenameCollection: $options.renameCollectionFromItem,\n        onRemoveResource: $setup.removeResourceFromCollection\n      }, null, 8, [\"collection\", \"error\", \"onRenameCollection\", \"onRemoveResource\"]);\n    }), 128))\n  ])) : createCommentVNode(\"\", true);\n}\nconst NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0e169eff\"]]);\nexport {\n  NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-CU1Tigay.mjs.map\n","import '../assets/NcDashboardWidget-nZuIL1UN.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, renderSlot, createVNode, Fragment, renderList, toHandlers } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, z as t35, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-QYahYt2p.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-DJ820dYQ.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent--TRhmNAW.mjs\";\nconst _sfc_main$1 = {\n  name: \"CheckIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon check-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$1))\n  ], 16, _hoisted_1$1);\n}\nconst Check = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t35);\nconst _sfc_main = {\n  name: \"NcDashboardWidget\",\n  components: {\n    NcAvatar,\n    NcDashboardWidgetItem,\n    NcEmptyContent,\n    Check\n  },\n  props: {\n    /**\n     * An array containing the items to show (specific structure must be respected,\n     * except if you override item rendering in the default slot).\n     */\n    items: {\n      type: Array,\n      default: () => {\n        return [];\n      }\n    },\n    /**\n     * If this is set, a \"show more\" text is displayed on the widget's bottom.\n     * It's a link pointing to this URL.\n     */\n    showMoreUrl: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The text of show more button.\n     *\n     * Expected to be in the form \"More {itemName} …\"\n     */\n    showMoreLabel: {\n      type: String,\n      default: t(\"More items …\")\n    },\n    /**\n     * A boolean to put the widget in a loading state.\n     */\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * An object containing context menu entries that will be displayed for each item.\n     */\n    itemMenu: {\n      type: Object,\n      default: () => {\n        return {};\n      }\n    },\n    /**\n     * Whether both the items and the empty content message are shown.\n     * Usefull for e.g. showing \"No mentions\" and a list of elements.\n     */\n    showItemsAndEmptyContent: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * The text to show in the empty content area.\n     */\n    emptyContentMessage: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The text to show in the half empty content area.\n     */\n    halfEmptyContentMessage: {\n      type: String,\n      default: \"\"\n    }\n  },\n  computed: {\n    // forward menu events to my parent\n    handlers() {\n      const h = {};\n      for (const evName in this.itemMenu) {\n        h[evName] = (it) => {\n          this.$emit(evName, it);\n        };\n      }\n      return h;\n    },\n    displayedItems() {\n      const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n      return this.items.slice(0, nbItems);\n    },\n    showHalfEmptyContentArea() {\n      return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n    },\n    halfEmptyContentString() {\n      return this.halfEmptyContentMessage || this.emptyContentMessage;\n    },\n    maxItemNumber() {\n      return this.showItemsAndEmptyContent ? 5 : 7;\n    },\n    showMore() {\n      return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n    }\n  }\n};\nconst _hoisted_1 = { class: \"dashboard-widget\" };\nconst _hoisted_2 = { key: 1 };\nconst _hoisted_3 = [\"href\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_Check = resolveComponent(\"Check\");\n  const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n  const _component_NcDashboardWidgetItem = resolveComponent(\"NcDashboardWidgetItem\");\n  const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n    $options.showHalfEmptyContentArea ? (openBlock(), createBlock(_component_NcEmptyContent, {\n      key: 0,\n      description: $options.halfEmptyContentString,\n      class: \"half-screen\"\n    }, {\n      icon: withCtx(() => [\n        renderSlot(_ctx.$slots, \"halfEmptyContentIcon\", {}, () => [\n          createVNode(_component_Check)\n        ], true)\n      ]),\n      _: 3\n    }, 8, [\"description\"])) : createCommentVNode(\"\", true),\n    createElementVNode(\"ul\", null, [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedItems, (item) => {\n        return openBlock(), createElementBlock(\"li\", {\n          key: item.id\n        }, [\n          renderSlot(_ctx.$slots, \"default\", { item }, () => [\n            createVNode(_component_NcDashboardWidgetItem, mergeProps({ ref_for: true }, item, { itemMenu: $props.itemMenu }, toHandlers($options.handlers)), null, 16, [\"itemMenu\"])\n          ], true)\n        ]);\n      }), 128))\n    ]),\n    $props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n      (openBlock(), createElementBlock(Fragment, null, renderList(7, (i) => {\n        return createElementVNode(\"div\", {\n          key: i,\n          class: \"item-list__entry\"\n        }, [\n          createVNode(_component_NcAvatar, {\n            class: \"item-avatar\",\n            size: 44\n          }),\n          _cache[0] || (_cache[0] = createElementVNode(\"div\", { class: \"item__details\" }, [\n            createElementVNode(\"h3\", null, \" \"),\n            createElementVNode(\"p\", { class: \"message\" }, \"   \")\n          ], -1))\n        ]);\n      }), 64))\n    ])) : $props.items.length === 0 ? renderSlot(_ctx.$slots, \"empty-content\", { key: 2 }, () => [\n      $props.emptyContentMessage ? (openBlock(), createBlock(_component_NcEmptyContent, {\n        key: 0,\n        description: $props.emptyContentMessage\n      }, {\n        icon: withCtx(() => [\n          renderSlot(_ctx.$slots, \"emptyContentIcon\", {}, void 0, true)\n        ]),\n        _: 3\n      }, 8, [\"description\"])) : createCommentVNode(\"\", true)\n    ], true) : $options.showMore ? (openBlock(), createElementBlock(\"a\", {\n      key: 3,\n      href: $props.showMoreUrl,\n      target: \"_blank\",\n      class: \"more\",\n      tabindex: \"0\"\n    }, toDisplayString($props.showMoreLabel), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n  ]);\n}\nconst NcDashboardWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-8dabc003\"]]);\nexport {\n  NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-CPI2VARK.mjs.map\n","import '../assets/NcFilePicker-CimiKIH1.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, computed, normalizeClass, createVNode, withCtx, createBlock, createTextVNode, unref, Fragment, renderList, renderSlot, nextTick } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BJKJG2zO.mjs\";\nimport { N as NcActionCaption } from \"./NcActionCaption-f7L9gBlT.mjs\";\nimport { N as NcActions } from \"./NcActions-fCXSb_0o.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst _sfc_main$3 = {\n  name: \"FolderUploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon folder-upload-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$2, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$2))\n  ], 16, _hoisted_1$3);\n}\nconst IconFolderUpload = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n  name: \"PlusIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon plus-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$1))\n  ], 16, _hoisted_1$2);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n  name: \"UploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon upload-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2))\n  ], 16, _hoisted_1$1);\n}\nconst IconUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst gtBuilder = getGettextBuilder().detectLanguage();\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst _hoisted_1 = [\"accept\", \"multiple\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcFilePicker\",\n  props: {\n    accept: { default: void 0 },\n    actionCaption: { default: \"\" },\n    actions: { default: () => [] },\n    directory: { type: Boolean },\n    directoryOnly: { type: Boolean },\n    disabled: { type: Boolean },\n    iconOnly: { type: Boolean },\n    label: { default: void 0 },\n    loading: { type: Boolean },\n    multiple: { type: Boolean },\n    variant: { default: \"primary\" }\n  },\n  emits: [\"pick\"],\n  setup(__props, { expose: __expose, emit: __emit }) {\n    const props = __props;\n    const emit = __emit;\n    __expose({\n      reset\n    });\n    const formElement = useTemplateRef(\"form\");\n    const inputElement = useTemplateRef(\"input\");\n    const currentLabel = computed(() => {\n      if (props.loading) {\n        return t(\"Uploading …\");\n      } else if (props.label) {\n        return props.label;\n      } else if (props.directoryOnly) {\n        return t(\"Pick folder\");\n      }\n      return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n    });\n    const canUploadFolders = computed(() => {\n      return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n    });\n    function triggerPickFiles(uploadFolders) {\n      reset();\n      if (canUploadFolders.value) {\n        inputElement.value.webkitdirectory = uploadFolders;\n      }\n      nextTick(() => inputElement.value.click());\n    }\n    function onPick() {\n      const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n      emit(\"pick\", files);\n    }\n    function reset() {\n      formElement.value.reset();\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"form\", {\n        ref: \"form\",\n        class: normalizeClass(_ctx.$style.filePicker)\n      }, [\n        createVNode(NcActions, {\n          \"aria-label\": currentLabel.value,\n          disabled: _ctx.disabled || _ctx.loading,\n          menuName: _ctx.iconOnly ? void 0 : currentLabel.value,\n          forceName: !_ctx.iconOnly,\n          variant: _ctx.variant\n        }, {\n          icon: withCtx(() => [\n            !_ctx.loading ? renderSlot(_ctx.$slots, \"icon\", { key: 0 }, () => [\n              createVNode(IconPlus, { size: 20 })\n            ]) : (openBlock(), createBlock(NcLoadingIcon, { key: 1 }))\n          ]),\n          default: withCtx(() => [\n            _ctx.actionCaption ? (openBlock(), createBlock(NcActionCaption, {\n              key: 0,\n              name: _ctx.actionCaption\n            }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n            !_ctx.directoryOnly ? (openBlock(), createBlock(NcActionButton, {\n              key: 1,\n              closeAfterClick: \"\",\n              onClick: _cache[0] || (_cache[0] = ($event) => triggerPickFiles(false))\n            }, {\n              icon: withCtx(() => [\n                createVNode(IconUpload, { size: 20 })\n              ]),\n              default: withCtx(() => [\n                createTextVNode(\" \" + toDisplayString(canUploadFolders.value || _ctx.$slots.actions ? _ctx.multiple ? unref(t)(\"Upload files\") : unref(t)(\"Upload file\") : currentLabel.value), 1)\n              ]),\n              _: 1\n            })) : createCommentVNode(\"\", true),\n            canUploadFolders.value ? (openBlock(), createBlock(NcActionButton, {\n              key: 2,\n              closeAfterClick: \"\",\n              onClick: _cache[1] || (_cache[1] = ($event) => triggerPickFiles(true))\n            }, {\n              icon: withCtx(() => [\n                createVNode(IconFolderUpload, {\n                  style: { \"color\": \"var(--color-primary-element)\" },\n                  size: 20\n                })\n              ]),\n              default: withCtx(() => [\n                createTextVNode(\" \" + toDisplayString(!_ctx.directoryOnly || _ctx.$slots.actions ? unref(t)(\"Upload folder\") : currentLabel.value), 1)\n              ]),\n              _: 1\n            })) : createCommentVNode(\"\", true),\n            (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.actions, (group) => {\n              return openBlock(), createElementBlock(Fragment, null, [\n                group.caption ? (openBlock(), createBlock(NcActionCaption, {\n                  key: group.caption,\n                  name: group.caption\n                }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n                (openBlock(true), createElementBlock(Fragment, null, renderList(group.actions ?? [group], (action) => {\n                  return openBlock(), createBlock(NcActionButton, {\n                    key: action.label,\n                    closeAfterClick: \"\",\n                    onClick: action.onClick\n                  }, {\n                    icon: withCtx(() => [\n                      createVNode(NcIconSvgWrapper, {\n                        svg: action.iconSvg\n                      }, null, 8, [\"svg\"])\n                    ]),\n                    default: withCtx(() => [\n                      createTextVNode(\" \" + toDisplayString(action.label), 1)\n                    ]),\n                    _: 2\n                  }, 1032, [\"onClick\"]);\n                }), 128))\n              ], 64);\n            }), 256))\n          ]),\n          _: 3\n        }, 8, [\"aria-label\", \"disabled\", \"menuName\", \"forceName\", \"variant\"]),\n        createElementVNode(\"input\", {\n          ref: \"input\",\n          accept: _ctx.accept?.join(\", \"),\n          \"aria-hidden\": \"true\",\n          class: \"hidden-visually\",\n          multiple: _ctx.multiple,\n          type: \"file\",\n          onChange: onPick\n        }, null, 40, _hoisted_1),\n        renderSlot(_ctx.$slots, \"default\")\n      ], 2);\n    };\n  }\n});\nconst filePicker = \"_filePicker_UHtO-\";\nconst style0 = {\n  filePicker\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcFilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n  NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-DPiYJu5B.mjs.map\n","import '../assets/NcKbd-BeQpGp0b.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { r as register, o as t7, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t7);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcKbd\",\n  props: {\n    symbol: { default: () => void 0 },\n    mac: { type: Boolean, default: () => isMac }\n  },\n  setup(__props) {\n    const labels = computed(() => ({\n      ArrowUp: \"↑\",\n      ArrowDown: \"↓\",\n      ArrowLeft: \"←\",\n      ArrowRight: \"→\",\n      Control: !__props.mac ? t(\"Ctrl\") : \"⌘\",\n      Alt: !__props.mac ? t(\"Alt\") : \"⌥\",\n      Shift: !__props.mac ? t(\"Shift\") : \"⇧\",\n      Enter: !__props.mac ? t(\"Enter\") : \"⏎\",\n      Tab: !__props.mac ? t(\"Tab\") : \"⇥\",\n      Delete: !__props.mac ? t(\"Delete\") : \"⌫\",\n      Escape: !__props.mac ? t(\"Escape\") : \"⎋\",\n      Space: t(\"Space\")\n      // TRANSLATORS: Space key on keyboard\n    }));\n    const label = computed(() => __props.symbol && labels.value[__props.symbol] || __props.symbol);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"kbd\", {\n        class: normalizeClass(_ctx.$style.kbd)\n      }, [\n        renderSlot(_ctx.$slots, \"default\", {}, () => [\n          createTextVNode(toDisplayString(label.value), 1)\n        ])\n      ], 2);\n    };\n  }\n});\nconst kbd = \"_kbd_3V7rw\";\nconst style0 = {\n  \"material-design-icon\": \"_material-design-icon_FHHYV\",\n  kbd\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcKbd = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n  NcKbd as N\n};\n//# sourceMappingURL=NcKbd-Caeq706M.mjs.map\n","import '../assets/NcHotkeyList-BfrEkKmK.css';\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, unref, renderSlot } from \"vue\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcHotkeyList\",\n  props: {\n    label: { default: () => void 0 }\n  },\n  setup(__props) {\n    const labelId = `NcHotkeyList_${createElementId()}`;\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass(_ctx.$style.hotkeyList)\n      }, [\n        createElementVNode(\"div\", {\n          id: labelId,\n          class: normalizeClass([_ctx.$style.hotkeyList__heading, { \"hidden-visually\": !_ctx.label }])\n        }, toDisplayString(_ctx.label || unref(t)(\"Keyboard shortcuts\")), 3),\n        createElementVNode(\"ul\", { \"aria-labelledby\": labelId }, [\n          renderSlot(_ctx.$slots, \"default\")\n        ])\n      ], 2);\n    };\n  }\n});\nconst hotkeyList = \"_hotkeyList_xNXCh\";\nconst hotkeyList__heading = \"_hotkeyList__heading_j6G86\";\nconst style0 = {\n  hotkeyList,\n  hotkeyList__heading\n};\nconst cssModules = {\n  \"$style\": style0\n};\nconst NcHotkeyList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n  NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-Ca7AtgZ9.mjs.map\n","import '../assets/NcListItemIcon-DJRcmlo1.css';\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, mergeProps, createElementVNode, createBlock, toDisplayString, createCommentVNode, renderSlot } from \"vue\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"@nextcloud/router\";\nimport \"../functions/isDarkTheme/index.mjs\";\nimport \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-BX_KxRP-.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-QYahYt2p.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n  name: \"NcListItemIcon\",\n  components: {\n    NcAvatar,\n    NcHighlight: _sfc_main$1,\n    NcIconSvgWrapper\n  },\n  mixins: [\n    userStatus\n  ],\n  props: {\n    /**\n     * Default first line text\n     */\n    name: {\n      type: String,\n      required: true\n    },\n    /**\n     * Secondary optional line\n     * Only visible on size of 32 and above\n     */\n    subname: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Icon class to be displayed at the end of the component\n     */\n    icon: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * SVG icon to be displayed at the end of the component\n     */\n    iconSvg: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Descriptive name for the icon\n     */\n    iconName: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Search within the highlight of name/subname\n     */\n    search: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Set a size in px that will define the avatar height/width\n     * and therefore, the height of the component\n     */\n    avatarSize: {\n      type: Number,\n      default: defaultSize\n    },\n    /**\n     * Disable the margins of this component.\n     * Useful for integration in `NcSelect` for example\n     */\n    noMargin: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * See the [Avatar](#Avatar) displayName prop\n     * Fallback to name\n     */\n    displayName: {\n      type: String,\n      default: null\n    },\n    /**\n     * See the [Avatar](#Avatar) isNoUser prop\n     * Enable/disable the UserStatus fetching\n     */\n    isNoUser: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Unique list item ID\n     */\n    id: {\n      type: String,\n      default: null\n    }\n  },\n  setup() {\n    return {\n      margin,\n      defaultSize\n    };\n  },\n  computed: {\n    hasIcon() {\n      return this.icon !== \"\";\n    },\n    hasIconSvg() {\n      return this.iconSvg !== \"\";\n    },\n    isValidSubname() {\n      return this.subname?.trim?.() !== \"\";\n    },\n    isSizeBigEnough() {\n      return this.avatarSize >= 26;\n    },\n    cssVars() {\n      const margin2 = this.noMargin ? 0 : this.margin;\n      return {\n        \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n        \"--margin\": this.margin + \"px\"\n      };\n    },\n    /**\n     * Separates the search property into two parts, the first one is the search part on the name, the second on the subname.\n     *\n     * @return {[string, string]}\n     */\n    searchParts() {\n      const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n      const match = this.search.match(EMAIL_NOTATION);\n      if (this.isNoUser || !match) {\n        return [this.search, this.search];\n      }\n      return [match[1].trim(), match[2]];\n    }\n  },\n  beforeMount() {\n    if (!this.isNoUser && !this.subname) {\n      this.fetchUserStatus(this.user);\n    }\n  }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"option__details\" };\nconst _hoisted_3 = { key: 1 };\nconst _hoisted_4 = [\"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n  const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n  const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n  return openBlock(), createElementBlock(\"span\", {\n    id: $props.id,\n    class: normalizeClass([\"option\", { \"option--compact\": $props.avatarSize < $setup.defaultSize }]),\n    style: normalizeStyle($options.cssVars)\n  }, [\n    createVNode(_component_NcAvatar, mergeProps(_ctx.$attrs, {\n      disableMenu: \"\",\n      disableTooltip: \"\",\n      displayName: $props.displayName || $props.name,\n      isNoUser: $props.isNoUser,\n      size: $props.avatarSize,\n      class: \"option__avatar\"\n    }), null, 16, [\"displayName\", \"isNoUser\", \"size\"]),\n    createElementVNode(\"div\", _hoisted_2, [\n      createVNode(_component_NcHighlight, {\n        class: \"option__lineone\",\n        text: $props.name,\n        search: $options.searchParts[0]\n      }, null, 8, [\"text\", \"search\"]),\n      $options.isValidSubname && $options.isSizeBigEnough ? (openBlock(), createBlock(_component_NcHighlight, {\n        key: 0,\n        class: \"option__linetwo\",\n        text: $props.subname,\n        search: $options.searchParts[1]\n      }, null, 8, [\"text\", \"search\"])) : _ctx.hasStatus ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n        createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.icon), 1),\n        createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.message), 1)\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    renderSlot(_ctx.$slots, \"default\", {}, () => [\n      $options.hasIconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n        key: 0,\n        class: \"option__icon\",\n        svg: $props.iconSvg,\n        name: $props.iconName\n      }, null, 8, [\"svg\", \"name\"])) : $options.hasIcon ? (openBlock(), createElementBlock(\"span\", {\n        key: 1,\n        class: normalizeClass([\"icon option__icon\", $props.icon]),\n        \"aria-label\": $props.iconName\n      }, null, 10, _hoisted_4)) : createCommentVNode(\"\", true)\n    ], true)\n  ], 14, _hoisted_1);\n}\nconst NcListItemIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0ee94269\"]]);\nexport {\n  NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-vZ-OTxIa.mjs.map\n","import '../assets/NcProgressBar-D1DYRrCN.css';\nimport { defineComponent, useCssVars, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = [\"height\", \"width\"];\nconst _hoisted_3 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_5 = {\n  key: 1,\n  class: \"progress-bar-container\"\n};\nconst _hoisted_6 = [\"value\"];\nconst _hoisted_7 = {\n  key: 0,\n  class: \"progress-bar__value\"\n};\nconst gridBaseline = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\nconst clickableAreaSmall = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--clickable-area-small\"));\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcProgressBar\",\n  props: {\n    value: { default: 0 },\n    size: { default: \"small\" },\n    error: { type: Boolean },\n    type: { default: \"linear\" },\n    color: { default: \"var(--color-primary-element)\" },\n    showValue: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    useCssVars((_ctx) => ({\n      \"3a86fec2\": _ctx.color,\n      \"57442460\": heightPx.value\n    }));\n    const props = __props;\n    const normalizedProgress = computed(() => Math.max(0, Math.min(100, props.value)) / 100);\n    const height = computed(() => {\n      if (typeof props.size === \"number\") {\n        return Math.round(props.size);\n      }\n      if (props.type === \"circular\") {\n        if (props.size === \"medium\") {\n          return clickableArea;\n        } else {\n          return clickableAreaSmall;\n        }\n      }\n      if (props.size === \"medium\") {\n        return 1.5 * gridBaseline;\n      }\n      return gridBaseline;\n    });\n    const heightPx = computed(() => `${height.value}px`);\n    const strokeWidth = computed(() => Math.max(gridBaseline, height.value / clickableArea * gridBaseline));\n    const circleCenterPosition = computed(() => height.value / 2);\n    const circleRadius = computed(() => height.value / 2 - strokeWidth.value);\n    const circumference = computed(() => circleRadius.value * 2 * Math.PI);\n    return (_ctx, _cache) => {\n      return _ctx.type === \"circular\" ? (openBlock(), createElementBlock(\"span\", {\n        key: 0,\n        role: \"progressbar\",\n        \"aria-valuenow\": _ctx.value,\n        class: normalizeClass([{ \"progress-bar--error\": _ctx.error }, \"progress-bar progress-bar--circular\"])\n      }, [\n        (openBlock(), createElementBlock(\"svg\", {\n          height: height.value,\n          width: height.value\n        }, [\n          createElementVNode(\"circle\", {\n            stroke: \"currentColor\",\n            fill: \"transparent\",\n            \"stroke-dasharray\": `${normalizedProgress.value * circumference.value} ${(1 - normalizedProgress.value) * circumference.value}`,\n            \"stroke-dashoffset\": 0.25 * circumference.value,\n            \"stroke-width\": strokeWidth.value,\n            r: circleRadius.value,\n            cx: circleCenterPosition.value,\n            cy: circleCenterPosition.value\n          }, null, 8, _hoisted_3),\n          createElementVNode(\"circle\", {\n            stroke: \"var(--color-background-darker)\",\n            fill: \"transparent\",\n            \"stroke-dasharray\": `${(1 - normalizedProgress.value) * circumference.value} ${normalizedProgress.value * circumference.value}`,\n            \"stroke-dashoffset\": (0.25 - normalizedProgress.value) * circumference.value,\n            \"stroke-width\": strokeWidth.value,\n            r: circleRadius.value,\n            cx: circleCenterPosition.value,\n            cy: circleCenterPosition.value\n          }, null, 8, _hoisted_4)\n        ], 8, _hoisted_2))\n      ], 10, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n        createElementVNode(\"progress\", {\n          class: normalizeClass([\"progress-bar progress-bar--linear vue\", { \"progress-bar--error\": _ctx.error }]),\n          value: _ctx.value,\n          max: \"100\"\n        }, null, 10, _hoisted_6),\n        _ctx.showValue ? (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(_ctx.value) + \"%\", 1)) : createCommentVNode(\"\", true)\n      ]));\n    };\n  }\n});\nconst NcProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-353fa414\"]]);\nexport {\n  NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-JyXXoHLT.mjs.map\n","import '../assets/NcRelatedResourcesPanel-CiG_Ixb6.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, S as t38, a as t, T as t42, U as t9 } from \"./_l10n-BCg4udFv.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { g as getRoute } from \"./autolink-_k1FETYm.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps, createCommentVNode, Fragment, renderList, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t38);\nconst _sfc_main$4 = {\n  name: \"NcResource\",\n  components: {\n    NcButton\n  },\n  /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n  props: {\n    icon: {\n      type: String,\n      required: true\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    url: {\n      type: String,\n      required: true\n    }\n  },\n  data() {\n    return {\n      labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n    };\n  },\n  computed: {\n    route() {\n      return getRoute(this.$router, this.url);\n    }\n  },\n  methods: {\n    t\n  }\n};\nconst _hoisted_1$4 = { class: \"resource\" };\nconst _hoisted_2$4 = { class: \"resource__icon\" };\nconst _hoisted_3$3 = [\"src\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  return openBlock(), createElementBlock(\"li\", _hoisted_1$4, [\n    createVNode(_component_NcButton, {\n      class: \"resource__button\",\n      \"aria-label\": $data.labelTranslated,\n      to: $options.route,\n      href: $options.route ? null : $props.url,\n      variant: \"tertiary\"\n    }, {\n      icon: withCtx(() => [\n        createElementVNode(\"div\", _hoisted_2$4, [\n          createElementVNode(\"img\", { src: $props.icon }, null, 8, _hoisted_3$3)\n        ])\n      ]),\n      default: withCtx(() => [\n        createTextVNode(\" \" + toDisplayString($props.name), 1)\n      ]),\n      _: 1\n    }, 8, [\"aria-label\", \"to\", \"href\"])\n  ]);\n}\nconst NcResource = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4], [\"__scopeId\", \"data-v-77577e58\"]]);\nconst _sfc_main$3 = {\n  name: \"AccountGroupIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon account-group-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$2, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$3))\n  ], 16, _hoisted_1$3);\n}\nconst AccountGroup = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n  name: \"OpenInNewIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon open-in-new-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$2))\n  ], 16, _hoisted_1$2);\n}\nconst OpenInNew = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n  name: \"NcTeamResources\",\n  components: {\n    AccountGroup,\n    ChevronDown,\n    ChevronUp,\n    OpenInNew,\n    NcButton,\n    NcIconSvgWrapper\n  },\n  /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n  props: {\n    providerId: {\n      type: String,\n      default: null\n    },\n    itemId: {\n      type: [String, Number],\n      default: null\n    }\n  },\n  data() {\n    return {\n      appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n      loading: false,\n      teamResources: null,\n      teamOpen: []\n    };\n  },\n  computed: {\n    isVisible() {\n      return !this.loading && this.teamResources?.length > 0;\n    },\n    teamProviders() {\n      return (teamId) => {\n        const team = this.teamResources.find((t2) => t2.teamId === teamId);\n        return team.resources?.reduce((acc, resource) => {\n          if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n            return acc;\n          }\n          if (!acc[resource.provider.id]) {\n            acc[resource.provider.id] = resource.provider;\n            acc[resource.provider.id].resources = [];\n          }\n          if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n            return acc;\n          }\n          acc[resource.provider.id].resources.push(resource);\n          return acc;\n        }, {});\n      };\n    },\n    open() {\n      return (teamId) => {\n        return this.teamOpen.indexOf(teamId) !== -1;\n      };\n    }\n  },\n  watch: {\n    providerId() {\n      this.fetchTeamResources();\n    },\n    itemId() {\n      this.fetchTeamResources();\n    }\n  },\n  created() {\n    this.fetchTeamResources();\n  },\n  methods: {\n    t,\n    async fetchTeamResources() {\n      if (!teamResourceProviders.includes(this.providerId)) {\n        return;\n      }\n      try {\n        this.loading = true;\n        const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n        this.teamResources = response.data.ocs.data.teams;\n        this.teamOpen = [this.teamResources[0]?.teamId];\n      } catch (error) {\n        this.teamResources = null;\n        logger.error(\"[NcTeamResources] Failed to fetch resources\", { error });\n      } finally {\n        this.loading = false;\n      }\n    },\n    toggleOpen(teamId, open) {\n      if (open) {\n        this.teamOpen.push(teamId);\n      } else {\n        this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n      }\n    }\n  }\n};\nconst _hoisted_1$1 = {\n  key: 0,\n  class: \"team-resources\"\n};\nconst _hoisted_2$1 = { class: \"team-resources__header\" };\nconst _hoisted_3 = [\"open\", \"onToggle\"];\nconst _hoisted_4 = { class: \"related-team__header\" };\nconst _hoisted_5 = { class: \"related-team__name\" };\nconst _hoisted_6 = { key: 0 };\nconst _hoisted_7 = [\"href\"];\nconst _hoisted_8 = {\n  key: 0,\n  class: \"resource__icon\"\n};\nconst _hoisted_9 = {\n  key: 2,\n  class: \"resource__icon\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = { class: \"resource__name\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_AccountGroup = resolveComponent(\"AccountGroup\");\n  const _component_OpenInNew = resolveComponent(\"OpenInNew\");\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n  const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n  const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n  return $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n    createElementVNode(\"h5\", _hoisted_2$1, toDisplayString($options.t(\"Related team resources\")), 1),\n    (openBlock(true), createElementBlock(Fragment, null, renderList($data.teamResources, (team) => {\n      return openBlock(), createElementBlock(\"details\", {\n        key: team.teamId,\n        name: \"Team resources\",\n        class: \"related-team\",\n        open: $options.open(team.teamId),\n        onToggle: (event) => $options.toggleOpen(team.teamId, event.target.open)\n      }, [\n        createElementVNode(\"summary\", _hoisted_4, [\n          createElementVNode(\"h5\", _hoisted_5, [\n            createVNode(_component_AccountGroup, { size: 20 }),\n            createTextVNode(\" \" + toDisplayString(team.displayName), 1)\n          ]),\n          createVNode(_component_NcButton, {\n            \"aria-label\": $options.t(\"View team\"),\n            href: team.link,\n            title: $options.t(\"View team\"),\n            variant: \"tertiary\"\n          }, {\n            icon: withCtx(() => [\n              createVNode(_component_OpenInNew, { size: 20 })\n            ]),\n            _: 2\n          }, 1032, [\"aria-label\", \"href\", \"title\"]),\n          $options.open(team.teamId) ? (openBlock(), createBlock(_component_ChevronUp, {\n            key: 0,\n            size: 20\n          })) : (openBlock(), createBlock(_component_ChevronDown, {\n            key: 1,\n            size: 20\n          }))\n        ]),\n        createElementVNode(\"div\", null, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList($options.teamProviders(team.teamId), (provider) => {\n            return openBlock(), createElementBlock(\"div\", {\n              key: provider.id,\n              class: \"related-team-provider\"\n            }, [\n              provider.resources.length > 0 ? (openBlock(), createElementBlock(\"h6\", _hoisted_6, toDisplayString(provider.name), 1)) : createCommentVNode(\"\", true),\n              createElementVNode(\"ul\", null, [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(provider.resources, (resource) => {\n                  return openBlock(), createElementBlock(\"li\", {\n                    key: resource.url,\n                    class: \"related-team-resource\"\n                  }, [\n                    createElementVNode(\"a\", {\n                      href: resource.url,\n                      class: \"related-team-resource__link\"\n                    }, [\n                      resource.iconEmoji ? (openBlock(), createElementBlock(\"span\", _hoisted_8, toDisplayString(resource.iconEmoji), 1)) : resource.iconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n                        key: 1,\n                        class: \"resource__icon\",\n                        svg: resource.iconSvg,\n                        size: 20\n                      }, null, 8, [\"svg\"])) : resource.iconURL ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n                        createElementVNode(\"img\", {\n                          src: resource.iconURL,\n                          alt: \"\"\n                        }, null, 8, _hoisted_10)\n                      ])) : createCommentVNode(\"\", true),\n                      createElementVNode(\"span\", _hoisted_11, toDisplayString(resource.label), 1)\n                    ], 8, _hoisted_7)\n                  ]);\n                }), 128))\n              ])\n            ]);\n          }), 128))\n        ])\n      ], 40, _hoisted_3);\n    }), 128))\n  ])) : createCommentVNode(\"\", true);\n}\nconst NcTeamResources = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-10ef45ac\"]]);\nregister(t9);\nconst _sfc_main = {\n  name: \"NcRelatedResourcesPanel\",\n  components: {\n    NcResource,\n    NcTeamResources\n  },\n  /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n  props: {\n    /**\n     * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n     */\n    providerId: {\n      type: String,\n      default: null\n    },\n    /**\n     * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n     */\n    itemId: {\n      type: [String, Number],\n      default: null\n    },\n    /**\n     * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n     */\n    resourceType: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Set the maximum number of resources to load\n     */\n    limit: {\n      type: Number,\n      default: 0\n    },\n    /**\n     * Only used by the files sidebar\n     *\n     * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n     */\n    fileInfo: {\n      type: Object,\n      default: null\n    },\n    /**\n     * Make the header name dynamic\n     */\n    header: {\n      type: String,\n      default: t(\"Related resources\")\n    },\n    description: {\n      type: String,\n      default: t(\"Anything shared with the same group of people will show up here\")\n    },\n    /**\n     * If this element is used on a primary element set to true for primary styling.\n     */\n    primary: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\n    \"hasError\",\n    \"hasResources\"\n  ],\n  data() {\n    return {\n      appEnabled: OC?.appswebroots?.related_resources !== void 0,\n      loading: false,\n      error: null,\n      resources: []\n    };\n  },\n  computed: {\n    isVisible() {\n      if (this.loading) {\n        return false;\n      }\n      return this.error ?? this.resources.length > 0;\n    },\n    subline() {\n      if (this.error) {\n        return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n      }\n      return this.description;\n    },\n    hasResourceInfo() {\n      if (this.providerId !== null && this.itemId !== null) {\n        return true;\n      }\n      if (this.fileInfo !== null) {\n        return true;\n      }\n      return false;\n    },\n    isFiles() {\n      return this.fileInfo?.id !== void 0;\n    },\n    url() {\n      let providerId;\n      let itemId;\n      if (this.isFiles) {\n        providerId = \"files\";\n        itemId = this.fileInfo.id;\n      } else {\n        providerId = this.providerId;\n        itemId = this.itemId;\n      }\n      return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n        providerId,\n        itemId,\n        resourceType: this.resourceType,\n        limit: this.limit\n      });\n    }\n  },\n  watch: {\n    providerId() {\n      this.fetchRelatedResources();\n    },\n    itemId() {\n      this.fetchRelatedResources();\n    },\n    fileInfo() {\n      this.fetchRelatedResources();\n    },\n    error(error) {\n      this.$emit(\"hasError\", Boolean(error));\n    },\n    resources(resources) {\n      this.$emit(\"hasResources\", resources.length > 0);\n    }\n  },\n  created() {\n    this.fetchRelatedResources();\n  },\n  methods: {\n    t,\n    async fetchRelatedResources() {\n      if (!this.appEnabled || !this.hasResourceInfo) {\n        return;\n      }\n      this.loading = true;\n      this.error = null;\n      this.resources = [];\n      try {\n        const response = await axios.get(this.url);\n        this.resources = response.data.ocs?.data;\n      } catch (error) {\n        this.error = error;\n        logger.error(\"[NcRelatedResourcesPanel] Failed to fetch resources\", { error });\n      } finally {\n        this.loading = false;\n      }\n    }\n  }\n};\nconst _hoisted_1 = {\n  key: 0,\n  class: \"related-resources\"\n};\nconst _hoisted_2 = { class: \"related-resources__header\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcTeamResources = resolveComponent(\"NcTeamResources\");\n  const _component_NcResource = resolveComponent(\"NcResource\");\n  return openBlock(), createElementBlock(\"div\", null, [\n    createVNode(_component_NcTeamResources, {\n      providerId: $props.providerId,\n      itemId: $props.itemId\n    }, null, 8, [\"providerId\", \"itemId\"]),\n    $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n      createElementVNode(\"div\", _hoisted_2, [\n        createElementVNode(\"h5\", null, toDisplayString($props.header), 1),\n        createElementVNode(\"p\", null, toDisplayString($options.subline), 1)\n      ]),\n      (openBlock(true), createElementBlock(Fragment, null, renderList($data.resources, (resource) => {\n        return openBlock(), createBlock(_component_NcResource, {\n          key: resource.itemId,\n          class: \"related-resources__entry\",\n          icon: resource.icon,\n          name: resource.title,\n          url: resource.url\n        }, null, 8, [\"icon\", \"name\", \"url\"]);\n      }), 128))\n    ])) : createCommentVNode(\"\", true)\n  ]);\n}\nconst NcRelatedResourcesPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-78029c82\"]]);\nexport {\n  NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-C7C0-pBV.mjs.map\n","import '../assets/NcSelectUsers-YF5729PJ.css';\nimport { defineComponent, useModel, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, mergeModels } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-vZ-OTxIa.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DK4ZWMha.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  __name: \"NcSelectUsers\",\n  props: /* @__PURE__ */ mergeModels({\n    ariaLabelClearSelected: {},\n    ariaLabelListbox: {},\n    ariaLabelDeselectOption: { type: Function },\n    disabled: { type: Boolean },\n    inputId: {},\n    inputLabel: {},\n    labelOutside: { type: Boolean },\n    keepOpen: { type: Boolean },\n    loading: { type: Boolean },\n    multiple: { type: Boolean },\n    noWrap: { type: Boolean },\n    options: {},\n    placeholder: {},\n    required: { type: Boolean }\n  }, {\n    \"modelValue\": {},\n    \"modelModifiers\": {}\n  }),\n  emits: /* @__PURE__ */ mergeModels([\"search\"], [\"update:modelValue\"]),\n  setup(__props, { emit: __emit }) {\n    const modelValue = useModel(__props, \"modelValue\");\n    const emit = __emit;\n    const search = ref(\"\");\n    watch(search, () => emit(\"search\", search.value));\n    const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n    const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n    const avatarSize = clickableArea - 2 * gridBaseLine;\n    function filterBy(option, label, search2) {\n      const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n      const match = search2.match(EMAIL_NOTATION);\n      const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n      return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(unref(NcSelect), mergeProps({\n        modelValue: modelValue.value,\n        \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n        class: \"nc-select-users\"\n      }, _ctx.$props, {\n        filterBy,\n        label: \"displayName\",\n        onSearch: _cache[1] || (_cache[1] = ($event) => search.value = $event)\n      }), {\n        option: withCtx((option) => [\n          createVNode(unref(NcListItemIcon), mergeProps(option, {\n            avatarSize: 32,\n            name: option.displayName,\n            search: search.value\n          }), null, 16, [\"name\", \"search\"])\n        ]),\n        \"selected-option\": withCtx((selectedOption) => [\n          createVNode(unref(NcListItemIcon), mergeProps(selectedOption, {\n            avatarSize,\n            name: selectedOption.displayName,\n            noMargin: \"\",\n            search: search.value\n          }), null, 16, [\"name\", \"search\"])\n        ]),\n        _: 1\n      }, 16, [\"modelValue\"]);\n    };\n  }\n});\nconst NcSelectUsers = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e8e18fd3\"]]);\nexport {\n  NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-2L4I2yvb.mjs.map\n","import '../assets/NcSettingsSelectGroup-D_fSrafm.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-DK4ZWMha.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createVNode, withDirectives, createElementVNode, vShow } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t50);\nconst _sfc_main = {\n  name: \"NcSettingsSelectGroup\",\n  components: {\n    NcSelect\n  },\n  props: {\n    /**\n     * The text of the label element of the select group input\n     */\n    label: {\n      type: String,\n      required: true\n    },\n    /**\n     * Placeholder for the input element\n     * For backwards compatibility it falls back to the `label` value\n     */\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * id attribute of the select group element\n     */\n    id: {\n      type: String,\n      default: () => \"action-\" + createElementId(),\n      validator: (id) => id.trim() !== \"\"\n    },\n    /**\n     * value of the select group input\n     * A list of group IDs can be provided\n     */\n    modelValue: {\n      type: Array,\n      default: () => []\n    },\n    /**\n     * disabled state of the settings select group input\n     */\n    disabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\n    \"error\",\n    \"input\",\n    \"update:modelValue\"\n  ],\n  data() {\n    return {\n      /** Temporary store to cache groups */\n      groups: {},\n      randId: createElementId(),\n      errorMessage: \"\"\n    };\n  },\n  computed: {\n    /**\n     * If the error message should be shown\n     */\n    hasError() {\n      return this.errorMessage !== \"\";\n    },\n    /**\n     * Validate input value and only return valid strings (group IDs)\n     *\n     * @return {string[]}\n     */\n    filteredValue() {\n      return this.modelValue.filter((group) => group !== \"\" && typeof group === \"string\");\n    },\n    /**\n     * value property converted to an array of group objects used as input for the NcSelect\n     */\n    inputValue() {\n      return this.filteredValue.map((id) => {\n        if (typeof this.groups[id] === \"undefined\") {\n          return {\n            id,\n            displayname: id\n          };\n        }\n        return this.groups[id];\n      });\n    },\n    /**\n     * Convert groups object to array of groups required for NcSelect.options\n     * Filter out currently selected values\n     *\n     * @return {object[]}\n     */\n    groupsArray() {\n      return Object.values(this.groups).filter((g) => !this.modelValue.includes(g.id));\n    }\n  },\n  watch: {\n    /**\n     * If the value is changed, check that all groups are loaded so we show the correct display name\n     */\n    modelValue: {\n      handler() {\n        const loadedGroupIds = Object.keys(this.groups);\n        const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n        missing.forEach((groupId) => {\n          this.loadGroup(groupId);\n        });\n      },\n      // Run the watch handler also when the component is initially mounted\n      immediate: true\n    }\n  },\n  /**\n   * Load groups matching the empty query to reduce API calls\n   */\n  async mounted() {\n    const storageName = `${appName}:${appVersion}/initialGroups`;\n    let savedGroups = window.sessionStorage.getItem(storageName);\n    if (savedGroups) {\n      savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n      this.groups = { ...this.groups, ...savedGroups };\n    } else {\n      await this.loadGroup(\"\");\n      window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n    }\n  },\n  methods: {\n    t,\n    /**\n     * Called when a new group is selected or previous group is deselected to emit the update event\n     *\n     * @param {object[]} updatedValue Array of selected groups\n     */\n    update(updatedValue) {\n      const value = updatedValue.map((element) => element.id);\n      this.$emit(\"update:modelValue\", value);\n    },\n    /**\n     * Use provisioning API to search for given group and save it in the groups object\n     *\n     * @param {string} query The query like parts of the id oder display name\n     * @return {boolean}\n     */\n    async loadGroup(query) {\n      try {\n        query = typeof query === \"string\" ? encodeURI(query) : \"\";\n        const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n        if (this.errorMessage !== \"\") {\n          window.setTimeout(() => {\n            this.errorMessage = \"\";\n          }, 5e3);\n        }\n        if (Object.keys(response.data.ocs.data.groups).length > 0) {\n          const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n          this.groups = { ...this.groups, ...newGroups };\n          return true;\n        }\n      } catch (error) {\n        this.$emit(\"error\", error);\n        this.errorMessage = t(\"Unable to search the group\");\n      }\n      return false;\n    },\n    /**\n     * Custom filter function for `NcSelect` to filter by ID *and* display name\n     *\n     * @param {object} option One of the groups\n     * @param {string} label The label property of the group\n     * @param {string} search The current search string\n     */\n    filterGroups(option, label, search) {\n      return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n    },\n    /**\n     * Debounce the group search (reduce API calls)\n     */\n    onSearch: debounce(function(query) {\n      this.loadGroup(query);\n    }, 200)\n  }\n};\nconst _hoisted_1 = [\"for\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcSelect = resolveComponent(\"NcSelect\");\n  return openBlock(), createElementBlock(\"div\", null, [\n    $props.label ? (openBlock(), createElementBlock(\"label\", {\n      key: 0,\n      for: $props.id,\n      class: \"hidden-visually\"\n    }, toDisplayString($props.label), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n    createVNode(_component_NcSelect, {\n      modelValue: $options.inputValue,\n      options: $options.groupsArray,\n      placeholder: $props.placeholder || $props.label,\n      filterBy: $options.filterGroups,\n      inputId: $props.id,\n      limit: 5,\n      label: \"displayname\",\n      multiple: true,\n      closeOnSelect: false,\n      disabled: $props.disabled,\n      \"onUpdate:modelValue\": $options.update,\n      onSearch: $options.onSearch\n    }, null, 8, [\"modelValue\", \"options\", \"placeholder\", \"filterBy\", \"inputId\", \"disabled\", \"onUpdate:modelValue\", \"onSearch\"]),\n    withDirectives(createElementVNode(\"div\", { class: \"select-group-error\" }, toDisplayString($data.errorMessage), 513), [\n      [vShow, $options.hasError]\n    ])\n  ]);\n}\nconst NcSettingsSelectGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f2b71592\"]]);\nexport {\n  NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-CYgEv80h.mjs.map\n","import '../assets/NcTextArea-BxGe3Lqn.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, createBlock, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  ...{ inheritAttrs: false },\n  __name: \"NcTextArea\",\n  props: /* @__PURE__ */ mergeModels({\n    disabled: { type: Boolean },\n    error: { type: Boolean },\n    helperText: { default: void 0 },\n    id: { default: () => createElementId() },\n    inputClass: { default: \"\" },\n    label: { default: void 0 },\n    labelOutside: { type: Boolean },\n    placeholder: { default: void 0 },\n    resize: { default: \"both\" },\n    success: { type: Boolean }\n  }, {\n    \"modelValue\": { required: true },\n    \"modelModifiers\": {}\n  }),\n  emits: [\"update:modelValue\"],\n  setup(__props, { expose: __expose }) {\n    const modelValue = useModel(__props, \"modelValue\");\n    const props = __props;\n    __expose({\n      focus,\n      select\n    });\n    const attrs = useAttrs();\n    const textAreaElement = useTemplateRef(\"input\");\n    const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n    watch(() => props.labelOutside, () => {\n      if (!props.labelOutside && !props.label) {\n        logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n      }\n    });\n    const ariaDescribedby = computed(() => {\n      const ariaDescribedby2 = [];\n      if (props.helperText) {\n        ariaDescribedby2.push(`${props.id}-helper-text`);\n      }\n      if (typeof attrs[\"aria-describedby\"] === \"string\") {\n        ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n      }\n      return ariaDescribedby2.join(\" \") || void 0;\n    });\n    function handleInput(event) {\n      const { value } = event.target;\n      modelValue.value = value;\n    }\n    function focus(options) {\n      textAreaElement.value.focus(options);\n    }\n    function select() {\n      textAreaElement.value.select();\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"textarea\", [\n          _ctx.$attrs.class,\n          {\n            \"textarea--disabled\": _ctx.disabled,\n            \"textarea--legacy\": unref(isLegacy)\n          }\n        ]])\n      }, [\n        createElementVNode(\"div\", _hoisted_1, [\n          createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n            id: _ctx.id,\n            ref: \"input\",\n            \"aria-describedby\": ariaDescribedby.value,\n            \"aria-live\": \"polite\",\n            class: [\"textarea__input\", [\n              _ctx.inputClass,\n              {\n                \"textarea__input--label-outside\": _ctx.labelOutside,\n                \"textarea__input--legacy\": unref(isLegacy),\n                \"textarea__input--success\": _ctx.success,\n                \"textarea__input--error\": _ctx.error\n              }\n            ]],\n            disabled: _ctx.disabled,\n            placeholder: internalPlaceholder.value,\n            style: { resize: _ctx.resize },\n            value: modelValue.value,\n            onInput: handleInput\n          }), null, 16, _hoisted_2),\n          !_ctx.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n            key: 0,\n            class: \"textarea__label\",\n            for: _ctx.id\n          }, toDisplayString(_ctx.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n        ]),\n        _ctx.helperText ? (openBlock(), createElementBlock(\"p\", {\n          key: 0,\n          id: `${_ctx.id}-helper-text`,\n          class: normalizeClass([\"textarea__helper-text-message\", {\n            \"textarea__helper-text-message--error\": _ctx.error,\n            \"textarea__helper-text-message--success\": _ctx.success\n          }])\n        }, [\n          _ctx.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n            key: 0,\n            class: \"textarea__helper-text-message__icon\",\n            path: unref(mdiCheck),\n            inline: \"\"\n          }, null, 8, [\"path\"])) : _ctx.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n            key: 1,\n            class: \"textarea__helper-text-message__icon\",\n            path: unref(mdiAlertCircleOutline),\n            inline: \"\"\n          }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n          createTextVNode(\" \" + toDisplayString(_ctx.helperText), 1)\n        ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n      ], 2);\n    };\n  }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d327fb49\"]]);\nexport {\n  NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-BwFQx9Bj.mjs.map\n"],"names":["register","_sfc_main","defineComponent","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","t","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","toDisplayString","createCommentVNode","createElementVNode","renderSlot","NcActionButtonGroup","_export_sfc","NcAppNavigationList","t20","_hoisted_1$1","_sfc_main$1","__props","open","useModel","title","computed","createVNode","unref","NcButton","$event","withCtx","NcIconSvgWrapper","mdiMenuOpen","mdiMenu","NcAppNavigationToggle","props","focusTrap","setHasAppNavigation","inject","HAS_APP_NAVIGATION_KEY","warn","appNavigationContainerElement","useTemplateRef","isMobile","useIsMobile","ref","watchEffect","watch","toggleFocusTrap","onMounted","subscribe","toggleNavigationByEventBus","emit","createFocusTrap","toggleNavigation","getTrapStack","onUnmounted","unsubscribe","state","bodyStyles","animationLength","open2","handleEsc","normalizeClass","isLegacy34","withKeys","createBlock","NcAppNavigation","NcActions","_hoisted_4","mergeProps","ChevronUp","IconArrowRight","t14","IconClose","newValue","_component_IconArrowRight","resolveComponent","_component_NcButton","_component_IconClose","withModifiers","args","withDirectives","vModelText","NcInputConfirmCancel","_sfc_main$3","_hoisted_1$2","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_sfc_render$3","Pencil","_sfc_main$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$2","Undo","t21","ChevronDown","e","_sfc_render$1","_component_ChevronUp","_component_ChevronDown","NcAppNavigationIconCollapsible","t23","t51","NcActionButton","NcLoadingIcon","_sfc_main$4","id","newVal","event","navigate","routerLinkHref","href","_hoisted_5","_hoisted_6","_hoisted_7","_component_NcLoadingIcon","_component_NcInputConfirmCancel","_component_Pencil","_component_NcActionButton","_component_Undo","_component_NcActions","_component_NcAppNavigationIconCollapsible","resolveDynamicComponent","normalizeProps","guardReactiveProps","isActive","createTextVNode","NcAppNavigationItem","t16","t44","mergeModels","model","slots","useSlots","inputElement","inputHasFocus","useFocusWithin","transitionTimeout","actionsContainerElement","hasActions","showActions","timeoutId","hideActions","onCloseSearch","nextTick","NcInputField","NcAppNavigationSearch","t47","t48","t31","directive","el","encodedTlds","encodedUtlds","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","name","groups","addToGroups","flags","k","group","flagsForToken","result","c","State","token","input","nextState","i","regex","exactOnly","inputs","next","regexp","len","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Asciinumeric","Alphanumeric","Word","UWord","Nl","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","b","sch","run$1","start","str","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","char","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","noop","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","key","operator","isCallable","option","obj","val","MultiToken","value","options","truncate","formatted","protocol","formattedHref","tagName","content","attributes","className","target","rel","attrs","eventListeners","createTokenClass","type","Token","p","Email","Text","Url","makeState","arg","init$1","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","linkifyString","escapeHTML","escapeAttr","attributesToString","attr","headerRef","_sfc_main$5","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$4","IconDockRight","_hoisted_1$4","IconStar","_hoisted_1$3","IconStarOutline","selected","_sfc_main$6","sidebarTabsButton","sidebarTabsButton_legacy","sidebarTabsButton_selected","sidebarTabsButton__name","sidebarTabsButton__icon","sidebarTabsButton__legacyIcon","style0","cssModules","NcAppSidebarTabsButton","tab","active","getCanonicalLocale","tabIndex","_component_NcAppSidebarTabsButton","Fragment","renderList","NcAppSidebarTabs","t15","_sfc_main$7","NcEmptyContent","vOnClickOutside","CONTENT_SELECTOR_KEY","provide","useIsSmallMobile","isSlotPopulated","menu","menuTrigger","element","logger","activeTab","_hoisted_8","_component_IconDockRight","_component_IconStar","_component_IconStarOutline","_component_NcAppSidebarHeader","_component_NcAppSidebarTabs","_component_NcEmptyContent","_directive_focus","resolveDirective","_directive_click_outside","Transition","Teleport","normalizeStyle","vShow","NcAppSidebar","PQueue","t28","t6","t35","gtBuilder","getGettextBuilder","gt","t7","margin","defaultSize","NcAvatar","userStatus","margin2","EMAIL_NOTATION","match","_component_NcAvatar","_component_NcHighlight","_component_NcIconSvgWrapper","NcListItemIcon","t38","t42","getCapabilities","t9","__emit","modelValue","search","clickableArea","gridBaseLine","avatarSize","filterBy","label","search2","subname","NcSelect","selectedOption","NcSelectUsers","t50","debounce","query","__expose","focus","select","useAttrs","textAreaElement","internalPlaceholder","isLegacy","ariaDescribedby","ariaDescribedby2","handleInput","mdiCheck","mdiAlertCircleOutline","NcTextArea"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]}