{"version":3,"sources":["../../ui-stencil/dist/components/@stencil/core/internal/app-data","../../ui-stencil/node_modules/.pnpm/@stencil+core@4.30.0/node_modules/@stencil/core/internal/client/index.js","../../ui-stencil/node_modules/.pnpm/@oramacloud+client@2.1.4/node_modules/@oramacloud/client/dist/index.js","../../ui-stencil/dist/components/src/utils/utils.ts","../../ui-stencil/dist/components/src/components/internal/orama-button/orama-button.scss","../../ui-stencil/dist/components/src/components/internal/orama-button/orama-button.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs","../../ui-stencil/dist/components/src/ParentComponentStore/ChatStore.ts","../../ui-stencil/node_modules/.pnpm/@stencil+store@2.1.3_@stencil+core@4.30.0/node_modules/@stencil/store/dist/index.js","../../ui-stencil/dist/components/src/ParentComponentStore/GlobalStore.ts","../../ui-stencil/dist/components/src/ParentComponentStore/SearchStore.ts","../../ui-stencil/dist/components/src/ParentComponentStore/ParentComponentStoreManager.ts","../../ui-stencil/dist/components/src/StoreDecorator.ts","../../ui-stencil/dist/components/src/components/internal/orama-dots-loader/orama-dots-loader.scss","../../ui-stencil/dist/components/src/components/internal/orama-dots-loader/orama-dots-loader.tsx","../../ui-stencil/dist/components/src/components/internal/SupportedHLJSLanguages.ts","../../ui-stencil/node_modules/.pnpm/dompurify@3.2.5/node_modules/dompurify/dist/purify.es.mjs","../../ui-stencil/node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/lib/core.js","../../ui-stencil/node_modules/.pnpm/marked@13.0.3/node_modules/marked/lib/marked.esm.js","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-markdown/orama-markdown.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-markdown/orama-markdown.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhCaretLeft.mjs","../../ui-stencil/dist/components/src/components/internal/orama-text/orama-text.scss","../../ui-stencil/dist/components/src/components/internal/orama-text/orama-text.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhCaretRight.mjs","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-sources/orama-sources.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-sources/orama-sources.tsx","../../ui-stencil/dist/components/src/types/index.ts","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhCopy.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhArrowsClockwise.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhThumbsDown.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhWarning.mjs","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-chat-assistent-message.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-assistent-message/orama-chat-assistent-message.tsx","../../ui-stencil/dist/components/src/erros/OramaClientNotInitialized.ts","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/components/tokenizer/languages.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/utils.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/errors.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/components/internal-document-id-store.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/components/hooks.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/trees/vector.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/docs.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/constants.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/components/facets.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/components/groups.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/search-fulltext.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/search-vector.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/search-hybrid.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/search.js","../../ui-stencil/node_modules/.pnpm/@orama+orama@3.1.6/node_modules/@orama/orama/dist/browser/methods/answer-session.js","../../ui-stencil/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js","../../ui-stencil/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js","../../ui-stencil/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha3.js","../../ui-stencil/node_modules/.pnpm/@orama+cuid2@2.2.3/node_modules/@orama/cuid2/src/index.js","../../ui-stencil/node_modules/.pnpm/@orama+cuid2@2.2.3/node_modules/@orama/cuid2/index.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/lib/event-stream.js","../../ui-stencil/node_modules/.pnpm/dedent@1.5.3/node_modules/dedent/dist/dedent.mjs","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/common.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/const.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/_dnt.shims.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/Options.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/helpers/util.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/ZodError.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/locales/en.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/errors.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/helpers/parseUtil.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/helpers/typeAliases.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/helpers/errorUtil.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/types.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/external.js","../../ui-stencil/node_modules/.pnpm/zod@3.24.3/node_modules/zod/lib/index.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../ui-stencil/node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.3/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/lib/utils.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/constants.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/answer-session.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/send-beacon.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/profile.js","../../ui-stencil/node_modules/.pnpm/@orama+core@0.1.8/node_modules/@orama/core/esm/collection.js","../../ui-stencil/node_modules/.pnpm/@orama+switch@3.1.6_@orama+core@0.1.8_@orama+orama@3.1.6_@oramacloud+client@2.1.4/node_modules/@orama/switch/dist/index.js","../../ui-stencil/dist/components/src/services/ChatService.ts","../../ui-stencil/dist/components/src/utils/textDictionary.ts","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhArrowDown.mjs","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-user-message/orama-chat-user-message.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-user-message/orama-chat-user-message.tsx","../../ui-stencil/dist/components/src/components/internal/orama-suggestions/orama-suggestions.scss","../../ui-stencil/dist/components/src/components/internal/orama-suggestions/orama-suggestions.tsx","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-messages-container.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-messages-container/orama-chat-messages-container.tsx","../../ui-stencil/dist/components/src/components/internal/orama-textarea/orama-textarea.scss","../../ui-stencil/dist/components/src/components/internal/orama-textarea/orama-textarea.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhPaperPlaneTilt.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhStopCircle.mjs","../../ui-stencil/dist/components/src/components/internal/orama-chat/orama-chat.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat/orama-chat.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhArrowClockwise.mjs","../../ui-stencil/dist/components/src/components/orama-chat-box/orama-chat-box.scss","../../ui-stencil/dist/components/src/components/orama-chat-box/orama-chat-box.tsx","../../ui-stencil/dist/components/src/components/internal/icons.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhArrowBendDownLeft.mjs","../../ui-stencil/dist/components/src/components/internal/orama-chat-button/orama-chat-button.scss","../../ui-stencil/dist/components/src/components/internal/orama-chat-button/orama-chat-button.tsx","../../ui-stencil/dist/components/src/components/internal/orama-embed/orama-embed.scss","../../ui-stencil/dist/components/src/components/internal/orama-embed/orama-embed.tsx","../../ui-stencil/dist/components/src/components/internal/orama-facets/orama-facets.scss","../../ui-stencil/dist/components/src/components/internal/orama-facets/orama-facets.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhArrowUp.mjs","../../ui-stencil/dist/components/src/components/internal/orama-footer/orama-footer.scss","../../ui-stencil/dist/components/src/components/internal/orama-footer/orama-footer.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhX.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhMagnifyingGlass.mjs","../../ui-stencil/dist/components/src/components/internal/orama-input/orama-input.scss","../../ui-stencil/dist/components/src/components/internal/orama-input/orama-input.tsx","../../ui-stencil/dist/components/orama-markdown.js","../../ui-stencil/dist/components/src/components/internal/orama-modal/orama-modal.scss","../../ui-stencil/dist/components/src/components/internal/orama-modal/orama-modal.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhSparkle.mjs","../../ui-stencil/dist/components/src/components/internal/orama-toggler/orama-toggler.scss","../../ui-stencil/dist/components/src/components/internal/orama-toggler/orama-toggler.tsx","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhClock.mjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhPlus.mjs","../../ui-stencil/dist/components/src/components/internal/orama-navigation-bar/orama-navigation-bar.scss","../../ui-stencil/dist/components/src/components/internal/orama-navigation-bar/orama-navigation-bar.tsx","../../ui-stencil/node_modules/.pnpm/@orama+highlight@0.1.9/node_modules/@orama/highlight/dist/index.cjs","../../ui-stencil/node_modules/.pnpm/@phosphor-icons+webcomponents@2.1.5/node_modules/@phosphor-icons/webcomponents/dist/icons/PhFiles.mjs","../../ui-stencil/dist/components/src/components/internal/orama-search-results/orama-search-results.scss","../../ui-stencil/dist/components/src/components/internal/orama-search-results/orama-search-results.tsx","../../ui-stencil/dist/components/src/components/internal/orama-search/orama-search.scss","../../ui-stencil/dist/components/src/components/internal/orama-search/orama-search.tsx","../../ui-stencil/dist/components/src/components/internal/orama-sliding-panel/orama-sliding-panel.scss","../../ui-stencil/dist/components/src/components/internal/orama-sliding-panel/orama-sliding-panel.tsx","../../ui-stencil/dist/components/src/services/SearchService.ts","../../ui-stencil/dist/components/src/services/WindowService.ts","../../ui-stencil/dist/components/src/components/orama-search-box/orama-search-box.scss","../../ui-stencil/dist/components/src/components/orama-search-box/orama-search-box.tsx","../../ui-stencil/dist/components/src/components/orama-search-button/orama-search-button.scss","../../ui-stencil/dist/components/src/components/orama-search-button/orama-search-button.tsx","../src/components/stencil-generated/components.ts","../../ui-stencil/dist/esm/@stencil/core/internal/app-globals","../../ui-stencil/dist/esm/@lazy-external-entrypoint","../../ui-stencil/loader/index.js","../../ui-stencil/dist/orama-ui/orama-ui.css"],"sourcesContent":["export const NAMESPACE = 'orama-ui';\nexport const BUILD = /* orama-ui */ { allRenderFn: true, appendChildSlotFix: true, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: true, constructableCSS: true, cssAnnotations: true, devTools: false, element: false, event: true, experimentalScopedSlotChanges: true, experimentalSlotFixes: true, formAssociated: false, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: \"hydrated\", invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: false, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, modernPropertyDecls: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: true, scopedSlotTextContentFix: true, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, slot: true, slotChildNodesFix: true, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };\nexport const Env = /* orama-ui */ {};\n","/*\n Stencil Client Platform v4.30.0 | MIT Licensed | https://stenciljs.com\n */\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/client/client-build.ts\nimport { BUILD } from \"@stencil/core/internal/app-data\";\nvar Build = {\n  isDev: BUILD.isDev ? true : false,\n  isBrowser: true,\n  isServer: false,\n  isTesting: BUILD.isTesting ? true : false\n};\n\n// src/client/client-host-ref.ts\nimport { BUILD as BUILD3 } from \"@stencil/core/internal/app-data\";\n\n// src/utils/es2022-rewire-class-members.ts\nimport { BUILD as BUILD2 } from \"@stencil/core/internal/app-data\";\n\n// src/utils/constants.ts\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\nvar PrimitiveType = /* @__PURE__ */ ((PrimitiveType2) => {\n  PrimitiveType2[\"Undefined\"] = \"undefined\";\n  PrimitiveType2[\"Null\"] = \"null\";\n  PrimitiveType2[\"String\"] = \"string\";\n  PrimitiveType2[\"Number\"] = \"number\";\n  PrimitiveType2[\"SpecialNumber\"] = \"number\";\n  PrimitiveType2[\"Boolean\"] = \"boolean\";\n  PrimitiveType2[\"BigInt\"] = \"bigint\";\n  return PrimitiveType2;\n})(PrimitiveType || {});\nvar NonPrimitiveType = /* @__PURE__ */ ((NonPrimitiveType2) => {\n  NonPrimitiveType2[\"Array\"] = \"array\";\n  NonPrimitiveType2[\"Date\"] = \"date\";\n  NonPrimitiveType2[\"Map\"] = \"map\";\n  NonPrimitiveType2[\"Object\"] = \"object\";\n  NonPrimitiveType2[\"RegularExpression\"] = \"regexp\";\n  NonPrimitiveType2[\"Set\"] = \"set\";\n  NonPrimitiveType2[\"Channel\"] = \"channel\";\n  NonPrimitiveType2[\"Symbol\"] = \"symbol\";\n  return NonPrimitiveType2;\n})(NonPrimitiveType || {});\nvar TYPE_CONSTANT = \"type\";\nvar VALUE_CONSTANT = \"value\";\nvar SERIALIZED_PREFIX = \"serialized:\";\n\n// src/utils/es2022-rewire-class-members.ts\nvar reWireGetterSetter = (instance, hostRef) => {\n  var _a;\n  const cmpMeta = hostRef.$cmpMeta$;\n  const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});\n  members.map(([memberName, [memberFlags]]) => {\n    if ((BUILD2.state || BUILD2.prop) && (memberFlags & 31 /* Prop */ || memberFlags & 32 /* State */)) {\n      const ogValue = instance[memberName];\n      const ogDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(instance), memberName);\n      Object.defineProperty(instance, memberName, {\n        get() {\n          return ogDescriptor.get.call(this);\n        },\n        set(newValue) {\n          ogDescriptor.set.call(this, newValue);\n        },\n        configurable: true,\n        enumerable: true\n      });\n      instance[memberName] = hostRef.$instanceValues$.has(memberName) ? hostRef.$instanceValues$.get(memberName) : ogValue;\n    }\n  });\n};\n\n// src/client/client-host-ref.ts\nvar getHostRef = (ref) => {\n  if (ref.__stencil__getHostRef) {\n    return ref.__stencil__getHostRef();\n  }\n  return void 0;\n};\nvar registerInstance = (lazyInstance, hostRef) => {\n  lazyInstance.__stencil__getHostRef = () => hostRef;\n  hostRef.$lazyInstance$ = lazyInstance;\n  if (BUILD3.modernPropertyDecls && (BUILD3.state || BUILD3.prop)) {\n    reWireGetterSetter(lazyInstance, hostRef);\n  }\n};\nvar registerHost = (hostElement, cmpMeta) => {\n  const hostRef = {\n    $flags$: 0,\n    $hostElement$: hostElement,\n    $cmpMeta$: cmpMeta,\n    $instanceValues$: /* @__PURE__ */ new Map()\n  };\n  if (BUILD3.isDev) {\n    hostRef.$renderCount$ = 0;\n  }\n  if (BUILD3.method && BUILD3.lazyLoad) {\n    hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);\n  }\n  if (BUILD3.asyncLoading) {\n    hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);\n    hostElement[\"s-p\"] = [];\n    hostElement[\"s-rc\"] = [];\n  }\n  const ref = hostRef;\n  hostElement.__stencil__getHostRef = () => ref;\n  if (!BUILD3.lazyLoad && BUILD3.modernPropertyDecls && (BUILD3.state || BUILD3.prop)) {\n    reWireGetterSetter(hostElement, hostRef);\n  }\n  return ref;\n};\nvar isMemberInElement = (elm, memberName) => memberName in elm;\n\n// src/client/client-load-module.ts\nimport { BUILD as BUILD5 } from \"@stencil/core/internal/app-data\";\n\n// src/client/client-log.ts\nimport { BUILD as BUILD4 } from \"@stencil/core/internal/app-data\";\nvar customError;\nvar consoleError = (e, el) => (customError || console.error)(e, el);\nvar STENCIL_DEV_MODE = BUILD4.isTesting ? [\"STENCIL:\"] : [\n  \"%cstencil\",\n  \"color: white;background:#4c47ff;font-weight: bold; font-size:10px; padding:2px 6px; border-radius: 5px\"\n];\nvar consoleDevError = (...m) => console.error(...STENCIL_DEV_MODE, ...m);\nvar consoleDevWarn = (...m) => console.warn(...STENCIL_DEV_MODE, ...m);\nvar consoleDevInfo = (...m) => console.info(...STENCIL_DEV_MODE, ...m);\nvar setErrorHandler = (handler) => customError = handler;\n\n// src/client/client-load-module.ts\nvar cmpModules = /* @__PURE__ */ new Map();\nvar MODULE_IMPORT_PREFIX = \"./\";\nvar loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n  const exportName = cmpMeta.$tagName$.replace(/-/g, \"_\");\n  const bundleId = cmpMeta.$lazyBundleId$;\n  if (BUILD5.isDev && typeof bundleId !== \"string\") {\n    consoleDevError(\n      `Trying to lazily load component <${cmpMeta.$tagName$}> with style mode \"${hostRef.$modeName$}\", but it does not exist.`\n    );\n    return void 0;\n  } else if (!bundleId) {\n    return void 0;\n  }\n  const module = !BUILD5.hotModuleReplacement ? cmpModules.get(bundleId) : false;\n  if (module) {\n    return module[exportName];\n  }\n  /*!__STENCIL_STATIC_IMPORT_SWITCH__*/\n  return import(\n    /* @vite-ignore */\n    /* webpackInclude: /\\.entry\\.js$/ */\n    /* webpackExclude: /\\.system\\.entry\\.js$/ */\n    /* webpackMode: \"lazy\" */\n    `./${bundleId}.entry.js${BUILD5.hotModuleReplacement && hmrVersionId ? \"?s-hmr=\" + hmrVersionId : \"\"}`\n  ).then(\n    (importedModule) => {\n      if (!BUILD5.hotModuleReplacement) {\n        cmpModules.set(bundleId, importedModule);\n      }\n      return importedModule[exportName];\n    },\n    (e) => {\n      consoleError(e, hostRef.$hostElement$);\n    }\n  );\n};\n\n// src/client/client-style.ts\nvar styles = /* @__PURE__ */ new Map();\nvar modeResolutionChain = [];\n\n// src/client/client-task-queue.ts\nimport { BUILD as BUILD7 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/runtime-constants.ts\nvar CONTENT_REF_ID = \"r\";\nvar ORG_LOCATION_ID = \"o\";\nvar SLOT_NODE_ID = \"s\";\nvar TEXT_NODE_ID = \"t\";\nvar COMMENT_NODE_ID = \"c\";\nvar HYDRATE_ID = \"s-id\";\nvar HYDRATED_STYLE_ID = \"sty-id\";\nvar HYDRATE_CHILD_ID = \"c-id\";\nvar HYDRATED_CSS = \"{visibility:hidden}.hydrated{visibility:inherit}\";\nvar STENCIL_DOC_DATA = \"_stencilDocData\";\nvar DEFAULT_DOC_DATA = {\n  hostIds: 0,\n  rootLevelIds: 0,\n  staticComponents: /* @__PURE__ */ new Set()\n};\nvar SLOT_FB_CSS = \"slot-fb{display:contents}slot-fb[hidden]{display:none}\";\nvar XLINK_NS = \"http://www.w3.org/1999/xlink\";\nvar FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [\n  \"formAssociatedCallback\",\n  \"formResetCallback\",\n  \"formDisabledCallback\",\n  \"formStateRestoreCallback\"\n];\n\n// src/client/client-window.ts\nimport { BUILD as BUILD6 } from \"@stencil/core/internal/app-data\";\nvar win = typeof window !== \"undefined\" ? window : {};\nvar H = win.HTMLElement || class {\n};\nvar plt = {\n  $flags$: 0,\n  $resourcesUrl$: \"\",\n  jmp: (h2) => h2(),\n  raf: (h2) => requestAnimationFrame(h2),\n  ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n  rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n  ce: (eventName, opts) => new CustomEvent(eventName, opts)\n};\nvar setPlatformHelpers = (helpers) => {\n  Object.assign(plt, helpers);\n};\nvar supportsShadow = BUILD6.shadowDom;\nvar supportsListenerOptions = /* @__PURE__ */ (() => {\n  var _a;\n  let supportsListenerOptions2 = false;\n  try {\n    (_a = win.document) == null ? void 0 : _a.addEventListener(\n      \"e\",\n      null,\n      Object.defineProperty({}, \"passive\", {\n        get() {\n          supportsListenerOptions2 = true;\n        }\n      })\n    );\n  } catch (e) {\n  }\n  return supportsListenerOptions2;\n})();\nvar promiseResolve = (v) => Promise.resolve(v);\nvar supportsConstructableStylesheets = BUILD6.constructableCSS ? /* @__PURE__ */ (() => {\n  try {\n    new CSSStyleSheet();\n    return typeof new CSSStyleSheet().replaceSync === \"function\";\n  } catch (e) {\n  }\n  return false;\n})() : false;\n\n// src/client/client-task-queue.ts\nvar queueCongestion = 0;\nvar queuePending = false;\nvar queueDomReads = [];\nvar queueDomWrites = [];\nvar queueDomWritesLow = [];\nvar queueTask = (queue, write) => (cb) => {\n  queue.push(cb);\n  if (!queuePending) {\n    queuePending = true;\n    if (write && plt.$flags$ & 4 /* queueSync */) {\n      nextTick(flush);\n    } else {\n      plt.raf(flush);\n    }\n  }\n};\nvar consume = (queue) => {\n  for (let i2 = 0; i2 < queue.length; i2++) {\n    try {\n      queue[i2](performance.now());\n    } catch (e) {\n      consoleError(e);\n    }\n  }\n  queue.length = 0;\n};\nvar consumeTimeout = (queue, timeout) => {\n  let i2 = 0;\n  let ts = 0;\n  while (i2 < queue.length && (ts = performance.now()) < timeout) {\n    try {\n      queue[i2++](ts);\n    } catch (e) {\n      consoleError(e);\n    }\n  }\n  if (i2 === queue.length) {\n    queue.length = 0;\n  } else if (i2 !== 0) {\n    queue.splice(0, i2);\n  }\n};\nvar flush = () => {\n  if (BUILD7.asyncQueue) {\n    queueCongestion++;\n  }\n  consume(queueDomReads);\n  if (BUILD7.asyncQueue) {\n    const timeout = (plt.$flags$ & 6 /* queueMask */) === 2 /* appLoaded */ ? performance.now() + 14 * Math.ceil(queueCongestion * (1 / 10)) : Infinity;\n    consumeTimeout(queueDomWrites, timeout);\n    consumeTimeout(queueDomWritesLow, timeout);\n    if (queueDomWrites.length > 0) {\n      queueDomWritesLow.push(...queueDomWrites);\n      queueDomWrites.length = 0;\n    }\n    if (queuePending = queueDomReads.length + queueDomWrites.length + queueDomWritesLow.length > 0) {\n      plt.raf(flush);\n    } else {\n      queueCongestion = 0;\n    }\n  } else {\n    consume(queueDomWrites);\n    if (queuePending = queueDomReads.length > 0) {\n      plt.raf(flush);\n    }\n  }\n};\nvar nextTick = (cb) => promiseResolve().then(cb);\nvar readTask = /* @__PURE__ */ queueTask(queueDomReads, false);\nvar writeTask = /* @__PURE__ */ queueTask(queueDomWrites, true);\n\n// src/client/index.ts\nimport { BUILD as BUILD29, Env, NAMESPACE as NAMESPACE2 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/asset-path.ts\nvar getAssetPath = (path) => {\n  const assetUrl = new URL(path, plt.$resourcesUrl$);\n  return assetUrl.origin !== win.location.origin ? assetUrl.href : assetUrl.pathname;\n};\nvar setAssetPath = (path) => plt.$resourcesUrl$ = path;\n\n// src/runtime/bootstrap-custom-element.ts\nimport { BUILD as BUILD26 } from \"@stencil/core/internal/app-data\";\n\n// src/utils/helpers.ts\nvar isDef = (v) => v != null && v !== void 0;\nvar isComplexType = (o) => {\n  o = typeof o;\n  return o === \"object\" || o === \"function\";\n};\n\n// src/utils/query-nonce-meta-tag-content.ts\nfunction queryNonceMetaTagContent(doc) {\n  var _a, _b, _c;\n  return (_c = (_b = (_a = doc.head) == null ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) == null ? void 0 : _b.getAttribute(\"content\")) != null ? _c : void 0;\n}\n\n// src/utils/regular-expression.ts\nvar escapeRegExpSpecialCharacters = (text) => {\n  return text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n// src/utils/remote-value.ts\nvar RemoteValue = class _RemoteValue {\n  /**\n   * Deserializes a LocalValue serialized object back to its original JavaScript representation\n   *\n   * @param serialized The serialized LocalValue object\n   * @returns The original JavaScript value/object\n   */\n  static fromLocalValue(serialized) {\n    const type = serialized[TYPE_CONSTANT];\n    const value = VALUE_CONSTANT in serialized ? serialized[VALUE_CONSTANT] : void 0;\n    switch (type) {\n      case \"string\" /* String */:\n        return value;\n      case \"boolean\" /* Boolean */:\n        return value;\n      case \"bigint\" /* BigInt */:\n        return BigInt(value);\n      case \"undefined\" /* Undefined */:\n        return void 0;\n      case \"null\" /* Null */:\n        return null;\n      case \"number\" /* Number */:\n        if (value === \"NaN\") return NaN;\n        if (value === \"-0\") return -0;\n        if (value === \"Infinity\") return Infinity;\n        if (value === \"-Infinity\") return -Infinity;\n        return value;\n      case \"array\" /* Array */:\n        return value.map((item) => _RemoteValue.fromLocalValue(item));\n      case \"date\" /* Date */:\n        return new Date(value);\n      case \"map\" /* Map */:\n        const map2 = /* @__PURE__ */ new Map();\n        for (const [key, val] of value) {\n          const deserializedKey = typeof key === \"object\" && key !== null ? _RemoteValue.fromLocalValue(key) : key;\n          const deserializedValue = _RemoteValue.fromLocalValue(val);\n          map2.set(deserializedKey, deserializedValue);\n        }\n        return map2;\n      case \"object\" /* Object */:\n        const obj = {};\n        for (const [key, val] of value) {\n          obj[key] = _RemoteValue.fromLocalValue(val);\n        }\n        return obj;\n      case \"regexp\" /* RegularExpression */:\n        const { pattern, flags } = value;\n        return new RegExp(pattern, flags);\n      case \"set\" /* Set */:\n        const set = /* @__PURE__ */ new Set();\n        for (const item of value) {\n          set.add(_RemoteValue.fromLocalValue(item));\n        }\n        return set;\n      case \"symbol\" /* Symbol */:\n        return Symbol(value);\n      default:\n        throw new Error(`Unsupported type: ${type}`);\n    }\n  }\n  /**\n   * Utility method to deserialize multiple LocalValues at once\n   *\n   * @param serializedValues Array of serialized LocalValue objects\n   * @returns Array of deserialized JavaScript values\n   */\n  static fromLocalValueArray(serializedValues) {\n    return serializedValues.map((value) => _RemoteValue.fromLocalValue(value));\n  }\n  /**\n   * Verifies if the given object matches the structure of a serialized LocalValue\n   *\n   * @param obj Object to verify\n   * @returns boolean indicating if the object has LocalValue structure\n   */\n  static isLocalValueObject(obj) {\n    if (typeof obj !== \"object\" || obj === null) {\n      return false;\n    }\n    if (!obj.hasOwnProperty(TYPE_CONSTANT)) {\n      return false;\n    }\n    const type = obj[TYPE_CONSTANT];\n    const hasTypeProperty = Object.values({ ...PrimitiveType, ...NonPrimitiveType }).includes(type);\n    if (!hasTypeProperty) {\n      return false;\n    }\n    if (type !== \"null\" /* Null */ && type !== \"undefined\" /* Undefined */) {\n      return obj.hasOwnProperty(VALUE_CONSTANT);\n    }\n    return true;\n  }\n};\n\n// src/utils/result.ts\nvar result_exports = {};\n__export(result_exports, {\n  err: () => err,\n  map: () => map,\n  ok: () => ok,\n  unwrap: () => unwrap,\n  unwrapErr: () => unwrapErr\n});\nvar ok = (value) => ({\n  isOk: true,\n  isErr: false,\n  value\n});\nvar err = (value) => ({\n  isOk: false,\n  isErr: true,\n  value\n});\nfunction map(result, fn) {\n  if (result.isOk) {\n    const val = fn(result.value);\n    if (val instanceof Promise) {\n      return val.then((newVal) => ok(newVal));\n    } else {\n      return ok(val);\n    }\n  }\n  if (result.isErr) {\n    const value = result.value;\n    return err(value);\n  }\n  throw \"should never get here\";\n}\nvar unwrap = (result) => {\n  if (result.isOk) {\n    return result.value;\n  } else {\n    throw result.value;\n  }\n};\nvar unwrapErr = (result) => {\n  if (result.isErr) {\n    return result.value;\n  } else {\n    throw result.value;\n  }\n};\n\n// src/utils/serialize.ts\nfunction deserializeProperty(value) {\n  if (typeof value !== \"string\" || !value.startsWith(SERIALIZED_PREFIX)) {\n    return value;\n  }\n  return RemoteValue.fromLocalValue(JSON.parse(atob(value.slice(SERIALIZED_PREFIX.length))));\n}\n\n// src/utils/util.ts\nvar lowerPathParam = (fn) => (p) => fn(p.toLowerCase());\nvar isDtsFile = lowerPathParam((p) => p.endsWith(\".d.ts\") || p.endsWith(\".d.mts\") || p.endsWith(\".d.cts\"));\nvar isTsFile = lowerPathParam(\n  (p) => !isDtsFile(p) && (p.endsWith(\".ts\") || p.endsWith(\".mts\") || p.endsWith(\".cts\"))\n);\nvar isTsxFile = lowerPathParam(\n  (p) => p.endsWith(\".tsx\") || p.endsWith(\".mtsx\") || p.endsWith(\".ctsx\")\n);\nvar isJsxFile = lowerPathParam(\n  (p) => p.endsWith(\".jsx\") || p.endsWith(\".mjsx\") || p.endsWith(\".cjsx\")\n);\nvar isJsFile = lowerPathParam((p) => p.endsWith(\".js\") || p.endsWith(\".mjs\") || p.endsWith(\".cjs\"));\n\n// src/runtime/connected-callback.ts\nimport { BUILD as BUILD24 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/client-hydrate.ts\nimport { BUILD as BUILD12 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/dom-extras.ts\nimport { BUILD as BUILD9 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/slot-polyfill-utils.ts\nimport { BUILD as BUILD8 } from \"@stencil/core/internal/app-data\";\nvar updateFallbackSlotVisibility = (elm) => {\n  const childNodes = internalCall(elm, \"childNodes\");\n  if (elm.tagName && elm.tagName.includes(\"-\") && elm[\"s-cr\"] && elm.tagName !== \"SLOT-FB\") {\n    getHostSlotNodes(childNodes, elm.tagName).forEach((slotNode) => {\n      if (slotNode.nodeType === 1 /* ElementNode */ && slotNode.tagName === \"SLOT-FB\") {\n        if (getSlotChildSiblings(slotNode, getSlotName(slotNode), false).length) {\n          slotNode.hidden = true;\n        } else {\n          slotNode.hidden = false;\n        }\n      }\n    });\n  }\n  let i2 = 0;\n  for (i2 = 0; i2 < childNodes.length; i2++) {\n    const childNode = childNodes[i2];\n    if (childNode.nodeType === 1 /* ElementNode */ && internalCall(childNode, \"childNodes\").length) {\n      updateFallbackSlotVisibility(childNode);\n    }\n  }\n};\nvar getSlottedChildNodes = (childNodes) => {\n  const result = [];\n  for (let i2 = 0; i2 < childNodes.length; i2++) {\n    const slottedNode = childNodes[i2][\"s-nr\"] || void 0;\n    if (slottedNode && slottedNode.isConnected) {\n      result.push(slottedNode);\n    }\n  }\n  return result;\n};\nfunction getHostSlotNodes(childNodes, hostName, slotName) {\n  let i2 = 0;\n  let slottedNodes = [];\n  let childNode;\n  for (; i2 < childNodes.length; i2++) {\n    childNode = childNodes[i2];\n    if (childNode[\"s-sr\"] && (!hostName || childNode[\"s-hn\"] === hostName) && (slotName === void 0 || getSlotName(childNode) === slotName)) {\n      slottedNodes.push(childNode);\n      if (typeof slotName !== \"undefined\") return slottedNodes;\n    }\n    slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)];\n  }\n  return slottedNodes;\n}\nvar getSlotChildSiblings = (slot, slotName, includeSlot = true) => {\n  const childNodes = [];\n  if (includeSlot && slot[\"s-sr\"] || !slot[\"s-sr\"]) childNodes.push(slot);\n  let node = slot;\n  while (node = node.nextSibling) {\n    if (getSlotName(node) === slotName && (includeSlot || !node[\"s-sr\"])) childNodes.push(node);\n  }\n  return childNodes;\n};\nvar isNodeLocatedInSlot = (nodeToRelocate, slotName) => {\n  if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n    if (nodeToRelocate.getAttribute(\"slot\") === null && slotName === \"\") {\n      return true;\n    }\n    if (nodeToRelocate.getAttribute(\"slot\") === slotName) {\n      return true;\n    }\n    return false;\n  }\n  if (nodeToRelocate[\"s-sn\"] === slotName) {\n    return true;\n  }\n  return slotName === \"\";\n};\nvar addSlotRelocateNode = (newChild, slotNode, prepend, position) => {\n  if (newChild[\"s-ol\"] && newChild[\"s-ol\"].isConnected) {\n    return;\n  }\n  const slottedNodeLocation = document.createTextNode(\"\");\n  slottedNodeLocation[\"s-nr\"] = newChild;\n  if (!slotNode[\"s-cr\"] || !slotNode[\"s-cr\"].parentNode) return;\n  const parent = slotNode[\"s-cr\"].parentNode;\n  const appendMethod = prepend ? internalCall(parent, \"prepend\") : internalCall(parent, \"appendChild\");\n  if (BUILD8.hydrateClientSide && typeof position !== \"undefined\") {\n    slottedNodeLocation[\"s-oo\"] = position;\n    const childNodes = internalCall(parent, \"childNodes\");\n    const slotRelocateNodes = [slottedNodeLocation];\n    childNodes.forEach((n) => {\n      if (n[\"s-nr\"]) slotRelocateNodes.push(n);\n    });\n    slotRelocateNodes.sort((a, b) => {\n      if (!a[\"s-oo\"] || a[\"s-oo\"] < (b[\"s-oo\"] || 0)) return -1;\n      else if (!b[\"s-oo\"] || b[\"s-oo\"] < a[\"s-oo\"]) return 1;\n      return 0;\n    });\n    slotRelocateNodes.forEach((n) => appendMethod.call(parent, n));\n  } else {\n    appendMethod.call(parent, slottedNodeLocation);\n  }\n  newChild[\"s-ol\"] = slottedNodeLocation;\n  newChild[\"s-sh\"] = slotNode[\"s-hn\"];\n};\nvar getSlotName = (node) => typeof node[\"s-sn\"] === \"string\" ? node[\"s-sn\"] : node.nodeType === 1 && node.getAttribute(\"slot\") || void 0;\nfunction patchSlotNode(node) {\n  if (node.assignedElements || node.assignedNodes || !node[\"s-sr\"]) return;\n  const assignedFactory = (elementsOnly) => (function(opts) {\n    const toReturn = [];\n    const slotName = this[\"s-sn\"];\n    if (opts == null ? void 0 : opts.flatten) {\n      console.error(`\n          Flattening is not supported for Stencil non-shadow slots. \n          You can use \\`.childNodes\\` to nested slot fallback content.\n          If you have a particular use case, please open an issue on the Stencil repo.\n        `);\n    }\n    const parent = this[\"s-cr\"].parentElement;\n    const slottedNodes = parent.__childNodes ? parent.childNodes : getSlottedChildNodes(parent.childNodes);\n    slottedNodes.forEach((n) => {\n      if (slotName === getSlotName(n)) {\n        toReturn.push(n);\n      }\n    });\n    if (elementsOnly) {\n      return toReturn.filter((n) => n.nodeType === 1 /* ElementNode */);\n    }\n    return toReturn;\n  }).bind(node);\n  node.assignedElements = assignedFactory(true);\n  node.assignedNodes = assignedFactory(false);\n}\nfunction dispatchSlotChangeEvent(elm) {\n  elm.dispatchEvent(new CustomEvent(\"slotchange\", { bubbles: false, cancelable: false, composed: false }));\n}\nfunction findSlotFromSlottedNode(slottedNode, parentHost) {\n  var _a;\n  parentHost = parentHost || ((_a = slottedNode[\"s-ol\"]) == null ? void 0 : _a.parentElement);\n  if (!parentHost) return { slotNode: null, slotName: \"\" };\n  const slotName = slottedNode[\"s-sn\"] = getSlotName(slottedNode) || \"\";\n  const childNodes = internalCall(parentHost, \"childNodes\");\n  const slotNode = getHostSlotNodes(childNodes, parentHost.tagName, slotName)[0];\n  return { slotNode, slotName };\n}\n\n// src/runtime/dom-extras.ts\nvar patchPseudoShadowDom = (hostElementPrototype) => {\n  patchCloneNode(hostElementPrototype);\n  patchSlotAppendChild(hostElementPrototype);\n  patchSlotAppend(hostElementPrototype);\n  patchSlotPrepend(hostElementPrototype);\n  patchSlotInsertAdjacentElement(hostElementPrototype);\n  patchSlotInsertAdjacentHTML(hostElementPrototype);\n  patchSlotInsertAdjacentText(hostElementPrototype);\n  patchInsertBefore(hostElementPrototype);\n  patchTextContent(hostElementPrototype);\n  patchChildSlotNodes(hostElementPrototype);\n  patchSlotRemoveChild(hostElementPrototype);\n};\nvar patchCloneNode = (HostElementPrototype) => {\n  const orgCloneNode = HostElementPrototype.cloneNode;\n  HostElementPrototype.cloneNode = function(deep) {\n    const srcNode = this;\n    const isShadowDom = BUILD9.shadowDom ? srcNode.shadowRoot && supportsShadow : false;\n    const clonedNode = orgCloneNode.call(srcNode, isShadowDom ? deep : false);\n    if (BUILD9.slot && !isShadowDom && deep) {\n      let i2 = 0;\n      let slotted, nonStencilNode;\n      const stencilPrivates = [\n        \"s-id\",\n        \"s-cr\",\n        \"s-lr\",\n        \"s-rc\",\n        \"s-sc\",\n        \"s-p\",\n        \"s-cn\",\n        \"s-sr\",\n        \"s-sn\",\n        \"s-hn\",\n        \"s-ol\",\n        \"s-nr\",\n        \"s-si\",\n        \"s-rf\",\n        \"s-scs\"\n      ];\n      const childNodes = this.__childNodes || this.childNodes;\n      for (; i2 < childNodes.length; i2++) {\n        slotted = childNodes[i2][\"s-nr\"];\n        nonStencilNode = stencilPrivates.every((privateField) => !childNodes[i2][privateField]);\n        if (slotted) {\n          if (BUILD9.appendChildSlotFix && clonedNode.__appendChild) {\n            clonedNode.__appendChild(slotted.cloneNode(true));\n          } else {\n            clonedNode.appendChild(slotted.cloneNode(true));\n          }\n        }\n        if (nonStencilNode) {\n          clonedNode.appendChild(childNodes[i2].cloneNode(true));\n        }\n      }\n    }\n    return clonedNode;\n  };\n};\nvar patchSlotAppendChild = (HostElementPrototype) => {\n  HostElementPrototype.__appendChild = HostElementPrototype.appendChild;\n  HostElementPrototype.appendChild = function(newChild) {\n    const { slotName, slotNode } = findSlotFromSlottedNode(newChild, this);\n    if (slotNode) {\n      addSlotRelocateNode(newChild, slotNode);\n      const slotChildNodes = getSlotChildSiblings(slotNode, slotName);\n      const appendAfter = slotChildNodes[slotChildNodes.length - 1];\n      const parent = internalCall(appendAfter, \"parentNode\");\n      const insertedNode = internalCall(parent, \"insertBefore\")(newChild, appendAfter.nextSibling);\n      dispatchSlotChangeEvent(slotNode);\n      updateFallbackSlotVisibility(this);\n      return insertedNode;\n    }\n    return this.__appendChild(newChild);\n  };\n};\nvar patchSlotRemoveChild = (ElementPrototype) => {\n  ElementPrototype.__removeChild = ElementPrototype.removeChild;\n  ElementPrototype.removeChild = function(toRemove) {\n    if (toRemove && typeof toRemove[\"s-sn\"] !== \"undefined\") {\n      const childNodes = this.__childNodes || this.childNodes;\n      const slotNode = getHostSlotNodes(childNodes, this.tagName, toRemove[\"s-sn\"]);\n      if (slotNode && toRemove.isConnected) {\n        toRemove.remove();\n        updateFallbackSlotVisibility(this);\n        return;\n      }\n    }\n    return this.__removeChild(toRemove);\n  };\n};\nvar patchSlotPrepend = (HostElementPrototype) => {\n  HostElementPrototype.__prepend = HostElementPrototype.prepend;\n  HostElementPrototype.prepend = function(...newChildren) {\n    newChildren.forEach((newChild) => {\n      if (typeof newChild === \"string\") {\n        newChild = this.ownerDocument.createTextNode(newChild);\n      }\n      const slotName = (newChild[\"s-sn\"] = getSlotName(newChild)) || \"\";\n      const childNodes = internalCall(this, \"childNodes\");\n      const slotNode = getHostSlotNodes(childNodes, this.tagName, slotName)[0];\n      if (slotNode) {\n        addSlotRelocateNode(newChild, slotNode, true);\n        const slotChildNodes = getSlotChildSiblings(slotNode, slotName);\n        const appendAfter = slotChildNodes[0];\n        const parent = internalCall(appendAfter, \"parentNode\");\n        const toReturn = internalCall(parent, \"insertBefore\")(newChild, internalCall(appendAfter, \"nextSibling\"));\n        dispatchSlotChangeEvent(slotNode);\n        return toReturn;\n      }\n      if (newChild.nodeType === 1 && !!newChild.getAttribute(\"slot\")) {\n        newChild.hidden = true;\n      }\n      return HostElementPrototype.__prepend(newChild);\n    });\n  };\n};\nvar patchSlotAppend = (HostElementPrototype) => {\n  HostElementPrototype.__append = HostElementPrototype.append;\n  HostElementPrototype.append = function(...newChildren) {\n    newChildren.forEach((newChild) => {\n      if (typeof newChild === \"string\") {\n        newChild = this.ownerDocument.createTextNode(newChild);\n      }\n      this.appendChild(newChild);\n    });\n  };\n};\nvar patchSlotInsertAdjacentHTML = (HostElementPrototype) => {\n  const originalInsertAdjacentHtml = HostElementPrototype.insertAdjacentHTML;\n  HostElementPrototype.insertAdjacentHTML = function(position, text) {\n    if (position !== \"afterbegin\" && position !== \"beforeend\") {\n      return originalInsertAdjacentHtml.call(this, position, text);\n    }\n    const container = this.ownerDocument.createElement(\"_\");\n    let node;\n    container.innerHTML = text;\n    if (position === \"afterbegin\") {\n      while (node = container.firstChild) {\n        this.prepend(node);\n      }\n    } else if (position === \"beforeend\") {\n      while (node = container.firstChild) {\n        this.append(node);\n      }\n    }\n  };\n};\nvar patchSlotInsertAdjacentText = (HostElementPrototype) => {\n  HostElementPrototype.insertAdjacentText = function(position, text) {\n    this.insertAdjacentHTML(position, text);\n  };\n};\nvar patchInsertBefore = (HostElementPrototype) => {\n  const eleProto = HostElementPrototype;\n  if (eleProto.__insertBefore) return;\n  eleProto.__insertBefore = HostElementPrototype.insertBefore;\n  HostElementPrototype.insertBefore = function(newChild, currentChild) {\n    const { slotName, slotNode } = findSlotFromSlottedNode(newChild, this);\n    const slottedNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes);\n    if (slotNode) {\n      let found = false;\n      slottedNodes.forEach((childNode) => {\n        if (childNode === currentChild || currentChild === null) {\n          found = true;\n          if (currentChild === null || slotName !== currentChild[\"s-sn\"]) {\n            this.appendChild(newChild);\n            return;\n          }\n          if (slotName === currentChild[\"s-sn\"]) {\n            addSlotRelocateNode(newChild, slotNode);\n            const parent = internalCall(currentChild, \"parentNode\");\n            internalCall(parent, \"insertBefore\")(newChild, currentChild);\n            dispatchSlotChangeEvent(slotNode);\n          }\n          return;\n        }\n      });\n      if (found) return newChild;\n    }\n    const parentNode = currentChild == null ? void 0 : currentChild.__parentNode;\n    if (parentNode && !this.isSameNode(parentNode)) {\n      return this.appendChild(newChild);\n    }\n    return this.__insertBefore(newChild, currentChild);\n  };\n};\nvar patchSlotInsertAdjacentElement = (HostElementPrototype) => {\n  const originalInsertAdjacentElement = HostElementPrototype.insertAdjacentElement;\n  HostElementPrototype.insertAdjacentElement = function(position, element) {\n    if (position !== \"afterbegin\" && position !== \"beforeend\") {\n      return originalInsertAdjacentElement.call(this, position, element);\n    }\n    if (position === \"afterbegin\") {\n      this.prepend(element);\n      return element;\n    } else if (position === \"beforeend\") {\n      this.append(element);\n      return element;\n    }\n    return element;\n  };\n};\nvar patchTextContent = (hostElementPrototype) => {\n  patchHostOriginalAccessor(\"textContent\", hostElementPrototype);\n  Object.defineProperty(hostElementPrototype, \"textContent\", {\n    get: function() {\n      let text = \"\";\n      const childNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes);\n      childNodes.forEach((node) => text += node.textContent || \"\");\n      return text;\n    },\n    set: function(value) {\n      const childNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes);\n      childNodes.forEach((node) => {\n        if (node[\"s-ol\"]) node[\"s-ol\"].remove();\n        node.remove();\n      });\n      this.insertAdjacentHTML(\"beforeend\", value);\n    }\n  });\n};\nvar patchChildSlotNodes = (elm) => {\n  class FakeNodeList extends Array {\n    item(n) {\n      return this[n];\n    }\n  }\n  patchHostOriginalAccessor(\"children\", elm);\n  Object.defineProperty(elm, \"children\", {\n    get() {\n      return this.childNodes.filter((n) => n.nodeType === 1);\n    }\n  });\n  Object.defineProperty(elm, \"childElementCount\", {\n    get() {\n      return this.children.length;\n    }\n  });\n  patchHostOriginalAccessor(\"firstChild\", elm);\n  Object.defineProperty(elm, \"firstChild\", {\n    get() {\n      return this.childNodes[0];\n    }\n  });\n  patchHostOriginalAccessor(\"lastChild\", elm);\n  Object.defineProperty(elm, \"lastChild\", {\n    get() {\n      return this.childNodes[this.childNodes.length - 1];\n    }\n  });\n  patchHostOriginalAccessor(\"childNodes\", elm);\n  Object.defineProperty(elm, \"childNodes\", {\n    get() {\n      const result = new FakeNodeList();\n      result.push(...getSlottedChildNodes(this.__childNodes));\n      return result;\n    }\n  });\n};\nvar patchSlottedNode = (node) => {\n  if (!node || node.__nextSibling !== void 0 || !globalThis.Node) return;\n  patchNextSibling(node);\n  patchPreviousSibling(node);\n  patchParentNode(node);\n  if (node.nodeType === Node.ELEMENT_NODE) {\n    patchNextElementSibling(node);\n    patchPreviousElementSibling(node);\n  }\n};\nvar patchNextSibling = (node) => {\n  if (!node || node.__nextSibling) return;\n  patchHostOriginalAccessor(\"nextSibling\", node);\n  Object.defineProperty(node, \"nextSibling\", {\n    get: function() {\n      var _a;\n      const parentNodes = (_a = this[\"s-ol\"]) == null ? void 0 : _a.parentNode.childNodes;\n      const index = parentNodes == null ? void 0 : parentNodes.indexOf(this);\n      if (parentNodes && index > -1) {\n        return parentNodes[index + 1];\n      }\n      return this.__nextSibling;\n    }\n  });\n};\nvar patchNextElementSibling = (element) => {\n  if (!element || element.__nextElementSibling) return;\n  patchHostOriginalAccessor(\"nextElementSibling\", element);\n  Object.defineProperty(element, \"nextElementSibling\", {\n    get: function() {\n      var _a;\n      const parentEles = (_a = this[\"s-ol\"]) == null ? void 0 : _a.parentNode.children;\n      const index = parentEles == null ? void 0 : parentEles.indexOf(this);\n      if (parentEles && index > -1) {\n        return parentEles[index + 1];\n      }\n      return this.__nextElementSibling;\n    }\n  });\n};\nvar patchPreviousSibling = (node) => {\n  if (!node || node.__previousSibling) return;\n  patchHostOriginalAccessor(\"previousSibling\", node);\n  Object.defineProperty(node, \"previousSibling\", {\n    get: function() {\n      var _a;\n      const parentNodes = (_a = this[\"s-ol\"]) == null ? void 0 : _a.parentNode.childNodes;\n      const index = parentNodes == null ? void 0 : parentNodes.indexOf(this);\n      if (parentNodes && index > -1) {\n        return parentNodes[index - 1];\n      }\n      return this.__previousSibling;\n    }\n  });\n};\nvar patchPreviousElementSibling = (element) => {\n  if (!element || element.__previousElementSibling) return;\n  patchHostOriginalAccessor(\"previousElementSibling\", element);\n  Object.defineProperty(element, \"previousElementSibling\", {\n    get: function() {\n      var _a;\n      const parentNodes = (_a = this[\"s-ol\"]) == null ? void 0 : _a.parentNode.children;\n      const index = parentNodes == null ? void 0 : parentNodes.indexOf(this);\n      if (parentNodes && index > -1) {\n        return parentNodes[index - 1];\n      }\n      return this.__previousElementSibling;\n    }\n  });\n};\nvar patchParentNode = (node) => {\n  if (!node || node.__parentNode) return;\n  patchHostOriginalAccessor(\"parentNode\", node);\n  Object.defineProperty(node, \"parentNode\", {\n    get: function() {\n      var _a;\n      return ((_a = this[\"s-ol\"]) == null ? void 0 : _a.parentNode) || this.__parentNode;\n    },\n    set: function(value) {\n      this.__parentNode = value;\n    }\n  });\n};\nvar validElementPatches = [\"children\", \"nextElementSibling\", \"previousElementSibling\"];\nvar validNodesPatches = [\n  \"childNodes\",\n  \"firstChild\",\n  \"lastChild\",\n  \"nextSibling\",\n  \"previousSibling\",\n  \"textContent\",\n  \"parentNode\"\n];\nfunction patchHostOriginalAccessor(accessorName, node) {\n  let accessor;\n  if (validElementPatches.includes(accessorName)) {\n    accessor = Object.getOwnPropertyDescriptor(Element.prototype, accessorName);\n  } else if (validNodesPatches.includes(accessorName)) {\n    accessor = Object.getOwnPropertyDescriptor(Node.prototype, accessorName);\n  }\n  if (!accessor) {\n    accessor = Object.getOwnPropertyDescriptor(node, accessorName);\n  }\n  if (accessor) Object.defineProperty(node, \"__\" + accessorName, accessor);\n}\nfunction internalCall(node, method) {\n  if (\"__\" + method in node) {\n    const toReturn = node[\"__\" + method];\n    if (typeof toReturn !== \"function\") return toReturn;\n    return toReturn.bind(node);\n  } else {\n    if (typeof node[method] !== \"function\") return node[method];\n    return node[method].bind(node);\n  }\n}\n\n// src/runtime/profile.ts\nimport { BUILD as BUILD10 } from \"@stencil/core/internal/app-data\";\nvar i = 0;\nvar createTime = (fnName, tagName = \"\") => {\n  if (BUILD10.profile && performance.mark) {\n    const key = `st:${fnName}:${tagName}:${i++}`;\n    performance.mark(key);\n    return () => performance.measure(`[Stencil] ${fnName}() <${tagName}>`, key);\n  } else {\n    return () => {\n      return;\n    };\n  }\n};\nvar uniqueTime = (key, measureText) => {\n  if (BUILD10.profile && performance.mark) {\n    if (performance.getEntriesByName(key, \"mark\").length === 0) {\n      performance.mark(key);\n    }\n    return () => {\n      if (performance.getEntriesByName(measureText, \"measure\").length === 0) {\n        performance.measure(measureText, key);\n      }\n    };\n  } else {\n    return () => {\n      return;\n    };\n  }\n};\nvar inspect = (ref) => {\n  const hostRef = getHostRef(ref);\n  if (!hostRef) {\n    return void 0;\n  }\n  const flags = hostRef.$flags$;\n  const hostElement = hostRef.$hostElement$;\n  return {\n    renderCount: hostRef.$renderCount$,\n    flags: {\n      hasRendered: !!(flags & 2 /* hasRendered */),\n      hasConnected: !!(flags & 1 /* hasConnected */),\n      isWaitingForChildren: !!(flags & 4 /* isWaitingForChildren */),\n      isConstructingInstance: !!(flags & 8 /* isConstructingInstance */),\n      isQueuedForUpdate: !!(flags & 16 /* isQueuedForUpdate */),\n      hasInitializedComponent: !!(flags & 32 /* hasInitializedComponent */),\n      hasLoadedComponent: !!(flags & 64 /* hasLoadedComponent */),\n      isWatchReady: !!(flags & 128 /* isWatchReady */),\n      isListenReady: !!(flags & 256 /* isListenReady */),\n      needsRerender: !!(flags & 512 /* needsRerender */)\n    },\n    instanceValues: hostRef.$instanceValues$,\n    ancestorComponent: hostRef.$ancestorComponent$,\n    hostElement,\n    lazyInstance: hostRef.$lazyInstance$,\n    vnode: hostRef.$vnode$,\n    modeName: hostRef.$modeName$,\n    onReadyPromise: hostRef.$onReadyPromise$,\n    onReadyResolve: hostRef.$onReadyResolve$,\n    onInstancePromise: hostRef.$onInstancePromise$,\n    onInstanceResolve: hostRef.$onInstanceResolve$,\n    onRenderResolve: hostRef.$onRenderResolve$,\n    queuedListeners: hostRef.$queuedListeners$,\n    rmListeners: hostRef.$rmListeners$,\n    [\"s-id\"]: hostElement[\"s-id\"],\n    [\"s-cr\"]: hostElement[\"s-cr\"],\n    [\"s-lr\"]: hostElement[\"s-lr\"],\n    [\"s-p\"]: hostElement[\"s-p\"],\n    [\"s-rc\"]: hostElement[\"s-rc\"],\n    [\"s-sc\"]: hostElement[\"s-sc\"]\n  };\n};\nvar installDevTools = () => {\n  if (BUILD10.devTools) {\n    const stencil = win.stencil = win.stencil || {};\n    const originalInspect = stencil.inspect;\n    stencil.inspect = (ref) => {\n      let result = inspect(ref);\n      if (!result && typeof originalInspect === \"function\") {\n        result = originalInspect(ref);\n      }\n      return result;\n    };\n  }\n};\n\n// src/runtime/vdom/h.ts\nimport { BUILD as BUILD11 } from \"@stencil/core/internal/app-data\";\nvar h = (nodeName, vnodeData, ...children) => {\n  let child = null;\n  let key = null;\n  let slotName = null;\n  let simple = false;\n  let lastSimple = false;\n  const vNodeChildren = [];\n  const walk = (c) => {\n    for (let i2 = 0; i2 < c.length; i2++) {\n      child = c[i2];\n      if (Array.isArray(child)) {\n        walk(child);\n      } else if (child != null && typeof child !== \"boolean\") {\n        if (simple = typeof nodeName !== \"function\" && !isComplexType(child)) {\n          child = String(child);\n        } else if (BUILD11.isDev && typeof nodeName !== \"function\" && child.$flags$ === void 0) {\n          consoleDevError(`vNode passed as children has unexpected type.\nMake sure it's using the correct h() function.\nEmpty objects can also be the cause, look for JSX comments that became objects.`);\n        }\n        if (simple && lastSimple) {\n          vNodeChildren[vNodeChildren.length - 1].$text$ += child;\n        } else {\n          vNodeChildren.push(simple ? newVNode(null, child) : child);\n        }\n        lastSimple = simple;\n      }\n    }\n  };\n  walk(children);\n  if (vnodeData) {\n    if (BUILD11.isDev && nodeName === \"input\") {\n      validateInputProperties(vnodeData);\n    }\n    if (BUILD11.vdomKey && vnodeData.key) {\n      key = vnodeData.key;\n    }\n    if (BUILD11.slotRelocation && vnodeData.name) {\n      slotName = vnodeData.name;\n    }\n    if (BUILD11.vdomClass) {\n      const classData = vnodeData.className || vnodeData.class;\n      if (classData) {\n        vnodeData.class = typeof classData !== \"object\" ? classData : Object.keys(classData).filter((k) => classData[k]).join(\" \");\n      }\n    }\n  }\n  if (BUILD11.isDev && vNodeChildren.some(isHost)) {\n    consoleDevError(`The <Host> must be the single root component. Make sure:\n- You are NOT using hostData() and <Host> in the same component.\n- <Host> is used once, and it's the single root component of the render() function.`);\n  }\n  if (BUILD11.vdomFunctional && typeof nodeName === \"function\") {\n    return nodeName(\n      vnodeData === null ? {} : vnodeData,\n      vNodeChildren,\n      vdomFnUtils\n    );\n  }\n  const vnode = newVNode(nodeName, null);\n  vnode.$attrs$ = vnodeData;\n  if (vNodeChildren.length > 0) {\n    vnode.$children$ = vNodeChildren;\n  }\n  if (BUILD11.vdomKey) {\n    vnode.$key$ = key;\n  }\n  if (BUILD11.slotRelocation) {\n    vnode.$name$ = slotName;\n  }\n  return vnode;\n};\nvar newVNode = (tag, text) => {\n  const vnode = {\n    $flags$: 0,\n    $tag$: tag,\n    $text$: text,\n    $elm$: null,\n    $children$: null\n  };\n  if (BUILD11.vdomAttribute) {\n    vnode.$attrs$ = null;\n  }\n  if (BUILD11.vdomKey) {\n    vnode.$key$ = null;\n  }\n  if (BUILD11.slotRelocation) {\n    vnode.$name$ = null;\n  }\n  return vnode;\n};\nvar Host = {};\nvar isHost = (node) => node && node.$tag$ === Host;\nvar vdomFnUtils = {\n  forEach: (children, cb) => children.map(convertToPublic).forEach(cb),\n  map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate)\n};\nvar convertToPublic = (node) => ({\n  vattrs: node.$attrs$,\n  vchildren: node.$children$,\n  vkey: node.$key$,\n  vname: node.$name$,\n  vtag: node.$tag$,\n  vtext: node.$text$\n});\nvar convertToPrivate = (node) => {\n  if (typeof node.vtag === \"function\") {\n    const vnodeData = { ...node.vattrs };\n    if (node.vkey) {\n      vnodeData.key = node.vkey;\n    }\n    if (node.vname) {\n      vnodeData.name = node.vname;\n    }\n    return h(node.vtag, vnodeData, ...node.vchildren || []);\n  }\n  const vnode = newVNode(node.vtag, node.vtext);\n  vnode.$attrs$ = node.vattrs;\n  vnode.$children$ = node.vchildren;\n  vnode.$key$ = node.vkey;\n  vnode.$name$ = node.vname;\n  return vnode;\n};\nvar validateInputProperties = (inputElm) => {\n  const props = Object.keys(inputElm);\n  const value = props.indexOf(\"value\");\n  if (value === -1) {\n    return;\n  }\n  const typeIndex = props.indexOf(\"type\");\n  const minIndex = props.indexOf(\"min\");\n  const maxIndex = props.indexOf(\"max\");\n  const stepIndex = props.indexOf(\"step\");\n  if (value < typeIndex || value < minIndex || value < maxIndex || value < stepIndex) {\n    consoleDevWarn(`The \"value\" prop of <input> should be set after \"min\", \"max\", \"type\" and \"step\"`);\n  }\n};\n\n// src/runtime/client-hydrate.ts\nvar initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {\n  var _a;\n  const endHydrate = createTime(\"hydrateClient\", tagName);\n  const shadowRoot = hostElm.shadowRoot;\n  const childRenderNodes = [];\n  const slotNodes = [];\n  const slottedNodes = [];\n  const shadowRootNodes = BUILD12.shadowDom && shadowRoot ? [] : null;\n  const vnode = newVNode(tagName, null);\n  vnode.$elm$ = hostElm;\n  const members = Object.entries(((_a = hostRef.$cmpMeta$) == null ? void 0 : _a.$members$) || {});\n  members.forEach(([memberName, [memberFlags, metaAttributeName]]) => {\n    var _a2;\n    if (!(memberFlags & 31 /* Prop */)) {\n      return;\n    }\n    const attributeName = metaAttributeName || memberName;\n    const attrVal = hostElm.getAttribute(attributeName);\n    if (attrVal !== null) {\n      const attrPropVal = parsePropertyValue(attrVal, memberFlags);\n      (_a2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a2.set(memberName, attrPropVal);\n    }\n  });\n  let scopeId2;\n  if (BUILD12.scoped) {\n    const cmpMeta = hostRef.$cmpMeta$;\n    if (cmpMeta && cmpMeta.$flags$ & 10 /* needsScopedEncapsulation */ && hostElm[\"s-sc\"]) {\n      scopeId2 = hostElm[\"s-sc\"];\n      hostElm.classList.add(scopeId2 + \"-h\");\n    } else if (hostElm[\"s-sc\"]) {\n      delete hostElm[\"s-sc\"];\n    }\n  }\n  if (win.document && (!plt.$orgLocNodes$ || !plt.$orgLocNodes$.size)) {\n    initializeDocumentHydrate(win.document.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map());\n  }\n  hostElm[HYDRATE_ID] = hostId;\n  hostElm.removeAttribute(HYDRATE_ID);\n  hostRef.$vnode$ = clientHydrate(\n    vnode,\n    childRenderNodes,\n    slotNodes,\n    shadowRootNodes,\n    hostElm,\n    hostElm,\n    hostId,\n    slottedNodes\n  );\n  let crIndex = 0;\n  const crLength = childRenderNodes.length;\n  let childRenderNode;\n  for (crIndex; crIndex < crLength; crIndex++) {\n    childRenderNode = childRenderNodes[crIndex];\n    const orgLocationId = childRenderNode.$hostId$ + \".\" + childRenderNode.$nodeId$;\n    const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);\n    const node = childRenderNode.$elm$;\n    if (!shadowRoot) {\n      node[\"s-hn\"] = tagName.toUpperCase();\n      if (childRenderNode.$tag$ === \"slot\") {\n        node[\"s-cr\"] = hostElm[\"s-cr\"];\n      }\n    }\n    if (childRenderNode.$tag$ === \"slot\") {\n      childRenderNode.$name$ = childRenderNode.$elm$[\"s-sn\"] || childRenderNode.$elm$[\"name\"] || null;\n      if (childRenderNode.$children$) {\n        childRenderNode.$flags$ |= 2 /* isSlotFallback */;\n        if (!childRenderNode.$elm$.childNodes.length) {\n          childRenderNode.$children$.forEach((c) => {\n            childRenderNode.$elm$.appendChild(c.$elm$);\n          });\n        }\n      } else {\n        childRenderNode.$flags$ |= 1 /* isSlotReference */;\n      }\n    }\n    if (orgLocationNode && orgLocationNode.isConnected) {\n      if (shadowRoot && orgLocationNode[\"s-en\"] === \"\") {\n        orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);\n      }\n      orgLocationNode.parentNode.removeChild(orgLocationNode);\n      if (!shadowRoot) {\n        node[\"s-oo\"] = parseInt(childRenderNode.$nodeId$);\n      }\n    }\n    plt.$orgLocNodes$.delete(orgLocationId);\n  }\n  const hosts = [];\n  const snLen = slottedNodes.length;\n  let snIndex = 0;\n  let slotGroup;\n  let snGroupIdx;\n  let snGroupLen;\n  let slottedItem;\n  for (snIndex; snIndex < snLen; snIndex++) {\n    slotGroup = slottedNodes[snIndex];\n    if (!slotGroup || !slotGroup.length) continue;\n    snGroupLen = slotGroup.length;\n    snGroupIdx = 0;\n    for (snGroupIdx; snGroupIdx < snGroupLen; snGroupIdx++) {\n      slottedItem = slotGroup[snGroupIdx];\n      if (!hosts[slottedItem.hostId]) {\n        hosts[slottedItem.hostId] = plt.$orgLocNodes$.get(slottedItem.hostId);\n      }\n      if (!hosts[slottedItem.hostId]) continue;\n      const hostEle = hosts[slottedItem.hostId];\n      if (!hostEle.shadowRoot || !shadowRoot) {\n        slottedItem.slot[\"s-cr\"] = hostEle[\"s-cr\"];\n        if (!slottedItem.slot[\"s-cr\"] && hostEle.shadowRoot) {\n          slottedItem.slot[\"s-cr\"] = hostEle;\n        } else {\n          slottedItem.slot[\"s-cr\"] = (hostEle.__childNodes || hostEle.childNodes)[0];\n        }\n        addSlotRelocateNode(slottedItem.node, slottedItem.slot, false, slottedItem.node[\"s-oo\"]);\n        if (BUILD12.experimentalSlotFixes) {\n          patchSlottedNode(slottedItem.node);\n        }\n      }\n      if (hostEle.shadowRoot && slottedItem.node.parentElement !== hostEle) {\n        hostEle.appendChild(slottedItem.node);\n      }\n    }\n  }\n  if (BUILD12.scoped && scopeId2 && slotNodes.length) {\n    slotNodes.forEach((slot) => {\n      slot.$elm$.parentElement.classList.add(scopeId2 + \"-s\");\n    });\n  }\n  if (BUILD12.shadowDom && shadowRoot && !shadowRoot.childNodes.length) {\n    let rnIdex = 0;\n    const rnLen = shadowRootNodes.length;\n    if (rnLen) {\n      for (rnIdex; rnIdex < rnLen; rnIdex++) {\n        shadowRoot.appendChild(shadowRootNodes[rnIdex]);\n      }\n      Array.from(hostElm.childNodes).forEach((node) => {\n        if (typeof node[\"s-sn\"] !== \"string\") {\n          if (node.nodeType === 1 /* ElementNode */ && node.slot && node.hidden) {\n            node.removeAttribute(\"hidden\");\n          } else if (node.nodeType === 8 /* CommentNode */ || node.nodeType === 3 /* TextNode */ && !node.wholeText.trim()) {\n            node.parentNode.removeChild(node);\n          }\n        }\n      });\n    }\n  }\n  plt.$orgLocNodes$.delete(hostElm[\"s-id\"]);\n  hostRef.$hostElement$ = hostElm;\n  endHydrate();\n};\nvar clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId, slottedNodes = []) => {\n  let childNodeType;\n  let childIdSplt;\n  let childVNode;\n  let i2;\n  const scopeId2 = hostElm[\"s-sc\"];\n  if (node.nodeType === 1 /* ElementNode */) {\n    childNodeType = node.getAttribute(HYDRATE_CHILD_ID);\n    if (childNodeType) {\n      childIdSplt = childNodeType.split(\".\");\n      if (childIdSplt[0] === hostId || childIdSplt[0] === \"0\") {\n        childVNode = createSimpleVNode({\n          $flags$: 0,\n          $hostId$: childIdSplt[0],\n          $nodeId$: childIdSplt[1],\n          $depth$: childIdSplt[2],\n          $index$: childIdSplt[3],\n          $tag$: node.tagName.toLowerCase(),\n          $elm$: node,\n          // If we don't add the initial classes to the VNode, the first `vdom-render.ts` patch\n          // won't try to reconcile them. Classes set on the node will be blown away.\n          $attrs$: { class: node.className || \"\" }\n        });\n        childRenderNodes.push(childVNode);\n        node.removeAttribute(HYDRATE_CHILD_ID);\n        if (!parentVNode.$children$) {\n          parentVNode.$children$ = [];\n        }\n        if (BUILD12.scoped && scopeId2) {\n          node[\"s-si\"] = scopeId2;\n          childVNode.$attrs$.class += \" \" + scopeId2;\n        }\n        const slotName = childVNode.$elm$.getAttribute(\"s-sn\");\n        if (typeof slotName === \"string\") {\n          if (childVNode.$tag$ === \"slot-fb\") {\n            addSlot(\n              slotName,\n              childIdSplt[2],\n              childVNode,\n              node,\n              parentVNode,\n              childRenderNodes,\n              slotNodes,\n              shadowRootNodes,\n              slottedNodes\n            );\n            if (BUILD12.scoped && scopeId2) {\n              node.classList.add(scopeId2);\n            }\n          }\n          childVNode.$elm$[\"s-sn\"] = slotName;\n          childVNode.$elm$.removeAttribute(\"s-sn\");\n        }\n        if (childVNode.$index$ !== void 0) {\n          parentVNode.$children$[childVNode.$index$] = childVNode;\n        }\n        parentVNode = childVNode;\n        if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n          shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n        }\n      }\n    }\n    if (node.shadowRoot) {\n      for (i2 = node.shadowRoot.childNodes.length - 1; i2 >= 0; i2--) {\n        clientHydrate(\n          parentVNode,\n          childRenderNodes,\n          slotNodes,\n          shadowRootNodes,\n          hostElm,\n          node.shadowRoot.childNodes[i2],\n          hostId,\n          slottedNodes\n        );\n      }\n    }\n    const nonShadowNodes = node.__childNodes || node.childNodes;\n    for (i2 = nonShadowNodes.length - 1; i2 >= 0; i2--) {\n      clientHydrate(\n        parentVNode,\n        childRenderNodes,\n        slotNodes,\n        shadowRootNodes,\n        hostElm,\n        nonShadowNodes[i2],\n        hostId,\n        slottedNodes\n      );\n    }\n  } else if (node.nodeType === 8 /* CommentNode */) {\n    childIdSplt = node.nodeValue.split(\".\");\n    if (childIdSplt[1] === hostId || childIdSplt[1] === \"0\") {\n      childNodeType = childIdSplt[0];\n      childVNode = createSimpleVNode({\n        $hostId$: childIdSplt[1],\n        $nodeId$: childIdSplt[2],\n        $depth$: childIdSplt[3],\n        $index$: childIdSplt[4] || \"0\",\n        $elm$: node,\n        $attrs$: null,\n        $children$: null,\n        $key$: null,\n        $name$: null,\n        $tag$: null,\n        $text$: null\n      });\n      if (childNodeType === TEXT_NODE_ID) {\n        childVNode.$elm$ = findCorrespondingNode(node, 3 /* TextNode */);\n        if (childVNode.$elm$ && childVNode.$elm$.nodeType === 3 /* TextNode */) {\n          childVNode.$text$ = childVNode.$elm$.textContent;\n          childRenderNodes.push(childVNode);\n          node.remove();\n          if (hostId === childVNode.$hostId$) {\n            if (!parentVNode.$children$) {\n              parentVNode.$children$ = [];\n            }\n            parentVNode.$children$[childVNode.$index$] = childVNode;\n          }\n          if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n            shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n          }\n        }\n      } else if (childNodeType === COMMENT_NODE_ID) {\n        childVNode.$elm$ = findCorrespondingNode(node, 8 /* CommentNode */);\n        if (childVNode.$elm$ && childVNode.$elm$.nodeType === 8 /* CommentNode */) {\n          childRenderNodes.push(childVNode);\n          node.remove();\n        }\n      } else if (childVNode.$hostId$ === hostId) {\n        if (childNodeType === SLOT_NODE_ID) {\n          const slotName = node[\"s-sn\"] = childIdSplt[5] || \"\";\n          addSlot(\n            slotName,\n            childIdSplt[2],\n            childVNode,\n            node,\n            parentVNode,\n            childRenderNodes,\n            slotNodes,\n            shadowRootNodes,\n            slottedNodes\n          );\n        } else if (childNodeType === CONTENT_REF_ID) {\n          if (BUILD12.shadowDom && shadowRootNodes) {\n            node.remove();\n          } else if (BUILD12.slotRelocation) {\n            hostElm[\"s-cr\"] = node;\n            node[\"s-cn\"] = true;\n          }\n        }\n      }\n    }\n  } else if (parentVNode && parentVNode.$tag$ === \"style\") {\n    const vnode = newVNode(null, node.textContent);\n    vnode.$elm$ = node;\n    vnode.$index$ = \"0\";\n    parentVNode.$children$ = [vnode];\n  } else {\n    if (node.nodeType === 3 /* TextNode */ && !node.wholeText.trim()) {\n      node.remove();\n    }\n  }\n  return parentVNode;\n};\nvar initializeDocumentHydrate = (node, orgLocNodes) => {\n  if (node.nodeType === 1 /* ElementNode */) {\n    const componentId = node[HYDRATE_ID] || node.getAttribute(HYDRATE_ID);\n    if (componentId) {\n      orgLocNodes.set(componentId, node);\n    }\n    let i2 = 0;\n    if (node.shadowRoot) {\n      for (; i2 < node.shadowRoot.childNodes.length; i2++) {\n        initializeDocumentHydrate(node.shadowRoot.childNodes[i2], orgLocNodes);\n      }\n    }\n    const nonShadowNodes = node.__childNodes || node.childNodes;\n    for (i2 = 0; i2 < nonShadowNodes.length; i2++) {\n      initializeDocumentHydrate(nonShadowNodes[i2], orgLocNodes);\n    }\n  } else if (node.nodeType === 8 /* CommentNode */) {\n    const childIdSplt = node.nodeValue.split(\".\");\n    if (childIdSplt[0] === ORG_LOCATION_ID) {\n      orgLocNodes.set(childIdSplt[1] + \".\" + childIdSplt[2], node);\n      node.nodeValue = \"\";\n      node[\"s-en\"] = childIdSplt[3];\n    }\n  }\n};\nvar createSimpleVNode = (vnode) => {\n  const defaultVNode = {\n    $flags$: 0,\n    $hostId$: null,\n    $nodeId$: null,\n    $depth$: null,\n    $index$: \"0\",\n    $elm$: null,\n    $attrs$: null,\n    $children$: null,\n    $key$: null,\n    $name$: null,\n    $tag$: null,\n    $text$: null\n  };\n  return { ...defaultVNode, ...vnode };\n};\nfunction addSlot(slotName, slotId, childVNode, node, parentVNode, childRenderNodes, slotNodes, shadowRootNodes, slottedNodes) {\n  node[\"s-sr\"] = true;\n  childVNode.$name$ = slotName || null;\n  childVNode.$tag$ = \"slot\";\n  const parentNodeId = (parentVNode == null ? void 0 : parentVNode.$elm$) ? parentVNode.$elm$[\"s-id\"] || parentVNode.$elm$.getAttribute(\"s-id\") : \"\";\n  if (BUILD12.shadowDom && shadowRootNodes && win.document) {\n    const slot = childVNode.$elm$ = win.document.createElement(childVNode.$tag$);\n    if (childVNode.$name$) {\n      childVNode.$elm$.setAttribute(\"name\", slotName);\n    }\n    if (parentNodeId && parentNodeId !== childVNode.$hostId$) {\n      parentVNode.$elm$.insertBefore(slot, parentVNode.$elm$.children[0]);\n    } else {\n      node.parentNode.insertBefore(childVNode.$elm$, node);\n    }\n    addSlottedNodes(slottedNodes, slotId, slotName, node, childVNode.$hostId$);\n    node.remove();\n    if (childVNode.$depth$ === \"0\") {\n      shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n    }\n  } else {\n    const slot = childVNode.$elm$;\n    const shouldMove = parentNodeId && parentNodeId !== childVNode.$hostId$ && parentVNode.$elm$.shadowRoot;\n    addSlottedNodes(slottedNodes, slotId, slotName, node, shouldMove ? parentNodeId : childVNode.$hostId$);\n    patchSlotNode(node);\n    if (shouldMove) {\n      parentVNode.$elm$.insertBefore(slot, parentVNode.$elm$.children[0]);\n    }\n    childRenderNodes.push(childVNode);\n  }\n  slotNodes.push(childVNode);\n  if (!parentVNode.$children$) {\n    parentVNode.$children$ = [];\n  }\n  parentVNode.$children$[childVNode.$index$] = childVNode;\n}\nvar addSlottedNodes = (slottedNodes, slotNodeId, slotName, slotNode, hostId) => {\n  let slottedNode = slotNode.nextSibling;\n  slottedNodes[slotNodeId] = slottedNodes[slotNodeId] || [];\n  while (slottedNode && ((slottedNode[\"getAttribute\"] && slottedNode.getAttribute(\"slot\") || slottedNode[\"s-sn\"]) === slotName || slotName === \"\" && !slottedNode[\"s-sn\"] && (slottedNode.nodeType === 8 /* CommentNode */ && slottedNode.nodeValue.indexOf(\".\") !== 1 || slottedNode.nodeType === 3 /* TextNode */))) {\n    slottedNode[\"s-sn\"] = slotName;\n    slottedNodes[slotNodeId].push({ slot: slotNode, node: slottedNode, hostId });\n    slottedNode = slottedNode.nextSibling;\n  }\n};\nvar findCorrespondingNode = (node, type) => {\n  let sibling = node;\n  do {\n    sibling = sibling.nextSibling;\n  } while (sibling && (sibling.nodeType !== type || !sibling.nodeValue));\n  return sibling;\n};\n\n// src/runtime/initialize-component.ts\nimport { BUILD as BUILD23 } from \"@stencil/core/internal/app-data\";\n\n// src/utils/shadow-css.ts\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n *\n * This file is a port of shadowCSS from `webcomponents.js` to TypeScript.\n * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js\n * https://github.com/angular/angular/blob/master/packages/compiler/src/shadow_css.ts\n */\nvar safeSelector = (selector) => {\n  const placeholders = [];\n  let index = 0;\n  selector = selector.replace(/(\\[[^\\]]*\\])/g, (_, keep) => {\n    const replaceBy = `__ph-${index}__`;\n    placeholders.push(keep);\n    index++;\n    return replaceBy;\n  });\n  const content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, (_, pseudo, exp) => {\n    const replaceBy = `__ph-${index}__`;\n    placeholders.push(exp);\n    index++;\n    return pseudo + replaceBy;\n  });\n  const ss = {\n    content,\n    placeholders\n  };\n  return ss;\n};\nvar restoreSafeSelector = (placeholders, content) => {\n  return content.replace(/__ph-(\\d+)__/g, (_, index) => placeholders[+index]);\n};\nvar _polyfillHost = \"-shadowcsshost\";\nvar _polyfillSlotted = \"-shadowcssslotted\";\nvar _polyfillHostContext = \"-shadowcsscontext\";\nvar _parenSuffix = \")(?:\\\\(((?:\\\\([^)(]*\\\\)|[^)(]*)+?)\\\\))?([^,{]*)\";\nvar _cssColonHostRe = new RegExp(\"(\" + _polyfillHost + _parenSuffix, \"gim\");\nvar _cssColonHostContextRe = new RegExp(\"(\" + _polyfillHostContext + _parenSuffix, \"gim\");\nvar _cssColonSlottedRe = new RegExp(\"(\" + _polyfillSlotted + _parenSuffix, \"gim\");\nvar _polyfillHostNoCombinator = _polyfillHost + \"-no-combinator\";\nvar _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nvar _shadowDOMSelectorsRe = [/::shadow/g, /::content/g];\nvar _selectorReSuffix = \"([>\\\\s~+[.,{:][\\\\s\\\\S]*)?$\";\nvar _polyfillHostRe = /-shadowcsshost/gim;\nvar createSupportsRuleRe = (selector) => {\n  const safeSelector2 = escapeRegExpSpecialCharacters(selector);\n  return new RegExp(\n    // First capture group: match any context before the selector that's not inside @supports selector()\n    // Using negative lookahead to avoid matching inside @supports selector(...) condition\n    `(^|[^@]|@(?!supports\\\\s+selector\\\\s*\\\\([^{]*?${safeSelector2}))(${safeSelector2}\\\\b)`,\n    \"g\"\n  );\n};\nvar _colonSlottedRe = createSupportsRuleRe(\"::slotted\");\nvar _colonHostRe = createSupportsRuleRe(\":host\");\nvar _colonHostContextRe = createSupportsRuleRe(\":host-context\");\nvar _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\nvar stripComments = (input) => {\n  return input.replace(_commentRe, \"\");\n};\nvar _commentWithHashRe = /\\/\\*\\s*#\\s*source(Mapping)?URL=[\\s\\S]+?\\*\\//g;\nvar extractCommentsWithHash = (input) => {\n  return input.match(_commentWithHashRe) || [];\n};\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nvar _curlyRe = /([{}])/g;\nvar _selectorPartsRe = /(^.*?[^\\\\])??((:+)(.*)|$)/;\nvar OPEN_CURLY = \"{\";\nvar CLOSE_CURLY = \"}\";\nvar BLOCK_PLACEHOLDER = \"%BLOCK%\";\nvar processRules = (input, ruleCallback) => {\n  const inputWithEscapedBlocks = escapeBlocks(input);\n  let nextBlockIndex = 0;\n  return inputWithEscapedBlocks.escapedString.replace(_ruleRe, (...m) => {\n    const selector = m[2];\n    let content = \"\";\n    let suffix = m[4];\n    let contentPrefix = \"\";\n    if (suffix && suffix.startsWith(\"{\" + BLOCK_PLACEHOLDER)) {\n      content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n      suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n      contentPrefix = \"{\";\n    }\n    const cssRule = {\n      selector,\n      content\n    };\n    const rule = ruleCallback(cssRule);\n    return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`;\n  });\n};\nvar escapeBlocks = (input) => {\n  const inputParts = input.split(_curlyRe);\n  const resultParts = [];\n  const escapedBlocks = [];\n  let bracketCount = 0;\n  let currentBlockParts = [];\n  for (let partIndex = 0; partIndex < inputParts.length; partIndex++) {\n    const part = inputParts[partIndex];\n    if (part === CLOSE_CURLY) {\n      bracketCount--;\n    }\n    if (bracketCount > 0) {\n      currentBlockParts.push(part);\n    } else {\n      if (currentBlockParts.length > 0) {\n        escapedBlocks.push(currentBlockParts.join(\"\"));\n        resultParts.push(BLOCK_PLACEHOLDER);\n        currentBlockParts = [];\n      }\n      resultParts.push(part);\n    }\n    if (part === OPEN_CURLY) {\n      bracketCount++;\n    }\n  }\n  if (currentBlockParts.length > 0) {\n    escapedBlocks.push(currentBlockParts.join(\"\"));\n    resultParts.push(BLOCK_PLACEHOLDER);\n  }\n  const strEscapedBlocks = {\n    escapedString: resultParts.join(\"\"),\n    blocks: escapedBlocks\n  };\n  return strEscapedBlocks;\n};\nvar insertPolyfillHostInCssText = (cssText) => {\n  const supportsBlocks = [];\n  cssText = cssText.replace(/@supports\\s+selector\\s*\\(\\s*([^)]*)\\s*\\)/g, (_, selectorContent) => {\n    const placeholder = `__supports_${supportsBlocks.length}__`;\n    supportsBlocks.push(selectorContent);\n    return `@supports selector(${placeholder})`;\n  });\n  cssText = cssText.replace(_colonHostContextRe, `$1${_polyfillHostContext}`).replace(_colonHostRe, `$1${_polyfillHost}`).replace(_colonSlottedRe, `$1${_polyfillSlotted}`);\n  supportsBlocks.forEach((originalSelector, index) => {\n    cssText = cssText.replace(`__supports_${index}__`, originalSelector);\n  });\n  return cssText;\n};\nvar convertColonRule = (cssText, regExp, partReplacer) => {\n  return cssText.replace(regExp, (...m) => {\n    if (m[2]) {\n      const parts = m[2].split(\",\");\n      const r = [];\n      for (let i2 = 0; i2 < parts.length; i2++) {\n        const p = parts[i2].trim();\n        if (!p) break;\n        r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n      }\n      return r.join(\",\");\n    } else {\n      return _polyfillHostNoCombinator + m[3];\n    }\n  });\n};\nvar colonHostPartReplacer = (host, part, suffix) => {\n  return host + part.replace(_polyfillHost, \"\") + suffix;\n};\nvar convertColonHost = (cssText) => {\n  return convertColonRule(cssText, _cssColonHostRe, colonHostPartReplacer);\n};\nvar colonHostContextPartReplacer = (host, part, suffix) => {\n  if (part.indexOf(_polyfillHost) > -1) {\n    return colonHostPartReplacer(host, part, suffix);\n  } else {\n    return host + part + suffix + \", \" + part + \" \" + host + suffix;\n  }\n};\nvar convertColonSlotted = (cssText, slotScopeId) => {\n  const slotClass = \".\" + slotScopeId + \" > \";\n  const selectors = [];\n  cssText = cssText.replace(_cssColonSlottedRe, (...m) => {\n    if (m[2]) {\n      const compound = m[2].trim();\n      const suffix = m[3];\n      const slottedSelector = slotClass + compound + suffix;\n      let prefixSelector = \"\";\n      for (let i2 = m[4] - 1; i2 >= 0; i2--) {\n        const char = m[5][i2];\n        if (char === \"}\" || char === \",\") {\n          break;\n        }\n        prefixSelector = char + prefixSelector;\n      }\n      const orgSelector = (prefixSelector + slottedSelector).trim();\n      const addedSelector = `${prefixSelector.trimEnd()}${slottedSelector.trim()}`.trim();\n      if (orgSelector !== addedSelector) {\n        const updatedSelector = `${addedSelector}, ${orgSelector}`;\n        selectors.push({\n          orgSelector,\n          updatedSelector\n        });\n      }\n      return slottedSelector;\n    } else {\n      return _polyfillHostNoCombinator + m[3];\n    }\n  });\n  return {\n    selectors,\n    cssText\n  };\n};\nvar convertColonHostContext = (cssText) => {\n  return convertColonRule(cssText, _cssColonHostContextRe, colonHostContextPartReplacer);\n};\nvar convertShadowDOMSelectors = (cssText) => {\n  return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, \" \"), cssText);\n};\nvar makeScopeMatcher = (scopeSelector2) => {\n  const lre = /\\[/g;\n  const rre = /\\]/g;\n  scopeSelector2 = scopeSelector2.replace(lre, \"\\\\[\").replace(rre, \"\\\\]\");\n  return new RegExp(\"^(\" + scopeSelector2 + \")\" + _selectorReSuffix, \"m\");\n};\nvar selectorNeedsScoping = (selector, scopeSelector2) => {\n  const re = makeScopeMatcher(scopeSelector2);\n  return !re.test(selector);\n};\nvar injectScopingSelector = (selector, scopingSelector) => {\n  return selector.replace(_selectorPartsRe, (_, before = \"\", _colonGroup, colon = \"\", after = \"\") => {\n    return before + scopingSelector + colon + after;\n  });\n};\nvar applySimpleSelectorScope = (selector, scopeSelector2, hostSelector) => {\n  _polyfillHostRe.lastIndex = 0;\n  if (_polyfillHostRe.test(selector)) {\n    const replaceBy = `.${hostSelector}`;\n    return selector.replace(_polyfillHostNoCombinatorRe, (_, selector2) => injectScopingSelector(selector2, replaceBy)).replace(_polyfillHostRe, replaceBy + \" \");\n  }\n  return scopeSelector2 + \" \" + selector;\n};\nvar applyStrictSelectorScope = (selector, scopeSelector2, hostSelector) => {\n  const isRe = /\\[is=([^\\]]*)\\]/g;\n  scopeSelector2 = scopeSelector2.replace(isRe, (_, ...parts) => parts[0]);\n  const className = \".\" + scopeSelector2;\n  const _scopeSelectorPart = (p) => {\n    let scopedP = p.trim();\n    if (!scopedP) {\n      return \"\";\n    }\n    if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n      scopedP = applySimpleSelectorScope(p, scopeSelector2, hostSelector);\n    } else {\n      const t = p.replace(_polyfillHostRe, \"\");\n      if (t.length > 0) {\n        scopedP = injectScopingSelector(t, className);\n      }\n    }\n    return scopedP;\n  };\n  const safeContent = safeSelector(selector);\n  selector = safeContent.content;\n  let scopedSelector = \"\";\n  let startIndex = 0;\n  let res;\n  const sep = /( |>|\\+|~(?!=))\\s*/g;\n  const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1;\n  let shouldScope = !hasHost;\n  while ((res = sep.exec(selector)) !== null) {\n    const separator = res[1];\n    const part2 = selector.slice(startIndex, res.index).trim();\n    shouldScope = shouldScope || part2.indexOf(_polyfillHostNoCombinator) > -1;\n    const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;\n    scopedSelector += `${scopedPart} ${separator} `;\n    startIndex = sep.lastIndex;\n  }\n  const part = selector.substring(startIndex);\n  shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n  scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;\n  return restoreSafeSelector(safeContent.placeholders, scopedSelector);\n};\nvar scopeSelector = (selector, scopeSelectorText, hostSelector, slotSelector) => {\n  return selector.split(\",\").map((shallowPart) => {\n    if (slotSelector && shallowPart.indexOf(\".\" + slotSelector) > -1) {\n      return shallowPart.trim();\n    }\n    if (selectorNeedsScoping(shallowPart, scopeSelectorText)) {\n      return applyStrictSelectorScope(shallowPart, scopeSelectorText, hostSelector).trim();\n    } else {\n      return shallowPart.trim();\n    }\n  }).join(\", \");\n};\nvar scopeSelectors = (cssText, scopeSelectorText, hostSelector, slotSelector, commentOriginalSelector) => {\n  return processRules(cssText, (rule) => {\n    let selector = rule.selector;\n    let content = rule.content;\n    if (rule.selector[0] !== \"@\") {\n      selector = scopeSelector(rule.selector, scopeSelectorText, hostSelector, slotSelector);\n    } else if (rule.selector.startsWith(\"@media\") || rule.selector.startsWith(\"@supports\") || rule.selector.startsWith(\"@page\") || rule.selector.startsWith(\"@document\")) {\n      content = scopeSelectors(rule.content, scopeSelectorText, hostSelector, slotSelector, commentOriginalSelector);\n    }\n    const cssRule = {\n      selector: selector.replace(/\\s{2,}/g, \" \").trim(),\n      content\n    };\n    return cssRule;\n  });\n};\nvar scopeCssText = (cssText, scopeId2, hostScopeId, slotScopeId, commentOriginalSelector) => {\n  cssText = insertPolyfillHostInCssText(cssText);\n  cssText = convertColonHost(cssText);\n  cssText = convertColonHostContext(cssText);\n  const slotted = convertColonSlotted(cssText, slotScopeId);\n  cssText = slotted.cssText;\n  cssText = convertShadowDOMSelectors(cssText);\n  if (scopeId2) {\n    cssText = scopeSelectors(cssText, scopeId2, hostScopeId, slotScopeId, commentOriginalSelector);\n  }\n  cssText = replaceShadowCssHost(cssText, hostScopeId);\n  cssText = cssText.replace(/>\\s*\\*\\s+([^{, ]+)/gm, \" $1 \");\n  return {\n    cssText: cssText.trim(),\n    // We need to replace the shadow CSS host string in each of these selectors since we created\n    // them prior to the replacement happening in the components CSS text.\n    slottedSelectors: slotted.selectors.map((ref) => ({\n      orgSelector: replaceShadowCssHost(ref.orgSelector, hostScopeId),\n      updatedSelector: replaceShadowCssHost(ref.updatedSelector, hostScopeId)\n    }))\n  };\n};\nvar replaceShadowCssHost = (cssText, hostScopeId) => {\n  return cssText.replace(/-shadowcsshost-no-combinator/g, `.${hostScopeId}`);\n};\nvar scopeCss = (cssText, scopeId2, commentOriginalSelector) => {\n  const hostScopeId = scopeId2 + \"-h\";\n  const slotScopeId = scopeId2 + \"-s\";\n  const commentsWithHash = extractCommentsWithHash(cssText);\n  cssText = stripComments(cssText);\n  const orgSelectors = [];\n  if (commentOriginalSelector) {\n    const processCommentedSelector = (rule) => {\n      const placeholder = `/*!@___${orgSelectors.length}___*/`;\n      const comment = `/*!@${rule.selector}*/`;\n      orgSelectors.push({ placeholder, comment });\n      rule.selector = placeholder + rule.selector;\n      return rule;\n    };\n    cssText = processRules(cssText, (rule) => {\n      if (rule.selector[0] !== \"@\") {\n        return processCommentedSelector(rule);\n      } else if (rule.selector.startsWith(\"@media\") || rule.selector.startsWith(\"@supports\") || rule.selector.startsWith(\"@page\") || rule.selector.startsWith(\"@document\")) {\n        rule.content = processRules(rule.content, processCommentedSelector);\n        return rule;\n      }\n      return rule;\n    });\n  }\n  const scoped = scopeCssText(cssText, scopeId2, hostScopeId, slotScopeId, commentOriginalSelector);\n  cssText = [scoped.cssText, ...commentsWithHash].join(\"\\n\");\n  if (commentOriginalSelector) {\n    orgSelectors.forEach(({ placeholder, comment }) => {\n      cssText = cssText.replace(placeholder, comment);\n    });\n  }\n  scoped.slottedSelectors.forEach((slottedSelector) => {\n    const regex = new RegExp(escapeRegExpSpecialCharacters(slottedSelector.orgSelector), \"g\");\n    cssText = cssText.replace(regex, slottedSelector.updatedSelector);\n  });\n  return cssText;\n};\n\n// src/runtime/mode.ts\nvar computeMode = (elm) => modeResolutionChain.map((h2) => h2(elm)).find((m) => !!m);\nvar setMode = (handler) => modeResolutionChain.push(handler);\nvar getMode = (ref) => getHostRef(ref).$modeName$;\n\n// src/runtime/proxy-component.ts\nimport { BUILD as BUILD22 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/set-value.ts\nimport { BUILD as BUILD21 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/parse-property-value.ts\nimport { BUILD as BUILD13 } from \"@stencil/core/internal/app-data\";\nvar parsePropertyValue = (propValue, propType) => {\n  if ((BUILD13.hydrateClientSide || BUILD13.hydrateServerSide) && typeof propValue === \"string\" && (propValue.startsWith(\"{\") && propValue.endsWith(\"}\") || propValue.startsWith(\"[\") && propValue.endsWith(\"]\"))) {\n    try {\n      propValue = JSON.parse(propValue);\n      return propValue;\n    } catch (e) {\n    }\n  }\n  if ((BUILD13.hydrateClientSide || BUILD13.hydrateServerSide) && typeof propValue === \"string\" && propValue.startsWith(SERIALIZED_PREFIX)) {\n    propValue = deserializeProperty(propValue);\n    return propValue;\n  }\n  if (propValue != null && !isComplexType(propValue)) {\n    if (BUILD13.propBoolean && propType & 4 /* Boolean */) {\n      return propValue === \"false\" ? false : propValue === \"\" || !!propValue;\n    }\n    if (BUILD13.propNumber && propType & 2 /* Number */) {\n      return typeof propValue === \"string\" ? parseFloat(propValue) : typeof propValue === \"number\" ? propValue : NaN;\n    }\n    if (BUILD13.propString && propType & 1 /* String */) {\n      return String(propValue);\n    }\n    return propValue;\n  }\n  return propValue;\n};\n\n// src/runtime/update-component.ts\nimport { BUILD as BUILD20, NAMESPACE } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/event-emitter.ts\nimport { BUILD as BUILD15 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/element.ts\nimport { BUILD as BUILD14 } from \"@stencil/core/internal/app-data\";\nvar getElement = (ref) => BUILD14.lazyLoad ? getHostRef(ref).$hostElement$ : ref;\n\n// src/runtime/event-emitter.ts\nvar createEvent = (ref, name, flags) => {\n  const elm = getElement(ref);\n  return {\n    emit: (detail) => {\n      if (BUILD15.isDev && !elm.isConnected) {\n        consoleDevWarn(`The \"${name}\" event was emitted, but the dispatcher node is no longer connected to the dom.`);\n      }\n      return emitEvent(elm, name, {\n        bubbles: !!(flags & 4 /* Bubbles */),\n        composed: !!(flags & 2 /* Composed */),\n        cancelable: !!(flags & 1 /* Cancellable */),\n        detail\n      });\n    }\n  };\n};\nvar emitEvent = (elm, name, opts) => {\n  const ev = plt.ce(name, opts);\n  elm.dispatchEvent(ev);\n  return ev;\n};\n\n// src/runtime/styles.ts\nimport { BUILD as BUILD16 } from \"@stencil/core/internal/app-data\";\nvar rootAppliedStyles = /* @__PURE__ */ new WeakMap();\nvar registerStyle = (scopeId2, cssText, allowCS) => {\n  let style = styles.get(scopeId2);\n  if (supportsConstructableStylesheets && allowCS) {\n    style = style || new CSSStyleSheet();\n    if (typeof style === \"string\") {\n      style = cssText;\n    } else {\n      style.replaceSync(cssText);\n    }\n  } else {\n    style = cssText;\n  }\n  styles.set(scopeId2, style);\n};\nvar addStyle = (styleContainerNode, cmpMeta, mode) => {\n  var _a;\n  const scopeId2 = getScopeId(cmpMeta, mode);\n  const style = styles.get(scopeId2);\n  if (!BUILD16.attachStyles || !win.document) {\n    return scopeId2;\n  }\n  styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : win.document;\n  if (style) {\n    if (typeof style === \"string\") {\n      styleContainerNode = styleContainerNode.head || styleContainerNode;\n      let appliedStyles = rootAppliedStyles.get(styleContainerNode);\n      let styleElm;\n      if (!appliedStyles) {\n        rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());\n      }\n      if (!appliedStyles.has(scopeId2)) {\n        if (BUILD16.hydrateClientSide && styleContainerNode.host && (styleElm = styleContainerNode.querySelector(`[${HYDRATED_STYLE_ID}=\"${scopeId2}\"]`))) {\n          styleElm.innerHTML = style;\n        } else {\n          styleElm = document.querySelector(`[${HYDRATED_STYLE_ID}=\"${scopeId2}\"]`) || win.document.createElement(\"style\");\n          styleElm.innerHTML = style;\n          const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(win.document);\n          if (nonce != null) {\n            styleElm.setAttribute(\"nonce\", nonce);\n          }\n          if ((BUILD16.hydrateServerSide || BUILD16.hotModuleReplacement) && (cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */ || cmpMeta.$flags$ & 128 /* shadowNeedsScopedCss */)) {\n            styleElm.setAttribute(HYDRATED_STYLE_ID, scopeId2);\n          }\n          if (!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */)) {\n            if (styleContainerNode.nodeName === \"HEAD\") {\n              const preconnectLinks = styleContainerNode.querySelectorAll(\"link[rel=preconnect]\");\n              const referenceNode2 = preconnectLinks.length > 0 ? preconnectLinks[preconnectLinks.length - 1].nextSibling : styleContainerNode.querySelector(\"style\");\n              styleContainerNode.insertBefore(\n                styleElm,\n                (referenceNode2 == null ? void 0 : referenceNode2.parentNode) === styleContainerNode ? referenceNode2 : null\n              );\n            } else if (\"host\" in styleContainerNode) {\n              if (supportsConstructableStylesheets) {\n                const stylesheet = new CSSStyleSheet();\n                stylesheet.replaceSync(style);\n                styleContainerNode.adoptedStyleSheets = [stylesheet, ...styleContainerNode.adoptedStyleSheets];\n              } else {\n                const existingStyleContainer = styleContainerNode.querySelector(\"style\");\n                if (existingStyleContainer) {\n                  existingStyleContainer.innerHTML = style + existingStyleContainer.innerHTML;\n                } else {\n                  styleContainerNode.prepend(styleElm);\n                }\n              }\n            } else {\n              styleContainerNode.append(styleElm);\n            }\n          }\n          if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n            styleContainerNode.insertBefore(styleElm, null);\n          }\n        }\n        if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n          styleElm.innerHTML += SLOT_FB_CSS;\n        }\n        if (appliedStyles) {\n          appliedStyles.add(scopeId2);\n        }\n      }\n    } else if (BUILD16.constructableCSS && !styleContainerNode.adoptedStyleSheets.includes(style)) {\n      styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];\n    }\n  }\n  return scopeId2;\n};\nvar attachStyles = (hostRef) => {\n  const cmpMeta = hostRef.$cmpMeta$;\n  const elm = hostRef.$hostElement$;\n  const flags = cmpMeta.$flags$;\n  const endAttachStyles = createTime(\"attachStyles\", cmpMeta.$tagName$);\n  const scopeId2 = addStyle(\n    BUILD16.shadowDom && supportsShadow && elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(),\n    cmpMeta,\n    hostRef.$modeName$\n  );\n  if ((BUILD16.shadowDom || BUILD16.scoped) && BUILD16.cssAnnotations && flags & 10 /* needsScopedEncapsulation */) {\n    elm[\"s-sc\"] = scopeId2;\n    elm.classList.add(scopeId2 + \"-h\");\n  }\n  endAttachStyles();\n};\nvar getScopeId = (cmp, mode) => \"sc-\" + (BUILD16.mode && mode && cmp.$flags$ & 32 /* hasMode */ ? cmp.$tagName$ + \"-\" + mode : cmp.$tagName$);\nvar convertScopedToShadow = (css) => css.replace(/\\/\\*!@([^\\/]+)\\*\\/[^\\{]+\\{/g, \"$1{\");\nvar hydrateScopedToShadow = () => {\n  if (!win.document) {\n    return;\n  }\n  const styles2 = win.document.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);\n  let i2 = 0;\n  for (; i2 < styles2.length; i2++) {\n    registerStyle(styles2[i2].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles2[i2].innerHTML), true);\n  }\n};\n\n// src/runtime/vdom/vdom-render.ts\nimport { BUILD as BUILD19 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/vdom/update-element.ts\nimport { BUILD as BUILD18 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/vdom/set-accessor.ts\nimport { BUILD as BUILD17 } from \"@stencil/core/internal/app-data\";\nvar setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRender) => {\n  if (oldValue === newValue) {\n    return;\n  }\n  let isProp = isMemberInElement(elm, memberName);\n  let ln = memberName.toLowerCase();\n  if (BUILD17.vdomClass && memberName === \"class\") {\n    const classList = elm.classList;\n    const oldClasses = parseClassList(oldValue);\n    let newClasses = parseClassList(newValue);\n    if (BUILD17.hydrateClientSide && elm[\"s-si\"] && initialRender) {\n      newClasses.push(elm[\"s-si\"]);\n      oldClasses.forEach((c) => {\n        if (c.startsWith(elm[\"s-si\"])) newClasses.push(c);\n      });\n      newClasses = [...new Set(newClasses)];\n      classList.add(...newClasses);\n    } else {\n      classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));\n      classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));\n    }\n  } else if (BUILD17.vdomStyle && memberName === \"style\") {\n    if (BUILD17.updatable) {\n      for (const prop in oldValue) {\n        if (!newValue || newValue[prop] == null) {\n          if (!BUILD17.hydrateServerSide && prop.includes(\"-\")) {\n            elm.style.removeProperty(prop);\n          } else {\n            elm.style[prop] = \"\";\n          }\n        }\n      }\n    }\n    for (const prop in newValue) {\n      if (!oldValue || newValue[prop] !== oldValue[prop]) {\n        if (!BUILD17.hydrateServerSide && prop.includes(\"-\")) {\n          elm.style.setProperty(prop, newValue[prop]);\n        } else {\n          elm.style[prop] = newValue[prop];\n        }\n      }\n    }\n  } else if (BUILD17.vdomKey && memberName === \"key\") {\n  } else if (BUILD17.vdomRef && memberName === \"ref\") {\n    if (newValue) {\n      newValue(elm);\n    }\n  } else if (BUILD17.vdomListener && (BUILD17.lazyLoad ? !isProp : !elm.__lookupSetter__(memberName)) && memberName[0] === \"o\" && memberName[1] === \"n\") {\n    if (memberName[2] === \"-\") {\n      memberName = memberName.slice(3);\n    } else if (isMemberInElement(win, ln)) {\n      memberName = ln.slice(2);\n    } else {\n      memberName = ln[2] + memberName.slice(3);\n    }\n    if (oldValue || newValue) {\n      const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);\n      memberName = memberName.replace(CAPTURE_EVENT_REGEX, \"\");\n      if (oldValue) {\n        plt.rel(elm, memberName, oldValue, capture);\n      }\n      if (newValue) {\n        plt.ael(elm, memberName, newValue, capture);\n      }\n    }\n  } else if (BUILD17.vdomPropOrAttr) {\n    const isComplex = isComplexType(newValue);\n    if ((isProp || isComplex && newValue !== null) && !isSvg) {\n      try {\n        if (!elm.tagName.includes(\"-\")) {\n          const n = newValue == null ? \"\" : newValue;\n          if (memberName === \"list\") {\n            isProp = false;\n          } else if (oldValue == null || elm[memberName] != n) {\n            if (typeof elm.__lookupSetter__(memberName) === \"function\") {\n              elm[memberName] = n;\n            } else {\n              elm.setAttribute(memberName, n);\n            }\n          }\n        } else if (elm[memberName] !== newValue) {\n          elm[memberName] = newValue;\n        }\n      } catch (e) {\n      }\n    }\n    let xlink = false;\n    if (BUILD17.vdomXlink) {\n      if (ln !== (ln = ln.replace(/^xlink\\:?/, \"\"))) {\n        memberName = ln;\n        xlink = true;\n      }\n    }\n    if (newValue == null || newValue === false) {\n      if (newValue !== false || elm.getAttribute(memberName) === \"\") {\n        if (BUILD17.vdomXlink && xlink) {\n          elm.removeAttributeNS(XLINK_NS, memberName);\n        } else {\n          elm.removeAttribute(memberName);\n        }\n      }\n    } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex && elm.nodeType === 1 /* ElementNode */) {\n      newValue = newValue === true ? \"\" : newValue;\n      if (BUILD17.vdomXlink && xlink) {\n        elm.setAttributeNS(XLINK_NS, memberName, newValue);\n      } else {\n        elm.setAttribute(memberName, newValue);\n      }\n    }\n  }\n};\nvar parseClassListRegex = /\\s/;\nvar parseClassList = (value) => {\n  if (typeof value === \"object\" && value && \"baseVal\" in value) {\n    value = value.baseVal;\n  }\n  if (!value || typeof value !== \"string\") {\n    return [];\n  }\n  return value.split(parseClassListRegex);\n};\nvar CAPTURE_EVENT_SUFFIX = \"Capture\";\nvar CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + \"$\");\n\n// src/runtime/vdom/update-element.ts\nvar updateElement = (oldVnode, newVnode, isSvgMode2, isInitialRender) => {\n  const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;\n  const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || {};\n  const newVnodeAttrs = newVnode.$attrs$ || {};\n  if (BUILD18.updatable) {\n    for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {\n      if (!(memberName in newVnodeAttrs)) {\n        setAccessor(\n          elm,\n          memberName,\n          oldVnodeAttrs[memberName],\n          void 0,\n          isSvgMode2,\n          newVnode.$flags$,\n          isInitialRender\n        );\n      }\n    }\n  }\n  for (const memberName of sortedAttrNames(Object.keys(newVnodeAttrs))) {\n    setAccessor(\n      elm,\n      memberName,\n      oldVnodeAttrs[memberName],\n      newVnodeAttrs[memberName],\n      isSvgMode2,\n      newVnode.$flags$,\n      isInitialRender\n    );\n  }\n};\nfunction sortedAttrNames(attrNames) {\n  return attrNames.includes(\"ref\") ? (\n    // we need to sort these to ensure that `'ref'` is the last attr\n    [...attrNames.filter((attr) => attr !== \"ref\"), \"ref\"]\n  ) : (\n    // no need to sort, return the original array\n    attrNames\n  );\n}\n\n// src/runtime/vdom/vdom-render.ts\nvar scopeId;\nvar contentRef;\nvar hostTagName;\nvar useNativeShadowDom = false;\nvar checkSlotFallbackVisibility = false;\nvar checkSlotRelocate = false;\nvar isSvgMode = false;\nvar createElm = (oldParentVNode, newParentVNode, childIndex) => {\n  var _a;\n  const newVNode2 = newParentVNode.$children$[childIndex];\n  let i2 = 0;\n  let elm;\n  let childNode;\n  let oldVNode;\n  if (BUILD19.slotRelocation && !useNativeShadowDom) {\n    checkSlotRelocate = true;\n    if (newVNode2.$tag$ === \"slot\") {\n      newVNode2.$flags$ |= newVNode2.$children$ ? (\n        // slot element has fallback content\n        // still create an element that \"mocks\" the slot element\n        2 /* isSlotFallback */\n      ) : (\n        // slot element does not have fallback content\n        // create an html comment we'll use to always reference\n        // where actual slot content should sit next to\n        1 /* isSlotReference */\n      );\n    }\n  }\n  if (BUILD19.isDev && newVNode2.$elm$) {\n    consoleDevError(\n      `The JSX ${newVNode2.$text$ !== null ? `\"${newVNode2.$text$}\" text` : `\"${newVNode2.$tag$}\" element`} node should not be shared within the same renderer. The renderer caches element lookups in order to improve performance. However, a side effect from this is that the exact same JSX node should not be reused. For more information please see https://stenciljs.com/docs/templating-jsx#avoid-shared-jsx-nodes`\n    );\n  }\n  if (BUILD19.vdomText && newVNode2.$text$ !== null) {\n    elm = newVNode2.$elm$ = win.document.createTextNode(newVNode2.$text$);\n  } else if (BUILD19.slotRelocation && newVNode2.$flags$ & 1 /* isSlotReference */) {\n    elm = newVNode2.$elm$ = BUILD19.isDebug || BUILD19.hydrateServerSide ? slotReferenceDebugNode(newVNode2) : win.document.createTextNode(\"\");\n    if (BUILD19.vdomAttribute) {\n      updateElement(null, newVNode2, isSvgMode);\n    }\n  } else {\n    if (BUILD19.svg && !isSvgMode) {\n      isSvgMode = newVNode2.$tag$ === \"svg\";\n    }\n    if (!win.document) {\n      throw new Error(\n        \"You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.\"\n      );\n    }\n    elm = newVNode2.$elm$ = BUILD19.svg ? win.document.createElementNS(\n      isSvgMode ? SVG_NS : HTML_NS,\n      !useNativeShadowDom && BUILD19.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? \"slot-fb\" : newVNode2.$tag$\n    ) : win.document.createElement(\n      !useNativeShadowDom && BUILD19.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? \"slot-fb\" : newVNode2.$tag$\n    );\n    if (BUILD19.svg && isSvgMode && newVNode2.$tag$ === \"foreignObject\") {\n      isSvgMode = false;\n    }\n    if (BUILD19.vdomAttribute) {\n      updateElement(null, newVNode2, isSvgMode);\n    }\n    if ((BUILD19.scoped || BUILD19.hydrateServerSide && 128 /* shadowNeedsScopedCss */) && isDef(scopeId) && elm[\"s-si\"] !== scopeId) {\n      elm.classList.add(elm[\"s-si\"] = scopeId);\n    }\n    if (newVNode2.$children$) {\n      for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {\n        childNode = createElm(oldParentVNode, newVNode2, i2);\n        if (childNode) {\n          elm.appendChild(childNode);\n        }\n      }\n    }\n    if (BUILD19.svg) {\n      if (newVNode2.$tag$ === \"svg\") {\n        isSvgMode = false;\n      } else if (elm.tagName === \"foreignObject\") {\n        isSvgMode = true;\n      }\n    }\n  }\n  elm[\"s-hn\"] = hostTagName;\n  if (BUILD19.slotRelocation) {\n    if (newVNode2.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {\n      elm[\"s-sr\"] = true;\n      elm[\"s-cr\"] = contentRef;\n      elm[\"s-sn\"] = newVNode2.$name$ || \"\";\n      elm[\"s-rf\"] = (_a = newVNode2.$attrs$) == null ? void 0 : _a.ref;\n      patchSlotNode(elm);\n      oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];\n      if (oldVNode && oldVNode.$tag$ === newVNode2.$tag$ && oldParentVNode.$elm$) {\n        if (BUILD19.experimentalSlotFixes) {\n          relocateToHostRoot(oldParentVNode.$elm$);\n        } else {\n          putBackInOriginalLocation(oldParentVNode.$elm$, false);\n        }\n      }\n      if (BUILD19.scoped || BUILD19.hydrateServerSide && 128 /* shadowNeedsScopedCss */) {\n        addRemoveSlotScopedClass(contentRef, elm, newParentVNode.$elm$, oldParentVNode == null ? void 0 : oldParentVNode.$elm$);\n      }\n    }\n  }\n  return elm;\n};\nvar relocateToHostRoot = (parentElm) => {\n  plt.$flags$ |= 1 /* isTmpDisconnected */;\n  const host = parentElm.closest(hostTagName.toLowerCase());\n  if (host != null) {\n    const contentRefNode = Array.from(host.__childNodes || host.childNodes).find(\n      (ref) => ref[\"s-cr\"]\n    );\n    const childNodeArray = Array.from(\n      parentElm.__childNodes || parentElm.childNodes\n    );\n    for (const childNode of contentRefNode ? childNodeArray.reverse() : childNodeArray) {\n      if (childNode[\"s-sh\"] != null) {\n        insertBefore(host, childNode, contentRefNode != null ? contentRefNode : null);\n        childNode[\"s-sh\"] = void 0;\n        checkSlotRelocate = true;\n      }\n    }\n  }\n  plt.$flags$ &= ~1 /* isTmpDisconnected */;\n};\nvar putBackInOriginalLocation = (parentElm, recursive) => {\n  plt.$flags$ |= 1 /* isTmpDisconnected */;\n  const oldSlotChildNodes = Array.from(parentElm.__childNodes || parentElm.childNodes);\n  if (parentElm[\"s-sr\"] && BUILD19.experimentalSlotFixes) {\n    let node = parentElm;\n    while (node = node.nextSibling) {\n      if (node && node[\"s-sn\"] === parentElm[\"s-sn\"] && node[\"s-sh\"] === hostTagName) {\n        oldSlotChildNodes.push(node);\n      }\n    }\n  }\n  for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {\n    const childNode = oldSlotChildNodes[i2];\n    if (childNode[\"s-hn\"] !== hostTagName && childNode[\"s-ol\"]) {\n      insertBefore(referenceNode(childNode).parentNode, childNode, referenceNode(childNode));\n      childNode[\"s-ol\"].remove();\n      childNode[\"s-ol\"] = void 0;\n      childNode[\"s-sh\"] = void 0;\n      checkSlotRelocate = true;\n    }\n    if (recursive) {\n      putBackInOriginalLocation(childNode, recursive);\n    }\n  }\n  plt.$flags$ &= ~1 /* isTmpDisconnected */;\n};\nvar addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {\n  let containerElm = BUILD19.slotRelocation && parentElm[\"s-cr\"] && parentElm[\"s-cr\"].parentNode || parentElm;\n  let childNode;\n  if (BUILD19.shadowDom && containerElm.shadowRoot && containerElm.tagName === hostTagName) {\n    containerElm = containerElm.shadowRoot;\n  }\n  for (; startIdx <= endIdx; ++startIdx) {\n    if (vnodes[startIdx]) {\n      childNode = createElm(null, parentVNode, startIdx);\n      if (childNode) {\n        vnodes[startIdx].$elm$ = childNode;\n        insertBefore(containerElm, childNode, BUILD19.slotRelocation ? referenceNode(before) : before);\n      }\n    }\n  }\n};\nvar removeVnodes = (vnodes, startIdx, endIdx) => {\n  for (let index = startIdx; index <= endIdx; ++index) {\n    const vnode = vnodes[index];\n    if (vnode) {\n      const elm = vnode.$elm$;\n      nullifyVNodeRefs(vnode);\n      if (elm) {\n        if (BUILD19.slotRelocation) {\n          checkSlotFallbackVisibility = true;\n          if (elm[\"s-ol\"]) {\n            elm[\"s-ol\"].remove();\n          } else {\n            putBackInOriginalLocation(elm, true);\n          }\n        }\n        elm.remove();\n      }\n    }\n  }\n};\nvar updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = false) => {\n  let oldStartIdx = 0;\n  let newStartIdx = 0;\n  let idxInOld = 0;\n  let i2 = 0;\n  let oldEndIdx = oldCh.length - 1;\n  let oldStartVnode = oldCh[0];\n  let oldEndVnode = oldCh[oldEndIdx];\n  let newEndIdx = newCh.length - 1;\n  let newStartVnode = newCh[0];\n  let newEndVnode = newCh[newEndIdx];\n  let node;\n  let elmToMove;\n  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n    if (oldStartVnode == null) {\n      oldStartVnode = oldCh[++oldStartIdx];\n    } else if (oldEndVnode == null) {\n      oldEndVnode = oldCh[--oldEndIdx];\n    } else if (newStartVnode == null) {\n      newStartVnode = newCh[++newStartIdx];\n    } else if (newEndVnode == null) {\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldStartVnode, newStartVnode, isInitialRender)) {\n      patch(oldStartVnode, newStartVnode, isInitialRender);\n      oldStartVnode = oldCh[++oldStartIdx];\n      newStartVnode = newCh[++newStartIdx];\n    } else if (isSameVnode(oldEndVnode, newEndVnode, isInitialRender)) {\n      patch(oldEndVnode, newEndVnode, isInitialRender);\n      oldEndVnode = oldCh[--oldEndIdx];\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {\n      if (BUILD19.slotRelocation && (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n        putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);\n      }\n      patch(oldStartVnode, newEndVnode, isInitialRender);\n      insertBefore(parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);\n      oldStartVnode = oldCh[++oldStartIdx];\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {\n      if (BUILD19.slotRelocation && (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n        putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);\n      }\n      patch(oldEndVnode, newStartVnode, isInitialRender);\n      insertBefore(parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);\n      oldEndVnode = oldCh[--oldEndIdx];\n      newStartVnode = newCh[++newStartIdx];\n    } else {\n      idxInOld = -1;\n      if (BUILD19.vdomKey) {\n        for (i2 = oldStartIdx; i2 <= oldEndIdx; ++i2) {\n          if (oldCh[i2] && oldCh[i2].$key$ !== null && oldCh[i2].$key$ === newStartVnode.$key$) {\n            idxInOld = i2;\n            break;\n          }\n        }\n      }\n      if (BUILD19.vdomKey && idxInOld >= 0) {\n        elmToMove = oldCh[idxInOld];\n        if (elmToMove.$tag$ !== newStartVnode.$tag$) {\n          node = createElm(oldCh && oldCh[newStartIdx], newVNode2, idxInOld);\n        } else {\n          patch(elmToMove, newStartVnode, isInitialRender);\n          oldCh[idxInOld] = void 0;\n          node = elmToMove.$elm$;\n        }\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx);\n        newStartVnode = newCh[++newStartIdx];\n      }\n      if (node) {\n        if (BUILD19.slotRelocation) {\n          insertBefore(\n            referenceNode(oldStartVnode.$elm$).parentNode,\n            node,\n            referenceNode(oldStartVnode.$elm$)\n          );\n        } else {\n          insertBefore(oldStartVnode.$elm$.parentNode, node, oldStartVnode.$elm$);\n        }\n      }\n    }\n  }\n  if (oldStartIdx > oldEndIdx) {\n    addVnodes(\n      parentElm,\n      newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$,\n      newVNode2,\n      newCh,\n      newStartIdx,\n      newEndIdx\n    );\n  } else if (BUILD19.updatable && newStartIdx > newEndIdx) {\n    removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n  }\n};\nvar isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {\n  if (leftVNode.$tag$ === rightVNode.$tag$) {\n    if (BUILD19.slotRelocation && leftVNode.$tag$ === \"slot\") {\n      return leftVNode.$name$ === rightVNode.$name$;\n    }\n    if (BUILD19.vdomKey && !isInitialRender) {\n      return leftVNode.$key$ === rightVNode.$key$;\n    }\n    if (isInitialRender && !leftVNode.$key$ && rightVNode.$key$) {\n      leftVNode.$key$ = rightVNode.$key$;\n    }\n    return true;\n  }\n  return false;\n};\nvar referenceNode = (node) => node && node[\"s-ol\"] || node;\nvar patch = (oldVNode, newVNode2, isInitialRender = false) => {\n  const elm = newVNode2.$elm$ = oldVNode.$elm$;\n  const oldChildren = oldVNode.$children$;\n  const newChildren = newVNode2.$children$;\n  const tag = newVNode2.$tag$;\n  const text = newVNode2.$text$;\n  let defaultHolder;\n  if (!BUILD19.vdomText || text === null) {\n    if (BUILD19.svg) {\n      isSvgMode = tag === \"svg\" ? true : tag === \"foreignObject\" ? false : isSvgMode;\n    }\n    if (BUILD19.vdomAttribute || BUILD19.reflect) {\n      if (BUILD19.slot && tag === \"slot\" && !useNativeShadowDom) {\n        if (BUILD19.experimentalSlotFixes && oldVNode.$name$ !== newVNode2.$name$) {\n          newVNode2.$elm$[\"s-sn\"] = newVNode2.$name$ || \"\";\n          relocateToHostRoot(newVNode2.$elm$.parentElement);\n        }\n      }\n      updateElement(oldVNode, newVNode2, isSvgMode, isInitialRender);\n    }\n    if (BUILD19.updatable && oldChildren !== null && newChildren !== null) {\n      updateChildren(elm, oldChildren, newVNode2, newChildren, isInitialRender);\n    } else if (newChildren !== null) {\n      if (BUILD19.updatable && BUILD19.vdomText && oldVNode.$text$ !== null) {\n        elm.textContent = \"\";\n      }\n      addVnodes(elm, null, newVNode2, newChildren, 0, newChildren.length - 1);\n    } else if (\n      // don't do this on initial render as it can cause non-hydrated content to be removed\n      !isInitialRender && BUILD19.updatable && oldChildren !== null\n    ) {\n      removeVnodes(oldChildren, 0, oldChildren.length - 1);\n    }\n    if (BUILD19.svg && isSvgMode && tag === \"svg\") {\n      isSvgMode = false;\n    }\n  } else if (BUILD19.vdomText && BUILD19.slotRelocation && (defaultHolder = elm[\"s-cr\"])) {\n    defaultHolder.parentNode.textContent = text;\n  } else if (BUILD19.vdomText && oldVNode.$text$ !== text) {\n    elm.data = text;\n  }\n};\nvar relocateNodes = [];\nvar markSlotContentForRelocation = (elm) => {\n  let node;\n  let hostContentNodes;\n  let j;\n  const children = elm.__childNodes || elm.childNodes;\n  for (const childNode of children) {\n    if (childNode[\"s-sr\"] && (node = childNode[\"s-cr\"]) && node.parentNode) {\n      hostContentNodes = node.parentNode.__childNodes || node.parentNode.childNodes;\n      const slotName = childNode[\"s-sn\"];\n      for (j = hostContentNodes.length - 1; j >= 0; j--) {\n        node = hostContentNodes[j];\n        if (!node[\"s-cn\"] && !node[\"s-nr\"] && node[\"s-hn\"] !== childNode[\"s-hn\"] && (!BUILD19.experimentalSlotFixes || !node[\"s-sh\"] || node[\"s-sh\"] !== childNode[\"s-hn\"])) {\n          if (isNodeLocatedInSlot(node, slotName)) {\n            let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n            checkSlotFallbackVisibility = true;\n            node[\"s-sn\"] = node[\"s-sn\"] || slotName;\n            if (relocateNodeData) {\n              relocateNodeData.$nodeToRelocate$[\"s-sh\"] = childNode[\"s-hn\"];\n              relocateNodeData.$slotRefNode$ = childNode;\n            } else {\n              node[\"s-sh\"] = childNode[\"s-hn\"];\n              relocateNodes.push({\n                $slotRefNode$: childNode,\n                $nodeToRelocate$: node\n              });\n            }\n            if (node[\"s-sr\"]) {\n              relocateNodes.map((relocateNode) => {\n                if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node[\"s-sn\"])) {\n                  relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n                  if (relocateNodeData && !relocateNode.$slotRefNode$) {\n                    relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;\n                  }\n                }\n              });\n            }\n          } else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {\n            relocateNodes.push({\n              $nodeToRelocate$: node\n            });\n          }\n        }\n      }\n    }\n    if (childNode.nodeType === 1 /* ElementNode */) {\n      markSlotContentForRelocation(childNode);\n    }\n  }\n};\nvar nullifyVNodeRefs = (vNode) => {\n  if (BUILD19.vdomRef) {\n    vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);\n    vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);\n  }\n};\nvar insertBefore = (parent, newNode, reference) => {\n  if (BUILD19.scoped && typeof newNode[\"s-sn\"] === \"string\" && !!newNode[\"s-sr\"] && !!newNode[\"s-cr\"]) {\n    addRemoveSlotScopedClass(newNode[\"s-cr\"], newNode, parent, newNode.parentElement);\n  } else if (BUILD19.experimentalSlotFixes && typeof newNode[\"s-sn\"] === \"string\") {\n    if (parent.getRootNode().nodeType !== 11 /* DOCUMENT_FRAGMENT_NODE */) {\n      patchParentNode(newNode);\n    }\n    parent.insertBefore(newNode, reference);\n    const { slotNode } = findSlotFromSlottedNode(newNode);\n    if (slotNode) dispatchSlotChangeEvent(slotNode);\n    return newNode;\n  }\n  if (BUILD19.experimentalSlotFixes && parent.__insertBefore) {\n    return parent.__insertBefore(newNode, reference);\n  } else {\n    return parent == null ? void 0 : parent.insertBefore(newNode, reference);\n  }\n};\nfunction addRemoveSlotScopedClass(reference, slotNode, newParent, oldParent) {\n  var _a, _b;\n  let scopeId2;\n  if (reference && typeof slotNode[\"s-sn\"] === \"string\" && !!slotNode[\"s-sr\"] && reference.parentNode && reference.parentNode[\"s-sc\"] && (scopeId2 = slotNode[\"s-si\"] || reference.parentNode[\"s-sc\"])) {\n    const scopeName = slotNode[\"s-sn\"];\n    const hostName = slotNode[\"s-hn\"];\n    (_a = newParent.classList) == null ? void 0 : _a.add(scopeId2 + \"-s\");\n    if (oldParent && ((_b = oldParent.classList) == null ? void 0 : _b.contains(scopeId2 + \"-s\"))) {\n      let child = (oldParent.__childNodes || oldParent.childNodes)[0];\n      let found = false;\n      while (child) {\n        if (child[\"s-sn\"] !== scopeName && child[\"s-hn\"] === hostName && !!child[\"s-sr\"]) {\n          found = true;\n          break;\n        }\n        child = child.nextSibling;\n      }\n      if (!found) oldParent.classList.remove(scopeId2 + \"-s\");\n    }\n  }\n}\nvar renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {\n  var _a, _b, _c, _d, _e;\n  const hostElm = hostRef.$hostElement$;\n  const cmpMeta = hostRef.$cmpMeta$;\n  const oldVNode = hostRef.$vnode$ || newVNode(null, null);\n  const isHostElement = isHost(renderFnResults);\n  const rootVnode = isHostElement ? renderFnResults : h(null, null, renderFnResults);\n  hostTagName = hostElm.tagName;\n  if (BUILD19.isDev && Array.isArray(renderFnResults) && renderFnResults.some(isHost)) {\n    throw new Error(`The <Host> must be the single root component.\nLooks like the render() function of \"${hostTagName.toLowerCase()}\" is returning an array that contains the <Host>.\n\nThe render() function should look like this instead:\n\nrender() {\n  // Do not return an array\n  return (\n    <Host>{content}</Host>\n  );\n}\n  `);\n  }\n  if (BUILD19.reflect && cmpMeta.$attrsToReflect$) {\n    rootVnode.$attrs$ = rootVnode.$attrs$ || {};\n    cmpMeta.$attrsToReflect$.map(\n      ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]\n    );\n  }\n  if (isInitialLoad && rootVnode.$attrs$) {\n    for (const key of Object.keys(rootVnode.$attrs$)) {\n      if (hostElm.hasAttribute(key) && ![\"key\", \"ref\", \"style\", \"class\"].includes(key)) {\n        rootVnode.$attrs$[key] = hostElm[key];\n      }\n    }\n  }\n  rootVnode.$tag$ = null;\n  rootVnode.$flags$ |= 4 /* isHost */;\n  hostRef.$vnode$ = rootVnode;\n  rootVnode.$elm$ = oldVNode.$elm$ = BUILD19.shadowDom ? hostElm.shadowRoot || hostElm : hostElm;\n  if (BUILD19.scoped || BUILD19.shadowDom) {\n    scopeId = hostElm[\"s-sc\"];\n  }\n  useNativeShadowDom = supportsShadow && !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) && !(cmpMeta.$flags$ & 128 /* shadowNeedsScopedCss */);\n  if (BUILD19.slotRelocation) {\n    contentRef = hostElm[\"s-cr\"];\n    checkSlotFallbackVisibility = false;\n  }\n  patch(oldVNode, rootVnode, isInitialLoad);\n  if (BUILD19.slotRelocation) {\n    plt.$flags$ |= 1 /* isTmpDisconnected */;\n    if (checkSlotRelocate) {\n      markSlotContentForRelocation(rootVnode.$elm$);\n      for (const relocateData of relocateNodes) {\n        const nodeToRelocate = relocateData.$nodeToRelocate$;\n        if (!nodeToRelocate[\"s-ol\"] && win.document) {\n          const orgLocationNode = BUILD19.isDebug || BUILD19.hydrateServerSide ? originalLocationDebugNode(nodeToRelocate) : win.document.createTextNode(\"\");\n          orgLocationNode[\"s-nr\"] = nodeToRelocate;\n          insertBefore(nodeToRelocate.parentNode, nodeToRelocate[\"s-ol\"] = orgLocationNode, nodeToRelocate);\n        }\n      }\n      for (const relocateData of relocateNodes) {\n        const nodeToRelocate = relocateData.$nodeToRelocate$;\n        const slotRefNode = relocateData.$slotRefNode$;\n        if (slotRefNode) {\n          const parentNodeRef = slotRefNode.parentNode;\n          let insertBeforeNode = slotRefNode.nextSibling;\n          if (!BUILD19.hydrateServerSide && (!BUILD19.experimentalSlotFixes || insertBeforeNode && insertBeforeNode.nodeType === 1 /* ElementNode */)) {\n            let orgLocationNode = (_a = nodeToRelocate[\"s-ol\"]) == null ? void 0 : _a.previousSibling;\n            while (orgLocationNode) {\n              let refNode = (_b = orgLocationNode[\"s-nr\"]) != null ? _b : null;\n              if (refNode && refNode[\"s-sn\"] === nodeToRelocate[\"s-sn\"] && parentNodeRef === (refNode.__parentNode || refNode.parentNode)) {\n                refNode = refNode.nextSibling;\n                while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode[\"s-sr\"])) {\n                  refNode = refNode == null ? void 0 : refNode.nextSibling;\n                }\n                if (!refNode || !refNode[\"s-nr\"]) {\n                  insertBeforeNode = refNode;\n                  break;\n                }\n              }\n              orgLocationNode = orgLocationNode.previousSibling;\n            }\n          }\n          const parent = nodeToRelocate.__parentNode || nodeToRelocate.parentNode;\n          const nextSibling = nodeToRelocate.__nextSibling || nodeToRelocate.nextSibling;\n          if (!insertBeforeNode && parentNodeRef !== parent || nextSibling !== insertBeforeNode) {\n            if (nodeToRelocate !== insertBeforeNode) {\n              if (!BUILD19.experimentalSlotFixes && !nodeToRelocate[\"s-hn\"] && nodeToRelocate[\"s-ol\"]) {\n                nodeToRelocate[\"s-hn\"] = nodeToRelocate[\"s-ol\"].parentNode.nodeName;\n              }\n              insertBefore(parentNodeRef, nodeToRelocate, insertBeforeNode);\n              if (nodeToRelocate.nodeType === 1 /* ElementNode */ && nodeToRelocate.tagName !== \"SLOT-FB\") {\n                nodeToRelocate.hidden = (_c = nodeToRelocate[\"s-ih\"]) != null ? _c : false;\n              }\n            }\n          }\n          nodeToRelocate && typeof slotRefNode[\"s-rf\"] === \"function\" && slotRefNode[\"s-rf\"](slotRefNode);\n        } else {\n          if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n            if (isInitialLoad) {\n              nodeToRelocate[\"s-ih\"] = (_d = nodeToRelocate.hidden) != null ? _d : false;\n            }\n            nodeToRelocate.hidden = true;\n          }\n        }\n      }\n    }\n    if (checkSlotFallbackVisibility) {\n      updateFallbackSlotVisibility(rootVnode.$elm$);\n    }\n    plt.$flags$ &= ~1 /* isTmpDisconnected */;\n    relocateNodes.length = 0;\n  }\n  if (BUILD19.experimentalScopedSlotChanges && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n    const children = rootVnode.$elm$.__childNodes || rootVnode.$elm$.childNodes;\n    for (const childNode of children) {\n      if (childNode[\"s-hn\"] !== hostTagName && !childNode[\"s-sh\"]) {\n        if (isInitialLoad && childNode[\"s-ih\"] == null) {\n          childNode[\"s-ih\"] = (_e = childNode.hidden) != null ? _e : false;\n        }\n        childNode.hidden = true;\n      }\n    }\n  }\n  contentRef = void 0;\n};\nvar slotReferenceDebugNode = (slotVNode) => {\n  var _a;\n  return (_a = win.document) == null ? void 0 : _a.createComment(\n    `<slot${slotVNode.$name$ ? ' name=\"' + slotVNode.$name$ + '\"' : \"\"}> (host=${hostTagName.toLowerCase()})`\n  );\n};\nvar originalLocationDebugNode = (nodeToRelocate) => {\n  var _a;\n  return (_a = win.document) == null ? void 0 : _a.createComment(\n    `org-location for ` + (nodeToRelocate.localName ? `<${nodeToRelocate.localName}> (host=${nodeToRelocate[\"s-hn\"]})` : `[${nodeToRelocate.textContent}]`)\n  );\n};\n\n// src/runtime/update-component.ts\nvar attachToAncestor = (hostRef, ancestorComponent) => {\n  if (BUILD20.asyncLoading && ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent[\"s-p\"]) {\n    const index = ancestorComponent[\"s-p\"].push(\n      new Promise(\n        (r) => hostRef.$onRenderResolve$ = () => {\n          ancestorComponent[\"s-p\"].splice(index - 1, 1);\n          r();\n        }\n      )\n    );\n  }\n};\nvar scheduleUpdate = (hostRef, isInitialLoad) => {\n  if (BUILD20.taskQueue && BUILD20.updatable) {\n    hostRef.$flags$ |= 16 /* isQueuedForUpdate */;\n  }\n  if (BUILD20.asyncLoading && hostRef.$flags$ & 4 /* isWaitingForChildren */) {\n    hostRef.$flags$ |= 512 /* needsRerender */;\n    return;\n  }\n  attachToAncestor(hostRef, hostRef.$ancestorComponent$);\n  const dispatch = () => dispatchHooks(hostRef, isInitialLoad);\n  return BUILD20.taskQueue ? writeTask(dispatch) : dispatch();\n};\nvar dispatchHooks = (hostRef, isInitialLoad) => {\n  const elm = hostRef.$hostElement$;\n  const endSchedule = createTime(\"scheduleUpdate\", hostRef.$cmpMeta$.$tagName$);\n  const instance = BUILD20.lazyLoad ? hostRef.$lazyInstance$ : elm;\n  if (!instance) {\n    throw new Error(\n      `Can't render component <${elm.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \\`externalRuntime: true\\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`\n    );\n  }\n  let maybePromise;\n  if (isInitialLoad) {\n    if (BUILD20.lazyLoad && BUILD20.hostListener) {\n      hostRef.$flags$ |= 256 /* isListenReady */;\n      if (hostRef.$queuedListeners$) {\n        hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event, elm));\n        hostRef.$queuedListeners$ = void 0;\n      }\n    }\n    emitLifecycleEvent(elm, \"componentWillLoad\");\n    maybePromise = safeCall(instance, \"componentWillLoad\", void 0, elm);\n  } else {\n    emitLifecycleEvent(elm, \"componentWillUpdate\");\n    maybePromise = safeCall(instance, \"componentWillUpdate\", void 0, elm);\n  }\n  emitLifecycleEvent(elm, \"componentWillRender\");\n  maybePromise = enqueue(maybePromise, () => safeCall(instance, \"componentWillRender\", void 0, elm));\n  endSchedule();\n  return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));\n};\nvar enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {\n  console.error(err2);\n  fn();\n}) : fn();\nvar isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === \"function\";\nvar updateComponent = async (hostRef, instance, isInitialLoad) => {\n  var _a;\n  const elm = hostRef.$hostElement$;\n  const endUpdate = createTime(\"update\", hostRef.$cmpMeta$.$tagName$);\n  const rc = elm[\"s-rc\"];\n  if (BUILD20.style && isInitialLoad) {\n    attachStyles(hostRef);\n  }\n  const endRender = createTime(\"render\", hostRef.$cmpMeta$.$tagName$);\n  if (BUILD20.isDev) {\n    hostRef.$flags$ |= 1024 /* devOnRender */;\n  }\n  if (BUILD20.hydrateServerSide) {\n    await callRender(hostRef, instance, elm, isInitialLoad);\n  } else {\n    callRender(hostRef, instance, elm, isInitialLoad);\n  }\n  if (BUILD20.isDev) {\n    hostRef.$renderCount$ = hostRef.$renderCount$ === void 0 ? 1 : hostRef.$renderCount$ + 1;\n    hostRef.$flags$ &= ~1024 /* devOnRender */;\n  }\n  if (BUILD20.hydrateServerSide) {\n    try {\n      serverSideConnected(elm);\n      if (isInitialLoad) {\n        if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {\n          elm[\"s-en\"] = \"\";\n        } else if (hostRef.$cmpMeta$.$flags$ & 2 /* scopedCssEncapsulation */) {\n          elm[\"s-en\"] = \"c\";\n        }\n      }\n    } catch (e) {\n      consoleError(e, elm);\n    }\n  }\n  if (BUILD20.asyncLoading && rc) {\n    rc.map((cb) => cb());\n    elm[\"s-rc\"] = void 0;\n  }\n  endRender();\n  endUpdate();\n  if (BUILD20.asyncLoading) {\n    const childrenPromises = (_a = elm[\"s-p\"]) != null ? _a : [];\n    const postUpdate = () => postUpdateComponent(hostRef);\n    if (childrenPromises.length === 0) {\n      postUpdate();\n    } else {\n      Promise.all(childrenPromises).then(postUpdate);\n      hostRef.$flags$ |= 4 /* isWaitingForChildren */;\n      childrenPromises.length = 0;\n    }\n  } else {\n    postUpdateComponent(hostRef);\n  }\n};\nvar renderingRef = null;\nvar callRender = (hostRef, instance, elm, isInitialLoad) => {\n  const allRenderFn = BUILD20.allRenderFn ? true : false;\n  const lazyLoad = BUILD20.lazyLoad ? true : false;\n  const taskQueue = BUILD20.taskQueue ? true : false;\n  const updatable = BUILD20.updatable ? true : false;\n  try {\n    renderingRef = instance;\n    instance = allRenderFn ? instance.render() : instance.render && instance.render();\n    if (updatable && taskQueue) {\n      hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;\n    }\n    if (updatable || lazyLoad) {\n      hostRef.$flags$ |= 2 /* hasRendered */;\n    }\n    if (BUILD20.hasRenderFn || BUILD20.reflect) {\n      if (BUILD20.vdomRender || BUILD20.reflect) {\n        if (BUILD20.hydrateServerSide) {\n          return Promise.resolve(instance).then((value) => renderVdom(hostRef, value, isInitialLoad));\n        } else {\n          renderVdom(hostRef, instance, isInitialLoad);\n        }\n      } else {\n        const shadowRoot = elm.shadowRoot;\n        if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {\n          shadowRoot.textContent = instance;\n        } else {\n          elm.textContent = instance;\n        }\n      }\n    }\n  } catch (e) {\n    consoleError(e, hostRef.$hostElement$);\n  }\n  renderingRef = null;\n  return null;\n};\nvar getRenderingRef = () => renderingRef;\nvar postUpdateComponent = (hostRef) => {\n  const tagName = hostRef.$cmpMeta$.$tagName$;\n  const elm = hostRef.$hostElement$;\n  const endPostUpdate = createTime(\"postUpdate\", tagName);\n  const instance = BUILD20.lazyLoad ? hostRef.$lazyInstance$ : elm;\n  const ancestorComponent = hostRef.$ancestorComponent$;\n  if (BUILD20.isDev) {\n    hostRef.$flags$ |= 1024 /* devOnRender */;\n  }\n  safeCall(instance, \"componentDidRender\", void 0, elm);\n  if (BUILD20.isDev) {\n    hostRef.$flags$ &= ~1024 /* devOnRender */;\n  }\n  emitLifecycleEvent(elm, \"componentDidRender\");\n  if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {\n    hostRef.$flags$ |= 64 /* hasLoadedComponent */;\n    if (BUILD20.asyncLoading && BUILD20.cssAnnotations) {\n      addHydratedFlag(elm);\n    }\n    if (BUILD20.isDev) {\n      hostRef.$flags$ |= 2048 /* devOnDidLoad */;\n    }\n    safeCall(instance, \"componentDidLoad\", void 0, elm);\n    if (BUILD20.isDev) {\n      hostRef.$flags$ &= ~2048 /* devOnDidLoad */;\n    }\n    emitLifecycleEvent(elm, \"componentDidLoad\");\n    endPostUpdate();\n    if (BUILD20.asyncLoading) {\n      hostRef.$onReadyResolve$(elm);\n      if (!ancestorComponent) {\n        appDidLoad(tagName);\n      }\n    }\n  } else {\n    if (BUILD20.isDev) {\n      hostRef.$flags$ |= 1024 /* devOnRender */;\n    }\n    safeCall(instance, \"componentDidUpdate\", void 0, elm);\n    if (BUILD20.isDev) {\n      hostRef.$flags$ &= ~1024 /* devOnRender */;\n    }\n    emitLifecycleEvent(elm, \"componentDidUpdate\");\n    endPostUpdate();\n  }\n  if (BUILD20.method && BUILD20.lazyLoad) {\n    hostRef.$onInstanceResolve$(elm);\n  }\n  if (BUILD20.asyncLoading) {\n    if (hostRef.$onRenderResolve$) {\n      hostRef.$onRenderResolve$();\n      hostRef.$onRenderResolve$ = void 0;\n    }\n    if (hostRef.$flags$ & 512 /* needsRerender */) {\n      nextTick(() => scheduleUpdate(hostRef, false));\n    }\n    hostRef.$flags$ &= ~(4 /* isWaitingForChildren */ | 512 /* needsRerender */);\n  }\n};\nvar forceUpdate = (ref) => {\n  if (BUILD20.updatable && (Build.isBrowser || Build.isTesting)) {\n    const hostRef = getHostRef(ref);\n    const isConnected = hostRef.$hostElement$.isConnected;\n    if (isConnected && (hostRef.$flags$ & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n      scheduleUpdate(hostRef, false);\n    }\n    return isConnected;\n  }\n  return false;\n};\nvar appDidLoad = (who) => {\n  if (BUILD20.asyncQueue) {\n    plt.$flags$ |= 2 /* appLoaded */;\n  }\n  nextTick(() => emitEvent(win, \"appload\", { detail: { namespace: NAMESPACE } }));\n  if (BUILD20.profile && performance.measure) {\n    performance.measure(`[Stencil] ${NAMESPACE} initial load (by ${who})`, \"st:app:start\");\n  }\n};\nvar safeCall = (instance, method, arg, elm) => {\n  if (instance && instance[method]) {\n    try {\n      return instance[method](arg);\n    } catch (e) {\n      consoleError(e, elm);\n    }\n  }\n  return void 0;\n};\nvar emitLifecycleEvent = (elm, lifecycleName) => {\n  if (BUILD20.lifecycleDOMEvents) {\n    emitEvent(elm, \"stencil_\" + lifecycleName, {\n      bubbles: true,\n      composed: true,\n      detail: {\n        namespace: NAMESPACE\n      }\n    });\n  }\n};\nvar addHydratedFlag = (elm) => {\n  var _a, _b;\n  return BUILD20.hydratedClass ? elm.classList.add((_a = BUILD20.hydratedSelectorName) != null ? _a : \"hydrated\") : BUILD20.hydratedAttribute ? elm.setAttribute((_b = BUILD20.hydratedSelectorName) != null ? _b : \"hydrated\", \"\") : void 0;\n};\nvar serverSideConnected = (elm) => {\n  const children = elm.children;\n  if (children != null) {\n    for (let i2 = 0, ii = children.length; i2 < ii; i2++) {\n      const childElm = children[i2];\n      if (typeof childElm.connectedCallback === \"function\") {\n        childElm.connectedCallback();\n      }\n      serverSideConnected(childElm);\n    }\n  }\n};\n\n// src/runtime/set-value.ts\nvar getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);\nvar setValue = (ref, propName, newVal, cmpMeta) => {\n  const hostRef = getHostRef(ref);\n  if (BUILD21.lazyLoad && !hostRef) {\n    throw new Error(\n      `Couldn't find host element for \"${cmpMeta.$tagName$}\" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`\n    );\n  }\n  const elm = BUILD21.lazyLoad ? hostRef.$hostElement$ : ref;\n  const oldVal = hostRef.$instanceValues$.get(propName);\n  const flags = hostRef.$flags$;\n  const instance = BUILD21.lazyLoad ? hostRef.$lazyInstance$ : elm;\n  newVal = parsePropertyValue(newVal, cmpMeta.$members$[propName][0]);\n  const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);\n  const didValueChange = newVal !== oldVal && !areBothNaN;\n  if ((!BUILD21.lazyLoad || !(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {\n    hostRef.$instanceValues$.set(propName, newVal);\n    if (BUILD21.isDev) {\n      if (hostRef.$flags$ & 1024 /* devOnRender */) {\n        consoleDevWarn(\n          `The state/prop \"${propName}\" changed during rendering. This can potentially lead to infinite-loops and other bugs.`,\n          \"\\nElement\",\n          elm,\n          \"\\nNew value\",\n          newVal,\n          \"\\nOld value\",\n          oldVal\n        );\n      } else if (hostRef.$flags$ & 2048 /* devOnDidLoad */) {\n        consoleDevWarn(\n          `The state/prop \"${propName}\" changed during \"componentDidLoad()\", this triggers extra re-renders, try to setup on \"componentWillLoad()\"`,\n          \"\\nElement\",\n          elm,\n          \"\\nNew value\",\n          newVal,\n          \"\\nOld value\",\n          oldVal\n        );\n      }\n    }\n    if (!BUILD21.lazyLoad || instance) {\n      if (BUILD21.watchCallback && cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {\n        const watchMethods = cmpMeta.$watchers$[propName];\n        if (watchMethods) {\n          watchMethods.map((watchMethodName) => {\n            try {\n              instance[watchMethodName](newVal, oldVal, propName);\n            } catch (e) {\n              consoleError(e, elm);\n            }\n          });\n        }\n      }\n      if (BUILD21.updatable && (flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n        if (instance.componentShouldUpdate) {\n          if (instance.componentShouldUpdate(newVal, oldVal, propName) === false) {\n            return;\n          }\n        }\n        scheduleUpdate(hostRef, false);\n      }\n    }\n  }\n};\n\n// src/runtime/proxy-component.ts\nvar proxyComponent = (Cstr, cmpMeta, flags) => {\n  var _a, _b;\n  const prototype = Cstr.prototype;\n  if (BUILD22.isTesting) {\n    if (prototype.__stencilAugmented) {\n      return;\n    }\n    prototype.__stencilAugmented = true;\n  }\n  if (BUILD22.formAssociated && cmpMeta.$flags$ & 64 /* formAssociated */ && flags & 1 /* isElementConstructor */) {\n    FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS.forEach((cbName) => {\n      const originalFormAssociatedCallback = prototype[cbName];\n      Object.defineProperty(prototype, cbName, {\n        value(...args) {\n          const hostRef = getHostRef(this);\n          const instance = BUILD22.lazyLoad ? hostRef.$lazyInstance$ : this;\n          if (!instance) {\n            hostRef.$onReadyPromise$.then((asyncInstance) => {\n              const cb = asyncInstance[cbName];\n              typeof cb === \"function\" && cb.call(asyncInstance, ...args);\n            });\n          } else {\n            const cb = BUILD22.lazyLoad ? instance[cbName] : originalFormAssociatedCallback;\n            typeof cb === \"function\" && cb.call(instance, ...args);\n          }\n        }\n      });\n    });\n  }\n  if (BUILD22.member && cmpMeta.$members$ || BUILD22.watchCallback && (cmpMeta.$watchers$ || Cstr.watchers)) {\n    if (BUILD22.watchCallback && Cstr.watchers && !cmpMeta.$watchers$) {\n      cmpMeta.$watchers$ = Cstr.watchers;\n    }\n    const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});\n    members.map(([memberName, [memberFlags]]) => {\n      if ((BUILD22.prop || BUILD22.state) && (memberFlags & 31 /* Prop */ || (!BUILD22.lazyLoad || flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {\n        const { get: origGetter, set: origSetter } = Object.getOwnPropertyDescriptor(prototype, memberName) || {};\n        if (origGetter) cmpMeta.$members$[memberName][0] |= 2048 /* Getter */;\n        if (origSetter) cmpMeta.$members$[memberName][0] |= 4096 /* Setter */;\n        if (flags & 1 /* isElementConstructor */ || !origGetter) {\n          Object.defineProperty(prototype, memberName, {\n            get() {\n              if (BUILD22.lazyLoad) {\n                if ((cmpMeta.$members$[memberName][0] & 2048 /* Getter */) === 0) {\n                  return getValue(this, memberName);\n                }\n                const ref = getHostRef(this);\n                const instance = ref ? ref.$lazyInstance$ : prototype;\n                if (!instance) return;\n                return instance[memberName];\n              }\n              if (!BUILD22.lazyLoad) {\n                return origGetter ? origGetter.apply(this) : getValue(this, memberName);\n              }\n            },\n            configurable: true,\n            enumerable: true\n          });\n        }\n        Object.defineProperty(prototype, memberName, {\n          set(newValue) {\n            const ref = getHostRef(this);\n            if (BUILD22.isDev) {\n              if (\n                // we are proxying the instance (not element)\n                (flags & 1 /* isElementConstructor */) === 0 && // if the class has a setter, then the Element can update instance values, so ignore\n                (cmpMeta.$members$[memberName][0] & 4096 /* Setter */) === 0 && // the element is not constructing\n                (ref && ref.$flags$ & 8 /* isConstructingInstance */) === 0 && // the member is a prop\n                (memberFlags & 31 /* Prop */) !== 0 && // the member is not mutable\n                (memberFlags & 1024 /* Mutable */) === 0\n              ) {\n                consoleDevWarn(\n                  `@Prop() \"${memberName}\" on <${cmpMeta.$tagName$}> is immutable but was modified from within the component.\nMore information: https://stenciljs.com/docs/properties#prop-mutability`\n                );\n              }\n            }\n            if (origSetter) {\n              const currentValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];\n              if (typeof currentValue === \"undefined\" && ref.$instanceValues$.get(memberName)) {\n                newValue = ref.$instanceValues$.get(memberName);\n              } else if (!ref.$instanceValues$.get(memberName) && currentValue) {\n                ref.$instanceValues$.set(memberName, currentValue);\n              }\n              origSetter.apply(this, [parsePropertyValue(newValue, memberFlags)]);\n              newValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];\n              setValue(this, memberName, newValue, cmpMeta);\n              return;\n            }\n            if (!BUILD22.lazyLoad) {\n              setValue(this, memberName, newValue, cmpMeta);\n              return;\n            }\n            if (BUILD22.lazyLoad) {\n              if ((flags & 1 /* isElementConstructor */) === 0 || (cmpMeta.$members$[memberName][0] & 4096 /* Setter */) === 0) {\n                setValue(this, memberName, newValue, cmpMeta);\n                if (flags & 1 /* isElementConstructor */ && !ref.$lazyInstance$) {\n                  ref.$onReadyPromise$.then(() => {\n                    if (cmpMeta.$members$[memberName][0] & 4096 /* Setter */ && ref.$lazyInstance$[memberName] !== ref.$instanceValues$.get(memberName)) {\n                      ref.$lazyInstance$[memberName] = newValue;\n                    }\n                  });\n                }\n                return;\n              }\n              const setterSetVal = () => {\n                const currentValue = ref.$lazyInstance$[memberName];\n                if (!ref.$instanceValues$.get(memberName) && currentValue) {\n                  ref.$instanceValues$.set(memberName, currentValue);\n                }\n                ref.$lazyInstance$[memberName] = parsePropertyValue(newValue, memberFlags);\n                setValue(this, memberName, ref.$lazyInstance$[memberName], cmpMeta);\n              };\n              if (ref.$lazyInstance$) {\n                setterSetVal();\n              } else {\n                ref.$onReadyPromise$.then(() => setterSetVal());\n              }\n            }\n          }\n        });\n      } else if (BUILD22.lazyLoad && BUILD22.method && flags & 1 /* isElementConstructor */ && memberFlags & 64 /* Method */) {\n        Object.defineProperty(prototype, memberName, {\n          value(...args) {\n            var _a2;\n            const ref = getHostRef(this);\n            return (_a2 = ref == null ? void 0 : ref.$onInstancePromise$) == null ? void 0 : _a2.then(() => {\n              var _a3;\n              return (_a3 = ref.$lazyInstance$) == null ? void 0 : _a3[memberName](...args);\n            });\n          }\n        });\n      }\n    });\n    if (BUILD22.observeAttribute && (!BUILD22.lazyLoad || flags & 1 /* isElementConstructor */)) {\n      const attrNameToPropName = /* @__PURE__ */ new Map();\n      prototype.attributeChangedCallback = function(attrName, oldValue, newValue) {\n        plt.jmp(() => {\n          var _a2;\n          const propName = attrNameToPropName.get(attrName);\n          if (this.hasOwnProperty(propName) && BUILD22.lazyLoad) {\n            newValue = this[propName];\n            delete this[propName];\n          } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === \"number\" && // cast type to number to avoid TS compiler issues\n          this[propName] == newValue) {\n            return;\n          } else if (propName == null) {\n            const hostRef = getHostRef(this);\n            const flags2 = hostRef == null ? void 0 : hostRef.$flags$;\n            if (flags2 && !(flags2 & 8 /* isConstructingInstance */) && flags2 & 128 /* isWatchReady */ && newValue !== oldValue) {\n              const elm = BUILD22.lazyLoad ? hostRef.$hostElement$ : this;\n              const instance = BUILD22.lazyLoad ? hostRef.$lazyInstance$ : elm;\n              const entry = (_a2 = cmpMeta.$watchers$) == null ? void 0 : _a2[attrName];\n              entry == null ? void 0 : entry.forEach((callbackName) => {\n                if (instance[callbackName] != null) {\n                  instance[callbackName].call(instance, newValue, oldValue, attrName);\n                }\n              });\n            }\n            return;\n          }\n          const propDesc = Object.getOwnPropertyDescriptor(prototype, propName);\n          newValue = newValue === null && typeof this[propName] === \"boolean\" ? false : newValue;\n          if (newValue !== this[propName] && (!propDesc.get || !!propDesc.set)) {\n            this[propName] = newValue;\n          }\n        });\n      };\n      Cstr.observedAttributes = Array.from(\n        /* @__PURE__ */ new Set([\n          ...Object.keys((_b = cmpMeta.$watchers$) != null ? _b : {}),\n          ...members.filter(([_, m]) => m[0] & 15 /* HasAttribute */).map(([propName, m]) => {\n            var _a2;\n            const attrName = m[1] || propName;\n            attrNameToPropName.set(attrName, propName);\n            if (BUILD22.reflect && m[0] & 512 /* ReflectAttr */) {\n              (_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);\n            }\n            return attrName;\n          })\n        ])\n      );\n    }\n  }\n  return Cstr;\n};\n\n// src/runtime/initialize-component.ts\nvar initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {\n  let Cstr;\n  if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {\n    hostRef.$flags$ |= 32 /* hasInitializedComponent */;\n    const bundleId = cmpMeta.$lazyBundleId$;\n    if (BUILD23.lazyLoad && bundleId) {\n      const CstrImport = loadModule(cmpMeta, hostRef, hmrVersionId);\n      if (CstrImport && \"then\" in CstrImport) {\n        const endLoad = uniqueTime(\n          `st:load:${cmpMeta.$tagName$}:${hostRef.$modeName$}`,\n          `[Stencil] Load module for <${cmpMeta.$tagName$}>`\n        );\n        Cstr = await CstrImport;\n        endLoad();\n      } else {\n        Cstr = CstrImport;\n      }\n      if (!Cstr) {\n        throw new Error(`Constructor for \"${cmpMeta.$tagName$}#${hostRef.$modeName$}\" was not found`);\n      }\n      if (BUILD23.member && !Cstr.isProxied) {\n        if (BUILD23.watchCallback) {\n          cmpMeta.$watchers$ = Cstr.watchers;\n        }\n        proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);\n        Cstr.isProxied = true;\n      }\n      const endNewInstance = createTime(\"createInstance\", cmpMeta.$tagName$);\n      if (BUILD23.member) {\n        hostRef.$flags$ |= 8 /* isConstructingInstance */;\n      }\n      try {\n        new Cstr(hostRef);\n      } catch (e) {\n        consoleError(e, elm);\n      }\n      if (BUILD23.member) {\n        hostRef.$flags$ &= ~8 /* isConstructingInstance */;\n      }\n      if (BUILD23.watchCallback) {\n        hostRef.$flags$ |= 128 /* isWatchReady */;\n      }\n      endNewInstance();\n      fireConnectedCallback(hostRef.$lazyInstance$, elm);\n    } else {\n      Cstr = elm.constructor;\n      const cmpTag = elm.localName;\n      customElements.whenDefined(cmpTag).then(() => hostRef.$flags$ |= 128 /* isWatchReady */);\n    }\n    if (BUILD23.style && Cstr && Cstr.style) {\n      let style;\n      if (typeof Cstr.style === \"string\") {\n        style = Cstr.style;\n      } else if (BUILD23.mode && typeof Cstr.style !== \"string\") {\n        hostRef.$modeName$ = computeMode(elm);\n        if (hostRef.$modeName$) {\n          style = Cstr.style[hostRef.$modeName$];\n        }\n        if (BUILD23.hydrateServerSide && hostRef.$modeName$) {\n          elm.setAttribute(\"s-mode\", hostRef.$modeName$);\n        }\n      }\n      const scopeId2 = getScopeId(cmpMeta, hostRef.$modeName$);\n      if (!styles.has(scopeId2)) {\n        const endRegisterStyles = createTime(\"registerStyles\", cmpMeta.$tagName$);\n        if (BUILD23.hydrateServerSide && BUILD23.shadowDom && cmpMeta.$flags$ & 128 /* shadowNeedsScopedCss */) {\n          style = scopeCss(style, scopeId2, true);\n        }\n        registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));\n        endRegisterStyles();\n      }\n    }\n  }\n  const ancestorComponent = hostRef.$ancestorComponent$;\n  const schedule = () => scheduleUpdate(hostRef, true);\n  if (BUILD23.asyncLoading && ancestorComponent && ancestorComponent[\"s-rc\"]) {\n    ancestorComponent[\"s-rc\"].push(schedule);\n  } else {\n    schedule();\n  }\n};\nvar fireConnectedCallback = (instance, elm) => {\n  if (BUILD23.lazyLoad) {\n    safeCall(instance, \"connectedCallback\", void 0, elm);\n  }\n};\n\n// src/runtime/connected-callback.ts\nvar connectedCallback = (elm) => {\n  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n    const hostRef = getHostRef(elm);\n    const cmpMeta = hostRef.$cmpMeta$;\n    const endConnected = createTime(\"connectedCallback\", cmpMeta.$tagName$);\n    if (BUILD24.hostListenerTargetParent) {\n      addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, true);\n    }\n    if (!(hostRef.$flags$ & 1 /* hasConnected */)) {\n      hostRef.$flags$ |= 1 /* hasConnected */;\n      let hostId;\n      if (BUILD24.hydrateClientSide) {\n        hostId = elm.getAttribute(HYDRATE_ID);\n        if (hostId) {\n          if (BUILD24.shadowDom && supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n            const scopeId2 = BUILD24.mode ? addStyle(elm.shadowRoot, cmpMeta, elm.getAttribute(\"s-mode\")) : addStyle(elm.shadowRoot, cmpMeta);\n            elm.classList.remove(scopeId2 + \"-h\", scopeId2 + \"-s\");\n          } else if (BUILD24.scoped && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n            const scopeId2 = getScopeId(cmpMeta, BUILD24.mode ? elm.getAttribute(\"s-mode\") : void 0);\n            elm[\"s-sc\"] = scopeId2;\n          }\n          initializeClientHydrate(elm, cmpMeta.$tagName$, hostId, hostRef);\n        }\n      }\n      if (BUILD24.slotRelocation && !hostId) {\n        if (BUILD24.hydrateServerSide || (BUILD24.slot || BUILD24.shadowDom) && // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n        cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */)) {\n          setContentReference(elm);\n        }\n      }\n      if (BUILD24.asyncLoading) {\n        let ancestorComponent = elm;\n        while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n          if (BUILD24.hydrateClientSide && ancestorComponent.nodeType === 1 /* ElementNode */ && ancestorComponent.hasAttribute(\"s-id\") && ancestorComponent[\"s-p\"] || ancestorComponent[\"s-p\"]) {\n            attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n            break;\n          }\n        }\n      }\n      if (BUILD24.prop && !BUILD24.hydrateServerSide && cmpMeta.$members$) {\n        Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n          if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {\n            const value = elm[memberName];\n            delete elm[memberName];\n            elm[memberName] = value;\n          }\n        });\n      }\n      if (BUILD24.initializeNextTick) {\n        nextTick(() => initializeComponent(elm, hostRef, cmpMeta));\n      } else {\n        initializeComponent(elm, hostRef, cmpMeta);\n      }\n    } else {\n      addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, false);\n      if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n        fireConnectedCallback(hostRef.$lazyInstance$, elm);\n      } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n        hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$, elm));\n      }\n    }\n    endConnected();\n  }\n};\nvar setContentReference = (elm) => {\n  if (!win.document) {\n    return;\n  }\n  const contentRefElm = elm[\"s-cr\"] = win.document.createComment(\n    BUILD24.isDebug ? `content-ref (host=${elm.localName})` : \"\"\n  );\n  contentRefElm[\"s-cn\"] = true;\n  insertBefore(elm, contentRefElm, elm.firstChild);\n};\n\n// src/runtime/disconnected-callback.ts\nimport { BUILD as BUILD25 } from \"@stencil/core/internal/app-data\";\nvar disconnectInstance = (instance, elm) => {\n  if (BUILD25.lazyLoad) {\n    safeCall(instance, \"disconnectedCallback\", void 0, elm || instance);\n  }\n};\nvar disconnectedCallback = async (elm) => {\n  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n    const hostRef = getHostRef(elm);\n    if (BUILD25.hostListener) {\n      if (hostRef.$rmListeners$) {\n        hostRef.$rmListeners$.map((rmListener) => rmListener());\n        hostRef.$rmListeners$ = void 0;\n      }\n    }\n    if (!BUILD25.lazyLoad) {\n      disconnectInstance(elm);\n    } else if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n      disconnectInstance(hostRef.$lazyInstance$, elm);\n    } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n      hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$, elm));\n    }\n  }\n  if (rootAppliedStyles.has(elm)) {\n    rootAppliedStyles.delete(elm);\n  }\n  if (elm.shadowRoot && rootAppliedStyles.has(elm.shadowRoot)) {\n    rootAppliedStyles.delete(elm.shadowRoot);\n  }\n};\n\n// src/runtime/bootstrap-custom-element.ts\nvar defineCustomElement = (Cstr, compactMeta) => {\n  customElements.define(compactMeta[1], proxyCustomElement(Cstr, compactMeta));\n};\nvar proxyCustomElement = (Cstr, compactMeta) => {\n  const cmpMeta = {\n    $flags$: compactMeta[0],\n    $tagName$: compactMeta[1]\n  };\n  if (BUILD26.member) {\n    cmpMeta.$members$ = compactMeta[2];\n  }\n  if (BUILD26.hostListener) {\n    cmpMeta.$listeners$ = compactMeta[3];\n  }\n  if (BUILD26.watchCallback) {\n    cmpMeta.$watchers$ = Cstr.$watchers$;\n  }\n  if (BUILD26.reflect) {\n    cmpMeta.$attrsToReflect$ = [];\n  }\n  if (BUILD26.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n    cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;\n  }\n  if (BUILD26.experimentalSlotFixes) {\n    if (BUILD26.scoped && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n      patchPseudoShadowDom(Cstr.prototype);\n    }\n  } else {\n    if (BUILD26.slotChildNodesFix) {\n      patchChildSlotNodes(Cstr.prototype);\n    }\n    if (BUILD26.cloneNodeFix) {\n      patchCloneNode(Cstr.prototype);\n    }\n    if (BUILD26.appendChildSlotFix) {\n      patchSlotAppendChild(Cstr.prototype);\n    }\n    if (BUILD26.scopedSlotTextContentFix && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n      patchTextContent(Cstr.prototype);\n    }\n  }\n  if (BUILD26.hydrateClientSide && BUILD26.shadowDom) {\n    hydrateScopedToShadow();\n  }\n  const originalConnectedCallback = Cstr.prototype.connectedCallback;\n  const originalDisconnectedCallback = Cstr.prototype.disconnectedCallback;\n  Object.assign(Cstr.prototype, {\n    __hasHostListenerAttached: false,\n    __registerHost() {\n      registerHost(this, cmpMeta);\n    },\n    connectedCallback() {\n      if (!this.__hasHostListenerAttached) {\n        const hostRef = getHostRef(this);\n        addHostEventListeners(this, hostRef, cmpMeta.$listeners$, false);\n        this.__hasHostListenerAttached = true;\n      }\n      connectedCallback(this);\n      if (originalConnectedCallback) {\n        originalConnectedCallback.call(this);\n      }\n    },\n    disconnectedCallback() {\n      disconnectedCallback(this);\n      if (originalDisconnectedCallback) {\n        originalDisconnectedCallback.call(this);\n      }\n    },\n    __attachShadow() {\n      if (supportsShadow) {\n        if (!this.shadowRoot) {\n          if (BUILD26.shadowDelegatesFocus) {\n            this.attachShadow({\n              mode: \"open\",\n              delegatesFocus: !!(cmpMeta.$flags$ & 16 /* shadowDelegatesFocus */)\n            });\n          } else {\n            this.attachShadow({ mode: \"open\" });\n          }\n        } else {\n          if (this.shadowRoot.mode !== \"open\") {\n            throw new Error(\n              `Unable to re-use existing shadow root for ${cmpMeta.$tagName$}! Mode is set to ${this.shadowRoot.mode} but Stencil only supports open shadow roots.`\n            );\n          }\n        }\n      } else {\n        this.shadowRoot = this;\n      }\n    }\n  });\n  Cstr.is = cmpMeta.$tagName$;\n  return proxyComponent(Cstr, cmpMeta, 1 /* isElementConstructor */ | 2 /* proxyState */);\n};\nvar forceModeUpdate = (elm) => {\n  if (BUILD26.style && BUILD26.mode && !BUILD26.lazyLoad) {\n    const mode = computeMode(elm);\n    const hostRef = getHostRef(elm);\n    if (hostRef.$modeName$ !== mode) {\n      const cmpMeta = hostRef.$cmpMeta$;\n      const oldScopeId = elm[\"s-sc\"];\n      const scopeId2 = getScopeId(cmpMeta, mode);\n      const style = elm.constructor.style[mode];\n      const flags = cmpMeta.$flags$;\n      if (style) {\n        if (!styles.has(scopeId2)) {\n          registerStyle(scopeId2, style, !!(flags & 1 /* shadowDomEncapsulation */));\n        }\n        hostRef.$modeName$ = mode;\n        elm.classList.remove(oldScopeId + \"-h\", oldScopeId + \"-s\");\n        attachStyles(hostRef);\n        forceUpdate(elm);\n      }\n    }\n  }\n};\n\n// src/runtime/bootstrap-lazy.ts\nimport { BUILD as BUILD27 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/hmr-component.ts\nvar hmrStart = (hostElement, cmpMeta, hmrVersionId) => {\n  const hostRef = getHostRef(hostElement);\n  hostRef.$flags$ = 1 /* hasConnected */;\n  initializeComponent(hostElement, hostRef, cmpMeta, hmrVersionId);\n};\n\n// src/runtime/bootstrap-lazy.ts\nvar bootstrapLazy = (lazyBundles, options = {}) => {\n  var _a;\n  if (BUILD27.profile && performance.mark) {\n    performance.mark(\"st:app:start\");\n  }\n  installDevTools();\n  if (!win.document) {\n    console.warn(\"Stencil: No document found. Skipping bootstrapping lazy components.\");\n    return;\n  }\n  const endBootstrap = createTime(\"bootstrapLazy\");\n  const cmpTags = [];\n  const exclude = options.exclude || [];\n  const customElements2 = win.customElements;\n  const head = win.document.head;\n  const metaCharset = /* @__PURE__ */ head.querySelector(\"meta[charset]\");\n  const dataStyles = /* @__PURE__ */ win.document.createElement(\"style\");\n  const deferredConnectedCallbacks = [];\n  let appLoadFallback;\n  let isBootstrapping = true;\n  Object.assign(plt, options);\n  plt.$resourcesUrl$ = new URL(options.resourcesUrl || \"./\", win.document.baseURI).href;\n  if (BUILD27.asyncQueue) {\n    if (options.syncQueue) {\n      plt.$flags$ |= 4 /* queueSync */;\n    }\n  }\n  if (BUILD27.hydrateClientSide) {\n    plt.$flags$ |= 2 /* appLoaded */;\n  }\n  if (BUILD27.hydrateClientSide && BUILD27.shadowDom) {\n    hydrateScopedToShadow();\n  }\n  let hasSlotRelocation = false;\n  lazyBundles.map((lazyBundle) => {\n    lazyBundle[1].map((compactMeta) => {\n      var _a2;\n      const cmpMeta = {\n        $flags$: compactMeta[0],\n        $tagName$: compactMeta[1],\n        $members$: compactMeta[2],\n        $listeners$: compactMeta[3]\n      };\n      if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n        hasSlotRelocation = true;\n      }\n      if (BUILD27.member) {\n        cmpMeta.$members$ = compactMeta[2];\n      }\n      if (BUILD27.hostListener) {\n        cmpMeta.$listeners$ = compactMeta[3];\n      }\n      if (BUILD27.reflect) {\n        cmpMeta.$attrsToReflect$ = [];\n      }\n      if (BUILD27.watchCallback) {\n        cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};\n      }\n      if (BUILD27.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n        cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;\n      }\n      const tagName = BUILD27.transformTagName && options.transformTagName ? options.transformTagName(cmpMeta.$tagName$) : cmpMeta.$tagName$;\n      const HostElement = class extends HTMLElement {\n        // StencilLazyHost\n        constructor(self) {\n          super(self);\n          this.hasRegisteredEventListeners = false;\n          self = this;\n          registerHost(self, cmpMeta);\n          if (BUILD27.shadowDom && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n            if (supportsShadow) {\n              if (!self.shadowRoot) {\n                if (BUILD27.shadowDelegatesFocus) {\n                  self.attachShadow({\n                    mode: \"open\",\n                    delegatesFocus: !!(cmpMeta.$flags$ & 16 /* shadowDelegatesFocus */)\n                  });\n                } else {\n                  self.attachShadow({ mode: \"open\" });\n                }\n              } else {\n                if (self.shadowRoot.mode !== \"open\") {\n                  throw new Error(\n                    `Unable to re-use existing shadow root for ${cmpMeta.$tagName$}! Mode is set to ${self.shadowRoot.mode} but Stencil only supports open shadow roots.`\n                  );\n                }\n              }\n            } else if (!BUILD27.hydrateServerSide && !(\"shadowRoot\" in self)) {\n              self.shadowRoot = self;\n            }\n          }\n        }\n        connectedCallback() {\n          const hostRef = getHostRef(this);\n          if (!this.hasRegisteredEventListeners) {\n            this.hasRegisteredEventListeners = true;\n            addHostEventListeners(this, hostRef, cmpMeta.$listeners$, false);\n          }\n          if (appLoadFallback) {\n            clearTimeout(appLoadFallback);\n            appLoadFallback = null;\n          }\n          if (isBootstrapping) {\n            deferredConnectedCallbacks.push(this);\n          } else {\n            plt.jmp(() => connectedCallback(this));\n          }\n        }\n        disconnectedCallback() {\n          plt.jmp(() => disconnectedCallback(this));\n          plt.raf(() => {\n            var _a3;\n            const hostRef = getHostRef(this);\n            const i2 = deferredConnectedCallbacks.findIndex((host) => host === this);\n            if (i2 > -1) {\n              deferredConnectedCallbacks.splice(i2, 1);\n            }\n            if (((_a3 = hostRef == null ? void 0 : hostRef.$vnode$) == null ? void 0 : _a3.$elm$) instanceof Node && !hostRef.$vnode$.$elm$.isConnected) {\n              delete hostRef.$vnode$.$elm$;\n            }\n          });\n        }\n        componentOnReady() {\n          return getHostRef(this).$onReadyPromise$;\n        }\n      };\n      if (BUILD27.experimentalSlotFixes) {\n        if (BUILD27.scoped && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n          patchPseudoShadowDom(HostElement.prototype);\n        }\n      } else {\n        if (BUILD27.slotChildNodesFix) {\n          patchChildSlotNodes(HostElement.prototype);\n        }\n        if (BUILD27.cloneNodeFix) {\n          patchCloneNode(HostElement.prototype);\n        }\n        if (BUILD27.appendChildSlotFix) {\n          patchSlotAppendChild(HostElement.prototype);\n        }\n        if (BUILD27.scopedSlotTextContentFix && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n          patchTextContent(HostElement.prototype);\n        }\n      }\n      if (BUILD27.formAssociated && cmpMeta.$flags$ & 64 /* formAssociated */) {\n        HostElement.formAssociated = true;\n      }\n      if (BUILD27.hotModuleReplacement) {\n        HostElement.prototype[\"s-hmr\"] = function(hmrVersionId) {\n          hmrStart(this, cmpMeta, hmrVersionId);\n        };\n      }\n      cmpMeta.$lazyBundleId$ = lazyBundle[0];\n      if (!exclude.includes(tagName) && !customElements2.get(tagName)) {\n        cmpTags.push(tagName);\n        customElements2.define(\n          tagName,\n          proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */)\n        );\n      }\n    });\n  });\n  if (cmpTags.length > 0) {\n    if (hasSlotRelocation) {\n      dataStyles.textContent += SLOT_FB_CSS;\n    }\n    if (BUILD27.invisiblePrehydration && (BUILD27.hydratedClass || BUILD27.hydratedAttribute)) {\n      dataStyles.textContent += cmpTags.sort() + HYDRATED_CSS;\n    }\n    if (dataStyles.innerHTML.length) {\n      dataStyles.setAttribute(\"data-styles\", \"\");\n      const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(win.document);\n      if (nonce != null) {\n        dataStyles.setAttribute(\"nonce\", nonce);\n      }\n      head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);\n    }\n  }\n  isBootstrapping = false;\n  if (deferredConnectedCallbacks.length) {\n    deferredConnectedCallbacks.map((host) => host.connectedCallback());\n  } else {\n    if (BUILD27.profile) {\n      plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30, \"timeout\"));\n    } else {\n      plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n    }\n  }\n  endBootstrap();\n};\n\n// src/runtime/fragment.ts\nvar Fragment = (_, children) => children;\n\n// src/runtime/host-listener.ts\nimport { BUILD as BUILD28 } from \"@stencil/core/internal/app-data\";\nvar addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {\n  if (BUILD28.hostListener && listeners && win.document) {\n    if (BUILD28.hostListenerTargetParent) {\n      if (attachParentListeners) {\n        listeners = listeners.filter(([flags]) => flags & 32 /* TargetParent */);\n      } else {\n        listeners = listeners.filter(([flags]) => !(flags & 32 /* TargetParent */));\n      }\n    }\n    listeners.map(([flags, name, method]) => {\n      const target = BUILD28.hostListenerTarget ? getHostListenerTarget(win.document, elm, flags) : elm;\n      const handler = hostListenerProxy(hostRef, method);\n      const opts = hostListenerOpts(flags);\n      plt.ael(target, name, handler, opts);\n      (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));\n    });\n  }\n};\nvar hostListenerProxy = (hostRef, methodName) => (ev) => {\n  var _a;\n  try {\n    if (BUILD28.lazyLoad) {\n      if (hostRef.$flags$ & 256 /* isListenReady */) {\n        (_a = hostRef.$lazyInstance$) == null ? void 0 : _a[methodName](ev);\n      } else {\n        (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);\n      }\n    } else {\n      hostRef.$hostElement$[methodName](ev);\n    }\n  } catch (e) {\n    consoleError(e, hostRef.$hostElement$);\n  }\n};\nvar getHostListenerTarget = (doc, elm, flags) => {\n  if (BUILD28.hostListenerTargetDocument && flags & 4 /* TargetDocument */) {\n    return doc;\n  }\n  if (BUILD28.hostListenerTargetWindow && flags & 8 /* TargetWindow */) {\n    return win;\n  }\n  if (BUILD28.hostListenerTargetBody && flags & 16 /* TargetBody */) {\n    return doc.body;\n  }\n  if (BUILD28.hostListenerTargetParent && flags & 32 /* TargetParent */ && elm.parentElement) {\n    return elm.parentElement;\n  }\n  return elm;\n};\nvar hostListenerOpts = (flags) => supportsListenerOptions ? {\n  passive: (flags & 1 /* Passive */) !== 0,\n  capture: (flags & 2 /* Capture */) !== 0\n} : (flags & 2 /* Capture */) !== 0;\n\n// src/runtime/nonce.ts\nvar setNonce = (nonce) => plt.$nonce$ = nonce;\n\n// src/runtime/platform-options.ts\nvar setPlatformOptions = (opts) => Object.assign(plt, opts);\n\n// src/runtime/render.ts\nfunction render(vnode, container) {\n  const cmpMeta = {\n    $flags$: 0,\n    $tagName$: container.tagName\n  };\n  const ref = {\n    $flags$: 0,\n    $cmpMeta$: cmpMeta,\n    $hostElement$: container\n  };\n  renderVdom(ref, vnode);\n}\n\n// src/runtime/vdom/vdom-annotations.ts\nvar insertVdomAnnotations = (doc, staticComponents) => {\n  if (doc != null) {\n    const docData = STENCIL_DOC_DATA in doc ? doc[STENCIL_DOC_DATA] : { ...DEFAULT_DOC_DATA };\n    docData.staticComponents = new Set(staticComponents);\n    const orgLocationNodes = [];\n    parseVNodeAnnotations(doc, doc.body, docData, orgLocationNodes);\n    orgLocationNodes.forEach((orgLocationNode) => {\n      var _a;\n      if (orgLocationNode != null && orgLocationNode[\"s-nr\"]) {\n        const nodeRef = orgLocationNode[\"s-nr\"];\n        let hostId = nodeRef[\"s-host-id\"];\n        let nodeId = nodeRef[\"s-node-id\"];\n        let childId = `${hostId}.${nodeId}`;\n        if (hostId == null) {\n          hostId = 0;\n          docData.rootLevelIds++;\n          nodeId = docData.rootLevelIds;\n          childId = `${hostId}.${nodeId}`;\n          if (nodeRef.nodeType === 1 /* ElementNode */) {\n            nodeRef.setAttribute(HYDRATE_CHILD_ID, childId);\n            if (typeof nodeRef[\"s-sn\"] === \"string\" && !nodeRef.getAttribute(\"slot\")) {\n              nodeRef.setAttribute(\"s-sn\", nodeRef[\"s-sn\"]);\n            }\n          } else if (nodeRef.nodeType === 3 /* TextNode */) {\n            if (hostId === 0) {\n              const textContent = (_a = nodeRef.nodeValue) == null ? void 0 : _a.trim();\n              if (textContent === \"\") {\n                orgLocationNode.remove();\n                return;\n              }\n            }\n            const commentBeforeTextNode = doc.createComment(childId);\n            commentBeforeTextNode.nodeValue = `${TEXT_NODE_ID}.${childId}`;\n            insertBefore(nodeRef.parentNode, commentBeforeTextNode, nodeRef);\n          } else if (nodeRef.nodeType === 8 /* CommentNode */) {\n            const commentBeforeTextNode = doc.createComment(childId);\n            commentBeforeTextNode.nodeValue = `${COMMENT_NODE_ID}.${childId}`;\n            nodeRef.parentNode.insertBefore(commentBeforeTextNode, nodeRef);\n          }\n        }\n        let orgLocationNodeId = `${ORG_LOCATION_ID}.${childId}`;\n        const orgLocationParentNode = orgLocationNode.parentElement;\n        if (orgLocationParentNode) {\n          if (orgLocationParentNode[\"s-en\"] === \"\") {\n            orgLocationNodeId += `.`;\n          } else if (orgLocationParentNode[\"s-en\"] === \"c\") {\n            orgLocationNodeId += `.c`;\n          }\n        }\n        orgLocationNode.nodeValue = orgLocationNodeId;\n      }\n    });\n  }\n};\nvar parseVNodeAnnotations = (doc, node, docData, orgLocationNodes) => {\n  var _a;\n  if (node == null) {\n    return;\n  }\n  if (node[\"s-nr\"] != null) {\n    orgLocationNodes.push(node);\n  }\n  if (node.nodeType === 1 /* ElementNode */) {\n    const childNodes = [...Array.from(node.childNodes), ...Array.from(((_a = node.shadowRoot) == null ? void 0 : _a.childNodes) || [])];\n    childNodes.forEach((childNode) => {\n      const hostRef = getHostRef(childNode);\n      if (hostRef != null && !docData.staticComponents.has(childNode.nodeName.toLowerCase())) {\n        const cmpData = {\n          nodeIds: 0\n        };\n        insertVNodeAnnotations(doc, childNode, hostRef.$vnode$, docData, cmpData);\n      }\n      parseVNodeAnnotations(doc, childNode, docData, orgLocationNodes);\n    });\n  }\n};\nvar insertVNodeAnnotations = (doc, hostElm, vnode, docData, cmpData) => {\n  if (vnode != null) {\n    const hostId = ++docData.hostIds;\n    hostElm.setAttribute(HYDRATE_ID, hostId);\n    if (hostElm[\"s-cr\"] != null) {\n      hostElm[\"s-cr\"].nodeValue = `${CONTENT_REF_ID}.${hostId}`;\n    }\n    if (vnode.$children$ != null) {\n      const depth = 0;\n      vnode.$children$.forEach((vnodeChild, index) => {\n        insertChildVNodeAnnotations(doc, vnodeChild, cmpData, hostId, depth, index);\n      });\n    }\n    if (hostElm && vnode && vnode.$elm$ && !hostElm.hasAttribute(HYDRATE_CHILD_ID)) {\n      const parent = hostElm.parentElement;\n      if (parent && parent.childNodes) {\n        const parentChildNodes = Array.from(parent.childNodes);\n        const comment = parentChildNodes.find(\n          (node) => node.nodeType === 8 /* CommentNode */ && node[\"s-sr\"]\n        );\n        if (comment) {\n          const index = parentChildNodes.indexOf(hostElm) - 1;\n          vnode.$elm$.setAttribute(\n            HYDRATE_CHILD_ID,\n            `${comment[\"s-host-id\"]}.${comment[\"s-node-id\"]}.0.${index}`\n          );\n        }\n      }\n    }\n  }\n};\nvar insertChildVNodeAnnotations = (doc, vnodeChild, cmpData, hostId, depth, index) => {\n  const childElm = vnodeChild.$elm$;\n  if (childElm == null) {\n    return;\n  }\n  const nodeId = cmpData.nodeIds++;\n  const childId = `${hostId}.${nodeId}.${depth}.${index}`;\n  childElm[\"s-host-id\"] = hostId;\n  childElm[\"s-node-id\"] = nodeId;\n  if (childElm.nodeType === 1 /* ElementNode */) {\n    childElm.setAttribute(HYDRATE_CHILD_ID, childId);\n    if (typeof childElm[\"s-sn\"] === \"string\" && !childElm.getAttribute(\"slot\")) {\n      childElm.setAttribute(\"s-sn\", childElm[\"s-sn\"]);\n    }\n  } else if (childElm.nodeType === 3 /* TextNode */) {\n    const parentNode = childElm.parentNode;\n    const nodeName = parentNode == null ? void 0 : parentNode.nodeName;\n    if (nodeName !== \"STYLE\" && nodeName !== \"SCRIPT\") {\n      const textNodeId = `${TEXT_NODE_ID}.${childId}`;\n      const commentBeforeTextNode = doc.createComment(textNodeId);\n      insertBefore(parentNode, commentBeforeTextNode, childElm);\n    }\n  } else if (childElm.nodeType === 8 /* CommentNode */) {\n    if (childElm[\"s-sr\"]) {\n      const slotName = childElm[\"s-sn\"] || \"\";\n      const slotNodeId = `${SLOT_NODE_ID}.${childId}.${slotName}`;\n      childElm.nodeValue = slotNodeId;\n    }\n  }\n  if (vnodeChild.$children$ != null) {\n    const childDepth = depth + 1;\n    vnodeChild.$children$.forEach((vnode, index2) => {\n      insertChildVNodeAnnotations(doc, vnode, cmpData, hostId, childDepth, index2);\n    });\n  }\n};\nexport {\n  BUILD29 as BUILD,\n  Build,\n  Env,\n  Fragment,\n  H,\n  H as HTMLElement,\n  Host,\n  NAMESPACE2 as NAMESPACE,\n  STENCIL_DEV_MODE,\n  addHostEventListeners,\n  bootstrapLazy,\n  cmpModules,\n  connectedCallback,\n  consoleDevError,\n  consoleDevInfo,\n  consoleDevWarn,\n  consoleError,\n  createEvent,\n  defineCustomElement,\n  disconnectedCallback,\n  forceModeUpdate,\n  forceUpdate,\n  getAssetPath,\n  getElement,\n  getHostRef,\n  getMode,\n  getRenderingRef,\n  getValue,\n  h,\n  insertVdomAnnotations,\n  isMemberInElement,\n  loadModule,\n  modeResolutionChain,\n  nextTick,\n  parsePropertyValue,\n  plt,\n  postUpdateComponent,\n  promiseResolve,\n  proxyComponent,\n  proxyCustomElement,\n  readTask,\n  registerHost,\n  registerInstance,\n  render,\n  renderVdom,\n  setAssetPath,\n  setErrorHandler,\n  setMode,\n  setNonce,\n  setPlatformHelpers,\n  setPlatformOptions,\n  setValue,\n  styles,\n  supportsConstructableStylesheets,\n  supportsListenerOptions,\n  supportsShadow,\n  win,\n  writeTask\n};\n","var Pt=Object.create;var pe=Object.defineProperty;var vt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var _t=Object.getPrototypeOf,Nt=Object.prototype.hasOwnProperty;var A=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Dt=(t,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of Ct(e))!Nt.call(t,s)&&s!==n&&pe(t,s,{get:()=>e[s],enumerable:!(r=vt(e,s))||r.enumerable});return t};var Y=(t,e,n)=>(n=t!=null?Pt(_t(t)):{},Dt(e||!t||!t.__esModule?pe(n,\"default\",{value:t,enumerable:!0}):n,t));var Q=A(y=>{\"use strict\";Object.defineProperty(y,\"__esModule\",{value:!0});y.isBytes=ge;y.number=R;y.bool=me;y.bytes=X;y.hash=ye;y.exists=Se;y.output=be;function R(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function me(t){if(typeof t!=\"boolean\")throw new Error(`boolean expected, not ${t}`)}function ge(t){return t instanceof Uint8Array||t!=null&&typeof t==\"object\"&&t.constructor.name===\"Uint8Array\"}function X(t,...e){if(!ge(t))throw new Error(\"Uint8Array expected\");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}function ye(t){if(typeof t!=\"function\"||typeof t.create!=\"function\")throw new Error(\"Hash should be wrapped by utils.wrapConstructor\");R(t.outputLen),R(t.blockLen)}function Se(t,e=!0){if(t.destroyed)throw new Error(\"Hash instance has been destroyed\");if(e&&t.finished)throw new Error(\"Hash#digest() has already been called\")}function be(t,e){X(t);let n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}var kt={number:R,bool:me,bytes:X,hash:ye,exists:Se,output:be};y.default=kt});var Fe=A(a=>{\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});a.add5L=a.add5H=a.add4H=a.add4L=a.add3H=a.add3L=a.rotlBL=a.rotlBH=a.rotlSL=a.rotlSH=a.rotr32L=a.rotr32H=a.rotrBL=a.rotrBH=a.rotrSL=a.rotrSH=a.shrSL=a.shrSH=a.toBig=void 0;a.fromBig=ee;a.split=Ie;a.add=Le;var M=BigInt(2**32-1),Z=BigInt(32);function ee(t,e=!1){return e?{h:Number(t&M),l:Number(t>>Z&M)}:{h:Number(t>>Z&M)|0,l:Number(t&M)|0}}function Ie(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let s=0;s<t.length;s++){let{h:o,l:i}=ee(t[s],e);[n[s],r[s]]=[o,i]}return[n,r]}var Te=(t,e)=>BigInt(t>>>0)<<Z|BigInt(e>>>0);a.toBig=Te;var we=(t,e,n)=>t>>>n;a.shrSH=we;var xe=(t,e,n)=>t<<32-n|e>>>n;a.shrSL=xe;var Ae=(t,e,n)=>t>>>n|e<<32-n;a.rotrSH=Ae;var Oe=(t,e,n)=>t<<32-n|e>>>n;a.rotrSL=Oe;var Ee=(t,e,n)=>t<<64-n|e>>>n-32;a.rotrBH=Ee;var Pe=(t,e,n)=>t>>>n-32|e<<64-n;a.rotrBL=Pe;var ve=(t,e)=>e;a.rotr32H=ve;var Ce=(t,e)=>t;a.rotr32L=Ce;var _e=(t,e,n)=>t<<n|e>>>32-n;a.rotlSH=_e;var Ne=(t,e,n)=>e<<n|t>>>32-n;a.rotlSL=Ne;var De=(t,e,n)=>e<<n-32|t>>>64-n;a.rotlBH=De;var ke=(t,e,n)=>t<<n-32|e>>>64-n;a.rotlBL=ke;function Le(t,e,n,r){let s=(e>>>0)+(r>>>0);return{h:t+n+(s/2**32|0)|0,l:s|0}}var Re=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0);a.add3L=Re;var Me=(t,e,n,r)=>e+n+r+(t/2**32|0)|0;a.add3H=Me;var Be=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0);a.add4L=Be;var Ue=(t,e,n,r,s)=>e+n+r+s+(t/2**32|0)|0;a.add4H=Ue;var ze=(t,e,n,r,s)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(s>>>0);a.add5L=ze;var He=(t,e,n,r,s,o)=>e+n+r+s+o+(t/2**32|0)|0;a.add5H=He;var Lt={fromBig:ee,split:Ie,toBig:Te,shrSH:we,shrSL:xe,rotrSH:Ae,rotrSL:Oe,rotrBH:Ee,rotrBL:Pe,rotr32H:ve,rotr32L:Ce,rotlSH:_e,rotlSL:Ne,rotlBH:De,rotlBL:ke,add:Le,add3L:Re,add3H:Me,add4L:Be,add4H:Ue,add5H:He,add5L:ze};a.default=Lt});var We=A(B=>{\"use strict\";Object.defineProperty(B,\"__esModule\",{value:!0});B.crypto=void 0;B.crypto=typeof globalThis==\"object\"&&\"crypto\"in globalThis?globalThis.crypto:void 0});var je=A(c=>{\"use strict\";Object.defineProperty(c,\"__esModule\",{value:!0});c.Hash=c.nextTick=c.byteSwapIfBE=c.byteSwap=c.isLE=c.rotl=c.rotr=c.createView=c.u32=c.u8=void 0;c.isBytes=Rt;c.byteSwap32=Wt;c.bytesToHex=$t;c.hexToBytes=jt;c.asyncLoop=Kt;c.utf8ToBytes=$e;c.toBytes=U;c.concatBytes=qt;c.checkOpts=Yt;c.wrapConstructor=Xt;c.wrapConstructorWithOpts=Qt;c.wrapXOFConstructorWithOpts=Zt;c.randomBytes=en;var E=We(),ne=Q();function Rt(t){return t instanceof Uint8Array||t!=null&&typeof t==\"object\"&&t.constructor.name===\"Uint8Array\"}var Mt=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength);c.u8=Mt;var Bt=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4));c.u32=Bt;var Ut=t=>new DataView(t.buffer,t.byteOffset,t.byteLength);c.createView=Ut;var zt=(t,e)=>t<<32-e|t>>>e;c.rotr=zt;var Ht=(t,e)=>t<<e|t>>>32-e>>>0;c.rotl=Ht;c.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var Ft=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255;c.byteSwap=Ft;c.byteSwapIfBE=c.isLE?t=>t:t=>(0,c.byteSwap)(t);function Wt(t){for(let e=0;e<t.length;e++)t[e]=(0,c.byteSwap)(t[e])}var Vt=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,\"0\"));function $t(t){(0,ne.bytes)(t);let e=\"\";for(let n=0;n<t.length;n++)e+=Vt[t[n]];return e}var S={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function Ve(t){if(t>=S._0&&t<=S._9)return t-S._0;if(t>=S._A&&t<=S._F)return t-(S._A-10);if(t>=S._a&&t<=S._f)return t-(S._a-10)}function jt(t){if(typeof t!=\"string\")throw new Error(\"hex string expected, got \"+typeof t);let e=t.length,n=e/2;if(e%2)throw new Error(\"padded hex string expected, got unpadded hex of length \"+e);let r=new Uint8Array(n);for(let s=0,o=0;s<n;s++,o+=2){let i=Ve(t.charCodeAt(o)),l=Ve(t.charCodeAt(o+1));if(i===void 0||l===void 0){let f=t[o]+t[o+1];throw new Error('hex string expected, got non-hex character \"'+f+'\" at index '+o)}r[s]=i*16+l}return r}var Jt=async()=>{};c.nextTick=Jt;async function Kt(t,e,n){let r=Date.now();for(let s=0;s<t;s++){n(s);let o=Date.now()-r;o>=0&&o<e||(await(0,c.nextTick)(),r+=o)}}function $e(t){if(typeof t!=\"string\")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function U(t){return typeof t==\"string\"&&(t=$e(t)),(0,ne.bytes)(t),t}function qt(...t){let e=0;for(let r=0;r<t.length;r++){let s=t[r];(0,ne.bytes)(s),e+=s.length}let n=new Uint8Array(e);for(let r=0,s=0;r<t.length;r++){let o=t[r];n.set(o,s),s+=o.length}return n}var te=class{clone(){return this._cloneInto()}};c.Hash=te;var Gt={}.toString;function Yt(t,e){if(e!==void 0&&Gt.call(e)!==\"[object Object]\")throw new Error(\"Options should be object or undefined\");return Object.assign(t,e)}function Xt(t){let e=r=>t().update(U(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Qt(t){let e=(r,s)=>t(s).update(U(r)).digest(),n=t({});return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}function Zt(t){let e=(r,s)=>t(s).update(U(r)).digest(),n=t({});return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}function en(t=32){if(E.crypto&&typeof E.crypto.getRandomValues==\"function\")return E.crypto.getRandomValues(new Uint8Array(t));if(E.crypto&&typeof E.crypto.randomBytes==\"function\")return E.crypto.randomBytes(t);throw new Error(\"crypto.getRandomValues must be defined\")}});var Ze=A(d=>{\"use strict\";Object.defineProperty(d,\"__esModule\",{value:!0});d.shake256=d.shake128=d.keccak_512=d.keccak_384=d.keccak_256=d.keccak_224=d.sha3_512=d.sha3_384=d.sha3_256=d.sha3_224=d.Keccak=void 0;d.keccakP=Xe;var P=Q(),C=Fe(),b=je(),qe=[],Ge=[],Ye=[],tn=BigInt(0),v=BigInt(1),nn=BigInt(2),rn=BigInt(7),sn=BigInt(256),on=BigInt(113);for(let t=0,e=v,n=1,r=0;t<24;t++){[n,r]=[r,(2*n+3*r)%5],qe.push(2*(5*r+n)),Ge.push((t+1)*(t+2)/2%64);let s=tn;for(let o=0;o<7;o++)e=(e<<v^(e>>rn)*on)%sn,e&nn&&(s^=v<<(v<<BigInt(o))-v);Ye.push(s)}var[an,cn]=(0,C.split)(Ye,!0),Je=(t,e,n)=>n>32?(0,C.rotlBH)(t,e,n):(0,C.rotlSH)(t,e,n),Ke=(t,e,n)=>n>32?(0,C.rotlBL)(t,e,n):(0,C.rotlSL)(t,e,n);function Xe(t,e=24){let n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let i=0;i<10;i++)n[i]=t[i]^t[i+10]^t[i+20]^t[i+30]^t[i+40];for(let i=0;i<10;i+=2){let l=(i+8)%10,f=(i+2)%10,h=n[f],u=n[f+1],p=Je(h,u,1)^n[l],m=Ke(h,u,1)^n[l+1];for(let I=0;I<50;I+=10)t[i+I]^=p,t[i+I+1]^=m}let s=t[2],o=t[3];for(let i=0;i<24;i++){let l=Ge[i],f=Je(s,o,l),h=Ke(s,o,l),u=qe[i];s=t[u],o=t[u+1],t[u]=f,t[u+1]=h}for(let i=0;i<50;i+=10){for(let l=0;l<10;l++)n[l]=t[i+l];for(let l=0;l<10;l++)t[i+l]^=~n[(l+2)%10]&n[(l+4)%10]}t[0]^=an[r],t[1]^=cn[r]}n.fill(0)}var _=class t extends b.Hash{constructor(e,n,r,s=!1,o=24){if(super(),this.blockLen=e,this.suffix=n,this.outputLen=r,this.enableXOF=s,this.rounds=o,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,P.number)(r),0>=this.blockLen||this.blockLen>=200)throw new Error(\"Sha3 supports only keccak-f1600 function\");this.state=new Uint8Array(200),this.state32=(0,b.u32)(this.state)}keccak(){b.isLE||(0,b.byteSwap32)(this.state32),Xe(this.state32,this.rounds),b.isLE||(0,b.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(e){(0,P.exists)(this);let{blockLen:n,state:r}=this;e=(0,b.toBytes)(e);let s=e.length;for(let o=0;o<s;){let i=Math.min(n-this.pos,s-o);for(let l=0;l<i;l++)r[this.pos++]^=e[o++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:n,pos:r,blockLen:s}=this;e[r]^=n,n&128&&r===s-1&&this.keccak(),e[s-1]^=128,this.keccak()}writeInto(e){(0,P.exists)(this,!1),(0,P.bytes)(e),this.finish();let n=this.state,{blockLen:r}=this;for(let s=0,o=e.length;s<o;){this.posOut>=r&&this.keccak();let i=Math.min(r-this.posOut,o-s);e.set(n.subarray(this.posOut,this.posOut+i),s),this.posOut+=i,s+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error(\"XOF is not possible for this instance\");return this.writeInto(e)}xof(e){return(0,P.number)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,P.output)(e,this),this.finished)throw new Error(\"digest() was already called\");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){let{blockLen:n,suffix:r,outputLen:s,rounds:o,enableXOF:i}=this;return e||(e=new t(n,r,s,i,o)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=o,e.suffix=r,e.outputLen=s,e.enableXOF=i,e.destroyed=this.destroyed,e}};d.Keccak=_;var T=(t,e,n)=>(0,b.wrapConstructor)(()=>new _(e,t,n));d.sha3_224=T(6,144,224/8);d.sha3_256=T(6,136,256/8);d.sha3_384=T(6,104,384/8);d.sha3_512=T(6,72,512/8);d.keccak_224=T(1,144,224/8);d.keccak_256=T(1,136,256/8);d.keccak_384=T(1,104,384/8);d.keccak_512=T(1,72,512/8);var Qe=(t,e,n)=>(0,b.wrapXOFConstructorWithOpts)((r={})=>new _(e,t,r.dkLen===void 0?n:r.dkLen,!0));d.shake128=Qe(31,168,128/8);d.shake256=Qe(31,136,256/8)});var at=A((Bn,w)=>{\"use strict\";var{sha3_512:ln}=Ze(),tt=24,N=32,re=(t=4,e=Math.random)=>{let n=\"\";for(;n.length<t;)n=n+Math.floor(e()*36).toString(36);return n};function nt(t){let e=BigInt(8),n=BigInt(0);for(let r of t.values()){let s=BigInt(r);n=(n<<e)+s}return n}var rt=(t=\"\")=>nt(ln(t)).toString(36).slice(1),et=Array.from({length:26},(t,e)=>String.fromCharCode(e+97)),un=t=>et[Math.floor(t()*et.length)],st=({globalObj:t=typeof global<\"u\"?global:typeof window<\"u\"?window:{},random:e=Math.random}={})=>{let n=Object.keys(t).toString(),r=n.length?n+re(N,e):re(N,e);return rt(r).substring(0,N)},ot=t=>()=>t++,dn=476782367,it=({random:t=Math.random,counter:e=ot(Math.floor(t()*dn)),length:n=tt,fingerprint:r=st({random:t})}={})=>function(){let o=un(t),i=Date.now().toString(36),l=e().toString(36),f=re(n,t),h=`${i+f+l+r}`;return`${o+rt(h).substring(1,n)}`},hn=it(),fn=(t,{minLength:e=2,maxLength:n=N}={})=>{let r=t.length,s=/^[a-z][0-9a-z]+$/;try{if(typeof t==\"string\"&&r>=e&&r<=n&&s.test(t))return!0}finally{}return!1};w.exports.getConstants=()=>({defaultLength:tt,bigLength:N});w.exports.init=it;w.exports.createId=hn;w.exports.bufToBigInt=nt;w.exports.createCounter=ot;w.exports.createFingerprint=st;w.exports.isCuid=fn});var z=A((Un,D)=>{\"use strict\";var{createId:pn,init:mn,getConstants:gn,isCuid:yn}=at();D.exports.createId=pn;D.exports.init=mn;D.exports.getConstants=gn;D.exports.isCuid=yn});var Tt=Y(z(),1);var Sn={arabic:\"ar\",armenian:\"am\",bulgarian:\"bg\",danish:\"dk\",dutch:\"nl\",english:\"en\",finnish:\"fi\",french:\"fr\",german:\"de\",greek:\"gr\",hungarian:\"hu\",indian:\"in\",indonesian:\"id\",irish:\"ie\",italian:\"it\",lithuanian:\"lt\",nepali:\"np\",norwegian:\"no\",portuguese:\"pt\",romanian:\"ro\",russian:\"ru\",serbian:\"rs\",slovenian:\"ru\",spanish:\"es\",swedish:\"se\",tamil:\"ta\",turkish:\"tr\",ukrainian:\"uk\",sanskrit:\"sk\"};var se=Object.keys(Sn);var Fn=Date.now().toString().slice(5);var ct=BigInt(1e3),lt=BigInt(1e6),ut=BigInt(1e9);function dt(t){return typeof t==\"number\"&&(t=BigInt(t)),t<ct?`${t}ns`:t<lt?`${t/ct}\\u03BCs`:t<ut?`${t/lt}ms`:`${t/ut}s`}var Wn=\"intersection\"in new Set;var Vn=\"union\"in new Set;var bn=se.join(`\n - `),qn={NO_LANGUAGE_WITH_CUSTOM_TOKENIZER:\"Do not pass the language option to create when using a custom tokenizer.\",LANGUAGE_NOT_SUPPORTED:`Language \"%s\" is not supported.\nSupported languages are:\n - ${bn}`,INVALID_STEMMER_FUNCTION_TYPE:\"config.stemmer property must be a function.\",MISSING_STEMMER:'As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the \"%s\" stemmer from the package @orama/stemmers. See https://docs.oramasearch.com/open-source/text-analysis/stemming for more information.',CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY:\"Custom stop words array must only contain strings.\",UNSUPPORTED_COMPONENT:'Unsupported component \"%s\".',COMPONENT_MUST_BE_FUNCTION:'The component \"%s\" must be a function.',COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS:'The component \"%s\" must be a function or an array of functions.',INVALID_SCHEMA_TYPE:'Unsupported schema type \"%s\" at \"%s\". Expected \"string\", \"boolean\" or \"number\" or array of them.',DOCUMENT_ID_MUST_BE_STRING:'Document id must be of type \"string\". Got \"%s\" instead.',DOCUMENT_ALREADY_EXISTS:'A document with id \"%s\" already exists.',DOCUMENT_DOES_NOT_EXIST:'A document with id \"%s\" does not exists.',MISSING_DOCUMENT_PROPERTY:'Missing searchable property \"%s\".',INVALID_DOCUMENT_PROPERTY:'Invalid document property \"%s\": expected \"%s\", got \"%s\"',UNKNOWN_INDEX:'Invalid property name \"%s\". Expected a wildcard string (\"*\") or array containing one of the following properties: %s',INVALID_BOOST_VALUE:\"Boost value must be a number greater than, or less than 0.\",INVALID_FILTER_OPERATION:\"You can only use one operation per filter, you requested %d.\",SCHEMA_VALIDATION_FAILURE:'Cannot insert document due schema validation failure on \"%s\" property.',INVALID_SORT_SCHEMA_TYPE:'Unsupported sort schema type \"%s\" at \"%s\". Expected \"string\" or \"number\".',CANNOT_SORT_BY_ARRAY:'Cannot configure sort for \"%s\" because it is an array (%s).',UNABLE_TO_SORT_ON_UNKNOWN_FIELD:'Unable to sort on unknown field \"%s\". Allowed fields: %s',SORT_DISABLED:\"Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.\",UNKNOWN_GROUP_BY_PROPERTY:'Unknown groupBy property \"%s\".',INVALID_GROUP_BY_PROPERTY:'Invalid groupBy property \"%s\". Allowed types: \"%s\", but given \"%s\".',UNKNOWN_FILTER_PROPERTY:'Unknown filter property \"%s\".',INVALID_VECTOR_SIZE:'Vector size must be a number greater than 0. Got \"%s\" instead.',INVALID_VECTOR_VALUE:'Vector value must be a number greater than 0. Got \"%s\" instead.',INVALID_INPUT_VECTOR:`Property \"%s\" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead.\nInput vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,WRONG_SEARCH_PROPERTY_TYPE:'Property \"%s\" is not searchable. Only \"string\" properties are searchable.',FACET_NOT_SUPPORTED:`Facet doens't support the type \"%s\".`,INVALID_DISTANCE_SUFFIX:'Invalid distance suffix \"%s\". Valid suffixes are: cm, m, km, mi, yd, ft.',INVALID_SEARCH_MODE:'Invalid search mode \"%s\". Valid modes are: \"fulltext\", \"vector\", \"hybrid\".',MISSING_VECTOR_AND_SECURE_PROXY:\"No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.\",MISSING_TERM:'\"term\" is a required parameter when performing hybrid search. Please provide a search term.',INVALID_VECTOR_INPUT:'Invalid \"vector\" property. Expected an object with \"value\" and \"property\" properties, but got \"%s\" instead.',PLUGIN_CRASHED:\"A plugin crashed during initialization. Please check the error message for more information:\",PLUGIN_SECURE_PROXY_NOT_FOUND:`Could not find '@orama/secure-proxy-plugin' installed in your Orama instance.\nPlease install it before proceeding with creating an answer session.\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy\n`,PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL:`Could not find a chat model defined in the secure proxy plugin configuration.\nPlease provide a chat model before proceeding with creating an answer session.\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy\n`,ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT:\"The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.\",PLUGIN_COMPONENT_CONFLICT:'The component \"%s\" is already defined. The plugin \"%s\" is trying to redefine it.'};function oe(t){return{raw:Number(t),formatted:dt(t)}}var On=\"[^aeiou]\",ft=\"[aeiouy]\",x=On+\"[^aeiouy]*\",L=ft+\"[aeiou]*\",Fr=\"^(\"+x+\")?\"+L+x,Wr=\"^(\"+x+\")?\"+L+x+\"(\"+L+\")?$\",Vr=\"^(\"+x+\")?\"+L+x+L+x,$r=\"^(\"+x+\")?\"+ft;var mt=\"2.1.4\";var gt={name:\"@oramacloud/client\",version:mt,description:\"Orama SDK client for Node.js, Deno, and Browsers\",type:\"module\",sideEffects:!1,main:\"./dist/index.js\",module:\"./dist/index.js\",types:\"./dist/index.d.ts\",runkitExampleFilename:\"./example/runkit.js\",exports:{types:\"./dist/index.d.ts\",browser:{import:\"./dist/index.js\",require:\"./dist/index.global.js\"},import:\"./dist/index.js\",require:\"./dist/index.cjs\",default:\"./dist/index.js\"},scripts:{watch:\"tsup --config tsup.lib.js --watch src\",build:\"tsup --config tsup.lib.js\",test:'glob -c \"node --import tsx --no-warnings --test\" \"./tests/**/*.test.ts\"',\"serve:example\":\"esbuild src/index.ts --bundle --outfile=example/out.js --format=esm --watch --servedir=example\"},keywords:[\"orama\",\"search engine\",\"sdk\"],files:[\"dist\",\"example/runkit.js\"],author:{name:\"Michele Riva\",email:\"michele.riva@oramasearch.com\",url:\"https://github.com/MicheleRiva\"},license:\"ISC\",dependencies:{\"@orama/cuid2\":\"^2.2.3\",\"@orama/orama\":\"^3.0.0\",lodash:\"^4.17.21\"},devDependencies:{\"@fastify/formbody\":\"^7.4.0\",\"@types/lodash\":\"^4.14.202\",\"@types/node\":\"^20.3.1\",dotenv:\"^16.3.1\",esbuild:\"0.18.5\",fastify:\"^4.19.2\",glob:\"^11.0.0\",husky:\"^8.0.3\",\"npm-run-all\":\"^4.1.5\",\"ts-standard\":\"^12.0.2\",tsup:\"^8.3.0\",tsx:\"^4.7.0\",typescript:\"^5.1.3\"},publishConfig:{access:\"public\"},\"ts-standard\":{ignore:[\"dist\",\"node_modules\"]}};var ce=Y(z(),1);var yt=\"https://answer.api.orama.com\",St=\"/v1/indexes\",ie=\"orama_user_id\";function bt(t){let[e,...n]=t.split(`\n`),r=n.join(`\n`).replace(\"data: \",\"\");return{event:e.replace(\"event: \",\"\"),data:r}}function ae(t){return typeof t==\"object\"?JSON.stringify(t):`${t}`}var H=class{messages;inferenceType;oramaClient;endpoint;abortController;events;userContext;conversationID;lastInteractionParams;state=[];systemPrompts;constructor(e){let n=e.oramaClient.answersApiBaseURL||yt;this.messages=e.initialMessages||[],this.inferenceType=e.inferenceType,this.oramaClient=e.oramaClient,this.endpoint=`${n}/v1/answer?api-key=${this.oramaClient.api_key}`,this.events=e.events,this.conversationID=(0,ce.createId)(),this.userContext=e.userContext}async askStream(e){return this.messages.push({role:\"user\",content:e.term??\"\"}),this.fetchAnswer(e)}async ask(e){let n=await this.askStream(e),r=\"\";for await(let s of n)r=s;return this.events?.onMessageChange&&this.events.onMessageChange(this.messages),r}getMessages(){return this.messages}clearSession(){this.messages=[],this.state=[],this.events?.onMessageChange&&this.events.onMessageChange(this.messages),this.events?.onStateChange&&this.events.onStateChange(this.state)}abortAnswer(){if(!this.abortController)throw new Error(\"AbortController is not ready\");this.abortController.abort(),this.abortController=void 0,this.state[this.state.length-1].aborted=!0}async regenerateLast({stream:e=!0}={}){if(this.state.length===0||this.messages.length===0)throw new Error(\"No messages to regenerate\");if(!(this.messages.at(-1)?.role===\"assistant\"))throw new Error(\"Last message is not an assistant message\");return this.messages.pop(),this.state.pop(),e?this.askStream(this.lastInteractionParams):this.ask(this.lastInteractionParams)}addNewEmptyAssistantMessage(){this.messages.push({role:\"assistant\",content:\"\"})}async*fetchAnswer(e){this.abortController=new AbortController,this.lastInteractionParams=e;let n=(0,ce.createId)(),r=null,s=this.state.length;this.state.push({interactionId:n,query:e.term??\"\",response:\"\",relatedQueries:null,sources:null,translatedQuery:null,segment:null,trigger:null,aborted:!1,loading:!0,error:!1,errorMessage:null});try{this.events?.onNewInteractionStarted&&this.events.onNewInteractionStarted(n),this.events?.onStateChange&&this.events.onStateChange(this.state);let o=new URLSearchParams;o.append(\"type\",this.inferenceType),o.append(\"messages\",JSON.stringify(this.messages)),o.append(\"query\",e.term??\"\"),o.append(\"conversationId\",this.conversationID),o.append(\"userId\",this.oramaClient.getUserId()),o.append(\"endpoint\",this.oramaClient.endpoint),o.append(\"searchParams\",JSON.stringify(e)),o.append(\"identity\",this.oramaClient.getIdentity()??\"\"),o.append(\"interactionId\",n),o.append(\"alias\",this.oramaClient.getAlias()??\"\");let i=this.getSystemPromptConfiguration();if(i&&o.append(\"systemPrompts\",JSON.stringify(i)),this.userContext&&o.append(\"userContext\",ae(this.userContext)),e.userData&&o.append(\"userData\",ae(e.userData)),e.related){if(e.related?.howMany&&e.related?.howMany>5)throw new Error(\"Can generate at most 5 related queries\");o.append(\"related\",JSON.stringify({enabled:!0,howMany:e.related.howMany??3,format:e.related.format??\"question\"}))}let l=await fetch(this.endpoint,{method:\"POST\",headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},body:o.toString(),signal:this.abortController.signal});if(!l.ok||!l.body)throw new Error(l.statusText);r=l.body.getReader();let f=new TextDecoder,h=[],u=\"\";this.events?.onMessageLoading&&this.events.onMessageLoading(!0),this.addNewEmptyAssistantMessage();let p=this.messages.at(-1);for(;;){let{value:m,done:I}=await r.read();if(I)break;u+=f.decode(m,{stream:!0});let q;for(;(q=u.indexOf(`\n\n`))!==-1;){let de=u.slice(0,q);u=u.slice(q+2);try{let G=bt(de),g=JSON.parse(G.data);if(g.type===\"sources\")this.state[s].sources=g.message,this.events?.onSourceChange&&this.events.onSourceChange(g.message),this.events?.onStateChange&&this.events.onStateChange(this.state);else if(g.type===\"query-translated\")this.state[s].translatedQuery=g.message,this.events?.onQueryTranslated&&this.events.onQueryTranslated(g.message),this.events?.onStateChange&&this.events.onStateChange(this.state);else if(g.type===\"conversation-metadata\"){let{segment:he,trigger:fe}=g.message;he&&(this.state[s].segment=he),fe&&(this.state[s].trigger=fe),this.events?.onStateChange&&this.events.onStateChange(this.state)}else if(g.type===\"related-queries\")this.state[s].relatedQueries=g.message,this.events?.onRelatedQueries&&this.events.onRelatedQueries(g.message),this.events?.onStateChange&&this.events.onStateChange(this.state);else if(g.type===\"text\")for(h.push(g.message);h.length>0;)p.content+=h.shift(),this.state[s].response=p.content,this.events?.onStateChange&&this.events.onStateChange(this.state),this.events?.onMessageChange&&this.events.onMessageChange(this.messages),yield p.content}catch(G){console.error(\"Error parsing SSE event:\",G),console.error(\"Raw message:\",de)}}}}catch(o){if(o.name===\"AbortError\")this.state[s].aborted=!0,this.events?.onAnswerAborted&&this.events.onAnswerAborted(!0);else throw this.state[s].error=!0,this.state[s].errorMessage=o.message??\"Unknown error\",o}finally{r?.releaseLock(),this.state[s].loading=!1,this.events?.onStateChange&&this.events.onStateChange(this.state),this.events?.onInteractionDone&&this.events.onInteractionDone(this.state[s]),this.events?.onMessageLoading&&this.events.onMessageLoading(!1)}}setSystemPromptConfiguration(e){if(Array.isArray(e.systemPrompts)){if(!e.systemPrompts.every(n=>typeof n==\"string\"))throw new Error(\"Invalid system prompt configuration\");this.systemPrompts=e.systemPrompts}return this}getSystemPromptConfiguration(){return this.systemPrompts}};var F=class{cache;config;constructor(e){this.cache=new Map,this.config=e}set(e,n){this.cache.set(e,n)}get(e){return this.cache.get(e)}has(e){return this.cache.has(e)}delete(e){return this.cache.delete(e)}clear(){this.cache.clear()}size(){return this.cache.size}};function O(t,e){if(typeof navigator<\"u\"){typeof navigator.sendBeacon<\"u\"&&navigator.sendBeacon(t,e);return}fetch(t,{method:\"POST\",body:e,headers:{\"Content-Type\":\"application/json\"}}).then(()=>{},n=>console.log(n))}var W=class t{data;params;config;profile;constructor(e,n){this.data=[],this.config=e,this.profile=n}setParams(e){this.params=e}static create(e,n){let r=new t(e,n);return r.start(),r}add(e){this.data.push({rawSearchString:e.rawSearchString,query:e.query,resultsCount:e.resultsCount,roundTripTime:e.roundTripTime,searchedAt:e.searchedAt,userId:this.profile.getUserId(),identity:this.profile.getIdentity(),alias:this.profile.getAlias(),referer:typeof location<\"u\"?location.toString():void 0}),this.params!=null&&this.data.length>=this.config.flushSize&&this.flush()}flush(){if(this.params==null||this.data.length===0)return;let e=this.data;this.data=[];let n={source:\"fe\",deploymentID:this.params.deploymentID,index:this.params.index,oramaId:this.config.id,oramaVersion:gt.version,userAgent:typeof navigator<\"u\"?navigator.userAgent:void 0,events:e};O(`${this.params.endpoint}?api-key=${this.config.api_key}`,JSON.stringify(n))?.catch(r=>console.log(r))}start(){let e=setInterval(this.flush.bind(this),this.config.flushInterval);e.unref!=null&&e.unref()}};var V=class{constructor(e){this.params=e}intervalId;start(){this.stop(),this.intervalId=setInterval(this.beat.bind(this),this.params.frequency)}stop(){this.intervalId!==void 0&&clearInterval(this.intervalId)}beat(){O(this.params.endpoint)?.catch(e=>console.log(e))}};var $=Y(z(),1);var j=class{endpoint;apiKey;userId;identity;userAlias;params;constructor({endpoint:e,apiKey:n}){if(!e||!n)throw new Error(\"Endpoint and API Key are required to create a Profile\");if(typeof e!=\"string\"||typeof n!=\"string\")throw new Error(\"Endpoint and API Key must be strings\");if(typeof localStorage<\"u\"){let r=localStorage.getItem(ie);r?this.userId=r:(this.userId=(0,$.createId)(),localStorage.setItem(ie,this.userId))}else this.userId=(0,$.createId)();this.endpoint=e,this.apiKey=n}setParams(e){let{protocol:n,host:r}=new URL(e.identifyUrl),s=`${n}//${r}/identify`;this.params={identifyUrl:s,index:e.index}}getIdentity(){return this.identity}getUserId(){return this.userId}getAlias(){return this.userAlias}async sendProfileData(e){if(!this.params)throw new Error(\"Orama Profile is not initialized\");let n=JSON.stringify({...e,visitorId:this.getUserId(),index:this.params.index});await O(`${this.params?.identifyUrl}?api-key=${this.apiKey}`,n)}async identify(e,n){if(typeof n!=\"string\")throw new Error(\"Identity must be a string\");await e,await this.sendProfileData({entity:\"identity\",id:n}),this.identity=n}async alias(e,n){if(typeof n!=\"string\")throw new Error(\"Identity must be a string\");await e,await this.sendProfileData({entity:\"alias\",id:n}),this.userAlias=n}reset(){this.userId=(0,$.createId)(),this.identity=void 0,this.userAlias=void 0}};function vn(t){return t!==void 0&&t?.signal!==void 0}var It=class{id=(0,Tt.createId)();api_key;endpoint;multiIndexSearch;mergeResults;multiIndexIndexes;answersApiBaseURL;collector;cache;profile;searchDebounceTimer;searchRequestCounter=0;blockSearchTillAuth=!1;heartbeat;initPromise;constructor(e){if(\"indexes\"in e){this.api_key=e.indexes[0].api_key,this.multiIndexIndexes=e.indexes;let n=new URL(e.indexes[0].endpoint).origin;if(e.indexes.some(r=>new URL(r.endpoint).origin!==n))throw new Error(\"All indexes must have the same endpoint origin\");this.endpoint=n+St,this.multiIndexSearch=!0,this.mergeResults=e.mergeResults??!0}else this.api_key=e.api_key,this.endpoint=e.endpoint,this.multiIndexSearch=!1,this.mergeResults=!0;if(this.answersApiBaseURL=e.answersApiBaseURL,this.profile=new j({endpoint:this.endpoint,apiKey:this.api_key}),e.telemetry!==!1){let n={id:this.id,api_key:this.api_key,flushInterval:e.telemetry?.flushInterval??5e3,flushSize:e.telemetry?.flushSize??25};this.collector=W.create(n,this.profile)}if(e.cache!==!1){let n={};this.cache=new F(n)}this.init()}customerUserToken=void 0;searchToken=void 0;setAuthToken(e){e===null?(this.customerUserToken=void 0,this.searchToken=void 0):(this.customerUserToken=e,this.searchToken=void 0),this.init()}onAuthTokenExpired;setOnAuthTokenExpired(e){this.onAuthTokenExpired=e}addSearchResultsToCollector(e,n,r,s){if(this.collector)if(Array.isArray(e))for(let o of e)this.collector.add({rawSearchString:r.term,resultsCount:o.hits?.length??0,roundTripTime:n,query:r,cached:s,searchedAt:new Date,userId:this.profile.getUserId()});else this.collector.add({rawSearchString:r.term,resultsCount:e?.hits?.length??0,roundTripTime:n,query:r,cached:s,searchedAt:new Date,userId:this.profile.getUserId()})}async search(e,n){if(await this.initPromise,this.blockSearchTillAuth)return console.warn(\"Search request blocked until user is authenticated\"),null;let r=++this.searchRequestCounter,s=`search-${JSON.stringify(e)}`,o=null,i,l=!1,f=n?.fresh!==!0&&this.cache?.has(s),h=async()=>{try{let u=Date.now();this.multiIndexSearch?o=await this.fetch(\"multi_search\",\"POST\",{q:{...e,mergeResults:this.mergeResults},sst:this.searchToken,indexes:this.multiIndexIndexes},n?.abortController):o=await this.fetch(\"search\",\"POST\",{q:e,sst:this.searchToken},n?.abortController);let p=Date.now();i=p-u;let m=await oe(BigInt(p*1e6-u*1e6));if(!Array.isArray(o))o.elapsed=m;else for(let I of o)I.elapsed=m;this.cache?.set(s,o)}catch(u){if(u.name!==\"AbortError\")throw console.error(\"Search request failed\",u),u}return this.addSearchResultsToCollector(o,i,e,l),o};if(f&&this.cache)i=0,o=this.cache.get(s),l=!0,this.addSearchResultsToCollector(o,i,e,l);else return n?.debounce?new Promise((u,p)=>{clearTimeout(this.searchDebounceTimer),this.searchDebounceTimer=setTimeout(async()=>{try{await h(),u(o)}catch(m){m.name!==\"AbortError\"&&(console.error(\"Search request failed\",m),p(m))}},n?.debounce||300),\"unref\"in this.searchDebounceTimer&&this.searchDebounceTimer.unref()}):h();return r===this.searchRequestCounter?o:null}async vectorSearch(e,n){await this.initPromise;let r=`vectorSearch-${JSON.stringify(e)}`,s,o,i=!1;if((n?.fresh!==!0&&this.cache?.has(r))===!0&&this.cache!=null)s=0,o=this.cache.get(r),i=!0;else{let f=Date.now();o=await this.fetch(\"vector-search2\",\"POST\",{q:e},n?.abortSignal??n?.abortController);let h=Date.now();o.elapsed=await oe(BigInt(h*1e6-f*1e6)),s=h-f,this.cache?.set(r,o)}return this.collector!=null&&this.collector.add({rawSearchString:e.term,resultsCount:o.hits?.length??0,roundTripTime:s,query:e,cached:i,searchedAt:new Date,userId:this.profile.getUserId()}),o}createAnswerSession(e){return new H({inferenceType:e?.inferenceType||\"documentation\",initialMessages:e?.initialMessages||[],oramaClient:this,events:e?.events,userContext:e?.userContext,systemPrompts:e?.systemPrompts??[]})}startHeartBeat(e){this.heartbeat?.stop(),this.heartbeat=new V({...e,endpoint:`${this.endpoint}/health?api-key=${this.api_key}`}),this.heartbeat.start()}stopHeartBeat(){this.heartbeat?.stop()}async getPop(){return(await this.initPromise)?.pop??\"\"}expirationTimer;init(){let e=[\"init\",\"GET\",void 0,void 0,{token:this.customerUserToken}];this.multiIndexSearch&&(e=[\"init_multi_search\",\"POST\",{indexes:this.multiIndexIndexes},void 0,{token:this.customerUserToken}]),this.initPromise=this.fetch(...e).then(n=>{if(this.collector?.setParams({endpoint:n.collectUrl,deploymentID:n.deploymentID,index:n.index}),this.profile?.setParams({identifyUrl:n.collectUrl,index:n.index}),n.searchSession){if(\"required\"in n.searchSession&&n.searchSession.required===!0)this.blockSearchTillAuth=!0;else if(\"token\"in n.searchSession){let r=n.searchSession.token;this.searchToken=r;let s=n.searchSession.maxAge;this.blockSearchTillAuth=!1,this.expirationTimer&&clearTimeout(this.expirationTimer),this.expirationTimer=setTimeout(()=>{this.searchToken===r&&(this.searchToken=void 0,this.blockSearchTillAuth=!0,this.onAuthTokenExpired?.(r))},s*1e3),\"unref\"in this.expirationTimer&&this.expirationTimer.unref()}}return n}).catch(n=>(console.log(n),null))}async fetch(e,n,r,s,o){let i=vn(s)?s?.signal:s;if(i?.aborted===!0)throw new Error(\"Request aborted\");let l={method:n,headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},signal:i};if(n===\"POST\"&&r!==void 0){let u=r;u.version=mt,u.id=this.id,u.visitorId=this.profile.getUserId(),l.body=Object.entries(u).filter(([p,m])=>!!m).map(([p,m])=>`${p}=${encodeURIComponent(JSON.stringify(m))}`).join(\"&\")}let f=new URL(`${this.endpoint}/${e}`);if(this.multiIndexSearch||f.searchParams.append(\"api-key\",this.api_key),o)for(let[u,p]of Object.entries(o))p&&f.searchParams.append(u,p);let h=await fetch(f,l);if(!h.ok){let u=new Error;throw u.httpResponse=h,u}return await h.json()}getIdentity(){return this.profile.getIdentity()}getUserId(){return this.profile.getUserId()}getAlias(){return this.profile.getAlias()}async identify(e){if(this.initPromise===void 0)throw new Error(\"OramaClient not initialized\");await this.profile.identify(this.initPromise,e)}async alias(e){if(this.initPromise===void 0)throw new Error(\"OramaClient not initialized\");await this.profile.alias(this.initPromise,e)}reset(){this.profile.reset()}};var ue=\"snapshot\",J=\"notify\",wt=\"deploy\",xt=\"has-data\",At=\"update-schema\";var Cn=\"https://api.askorama.ai\",Ot=`${Cn}/api/v1`;var K=class{manager;indexId=null;constructor(e){this.manager=e.manager,this.indexId=e.indexID,this.manager.setIndexID(e.indexID)}async empty(){return(await this.callIndexWebhook(ue,[])).success}async snapshot(e){return(await this.callIndexWebhook(ue,e)).success}async insert(e){return(await this.callIndexWebhook(J,{upsert:e})).success}async update(e){return(await this.callIndexWebhook(J,{upsert:e})).success}async delete(e){try{await this.callIndexWebhook(J,{remove:e})}catch(n){return console.error(n),!1}return!0}async updateSchema(e){try{await this.callIndexWebhook(At,e)}catch(n){return console.error(n),!1}return!0}async deploy(){try{let e=await this.callIndexWebhook(wt)}catch(e){return console.error(e),!1}return!0}async hasPendingOperations(){return(await this.callIndexWebhook(xt)).hasData}checkIndexID(){if(!this.indexId)throw new Error(\"Index ID is not set\")}callIndexWebhook(e,n){return this.checkIndexID(),this.manager.callIndexWebhook(e,n)}};var Et=class{indexId=null;apiKey;baseURL;constructor(e){this.apiKey=e.api_key,this.baseURL=e?.baseURL||Ot}index(e){return new K({manager:this,indexID:e})}setIndexID(e){this.indexId=e}async callIndexWebhook(e,n){let r={method:\"POST\",headers:{\"Content-Type\":\"application/json\",Authorization:`Bearer ${this.apiKey}`}};return n&&(r.body=JSON.stringify(n)),(await fetch(`${this.baseURL}/webhooks/${this.indexId}/${e}`,r)).json()}};export{H as AnswerSession,Et as CloudManager,It as OramaClient};\n/*! Bundled license information:\n\n@noble/hashes/utils.js:\n  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n//# sourceMappingURL=index.js.map","import type { TThemeOverrides } from '@/components'\nimport type { CloudIndexConfig, ColorScheme } from '@/types'\nimport type { AnyOrama } from '@orama/orama'\nimport { OramaClient } from '@oramacloud/client'\nimport type { CollectionManager } from '@orama/core'\n\n/**\n * Arrow keys navigation for focusable elements within a container\n *\n * @param ref HTMLElement - The element that contains the focusable elements\n * @param event KeyboardEvent - The event that triggered the navigation\n * @param selector string - The selector for the focusable elements (default: '[focus-on-arrow-nav]')\n * @returns void\n */\nexport function arrowKeysNavigation(ref: HTMLElement, event: KeyboardEvent, selector = '[focus-on-arrow-nav]') {\n  if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return\n\n  event.stopPropagation()\n  event.preventDefault()\n\n  const focusableElements = ref.querySelectorAll(selector)\n\n  let focusableArray = Array.from(focusableElements) as HTMLElement[]\n  focusableArray = focusableArray.filter((element) => element.tabIndex !== -1)\n\n  const firstFocusableElement = focusableArray[0]\n  const lastFocusableElement = focusableArray[focusableArray.length - 1]\n\n  const focusedElement = ref.querySelector(':focus') as HTMLElement\n  const focusedIndex = focusableArray.indexOf(focusedElement)\n\n  let nextFocusableElement: HTMLElement\n\n  if (event.key === 'ArrowDown') {\n    nextFocusableElement =\n      focusedIndex === focusableArray.length - 1 ? firstFocusableElement : focusableArray[focusedIndex + 1]\n    nextFocusableElement?.focus()\n  } else if (event.key === 'ArrowUp') {\n    nextFocusableElement = focusedIndex === 0 ? lastFocusableElement : focusableArray[focusedIndex - 1]\n    nextFocusableElement?.focus()\n  }\n}\n\nexport function format(first: string, middle: string, last: string): string {\n  return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '')\n}\n\nexport function copyToClipboard(text) {\n  // Check if the Clipboard API is supported\n  if (navigator.clipboard?.writeText) {\n    navigator.clipboard.writeText(text).catch((err) => {\n      console.error('Could not copy text: ', err)\n    })\n  } else {\n    // Fallback for browsers that do not support the Clipboard API\n    const textarea = document.createElement('textarea')\n    textarea.value = text\n    textarea.setAttribute('readonly', '')\n    textarea.style.position = 'absolute'\n    textarea.style.left = '-9999px'\n    document.body.appendChild(textarea)\n    textarea.select()\n    document.execCommand('copy')\n    document.body.removeChild(textarea)\n  }\n}\n\nexport function getNonExplicitAttributes(element: HTMLElement, explicitProps: string[]): { [key: string]: string } {\n  const allAttributes = Array.from(element.attributes)\n  return allAttributes.reduce((acc, attr) => {\n    if (!explicitProps.includes(attr.name)) {\n      acc[attr.name] = attr.value\n    }\n    return acc\n  }, {})\n}\n\nexport function validateCloudIndexConfig(\n  el: HTMLElement,\n  indexOrIndexes?: CloudIndexConfig | CloudIndexConfig[],\n  instance?: OramaClient | AnyOrama | CollectionManager,\n  oramaCoreInstance?: CollectionManager,\n): void {\n  const componentDetails = `\n    Component: ${el.tagName.toLowerCase()}\n    Id: ${el.id}\n  `\n\n  if (!indexOrIndexes && !instance && !oramaCoreInstance) {\n    throw new Error(\n      `Invalid component configuration. Please provide a valid index or instance prop. ${componentDetails}`,\n    )\n  }\n\n  if (indexOrIndexes) {\n    if (instance || oramaCoreInstance) {\n      throw new Error(\n        `Invalid component configuration. Only one of indexOrIndexes, instance, or oramaCoreInstance can be provided. ${componentDetails}`,\n      )\n    }\n\n    const indexes = Array.isArray(indexOrIndexes) ? indexOrIndexes : [indexOrIndexes]\n    if (indexes.some((index) => !index?.api_key || !index?.endpoint)) {\n      throw new Error(\n        `Invalid cloud index configuration. Please provide a valid api_key and endpoint ${componentDetails}`,\n      )\n    }\n\n    return\n  }\n\n  if (instance) {\n    if (indexOrIndexes || oramaCoreInstance) {\n      throw new Error(\n        `Invalid component configuration. Only one of indexOrIndexes, instance, or oramaCoreInstance can be provided. ${componentDetails}`,\n      )\n    }\n\n    return\n  }\n\n  // If no instance is provided, we've already validated the index\n  if (oramaCoreInstance) {\n    if (indexOrIndexes || instance) {\n      throw new Error(\n        `Invalid component configuration. Only one of indexOrIndexes, instance, or oramaCoreInstance can be provided. ${componentDetails}`,\n      )\n    }\n\n    return\n  }\n\n  // If we get here, the instance is invalid\n  throw new Error(\n    `Invalid instance. Expected either an OramaClient, Orama OSS database, or CollectionManager-like object. ${componentDetails}`,\n  )\n}\n\nexport function initOramaClient(indexOrIndexes: CloudIndexConfig | CloudIndexConfig[]): OramaClient | null {\n  if (Array.isArray(indexOrIndexes)) {\n    const indexes = indexOrIndexes as CloudIndexConfig[]\n    return new OramaClient({\n      mergeResults: true,\n      indexes: indexes,\n    })\n  }\n\n  const index = indexOrIndexes as CloudIndexConfig\n  return new OramaClient({\n    api_key: index.api_key,\n    endpoint: index.endpoint,\n  })\n}\n\nexport function generateRandomID(componentName: string): string {\n  const prefix = `orama-ui-${componentName}`\n  return `${prefix}-${Math.random().toString(36).substring(2, 15)}`\n}\n\nexport function updateThemeClasses(\n  element: HTMLElement,\n  colorScheme: ColorScheme,\n  systemScheme: Omit<ColorScheme, 'system'>,\n) {\n  const scheme = colorScheme === 'system' ? systemScheme : colorScheme\n\n  if (element && scheme) {\n    element.classList.remove('theme-light', 'theme-dark')\n    element.classList.add(`theme-${scheme}`)\n  }\n\n  return scheme\n}\n\nexport function updateCssVariables(element: HTMLElement, scheme: ColorScheme, themeConfig?: Partial<TThemeOverrides>) {\n  if (!element || !themeConfig || !scheme) return\n\n  for (const base of Object.keys(themeConfig)) {\n    if (base === 'colors') {\n      if (themeConfig[base]?.[scheme]) {\n        for (const key of Object.keys(themeConfig[base][scheme])) {\n          element.style.setProperty(`${key}`, themeConfig[base][scheme][key])\n        }\n      }\n    } else {\n      for (const key of Object.keys(themeConfig[base])) {\n        element.style.setProperty(`${key}`, themeConfig[base][key])\n      }\n    }\n  }\n}\n","// TODO: We need to revisit this styles. There are some duplications and variables without fallback\n.button {\n  position: relative;\n  display: flex;\n  gap: var(--spacing-s, $spacing-s);\n  align-items: center;\n  border-radius: var(--radius-m, $radius-m);\n  border: 0;\n  cursor: pointer;\n  font-family: var(--font-primary, font('primary'));\n  transition: all 0.2s;\n  transition-property: color, background-color, opacity;\n  width: 100%;\n  text-align: left;\n\n  &__tooltip {\n    display: block;\n    opacity: 0;\n    position: absolute;\n    background-color: var(--text-color-primary, text-color('primary'));\n    color: var(--background-color-primary, background-color('primary'));\n    padding: var(--spacing-s, $spacing-s);\n    border-radius: var(--radius-s, $radius-s);\n    font-size: 10px;\n    z-index: 1;\n    top: -28px;\n    animation: fadeInOut 1s ease-in-out 1;\n  }\n}\n\n.button--small {\n  padding: var(--spacing-xs, $spacing-xs);\n}\n\n.button--medium {\n  padding: var(--spacing-s, $spacing-s);\n}\n\n.button--large {\n  padding: var(--spacing-m, $spacing-m);\n}\n\n.button__label {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing-xs, $spacing-xs);\n  flex-grow: 1;\n}\n\n.button--primary {\n  background-color: var(--button-background-color-primary, button-background-color('primary'));\n  color: var(--button-text-color-primary, button-text-color('primary'));\n\n  &:disabled {\n    background-color: var(--background-color-tertiary, background-color('tertiary'));\n    color: var(--text-color-tertiary);\n  }\n}\n\n.button--secondary {\n  background-color: var(--button-background-color-secondary, button-background-color('secondary'));\n  color: var(--button-text-color-secondary, button-text-color('secondary'));\n  border: 1px solid var(--button-border-color-secondary, map-get($palette, 'button-border', 'secondary'));\n  transition: all 0.3s;\n\n  @media (hover: hover) {\n    &:hover {\n      background-color: var(--button-background-color-secondary-hover, button-background-color('secondary-hover'));\n    }\n  }\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid #9671b0;\n  }\n\n  &:disabled {\n    background-color: var(--background-color-tertiary, background-color('tertiary'));\n    color: var(--text-color-tertiary);\n  }\n}\n\n.button--icon {\n  background-color: transparent;\n  color: var(--icon-color-tertiary, text-color('tertiary'));\n  padding: var(--spacing-s, $spacing-s);\n  width: fit-content;\n  height: fit-content;\n  justify-content: center;\n  align-items: center;\n  font-family: var(--font-primary, font('primary'));\n  border-radius: 50%;\n\n  &:disabled {\n    opacity: 0.6;\n    background-color: var(--background-color-tertiary, background-color('tertiary'));\n  }\n\n  &:hover {\n    background-color: var(--background-color-tertiary, background-color('tertiary'));\n  }\n}\n\n// slot elements should be aligned center\n::slotted(*) {\n  display: inline-flex;\n  align-items: center;\n}\n\n::slotted([slot='adorment-end']),\n::slotted([slot='adorment-start']) {\n  flex-grow: 0;\n}\n\n@keyframes fadeInOut {\n  0% {\n    opacity: 0;\n  }\n  50% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n","import { Component, Prop, h, Element } from '@stencil/core'\nimport { getNonExplicitAttributes } from '@/utils/utils'\n\ntype BaseProps = {\n  /** the optional class name */\n  class?: string\n  /** the style variant of the button - default is primary */\n  variant?: 'primary' | 'secondary' | 'icon'\n}\n\ntype ConditionalProps =\n  | {\n      /** it defines the HTML tag to be used */\n      as?: 'button'\n      type: 'button' | 'submit' | 'reset'\n    }\n  | {\n      /** it defines the HTML tag to be used */\n      as?: 'a'\n      href: string\n      type?: never\n    }\n\nexport type ButtonProps = BaseProps & ConditionalProps\n\n@Component({\n  tag: 'orama-button',\n  styleUrl: 'orama-button.scss',\n  scoped: true,\n})\n\n/**\n * The orama-button component is used to render a button or anchor element looking like a button.\n */\nexport class OramaButton {\n  @Element() el: HTMLButtonElement | HTMLAnchorElement\n\n  @Prop() as?: ButtonProps['as'] = 'button'\n  @Prop() class?: string\n  @Prop() variant?: ButtonProps['variant'] = 'primary'\n  @Prop() size: 'small' | 'medium' | 'large' = 'medium'\n  @Prop() type?: ButtonProps['type']\n  @Prop() disabled?: boolean\n  @Prop() withTooltip?: string\n\n  render() {\n    const Tag = this.as\n    const declaredProps = ['as', 'class', 'variant']\n    const buttonProps = getNonExplicitAttributes(this.el, declaredProps)\n\n    const buttonClass = `button button--${this.variant} button--${this.size} ${this.class || ''}`\n\n    return (\n      <Tag class={buttonClass} {...buttonProps} disabled={this.disabled}>\n        <span class=\"button__label\">\n          <slot name=\"adorment-start\" />\n          {this.withTooltip && <span class=\"button__tooltip\">{this.withTooltip}</span>}\n          <slot />\n        </span>\n        <slot name=\"adorment-end\" />\n      </Tag>\n    )\n  }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst r = globalThis, c = r.ShadowRoot && (r.ShadyCSS === void 0 || r.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype, a = Symbol(), i = /* @__PURE__ */ new WeakMap();\nclass l {\n  constructor(s, t, o) {\n    if (this._$cssResult$ = !0, o !== a) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = s, this.t = t;\n  }\n  get styleSheet() {\n    let s = this.o;\n    const t = this.t;\n    if (c && s === void 0) {\n      const o = t !== void 0 && t.length === 1;\n      o && (s = i.get(t)), s === void 0 && ((this.o = s = new CSSStyleSheet()).replaceSync(this.cssText), o && i.set(t, s));\n    }\n    return s;\n  }\n  toString() {\n    return this.cssText;\n  }\n}\nconst h = (e) => new l(typeof e == \"string\" ? e : e + \"\", void 0, a), p = (e, ...s) => {\n  const t = e.length === 1 ? e[0] : s.reduce((o, S, u) => o + ((n) => {\n    if (n._$cssResult$ === !0) return n.cssText;\n    if (typeof n == \"number\") return n;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + n + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(S) + e[u + 1], e[0]);\n  return new l(t, e, a);\n}, d = (e, s) => {\n  if (c) e.adoptedStyleSheets = s.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);\n  else for (const t of s) {\n    const o = document.createElement(\"style\"), S = r.litNonce;\n    S !== void 0 && o.setAttribute(\"nonce\", S), o.textContent = t.cssText, e.appendChild(o);\n  }\n}, y = c ? (e) => e : (e) => e instanceof CSSStyleSheet ? ((s) => {\n  let t = \"\";\n  for (const o of s.cssRules) t += o.cssText;\n  return h(t);\n})(e) : e;\nexport {\n  l as CSSResult,\n  d as adoptStyles,\n  p as css,\n  y as getCompatibleStyle,\n  c as supportsAdoptingStyleSheets,\n  h as unsafeCSS\n};\n","import { getCompatibleStyle as u, adoptStyles as P } from \"./css-tag.mjs\";\nimport { CSSResult as M, css as k, supportsAdoptingStyleSheets as L, unsafeCSS as j } from \"./css-tag.mjs\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst { is: b, defineProperty: v, getOwnPropertyDescriptor: S, getOwnPropertyNames: U, getOwnPropertySymbols: w, getPrototypeOf: A } = Object, a = globalThis, f = a.trustedTypes, O = f ? f.emptyScript : \"\", p = a.reactiveElementPolyfillSupport, l = (o, t) => o, d = { toAttribute(o, t) {\n  switch (t) {\n    case Boolean:\n      o = o ? O : null;\n      break;\n    case Object:\n    case Array:\n      o = o == null ? o : JSON.stringify(o);\n  }\n  return o;\n}, fromAttribute(o, t) {\n  let e = o;\n  switch (t) {\n    case Boolean:\n      e = o !== null;\n      break;\n    case Number:\n      e = o === null ? null : Number(o);\n      break;\n    case Object:\n    case Array:\n      try {\n        e = JSON.parse(o);\n      } catch (s) {\n        e = null;\n      }\n  }\n  return e;\n} }, y = (o, t) => !b(o, t), E = { attribute: !0, type: String, converter: d, reflect: !1, hasChanged: y };\nvar _, $;\n(_ = Symbol.metadata) != null || (Symbol.metadata = Symbol(\"metadata\")), ($ = a.litPropertyMetadata) != null || (a.litPropertyMetadata = /* @__PURE__ */ new WeakMap());\nclass c extends HTMLElement {\n  static addInitializer(t) {\n    var e;\n    this._$Ei(), ((e = this.l) != null ? e : this.l = []).push(t);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t, e = E) {\n    if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {\n      const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);\n      i !== void 0 && v(this.prototype, t, i);\n    }\n  }\n  static getPropertyDescriptor(t, e, s) {\n    var r;\n    const { get: i, set: n } = (r = S(this.prototype, t)) != null ? r : { get() {\n      return this[e];\n    }, set(h) {\n      this[e] = h;\n    } };\n    return { get() {\n      return i == null ? void 0 : i.call(this);\n    }, set(h) {\n      const g = i == null ? void 0 : i.call(this);\n      n.call(this, h), this.requestUpdate(t, g, s);\n    }, configurable: !0, enumerable: !0 };\n  }\n  static getPropertyOptions(t) {\n    var e;\n    return (e = this.elementProperties.get(t)) != null ? e : E;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(l(\"elementProperties\"))) return;\n    const t = A(this);\n    t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(l(\"finalized\"))) return;\n    if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(l(\"properties\"))) {\n      const e = this.properties, s = [...U(e), ...w(e)];\n      for (const i of s) this.createProperty(i, e[i]);\n    }\n    const t = this[Symbol.metadata];\n    if (t !== null) {\n      const e = litPropertyMetadata.get(t);\n      if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [e, s] of this.elementProperties) {\n      const i = this._$Eu(e, s);\n      i !== void 0 && this._$Eh.set(i, e);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(t) {\n    const e = [];\n    if (Array.isArray(t)) {\n      const s = new Set(t.flat(1 / 0).reverse());\n      for (const i of s) e.unshift(u(i));\n    } else t !== void 0 && e.push(u(t));\n    return e;\n  }\n  static _$Eu(t, e) {\n    const s = e.attribute;\n    return s === !1 ? void 0 : typeof s == \"string\" ? s : typeof t == \"string\" ? t.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    var t;\n    this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));\n  }\n  addController(t) {\n    var e, s;\n    ((e = this._$EO) != null ? e : this._$EO = /* @__PURE__ */ new Set()).add(t), this.renderRoot !== void 0 && this.isConnected && ((s = t.hostConnected) == null || s.call(t));\n  }\n  removeController(t) {\n    var e;\n    (e = this._$EO) == null || e.delete(t);\n  }\n  _$E_() {\n    const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;\n    for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);\n    t.size > 0 && (this._$Ep = t);\n  }\n  createRenderRoot() {\n    var e;\n    const t = (e = this.shadowRoot) != null ? e : this.attachShadow(this.constructor.shadowRootOptions);\n    return P(t, this.constructor.elementStyles), t;\n  }\n  connectedCallback() {\n    var t, e;\n    (t = this.renderRoot) != null || (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (e = this._$EO) == null || e.forEach((s) => {\n      var i;\n      return (i = s.hostConnected) == null ? void 0 : i.call(s);\n    });\n  }\n  enableUpdating(t) {\n  }\n  disconnectedCallback() {\n    var t;\n    (t = this._$EO) == null || t.forEach((e) => {\n      var s;\n      return (s = e.hostDisconnected) == null ? void 0 : s.call(e);\n    });\n  }\n  attributeChangedCallback(t, e, s) {\n    this._$AK(t, s);\n  }\n  _$EC(t, e) {\n    var n;\n    const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);\n    if (i !== void 0 && s.reflect === !0) {\n      const r = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : d).toAttribute(e, s.type);\n      this._$Em = t, r == null ? this.removeAttribute(i) : this.setAttribute(i, r), this._$Em = null;\n    }\n  }\n  _$AK(t, e) {\n    var n;\n    const s = this.constructor, i = s._$Eh.get(t);\n    if (i !== void 0 && this._$Em !== i) {\n      const r = s.getPropertyOptions(i), h = typeof r.converter == \"function\" ? { fromAttribute: r.converter } : ((n = r.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? r.converter : d;\n      this._$Em = i, this[i] = h.fromAttribute(e, r.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t, e, s) {\n    var i;\n    if (t !== void 0) {\n      if (s != null || (s = this.constructor.getPropertyOptions(t)), !((i = s.hasChanged) != null ? i : y)(this[t], e)) return;\n      this.P(t, e, s);\n    }\n    this.isUpdatePending === !1 && (this._$ES = this._$ET());\n  }\n  P(t, e, s) {\n    var i;\n    this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && ((i = this._$Ej) != null ? i : this._$Ej = /* @__PURE__ */ new Set()).add(t);\n  }\n  async _$ET() {\n    this.isUpdatePending = !0;\n    try {\n      await this._$ES;\n    } catch (e) {\n      Promise.reject(e);\n    }\n    const t = this.scheduleUpdate();\n    return t != null && await t, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    var s, i;\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if ((s = this.renderRoot) != null || (this.renderRoot = this.createRenderRoot()), this._$Ep) {\n        for (const [r, h] of this._$Ep) this[r] = h;\n        this._$Ep = void 0;\n      }\n      const n = this.constructor.elementProperties;\n      if (n.size > 0) for (const [r, h] of n) h.wrapped !== !0 || this._$AL.has(r) || this[r] === void 0 || this.P(r, this[r], h);\n    }\n    let t = !1;\n    const e = this._$AL;\n    try {\n      t = this.shouldUpdate(e), t ? (this.willUpdate(e), (i = this._$EO) == null || i.forEach((n) => {\n        var r;\n        return (r = n.hostUpdate) == null ? void 0 : r.call(n);\n      }), this.update(e)) : this._$EU();\n    } catch (n) {\n      throw t = !1, this._$EU(), n;\n    }\n    t && this._$AE(e);\n  }\n  willUpdate(t) {\n  }\n  _$AE(t) {\n    var e;\n    (e = this._$EO) == null || e.forEach((s) => {\n      var i;\n      return (i = s.hostUpdated) == null ? void 0 : i.call(s);\n    }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t) {\n    return !0;\n  }\n  update(t) {\n    this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EC(e, this[e]))), this._$EU();\n  }\n  updated(t) {\n  }\n  firstUpdated(t) {\n  }\n}\nvar m;\nc.elementStyles = [], c.shadowRootOptions = { mode: \"open\" }, c[l(\"elementProperties\")] = /* @__PURE__ */ new Map(), c[l(\"finalized\")] = /* @__PURE__ */ new Map(), p == null || p({ ReactiveElement: c }), ((m = a.reactiveElementVersions) != null ? m : a.reactiveElementVersions = []).push(\"2.0.4\");\nexport {\n  M as CSSResult,\n  c as ReactiveElement,\n  P as adoptStyles,\n  k as css,\n  d as defaultConverter,\n  u as getCompatibleStyle,\n  y as notEqual,\n  L as supportsAdoptingStyleSheets,\n  j as unsafeCSS\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst y = globalThis, S = y.trustedTypes, I = S ? S.createPolicy(\"lit-html\", { createHTML: (h) => h }) : void 0, W = \"$lit$\", p = `lit$${Math.random().toFixed(9).slice(2)}$`, k = \"?\" + p, F = `<${k}>`, v = document, x = () => v.createComment(\"\"), H = (h) => h === null || typeof h != \"object\" && typeof h != \"function\", D = Array.isArray, Z = (h) => D(h) || typeof (h == null ? void 0 : h[Symbol.iterator]) == \"function\", w = `[ \t\n\\f\\r]`, m = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g, B = /-->/g, P = />/g, u = RegExp(`>|${w}(?:([^\\\\s\"'>=/]+)(${w}*=${w}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\"), R = /'/g, U = /\"/g, V = /^(?:script|style|textarea|title)$/i, O = (h) => (t, ...e) => ({ _$litType$: h, strings: t, values: e }), Y = O(1), tt = O(2), N = Symbol.for(\"lit-noChange\"), _ = Symbol.for(\"lit-nothing\"), j = /* @__PURE__ */ new WeakMap(), g = v.createTreeWalker(v, 129);\nfunction z(h, t) {\n  if (!Array.isArray(h) || !h.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return I !== void 0 ? I.createHTML(t) : t;\n}\nconst q = (h, t) => {\n  const e = h.length - 1, s = [];\n  let i, o = t === 2 ? \"<svg>\" : \"\", n = m;\n  for (let A = 0; A < e; A++) {\n    const r = h[A];\n    let a, $, l = -1, c = 0;\n    for (; c < r.length && (n.lastIndex = c, $ = n.exec(r), $ !== null); ) c = n.lastIndex, n === m ? $[1] === \"!--\" ? n = B : $[1] !== void 0 ? n = P : $[2] !== void 0 ? (V.test($[2]) && (i = RegExp(\"</\" + $[2], \"g\")), n = u) : $[3] !== void 0 && (n = u) : n === u ? $[0] === \">\" ? (n = i != null ? i : m, l = -1) : $[1] === void 0 ? l = -2 : (l = n.lastIndex - $[2].length, a = $[1], n = $[3] === void 0 ? u : $[3] === '\"' ? U : R) : n === U || n === R ? n = u : n === B || n === P ? n = m : (n = u, i = void 0);\n    const d = n === u && h[A + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o += n === m ? r + F : l >= 0 ? (s.push(a), r.slice(0, l) + W + r.slice(l) + p + d) : r + p + (l === -2 ? A : d);\n  }\n  return [z(h, o + (h[e] || \"<?>\") + (t === 2 ? \"</svg>\" : \"\")), s];\n};\nclass T {\n  constructor({ strings: t, _$litType$: e }, s) {\n    let i;\n    this.parts = [];\n    let o = 0, n = 0;\n    const A = t.length - 1, r = this.parts, [a, $] = q(t, e);\n    if (this.el = T.createElement(a, s), g.currentNode = this.el.content, e === 2) {\n      const l = this.el.content.firstChild;\n      l.replaceWith(...l.childNodes);\n    }\n    for (; (i = g.nextNode()) !== null && r.length < A; ) {\n      if (i.nodeType === 1) {\n        if (i.hasAttributes()) for (const l of i.getAttributeNames()) if (l.endsWith(W)) {\n          const c = $[n++], d = i.getAttribute(l).split(p), C = /([.?@])?(.*)/.exec(c);\n          r.push({ type: 1, index: o, name: C[2], strings: d, ctor: C[1] === \".\" ? J : C[1] === \"?\" ? K : C[1] === \"@\" ? Q : M }), i.removeAttribute(l);\n        } else l.startsWith(p) && (r.push({ type: 6, index: o }), i.removeAttribute(l));\n        if (V.test(i.tagName)) {\n          const l = i.textContent.split(p), c = l.length - 1;\n          if (c > 0) {\n            i.textContent = S ? S.emptyScript : \"\";\n            for (let d = 0; d < c; d++) i.append(l[d], x()), g.nextNode(), r.push({ type: 2, index: ++o });\n            i.append(l[c], x());\n          }\n        }\n      } else if (i.nodeType === 8) if (i.data === k) r.push({ type: 2, index: o });\n      else {\n        let l = -1;\n        for (; (l = i.data.indexOf(p, l + 1)) !== -1; ) r.push({ type: 7, index: o }), l += p.length - 1;\n      }\n      o++;\n    }\n  }\n  static createElement(t, e) {\n    const s = v.createElement(\"template\");\n    return s.innerHTML = t, s;\n  }\n}\nfunction f(h, t, e = h, s) {\n  var n, A, r;\n  if (t === N) return t;\n  let i = s !== void 0 ? (n = e._$Co) == null ? void 0 : n[s] : e._$Cl;\n  const o = H(t) ? void 0 : t._$litDirective$;\n  return (i == null ? void 0 : i.constructor) !== o && ((A = i == null ? void 0 : i._$AO) == null || A.call(i, !1), o === void 0 ? i = void 0 : (i = new o(h), i._$AT(h, e, s)), s !== void 0 ? ((r = e._$Co) != null ? r : e._$Co = [])[s] = i : e._$Cl = i), i !== void 0 && (t = f(h, i._$AS(h, t.values), i, s)), t;\n}\nclass G {\n  constructor(t, e) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t) {\n    var a;\n    const { el: { content: e }, parts: s } = this._$AD, i = ((a = t == null ? void 0 : t.creationScope) != null ? a : v).importNode(e, !0);\n    g.currentNode = i;\n    let o = g.nextNode(), n = 0, A = 0, r = s[0];\n    for (; r !== void 0; ) {\n      if (n === r.index) {\n        let $;\n        r.type === 2 ? $ = new b(o, o.nextSibling, this, t) : r.type === 1 ? $ = new r.ctor(o, r.name, r.strings, this, t) : r.type === 6 && ($ = new X(o, this, t)), this._$AV.push($), r = s[++A];\n      }\n      n !== (r == null ? void 0 : r.index) && (o = g.nextNode(), n++);\n    }\n    return g.currentNode = v, i;\n  }\n  p(t) {\n    let e = 0;\n    for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;\n  }\n}\nclass b {\n  get _$AU() {\n    var t, e;\n    return (e = (t = this._$AM) == null ? void 0 : t._$AU) != null ? e : this._$Cv;\n  }\n  constructor(t, e, s, i) {\n    var o;\n    this.type = 2, this._$AH = _, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (o = i == null ? void 0 : i.isConnected) != null ? o : !0;\n  }\n  get parentNode() {\n    let t = this._$AA.parentNode;\n    const e = this._$AM;\n    return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t, e = this) {\n    t = f(this, t, e), H(t) ? t === _ || t == null || t === \"\" ? (this._$AH !== _ && this._$AR(), this._$AH = _) : t !== this._$AH && t !== N && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : Z(t) ? this.k(t) : this._(t);\n  }\n  S(t) {\n    return this._$AA.parentNode.insertBefore(t, this._$AB);\n  }\n  T(t) {\n    this._$AH !== t && (this._$AR(), this._$AH = this.S(t));\n  }\n  _(t) {\n    this._$AH !== _ && H(this._$AH) ? this._$AA.nextSibling.data = t : this.T(v.createTextNode(t)), this._$AH = t;\n  }\n  $(t) {\n    var o;\n    const { values: e, _$litType$: s } = t, i = typeof s == \"number\" ? this._$AC(t) : (s.el === void 0 && (s.el = T.createElement(z(s.h, s.h[0]), this.options)), s);\n    if (((o = this._$AH) == null ? void 0 : o._$AD) === i) this._$AH.p(e);\n    else {\n      const n = new G(i, this), A = n.u(this.options);\n      n.p(e), this.T(A), this._$AH = n;\n    }\n  }\n  _$AC(t) {\n    let e = j.get(t.strings);\n    return e === void 0 && j.set(t.strings, e = new T(t)), e;\n  }\n  k(t) {\n    D(this._$AH) || (this._$AH = [], this._$AR());\n    const e = this._$AH;\n    let s, i = 0;\n    for (const o of t) i === e.length ? e.push(s = new b(this.S(x()), this.S(x()), this, this.options)) : s = e[i], s._$AI(o), i++;\n    i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);\n  }\n  _$AR(t = this._$AA.nextSibling, e) {\n    var s;\n    for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {\n      const i = t.nextSibling;\n      t.remove(), t = i;\n    }\n  }\n  setConnected(t) {\n    var e;\n    this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));\n  }\n}\nclass M {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t, e, s, i, o) {\n    this.type = 1, this._$AH = _, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = o, s.length > 2 || s[0] !== \"\" || s[1] !== \"\" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = _;\n  }\n  _$AI(t, e = this, s, i) {\n    const o = this.strings;\n    let n = !1;\n    if (o === void 0) t = f(this, t, e, 0), n = !H(t) || t !== this._$AH && t !== N, n && (this._$AH = t);\n    else {\n      const A = t;\n      let r, a;\n      for (t = o[0], r = 0; r < o.length - 1; r++) a = f(this, A[s + r], e, r), a === N && (a = this._$AH[r]), n || (n = !H(a) || a !== this._$AH[r]), a === _ ? t = _ : t !== _ && (t += (a != null ? a : \"\") + o[r + 1]), this._$AH[r] = a;\n    }\n    n && !i && this.j(t);\n  }\n  j(t) {\n    t === _ ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t != null ? t : \"\");\n  }\n}\nclass J extends M {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t) {\n    this.element[this.name] = t === _ ? void 0 : t;\n  }\n}\nclass K extends M {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t) {\n    this.element.toggleAttribute(this.name, !!t && t !== _);\n  }\n}\nclass Q extends M {\n  constructor(t, e, s, i, o) {\n    super(t, e, s, i, o), this.type = 5;\n  }\n  _$AI(t, e = this) {\n    var n;\n    if ((t = (n = f(this, t, e, 0)) != null ? n : _) === N) return;\n    const s = this._$AH, i = t === _ && s !== _ || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, o = t !== _ && (s === _ || i);\n    i && this.element.removeEventListener(this.name, this, s), o && this.element.addEventListener(this.name, this, t), this._$AH = t;\n  }\n  handleEvent(t) {\n    var e, s;\n    typeof this._$AH == \"function\" ? this._$AH.call((s = (e = this.options) == null ? void 0 : e.host) != null ? s : this.element, t) : this._$AH.handleEvent(t);\n  }\n}\nclass X {\n  constructor(t, e, s) {\n    this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t) {\n    f(this, t);\n  }\n}\nconst E = y.litHtmlPolyfillSupport;\nvar L;\nE == null || E(T, b), ((L = y.litHtmlVersions) != null ? L : y.litHtmlVersions = []).push(\"3.1.4\");\nconst et = (h, t, e) => {\n  var o, n;\n  const s = (o = e == null ? void 0 : e.renderBefore) != null ? o : t;\n  let i = s._$litPart$;\n  if (i === void 0) {\n    const A = (n = e == null ? void 0 : e.renderBefore) != null ? n : null;\n    s._$litPart$ = i = new b(t.insertBefore(x(), A), A, void 0, e != null ? e : {});\n  }\n  return i._$AI(h), i;\n};\nexport {\n  Y as html,\n  N as noChange,\n  _ as nothing,\n  et as render,\n  tt as svg\n};\n","import { ReactiveElement as l } from \"../../../@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { defaultConverter as C, notEqual as E } from \"../../../@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { render as a, noChange as d } from \"../../../lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { html as b, nothing as g, svg as R } from \"../../../lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass n extends l {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;\n  }\n  createRenderRoot() {\n    var t, r;\n    const e = super.createRenderRoot();\n    return (r = (t = this.renderOptions).renderBefore) != null || (t.renderBefore = e.firstChild), e;\n  }\n  update(e) {\n    const t = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = a(t, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    var e;\n    super.connectedCallback(), (e = this._$Do) == null || e.setConnected(!0);\n  }\n  disconnectedCallback() {\n    var e;\n    super.disconnectedCallback(), (e = this._$Do) == null || e.setConnected(!1);\n  }\n  render() {\n    return d;\n  }\n}\nvar o;\nn._$litElement$ = !0, n.finalized = !0, (o = globalThis.litElementHydrateSupport) == null || o.call(globalThis, { LitElement: n });\nconst s = globalThis.litElementPolyfillSupport;\ns == null || s({ LitElement: n });\nvar i;\n((i = globalThis.litElementVersions) != null ? i : globalThis.litElementVersions = []).push(\"4.0.6\");\nexport {\n  n as LitElement,\n  l as ReactiveElement,\n  C as defaultConverter,\n  b as html,\n  d as noChange,\n  E as notEqual,\n  g as nothing,\n  a as render,\n  R as svg\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst s = (e) => (t, n) => {\n  n !== void 0 ? n.addInitializer(() => {\n    customElements.define(e, t);\n  }) : customElements.define(e, t);\n};\nexport {\n  s as customElement\n};\n","var h = Object.defineProperty, f = Object.defineProperties;\nvar y = Object.getOwnPropertyDescriptors;\nvar p = Object.getOwnPropertySymbols;\nvar g = Object.prototype.hasOwnProperty, P = Object.prototype.propertyIsEnumerable;\nvar d = (e, t, r) => t in e ? h(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, l = (e, t) => {\n  for (var r in t || (t = {}))\n    g.call(t, r) && d(e, r, t[r]);\n  if (p)\n    for (var r of p(t))\n      P.call(t, r) && d(e, r, t[r]);\n  return e;\n}, u = (e, t) => f(e, y(t));\nimport { defaultConverter as m, notEqual as v } from \"../reactive-element.mjs\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst b = { attribute: !0, type: String, converter: m, reflect: !1, hasChanged: v }, w = (e = b, t, r) => {\n  const { kind: n, metadata: s } = r;\n  let a = globalThis.litPropertyMetadata.get(s);\n  if (a === void 0 && globalThis.litPropertyMetadata.set(s, a = /* @__PURE__ */ new Map()), a.set(r.name, e), n === \"accessor\") {\n    const { name: o } = r;\n    return { set(i) {\n      const c = t.get.call(this);\n      t.set.call(this, i), this.requestUpdate(o, c, e);\n    }, init(i) {\n      return i !== void 0 && this.P(o, void 0, e), i;\n    } };\n  }\n  if (n === \"setter\") {\n    const { name: o } = r;\n    return function(i) {\n      const c = this[o];\n      t.call(this, i), this.requestUpdate(o, c, e);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n);\n};\nfunction O(e) {\n  return (t, r) => typeof r == \"object\" ? w(e, t, r) : ((n, s, a) => {\n    const o = s.hasOwnProperty(a);\n    return s.constructor.createProperty(a, o ? u(l({}, n), { wrapped: !0 }) : n), o ? Object.getOwnPropertyDescriptor(s, a) : void 0;\n  })(e, t, r);\n}\nexport {\n  O as property,\n  w as standardProperty\n};\n","import type { ChatService } from '@/services/ChatService'\nimport type { SourcesMap, TChatInteraction } from '@/types'\nimport type { ObservableMap } from '@stencil/store'\n\nexport const ChatStoreInitialProps = {\n  chatService: null as ChatService | null,\n  interactions: [] as TChatInteraction[] | null,\n  sourceBaseURL: '' as string,\n  linksTarget: '_blank' as string,\n  linksRel: 'noopener noreferrer' as string,\n  prompt: '',\n  sourcesMap: {\n    title: 'title',\n    description: 'description',\n    path: 'path',\n  } as SourcesMap,\n}\n\nexport type ChatStoreType = ObservableMap<typeof ChatStoreInitialProps>\n","import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n    const items = map.get(propName);\n    if (!items) {\n        map.set(propName, [value]);\n    }\n    else if (!items.includes(value)) {\n        items.push(value);\n    }\n};\nconst debounce = (fn, ms) => {\n    let timeoutId;\n    return (...args) => {\n        if (timeoutId) {\n            clearTimeout(timeoutId);\n        }\n        timeoutId = setTimeout(() => {\n            timeoutId = 0;\n            fn(...args);\n        }, ms);\n    };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n    for (let key of map.keys()) {\n        map.set(key, map.get(key).filter(isConnected));\n    }\n}, 2_000);\nconst stencilSubscription = () => {\n    if (typeof getRenderingRef !== 'function') {\n        // If we are not in a stencil project, we do nothing.\n        // This function is not really exported by @stencil/core.\n        return {};\n    }\n    const elmsToUpdate = new Map();\n    return {\n        dispose: () => elmsToUpdate.clear(),\n        get: (propName) => {\n            const elm = getRenderingRef();\n            if (elm) {\n                appendToMap(elmsToUpdate, propName, elm);\n            }\n        },\n        set: (propName) => {\n            const elements = elmsToUpdate.get(propName);\n            if (elements) {\n                elmsToUpdate.set(propName, elements.filter(forceUpdate));\n            }\n            cleanupElements(elmsToUpdate);\n        },\n        reset: () => {\n            elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n            cleanupElements(elmsToUpdate);\n        },\n    };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n    const unwrappedState = unwrap(defaultState);\n    let states = new Map(Object.entries(unwrappedState ?? {}));\n    const handlers = {\n        dispose: [],\n        get: [],\n        set: [],\n        reset: [],\n    };\n    const reset = () => {\n        // When resetting the state, the default state may be a function - unwrap it to invoke it.\n        // otherwise, the state won't be properly reset\n        states = new Map(Object.entries(unwrap(defaultState) ?? {}));\n        handlers.reset.forEach((cb) => cb());\n    };\n    const dispose = () => {\n        // Call first dispose as resetting the state would\n        // cause less updates ;)\n        handlers.dispose.forEach((cb) => cb());\n        reset();\n    };\n    const get = (propName) => {\n        handlers.get.forEach((cb) => cb(propName));\n        return states.get(propName);\n    };\n    const set = (propName, value) => {\n        const oldValue = states.get(propName);\n        if (shouldUpdate(value, oldValue, propName)) {\n            states.set(propName, value);\n            handlers.set.forEach((cb) => cb(propName, value, oldValue));\n        }\n    };\n    const state = (typeof Proxy === 'undefined'\n        ? {}\n        : new Proxy(unwrappedState, {\n            get(_, propName) {\n                return get(propName);\n            },\n            ownKeys(_) {\n                return Array.from(states.keys());\n            },\n            getOwnPropertyDescriptor() {\n                return {\n                    enumerable: true,\n                    configurable: true,\n                };\n            },\n            has(_, propName) {\n                return states.has(propName);\n            },\n            set(_, propName, value) {\n                set(propName, value);\n                return true;\n            },\n        }));\n    const on = (eventName, callback) => {\n        handlers[eventName].push(callback);\n        return () => {\n            removeFromArray(handlers[eventName], callback);\n        };\n    };\n    const onChange = (propName, cb) => {\n        const unSet = on('set', (key, newValue) => {\n            if (key === propName) {\n                cb(newValue);\n            }\n        });\n        // We need to unwrap the defaultState because it might be a function.\n        // Otherwise we might not be sending the right reset value.\n        const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));\n        return () => {\n            unSet();\n            unReset();\n        };\n    };\n    const use = (...subscriptions) => {\n        const unsubs = subscriptions.reduce((unsubs, subscription) => {\n            if (subscription.set) {\n                unsubs.push(on('set', subscription.set));\n            }\n            if (subscription.get) {\n                unsubs.push(on('get', subscription.get));\n            }\n            if (subscription.reset) {\n                unsubs.push(on('reset', subscription.reset));\n            }\n            if (subscription.dispose) {\n                unsubs.push(on('dispose', subscription.dispose));\n            }\n            return unsubs;\n        }, []);\n        return () => unsubs.forEach((unsub) => unsub());\n    };\n    const forceUpdate = (key) => {\n        const oldValue = states.get(key);\n        handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n    };\n    return {\n        state,\n        get,\n        set,\n        on,\n        onChange,\n        use,\n        dispose,\n        reset,\n        forceUpdate,\n    };\n};\nconst removeFromArray = (array, item) => {\n    const index = array.indexOf(item);\n    if (index >= 0) {\n        array[index] = array[array.length - 1];\n        array.length--;\n    }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n    const map = createObservableMap(defaultState, shouldUpdate);\n    map.use(stencilSubscription());\n    return map;\n};\n\nexport { createObservableMap, createStore };\n","import { createStore, type ObservableMap } from '@stencil/store'\n\nexport const GlobalStoreInitialProps = {\n  open: false,\n  currentTask: 'search' as 'search' | 'chat',\n  currentTerm: '',\n}\nexport type GlobalStoreType = ObservableMap<typeof GlobalStoreInitialProps>\n\nexport const testGlobalStore = createStore(GlobalStoreInitialProps)\n","import type { SearchService } from '@/services/SearchService'\nimport type { Facet, ResultMap, SearchResultBySection } from '@/types'\nimport type { AnyOrama, Orama, SearchParams } from '@orama/orama'\nimport type { OramaClient } from '@oramacloud/client'\nimport type { ObservableMap } from '@stencil/store'\n\nexport const SearchStoreInitialProps = {\n  count: 0,\n  facets: [] as Facet[],\n  facetProperty: '', // TODO: consider to move to resultsMap\n  results: [] as SearchResultBySection[],\n  resultMap: {} as ResultMap,\n  highlightedIndex: -1,\n  loading: false,\n  error: false,\n  // TODO: Probable needs to be held in component property.\n  // Lets queckly dicudd about this again.\n  searchService: null as SearchService | null,\n  searchParams: null as SearchParams<Orama<AnyOrama | OramaClient>>,\n}\n\nexport type SearchStoreType = ObservableMap<typeof SearchStoreInitialProps>\n","import { ChatStoreInitialProps, type ChatStoreType } from '@/ParentComponentStore/ChatStore'\nimport { type GlobalStoreType, GlobalStoreInitialProps } from '@/ParentComponentStore/GlobalStore'\nimport { SearchStoreInitialProps, type SearchStoreType } from '@/ParentComponentStore/SearchStore'\n\nimport { createStore } from '@stencil/store'\n\nexport type StoresMapType = {\n  global?: GlobalStoreType\n  search?: SearchStoreType\n  chat?: ChatStoreType\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Any is acceptable here\nconst storesMapInitialProps: Record<keyof StoresMapType, any> = {\n  global: GlobalStoreInitialProps,\n  search: SearchStoreInitialProps,\n  chat: ChatStoreInitialProps,\n}\n\nexport type StoresMapKeys = keyof StoresMapType\n\n/**\n * Holds the global references for all stores in Orama Ui.\n *\n */\nconst storesReferencesMap = new Map<\n  string,\n  { search?: SearchStoreType; chat?: ChatStoreType; global?: GlobalStoreType }\n>()\n\n/**\n * Access storeSReferenceMap and return the initialized store. Throw exception if either parent or store does not exist\n *\n * @param parentComponentId\n * @param storeName\n * @returns\n */\nconst getParentComponentStore = <T extends StoresMapKeys>(\n  parentComponentId: string,\n  storeName: T,\n): StoresMapType[T] => {\n  const parentStores = storesReferencesMap.get(parentComponentId)\n\n  if (!parentStores) {\n    throw new Error('Invalid parent component Id')\n  }\n\n  const store = parentStores[storeName]\n\n  if (!store) {\n    throw new Error('Store not initialized')\n  }\n\n  return store\n}\n\nexport const initStore = <T extends StoresMapKeys>(storeName: T, parentComponentId: string): StoresMapType[T] => {\n  const initialProps = storesMapInitialProps[storeName]\n  if (!initialProps) {\n    throw new Error('Invalid store name')\n  }\n\n  const store = createStore(initialProps)\n\n  if (storesReferencesMap.has(parentComponentId)) {\n    const currentStores = storesReferencesMap.get(parentComponentId)\n    currentStores[storeName] = store\n  } else {\n    storesReferencesMap.set(parentComponentId, { [storeName]: store })\n  }\n\n  return store\n}\n\nexport const removeAllStores = (parentComponentId: string) => {\n  storesReferencesMap.delete(parentComponentId)\n}\n\nexport function getStore<T extends StoresMapKeys>(storeName: T, element: HTMLElement) {\n  const externalComponent = getExternalParentComponentHTMLElement(element)\n\n  if (!externalComponent) {\n    throw new Error('Failed to get store')\n  }\n\n  return getParentComponentStore(externalComponent.id, storeName)\n}\n\nconst EXTERNAL_COMPONENT_TAG_LIST = ['orama-search-box', 'orama-chat-box']\n\nfunction getExternalParentComponentHTMLElement(element: HTMLElement): HTMLElement | null {\n  let currentNode: ShadowRoot | HTMLElement | null = element\n\n  currentNode.parentNode\n  while (true) {\n    if (!currentNode) {\n      return null\n    }\n\n    if (currentNode instanceof ShadowRoot) {\n      const host = currentNode.host as HTMLElement\n      if (EXTERNAL_COMPONENT_TAG_LIST.includes(host.tagName.toLowerCase())) {\n        return host\n      }\n      currentNode = host\n    } else {\n      currentNode = (currentNode.parentNode as HTMLElement) ?? null\n    }\n  }\n}\n","import { getStore, type StoresMapKeys } from '@/ParentComponentStore/ParentComponentStoreManager'\nimport { type ComponentInterface, getElement } from '@stencil/core/internal'\n\n// Define unique symbols for internal metadata\nconst STORE_PROPS = Symbol('storeProps')\nconst STORE_WILL_LOAD_PATCHED = Symbol('storeWillLoadPatched')\n\n/**\n * A decorator that:\n * - Patches `componentWillLoad` to initialize a Component Store.\n */\nexport function Store<S extends StoresMapKeys>(storeName: S): PropertyDecorator {\n  return (targetClass: ComponentInterface, propKey: string) => {\n    const classConstructor = targetClass.constructor\n\n    // Initialize the store properties metadata array if needed.\n    if (!classConstructor[STORE_PROPS]) {\n      classConstructor[STORE_PROPS] = []\n    }\n    // Save both the property key and storeName in the metadata.\n    classConstructor[STORE_PROPS].push({ propKey, storeName })\n\n    // Patch componentWillLoad only once for the class.\n    if (!classConstructor[STORE_WILL_LOAD_PATCHED]) {\n      classConstructor[STORE_WILL_LOAD_PATCHED] = true\n\n      const originalComponentWillLoad = targetClass.componentWillLoad\n\n      // Replace componentWillLoad with our own wrapped version.\n      targetClass.componentWillLoad = function () {\n        // Access the host element\n        const hostEl = getElement(this)\n\n        const storeProps = this.constructor[STORE_PROPS]\n        if (storeProps) {\n          for (const { propKey, storeName } of storeProps) {\n            const store = getStore(storeName, hostEl)\n            this[propKey] = store\n          }\n        }\n\n        // Call the original componentWillLoad (if it exists).\n        if (typeof originalComponentWillLoad === 'function') {\n          originalComponentWillLoad.apply(this)\n        }\n      }\n    }\n  }\n}\n",".dots-loader {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: var(--spacing-l, $spacing-l) 0;\n}\n\n.dot {\n  width: pxToRem(4);\n  height: pxToRem(4);\n  margin: 0 var(--spacing-2xs, $spacing-2xs);\n  background-color: var(--text-color-primary, text-color(primary));\n  border-radius: 50%;\n  animation: dot-slide-up 1.4s infinite both;\n}\n\n.dot:nth-child(1) {\n  animation-delay: -0.32s;\n}\n\n.dot:nth-child(2) {\n  animation-delay: -0.16s;\n}\n\n@keyframes dot-slide-up {\n  0%,\n  80%,\n  100% {\n    opacity: 0.3;\n    transform: translate3d(0, 0, 0);\n  }\n  40% {\n    opacity: 1;\n    transform: translate3d(0, -4px, 0);\n  }\n}\n","import { Component, h } from '@stencil/core'\n\n@Component({\n  tag: 'orama-dots-loader',\n  styleUrl: 'orama-dots-loader.scss',\n  scoped: true,\n})\nexport class DotsLoader {\n  render() {\n    return (\n      <div class=\"dots-loader\">\n        <div class=\"dot\" />\n        <div class=\"dot\" />\n        <div class=\"dot\" />\n      </div>\n    )\n  }\n}\n","export const SUPPORTED_HLJS_LANGUAGES_ARRAY = [\n  '1c',\n  'abnf',\n  'accesslog',\n  'ada',\n  'arduino',\n  'ino',\n  'armasm',\n  'arm',\n  'avrasm',\n  'actionscript',\n  'as',\n  'angelscript',\n  'asc',\n  'apache',\n  'apacheconf',\n  'applescript',\n  'osascript',\n  'arcade',\n  'asciidoc',\n  'adoc',\n  'aspectj',\n  'autohotkey',\n  'autoit',\n  'awk',\n  'mawk',\n  'nawk',\n  'gawk',\n  'bash',\n  'sh',\n  'zsh',\n  'basic',\n  'bnf',\n  'brainfuck',\n  'bf',\n  'csharp',\n  'cs',\n  'c',\n  'h',\n  'cpp',\n  'hpp',\n  'cc',\n  'hh',\n  'c++',\n  'h++',\n  'cxx',\n  'hxx',\n  'cal',\n  'cos',\n  'cls',\n  'cmake',\n  'cmake.in',\n  'coq',\n  'csp',\n  'css',\n  'capnproto',\n  'capnp',\n  'clojure',\n  'clj',\n  'coffeescript',\n  'coffee',\n  'cson',\n  'iced',\n  'crmsh',\n  'crm',\n  'pcmk',\n  'crystal',\n  'cr',\n  'd',\n  'dart',\n  'dpr',\n  'dfm',\n  'pas',\n  'pascal',\n  'diff',\n  'patch',\n  'django',\n  'jinja',\n  'dns',\n  'zone',\n  'bind',\n  'dockerfile',\n  'docker',\n  'dos',\n  'bat',\n  'cmd',\n  'dsconfig',\n  'dts',\n  'dust',\n  'dst',\n  'ebnf',\n  'elixir',\n  'elm',\n  'erlang',\n  'erl',\n  'excel',\n  'xls',\n  'xlsx',\n  'fsharp',\n  'fs',\n  'fsx',\n  'fsi',\n  'fsscript',\n  'fix',\n  'fortran',\n  'f90',\n  'f95',\n  'gcode',\n  'nc',\n  'gams',\n  'gms',\n  'gauss',\n  'gss',\n  'gherkin',\n  'go',\n  'golang',\n  'golo',\n  'gololang',\n  'gradle',\n  'graphql',\n  'gql',\n  'groovy',\n  'xml',\n  'html',\n  'xhtml',\n  'rss',\n  'atom',\n  'xjb',\n  'xsd',\n  'xsl',\n  'plist',\n  'svg',\n  'http',\n  'https',\n  'haml',\n  'handlebars',\n  'hbs',\n  'html.hbs',\n  'html.handlebars',\n  'haskell',\n  'hs',\n  'haxe',\n  'hx',\n  'hy',\n  'hylang',\n  'ini',\n  'toml',\n  'inform7',\n  'i7',\n  'irpf90',\n  'json',\n  'jsonc',\n  'java',\n  'jsp',\n  'javascript',\n  'js',\n  'jsx',\n  'julia',\n  'jl',\n  'julia-repl',\n  'kotlin',\n  'kt',\n  'tex',\n  'leaf',\n  'lasso',\n  'ls',\n  'lassoscript',\n  'less',\n  'ldif',\n  'lisp',\n  'livecodeserver',\n  'livescript',\n  'ls',\n  'lua',\n  'makefile',\n  'mk',\n  'mak',\n  'make',\n  'markdown',\n  'md',\n  'mkdown',\n  'mkd',\n  'mathematica',\n  'mma',\n  'wl',\n  'matlab',\n  'maxima',\n  'mel',\n  'mercury',\n  'mips',\n  'mipsasm',\n  'mizar',\n  'mojolicious',\n  'monkey',\n  'moonscript',\n  'moon',\n  'n1ql',\n  'nsis',\n  'nginx',\n  'nginxconf',\n  'nim',\n  'nimrod',\n  'nix',\n  'ocaml',\n  'ml',\n  'objectivec',\n  'mm',\n  'objc',\n  'obj-c',\n  'obj-c++',\n  'objective-c++',\n  'glsl',\n  'openscad',\n  'scad',\n  'ruleslanguage',\n  'oxygene',\n  'pf',\n  'pf.conf',\n  'php',\n  'parser3',\n  'perl',\n  'pl',\n  'pm',\n  'plaintext',\n  'txt',\n  'text',\n  'pony',\n  'pgsql',\n  'postgres',\n  'postgresql',\n  'powershell',\n  'ps',\n  'ps1',\n  'processing',\n  'prolog',\n  'properties',\n  'proto',\n  'protobuf',\n  'puppet',\n  'pp',\n  'python',\n  'py',\n  'gyp',\n  'profile',\n  'python-repl',\n  'pycon',\n  'k',\n  'kdb',\n  'qml',\n  'r',\n  'reasonml',\n  're',\n  'rib',\n  'rsl',\n  'graph',\n  'instances',\n  'ruby',\n  'rb',\n  'gemspec',\n  'podspec',\n  'thor',\n  'irb',\n  'rust',\n  'rs',\n  'SAS',\n  'sas',\n  'scss',\n  'sql',\n  'p21',\n  'step',\n  'stp',\n  'scala',\n  'scheme',\n  'scilab',\n  'sci',\n  'shell',\n  'console',\n  'smali',\n  'smalltalk',\n  'st',\n  'sml',\n  'ml',\n  'stan',\n  'stanfuncs',\n  'stata',\n  'stylus',\n  'styl',\n  'subunit',\n  'swift',\n  'tcl',\n  'tk',\n  'tap',\n  'thrift',\n  'tp',\n  'twig',\n  'craftcms',\n  'typescript',\n  'ts',\n  'tsx',\n  'mts',\n  'cts',\n  'vbnet',\n  'vb',\n  'vbscript',\n  'vbs',\n  'vhdl',\n  'vala',\n  'verilog',\n  'v',\n  'vim',\n  'axapta',\n  'x++',\n  'x86asm',\n  'xl',\n  'tao',\n  'xquery',\n  'xpath',\n  'xq',\n  'xqm',\n  'yml',\n  'yaml',\n  'zephir',\n  'zep',\n] as const\n","/*! @license DOMPurify 3.2.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.5/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return construct(func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.5';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n  if (obj instanceof Map) {\n    obj.clear =\n      obj.delete =\n      obj.set =\n        function () {\n          throw new Error('map is read-only');\n        };\n  } else if (obj instanceof Set) {\n    obj.add =\n      obj.clear =\n      obj.delete =\n        function () {\n          throw new Error('set is read-only');\n        };\n  }\n\n  // Freeze self\n  Object.freeze(obj);\n\n  Object.getOwnPropertyNames(obj).forEach((name) => {\n    const prop = obj[name];\n    const type = typeof prop;\n\n    // Freeze prop if it is an object or function and also not already frozen\n    if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n      deepFreeze(prop);\n    }\n  });\n\n  return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n  /**\n   * @param {CompiledMode} mode\n   */\n  constructor(mode) {\n    // eslint-disable-next-line no-undefined\n    if (mode.data === undefined) mode.data = {};\n\n    this.data = mode.data;\n    this.isMatchIgnored = false;\n  }\n\n  ignoreMatch() {\n    this.isMatchIgnored = true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n  return value\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n  /** @type Record<string,any> */\n  const result = Object.create(null);\n\n  for (const key in original) {\n    result[key] = original[key];\n  }\n  objects.forEach(function(obj) {\n    for (const key in obj) {\n      result[key] = obj[key];\n    }\n  });\n  return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n  // rarely we can have a sublanguage where language is undefined\n  // TODO: track down why\n  return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n  // sub-language\n  if (name.startsWith(\"language:\")) {\n    return name.replace(\"language:\", \"language-\");\n  }\n  // tiered scope: comment.line\n  if (name.includes(\".\")) {\n    const pieces = name.split(\".\");\n    return [\n      `${prefix}${pieces.shift()}`,\n      ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n    ].join(\" \");\n  }\n  // simple scope\n  return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n  /**\n   * Creates a new HTMLRenderer\n   *\n   * @param {Tree} parseTree - the parse tree (must support `walk` API)\n   * @param {{classPrefix: string}} options\n   */\n  constructor(parseTree, options) {\n    this.buffer = \"\";\n    this.classPrefix = options.classPrefix;\n    parseTree.walk(this);\n  }\n\n  /**\n   * Adds texts to the output stream\n   *\n   * @param {string} text */\n  addText(text) {\n    this.buffer += escapeHTML(text);\n  }\n\n  /**\n   * Adds a node open to the output stream (if needed)\n   *\n   * @param {Node} node */\n  openNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    const className = scopeToCSSClass(node.scope,\n      { prefix: this.classPrefix });\n    this.span(className);\n  }\n\n  /**\n   * Adds a node close to the output stream (if needed)\n   *\n   * @param {Node} node */\n  closeNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    this.buffer += SPAN_CLOSE;\n  }\n\n  /**\n   * returns the accumulated buffer\n  */\n  value() {\n    return this.buffer;\n  }\n\n  // helpers\n\n  /**\n   * Builds a span element\n   *\n   * @param {string} className */\n  span(className) {\n    this.buffer += `<span class=\"${className}\">`;\n  }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/**  */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n  /** @type DataNode */\n  const result = { children: [] };\n  Object.assign(result, opts);\n  return result;\n};\n\nclass TokenTree {\n  constructor() {\n    /** @type DataNode */\n    this.rootNode = newNode();\n    this.stack = [this.rootNode];\n  }\n\n  get top() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  get root() { return this.rootNode; }\n\n  /** @param {Node} node */\n  add(node) {\n    this.top.children.push(node);\n  }\n\n  /** @param {string} scope */\n  openNode(scope) {\n    /** @type Node */\n    const node = newNode({ scope });\n    this.add(node);\n    this.stack.push(node);\n  }\n\n  closeNode() {\n    if (this.stack.length > 1) {\n      return this.stack.pop();\n    }\n    // eslint-disable-next-line no-undefined\n    return undefined;\n  }\n\n  closeAllNodes() {\n    while (this.closeNode());\n  }\n\n  toJSON() {\n    return JSON.stringify(this.rootNode, null, 4);\n  }\n\n  /**\n   * @typedef { import(\"./html_renderer\").Renderer } Renderer\n   * @param {Renderer} builder\n   */\n  walk(builder) {\n    // this does not\n    return this.constructor._walk(builder, this.rootNode);\n    // this works\n    // return TokenTree._walk(builder, this.rootNode);\n  }\n\n  /**\n   * @param {Renderer} builder\n   * @param {Node} node\n   */\n  static _walk(builder, node) {\n    if (typeof node === \"string\") {\n      builder.addText(node);\n    } else if (node.children) {\n      builder.openNode(node);\n      node.children.forEach((child) => this._walk(builder, child));\n      builder.closeNode(node);\n    }\n    return builder;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  static _collapse(node) {\n    if (typeof node === \"string\") return;\n    if (!node.children) return;\n\n    if (node.children.every(el => typeof el === \"string\")) {\n      // node.text = node.children.join(\"\");\n      // delete node.children;\n      node.children = [node.children.join(\"\")];\n    } else {\n      node.children.forEach((child) => {\n        TokenTree._collapse(child);\n      });\n    }\n  }\n}\n\n/**\n  Currently this is all private API, but this is the minimal API necessary\n  that an Emitter must implement to fully support the parser.\n\n  Minimal interface:\n\n  - addText(text)\n  - __addSublanguage(emitter, subLanguageName)\n  - startScope(scope)\n  - endScope()\n  - finalize()\n  - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n  /**\n   * @param {*} options\n   */\n  constructor(options) {\n    super();\n    this.options = options;\n  }\n\n  /**\n   * @param {string} text\n   */\n  addText(text) {\n    if (text === \"\") { return; }\n\n    this.add(text);\n  }\n\n  /** @param {string} scope */\n  startScope(scope) {\n    this.openNode(scope);\n  }\n\n  endScope() {\n    this.closeNode();\n  }\n\n  /**\n   * @param {Emitter & {root: DataNode}} emitter\n   * @param {string} name\n   */\n  __addSublanguage(emitter, name) {\n    /** @type DataNode */\n    const node = emitter.root;\n    if (name) node.scope = `language:${name}`;\n\n    this.add(node);\n  }\n\n  toHTML() {\n    const renderer = new HTMLRenderer(this, this.options);\n    return renderer.value();\n  }\n\n  finalize() {\n    this.closeAllNodes();\n    return true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n  return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n  return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n  const opts = args[args.length - 1];\n\n  if (typeof opts === 'object' && opts.constructor === Object) {\n    args.splice(args.length - 1, 1);\n    return opts;\n  } else {\n    return {};\n  }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n  /** @type { object & {capture?: boolean} }  */\n  const opts = stripOptionsFromArgs(args);\n  const joined = '('\n    + (opts.capture ? \"\" : \"?:\")\n    + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n  return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n  const match = re && re.exec(lexeme);\n  return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n//   interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n//   follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n  let numCaptures = 0;\n\n  return regexps.map((regex) => {\n    numCaptures += 1;\n    const offset = numCaptures;\n    let re = source(regex);\n    let out = '';\n\n    while (re.length > 0) {\n      const match = BACKREF_RE.exec(re);\n      if (!match) {\n        out += re;\n        break;\n      }\n      out += re.substring(0, match.index);\n      re = re.substring(match.index + match[0].length);\n      if (match[0][0] === '\\\\' && match[1]) {\n        // Adjust the backreference.\n        out += '\\\\' + String(Number(match[1]) + offset);\n      } else {\n        out += match[0];\n        if (match[0] === '(') {\n          numCaptures++;\n        }\n      }\n    }\n    return out;\n  }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n  const beginShebang = /^#![ ]*\\//;\n  if (opts.binary) {\n    opts.begin = concat(\n      beginShebang,\n      /.*\\b/,\n      opts.binary,\n      /\\b.*/);\n  }\n  return inherit$1({\n    scope: 'meta',\n    begin: beginShebang,\n    end: /$/,\n    relevance: 0,\n    /** @type {ModeCallback} */\n    \"on:begin\": (m, resp) => {\n      if (m.index !== 0) resp.ignoreMatch();\n    }\n  }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n  begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n  scope: 'string',\n  begin: '\\'',\n  end: '\\'',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n  scope: 'string',\n  begin: '\"',\n  end: '\"',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n  begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n  const mode = inherit$1(\n    {\n      scope: 'comment',\n      begin,\n      end,\n      contains: []\n    },\n    modeOptions\n  );\n  mode.contains.push({\n    scope: 'doctag',\n    // hack to avoid the space from being included. the space is necessary to\n    // match here to prevent the plain text rule below from gobbling up doctags\n    begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n    end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n    excludeBegin: true,\n    relevance: 0\n  });\n  const ENGLISH_WORD = either(\n    // list of common 1 and 2 letter words in English\n    \"I\",\n    \"a\",\n    \"is\",\n    \"so\",\n    \"us\",\n    \"to\",\n    \"at\",\n    \"if\",\n    \"in\",\n    \"it\",\n    \"on\",\n    // note: this is not an exhaustive list of contractions, just popular ones\n    /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n    /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n    /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n  );\n  // looking like plain text, more likely to be a comment\n  mode.contains.push(\n    {\n      // TODO: how to include \", (, ) without breaking grammars that use these for\n      // comment delimiters?\n      // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n      // ---\n\n      // this tries to find sequences of 3 english words in a row (without any\n      // \"programming\" type syntax) this gives us a strong signal that we've\n      // TRULY found a comment - vs perhaps scanning with the wrong language.\n      // It's possible to find something that LOOKS like the start of the\n      // comment - but then if there is no readable text - good chance it is a\n      // false match and not a comment.\n      //\n      // for a visual example please see:\n      // https://github.com/highlightjs/highlight.js/issues/2827\n\n      begin: concat(\n        /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n        '(',\n        ENGLISH_WORD,\n        /[.]?[:]?([.][ ]|[ ])/,\n        '){3}') // look for 3 words in a row\n    }\n  );\n  return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n  scope: 'number',\n  begin: NUMBER_RE,\n  relevance: 0\n};\nconst C_NUMBER_MODE = {\n  scope: 'number',\n  begin: C_NUMBER_RE,\n  relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n  scope: 'number',\n  begin: BINARY_NUMBER_RE,\n  relevance: 0\n};\nconst REGEXP_MODE = {\n  scope: \"regexp\",\n  begin: /\\/(?=[^/\\n]*\\/)/,\n  end: /\\/[gimuy]*/,\n  contains: [\n    BACKSLASH_ESCAPE,\n    {\n      begin: /\\[/,\n      end: /\\]/,\n      relevance: 0,\n      contains: [BACKSLASH_ESCAPE]\n    }\n  ]\n};\nconst TITLE_MODE = {\n  scope: 'title',\n  begin: IDENT_RE,\n  relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n  scope: 'title',\n  begin: UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\nconst METHOD_GUARD = {\n  // excludes method names from keyword processing\n  begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n  return Object.assign(mode,\n    {\n      /** @type {ModeCallback} */\n      'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n      /** @type {ModeCallback} */\n      'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n    });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  APOS_STRING_MODE: APOS_STRING_MODE,\n  BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n  BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n  BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n  COMMENT: COMMENT,\n  C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n  C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n  C_NUMBER_MODE: C_NUMBER_MODE,\n  C_NUMBER_RE: C_NUMBER_RE,\n  END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n  HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n  IDENT_RE: IDENT_RE,\n  MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n  METHOD_GUARD: METHOD_GUARD,\n  NUMBER_MODE: NUMBER_MODE,\n  NUMBER_RE: NUMBER_RE,\n  PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n  QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n  REGEXP_MODE: REGEXP_MODE,\n  RE_STARTERS_RE: RE_STARTERS_RE,\n  SHEBANG: SHEBANG,\n  TITLE_MODE: TITLE_MODE,\n  UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n  UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`.  The extension then just moves `match` into\n// `begin` when it runs.  Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n  const before = match.input[match.index - 1];\n  if (before === \".\") {\n    response.ignoreMatch();\n  }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.className !== undefined) {\n    mode.scope = mode.className;\n    delete mode.className;\n  }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n  if (!parent) return;\n  if (!mode.beginKeywords) return;\n\n  // for languages with keywords that include non-word characters checking for\n  // a word boundary is not sufficient, so instead we check for a word boundary\n  // or whitespace - this does no harm in any case since our keyword engine\n  // doesn't allow spaces in keywords anyways and we still check for the boundary\n  // first\n  mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n  mode.__beforeBegin = skipIfHasPrecedingDot;\n  mode.keywords = mode.keywords || mode.beginKeywords;\n  delete mode.beginKeywords;\n\n  // prevents double relevance, the keywords themselves provide\n  // relevance, the mode doesn't need to double it\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n  if (!Array.isArray(mode.illegal)) return;\n\n  mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n  if (!mode.match) return;\n  if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n  mode.begin = mode.match;\n  delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n  if (!mode.beforeMatch) return;\n  // starts conflicts with endsParent which we need to make sure the child\n  // rule is not matched multiple times\n  if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n  const originalMode = Object.assign({}, mode);\n  Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n  mode.keywords = originalMode.keywords;\n  mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n  mode.starts = {\n    relevance: 0,\n    contains: [\n      Object.assign(originalMode, { endsParent: true })\n    ]\n  };\n  mode.relevance = 0;\n\n  delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n  'of',\n  'and',\n  'for',\n  'in',\n  'not',\n  'or',\n  'if',\n  'then',\n  'parent', // common variable name\n  'list', // common variable name\n  'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n  /** @type {import(\"highlight.js/private\").KeywordDict} */\n  const compiledKeywords = Object.create(null);\n\n  // input can be a string of keywords, an array of keywords, or a object with\n  // named keys representing scopeName (which can then point to a string or array)\n  if (typeof rawKeywords === 'string') {\n    compileList(scopeName, rawKeywords.split(\" \"));\n  } else if (Array.isArray(rawKeywords)) {\n    compileList(scopeName, rawKeywords);\n  } else {\n    Object.keys(rawKeywords).forEach(function(scopeName) {\n      // collapse all our objects back into the parent object\n      Object.assign(\n        compiledKeywords,\n        compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n      );\n    });\n  }\n  return compiledKeywords;\n\n  // ---\n\n  /**\n   * Compiles an individual list of keywords\n   *\n   * Ex: \"for if when while|5\"\n   *\n   * @param {string} scopeName\n   * @param {Array<string>} keywordList\n   */\n  function compileList(scopeName, keywordList) {\n    if (caseInsensitive) {\n      keywordList = keywordList.map(x => x.toLowerCase());\n    }\n    keywordList.forEach(function(keyword) {\n      const pair = keyword.split('|');\n      compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n    });\n  }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n  // manual scores always win over common keywords\n  // so you can force a score of 1 if you really insist\n  if (providedScore) {\n    return Number(providedScore);\n  }\n\n  return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n  return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n  console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n  console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n  if (seenDeprecations[`${version}/${message}`]) return;\n\n  console.log(`Deprecated as of ${version}. ${message}`);\n  seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n *   { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n *   (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n *   { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5.  This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n  let offset = 0;\n  const scopeNames = mode[key];\n  /** @type Record<number,boolean> */\n  const emit = {};\n  /** @type Record<number,string> */\n  const positions = {};\n\n  for (let i = 1; i <= regexes.length; i++) {\n    positions[i + offset] = scopeNames[i];\n    emit[i + offset] = true;\n    offset += countMatchGroups(regexes[i - 1]);\n  }\n  // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n  // output from inside match groups\n  mode[key] = positions;\n  mode[key]._emit = emit;\n  mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n  if (!Array.isArray(mode.begin)) return;\n\n  if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n    error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n    error(\"beginScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n  mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n  if (!Array.isArray(mode.end)) return;\n\n  if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n    error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n    error(\"endScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.end, { key: \"endScope\" });\n  mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n  {\n    match: [ /def/, /\\w+/ ]\n    scope: { 1: \"keyword\" , 2: \"title\" }\n  }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n  if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n    mode.beginScope = mode.scope;\n    delete mode.scope;\n  }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n  scopeSugar(mode);\n\n  if (typeof mode.beginScope === \"string\") {\n    mode.beginScope = { _wrap: mode.beginScope };\n  }\n  if (typeof mode.endScope === \"string\") {\n    mode.endScope = { _wrap: mode.endScope };\n  }\n\n  beginMultiClass(mode);\n  endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n  /**\n   * Builds a regex with the case sensitivity of the current language\n   *\n   * @param {RegExp | string} value\n   * @param {boolean} [global]\n   */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm'\n      + (language.case_insensitive ? 'i' : '')\n      + (language.unicodeRegex ? 'u' : '')\n      + (global ? 'g' : '')\n    );\n  }\n\n  /**\n    Stores multiple regular expressions and allows you to quickly search for\n    them all in a string simultaneously - returning the first match.  It does\n    this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n    and joined by `|` - using match groups to track position.  When a match is\n    found checking which position in the array has content allows us to figure\n    out which of the original regexes / match groups triggered the match.\n\n    The match object itself (the result of `Regex.exec`) is returned but also\n    enhanced by merging in any meta-data that was registered with the regex.\n    This is how we keep track of which mode matched, and what type of rule\n    (`illegal`, `begin`, end, etc).\n  */\n  class MultiRegex {\n    constructor() {\n      this.matchIndexes = {};\n      // @ts-ignore\n      this.regexes = [];\n      this.matchAt = 1;\n      this.position = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      opts.position = this.position++;\n      // @ts-ignore\n      this.matchIndexes[this.matchAt] = opts;\n      this.regexes.push([opts, re]);\n      this.matchAt += countMatchGroups(re) + 1;\n    }\n\n    compile() {\n      if (this.regexes.length === 0) {\n        // avoids the need to check length every time exec is called\n        // @ts-ignore\n        this.exec = () => null;\n      }\n      const terminators = this.regexes.map(el => el[1]);\n      this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n      this.lastIndex = 0;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      this.matcherRe.lastIndex = this.lastIndex;\n      const match = this.matcherRe.exec(s);\n      if (!match) { return null; }\n\n      // eslint-disable-next-line no-undefined\n      const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n      // @ts-ignore\n      const matchData = this.matchIndexes[i];\n      // trim off any earlier non-relevant match groups (ie, the other regex\n      // match groups that make up the multi-matcher)\n      match.splice(0, i);\n\n      return Object.assign(match, matchData);\n    }\n  }\n\n  /*\n    Created to solve the key deficiently with MultiRegex - there is no way to\n    test for multiple matches at a single location.  Why would we need to do\n    that?  In the future a more dynamic engine will allow certain matches to be\n    ignored.  An example: if we matched say the 3rd regex in a large group but\n    decided to ignore it - we'd need to started testing again at the 4th\n    regex... but MultiRegex itself gives us no real way to do that.\n\n    So what this class creates MultiRegexs on the fly for whatever search\n    position they are needed.\n\n    NOTE: These additional MultiRegex objects are created dynamically.  For most\n    grammars most of the time we will never actually need anything more than the\n    first MultiRegex - so this shouldn't have too much overhead.\n\n    Say this is our search group, and we match regex3, but wish to ignore it.\n\n      regex1 | regex2 | regex3 | regex4 | regex5    ' ie, startAt = 0\n\n    What we need is a new MultiRegex that only includes the remaining\n    possibilities:\n\n      regex4 | regex5                               ' ie, startAt = 3\n\n    This class wraps all that complexity up in a simple API... `startAt` decides\n    where in the array of expressions to start doing the matching. It\n    auto-increments, so if a match is found at position 2, then startAt will be\n    set to 3.  If the end is reached startAt will return to 0.\n\n    MOST of the time the parser will be setting startAt manually to 0.\n  */\n  class ResumableMultiRegex {\n    constructor() {\n      // @ts-ignore\n      this.rules = [];\n      // @ts-ignore\n      this.multiRegexes = [];\n      this.count = 0;\n\n      this.lastIndex = 0;\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    getMatcher(index) {\n      if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n      const matcher = new MultiRegex();\n      this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n      matcher.compile();\n      this.multiRegexes[index] = matcher;\n      return matcher;\n    }\n\n    resumingScanAtSamePosition() {\n      return this.regexIndex !== 0;\n    }\n\n    considerAll() {\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      this.rules.push([re, opts]);\n      if (opts.type === \"begin\") this.count++;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      const m = this.getMatcher(this.regexIndex);\n      m.lastIndex = this.lastIndex;\n      let result = m.exec(s);\n\n      // The following is because we have no easy way to say \"resume scanning at the\n      // existing position but also skip the current rule ONLY\". What happens is\n      // all prior rules are also skipped which can result in matching the wrong\n      // thing. Example of matching \"booger\":\n\n      // our matcher is [string, \"booger\", number]\n      //\n      // ....booger....\n\n      // if \"booger\" is ignored then we'd really need a regex to scan from the\n      // SAME position for only: [string, number] but ignoring \"booger\" (if it\n      // was the first match), a simple resume would scan ahead who knows how\n      // far looking only for \"number\", ignoring potential string matches (or\n      // future \"booger\" matches that might be valid.)\n\n      // So what we do: We execute two matchers, one resuming at the same\n      // position, but the second full matcher starting at the position after:\n\n      //     /--- resume first regex match here (for [number])\n      //     |/---- full match here for [string, \"booger\", number]\n      //     vv\n      // ....booger....\n\n      // Which ever results in a match first is then used. So this 3-4 step\n      // process essentially allows us to say \"match at this position, excluding\n      // a prior rule that was ignored\".\n      //\n      // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n      // 2. Resume matching for [number]\n      // 3. Match at index + 1 for [string, \"booger\", number]\n      // 4. If #2 and #3 result in matches, which came first?\n      if (this.resumingScanAtSamePosition()) {\n        if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n          const m2 = this.getMatcher(0);\n          m2.lastIndex = this.lastIndex + 1;\n          result = m2.exec(s);\n        }\n      }\n\n      if (result) {\n        this.regexIndex += result.position + 1;\n        if (this.regexIndex === this.count) {\n          // wrap-around to considering all matches again\n          this.considerAll();\n        }\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n   * the content and find matches.\n   *\n   * @param {CompiledMode} mode\n   * @returns {ResumableMultiRegex}\n   */\n  function buildModeRegex(mode) {\n    const mm = new ResumableMultiRegex();\n\n    mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n    if (mode.terminatorEnd) {\n      mm.addRule(mode.terminatorEnd, { type: \"end\" });\n    }\n    if (mode.illegal) {\n      mm.addRule(mode.illegal, { type: \"illegal\" });\n    }\n\n    return mm;\n  }\n\n  /** skip vs abort vs ignore\n   *\n   * @skip   - The mode is still entered and exited normally (and contains rules apply),\n   *           but all content is held and added to the parent buffer rather than being\n   *           output when the mode ends.  Mostly used with `sublanguage` to build up\n   *           a single large buffer than can be parsed by sublanguage.\n   *\n   *             - The mode begin ands ends normally.\n   *             - Content matched is added to the parent mode buffer.\n   *             - The parser cursor is moved forward normally.\n   *\n   * @abort  - A hack placeholder until we have ignore.  Aborts the mode (as if it\n   *           never matched) but DOES NOT continue to match subsequent `contains`\n   *           modes.  Abort is bad/suboptimal because it can result in modes\n   *           farther down not getting applied because an earlier rule eats the\n   *           content but then aborts.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is added to the mode buffer.\n   *             - The parser cursor is moved forward accordingly.\n   *\n   * @ignore - Ignores the mode (as if it never matched) and continues to match any\n   *           subsequent `contains` modes.  Ignore isn't technically possible with\n   *           the current parser implementation.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is ignored.\n   *             - The parser cursor is not moved forward.\n   */\n\n  /**\n   * Compiles an individual mode\n   *\n   * This can raise an error if the mode contains certain detectable known logic\n   * issues.\n   * @param {Mode} mode\n   * @param {CompiledMode | null} [parent]\n   * @returns {CompiledMode | never}\n   */\n  function compileMode(mode, parent) {\n    const cmode = /** @type CompiledMode */ (mode);\n    if (mode.isCompiled) return cmode;\n\n    [\n      scopeClassName,\n      // do this early so compiler extensions generally don't have to worry about\n      // the distinction between match/begin\n      compileMatch,\n      MultiClass,\n      beforeMatchExt\n    ].forEach(ext => ext(mode, parent));\n\n    language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n    // __beforeBegin is considered private API, internal use only\n    mode.__beforeBegin = null;\n\n    [\n      beginKeywords,\n      // do this later so compiler extensions that come earlier have access to the\n      // raw array if they wanted to perhaps manipulate it, etc.\n      compileIllegal,\n      // default to 1 relevance if not specified\n      compileRelevance\n    ].forEach(ext => ext(mode, parent));\n\n    mode.isCompiled = true;\n\n    let keywordPattern = null;\n    if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n      // we need a copy because keywords might be compiled multiple times\n      // so we can't go deleting $pattern from the original on the first\n      // pass\n      mode.keywords = Object.assign({}, mode.keywords);\n      keywordPattern = mode.keywords.$pattern;\n      delete mode.keywords.$pattern;\n    }\n    keywordPattern = keywordPattern || /\\w+/;\n\n    if (mode.keywords) {\n      mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n    }\n\n    cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n    if (parent) {\n      if (!mode.begin) mode.begin = /\\B|\\b/;\n      cmode.beginRe = langRe(cmode.begin);\n      if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n      if (mode.end) cmode.endRe = langRe(cmode.end);\n      cmode.terminatorEnd = source(cmode.end) || '';\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n      }\n    }\n    if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n    if (!mode.contains) mode.contains = [];\n\n    mode.contains = [].concat(...mode.contains.map(function(c) {\n      return expandOrCloneMode(c === 'self' ? mode : c);\n    }));\n    mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    cmode.matcher = buildModeRegex(cmode);\n    return cmode;\n  }\n\n  if (!language.compilerExtensions) language.compilerExtensions = [];\n\n  // self is not valid at the top-level\n  if (language.contains && language.contains.includes('self')) {\n    throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");\n  }\n\n  // we need a null object, which inherit will guarantee\n  language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n  return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n  if (!mode) return false;\n\n  return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n  if (mode.variants && !mode.cachedVariants) {\n    mode.cachedVariants = mode.variants.map(function(variant) {\n      return inherit$1(mode, { variants: null }, variant);\n    });\n  }\n\n  // EXPAND\n  // if we have variants then essentially \"replace\" the mode with the variants\n  // this happens in compileMode, where this function is called from\n  if (mode.cachedVariants) {\n    return mode.cachedVariants;\n  }\n\n  // CLONE\n  // if we have dependencies on parents then we need a unique\n  // instance of ourselves, so we can be reused with many\n  // different parents without issue\n  if (dependencyOnParent(mode)) {\n    return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n  }\n\n  if (Object.isFrozen(mode)) {\n    return inherit$1(mode);\n  }\n\n  // no special dependency issues, just return ourselves\n  return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n  constructor(reason, html) {\n    super(reason);\n    this.name = \"HTMLInjectionError\";\n    this.html = html;\n  }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n  // Global internal variables used within the highlight.js library.\n  /** @type {Record<string, Language>} */\n  const languages = Object.create(null);\n  /** @type {Record<string, string>} */\n  const aliases = Object.create(null);\n  /** @type {HLJSPlugin[]} */\n  const plugins = [];\n\n  // safe/production mode - swallows more errors, tries to keep running\n  // even if a single syntax or parse hits a fatal error\n  let SAFE_MODE = true;\n  const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n  /** @type {Language} */\n  const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  /** @type HLJSOptions */\n  let options = {\n    ignoreUnescapedHTML: false,\n    throwUnescapedHTML: false,\n    noHighlightRe: /^(no-?highlight)$/i,\n    languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n    classPrefix: 'hljs-',\n    cssSelector: 'pre code',\n    languages: null,\n    // beta configuration options, subject to change, welcome to discuss\n    // https://github.com/highlightjs/highlight.js/issues/1086\n    __emitter: TokenTreeEmitter\n  };\n\n  /* Utility functions */\n\n  /**\n   * Tests a language name to see if highlighting should be skipped\n   * @param {string} languageName\n   */\n  function shouldNotHighlight(languageName) {\n    return options.noHighlightRe.test(languageName);\n  }\n\n  /**\n   * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n   */\n  function blockLanguage(block) {\n    let classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    const match = options.languageDetectRe.exec(classes);\n    if (match) {\n      const language = getLanguage(match[1]);\n      if (!language) {\n        warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n        warn(\"Falling back to no-highlight mode for this block.\", block);\n      }\n      return language ? match[1] : 'no-highlight';\n    }\n\n    return classes\n      .split(/\\s+/)\n      .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n  }\n\n  /**\n   * Core highlighting function.\n   *\n   * OLD API\n   * highlight(lang, code, ignoreIllegals, continuation)\n   *\n   * NEW API\n   * highlight(code, {lang, ignoreIllegals})\n   *\n   * @param {string} codeOrLanguageName - the language to use for highlighting\n   * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n   * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   *\n   * @returns {HighlightResult} Result - an object that represents the result\n   * @property {string} language - the language name\n   * @property {number} relevance - the relevance score\n   * @property {string} value - the highlighted HTML code\n   * @property {string} code - the original raw code\n   * @property {CompiledMode} top - top of the current mode stack\n   * @property {boolean} illegal - indicates whether any illegal matches were found\n  */\n  function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n    let code = \"\";\n    let languageName = \"\";\n    if (typeof optionsOrCode === \"object\") {\n      code = codeOrLanguageName;\n      ignoreIllegals = optionsOrCode.ignoreIllegals;\n      languageName = optionsOrCode.language;\n    } else {\n      // old API\n      deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n      deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n      languageName = codeOrLanguageName;\n      code = optionsOrCode;\n    }\n\n    // https://github.com/highlightjs/highlight.js/issues/3149\n    // eslint-disable-next-line no-undefined\n    if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n    /** @type {BeforeHighlightContext} */\n    const context = {\n      code,\n      language: languageName\n    };\n    // the plugin can change the desired language or the code to be highlighted\n    // just be changing the object it was passed\n    fire(\"before:highlight\", context);\n\n    // a before plugin can usurp the result completely by providing it's own\n    // in which case we don't even need to call highlight\n    const result = context.result\n      ? context.result\n      : _highlight(context.language, context.code, ignoreIllegals);\n\n    result.code = context.code;\n    // the plugin can change anything in result to suite it\n    fire(\"after:highlight\", result);\n\n    return result;\n  }\n\n  /**\n   * private highlight that's used internally and does not fire callbacks\n   *\n   * @param {string} languageName - the language to use for highlighting\n   * @param {string} codeToHighlight - the code to highlight\n   * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode?} [continuation] - current continuation mode, if any\n   * @returns {HighlightResult} - result of the highlight operation\n  */\n  function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n    const keywordHits = Object.create(null);\n\n    /**\n     * Return keyword data if a match is a keyword\n     * @param {CompiledMode} mode - current mode\n     * @param {string} matchText - the textual match\n     * @returns {KeywordData | false}\n     */\n    function keywordData(mode, matchText) {\n      return mode.keywords[matchText];\n    }\n\n    function processKeywords() {\n      if (!top.keywords) {\n        emitter.addText(modeBuffer);\n        return;\n      }\n\n      let lastIndex = 0;\n      top.keywordPatternRe.lastIndex = 0;\n      let match = top.keywordPatternRe.exec(modeBuffer);\n      let buf = \"\";\n\n      while (match) {\n        buf += modeBuffer.substring(lastIndex, match.index);\n        const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n        const data = keywordData(top, word);\n        if (data) {\n          const [kind, keywordRelevance] = data;\n          emitter.addText(buf);\n          buf = \"\";\n\n          keywordHits[word] = (keywordHits[word] || 0) + 1;\n          if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n          if (kind.startsWith(\"_\")) {\n            // _ implied for relevance only, do not highlight\n            // by applying a class name\n            buf += match[0];\n          } else {\n            const cssClass = language.classNameAliases[kind] || kind;\n            emitKeyword(match[0], cssClass);\n          }\n        } else {\n          buf += match[0];\n        }\n        lastIndex = top.keywordPatternRe.lastIndex;\n        match = top.keywordPatternRe.exec(modeBuffer);\n      }\n      buf += modeBuffer.substring(lastIndex);\n      emitter.addText(buf);\n    }\n\n    function processSubLanguage() {\n      if (modeBuffer === \"\") return;\n      /** @type HighlightResult */\n      let result = null;\n\n      if (typeof top.subLanguage === 'string') {\n        if (!languages[top.subLanguage]) {\n          emitter.addText(modeBuffer);\n          return;\n        }\n        result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n        continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n      } else {\n        result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n      }\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Use case in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      emitter.__addSublanguage(result._emitter, result.language);\n    }\n\n    function processBuffer() {\n      if (top.subLanguage != null) {\n        processSubLanguage();\n      } else {\n        processKeywords();\n      }\n      modeBuffer = '';\n    }\n\n    /**\n     * @param {string} text\n     * @param {string} scope\n     */\n    function emitKeyword(keyword, scope) {\n      if (keyword === \"\") return;\n\n      emitter.startScope(scope);\n      emitter.addText(keyword);\n      emitter.endScope();\n    }\n\n    /**\n     * @param {CompiledScope} scope\n     * @param {RegExpMatchArray} match\n     */\n    function emitMultiClass(scope, match) {\n      let i = 1;\n      const max = match.length - 1;\n      while (i <= max) {\n        if (!scope._emit[i]) { i++; continue; }\n        const klass = language.classNameAliases[scope[i]] || scope[i];\n        const text = match[i];\n        if (klass) {\n          emitKeyword(text, klass);\n        } else {\n          modeBuffer = text;\n          processKeywords();\n          modeBuffer = \"\";\n        }\n        i++;\n      }\n    }\n\n    /**\n     * @param {CompiledMode} mode - new mode to start\n     * @param {RegExpMatchArray} match\n     */\n    function startNewMode(mode, match) {\n      if (mode.scope && typeof mode.scope === \"string\") {\n        emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n      }\n      if (mode.beginScope) {\n        // beginScope just wraps the begin match itself in a scope\n        if (mode.beginScope._wrap) {\n          emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n          modeBuffer = \"\";\n        } else if (mode.beginScope._multi) {\n          // at this point modeBuffer should just be the match\n          emitMultiClass(mode.beginScope, match);\n          modeBuffer = \"\";\n        }\n      }\n\n      top = Object.create(mode, { parent: { value: top } });\n      return top;\n    }\n\n    /**\n     * @param {CompiledMode } mode - the mode to potentially end\n     * @param {RegExpMatchArray} match - the latest match\n     * @param {string} matchPlusRemainder - match plus remainder of content\n     * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n     */\n    function endOfMode(mode, match, matchPlusRemainder) {\n      let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n      if (matched) {\n        if (mode[\"on:end\"]) {\n          const resp = new Response(mode);\n          mode[\"on:end\"](match, resp);\n          if (resp.isMatchIgnored) matched = false;\n        }\n\n        if (matched) {\n          while (mode.endsParent && mode.parent) {\n            mode = mode.parent;\n          }\n          return mode;\n        }\n      }\n      // even if on:end fires an `ignore` it's still possible\n      // that we might trigger the end node because of a parent mode\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, match, matchPlusRemainder);\n      }\n    }\n\n    /**\n     * Handle matching but then ignoring a sequence of text\n     *\n     * @param {string} lexeme - string containing full match text\n     */\n    function doIgnore(lexeme) {\n      if (top.matcher.regexIndex === 0) {\n        // no more regexes to potentially match here, so we move the cursor forward one\n        // space\n        modeBuffer += lexeme[0];\n        return 1;\n      } else {\n        // no need to move the cursor, we still have additional regexes to try and\n        // match at this very spot\n        resumeScanAtSamePosition = true;\n        return 0;\n      }\n    }\n\n    /**\n     * Handle the start of a new potential mode match\n     *\n     * @param {EnhancedMatch} match - the current match\n     * @returns {number} how far to advance the parse cursor\n     */\n    function doBeginMatch(match) {\n      const lexeme = match[0];\n      const newMode = match.rule;\n\n      const resp = new Response(newMode);\n      // first internal before callbacks, then the public ones\n      const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n      for (const cb of beforeCallbacks) {\n        if (!cb) continue;\n        cb(match, resp);\n        if (resp.isMatchIgnored) return doIgnore(lexeme);\n      }\n\n      if (newMode.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (newMode.excludeBegin) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (!newMode.returnBegin && !newMode.excludeBegin) {\n          modeBuffer = lexeme;\n        }\n      }\n      startNewMode(newMode, match);\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    /**\n     * Handle the potential end of mode\n     *\n     * @param {RegExpMatchArray} match - the current match\n     */\n    function doEndMatch(match) {\n      const lexeme = match[0];\n      const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n      const endMode = endOfMode(top, match, matchPlusRemainder);\n      if (!endMode) { return NO_MATCH; }\n\n      const origin = top;\n      if (top.endScope && top.endScope._wrap) {\n        processBuffer();\n        emitKeyword(lexeme, top.endScope._wrap);\n      } else if (top.endScope && top.endScope._multi) {\n        processBuffer();\n        emitMultiClass(top.endScope, match);\n      } else if (origin.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (!(origin.returnEnd || origin.excludeEnd)) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (origin.excludeEnd) {\n          modeBuffer = lexeme;\n        }\n      }\n      do {\n        if (top.scope) {\n          emitter.closeNode();\n        }\n        if (!top.skip && !top.subLanguage) {\n          relevance += top.relevance;\n        }\n        top = top.parent;\n      } while (top !== endMode.parent);\n      if (endMode.starts) {\n        startNewMode(endMode.starts, match);\n      }\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    function processContinuations() {\n      const list = [];\n      for (let current = top; current !== language; current = current.parent) {\n        if (current.scope) {\n          list.unshift(current.scope);\n        }\n      }\n      list.forEach(item => emitter.openNode(item));\n    }\n\n    /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n    let lastMatch = {};\n\n    /**\n     *  Process an individual match\n     *\n     * @param {string} textBeforeMatch - text preceding the match (since the last match)\n     * @param {EnhancedMatch} [match] - the match itself\n     */\n    function processLexeme(textBeforeMatch, match) {\n      const lexeme = match && match[0];\n\n      // add non-matched text to the current mode buffer\n      modeBuffer += textBeforeMatch;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      // we've found a 0 width match and we're stuck, so we need to advance\n      // this happens when we have badly behaved rules that have optional matchers to the degree that\n      // sometimes they can end up matching nothing at all\n      // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n      if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n        // spit the \"skipped\" character that our regex choked on back into the output sequence\n        modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n        if (!SAFE_MODE) {\n          /** @type {AnnotatedError} */\n          const err = new Error(`0 width match regex (${languageName})`);\n          err.languageName = languageName;\n          err.badRule = lastMatch.rule;\n          throw err;\n        }\n        return 1;\n      }\n      lastMatch = match;\n\n      if (match.type === \"begin\") {\n        return doBeginMatch(match);\n      } else if (match.type === \"illegal\" && !ignoreIllegals) {\n        // illegal match, we do not continue processing\n        /** @type {AnnotatedError} */\n        const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n        err.mode = top;\n        throw err;\n      } else if (match.type === \"end\") {\n        const processed = doEndMatch(match);\n        if (processed !== NO_MATCH) {\n          return processed;\n        }\n      }\n\n      // edge case for when illegal matches $ (end of line) which is technically\n      // a 0 width match but not a begin/end match so it's not caught by the\n      // first handler (when ignoreIllegals is true)\n      if (match.type === \"illegal\" && lexeme === \"\") {\n        // advance so we aren't stuck in an infinite loop\n        modeBuffer += \"\\n\";\n        return 1;\n      }\n\n      // infinite loops are BAD, this is a last ditch catch all. if we have a\n      // decent number of iterations yet our index (cursor position in our\n      // parsing) still 3x behind our index then something is very wrong\n      // so we bail\n      if (iterations > 100000 && iterations > match.index * 3) {\n        const err = new Error('potential infinite loop, way more iterations than matches');\n        throw err;\n      }\n\n      /*\n      Why might be find ourselves here?  An potential end match that was\n      triggered but could not be completed.  IE, `doEndMatch` returned NO_MATCH.\n      (this could be because a callback requests the match be ignored, etc)\n\n      This causes no real harm other than stopping a few times too many.\n      */\n\n      modeBuffer += lexeme;\n      return lexeme.length;\n    }\n\n    const language = getLanguage(languageName);\n    if (!language) {\n      error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n      throw new Error('Unknown language: \"' + languageName + '\"');\n    }\n\n    const md = compileLanguage(language);\n    let result = '';\n    /** @type {CompiledMode} */\n    let top = continuation || md;\n    /** @type Record<string,CompiledMode> */\n    const continuations = {}; // keep continuations for sub-languages\n    const emitter = new options.__emitter(options);\n    processContinuations();\n    let modeBuffer = '';\n    let relevance = 0;\n    let index = 0;\n    let iterations = 0;\n    let resumeScanAtSamePosition = false;\n\n    try {\n      if (!language.__emitTokens) {\n        top.matcher.considerAll();\n\n        for (;;) {\n          iterations++;\n          if (resumeScanAtSamePosition) {\n            // only regexes not matched previously will now be\n            // considered for a potential match\n            resumeScanAtSamePosition = false;\n          } else {\n            top.matcher.considerAll();\n          }\n          top.matcher.lastIndex = index;\n\n          const match = top.matcher.exec(codeToHighlight);\n          // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n          if (!match) break;\n\n          const beforeMatch = codeToHighlight.substring(index, match.index);\n          const processedCount = processLexeme(beforeMatch, match);\n          index = match.index + processedCount;\n        }\n        processLexeme(codeToHighlight.substring(index));\n      } else {\n        language.__emitTokens(codeToHighlight, emitter);\n      }\n\n      emitter.finalize();\n      result = emitter.toHTML();\n\n      return {\n        language: languageName,\n        value: result,\n        relevance,\n        illegal: false,\n        _emitter: emitter,\n        _top: top\n      };\n    } catch (err) {\n      if (err.message && err.message.includes('Illegal')) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: true,\n          relevance: 0,\n          _illegalBy: {\n            message: err.message,\n            index,\n            context: codeToHighlight.slice(index - 100, index + 100),\n            mode: err.mode,\n            resultSoFar: result\n          },\n          _emitter: emitter\n        };\n      } else if (SAFE_MODE) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: false,\n          relevance: 0,\n          errorRaised: err,\n          _emitter: emitter,\n          _top: top\n        };\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  /**\n   * returns a valid highlight result, without actually doing any actual work,\n   * auto highlight starts with this and it's possible for small snippets that\n   * auto-detection may not find a better match\n   * @param {string} code\n   * @returns {HighlightResult}\n   */\n  function justTextHighlightResult(code) {\n    const result = {\n      value: escape(code),\n      illegal: false,\n      relevance: 0,\n      _top: PLAINTEXT_LANGUAGE,\n      _emitter: new options.__emitter(options)\n    };\n    result._emitter.addText(code);\n    return result;\n  }\n\n  /**\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - secondBest (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n    @param {string} code\n    @param {Array<string>} [languageSubset]\n    @returns {AutoHighlightResult}\n  */\n  function highlightAuto(code, languageSubset) {\n    languageSubset = languageSubset || options.languages || Object.keys(languages);\n    const plaintext = justTextHighlightResult(code);\n\n    const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n      _highlight(name, code, false)\n    );\n    results.unshift(plaintext); // plaintext is always an option\n\n    const sorted = results.sort((a, b) => {\n      // sort base on relevance\n      if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n      // always award the tie to the base language\n      // ie if C++ and Arduino are tied, it's more likely to be C++\n      if (a.language && b.language) {\n        if (getLanguage(a.language).supersetOf === b.language) {\n          return 1;\n        } else if (getLanguage(b.language).supersetOf === a.language) {\n          return -1;\n        }\n      }\n\n      // otherwise say they are equal, which has the effect of sorting on\n      // relevance while preserving the original ordering - which is how ties\n      // have historically been settled, ie the language that comes first always\n      // wins in the case of a tie\n      return 0;\n    });\n\n    const [best, secondBest] = sorted;\n\n    /** @type {AutoHighlightResult} */\n    const result = best;\n    result.secondBest = secondBest;\n\n    return result;\n  }\n\n  /**\n   * Builds new class name for block given the language name\n   *\n   * @param {HTMLElement} element\n   * @param {string} [currentLang]\n   * @param {string} [resultLang]\n   */\n  function updateClassName(element, currentLang, resultLang) {\n    const language = (currentLang && aliases[currentLang]) || resultLang;\n\n    element.classList.add(\"hljs\");\n    element.classList.add(`language-${language}`);\n  }\n\n  /**\n   * Applies highlighting to a DOM node containing code.\n   *\n   * @param {HighlightedHTMLElement} element - the HTML element to highlight\n  */\n  function highlightElement(element) {\n    /** @type HTMLElement */\n    let node = null;\n    const language = blockLanguage(element);\n\n    if (shouldNotHighlight(language)) return;\n\n    fire(\"before:highlightElement\",\n      { el: element, language });\n\n    if (element.dataset.highlighted) {\n      console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n      return;\n    }\n\n    // we should be all text, no child nodes (unescaped HTML) - this is possibly\n    // an HTML injection attack - it's likely too late if this is already in\n    // production (the code has likely already done its damage by the time\n    // we're seeing it)... but we yell loudly about this so that hopefully it's\n    // more likely to be caught in development before making it to production\n    if (element.children.length > 0) {\n      if (!options.ignoreUnescapedHTML) {\n        console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n        console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n        console.warn(\"The element with unescaped HTML:\");\n        console.warn(element);\n      }\n      if (options.throwUnescapedHTML) {\n        const err = new HTMLInjectionError(\n          \"One of your code blocks includes unescaped HTML.\",\n          element.innerHTML\n        );\n        throw err;\n      }\n    }\n\n    node = element;\n    const text = node.textContent;\n    const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n    element.innerHTML = result.value;\n    element.dataset.highlighted = \"yes\";\n    updateClassName(element, language, result.language);\n    element.result = {\n      language: result.language,\n      // TODO: remove with version 11.0\n      re: result.relevance,\n      relevance: result.relevance\n    };\n    if (result.secondBest) {\n      element.secondBest = {\n        language: result.secondBest.language,\n        relevance: result.secondBest.relevance\n      };\n    }\n\n    fire(\"after:highlightElement\", { el: element, result, text });\n  }\n\n  /**\n   * Updates highlight.js global options with the passed options\n   *\n   * @param {Partial<HLJSOptions>} userOptions\n   */\n  function configure(userOptions) {\n    options = inherit(options, userOptions);\n  }\n\n  // TODO: remove v12, deprecated\n  const initHighlighting = () => {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlighting() deprecated.  Use highlightAll() now.\");\n  };\n\n  // TODO: remove v12, deprecated\n  function initHighlightingOnLoad() {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated.  Use highlightAll() now.\");\n  }\n\n  let wantsHighlight = false;\n\n  /**\n   * auto-highlights all pre>code elements on the page\n   */\n  function highlightAll() {\n    function boot() {\n      // if a highlight was requested before DOM was loaded, do now\n      highlightAll();\n    }\n\n    // if we are called too early in the loading process\n    if (document.readyState === \"loading\") {\n      // make sure the event listener is only added once\n      if (!wantsHighlight) {\n        window.addEventListener('DOMContentLoaded', boot, false);\n      }\n      wantsHighlight = true;\n      return;\n    }\n\n    const blocks = document.querySelectorAll(options.cssSelector);\n    blocks.forEach(highlightElement);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    let lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error$1) {\n      error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * Remove a language grammar module\n   *\n   * @param {string} languageName\n   */\n  function unregisterLanguage(languageName) {\n    delete languages[languageName];\n    for (const alias of Object.keys(aliases)) {\n      if (aliases[alias] === languageName) {\n        delete aliases[alias];\n      }\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    const lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * Upgrades the old highlightBlock plugins to the new\n   * highlightElement API\n   * @param {HLJSPlugin} plugin\n   */\n  function upgradePluginAPI(plugin) {\n    // TODO: remove with v12\n    if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n      plugin[\"before:highlightElement\"] = (data) => {\n        plugin[\"before:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n    if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n      plugin[\"after:highlightElement\"] = (data) => {\n        plugin[\"after:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    upgradePluginAPI(plugin);\n    plugins.push(plugin);\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function removePlugin(plugin) {\n    const index = plugins.indexOf(plugin);\n    if (index !== -1) {\n      plugins.splice(index, 1);\n    }\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    const cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /**\n   * DEPRECATED\n   * @param {HighlightedHTMLElement} el\n   */\n  function deprecateHighlightBlock(el) {\n    deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n    deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n    return highlightElement(el);\n  }\n\n  /* Interface definition */\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    highlightAll,\n    highlightElement,\n    // TODO: Remove with v12 API\n    highlightBlock: deprecateHighlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    unregisterLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    autoDetection,\n    inherit,\n    addPlugin,\n    removePlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  hljs.regex = {\n    concat: concat,\n    lookahead: lookahead,\n    either: either,\n    optional: optional,\n    anyNumberOfTimes: anyNumberOfTimes\n  };\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreeze(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexes into our main object\n  Object.assign(hljs, MODES);\n\n  return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","/**\n * marked v13.0.3 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n    return {\n        async: false,\n        breaks: false,\n        extensions: null,\n        gfm: true,\n        hooks: null,\n        pedantic: false,\n        renderer: null,\n        silent: false,\n        tokenizer: null,\n        walkTokens: null,\n    };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n    _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n    if (encode) {\n        if (escapeTest.test(html)) {\n            return html.replace(escapeReplace, getEscapeReplacement);\n        }\n    }\n    else {\n        if (escapeTestNoEncode.test(html)) {\n            return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n        }\n    }\n    return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(unescapeTest, (_, n) => {\n        n = n.toLowerCase();\n        if (n === 'colon')\n            return ':';\n        if (n.charAt(0) === '#') {\n            return n.charAt(1) === 'x'\n                ? String.fromCharCode(parseInt(n.substring(2), 16))\n                : String.fromCharCode(+n.substring(1));\n        }\n        return '';\n    });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n    let source = typeof regex === 'string' ? regex : regex.source;\n    opt = opt || '';\n    const obj = {\n        replace: (name, val) => {\n            let valSource = typeof val === 'string' ? val : val.source;\n            valSource = valSource.replace(caret, '$1');\n            source = source.replace(name, valSource);\n            return obj;\n        },\n        getRegex: () => {\n            return new RegExp(source, opt);\n        },\n    };\n    return obj;\n}\nfunction cleanUrl(href) {\n    try {\n        href = encodeURI(href).replace(/%25/g, '%');\n    }\n    catch {\n        return null;\n    }\n    return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n        let escaped = false;\n        let curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\')\n            escaped = !escaped;\n        if (escaped) {\n            // odd number of slashes means | is escaped\n            // so we leave it alone\n            return '|';\n        }\n        else {\n            // add space before unescaped |\n            return ' |';\n        }\n    }), cells = row.split(/ \\|/);\n    let i = 0;\n    // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n    if (!cells[0].trim()) {\n        cells.shift();\n    }\n    if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n        cells.pop();\n    }\n    if (count) {\n        if (cells.length > count) {\n            cells.splice(count);\n        }\n        else {\n            while (cells.length < count)\n                cells.push('');\n        }\n    }\n    for (; i < cells.length; i++) {\n        // leading or trailing whitespace is ignored per the gfm spec\n        cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n    }\n    return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n    const l = str.length;\n    if (l === 0) {\n        return '';\n    }\n    // Length of suffix matching the invert condition.\n    let suffLen = 0;\n    // Step left until we fail to match the invert condition.\n    while (suffLen < l) {\n        const currChar = str.charAt(l - suffLen - 1);\n        if (currChar === c && !invert) {\n            suffLen++;\n        }\n        else if (currChar !== c && invert) {\n            suffLen++;\n        }\n        else {\n            break;\n        }\n    }\n    return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n        return -1;\n    }\n    let level = 0;\n    for (let i = 0; i < str.length; i++) {\n        if (str[i] === '\\\\') {\n            i++;\n        }\n        else if (str[i] === b[0]) {\n            level++;\n        }\n        else if (str[i] === b[1]) {\n            level--;\n            if (level < 0) {\n                return i;\n            }\n        }\n    }\n    return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n    const href = link.href;\n    const title = link.title ? escape$1(link.title) : null;\n    const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n    if (cap[0].charAt(0) !== '!') {\n        lexer.state.inLink = true;\n        const token = {\n            type: 'link',\n            raw,\n            href,\n            title,\n            text,\n            tokens: lexer.inlineTokens(text),\n        };\n        lexer.state.inLink = false;\n        return token;\n    }\n    return {\n        type: 'image',\n        raw,\n        href,\n        title,\n        text: escape$1(text),\n    };\n}\nfunction indentCodeCompensation(raw, text) {\n    const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n    if (matchIndentToCode === null) {\n        return text;\n    }\n    const indentToCode = matchIndentToCode[1];\n    return text\n        .split('\\n')\n        .map(node => {\n        const matchIndentInNode = node.match(/^\\s+/);\n        if (matchIndentInNode === null) {\n            return node;\n        }\n        const [indentInNode] = matchIndentInNode;\n        if (indentInNode.length >= indentToCode.length) {\n            return node.slice(indentToCode.length);\n        }\n        return node;\n    })\n        .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n    options;\n    rules; // set by the lexer\n    lexer; // set by the lexer\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(src) {\n        const cap = this.rules.block.newline.exec(src);\n        if (cap && cap[0].length > 0) {\n            return {\n                type: 'space',\n                raw: cap[0],\n            };\n        }\n    }\n    code(src) {\n        const cap = this.rules.block.code.exec(src);\n        if (cap) {\n            const text = cap[0].replace(/^ {1,4}/gm, '');\n            return {\n                type: 'code',\n                raw: cap[0],\n                codeBlockStyle: 'indented',\n                text: !this.options.pedantic\n                    ? rtrim(text, '\\n')\n                    : text,\n            };\n        }\n    }\n    fences(src) {\n        const cap = this.rules.block.fences.exec(src);\n        if (cap) {\n            const raw = cap[0];\n            const text = indentCodeCompensation(raw, cap[3] || '');\n            return {\n                type: 'code',\n                raw,\n                lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n                text,\n            };\n        }\n    }\n    heading(src) {\n        const cap = this.rules.block.heading.exec(src);\n        if (cap) {\n            let text = cap[2].trim();\n            // remove trailing #s\n            if (/#$/.test(text)) {\n                const trimmed = rtrim(text, '#');\n                if (this.options.pedantic) {\n                    text = trimmed.trim();\n                }\n                else if (!trimmed || / $/.test(trimmed)) {\n                    // CommonMark requires space before trailing #s\n                    text = trimmed.trim();\n                }\n            }\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[1].length,\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    hr(src) {\n        const cap = this.rules.block.hr.exec(src);\n        if (cap) {\n            return {\n                type: 'hr',\n                raw: rtrim(cap[0], '\\n'),\n            };\n        }\n    }\n    blockquote(src) {\n        const cap = this.rules.block.blockquote.exec(src);\n        if (cap) {\n            let lines = rtrim(cap[0], '\\n').split('\\n');\n            let raw = '';\n            let text = '';\n            const tokens = [];\n            while (lines.length > 0) {\n                let inBlockquote = false;\n                const currentLines = [];\n                let i;\n                for (i = 0; i < lines.length; i++) {\n                    // get lines up to a continuation\n                    if (/^ {0,3}>/.test(lines[i])) {\n                        currentLines.push(lines[i]);\n                        inBlockquote = true;\n                    }\n                    else if (!inBlockquote) {\n                        currentLines.push(lines[i]);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                lines = lines.slice(i);\n                const currentRaw = currentLines.join('\\n');\n                const currentText = currentRaw\n                    // precede setext continuation with 4 spaces so it isn't a setext\n                    .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n    $1')\n                    .replace(/^ {0,3}>[ \\t]?/gm, '');\n                raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n                text = text ? `${text}\\n${currentText}` : currentText;\n                // parse blockquote lines as top level tokens\n                // merge paragraphs if this is a continuation\n                const top = this.lexer.state.top;\n                this.lexer.state.top = true;\n                this.lexer.blockTokens(currentText, tokens, true);\n                this.lexer.state.top = top;\n                // if there is no continuation then we are done\n                if (lines.length === 0) {\n                    break;\n                }\n                const lastToken = tokens[tokens.length - 1];\n                if (lastToken?.type === 'code') {\n                    // blockquote continuation cannot be preceded by a code block\n                    break;\n                }\n                else if (lastToken?.type === 'blockquote') {\n                    // include continuation in nested blockquote\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.blockquote(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n                    break;\n                }\n                else if (lastToken?.type === 'list') {\n                    // include continuation in nested list\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.list(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n                    lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n                    continue;\n                }\n            }\n            return {\n                type: 'blockquote',\n                raw,\n                tokens,\n                text,\n            };\n        }\n    }\n    list(src) {\n        let cap = this.rules.block.list.exec(src);\n        if (cap) {\n            let bull = cap[1].trim();\n            const isordered = bull.length > 1;\n            const list = {\n                type: 'list',\n                raw: '',\n                ordered: isordered,\n                start: isordered ? +bull.slice(0, -1) : '',\n                loose: false,\n                items: [],\n            };\n            bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n            if (this.options.pedantic) {\n                bull = isordered ? bull : '[*+-]';\n            }\n            // Get next list item\n            const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n            let endsWithBlankLine = false;\n            // Check if current bullet point can start a new List Item\n            while (src) {\n                let endEarly = false;\n                let raw = '';\n                let itemContents = '';\n                if (!(cap = itemRegex.exec(src))) {\n                    break;\n                }\n                if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n                    break;\n                }\n                raw = cap[0];\n                src = src.substring(raw.length);\n                let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n                let nextLine = src.split('\\n', 1)[0];\n                let blankLine = !line.trim();\n                let indent = 0;\n                if (this.options.pedantic) {\n                    indent = 2;\n                    itemContents = line.trimStart();\n                }\n                else if (blankLine) {\n                    indent = cap[1].length + 1;\n                }\n                else {\n                    indent = cap[2].search(/[^ ]/); // Find first non-space char\n                    indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n                    itemContents = line.slice(indent);\n                    indent += cap[1].length;\n                }\n                if (blankLine && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n                    raw += nextLine + '\\n';\n                    src = src.substring(nextLine.length + 1);\n                    endEarly = true;\n                }\n                if (!endEarly) {\n                    const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n                    const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n                    const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n                    const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n                    // Check if following lines should be included in List Item\n                    while (src) {\n                        const rawLine = src.split('\\n', 1)[0];\n                        nextLine = rawLine;\n                        // Re-align to follow commonmark nesting rules\n                        if (this.options.pedantic) {\n                            nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n                        }\n                        // End list item if found code fences\n                        if (fencesBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new heading\n                        if (headingBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new bullet\n                        if (nextBulletRegex.test(nextLine)) {\n                            break;\n                        }\n                        // Horizontal rule found\n                        if (hrRegex.test(src)) {\n                            break;\n                        }\n                        if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n                            itemContents += '\\n' + nextLine.slice(indent);\n                        }\n                        else {\n                            // not enough indentation\n                            if (blankLine) {\n                                break;\n                            }\n                            // paragraph continuation unless last line was a different block level element\n                            if (line.search(/[^ ]/) >= 4) { // indented code block\n                                break;\n                            }\n                            if (fencesBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (headingBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (hrRegex.test(line)) {\n                                break;\n                            }\n                            itemContents += '\\n' + nextLine;\n                        }\n                        if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n                            blankLine = true;\n                        }\n                        raw += rawLine + '\\n';\n                        src = src.substring(rawLine.length + 1);\n                        line = nextLine.slice(indent);\n                    }\n                }\n                if (!list.loose) {\n                    // If the previous item ended with a blank line, the list is loose\n                    if (endsWithBlankLine) {\n                        list.loose = true;\n                    }\n                    else if (/\\n *\\n *$/.test(raw)) {\n                        endsWithBlankLine = true;\n                    }\n                }\n                let istask = null;\n                let ischecked;\n                // Check for task list items\n                if (this.options.gfm) {\n                    istask = /^\\[[ xX]\\] /.exec(itemContents);\n                    if (istask) {\n                        ischecked = istask[0] !== '[ ] ';\n                        itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n                    }\n                }\n                list.items.push({\n                    type: 'list_item',\n                    raw,\n                    task: !!istask,\n                    checked: ischecked,\n                    loose: false,\n                    text: itemContents,\n                    tokens: [],\n                });\n                list.raw += raw;\n            }\n            // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n            list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n            list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n            list.raw = list.raw.trimEnd();\n            // Item child tokens handled here at end because we needed to have the final item to trim it first\n            for (let i = 0; i < list.items.length; i++) {\n                this.lexer.state.top = false;\n                list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n                if (!list.loose) {\n                    // Check if list should be loose\n                    const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n                    const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n                    list.loose = hasMultipleLineBreaks;\n                }\n            }\n            // Set all items to loose if list is loose\n            if (list.loose) {\n                for (let i = 0; i < list.items.length; i++) {\n                    list.items[i].loose = true;\n                }\n            }\n            return list;\n        }\n    }\n    html(src) {\n        const cap = this.rules.block.html.exec(src);\n        if (cap) {\n            const token = {\n                type: 'html',\n                block: true,\n                raw: cap[0],\n                pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n                text: cap[0],\n            };\n            return token;\n        }\n    }\n    def(src) {\n        const cap = this.rules.block.def.exec(src);\n        if (cap) {\n            const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n            const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n            const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n            return {\n                type: 'def',\n                tag,\n                raw: cap[0],\n                href,\n                title,\n            };\n        }\n    }\n    table(src) {\n        const cap = this.rules.block.table.exec(src);\n        if (!cap) {\n            return;\n        }\n        if (!/[:|]/.test(cap[2])) {\n            // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n            return;\n        }\n        const headers = splitCells(cap[1]);\n        const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n        const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n        const item = {\n            type: 'table',\n            raw: cap[0],\n            header: [],\n            align: [],\n            rows: [],\n        };\n        if (headers.length !== aligns.length) {\n            // header and align columns must be equal, rows can be different.\n            return;\n        }\n        for (const align of aligns) {\n            if (/^ *-+: *$/.test(align)) {\n                item.align.push('right');\n            }\n            else if (/^ *:-+: *$/.test(align)) {\n                item.align.push('center');\n            }\n            else if (/^ *:-+ *$/.test(align)) {\n                item.align.push('left');\n            }\n            else {\n                item.align.push(null);\n            }\n        }\n        for (let i = 0; i < headers.length; i++) {\n            item.header.push({\n                text: headers[i],\n                tokens: this.lexer.inline(headers[i]),\n                header: true,\n                align: item.align[i],\n            });\n        }\n        for (const row of rows) {\n            item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n                return {\n                    text: cell,\n                    tokens: this.lexer.inline(cell),\n                    header: false,\n                    align: item.align[i],\n                };\n            }));\n        }\n        return item;\n    }\n    lheading(src) {\n        const cap = this.rules.block.lheading.exec(src);\n        if (cap) {\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[2].charAt(0) === '=' ? 1 : 2,\n                text: cap[1],\n                tokens: this.lexer.inline(cap[1]),\n            };\n        }\n    }\n    paragraph(src) {\n        const cap = this.rules.block.paragraph.exec(src);\n        if (cap) {\n            const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n                ? cap[1].slice(0, -1)\n                : cap[1];\n            return {\n                type: 'paragraph',\n                raw: cap[0],\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    text(src) {\n        const cap = this.rules.block.text.exec(src);\n        if (cap) {\n            return {\n                type: 'text',\n                raw: cap[0],\n                text: cap[0],\n                tokens: this.lexer.inline(cap[0]),\n            };\n        }\n    }\n    escape(src) {\n        const cap = this.rules.inline.escape.exec(src);\n        if (cap) {\n            return {\n                type: 'escape',\n                raw: cap[0],\n                text: escape$1(cap[1]),\n            };\n        }\n    }\n    tag(src) {\n        const cap = this.rules.inline.tag.exec(src);\n        if (cap) {\n            if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n                this.lexer.state.inLink = true;\n            }\n            else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n                this.lexer.state.inLink = false;\n            }\n            if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = true;\n            }\n            else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = false;\n            }\n            return {\n                type: 'html',\n                raw: cap[0],\n                inLink: this.lexer.state.inLink,\n                inRawBlock: this.lexer.state.inRawBlock,\n                block: false,\n                text: cap[0],\n            };\n        }\n    }\n    link(src) {\n        const cap = this.rules.inline.link.exec(src);\n        if (cap) {\n            const trimmedUrl = cap[2].trim();\n            if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n                // commonmark requires matching angle brackets\n                if (!(/>$/.test(trimmedUrl))) {\n                    return;\n                }\n                // ending angle bracket cannot be escaped\n                const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n                if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n                    return;\n                }\n            }\n            else {\n                // find closing parenthesis\n                const lastParenIndex = findClosingBracket(cap[2], '()');\n                if (lastParenIndex > -1) {\n                    const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n                    const linkLen = start + cap[1].length + lastParenIndex;\n                    cap[2] = cap[2].substring(0, lastParenIndex);\n                    cap[0] = cap[0].substring(0, linkLen).trim();\n                    cap[3] = '';\n                }\n            }\n            let href = cap[2];\n            let title = '';\n            if (this.options.pedantic) {\n                // split pedantic href and title\n                const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n                if (link) {\n                    href = link[1];\n                    title = link[3];\n                }\n            }\n            else {\n                title = cap[3] ? cap[3].slice(1, -1) : '';\n            }\n            href = href.trim();\n            if (/^</.test(href)) {\n                if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n                    // pedantic allows starting angle bracket without ending angle bracket\n                    href = href.slice(1);\n                }\n                else {\n                    href = href.slice(1, -1);\n                }\n            }\n            return outputLink(cap, {\n                href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n                title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n            }, cap[0], this.lexer);\n        }\n    }\n    reflink(src, links) {\n        let cap;\n        if ((cap = this.rules.inline.reflink.exec(src))\n            || (cap = this.rules.inline.nolink.exec(src))) {\n            const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n            const link = links[linkString.toLowerCase()];\n            if (!link) {\n                const text = cap[0].charAt(0);\n                return {\n                    type: 'text',\n                    raw: text,\n                    text,\n                };\n            }\n            return outputLink(cap, link, cap[0], this.lexer);\n        }\n    }\n    emStrong(src, maskedSrc, prevChar = '') {\n        let match = this.rules.inline.emStrongLDelim.exec(src);\n        if (!match)\n            return;\n        // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n        if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n            return;\n        const nextChar = match[1] || match[2] || '';\n        if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n            // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n            const lLength = [...match[0]].length - 1;\n            let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n            const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n            endReg.lastIndex = 0;\n            // Clip maskedSrc to same section of string as src (move to lexer?)\n            maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n            while ((match = endReg.exec(maskedSrc)) != null) {\n                rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n                if (!rDelim)\n                    continue; // skip single * in __abc*abc__\n                rLength = [...rDelim].length;\n                if (match[3] || match[4]) { // found another Left Delim\n                    delimTotal += rLength;\n                    continue;\n                }\n                else if (match[5] || match[6]) { // either Left or Right Delim\n                    if (lLength % 3 && !((lLength + rLength) % 3)) {\n                        midDelimTotal += rLength;\n                        continue; // CommonMark Emphasis Rules 9-10\n                    }\n                }\n                delimTotal -= rLength;\n                if (delimTotal > 0)\n                    continue; // Haven't found enough closing delimiters\n                // Remove extra characters. *a*** -> *a*\n                rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n                // char length can be >1 for unicode characters;\n                const lastCharLength = [...match[0]][0].length;\n                const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n                // Create `em` if smallest delimiter has odd char count. *a***\n                if (Math.min(lLength, rLength) % 2) {\n                    const text = raw.slice(1, -1);\n                    return {\n                        type: 'em',\n                        raw,\n                        text,\n                        tokens: this.lexer.inlineTokens(text),\n                    };\n                }\n                // Create 'strong' if smallest delimiter has even char count. **a***\n                const text = raw.slice(2, -2);\n                return {\n                    type: 'strong',\n                    raw,\n                    text,\n                    tokens: this.lexer.inlineTokens(text),\n                };\n            }\n        }\n    }\n    codespan(src) {\n        const cap = this.rules.inline.code.exec(src);\n        if (cap) {\n            let text = cap[2].replace(/\\n/g, ' ');\n            const hasNonSpaceChars = /[^ ]/.test(text);\n            const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n            if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n                text = text.substring(1, text.length - 1);\n            }\n            text = escape$1(text, true);\n            return {\n                type: 'codespan',\n                raw: cap[0],\n                text,\n            };\n        }\n    }\n    br(src) {\n        const cap = this.rules.inline.br.exec(src);\n        if (cap) {\n            return {\n                type: 'br',\n                raw: cap[0],\n            };\n        }\n    }\n    del(src) {\n        const cap = this.rules.inline.del.exec(src);\n        if (cap) {\n            return {\n                type: 'del',\n                raw: cap[0],\n                text: cap[2],\n                tokens: this.lexer.inlineTokens(cap[2]),\n            };\n        }\n    }\n    autolink(src) {\n        const cap = this.rules.inline.autolink.exec(src);\n        if (cap) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[1]);\n                href = 'mailto:' + text;\n            }\n            else {\n                text = escape$1(cap[1]);\n                href = text;\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    url(src) {\n        let cap;\n        if (cap = this.rules.inline.url.exec(src)) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[0]);\n                href = 'mailto:' + text;\n            }\n            else {\n                // do extended autolink path validation\n                let prevCapZero;\n                do {\n                    prevCapZero = cap[0];\n                    cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n                } while (prevCapZero !== cap[0]);\n                text = escape$1(cap[0]);\n                if (cap[1] === 'www.') {\n                    href = 'http://' + cap[0];\n                }\n                else {\n                    href = cap[0];\n                }\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    inlineText(src) {\n        const cap = this.rules.inline.text.exec(src);\n        if (cap) {\n            let text;\n            if (this.lexer.state.inRawBlock) {\n                text = cap[0];\n            }\n            else {\n                text = escape$1(cap[0]);\n            }\n            return {\n                type: 'text',\n                raw: cap[0],\n                text,\n            };\n        }\n    }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n    .replace(/bull/g, bullet) // lists can interrupt\n    .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n    .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n    .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n    .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n    .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n    .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n    .replace('label', _blockLabel)\n    .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n    .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n    .replace(/bull/g, bullet)\n    .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n    + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n    + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n    + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n    + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n    + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')', 'i')\n    .replace('comment', _comment)\n    .replace('tag', _tag)\n    .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst paragraph = edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n    .replace('|table', '')\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n    .replace('paragraph', paragraph)\n    .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n    blockquote,\n    code: blockCode,\n    def,\n    fences,\n    heading,\n    hr,\n    html,\n    lheading,\n    list,\n    newline,\n    paragraph,\n    table: noopTest,\n    text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n    + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('blockquote', ' {0,3}>')\n    .replace('code', ' {4}[^\\\\n]')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockGfm = {\n    ...blockNormal,\n    table: gfmTable,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n        .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n        .replace('table', gfmTable) // interrupt paragraphs with table\n        .replace('blockquote', ' {0,3}>')\n        .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n        .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n        .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n        .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n        .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n    ...blockNormal,\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n        + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n        + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n        .replace('comment', _comment)\n        .replace(/tag/g, '(?!(?:'\n        + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n        + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n        + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n        .getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest, // fences not supported\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' *#{1,6} *[^\\n]')\n        .replace('lheading', lheading)\n        .replace('|table', '')\n        .replace('blockquote', ' {0,3}>')\n        .replace('|fences', '')\n        .replace('|list', '')\n        .replace('|html', '')\n        .replace('|tag', '')\n        .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n    .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n    + '|[^*]+(?=[^*])' // Consume to delim\n    + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n    + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n    + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n    + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n    + '|[^_]+(?=[^_])' // Consume to delim\n    + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n    + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n    + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n    + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n    + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n    .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n    .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n    .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n    .replace('comment', _inlineComment)\n    .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n    .replace('label', _inlineLabel)\n    .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n    .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n    .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n    .replace('label', _inlineLabel)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n    .replace('reflink', reflink)\n    .replace('nolink', nolink)\n    .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n    _backpedal: noopTest, // only used for GFM url\n    anyPunctuation,\n    autolink,\n    blockSkip,\n    br,\n    code: inlineCode,\n    del: noopTest,\n    emStrongLDelim,\n    emStrongRDelimAst,\n    emStrongRDelimUnd,\n    escape,\n    link,\n    nolink,\n    punctuation,\n    reflink,\n    reflinkSearch,\n    tag,\n    text: inlineText,\n    url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n    ...inlineNormal,\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n    ...inlineNormal,\n    escape: edit(escape).replace('])', '~|])').getRegex(),\n    url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n        .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n        .getRegex(),\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/,\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n    ...inlineGfm,\n    br: edit(br).replace('{2,}', '*').getRegex(),\n    text: edit(inlineGfm.text)\n        .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n        .replace(/\\{2,\\}/g, '*')\n        .getRegex(),\n};\n/**\n * exports\n */\nconst block = {\n    normal: blockNormal,\n    gfm: blockGfm,\n    pedantic: blockPedantic,\n};\nconst inline = {\n    normal: inlineNormal,\n    gfm: inlineGfm,\n    breaks: inlineBreaks,\n    pedantic: inlinePedantic,\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n    tokens;\n    options;\n    state;\n    tokenizer;\n    inlineQueue;\n    constructor(options) {\n        // TokenList cannot be created in one go\n        this.tokens = [];\n        this.tokens.links = Object.create(null);\n        this.options = options || _defaults;\n        this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n        this.tokenizer = this.options.tokenizer;\n        this.tokenizer.options = this.options;\n        this.tokenizer.lexer = this;\n        this.inlineQueue = [];\n        this.state = {\n            inLink: false,\n            inRawBlock: false,\n            top: true,\n        };\n        const rules = {\n            block: block.normal,\n            inline: inline.normal,\n        };\n        if (this.options.pedantic) {\n            rules.block = block.pedantic;\n            rules.inline = inline.pedantic;\n        }\n        else if (this.options.gfm) {\n            rules.block = block.gfm;\n            if (this.options.breaks) {\n                rules.inline = inline.breaks;\n            }\n            else {\n                rules.inline = inline.gfm;\n            }\n        }\n        this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n    static get rules() {\n        return {\n            block,\n            inline,\n        };\n    }\n    /**\n     * Static Lex Method\n     */\n    static lex(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    static lexInline(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    lex(src) {\n        src = src\n            .replace(/\\r\\n|\\r/g, '\\n');\n        this.blockTokens(src, this.tokens);\n        for (let i = 0; i < this.inlineQueue.length; i++) {\n            const next = this.inlineQueue[i];\n            this.inlineTokens(next.src, next.tokens);\n        }\n        this.inlineQueue = [];\n        return this.tokens;\n    }\n    blockTokens(src, tokens = [], lastParagraphClipped = false) {\n        if (this.options.pedantic) {\n            src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n        }\n        else {\n            src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n                return leading + '    '.repeat(tabs.length);\n            });\n        }\n        let token;\n        let lastToken;\n        let cutSrc;\n        while (src) {\n            if (this.options.extensions\n                && this.options.extensions.block\n                && this.options.extensions.block.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // newline\n            if (token = this.tokenizer.space(src)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.length === 1 && tokens.length > 0) {\n                    // if there's a single \\n as a spacer, it's terminating the last line,\n                    // so move it there so that we don't get unnecessary paragraph tags\n                    tokens[tokens.length - 1].raw += '\\n';\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.code(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                // An indented code block cannot interrupt a paragraph.\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // fences\n            if (token = this.tokenizer.fences(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // heading\n            if (token = this.tokenizer.heading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // hr\n            if (token = this.tokenizer.hr(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // blockquote\n            if (token = this.tokenizer.blockquote(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // list\n            if (token = this.tokenizer.list(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // html\n            if (token = this.tokenizer.html(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // def\n            if (token = this.tokenizer.def(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.raw;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else if (!this.tokens.links[token.tag]) {\n                    this.tokens.links[token.tag] = {\n                        href: token.href,\n                        title: token.title,\n                    };\n                }\n                continue;\n            }\n            // table (gfm)\n            if (token = this.tokenizer.table(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // lheading\n            if (token = this.tokenizer.lheading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // top-level paragraph\n            // prevent paragraph consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startBlock) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startBlock.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n                lastToken = tokens[tokens.length - 1];\n                if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                lastParagraphClipped = (cutSrc.length !== src.length);\n                src = src.substring(token.raw.length);\n                continue;\n            }\n            // text\n            if (token = this.tokenizer.text(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        this.state.top = true;\n        return tokens;\n    }\n    inline(src, tokens = []) {\n        this.inlineQueue.push({ src, tokens });\n        return tokens;\n    }\n    /**\n     * Lexing/Compiling\n     */\n    inlineTokens(src, tokens = []) {\n        let token, lastToken, cutSrc;\n        // String with links masked to avoid interference with em and strong\n        let maskedSrc = src;\n        let match;\n        let keepPrevChar, prevChar;\n        // Mask out reflinks\n        if (this.tokens.links) {\n            const links = Object.keys(this.tokens.links);\n            if (links.length > 0) {\n                while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n                    if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n                        maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n                    }\n                }\n            }\n        }\n        // Mask out other blocks\n        while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n        }\n        // Mask out escaped characters\n        while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n        }\n        while (src) {\n            if (!keepPrevChar) {\n                prevChar = '';\n            }\n            keepPrevChar = false;\n            // extensions\n            if (this.options.extensions\n                && this.options.extensions.inline\n                && this.options.extensions.inline.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // escape\n            if (token = this.tokenizer.escape(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // tag\n            if (token = this.tokenizer.tag(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // link\n            if (token = this.tokenizer.link(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // reflink, nolink\n            if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // em & strong\n            if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.codespan(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // br\n            if (token = this.tokenizer.br(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // del (gfm)\n            if (token = this.tokenizer.del(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // autolink\n            if (token = this.tokenizer.autolink(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // url (gfm)\n            if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // text\n            // prevent inlineText consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startInline) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startInline.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (token = this.tokenizer.inlineText(cutSrc)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n                    prevChar = token.raw.slice(-1);\n                }\n                keepPrevChar = true;\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        return tokens;\n    }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n    options;\n    parser; // set by the parser\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(token) {\n        return '';\n    }\n    code({ text, lang, escaped }) {\n        const langString = (lang || '').match(/^\\S*/)?.[0];\n        const code = text.replace(/\\n$/, '') + '\\n';\n        if (!langString) {\n            return '<pre><code>'\n                + (escaped ? code : escape$1(code, true))\n                + '</code></pre>\\n';\n        }\n        return '<pre><code class=\"language-'\n            + escape$1(langString)\n            + '\">'\n            + (escaped ? code : escape$1(code, true))\n            + '</code></pre>\\n';\n    }\n    blockquote({ tokens }) {\n        const body = this.parser.parse(tokens);\n        return `<blockquote>\\n${body}</blockquote>\\n`;\n    }\n    html({ text }) {\n        return text;\n    }\n    heading({ tokens, depth }) {\n        return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n`;\n    }\n    hr(token) {\n        return '<hr>\\n';\n    }\n    list(token) {\n        const ordered = token.ordered;\n        const start = token.start;\n        let body = '';\n        for (let j = 0; j < token.items.length; j++) {\n            const item = token.items[j];\n            body += this.listitem(item);\n        }\n        const type = ordered ? 'ol' : 'ul';\n        const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n        return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n';\n    }\n    listitem(item) {\n        let itemBody = '';\n        if (item.task) {\n            const checkbox = this.checkbox({ checked: !!item.checked });\n            if (item.loose) {\n                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                    }\n                }\n                else {\n                    item.tokens.unshift({\n                        type: 'text',\n                        raw: checkbox + ' ',\n                        text: checkbox + ' ',\n                    });\n                }\n            }\n            else {\n                itemBody += checkbox + ' ';\n            }\n        }\n        itemBody += this.parser.parse(item.tokens, !!item.loose);\n        return `<li>${itemBody}</li>\\n`;\n    }\n    checkbox({ checked }) {\n        return '<input '\n            + (checked ? 'checked=\"\" ' : '')\n            + 'disabled=\"\" type=\"checkbox\">';\n    }\n    paragraph({ tokens }) {\n        return `<p>${this.parser.parseInline(tokens)}</p>\\n`;\n    }\n    table(token) {\n        let header = '';\n        // header\n        let cell = '';\n        for (let j = 0; j < token.header.length; j++) {\n            cell += this.tablecell(token.header[j]);\n        }\n        header += this.tablerow({ text: cell });\n        let body = '';\n        for (let j = 0; j < token.rows.length; j++) {\n            const row = token.rows[j];\n            cell = '';\n            for (let k = 0; k < row.length; k++) {\n                cell += this.tablecell(row[k]);\n            }\n            body += this.tablerow({ text: cell });\n        }\n        if (body)\n            body = `<tbody>${body}</tbody>`;\n        return '<table>\\n'\n            + '<thead>\\n'\n            + header\n            + '</thead>\\n'\n            + body\n            + '</table>\\n';\n    }\n    tablerow({ text }) {\n        return `<tr>\\n${text}</tr>\\n`;\n    }\n    tablecell(token) {\n        const content = this.parser.parseInline(token.tokens);\n        const type = token.header ? 'th' : 'td';\n        const tag = token.align\n            ? `<${type} align=\"${token.align}\">`\n            : `<${type}>`;\n        return tag + content + `</${type}>\\n`;\n    }\n    /**\n     * span level renderer\n     */\n    strong({ tokens }) {\n        return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n    }\n    em({ tokens }) {\n        return `<em>${this.parser.parseInline(tokens)}</em>`;\n    }\n    codespan({ text }) {\n        return `<code>${text}</code>`;\n    }\n    br(token) {\n        return '<br>';\n    }\n    del({ tokens }) {\n        return `<del>${this.parser.parseInline(tokens)}</del>`;\n    }\n    link({ href, title, tokens }) {\n        const text = this.parser.parseInline(tokens);\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = '<a href=\"' + href + '\"';\n        if (title) {\n            out += ' title=\"' + title + '\"';\n        }\n        out += '>' + text + '</a>';\n        return out;\n    }\n    image({ href, title, text }) {\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = `<img src=\"${href}\" alt=\"${text}\"`;\n        if (title) {\n            out += ` title=\"${title}\"`;\n        }\n        out += '>';\n        return out;\n    }\n    text(token) {\n        return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : token.text;\n    }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n    // no need for block level renderers\n    strong({ text }) {\n        return text;\n    }\n    em({ text }) {\n        return text;\n    }\n    codespan({ text }) {\n        return text;\n    }\n    del({ text }) {\n        return text;\n    }\n    html({ text }) {\n        return text;\n    }\n    text({ text }) {\n        return text;\n    }\n    link({ text }) {\n        return '' + text;\n    }\n    image({ text }) {\n        return '' + text;\n    }\n    br() {\n        return '';\n    }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n    options;\n    renderer;\n    textRenderer;\n    constructor(options) {\n        this.options = options || _defaults;\n        this.options.renderer = this.options.renderer || new _Renderer();\n        this.renderer = this.options.renderer;\n        this.renderer.options = this.options;\n        this.renderer.parser = this;\n        this.textRenderer = new _TextRenderer();\n    }\n    /**\n     * Static Parse Method\n     */\n    static parse(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    static parseInline(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    parse(tokens, top = true) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const genericToken = anyToken;\n                const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n                if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'space': {\n                    out += this.renderer.space(token);\n                    continue;\n                }\n                case 'hr': {\n                    out += this.renderer.hr(token);\n                    continue;\n                }\n                case 'heading': {\n                    out += this.renderer.heading(token);\n                    continue;\n                }\n                case 'code': {\n                    out += this.renderer.code(token);\n                    continue;\n                }\n                case 'table': {\n                    out += this.renderer.table(token);\n                    continue;\n                }\n                case 'blockquote': {\n                    out += this.renderer.blockquote(token);\n                    continue;\n                }\n                case 'list': {\n                    out += this.renderer.list(token);\n                    continue;\n                }\n                case 'html': {\n                    out += this.renderer.html(token);\n                    continue;\n                }\n                case 'paragraph': {\n                    out += this.renderer.paragraph(token);\n                    continue;\n                }\n                case 'text': {\n                    let textToken = token;\n                    let body = this.renderer.text(textToken);\n                    while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n                        textToken = tokens[++i];\n                        body += '\\n' + this.renderer.text(textToken);\n                    }\n                    if (top) {\n                        out += this.renderer.paragraph({\n                            type: 'paragraph',\n                            raw: body,\n                            text: body,\n                            tokens: [{ type: 'text', raw: body, text: body }],\n                        });\n                    }\n                    else {\n                        out += body;\n                    }\n                    continue;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    parseInline(tokens, renderer) {\n        renderer = renderer || this.renderer;\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n                if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'escape': {\n                    out += renderer.text(token);\n                    break;\n                }\n                case 'html': {\n                    out += renderer.html(token);\n                    break;\n                }\n                case 'link': {\n                    out += renderer.link(token);\n                    break;\n                }\n                case 'image': {\n                    out += renderer.image(token);\n                    break;\n                }\n                case 'strong': {\n                    out += renderer.strong(token);\n                    break;\n                }\n                case 'em': {\n                    out += renderer.em(token);\n                    break;\n                }\n                case 'codespan': {\n                    out += renderer.codespan(token);\n                    break;\n                }\n                case 'br': {\n                    out += renderer.br(token);\n                    break;\n                }\n                case 'del': {\n                    out += renderer.del(token);\n                    break;\n                }\n                case 'text': {\n                    out += renderer.text(token);\n                    break;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n}\n\nclass _Hooks {\n    options;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    static passThroughHooks = new Set([\n        'preprocess',\n        'postprocess',\n        'processAllTokens',\n    ]);\n    /**\n     * Process markdown before marked\n     */\n    preprocess(markdown) {\n        return markdown;\n    }\n    /**\n     * Process HTML after marked is finished\n     */\n    postprocess(html) {\n        return html;\n    }\n    /**\n     * Process all tokens before walk tokens\n     */\n    processAllTokens(tokens) {\n        return tokens;\n    }\n}\n\nclass Marked {\n    defaults = _getDefaults();\n    options = this.setOptions;\n    parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n    parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n    Parser = _Parser;\n    Renderer = _Renderer;\n    TextRenderer = _TextRenderer;\n    Lexer = _Lexer;\n    Tokenizer = _Tokenizer;\n    Hooks = _Hooks;\n    constructor(...args) {\n        this.use(...args);\n    }\n    /**\n     * Run callback for every token\n     */\n    walkTokens(tokens, callback) {\n        let values = [];\n        for (const token of tokens) {\n            values = values.concat(callback.call(this, token));\n            switch (token.type) {\n                case 'table': {\n                    const tableToken = token;\n                    for (const cell of tableToken.header) {\n                        values = values.concat(this.walkTokens(cell.tokens, callback));\n                    }\n                    for (const row of tableToken.rows) {\n                        for (const cell of row) {\n                            values = values.concat(this.walkTokens(cell.tokens, callback));\n                        }\n                    }\n                    break;\n                }\n                case 'list': {\n                    const listToken = token;\n                    values = values.concat(this.walkTokens(listToken.items, callback));\n                    break;\n                }\n                default: {\n                    const genericToken = token;\n                    if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n                        this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n                            const tokens = genericToken[childTokens].flat(Infinity);\n                            values = values.concat(this.walkTokens(tokens, callback));\n                        });\n                    }\n                    else if (genericToken.tokens) {\n                        values = values.concat(this.walkTokens(genericToken.tokens, callback));\n                    }\n                }\n            }\n        }\n        return values;\n    }\n    use(...args) {\n        const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n        args.forEach((pack) => {\n            // copy options to new object\n            const opts = { ...pack };\n            // set async to true if it was set to true before\n            opts.async = this.defaults.async || opts.async || false;\n            // ==-- Parse \"addon\" extensions --== //\n            if (pack.extensions) {\n                pack.extensions.forEach((ext) => {\n                    if (!ext.name) {\n                        throw new Error('extension name required');\n                    }\n                    if ('renderer' in ext) { // Renderer extensions\n                        const prevRenderer = extensions.renderers[ext.name];\n                        if (prevRenderer) {\n                            // Replace extension with func to run new extension but fall back if false\n                            extensions.renderers[ext.name] = function (...args) {\n                                let ret = ext.renderer.apply(this, args);\n                                if (ret === false) {\n                                    ret = prevRenderer.apply(this, args);\n                                }\n                                return ret;\n                            };\n                        }\n                        else {\n                            extensions.renderers[ext.name] = ext.renderer;\n                        }\n                    }\n                    if ('tokenizer' in ext) { // Tokenizer Extensions\n                        if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n                            throw new Error(\"extension level must be 'block' or 'inline'\");\n                        }\n                        const extLevel = extensions[ext.level];\n                        if (extLevel) {\n                            extLevel.unshift(ext.tokenizer);\n                        }\n                        else {\n                            extensions[ext.level] = [ext.tokenizer];\n                        }\n                        if (ext.start) { // Function to check for start of token\n                            if (ext.level === 'block') {\n                                if (extensions.startBlock) {\n                                    extensions.startBlock.push(ext.start);\n                                }\n                                else {\n                                    extensions.startBlock = [ext.start];\n                                }\n                            }\n                            else if (ext.level === 'inline') {\n                                if (extensions.startInline) {\n                                    extensions.startInline.push(ext.start);\n                                }\n                                else {\n                                    extensions.startInline = [ext.start];\n                                }\n                            }\n                        }\n                    }\n                    if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n                        extensions.childTokens[ext.name] = ext.childTokens;\n                    }\n                });\n                opts.extensions = extensions;\n            }\n            // ==-- Parse \"overwrite\" extensions --== //\n            if (pack.renderer) {\n                const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n                for (const prop in pack.renderer) {\n                    if (!(prop in renderer)) {\n                        throw new Error(`renderer '${prop}' does not exist`);\n                    }\n                    if (['options', 'parser'].includes(prop)) {\n                        // ignore options property\n                        continue;\n                    }\n                    const rendererProp = prop;\n                    let rendererFunc = pack.renderer[rendererProp];\n                    if (!pack.useNewRenderer) {\n                        // TODO: Remove this in next major version\n                        rendererFunc = this.#convertRendererFunction(rendererFunc, rendererProp, renderer);\n                    }\n                    const prevRenderer = renderer[rendererProp];\n                    // Replace renderer with func to run extension, but fall back if false\n                    renderer[rendererProp] = (...args) => {\n                        let ret = rendererFunc.apply(renderer, args);\n                        if (ret === false) {\n                            ret = prevRenderer.apply(renderer, args);\n                        }\n                        return ret || '';\n                    };\n                }\n                opts.renderer = renderer;\n            }\n            if (pack.tokenizer) {\n                const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n                for (const prop in pack.tokenizer) {\n                    if (!(prop in tokenizer)) {\n                        throw new Error(`tokenizer '${prop}' does not exist`);\n                    }\n                    if (['options', 'rules', 'lexer'].includes(prop)) {\n                        // ignore options, rules, and lexer properties\n                        continue;\n                    }\n                    const tokenizerProp = prop;\n                    const tokenizerFunc = pack.tokenizer[tokenizerProp];\n                    const prevTokenizer = tokenizer[tokenizerProp];\n                    // Replace tokenizer with func to run extension, but fall back if false\n                    // @ts-expect-error cannot type tokenizer function dynamically\n                    tokenizer[tokenizerProp] = (...args) => {\n                        let ret = tokenizerFunc.apply(tokenizer, args);\n                        if (ret === false) {\n                            ret = prevTokenizer.apply(tokenizer, args);\n                        }\n                        return ret;\n                    };\n                }\n                opts.tokenizer = tokenizer;\n            }\n            // ==-- Parse Hooks extensions --== //\n            if (pack.hooks) {\n                const hooks = this.defaults.hooks || new _Hooks();\n                for (const prop in pack.hooks) {\n                    if (!(prop in hooks)) {\n                        throw new Error(`hook '${prop}' does not exist`);\n                    }\n                    if (prop === 'options') {\n                        // ignore options property\n                        continue;\n                    }\n                    const hooksProp = prop;\n                    const hooksFunc = pack.hooks[hooksProp];\n                    const prevHook = hooks[hooksProp];\n                    if (_Hooks.passThroughHooks.has(prop)) {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (arg) => {\n                            if (this.defaults.async) {\n                                return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n                                    return prevHook.call(hooks, ret);\n                                });\n                            }\n                            const ret = hooksFunc.call(hooks, arg);\n                            return prevHook.call(hooks, ret);\n                        };\n                    }\n                    else {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (...args) => {\n                            let ret = hooksFunc.apply(hooks, args);\n                            if (ret === false) {\n                                ret = prevHook.apply(hooks, args);\n                            }\n                            return ret;\n                        };\n                    }\n                }\n                opts.hooks = hooks;\n            }\n            // ==-- Parse WalkTokens extensions --== //\n            if (pack.walkTokens) {\n                const walkTokens = this.defaults.walkTokens;\n                const packWalktokens = pack.walkTokens;\n                opts.walkTokens = function (token) {\n                    let values = [];\n                    values.push(packWalktokens.call(this, token));\n                    if (walkTokens) {\n                        values = values.concat(walkTokens.call(this, token));\n                    }\n                    return values;\n                };\n            }\n            this.defaults = { ...this.defaults, ...opts };\n        });\n        return this;\n    }\n    // TODO: Remove this in next major release\n    #convertRendererFunction(func, prop, renderer) {\n        switch (prop) {\n            case 'heading':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));\n                };\n            case 'code':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text, token.lang, !!token.escaped);\n                };\n            case 'table':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    let header = '';\n                    // header\n                    let cell = '';\n                    for (let j = 0; j < token.header.length; j++) {\n                        cell += this.tablecell({\n                            text: token.header[j].text,\n                            tokens: token.header[j].tokens,\n                            header: true,\n                            align: token.align[j],\n                        });\n                    }\n                    header += this.tablerow({ text: cell });\n                    let body = '';\n                    for (let j = 0; j < token.rows.length; j++) {\n                        const row = token.rows[j];\n                        cell = '';\n                        for (let k = 0; k < row.length; k++) {\n                            cell += this.tablecell({\n                                text: row[k].text,\n                                tokens: row[k].tokens,\n                                header: false,\n                                align: token.align[k],\n                            });\n                        }\n                        body += this.tablerow({ text: cell });\n                    }\n                    return func.call(this, header, body);\n                };\n            case 'blockquote':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    const body = this.parser.parse(token.tokens);\n                    return func.call(this, body);\n                };\n            case 'list':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    const ordered = token.ordered;\n                    const start = token.start;\n                    const loose = token.loose;\n                    let body = '';\n                    for (let j = 0; j < token.items.length; j++) {\n                        const item = token.items[j];\n                        const checked = item.checked;\n                        const task = item.task;\n                        let itemBody = '';\n                        if (item.task) {\n                            const checkbox = this.checkbox({ checked: !!checked });\n                            if (loose) {\n                                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                                    }\n                                }\n                                else {\n                                    item.tokens.unshift({\n                                        type: 'text',\n                                        text: checkbox + ' ',\n                                    });\n                                }\n                            }\n                            else {\n                                itemBody += checkbox + ' ';\n                            }\n                        }\n                        itemBody += this.parser.parse(item.tokens, loose);\n                        body += this.listitem({\n                            type: 'list_item',\n                            raw: itemBody,\n                            text: itemBody,\n                            task,\n                            checked: !!checked,\n                            loose,\n                            tokens: item.tokens,\n                        });\n                    }\n                    return func.call(this, body, ordered, start);\n                };\n            case 'html':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text, token.block);\n                };\n            case 'paragraph':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'escape':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            case 'link':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));\n                };\n            case 'image':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.href, token.title, token.text);\n                };\n            case 'strong':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'em':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'codespan':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            case 'del':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'text':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            // do nothing\n        }\n        return func;\n    }\n    setOptions(opt) {\n        this.defaults = { ...this.defaults, ...opt };\n        return this;\n    }\n    lexer(src, options) {\n        return _Lexer.lex(src, options ?? this.defaults);\n    }\n    parser(tokens, options) {\n        return _Parser.parse(tokens, options ?? this.defaults);\n    }\n    #parseMarkdown(lexer, parser) {\n        return (src, options) => {\n            const origOpt = { ...options };\n            const opt = { ...this.defaults, ...origOpt };\n            // Show warning if an extension set async to true but the parse was called with async: false\n            if (this.defaults.async === true && origOpt.async === false) {\n                if (!opt.silent) {\n                    console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n                }\n                opt.async = true;\n            }\n            const throwError = this.#onError(!!opt.silent, !!opt.async);\n            // throw error in case of non string input\n            if (typeof src === 'undefined' || src === null) {\n                return throwError(new Error('marked(): input parameter is undefined or null'));\n            }\n            if (typeof src !== 'string') {\n                return throwError(new Error('marked(): input parameter is of type '\n                    + Object.prototype.toString.call(src) + ', string expected'));\n            }\n            if (opt.hooks) {\n                opt.hooks.options = opt;\n            }\n            if (opt.async) {\n                return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n                    .then(src => lexer(src, opt))\n                    .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n                    .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n                    .then(tokens => parser(tokens, opt))\n                    .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n                    .catch(throwError);\n            }\n            try {\n                if (opt.hooks) {\n                    src = opt.hooks.preprocess(src);\n                }\n                let tokens = lexer(src, opt);\n                if (opt.hooks) {\n                    tokens = opt.hooks.processAllTokens(tokens);\n                }\n                if (opt.walkTokens) {\n                    this.walkTokens(tokens, opt.walkTokens);\n                }\n                let html = parser(tokens, opt);\n                if (opt.hooks) {\n                    html = opt.hooks.postprocess(html);\n                }\n                return html;\n            }\n            catch (e) {\n                return throwError(e);\n            }\n        };\n    }\n    #onError(silent, async) {\n        return (e) => {\n            e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n            if (silent) {\n                const msg = '<p>An error occurred:</p><pre>'\n                    + escape$1(e.message + '', true)\n                    + '</pre>';\n                if (async) {\n                    return Promise.resolve(msg);\n                }\n                return msg;\n            }\n            if (async) {\n                return Promise.reject(e);\n            }\n            throw e;\n        };\n    }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n    return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n    marked.setOptions = function (options) {\n        markedInstance.setOptions(options);\n        marked.defaults = markedInstance.defaults;\n        changeDefaults(marked.defaults);\n        return marked;\n    };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n    markedInstance.use(...args);\n    marked.defaults = markedInstance.defaults;\n    changeDefaults(marked.defaults);\n    return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n    return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n",":host {\n  color: var(--text-color-secondary, text-color('secondary'));\n}\n\n.orama-markdown-wrapper > :first-child {\n  padding-top: 0;\n  margin-top: 0;\n}\n\np,\na,\nli {\n  font-size: var(--font-size-md, $font-size-md);\n  line-height: var(--font-line-height-md, $font-line-height-m);\n}\n\nul,\nol,\nblockquote {\n  margin: 0 0 var(--spacing-xs, $spacing-xs) var(--spacing-xs, $spacing-xs);\n  padding: 0 0 0 var(--spacing-xs, $spacing-xs);\n  padding-inline-start: var(--spacing-l, $spacing-l);\n}\n\nblockquote {\n  border-left: var(--spacing-xs, $spacing-xs) solid var(--border-color-primary, border-color('primary'));\n}\n\np > code {\n  margin: 0 var(--spacing-xs, $spacing-xs);\n}\n\npre > code {\n  position: relative;\n}\n\na {\n  color: var(--text-color-primary, text-color('primary'));\n  font-weight: bold;\n  text-decoration: underline;\n  opacity: 0.9;\n\n  &:hover {\n    opacity: 1;\n  }\n}\n\n.orama-markdown-pre {\n  position: relative;\n}\n\n.orama-markdown-code {\n  border-radius: var(--radius-s, $radius-s);\n}\n\n.orama-markdown-code-title {\n  display: block;\n  font-size: var(--font-size-xxs, $font-size-xxs);\n  color: var(--text-color-primary, text-color('primary'));\n  padding: var(--spacing-s, $spacing-s) 0;\n  opacity: 0.5;\n}\n","import { SUPPORTED_HLJS_LANGUAGES_ARRAY } from '@/components/internal/SupportedHLJSLanguages'\nimport { Component, Element, type EventEmitter, Prop, Watch, h, Event } from '@stencil/core'\nimport DOMPurify from 'dompurify'\nimport hljs from 'highlight.js/lib/core'\nimport { marked } from 'marked'\nimport type {\n  ChatMarkdownLinkHref,\n  ChatMarkdownLinkTarget,\n  ChatMarkdownLinkTitle,\n  OnChatMarkdownLinkClickedCallbackProps,\n} from '@/types'\n\n// biome-ignore lint/suspicious/noExplicitAny: Let me be, TypeScript\n;(window as any).hljs = hljs\n\nDOMPurify.addHook('afterSanitizeAttributes', (node) => {\n  if ('href' in node) {\n    node.setAttribute('target', '_parent')\n    node.setAttribute('rel', 'noopener')\n  }\n})\n\n/**\n * In order to keep the bundle size small, we are loading the languages grammars by fecthing hljs's CDN dynamically.\n * This file is used as a in-memory static global variable to store the languages grammars references and fetching states.\n */\nconst SUPPORTED_HLJS_LANGUAGES = Object.fromEntries<{ error: boolean; retries: number }>(\n  SUPPORTED_HLJS_LANGUAGES_ARRAY.map((language) => [language, { error: false, retries: 0 }]),\n)\n\n// This is used for the cases the a known language returned by the LLM\n// should be highlighted as another language\nconst LANGUAGES_MAPPING: Record<string, string> = {\n  html: 'xml',\n}\n\n/**\n *\n * @param language the language to load\n * @returns true if the language is available either from beeing successfully loaded or from being already loaded\n */\nasync function loadLanguageAndHighlight(language: string): Promise<boolean> {\n  // TODO: Supported languages may be overkill. Evaluate if we can remove this to make bundler slimmer\n  const localCachedLanguage = SUPPORTED_HLJS_LANGUAGES[language]\n\n  if (!localCachedLanguage) {\n    // Unsupported language\n    return false\n  }\n\n  if (localCachedLanguage.error && localCachedLanguage.retries >= 5) {\n    // Error too many retries\n    return false\n  }\n\n  try {\n    const response = await fetch(\n      `https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/${language}.min.js`,\n    )\n\n    if (!response.ok) {\n      throw new Error(`Failed to fetch ${language} language: ${response.statusText}`)\n    }\n    const scriptContent = await response.text()\n\n    // TODO: We way need to check if the script is safe\n    const loadScript = new Function(scriptContent)\n\n    // hljs language grammar from CDN automatically registers the language\n    await loadScript()\n\n    if (!hljs.getLanguage(language)) {\n      throw new Error(`Even after executing grammar script, ${language} language was not registered`)\n    }\n\n    // Just for consistency\n    localCachedLanguage.retries = 0\n    localCachedLanguage.error = false\n\n    return true\n  } catch (e) {\n    localCachedLanguage.error = true\n    localCachedLanguage.retries++\n\n    return false\n  }\n}\n\n@Component({\n  tag: 'orama-markdown',\n  styleUrl: 'orama-markdown.scss',\n  shadow: true,\n})\nexport class OramaMarkdown {\n  @Prop() content: string\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  chatMarkdownLinkClicked: EventEmitter<OnChatMarkdownLinkClickedCallbackProps>\n\n  divElement!: HTMLDivElement\n  @Element() markdownElement!: HTMLElement\n\n  @Watch('content')\n  onContentChange() {\n    this.parseMarkdown()\n  }\n\n  handleMarkdownLinkClicked(originalOnClickEvent: MouseEvent) {\n    const htmlElement = originalOnClickEvent.target as HTMLLinkElement\n    const chatMarkdownLinkClicked = this.chatMarkdownLinkClicked.emit({\n      text: htmlElement.innerText,\n      href: htmlElement.href,\n    })\n\n    if (chatMarkdownLinkClicked.defaultPrevented) {\n      originalOnClickEvent.preventDefault()\n      return\n    }\n  }\n\n  componentDidLoad() {\n    marked.use({\n      useNewRenderer: true,\n      renderer: {\n        link: (token) => {\n          const link = document.createElement('a')\n          link.innerHTML = this.chatMarkdownLinkTitle?.({ href: token.href, text: token.text }) ?? token.text\n          link.href = this.chatMarkdownLinkHref?.({ href: token.href, text: token.text }) ?? token.href\n\n          if (this.chatMarkdownLinkTarget) {\n            link.target = this.chatMarkdownLinkTarget?.({ href: token.href, text: token.text })\n          }\n\n          return link.outerHTML\n        },\n        code: (token) => {\n          const mappedLanguage = LANGUAGES_MAPPING[token.lang] || token.lang\n          // Some \"languages\" like HTML should be rendererd as XML. Reasons are still unclear.\n          const actualLanguage = SUPPORTED_HLJS_LANGUAGES[mappedLanguage] ? mappedLanguage : 'plaintext'\n\n          const pre = document.createElement('pre')\n          pre.classList.add('orama-markdown-pre')\n          const codeTitle = document.createElement('div')\n          codeTitle.classList.add('orama-markdown-code-title')\n          pre.appendChild(codeTitle)\n\n          const code = document.createElement('code')\n          code.classList.add('orama-markdown-code')\n          code.classList.add(`language-${actualLanguage}`)\n          code.classList.add('hljs')\n\n          pre.appendChild(code)\n\n          const hljsLanguage = hljs.getLanguage(actualLanguage)\n          if (hljsLanguage) {\n            if (actualLanguage === 'plaintext') {\n              codeTitle.innerHTML = ''\n            } else {\n              codeTitle.innerHTML = hljsLanguage.name\n            }\n            code.innerHTML = hljs.highlight(token.text, { language: actualLanguage, ignoreIllegals: true }).value\n            code.dataset.highlighted = 'yes'\n          } else {\n            codeTitle.innerHTML = ' '\n            code.innerHTML = token.text\n          }\n\n          return pre.outerHTML\n        },\n        codespan: (token) => {\n          const code = document.createElement('code')\n          code.classList.add('orama-markdown-inline-code')\n          code.innerHTML = token.text\n\n          return code.outerHTML\n        },\n      },\n    })\n\n    this.parseMarkdown()\n  }\n\n  parseMarkdown = async () => {\n    if (!this.content) {\n      return\n    }\n\n    // biome-ignore lint/suspicious/noMisleadingCharacterClass: No clear reason for this\n    const noZeroWidthCharsContent = this.content.replace(/^[\\u200B\\u200C\\u200D\\u200E\\u200F\\uFEFF]/, '')\n    const highlightedCode = await marked.parse(noZeroWidthCharsContent)\n    this.divElement.innerHTML = DOMPurify.sanitize(highlightedCode)\n\n    const mk = this.markdownElement.shadowRoot.querySelectorAll('.orama-markdown-code')\n\n    const pedningBlocksByLanguage: Record<string, true> = {}\n\n    for (let i = 0; i < mk.length; i++) {\n      const codeBlockRef = mk[i] as HTMLElement\n      // Highlighted code blocks are marked with highlighted data attribute\n      if (codeBlockRef.hasAttribute('data-highlighted')) {\n        continue\n      }\n\n      const languageClassName = codeBlockRef.className.split(' ').find((className) => className.startsWith('language-'))\n      const language = languageClassName.substring('language-'.length)\n\n      pedningBlocksByLanguage[language] = true\n    }\n\n    for (const pendingLanguage of Object.keys(pedningBlocksByLanguage)) {\n      loadLanguageAndHighlight(pendingLanguage).then(() => {\n        // We know for sure that nothing is async right now\n        const parsedContent = marked.parse(noZeroWidthCharsContent) as string\n        this.divElement.innerHTML = DOMPurify.sanitize(parsedContent)\n      })\n    }\n  }\n\n  render() {\n    return (\n      <host>\n        {/* TODO: This style should be dynamically loaded according to theme. Also we need to\n        evaluate if we need this inside our codebase or keep it in a CDN */}\n        <link\n          rel=\"stylesheet\"\n          href=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/styles/atom-one-dark.min.css\"\n        />\n        {/* biome-ignore lint/a11y/useKeyWithClickEvents: TODO: fix usability issue */}\n        <div\n          class=\"orama-markdown-wrapper\"\n          ref={(ref) => {\n            this.divElement = ref\n          }}\n          onClick={(event) => {\n            const htmlEvent = event.target as HTMLElement\n            // Needs to be here because renderer function only outputs text. There is not a way to set a onclick there\n            if (htmlEvent.tagName === 'A') {\n              this.handleMarkdownLinkClicked(event)\n            }\n          }}\n        />\n      </host>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as f } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar u = Object.defineProperty, d = Object.getOwnPropertyDescriptor, s = (o, a, p, l) => {\n  for (var e = l > 1 ? void 0 : l ? d(a, p) : a, h = o.length - 1, n; h >= 0; h--)\n    (n = o[h]) && (e = (l ? n(a, p, e) : n(e)) || e);\n  return l && e && u(a, p, e), e;\n};\nlet t = class extends f {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var o;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((o = this.weight) != null ? o : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M162.83,205.17a4,4,0,0,1-5.66,5.66l-80-80a4,4,0,0,1,0-5.66l80-80a4,4,0,1,1,5.66,5.66L85.66,128Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M164.24,203.76a6,6,0,1,1-8.48,8.48l-80-80a6,6,0,0,1,0-8.48l80-80a6,6,0,0,1,8.48,8.48L88.49,128Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M168.49,199.51a12,12,0,0,1-17,17l-80-80a12,12,0,0,1,0-17l80-80a12,12,0,0,1,17,17L97,128Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M168,48V208a8,8,0,0,1-13.66,5.66l-80-80a8,8,0,0,1,0-11.32l80-80A8,8,0,0,1,168,48Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M160,48V208L80,128Z\" opacity=\"0.2\"/><path d=\"M163.06,40.61a8,8,0,0,0-8.72,1.73l-80,80a8,8,0,0,0,0,11.32l80,80A8,8,0,0,0,168,208V48A8,8,0,0,0,163.06,40.61ZM152,188.69,91.31,128,152,67.31Z\"/>`\n  ]\n]);\nt.styles = c`\n    :host {\n      display: contents;\n    }\n  `;\ns([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\ns([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\ns([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\ns([\n  i({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = s([\n  g(\"ph-caret-left\")\n], t);\nexport {\n  t as PhCaretLeft\n};\n",".p {\n  @include paragraph();\n}\n\n.p-secondary {\n  @include paragraph('secondary');\n}\n\n.p-tertiary {\n  @include paragraph('tertiary');\n}\n\n.span {\n  @include span();\n}\n\n.span-secondary {\n  @include span('secondary');\n}\n\n.span-tertiary {\n  @include span('tertiary');\n}\n\n.small {\n  @include small();\n}\n\n.small-secondary {\n  @include small('secondary');\n}\n\n.small-tertiary {\n  @include small('tertiary');\n}\n\n.text-bold {\n  font-weight: var(--font-weight-semibold, $font-weight-semibold);\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-center {\n  text-align: center;\n}\n\n.text-inactive {\n  color: var(--text-color-inactive, text-color('inactive'));\n}","import { Component, Prop, h, State, Element } from '@stencil/core'\nimport { getNonExplicitAttributes } from '@/utils/utils'\n\nexport interface TextProps {\n  /** it defines the HTML tag to be used */\n  as?: 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'small' | 'a'\n  /** it defines how it should look like */\n  styledAs?: 'p' | 'span' | 'small' | undefined\n  /** the optional class name */\n  class?: string\n  /** optionally change text alignment */\n  align?: 'left' | 'center' | 'right'\n  /** optionally change variant style - default is primary */\n  variant: 'primary' | 'secondary' | 'tertiary'\n  /** show as inactive */\n  inactive?: boolean\n}\n@Component({\n  tag: 'orama-text',\n  styleUrl: 'orama-text.scss',\n  scoped: true,\n})\n\n/**\n * The OramaText component is used to render a text element with a specific style.\n *\n */\nexport class OramaText implements TextProps {\n  @Element() el: HTMLElement\n\n  @Prop() as?: TextProps['as'] = 'p'\n  @Prop() styledAs?: TextProps['styledAs']\n  @Prop() bold?: boolean = false\n  @Prop() class?: string\n  @Prop() align?: TextProps['align']\n  @Prop() variant: TextProps['variant'] = 'primary'\n  @Prop() inactive?: TextProps['inactive']\n\n  render() {\n    const defaultStyle =\n      this.styledAs === 'span' || this.styledAs === 'small' || this.styledAs === 'p' ? this.styledAs : this.as\n\n    const Tag = this.as\n    const declaredProps = ['as', 'styled-as', 'class']\n    const textProps = getNonExplicitAttributes(this.el, declaredProps)\n\n    return (\n      <Tag\n        class={{\n          [defaultStyle]: true,\n          [`text-${this.align}`]: !!this.align,\n          [`${defaultStyle}-${this.variant}`]: true,\n          'text-inactive': !!this.inactive,\n          'text-bold': !!this.bold,\n          [this.class]: !!this.class,\n        }}\n        {...textProps}\n      >\n        <slot />\n      </Tag>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as g } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar u = Object.defineProperty, d = Object.getOwnPropertyDescriptor, s = (o, l, a, i) => {\n  for (var r = i > 1 ? void 0 : i ? d(l, a) : l, h = o.length - 1, n; h >= 0; h--)\n    (n = o[h]) && (r = (i ? n(l, a, r) : n(r)) || r);\n  return i && r && u(l, a, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var o;\n    return g`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((o = this.weight) != null ? o : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M176,128,96,208V48Z\" opacity=\"0.2\"/><path d=\"M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z\"/>`\n  ]\n]);\nt.styles = f`\n    :host {\n      display: contents;\n    }\n  `;\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\ns([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = s([\n  c(\"ph-caret-right\")\n], t);\nexport {\n  t as PhCaretRight\n};\n",".sources-outer-wrapper {\n  overflow: hidden;\n  position: relative;\n  margin: 0 var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m) var(--spacing-l, $spacing-l);\n}\n\n.source-next {\n  position: absolute;\n  left: 0;\n  top: 0;\n  bottom: 0;\n}\n\n.carousel-arrow {\n  position: absolute;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  top: 0;\n  bottom: 0;\n  margin-block: auto;\n  height: fit-content;\n  height: 100%;\n  color: var(--text-color-secondary, text-color('secondary'));\n  padding: 0 var(--spacing-m, $spacing-m);\n  border: none;\n  font-size: pxToRem(18);\n  cursor: pointer;\n  transition:\n    color 0.2s,\n    opacity 0.2s;\n  opacity: 1;\n  z-index: 1;\n\n  &.hidden {\n    pointer-events: none;\n    opacity: 0;\n  }\n}\n\n.carousel-arrow:hover,\n.carousel-arrow:focus {\n  &:not(.hidden) {\n    color: var(--text-color-primary, text-color('primary'));\n  }\n}\n\n.carousel-arrow--prev {\n  left: 0;\n  background: linear-gradient(-90deg, transparent, 70%, var(--background-color-primary, background-color('primary')));\n}\n\n.carousel-arrow--next {\n  right: 0;\n  background: linear-gradient(90deg, transparent, 30%, var(--background-color-primary, background-color('primary')));\n}\n\n.sources-wrapper {\n  display: flex;\n  overflow-x: auto;\n  scrollbar-width: none;\n  position: relative;\n\n  overflow-x: scroll;\n  scroll-behavior: smooth;\n}\n\n.source {\n  position: relative;\n  overflow: hidden;\n  width: pxToRem(195);\n  flex-grow: 0;\n  flex-shrink: 0;\n  text-decoration: none;\n  padding: var(--spacing-m, $spacing-m);\n  border-radius: var(--radius-s, $radius-s);\n  background: var(--background-color-secondary, background-color('secondary'));\n\n  .source-title,\n  .source-subtitle {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  @media (hover: hover) {\n    &:hover {\n      background: var(--background-color-tertiary, background-color('tertiary'));\n      transition: background 0.2s ease-in-out;\n    }\n  }\n}\n\n.source-inner-wrapper {\n  position: relative;\n  display: flex;\n  padding-right: var(--spacing-s, $spacing-s);\n\n  &:last-of-type {\n    padding-right: var(--spacing-l, $spacing-l);\n  }\n}\n\n.sr-only {\n  @include screen-reader-only();\n}\n","import type { SourcesMap, SearchResult, OnAnswerSourceClickCallbackProps, SourcesMapItem, ResultMapItem } from '@/types'\nimport { Component, Event, Prop, State, h, type EventEmitter } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhCaretLeft.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhCaretRight.mjs'\n\nconst SOURCE_BOX_OFFSET = 0\n\n@Component({\n  tag: 'orama-sources',\n  styleUrl: 'orama-sources.scss',\n  shadow: true,\n})\nexport class OramaSources {\n  carouselSourceRef!: HTMLElement\n  // biome-ignore lint/suspicious/noExplicitAny: Sources can be any shape\n  @Prop() sources: any\n  @Prop() sourceBaseURL?: string = ''\n  @Prop() linksTarget?: string = '_blank'\n  @Prop() linksRel?: string = 'noopener noreferrer'\n  divElement!: HTMLDivElement\n\n  @State() isCarouselScrollAtEnd = false\n  @State() isCarouselScrollAtStart = false\n\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  answerSourceClick: EventEmitter<OnAnswerSourceClickCallbackProps>\n\n  // TODO: Move this to utils\n  private buildUrl(path: string): string {\n    if (!path) {\n      return '#'\n    }\n\n    if (this.sourceBaseURL) {\n      // Remove trailing slashes from the base URL\n      const sanitizedBaseUrl = this.sourceBaseURL.replace(/\\/+$/, '')\n\n      // Remove leading slashes from the path\n      const sanitizedPath = path.replace(/^\\/+/, '')\n\n      // Concatenate the base URL with the path\n      return `${sanitizedBaseUrl}/${sanitizedPath}`\n    }\n\n    return path\n  }\n\n  getNextItemCarousel(container: HTMLElement, items: HTMLCollectionOf<Element>) {\n    for (let i = 0; i < items.length; i++) {\n      const item = items[i]\n      const itemRect = item.getBoundingClientRect()\n      const containerRect = container.getBoundingClientRect()\n\n      // Check if item is totally or partially visible\n      if (itemRect.right - SOURCE_BOX_OFFSET > containerRect.right) {\n        return item\n      }\n    }\n\n    return null\n  }\n\n  getPreviousItemCarousel(container: HTMLElement, items: HTMLCollectionOf<Element>) {\n    for (let i = 0; i < items.length; i++) {\n      const item = items[i]\n      const itemRect = item.getBoundingClientRect()\n      const containerRect = container.getBoundingClientRect()\n\n      // Check if the item is totally visible\n      if (\n        itemRect.left + SOURCE_BOX_OFFSET >= containerRect.left &&\n        itemRect.right - SOURCE_BOX_OFFSET <= containerRect.right\n      ) {\n        return items[i - 1] ?? null\n        // biome-ignore lint/style/noUselessElse: better with to make the intention clear\n      } else if (\n        itemRect.left - SOURCE_BOX_OFFSET < containerRect.right &&\n        itemRect.right - SOURCE_BOX_OFFSET > containerRect.right\n      ) {\n        return item\n      }\n    }\n\n    return null\n  }\n\n  private handleCarouselMove(direction: 'forward' | 'backwards') {\n    const carousel = this.carouselSourceRef\n\n    if (!carousel) {\n      return\n    }\n\n    const items = carousel.getElementsByClassName('source-inner-wrapper')\n\n    if (direction === 'forward') {\n      const nextItemCarousel = this.getNextItemCarousel(carousel, items)\n      if (nextItemCarousel) {\n        nextItemCarousel.scrollIntoView({\n          behavior: 'smooth',\n          inline: 'end',\n          block: 'nearest',\n        })\n      }\n    } else {\n      const previousItemCarousel = this.getPreviousItemCarousel(carousel, items)\n      if (previousItemCarousel) {\n        previousItemCarousel.scrollIntoView({\n          behavior: 'smooth',\n          inline: 'start',\n          block: 'nearest',\n        })\n      }\n    }\n  }\n\n  handleCarouselScroll = () => {\n    this.computeCarouselArrowsVisibility()\n  }\n\n  handleItemClick = (originalOnClickEvent: MouseEvent, item: SearchResult) => {\n    const answerSourceClick = this.answerSourceClick.emit({ source: item })\n\n    if (answerSourceClick.defaultPrevented) {\n      originalOnClickEvent.preventDefault()\n      return\n    }\n\n    if (!item?.path) {\n      throw new Error('No path found')\n    }\n  }\n\n  computeCarouselArrowsVisibility() {\n    const carousel = this.carouselSourceRef\n\n    if (!carousel) {\n      return\n    }\n\n    const items = carousel.getElementsByClassName('source-inner-wrapper')\n\n    this.isCarouselScrollAtEnd = !this.getNextItemCarousel(carousel, items)\n    this.isCarouselScrollAtStart = !this.getPreviousItemCarousel(carousel, items)\n  }\n\n  resizeObserver = new ResizeObserver(() => {\n    this.computeCarouselArrowsVisibility()\n  })\n\n  componentDidLoad() {\n    this.carouselSourceRef?.addEventListener('scroll', this.handleCarouselScroll)\n    this.computeCarouselArrowsVisibility()\n\n    if (this.carouselSourceRef) {\n      this.resizeObserver.observe(this.carouselSourceRef)\n    }\n  }\n\n  disconnectedCallback() {\n    this.carouselSourceRef?.removeEventListener('scroll', this.handleCarouselScroll)\n    this.resizeObserver.disconnect()\n  }\n\n  hasHorizontalOverflow(element) {\n    if (!element) {\n      return false\n    }\n    return element.scrollWidth > element.clientWidth\n  }\n\n  render() {\n    if (!this.sources?.length) {\n      return\n    }\n\n    return (\n      <host>\n        <div\n          class={{\n            'sources-outer-wrapper': true,\n            'oveflow-decorator': this.hasHorizontalOverflow(this.carouselSourceRef),\n          }}\n        >\n          <h2 class=\"sr-only\">Sources</h2>\n\n          <button\n            class={{ 'carousel-arrow carousel-arrow--prev': true, hidden: this.isCarouselScrollAtStart }}\n            onClick={() => this.handleCarouselMove('backwards')}\n            type=\"button\"\n          >\n            <ph-caret-left />\n          </button>\n\n          <button\n            class={{ 'carousel-arrow carousel-arrow--next': true, hidden: this.isCarouselScrollAtEnd }}\n            onClick={() => this.handleCarouselMove('forward')}\n            type=\"button\"\n          >\n            <ph-caret-right />\n          </button>\n          <div\n            class=\"sources-wrapper\"\n            ref={(el) => {\n              this.carouselSourceRef = el\n            }}\n          >\n            {this.sources.map((source, index) => {\n              const showSources = (!!source.title && !!source.path) || (!!source.description && !!source.path)\n\n              if (!showSources) return\n\n              return (\n                <div\n                  class=\"source-inner-wrapper\"\n                  // biome-ignore lint/suspicious/noArrayIndexKey: we do not have id for sources\n                  key={`source-${index}`}\n                  style={{\n                    position: 'relative',\n                    display: 'flex',\n                  }}\n                >\n                  <a\n                    href={this.buildUrl(source.path)}\n                    class=\"source\"\n                    target={this.linksTarget}\n                    rel={this.linksRel}\n                    id={`source-${index}`}\n                    onClick={(onClickEvent) => this.handleItemClick(onClickEvent, source)}\n                  >\n                    <orama-text as=\"h3\" styledAs=\"span\" class=\"source-title\">\n                      {source.title}\n                    </orama-text>\n                    <orama-text as=\"p\" styledAs=\"span\" class=\"source-subtitle\" variant=\"tertiary\">\n                      {source.description}\n                    </orama-text>\n                  </a>\n                </div>\n              )\n            })}\n          </div>\n        </div>\n      </host>\n    )\n  }\n}\n","import type { AnyOrama, Results, SearchParams } from '@orama/orama'\nimport type { ClientSearchParams } from '@oramacloud/client'\n\nexport type SearchResult = {\n  id: string\n  title: string\n  description: string\n  path: string\n}\n\nexport type ColorScheme = 'dark' | 'light' | 'system'\n\nexport type SearchResultWithScore = SearchResult & { score: number }\nexport type SearchResultWithIcon = SearchResult & { icon: string }\n\nexport type SearchResultBySection = {\n  section: string | undefined\n  items: SearchResultWithIcon[]\n}\n\nexport type Facet = { name: string; count: number }\n\nexport type ResultMapKeys = keyof Omit<SearchResult, 'id'> | 'section' | 'datasourceId'\n// biome-ignore lint/suspicious/noExplicitAny: Item is indeed not any\nexport type ResultMapRenderFunction = (item: any, datasourceId: string) => string\n// biome-ignore lint/suspicious/noExplicitAny: Item is indeed not any\nexport type ResultItemRenderFunction = (item: any, datasourceId: string) => string | null | undefined\n\n// TODO: callback function should have the type of the schema\nexport type ResultMapItem = { [K in ResultMapKeys]?: string | ResultMapRenderFunction } & {\n  icon?: string | ResultItemRenderFunction\n}\n\nexport type ResultMap = ResultMapItem | ResultMapItem[]\n\nexport type SourcesMapKeys = keyof Omit<SearchResult, 'id'>\n\n// biome-ignore lint/suspicious/noExplicitAny: Indeed ANY object. unknown would cause extra work for the user\ntype NewType = (item: any, datasourceId: string) => string\n\nexport type SourcesMapRenderFunction = NewType\n\nexport type SourcesMapItem = { [K in SourcesMapKeys]?: string | SourcesMapRenderFunction } & {\n  datasourceId?: string\n}\n\nexport type SourceItem = {\n  title: string\n  description: string\n  path: string\n}\nexport type SourcesMap = SourcesMapItem | SourcesMapItem[]\n\nexport type CloudIndexConfig = {\n  api_key: string\n  endpoint: string\n}\n\n// TODO: Remove it after upgrading orama-cloud SDK. Currently AskPArams is not exported\nexport type AskParams = SearchParams<AnyOrama> & {\n  userData?: unknown\n  related?: {\n    howMany?: 1 | 2 | 3 | 4 | 5\n    format?: 'question' | 'query'\n  }\n}\n\nexport type ChatMarkdownLinkTitle = ({ text, href }: { text: string; href: string }) => string\nexport type ChatMarkdownLinkHref = ({ text, href }: { text: string; href: string }) => string\nexport type ChatMarkdownLinkTarget = ({ text, href }: { text: string; href: string }) => string\nexport type OnChatMarkdownLinkClickedCallbackProps = { text: string; href: string }\n\nexport type OnSearchCompletedCallbackProps = {\n  clientSearchParams: ClientSearchParams\n  result: { results: SearchResultBySection[]; resultsCount: number; facets: Facet[] }\n}\n\nexport type OnSearchResultClickCallbackProps = {\n  result: SearchResult\n}\n\nexport type OnAnswerGeneratedCallbackProps = {\n  askParams: AskParams\n  query: string\n  sources: Results<unknown>\n  answer: string\n  segment: string | null\n  trigger: string | null\n}\n\nexport type onStartConversationCallbackProps = {\n  userPrompt: string\n  systemPrompts: string[]\n}\n\nexport type OnAnswerSourceClickCallbackProps = { source: SearchResult }\n\n// TODO: this type should be imported from orama-client\nexport enum TAnswerStatus {\n  idle = 'idle',\n  loading = 'loading', // waiting for sources to be fetched\n  rendering = 'rendering', // rendering interaction sources\n  streaming = 'streaming', // streaming interaction answer\n  error = 'error',\n  aborted = 'aborted',\n  done = 'done',\n}\n\nexport type TSource = {\n  title: string\n  description?: string\n  path: string\n}\n\nexport type TChatInteraction = {\n  query: string\n  response?: string\n  sources?: SourceItem[]\n  latest?: boolean\n  status: TAnswerStatus\n  interactionId?: string\n  relatedQueries?: string[]\n}\n\n/**\n * Dictionary for all text content in the components\n */\nexport type Dictionary = {\n  searchPlaceholder: string\n  chatPlaceholder: string\n  noResultsFound: string\n  noResultsFoundFor: string\n  suggestionsTitle: string\n  seeAll: string\n  addMore: string\n  clearChat: string\n  errorMessage: string\n  disclaimer: string\n  startYourSearch: string\n  initErrorSearch: string\n  initErrorChat: string\n  chatButtonLabel: string\n  searchButtonLabel: string\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as l } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as n } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as V } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar c = Object.defineProperty, f = Object.getOwnPropertyDescriptor, o = (a, s, p, H) => {\n  for (var r = H > 1 ? void 0 : H ? f(s, p) : s, i = a.length - 1, h; i >= 0; i--)\n    (h = a[i]) && (r = (H ? h(s, p, r) : h(r)) || r);\n  return H && r && c(s, p, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return l`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M216,36H88a4,4,0,0,0-4,4V84H40a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H168a4,4,0,0,0,4-4V172h44a4,4,0,0,0,4-4V40A4,4,0,0,0,216,36ZM164,212H44V92H164Zm48-48H172V88a4,4,0,0,0-4-4H92V44H212Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M216,34H88a6,6,0,0,0-6,6V82H40a6,6,0,0,0-6,6V216a6,6,0,0,0,6,6H168a6,6,0,0,0,6-6V174h42a6,6,0,0,0,6-6V40A6,6,0,0,0,216,34ZM162,210H46V94H162Zm48-48H174V88a6,6,0,0,0-6-6H94V46H210Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M216,40V168H168V88H88V40Z\" opacity=\"0.2\"/><path d=\"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z\"/>`\n  ]\n]);\nt.styles = g`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  V({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  V({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  V({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  V({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  n(\"ph-copy\")\n], t);\nexport {\n  t as PhCopy\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as c } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as l } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as H } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar f = Object.defineProperty, w = Object.getOwnPropertyDescriptor, o = (e, s, i, h) => {\n  for (var t = h > 1 ? void 0 : h ? w(s, i) : s, p = e.length - 1, n; p >= 0; p--)\n    (n = e[p]) && (t = (h ? n(s, i, t) : n(t)) || t);\n  return h && t && f(s, i, t), t;\n};\nlet a = class extends c {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var e;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${a.weightsMap.get((e = this.weight) != null ? e : \"regular\")}\n    </svg>`;\n  }\n};\na.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M220,48V96a4,4,0,0,1-4,4H168a4,4,0,0,1,0-8h38.34L184.89,70.54A84,84,0,0,0,66.8,69.85a4,4,0,1,1-5.6-5.72,92,92,0,0,1,129.34.76L212,86.34V48a4,4,0,0,1,8,0ZM189.2,186.15a83.44,83.44,0,0,1-58.68,23.91h-.47a83.52,83.52,0,0,1-58.94-24.6L49.66,164H88a4,4,0,0,0,0-8H40a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V169.66l21.46,21.45A91.43,91.43,0,0,0,130,218.06h.51a91.45,91.45,0,0,0,64.28-26.19,4,4,0,1,0-5.6-5.72Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M222,48V96a6,6,0,0,1-6,6H168a6,6,0,0,1,0-12h33.52L183.47,72a81.51,81.51,0,0,0-57.53-24h-.46A81.5,81.5,0,0,0,68.19,71.28a6,6,0,1,1-8.38-8.58,93.38,93.38,0,0,1,65.67-26.76H126a93.45,93.45,0,0,1,66,27.53l18,18V48a6,6,0,0,1,12,0ZM187.81,184.72a81.5,81.5,0,0,1-57.29,23.34h-.46a81.51,81.51,0,0,1-57.53-24L54.48,166H88a6,6,0,0,0,0-12H40a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V174.48l18,18.05a93.45,93.45,0,0,0,66,27.53h.52a93.38,93.38,0,0,0,65.67-26.76,6,6,0,1,0-8.38-8.58Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M228,48V96a12,12,0,0,1-12,12H168a12,12,0,0,1,0-24h19l-7.8-7.8a75.55,75.55,0,0,0-53.32-22.26h-.43A75.49,75.49,0,0,0,72.39,75.57,12,12,0,1,1,55.61,58.41a99.38,99.38,0,0,1,69.87-28.47H126A99.42,99.42,0,0,1,196.2,59.23L204,67V48a12,12,0,0,1,24,0ZM183.61,180.43a75.49,75.49,0,0,1-53.09,21.63h-.43A75.55,75.55,0,0,1,76.77,179.8L69,172H88a12,12,0,0,0,0-24H40a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V189l7.8,7.8A99.42,99.42,0,0,0,130,226.06h.56a99.38,99.38,0,0,0,69.87-28.47,12,12,0,0,0-16.78-17.16Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1-5.66-13.66L180.65,72a79.48,79.48,0,0,0-54.72-22.09h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27,96,96,0,0,1,192,60.7l18.36-18.36A8,8,0,0,1,224,48ZM186.41,183.29A80,80,0,0,1,75.35,184l18.31-18.31A8,8,0,0,0,88,152H40a8,8,0,0,0-8,8v48a8,8,0,0,0,13.66,5.66L64,195.3a95.42,95.42,0,0,0,66,26.76h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\" opacity=\"0.2\"/><path d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"/>`\n  ]\n]);\na.styles = H`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  l({ type: String, reflect: !0 })\n], a.prototype, \"size\", 2);\no([\n  l({ type: String, reflect: !0 })\n], a.prototype, \"weight\", 2);\no([\n  l({ type: String, reflect: !0 })\n], a.prototype, \"color\", 2);\no([\n  l({ type: Boolean, reflect: !0 })\n], a.prototype, \"mirrored\", 2);\na = o([\n  g(\"ph-arrows-clockwise\")\n], a);\nexport {\n  a as PhArrowsClockwise\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as n } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as A } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as v } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar g = Object.defineProperty, u = Object.getOwnPropertyDescriptor, l = (e, o, p, s) => {\n  for (var a = s > 1 ? void 0 : s ? u(o, p) : o, h = e.length - 1, H; h >= 0; h--)\n    (H = e[h]) && (a = (s ? H(o, p, a) : H(a)) || a);\n  return s && a && g(o, p, a), a;\n};\nlet t = class extends n {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var e;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((e = this.weight) != null ? e : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M235.85,157.52l-12-96A20,20,0,0,0,204,44H32A12,12,0,0,0,20,56v88a12,12,0,0,0,12,12H77.53l38.89,77.79A4,4,0,0,0,120,236a36,36,0,0,0,36-36V180h60a20,20,0,0,0,19.85-22.48ZM76,148H32a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H76Zm149,19.94a12,12,0,0,1-9,4.06H152a4,4,0,0,0-4,4v24a28,28,0,0,1-25.58,27.9L84,151.06V52H204a12,12,0,0,1,11.91,10.51l12,96A12,12,0,0,1,225,167.94Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M237.83,157.27l-12-96A22,22,0,0,0,204,42H32A14,14,0,0,0,18,56v88a14,14,0,0,0,14,14H76.29l38.34,76.68A6,6,0,0,0,120,238a38,38,0,0,0,38-38V182h58a22,22,0,0,0,21.83-24.73ZM74,146H32a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H74Zm149.5,20.62A9.89,9.89,0,0,1,216,170H152a6,6,0,0,0-6,6v24a26,26,0,0,1-22.42,25.75L86,150.58V54H204a10,10,0,0,1,9.92,8.76l12,96A9.89,9.89,0,0,1,223.5,166.62Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M239.82,157l-12-96A24,24,0,0,0,204,40H32A16,16,0,0,0,16,56v88a16,16,0,0,0,16,16H75.06l37.78,75.58A8,8,0,0,0,120,240a40,40,0,0,0,40-40V184h56a24,24,0,0,0,23.82-27ZM72,144H32V56H72Zm150,21.29a7.88,7.88,0,0,1-6,2.71H152a8,8,0,0,0-8,8v24a24,24,0,0,1-19.29,23.54L88,150.11V56H204a8,8,0,0,1,7.94,7l12,96A7.87,7.87,0,0,1,222,165.29Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M243.78,156.53l-12-96A28,28,0,0,0,204,36H32A20,20,0,0,0,12,56v88a20,20,0,0,0,20,20H72.58l36.69,73.37A12,12,0,0,0,120,244a44.05,44.05,0,0,0,44-44V188h52a28,28,0,0,0,27.78-31.47ZM68,140H36V60H68Zm151,22.65a4,4,0,0,1-3,1.35H152a12,12,0,0,0-12,12v24a20,20,0,0,1-13.18,18.8L92,149.17V60H204a4,4,0,0,1,4,3.5l12,96A4,4,0,0,1,219,162.65Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M239.82,157l-12-96A24,24,0,0,0,204,40H32A16,16,0,0,0,16,56v88a16,16,0,0,0,16,16H75.06l37.78,75.58A8,8,0,0,0,120,240a40,40,0,0,0,40-40V184h56a24,24,0,0,0,23.82-27ZM72,144H32V56H72Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M80,48V152H32a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8Z\" opacity=\"0.2\"/><path d=\"M239.82,157l-12-96A24,24,0,0,0,204,40H32A16,16,0,0,0,16,56v88a16,16,0,0,0,16,16H75.06l37.78,75.58A8,8,0,0,0,120,240a40,40,0,0,0,40-40V184h56a24,24,0,0,0,23.82-27ZM72,144H32V56H72Zm150,21.29a7.88,7.88,0,0,1-6,2.71H152a8,8,0,0,0-8,8v24a24,24,0,0,1-19.29,23.54L88,150.11V56H204a8,8,0,0,1,7.94,7l12,96A7.87,7.87,0,0,1,222,165.29Z\"/>`\n  ]\n]);\nt.styles = v`\n    :host {\n      display: contents;\n    }\n  `;\nl([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\nl([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\nl([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\nl([\n  i({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = l([\n  A(\"ph-thumbs-down\")\n], t);\nexport {\n  t as PhThumbsDown\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as n } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as Z } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as A } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar M = Object.defineProperty, c = Object.getOwnPropertyDescriptor, o = (e, s, p, h) => {\n  for (var t = h > 1 ? void 0 : h ? c(s, p) : s, l = e.length - 1, m; l >= 0; l--)\n    (m = e[l]) && (t = (h ? m(s, p, t) : m(t)) || t);\n  return h && t && M(s, p, t), t;\n};\nlet a = class extends Z {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var e;\n    return n`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${a.weightsMap.get((e = this.weight) != null ? e : \"regular\")}\n    </svg>`;\n  }\n};\na.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z\" opacity=\"0.2\"/><path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\"/>`\n  ]\n]);\na.styles = g`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  i({ type: String, reflect: !0 })\n], a.prototype, \"size\", 2);\no([\n  i({ type: String, reflect: !0 })\n], a.prototype, \"weight\", 2);\no([\n  i({ type: String, reflect: !0 })\n], a.prototype, \"color\", 2);\no([\n  i({ type: Boolean, reflect: !0 })\n], a.prototype, \"mirrored\", 2);\na = o([\n  A(\"ph-warning\")\n], a);\nexport {\n  a as PhWarning\n};\n",":host {\n  display: block;\n  color: var(--text-color-secondary, text-color('secondary'));\n}\n\n.message-wrapper {\n  background: var(--background-color-secondary, background-color('secondary'));\n  border-radius: var(--radius-m, $radius-m);\n  padding: var(--spacing-m, $spacing-m);\n  margin: 0 var(--spacing-l, $spacing-l);\n}\n\n.message-error {\n  text-align: center;\n  padding: var(--spacing-l, $spacing-l) var(--spacing-s, $spacing-s);\n  background: var(--background-color-secondary, background-color('secondary'));\n  border-radius: var(--radius-m, $radius-m);\n  margin: 0 var(--spacing-l, $spacing-l);\n\n  ph-warning {\n    display: block;\n    color: var(--text-color-inactive, text-color('inactive'));\n  }\n}\n\n.message-actions {\n  display: flex;\n  margin-top: var(--spacing-m, $spacing-m);\n  gap: var(--spacing-s, $spacing-s);\n  justify-content: end;\n  transition: opacity 0.2s ease-in-out;\n}\n\n.hidden {\n  opacity: 0;\n  pointer-events: none;\n}\n\n.sr-only {\n  @include screen-reader-only();\n}\n\n@keyframes rotate360 {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n","import { Component, Host, Prop, State, Element, h } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhCopy.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowsClockwise.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhThumbsDown.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhWarning.mjs'\nimport { copyToClipboard } from '@/utils/utils'\nimport {\n  TAnswerStatus,\n  type TChatInteraction,\n  type ChatMarkdownLinkHref,\n  type ChatMarkdownLinkTarget,\n  type ChatMarkdownLinkTitle,\n} from '@/types'\nimport { Store } from '@/StoreDecorator'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\n\n@Component({\n  tag: 'orama-chat-assistent-message',\n  styleUrl: 'orama-chat-assistent-message.scss',\n  scoped: true,\n})\nexport class OramaChatAssistentMessage {\n  @Element() htmlElement\n  @Prop() interaction: TChatInteraction\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n\n  @State() isCopied = false\n  handleCopyToClipboard = () => {\n    this.isCopied = true\n    setTimeout(() => (this.isCopied = false), 1000)\n    copyToClipboard(this.interaction.response)\n  }\n\n  @State() isDisliked = false\n  handleDislikeMessage = () => {\n    // todo: replace with actual dislike logic\n    this.isDisliked = !this.isDisliked\n  }\n\n  @Store('chat')\n  private chatStore: ChatStoreType\n\n  private handleRetryMessage = () => {\n    this.chatStore.state.chatService?.regenerateLatest()\n  }\n\n  render() {\n    if (this.interaction.status === 'loading') {\n      return (\n        <div class=\"message-wrapper\">\n          <orama-dots-loader />\n        </div>\n      )\n    }\n    if (this.interaction.status === 'error') {\n      return (\n        <div class=\"message-error\">\n          <ph-warning size={16} />\n          <orama-text styledAs=\"span\" inactive>\n            An error occurred while trying to search. Please try again.\n          </orama-text>\n        </div>\n      )\n    }\n\n    return (\n      <Host>\n        <orama-sources\n          sources={this.interaction.sources}\n          sourceBaseURL={this.chatStore.state.sourceBaseURL}\n          linksRel={this.chatStore.state.linksRel}\n          linksTarget={this.chatStore.state.linksTarget}\n        />\n        <div class=\"message-wrapper\">\n          {!this.interaction.response ? (\n            <orama-dots-loader />\n          ) : (\n            <orama-markdown\n              content={this.interaction.response}\n              chatMarkdownLinkTitle={this.chatMarkdownLinkTitle}\n              chatMarkdownLinkHref={this.chatMarkdownLinkHref}\n            />\n          )}\n\n          <div class={{ 'message-actions': true, hidden: this.interaction.status !== TAnswerStatus.done }}>\n            {this.interaction.latest && (\n              <orama-button\n                type=\"button\"\n                variant=\"icon\"\n                onClick={this.handleRetryMessage}\n                onKeyDown={this.handleRetryMessage}\n                aria-label=\"Retry message\"\n              >\n                <ph-arrows-clockwise size=\"16px\" />\n              </orama-button>\n            )}\n            <orama-button\n              type=\"button\"\n              variant=\"icon\"\n              onClick={this.handleCopyToClipboard}\n              onKeyDown={this.handleCopyToClipboard}\n              withTooltip={this.isCopied ? 'Copied!' : undefined}\n              aria-label=\"Copy message\"\n            >\n              <ph-copy size=\"16px\" />\n            </orama-button>\n            <orama-button\n              type=\"button\"\n              variant=\"icon\"\n              onClick={this.handleDislikeMessage}\n              onKeyDown={this.handleDislikeMessage}\n              aria-label=\"Dislike message\"\n            >\n              {this.isDisliked ? <ph-thumbs-down weight=\"fill\" size=\"16px\" /> : <ph-thumbs-down size=\"16px\" />}\n            </orama-button>\n          </div>\n        </div>\n      </Host>\n    )\n  }\n}\n","export class OramaClientNotInitializedError extends Error {\n  constructor() {\n    super('Orama Client is not initialized')\n  }\n}\n","export const STEMMERS = {\n    arabic: 'ar',\n    armenian: 'am',\n    bulgarian: 'bg',\n    czech: 'cz',\n    danish: 'dk',\n    dutch: 'nl',\n    english: 'en',\n    finnish: 'fi',\n    french: 'fr',\n    german: 'de',\n    greek: 'gr',\n    hungarian: 'hu',\n    indian: 'in',\n    indonesian: 'id',\n    irish: 'ie',\n    italian: 'it',\n    lithuanian: 'lt',\n    nepali: 'np',\n    norwegian: 'no',\n    portuguese: 'pt',\n    romanian: 'ro',\n    russian: 'ru',\n    serbian: 'rs',\n    slovenian: 'ru',\n    spanish: 'es',\n    swedish: 'se',\n    tamil: 'ta',\n    turkish: 'tr',\n    ukrainian: 'uk',\n    sanskrit: 'sk'\n};\nexport const SPLITTERS = {\n    dutch: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    english: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    french: /[^a-z0-9äâàéèëêïîöôùüûœç-]+/gim,\n    italian: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    norwegian: /[^a-z0-9_æøåÆØÅäÄöÖüÜ]+/gim,\n    portuguese: /[^a-z0-9à-úÀ-Ú]/gim,\n    russian: /[^a-z0-9а-яА-ЯёЁ]+/gim,\n    spanish: /[^a-z0-9A-Zá-úÁ-ÚñÑüÜ]+/gim,\n    swedish: /[^a-z0-9_åÅäÄöÖüÜ-]+/gim,\n    german: /[^a-z0-9A-ZäöüÄÖÜß]+/gim,\n    finnish: /[^a-z0-9äöÄÖ]+/gim,\n    danish: /[^a-z0-9æøåÆØÅ]+/gim,\n    hungarian: /[^a-z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ]+/gim,\n    romanian: /[^a-z0-9ăâîșțĂÂÎȘȚ]+/gim,\n    serbian: /[^a-z0-9čćžšđČĆŽŠĐ]+/gim,\n    turkish: /[^a-z0-9çÇğĞıİöÖşŞüÜ]+/gim,\n    lithuanian: /[^a-z0-9ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gim,\n    arabic: /[^a-z0-9أ-ي]+/gim,\n    nepali: /[^a-z0-9अ-ह]+/gim,\n    irish: /[^a-z0-9áéíóúÁÉÍÓÚ]+/gim,\n    indian: /[^a-z0-9अ-ह]+/gim,\n    armenian: /[^a-z0-9ա-ֆ]+/gim,\n    greek: /[^a-z0-9α-ωά-ώ]+/gim,\n    indonesian: /[^a-z0-9]+/gim,\n    ukrainian: /[^a-z0-9а-яА-ЯіїєІЇЄ]+/gim,\n    slovenian: /[^a-z0-9čžšČŽŠ]+/gim,\n    bulgarian: /[^a-z0-9а-яА-Я]+/gim,\n    tamil: /[^a-z0-9அ-ஹ]+/gim,\n    sanskrit: /[^a-z0-9A-Zāīūṛḷṃṁḥśṣṭḍṇṅñḻḹṝ]+/gim,\n    czech: /[^A-Z0-9a-zěščřžýáíéúůóťďĚŠČŘŽÝÁÍÉÓÚŮŤĎ-]+/gim\n};\nexport const SUPPORTED_LANGUAGES = Object.keys(STEMMERS);\nexport function getLocale(language) {\n    return language !== undefined && SUPPORTED_LANGUAGES.includes(language) ? STEMMERS[language] : undefined;\n}\n//# sourceMappingURL=languages.js.map","import { createError } from './errors.js';\nconst baseId = Date.now().toString().slice(5);\nlet lastId = 0;\nconst k = 1024;\nconst nano = BigInt(1e3);\nconst milli = BigInt(1e6);\nconst second = BigInt(1e9);\nexport const isServer = typeof window === 'undefined';\n/**\n * This value can be increased up to 100_000\n * But i don't know if this value change from nodejs to nodejs\n * So I will keep a safer value here.\n */\nexport const MAX_ARGUMENT_FOR_STACK = 65535;\n/**\n * This method is needed to used because of issues like: https://github.com/oramasearch/orama/issues/301\n * that issue is caused because the array that is pushed is huge (>100k)\n *\n * @example\n * ```ts\n * safeArrayPush(myArray, [1, 2])\n * ```\n */\nexport function safeArrayPush(arr, newArr) {\n    if (newArr.length < MAX_ARGUMENT_FOR_STACK) {\n        Array.prototype.push.apply(arr, newArr);\n    }\n    else {\n        const newArrLength = newArr.length;\n        for (let i = 0; i < newArrLength; i += MAX_ARGUMENT_FOR_STACK) {\n            Array.prototype.push.apply(arr, newArr.slice(i, i + MAX_ARGUMENT_FOR_STACK));\n        }\n    }\n}\nexport function sprintf(template, ...args) {\n    return template.replace(/%(?:(?<position>\\d+)\\$)?(?<width>-?\\d*\\.?\\d*)(?<type>[dfs])/g, function (...replaceArgs) {\n        const groups = replaceArgs[replaceArgs.length - 1];\n        const { width: rawWidth, type, position } = groups;\n        const replacement = position ? args[Number.parseInt(position) - 1] : args.shift();\n        const width = rawWidth === '' ? 0 : Number.parseInt(rawWidth);\n        switch (type) {\n            case 'd':\n                return replacement.toString().padStart(width, '0');\n            case 'f': {\n                let value = replacement;\n                const [padding, precision] = rawWidth.split('.').map((w) => Number.parseFloat(w));\n                if (typeof precision === 'number' && precision >= 0) {\n                    value = value.toFixed(precision);\n                }\n                return typeof padding === 'number' && padding >= 0 ? value.toString().padStart(width, '0') : value.toString();\n            }\n            case 's':\n                return width < 0\n                    ? replacement.toString().padEnd(-width, ' ')\n                    : replacement.toString().padStart(width, ' ');\n            default:\n                return replacement;\n        }\n    });\n}\nexport function formatBytes(bytes, decimals = 2) {\n    if (bytes === 0) {\n        return '0 Bytes';\n    }\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\nexport function isInsideWebWorker() {\n    // @ts-expect-error - WebWorker global scope\n    return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n}\nexport function isInsideNode() {\n    return typeof process !== 'undefined' && process.release && process.release.name === 'node';\n}\nexport function getNanosecondTimeViaPerformance() {\n    return BigInt(Math.floor(performance.now() * 1e6));\n}\nexport function formatNanoseconds(value) {\n    if (typeof value === 'number') {\n        value = BigInt(value);\n    }\n    if (value < nano) {\n        return `${value}ns`;\n    }\n    else if (value < milli) {\n        return `${value / nano}μs`;\n    }\n    else if (value < second) {\n        return `${value / milli}ms`;\n    }\n    return `${value / second}s`;\n}\nexport function getNanosecondsTime() {\n    if (isInsideWebWorker()) {\n        return getNanosecondTimeViaPerformance();\n    }\n    if (isInsideNode()) {\n        return process.hrtime.bigint();\n    }\n    if (typeof process !== 'undefined' && typeof process?.hrtime?.bigint === 'function') {\n        return process.hrtime.bigint();\n    }\n    if (typeof performance !== 'undefined') {\n        return getNanosecondTimeViaPerformance();\n    }\n    // @todo: fallback to V8 native method to get microtime\n    return BigInt(0);\n}\nexport function uniqueId() {\n    return `${baseId}-${lastId++}`;\n}\nexport function getOwnProperty(object, property) {\n    // Checks if `hasOwn` method is defined avoiding errors with older Node.js versions\n    if (Object.hasOwn === undefined) {\n        return Object.prototype.hasOwnProperty.call(object, property) ? object[property] : undefined;\n    }\n    return Object.hasOwn(object, property) ? object[property] : undefined;\n}\nexport function getTokenFrequency(token, tokens) {\n    let count = 0;\n    for (const t of tokens) {\n        if (t === token) {\n            count++;\n        }\n    }\n    return count;\n}\nexport function insertSortedValue(arr, el, compareFn = sortTokenScorePredicate) {\n    let low = 0;\n    let high = arr.length;\n    let mid;\n    while (low < high) {\n        mid = (low + high) >>> 1;\n        if (compareFn(el, arr[mid]) < 0) {\n            high = mid;\n        }\n        else {\n            low = mid + 1;\n        }\n    }\n    arr.splice(low, 0, el);\n    return arr;\n}\nexport function sortTokenScorePredicate(a, b) {\n    if (b[1] === a[1]) {\n        return a[0] - b[0];\n    }\n    return b[1] - a[1];\n}\n// Intersection function taken from https://github.com/lovasoa/fast_array_intersect.\n// MIT Licensed at the time of writing.\nexport function intersect(arrays) {\n    if (arrays.length === 0) {\n        return [];\n    }\n    else if (arrays.length === 1) {\n        return arrays[0];\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        if (arrays[i].length < arrays[0].length) {\n            const tmp = arrays[0];\n            arrays[0] = arrays[i];\n            arrays[i] = tmp;\n        }\n    }\n    const set = new Map();\n    for (const elem of arrays[0]) {\n        set.set(elem, 1);\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        let found = 0;\n        for (const elem of arrays[i]) {\n            const count = set.get(elem);\n            if (count === i) {\n                set.set(elem, count + 1);\n                found++;\n            }\n        }\n        if (found === 0)\n            return [];\n    }\n    return arrays[0].filter((e) => {\n        const count = set.get(e);\n        if (count !== undefined)\n            set.set(e, 0);\n        return count === arrays.length;\n    });\n}\nexport function getDocumentProperties(doc, paths) {\n    const properties = {};\n    const pathsLength = paths.length;\n    for (let i = 0; i < pathsLength; i++) {\n        const path = paths[i];\n        const pathTokens = path.split('.');\n        let current = doc;\n        const pathTokensLength = pathTokens.length;\n        for (let j = 0; j < pathTokensLength; j++) {\n            current = current[pathTokens[j]];\n            // We found an object but we were supposed to be done\n            if (typeof current === 'object') {\n                if (current !== null &&\n                    'lat' in current &&\n                    'lon' in current &&\n                    typeof current.lat === 'number' &&\n                    typeof current.lon === 'number') {\n                    current = properties[path] = current;\n                    break;\n                }\n                else if (!Array.isArray(current) && current !== null && j === pathTokensLength - 1) {\n                    current = undefined;\n                    break;\n                }\n            }\n            else if ((current === null || typeof current !== 'object') && j < pathTokensLength - 1) {\n                // We can't recurse anymore but we were supposed to\n                current = undefined;\n                break;\n            }\n        }\n        if (typeof current !== 'undefined') {\n            properties[path] = current;\n        }\n    }\n    return properties;\n}\nexport function getNested(obj, path) {\n    const props = getDocumentProperties(obj, [path]);\n    return props[path];\n}\nexport function flattenObject(obj, prefix = '') {\n    const result = {};\n    for (const key in obj) {\n        const prop = `${prefix}${key}`;\n        const objKey = obj[key];\n        if (typeof objKey === 'object' && objKey !== null) {\n            Object.assign(result, flattenObject(objKey, `${prop}.`));\n        }\n        else {\n            result[prop] = objKey;\n        }\n    }\n    return result;\n}\nconst mapDistanceToMeters = {\n    cm: 0.01,\n    m: 1,\n    km: 1000,\n    ft: 0.3048,\n    yd: 0.9144,\n    mi: 1609.344\n};\nexport function convertDistanceToMeters(distance, unit) {\n    const ratio = mapDistanceToMeters[unit];\n    if (ratio === undefined) {\n        throw new Error(createError('INVALID_DISTANCE_SUFFIX', distance).message);\n    }\n    return distance * ratio;\n}\nexport function removeVectorsFromHits(searchResult, vectorProperties) {\n    searchResult.hits = searchResult.hits.map((result) => ({\n        ...result,\n        document: {\n            ...result.document,\n            // Remove embeddings from the result\n            ...vectorProperties.reduce((acc, prop) => {\n                const path = prop.split('.');\n                const lastKey = path.pop();\n                let obj = acc;\n                for (const key of path) {\n                    obj[key] = obj[key] ?? {};\n                    obj = obj[key];\n                }\n                obj[lastKey] = null;\n                return acc;\n            }, result.document)\n        }\n    }));\n}\nexport function isPromise(obj) {\n    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n/**\n * Checks if the provided input is an async function or if the input is an array\n * containing at least one async function.\n *\n * @param func - A single function or an array of functions to check.\n *               Non-function values are ignored.\n * @returns `true` if the input is an async function or an array containing at least\n *          one async function, otherwise `false`.\n */\nexport function isAsyncFunction(func) {\n    if (Array.isArray(func)) {\n        return func.some(item => isAsyncFunction(item));\n    }\n    return func?.constructor?.name === 'AsyncFunction';\n}\nconst withIntersection = 'intersection' in (new Set());\nexport function setIntersection(...sets) {\n    // Fast path 1\n    if (sets.length === 0) {\n        return new Set();\n    }\n    // Fast path 2\n    if (sets.length === 1) {\n        return sets[0];\n    }\n    // Fast path 3\n    if (sets.length === 2) {\n        const set1 = sets[0];\n        const set2 = sets[1];\n        if (withIntersection) {\n            return set1.intersection(set2);\n        }\n        const result = new Set();\n        const base = set1.size < set2.size ? set1 : set2;\n        const other = base === set1 ? set2 : set1;\n        for (const value of base) {\n            if (other.has(value)) {\n                result.add(value);\n            }\n        }\n        return result;\n    }\n    // Slow path\n    // Find the smallest set\n    const min = {\n        index: 0,\n        size: sets[0].size,\n    };\n    for (let i = 1; i < sets.length; i++) {\n        if (sets[i].size < min.size) {\n            min.index = i;\n            min.size = sets[i].size;\n        }\n    }\n    if (withIntersection) {\n        let base = sets[min.index];\n        for (let i = 0; i < sets.length; i++) {\n            if (i === min.index) {\n                continue;\n            }\n            base = base.intersection(sets[i]);\n        }\n        return base;\n    }\n    // manual implementation:\n    // intersect all sets with the smallest set\n    const base = sets[min.index];\n    for (let i = 0; i < sets.length; i++) {\n        if (i === min.index) {\n            continue;\n        }\n        const other = sets[i];\n        for (const value of base) {\n            if (!other.has(value)) {\n                base.delete(value);\n            }\n        }\n    }\n    return base;\n}\nconst withUnion = 'union' in (new Set());\nexport function setUnion(set1, set2) {\n    if (withUnion) {\n        if (set1) {\n            return set1.union(set2);\n        }\n        return set2;\n    }\n    if (!set1) {\n        return new Set(set2);\n    }\n    return new Set([...set1, ...set2]);\n}\n// This code is taken from https://github.com/davidmarkclements/atomic-sleep, MIT licensed at the time of commit b8149d3ca276c84a54fa8fa1478f9cc79aabc15a.\n// All credits go to the original author (David Mark Clements, https://github.com/davidmarkclements).\nexport function sleep(ms) {\n    if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n        const nil = new Int32Array(new SharedArrayBuffer(4));\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        Atomics.wait(nil, 0, 0, Number(ms));\n    }\n    else {\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        const target = Date.now() + Number(ms);\n        while (target > Date.now()) { /* empty */ }\n    }\n}\n//# sourceMappingURL=utils.js.map","import { SUPPORTED_LANGUAGES } from './components/tokenizer/languages.js';\nimport { sprintf } from './utils.js';\nconst allLanguages = SUPPORTED_LANGUAGES.join('\\n - ');\nconst errors = {\n    NO_LANGUAGE_WITH_CUSTOM_TOKENIZER: 'Do not pass the language option to create when using a custom tokenizer.',\n    LANGUAGE_NOT_SUPPORTED: `Language \"%s\" is not supported.\\nSupported languages are:\\n - ${allLanguages}`,\n    INVALID_STEMMER_FUNCTION_TYPE: `config.stemmer property must be a function.`,\n    MISSING_STEMMER: `As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the \"%s\" stemmer from the package @orama/stemmers. See https://docs.orama.com/open-source/text-analysis/stemming for more information.`,\n    CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY: 'Custom stop words array must only contain strings.',\n    UNSUPPORTED_COMPONENT: `Unsupported component \"%s\".`,\n    COMPONENT_MUST_BE_FUNCTION: `The component \"%s\" must be a function.`,\n    COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS: `The component \"%s\" must be a function or an array of functions.`,\n    INVALID_SCHEMA_TYPE: `Unsupported schema type \"%s\" at \"%s\". Expected \"string\", \"boolean\" or \"number\" or array of them.`,\n    DOCUMENT_ID_MUST_BE_STRING: `Document id must be of type \"string\". Got \"%s\" instead.`,\n    DOCUMENT_ALREADY_EXISTS: `A document with id \"%s\" already exists.`,\n    DOCUMENT_DOES_NOT_EXIST: `A document with id \"%s\" does not exists.`,\n    MISSING_DOCUMENT_PROPERTY: `Missing searchable property \"%s\".`,\n    INVALID_DOCUMENT_PROPERTY: `Invalid document property \"%s\": expected \"%s\", got \"%s\"`,\n    UNKNOWN_INDEX: `Invalid property name \"%s\". Expected a wildcard string (\"*\") or array containing one of the following properties: %s`,\n    INVALID_BOOST_VALUE: `Boost value must be a number greater than, or less than 0.`,\n    INVALID_FILTER_OPERATION: `You can only use one operation per filter, you requested %d.`,\n    SCHEMA_VALIDATION_FAILURE: `Cannot insert document due schema validation failure on \"%s\" property.`,\n    INVALID_SORT_SCHEMA_TYPE: `Unsupported sort schema type \"%s\" at \"%s\". Expected \"string\" or \"number\".`,\n    CANNOT_SORT_BY_ARRAY: `Cannot configure sort for \"%s\" because it is an array (%s).`,\n    UNABLE_TO_SORT_ON_UNKNOWN_FIELD: `Unable to sort on unknown field \"%s\". Allowed fields: %s`,\n    SORT_DISABLED: `Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.`,\n    UNKNOWN_GROUP_BY_PROPERTY: `Unknown groupBy property \"%s\".`,\n    INVALID_GROUP_BY_PROPERTY: `Invalid groupBy property \"%s\". Allowed types: \"%s\", but given \"%s\".`,\n    UNKNOWN_FILTER_PROPERTY: `Unknown filter property \"%s\".`,\n    INVALID_VECTOR_SIZE: `Vector size must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_VECTOR_VALUE: `Vector value must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_INPUT_VECTOR: `Property \"%s\" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead.\\nInput vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,\n    WRONG_SEARCH_PROPERTY_TYPE: `Property \"%s\" is not searchable. Only \"string\" properties are searchable.`,\n    FACET_NOT_SUPPORTED: `Facet doens't support the type \"%s\".`,\n    INVALID_DISTANCE_SUFFIX: `Invalid distance suffix \"%s\". Valid suffixes are: cm, m, km, mi, yd, ft.`,\n    INVALID_SEARCH_MODE: `Invalid search mode \"%s\". Valid modes are: \"fulltext\", \"vector\", \"hybrid\".`,\n    MISSING_VECTOR_AND_SECURE_PROXY: `No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.`,\n    MISSING_TERM: `\"term\" is a required parameter when performing hybrid search. Please provide a search term.`,\n    INVALID_VECTOR_INPUT: `Invalid \"vector\" property. Expected an object with \"value\" and \"property\" properties, but got \"%s\" instead.`,\n    PLUGIN_CRASHED: `A plugin crashed during initialization. Please check the error message for more information:`,\n    PLUGIN_SECURE_PROXY_NOT_FOUND: `Could not find '@orama/secure-proxy-plugin' installed in your Orama instance.\\nPlease install it before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL: `Could not find a chat model defined in the secure proxy plugin configuration.\\nPlease provide a chat model before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT: `The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.`,\n    PLUGIN_COMPONENT_CONFLICT: `The component \"%s\" is already defined. The plugin \"%s\" is trying to redefine it.`,\n};\nexport function createError(code, ...args) {\n    const error = new Error(sprintf(errors[code] ?? `Unsupported Orama Error code: ${code}`, ...args));\n    error.code = code;\n    if ('captureStackTrace' in Error.prototype) {\n        Error.captureStackTrace(error);\n    }\n    return error;\n}\n//# sourceMappingURL=errors.js.map","export function createInternalDocumentIDStore() {\n    return {\n        idToInternalId: new Map(),\n        internalIdToId: [],\n        save,\n        load\n    };\n}\nexport function save(store) {\n    return {\n        internalIdToId: store.internalIdToId\n    };\n}\nexport function load(orama, raw) {\n    const { internalIdToId } = raw;\n    orama.internalDocumentIDStore.idToInternalId.clear();\n    orama.internalDocumentIDStore.internalIdToId = [];\n    const internalIdToIdLength = internalIdToId.length;\n    for (let i = 0; i < internalIdToIdLength; i++) {\n        const internalIdItem = internalIdToId[i];\n        orama.internalDocumentIDStore.idToInternalId.set(internalIdItem, i + 1);\n        orama.internalDocumentIDStore.internalIdToId.push(internalIdItem);\n    }\n}\nexport function getInternalDocumentId(store, id) {\n    if (typeof id === 'string') {\n        const internalId = store.idToInternalId.get(id);\n        if (internalId) {\n            return internalId;\n        }\n        const currentId = store.idToInternalId.size + 1;\n        store.idToInternalId.set(id, currentId);\n        store.internalIdToId.push(id);\n        return currentId;\n    }\n    if (id > store.internalIdToId.length) {\n        return getInternalDocumentId(store, id.toString());\n    }\n    return id;\n}\nexport function getDocumentIdFromInternalId(store, internalId) {\n    if (store.internalIdToId.length < internalId) {\n        throw new Error(`Invalid internalId ${internalId}`);\n    }\n    return store.internalIdToId[internalId - 1];\n}\n//# sourceMappingURL=internal-document-id-store.js.map","import { isAsyncFunction } from '../utils.js';\nexport const OBJECT_COMPONENTS = ['tokenizer', 'index', 'documentsStore', 'sorter'];\nexport const FUNCTION_COMPONENTS = [\n    'validateSchema',\n    'getDocumentIndexId',\n    'getDocumentProperties',\n    'formatElapsedTime'\n];\nexport const SINGLE_OR_ARRAY_COMPONENTS = [\n/* deprecated with v2.0.0-beta.5 */\n];\nexport function runSingleHook(hooks, orama, id, doc) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, id, doc);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, id, doc);\n        }\n    }\n}\nexport function runMultipleHook(hooks, orama, docsOrIds) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, docsOrIds);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, docsOrIds);\n        }\n    }\n}\nexport function runAfterSearch(hooks, db, params, language, results) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language, results);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language, results);\n        }\n    }\n}\nexport function runBeforeSearch(hooks, db, params, language) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language);\n        }\n    }\n}\nexport function runAfterCreate(hooks, db) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db);\n        }\n    }\n}\n//# sourceMappingURL=hooks.js.map","export const DEFAULT_SIMILARITY = 0.8;\nexport class VectorIndex {\n    size;\n    vectors = new Map();\n    constructor(size) {\n        this.size = size;\n    }\n    add(internalDocumentId, value) {\n        if (!(value instanceof Float32Array)) {\n            value = new Float32Array(value);\n        }\n        const magnitude = getMagnitude(value, this.size);\n        this.vectors.set(internalDocumentId, [magnitude, value]);\n    }\n    remove(internalDocumentId) {\n        this.vectors.delete(internalDocumentId);\n    }\n    find(vector, similarity, whereFiltersIDs) {\n        if (!(vector instanceof Float32Array)) {\n            vector = new Float32Array(vector);\n        }\n        const results = findSimilarVectors(vector, whereFiltersIDs, this.vectors, this.size, similarity);\n        return results;\n    }\n    toJSON() {\n        const vectors = [];\n        for (const [id, [magnitude, vector]] of this.vectors) {\n            vectors.push([id, [magnitude, Array.from(vector)]]);\n        }\n        return {\n            size: this.size,\n            vectors,\n        };\n    }\n    static fromJSON(json) {\n        const raw = json;\n        const index = new VectorIndex(raw.size);\n        for (const [id, [magnitude, vector]] of raw.vectors) {\n            index.vectors.set(id, [magnitude, new Float32Array(vector)]);\n        }\n        return index;\n    }\n}\nexport function getMagnitude(vector, vectorLength) {\n    let magnitude = 0;\n    for (let i = 0; i < vectorLength; i++) {\n        magnitude += vector[i] * vector[i];\n    }\n    return Math.sqrt(magnitude);\n}\n// @todo: Write plugins for Node and Browsers to use parallel computation for this function\nexport function findSimilarVectors(targetVector, keys, vectors, length, threshold) {\n    const targetMagnitude = getMagnitude(targetVector, length);\n    const similarVectors = [];\n    const base = keys ? keys : vectors.keys();\n    for (const vectorId of base) {\n        const entry = vectors.get(vectorId);\n        if (!entry) {\n            continue;\n        }\n        const magnitude = entry[0];\n        const vector = entry[1];\n        let dotProduct = 0;\n        for (let i = 0; i < length; i++) {\n            dotProduct += targetVector[i] * vector[i];\n        }\n        const similarity = dotProduct / (targetMagnitude * magnitude);\n        if (similarity >= threshold) {\n            similarVectors.push([vectorId, similarity]);\n        }\n    }\n    return similarVectors;\n}\n//# sourceMappingURL=vector.js.map","export function getByID(db, id) {\n    return db.documentsStore.get(db.data.docs, id);\n}\nexport function count(db) {\n    return db.documentsStore.count(db.data.docs);\n}\n//# sourceMappingURL=docs.js.map","export const MODE_FULLTEXT_SEARCH = 'fulltext';\nexport const MODE_HYBRID_SEARCH = 'hybrid';\nexport const MODE_VECTOR_SEARCH = 'vector';\n//# sourceMappingURL=constants.js.map","import { createError } from '../errors.js';\nimport { getNested } from '../utils.js';\nfunction sortAsc(a, b) {\n    return a[1] - b[1];\n}\nfunction sortDesc(a, b) {\n    return b[1] - a[1];\n}\nfunction sortingPredicateBuilder(order = 'desc') {\n    return order.toLowerCase() === 'asc' ? sortAsc : sortDesc;\n}\nexport function getFacets(orama, results, facetsConfig) {\n    const facets = {};\n    const allIDs = results.map(([id]) => id);\n    const allDocs = orama.documentsStore.getMultiple(orama.data.docs, allIDs);\n    const facetKeys = Object.keys(facetsConfig);\n    const properties = orama.index.getSearchablePropertiesWithTypes(orama.data.index);\n    for (const facet of facetKeys) {\n        let values;\n        // Hack to guarantee the same order of ranges as specified by the user\n        // TODO: Revisit this once components land\n        if (properties[facet] === 'number') {\n            const { ranges } = facetsConfig[facet];\n            const rangesLength = ranges.length;\n            const tmp = Array.from({ length: rangesLength });\n            for (let i = 0; i < rangesLength; i++) {\n                const range = ranges[i];\n                tmp[i] = [`${range.from}-${range.to}`, 0];\n            }\n            values = Object.fromEntries(tmp);\n        }\n        facets[facet] = {\n            count: 0,\n            values: values ?? {}\n        };\n    }\n    const allDocsLength = allDocs.length;\n    for (let i = 0; i < allDocsLength; i++) {\n        const doc = allDocs[i];\n        for (const facet of facetKeys) {\n            const facetValue = facet.includes('.') ? getNested(doc, facet) : doc[facet];\n            const propertyType = properties[facet];\n            const facetValues = facets[facet].values;\n            switch (propertyType) {\n                case 'number': {\n                    const ranges = facetsConfig[facet].ranges;\n                    calculateNumberFacetBuilder(ranges, facetValues)(facetValue);\n                    break;\n                }\n                case 'number[]': {\n                    const alreadyInsertedValues = new Set();\n                    const ranges = facetsConfig[facet].ranges;\n                    const calculateNumberFacet = calculateNumberFacetBuilder(ranges, facetValues, alreadyInsertedValues);\n                    for (const v of facetValue) {\n                        calculateNumberFacet(v);\n                    }\n                    break;\n                }\n                case 'boolean':\n                case 'enum':\n                case 'string': {\n                    calculateBooleanStringOrEnumFacetBuilder(facetValues, propertyType)(facetValue);\n                    break;\n                }\n                case 'boolean[]':\n                case 'enum[]':\n                case 'string[]': {\n                    const alreadyInsertedValues = new Set();\n                    const innerType = propertyType === 'boolean[]' ? 'boolean' : 'string';\n                    const calculateBooleanStringOrEnumFacet = calculateBooleanStringOrEnumFacetBuilder(facetValues, innerType, alreadyInsertedValues);\n                    for (const v of facetValue) {\n                        calculateBooleanStringOrEnumFacet(v);\n                    }\n                    break;\n                }\n                default:\n                    throw createError('FACET_NOT_SUPPORTED', propertyType);\n            }\n        }\n    }\n    // TODO: We are looping again with the same previous keys, should we creat a single loop instead?\n    for (const facet of facetKeys) {\n        const currentFacet = facets[facet];\n        // Count the number of values for each facet\n        currentFacet.count = Object.keys(currentFacet.values).length;\n        // Sort only string-based facets\n        if (properties[facet] === 'string') {\n            const stringFacetDefinition = facetsConfig[facet];\n            const sortingPredicate = sortingPredicateBuilder(stringFacetDefinition.sort);\n            currentFacet.values = Object.fromEntries(Object.entries(currentFacet.values)\n                .sort(sortingPredicate)\n                .slice(stringFacetDefinition.offset ?? 0, stringFacetDefinition.limit ?? 10));\n        }\n    }\n    return facets;\n}\nfunction calculateNumberFacetBuilder(ranges, values, alreadyInsertedValues) {\n    return (facetValue) => {\n        for (const range of ranges) {\n            const value = `${range.from}-${range.to}`;\n            if (alreadyInsertedValues?.has(value)) {\n                continue;\n            }\n            if (facetValue >= range.from && facetValue <= range.to) {\n                if (values[value] === undefined) {\n                    values[value] = 1;\n                }\n                else {\n                    values[value]++;\n                    alreadyInsertedValues?.add(value);\n                }\n            }\n        }\n    };\n}\nfunction calculateBooleanStringOrEnumFacetBuilder(values, propertyType, alreadyInsertedValues) {\n    const defaultValue = propertyType === 'boolean' ? 'false' : '';\n    return (facetValue) => {\n        // String or boolean based facets\n        const value = facetValue?.toString() ?? defaultValue;\n        if (alreadyInsertedValues?.has(value)) {\n            return;\n        }\n        values[value] = (values[value] ?? 0) + 1;\n        alreadyInsertedValues?.add(value);\n    };\n}\n//# sourceMappingURL=facets.js.map","import { createError } from '../errors.js';\nimport { getNested, intersect, safeArrayPush } from '../utils.js';\nimport { getDocumentIdFromInternalId } from './internal-document-id-store.js';\nconst DEFAULT_REDUCE = {\n    reducer: (_, acc, res, index) => {\n        acc[index] = res;\n        return acc;\n    },\n    getInitialValue: (length) => Array.from({ length })\n};\nconst ALLOWED_TYPES = ['string', 'number', 'boolean'];\nexport function getGroups(orama, results, groupBy) {\n    const properties = groupBy.properties;\n    const propertiesLength = properties.length;\n    const schemaProperties = orama.index.getSearchablePropertiesWithTypes(orama.data.index);\n    for (let i = 0; i < propertiesLength; i++) {\n        const property = properties[i];\n        if (typeof schemaProperties[property] === 'undefined') {\n            throw createError('UNKNOWN_GROUP_BY_PROPERTY', property);\n        }\n        if (!ALLOWED_TYPES.includes(schemaProperties[property])) {\n            throw createError('INVALID_GROUP_BY_PROPERTY', property, ALLOWED_TYPES.join(', '), schemaProperties[property]);\n        }\n    }\n    const allIDs = results.map(([id]) => getDocumentIdFromInternalId(orama.internalDocumentIDStore, id));\n    // allDocs is already sorted by the sortBy algorithm\n    // We leverage on that to limit the number of documents returned\n    const allDocs = orama.documentsStore.getMultiple(orama.data.docs, allIDs);\n    const allDocsLength = allDocs.length;\n    const returnedCount = groupBy.maxResult || Number.MAX_SAFE_INTEGER;\n    const listOfValues = [];\n    // We want to understand which documents have which values\n    // and group them by the property and values\n    const g = {};\n    for (let i = 0; i < propertiesLength; i++) {\n        const groupByKey = properties[i];\n        const group = {\n            property: groupByKey,\n            perValue: {}\n        };\n        const values = new Set();\n        for (let j = 0; j < allDocsLength; j++) {\n            const doc = allDocs[j];\n            const value = getNested(doc, groupByKey);\n            // we don't want to consider undefined values\n            if (typeof value === 'undefined') {\n                continue;\n            }\n            const keyValue = typeof value !== 'boolean' ? value : '' + value;\n            const perValue = group.perValue[keyValue] ?? {\n                indexes: [],\n                count: 0\n            };\n            if (perValue.count >= returnedCount) {\n                // We stop early because for this value we react the limit\n                continue;\n            }\n            // We use the index to keep track of the original order\n            perValue.indexes.push(j);\n            perValue.count++;\n            group.perValue[keyValue] = perValue;\n            values.add(value);\n        }\n        listOfValues.push(Array.from(values));\n        g[groupByKey] = group;\n    }\n    const combinations = calculateCombination(listOfValues);\n    const combinationsLength = combinations.length;\n    const groups = [];\n    for (let i = 0; i < combinationsLength; i++) {\n        const combination = combinations[i];\n        const combinationLength = combination.length;\n        const group = {\n            values: [],\n            indexes: []\n        };\n        const indexes = [];\n        for (let j = 0; j < combinationLength; j++) {\n            const value = combination[j];\n            const property = properties[j];\n            indexes.push(g[property].perValue[(typeof value !== 'boolean' ? value : '' + value)].indexes);\n            group.values.push(value);\n        }\n        // We leverage on the index to sort the results by the original order\n        group.indexes = intersect(indexes).sort((a, b) => a - b);\n        // don't generate empty groups\n        if (group.indexes.length === 0) {\n            continue;\n        }\n        groups.push(group);\n    }\n    const groupsLength = groups.length;\n    const res = Array.from({ length: groupsLength });\n    for (let i = 0; i < groupsLength; i++) {\n        const group = groups[i];\n        const reduce = (groupBy.reduce || DEFAULT_REDUCE);\n        const docs = group.indexes.map((index) => {\n            return {\n                id: allIDs[index],\n                score: results[index][1],\n                document: allDocs[index]\n            };\n        });\n        const func = reduce.reducer.bind(null, group.values);\n        const initialValue = reduce.getInitialValue(group.indexes.length);\n        const aggregationValue = docs.reduce(func, initialValue);\n        res[i] = {\n            values: group.values,\n            result: aggregationValue\n        };\n    }\n    return res;\n}\nfunction calculateCombination(arrs, index = 0) {\n    if (index + 1 === arrs.length)\n        return arrs[index].map((item) => [item]);\n    const head = arrs[index];\n    const c = calculateCombination(arrs, index + 1);\n    const combinations = [];\n    for (const value of head) {\n        for (const combination of c) {\n            const result = [value];\n            safeArrayPush(result, combination);\n            combinations.push(result);\n        }\n    }\n    return combinations;\n}\n//# sourceMappingURL=groups.js.map","import { getFacets } from '../components/facets.js';\nimport { getGroups } from '../components/groups.js';\nimport { runAfterSearch, runBeforeSearch } from '../components/hooks.js';\nimport { getInternalDocumentId } from '../components/internal-document-id-store.js';\nimport { createError } from '../errors.js';\nimport { getNanosecondsTime, removeVectorsFromHits, sortTokenScorePredicate } from '../utils.js';\nimport { count } from './docs.js';\nimport { fetchDocuments, fetchDocumentsWithDistinct } from './search.js';\nexport function innerFullTextSearch(orama, params, language) {\n    const { term, properties } = params;\n    const index = orama.data.index;\n    // Get searchable string properties\n    let propertiesToSearch = orama.caches['propertiesToSearch'];\n    if (!propertiesToSearch) {\n        const propertiesToSearchWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n        propertiesToSearch = orama.index.getSearchableProperties(index);\n        propertiesToSearch = propertiesToSearch.filter((prop) => propertiesToSearchWithTypes[prop].startsWith('string'));\n        orama.caches['propertiesToSearch'] = propertiesToSearch;\n    }\n    if (properties && properties !== '*') {\n        for (const prop of properties) {\n            if (!propertiesToSearch.includes(prop)) {\n                throw createError('UNKNOWN_INDEX', prop, propertiesToSearch.join(', '));\n            }\n        }\n        propertiesToSearch = propertiesToSearch.filter((prop) => properties.includes(prop));\n    }\n    // If filters are enabled, we need to get the IDs of the documents that match the filters.\n    const hasFilters = Object.keys(params.where ?? {}).length > 0;\n    let whereFiltersIDs;\n    if (hasFilters) {\n        whereFiltersIDs = orama.index.searchByWhereClause(index, orama.tokenizer, params.where, language);\n    }\n    let uniqueDocsIDs;\n    // We need to perform the search if:\n    // - we have a search term\n    // - or we have properties to search\n    //   in this case, we need to return all the documents that contains at least one of the given properties\n    const threshold = params.threshold !== undefined && params.threshold !== null ? params.threshold : 1;\n    if (term || properties) {\n        const docsCount = count(orama);\n        uniqueDocsIDs = orama.index.search(index, term || '', orama.tokenizer, language, propertiesToSearch, params.exact || false, params.tolerance || 0, params.boost || {}, applyDefault(params.relevance), docsCount, whereFiltersIDs, threshold);\n    }\n    else {\n        // Tokenizer returns empty array and the search term is empty as well.\n        // We return all the documents.\n        const docIds = whereFiltersIDs\n            ? Array.from(whereFiltersIDs)\n            : Object.keys(orama.documentsStore.getAll(orama.data.docs));\n        uniqueDocsIDs = docIds.map((k) => [+k, 0]);\n    }\n    return uniqueDocsIDs;\n}\nexport function fullTextSearch(orama, params, language) {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const vectorProperties = Object.keys(orama.data.index.vectorIndexes);\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        const { limit = 10, offset = 0, distinctOn, includeVectors = false } = params;\n        const isPreflight = params.preflight === true;\n        let uniqueDocsArray = innerFullTextSearch(orama, params, language);\n        if (params.sortBy) {\n            if (typeof params.sortBy === 'function') {\n                const ids = uniqueDocsArray.map(([id]) => id);\n                const docs = orama.documentsStore.getMultiple(orama.data.docs, ids);\n                const docsWithIdAndScore = docs.map((d, i) => [\n                    uniqueDocsArray[i][0],\n                    uniqueDocsArray[i][1],\n                    d\n                ]);\n                docsWithIdAndScore.sort(params.sortBy);\n                uniqueDocsArray = docsWithIdAndScore.map(([id, score]) => [id, score]);\n            }\n            else {\n                uniqueDocsArray = orama.sorter\n                    .sortBy(orama.data.sorting, uniqueDocsArray, params.sortBy)\n                    .map(([id, score]) => [getInternalDocumentId(orama.internalDocumentIDStore, id), score]);\n            }\n        }\n        else {\n            uniqueDocsArray = uniqueDocsArray.sort(sortTokenScorePredicate);\n        }\n        let results;\n        if (!isPreflight) {\n            results = distinctOn\n                ? fetchDocumentsWithDistinct(orama, uniqueDocsArray, offset, limit, distinctOn)\n                : fetchDocuments(orama, uniqueDocsArray, offset, limit);\n        }\n        const searchResult = {\n            elapsed: {\n                formatted: '',\n                raw: 0\n            },\n            hits: [],\n            count: uniqueDocsArray.length\n        };\n        if (typeof results !== 'undefined') {\n            searchResult.hits = results.filter(Boolean);\n            if (!includeVectors) {\n                removeVectorsFromHits(searchResult, vectorProperties);\n            }\n        }\n        if (shouldCalculateFacets) {\n            const facets = getFacets(orama, uniqueDocsArray, params.facets);\n            searchResult.facets = facets;\n        }\n        if (params.groupBy) {\n            searchResult.groups = getGroups(orama, uniqueDocsArray, params.groupBy);\n        }\n        searchResult.elapsed = orama.formatElapsedTime(getNanosecondsTime() - timeStart);\n        return searchResult;\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const searchResult = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, searchResult);\n        }\n        return searchResult;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    return performSearchLogic();\n}\nexport const defaultBM25Params = {\n    k: 1.2,\n    b: 0.75,\n    d: 0.5\n};\nfunction applyDefault(bm25Relevance) {\n    const r = bm25Relevance ?? {};\n    r.k = r.k ?? defaultBM25Params.k;\n    r.b = r.b ?? defaultBM25Params.b;\n    r.d = r.d ?? defaultBM25Params.d;\n    return r;\n}\n//# sourceMappingURL=search-fulltext.js.map","import { getNanosecondsTime, formatNanoseconds, sortTokenScorePredicate } from '../utils.js';\nimport { getFacets } from '../components/facets.js';\nimport { createError } from '../errors.js';\nimport { getGroups } from '../components/groups.js';\nimport { getDocumentIdFromInternalId } from '../components/internal-document-id-store.js';\nimport { runBeforeSearch, runAfterSearch } from '../components/hooks.js';\nimport { DEFAULT_SIMILARITY } from '../trees/vector.js';\nexport function innerVectorSearch(orama, params, language) {\n    const vector = params.vector;\n    if (vector && (!('value' in vector) || !('property' in vector))) {\n        throw createError('INVALID_VECTOR_INPUT', Object.keys(vector).join(', '));\n    }\n    const vectorIndex = orama.data.index.vectorIndexes[vector.property];\n    const vectorSize = vectorIndex.node.size;\n    if (vector?.value.length !== vectorSize) {\n        if (vector?.property === undefined || vector?.value.length === undefined) {\n            throw createError('INVALID_INPUT_VECTOR', 'undefined', vectorSize, 'undefined');\n        }\n        throw createError('INVALID_INPUT_VECTOR', vector.property, vectorSize, vector.value.length);\n    }\n    const index = orama.data.index;\n    let whereFiltersIDs;\n    const hasFilters = Object.keys(params.where ?? {}).length > 0;\n    if (hasFilters) {\n        whereFiltersIDs = orama.index.searchByWhereClause(index, orama.tokenizer, params.where, language);\n    }\n    return vectorIndex.node.find(vector.value, params.similarity ?? DEFAULT_SIMILARITY, whereFiltersIDs);\n}\nexport function searchVector(orama, params, language = 'english') {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const results = innerVectorSearch(orama, params, language)\n            .sort(sortTokenScorePredicate);\n        let facetsResults = [];\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        if (shouldCalculateFacets) {\n            const facets = getFacets(orama, results, params.facets);\n            facetsResults = facets;\n        }\n        const vectorProperty = params.vector.property;\n        const includeVectors = params.includeVectors ?? false;\n        const limit = params.limit ?? 10;\n        const offset = params.offset ?? 0;\n        const docs = Array.from({ length: limit });\n        for (let i = 0; i < limit; i++) {\n            const result = results[i + offset];\n            if (!result) {\n                break;\n            }\n            const doc = orama.data.docs.docs[result[0]];\n            if (doc) {\n                if (!includeVectors) {\n                    doc[vectorProperty] = null;\n                }\n                const newDoc = {\n                    id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, result[0]),\n                    score: result[1],\n                    document: doc\n                };\n                docs[i] = newDoc;\n            }\n        }\n        let groups = [];\n        if (params.groupBy) {\n            groups = getGroups(orama, results, params.groupBy);\n        }\n        const timeEnd = getNanosecondsTime();\n        const elapsedTime = timeEnd - timeStart;\n        return {\n            count: results.length,\n            hits: docs.filter(Boolean),\n            elapsed: {\n                raw: Number(elapsedTime),\n                formatted: formatNanoseconds(elapsedTime)\n            },\n            ...(facetsResults ? { facets: facetsResults } : {}),\n            ...(groups ? { groups } : {})\n        };\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const results = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, results);\n        }\n        return results;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    // Sync path\n    return performSearchLogic();\n}\n//# sourceMappingURL=search-vector.js.map","import { getNanosecondsTime, formatNanoseconds, removeVectorsFromHits } from '../utils.js';\nimport { getFacets } from '../components/facets.js';\nimport { getGroups } from '../components/groups.js';\nimport { fetchDocuments } from './search.js';\nimport { innerFullTextSearch } from './search-fulltext.js';\nimport { innerVectorSearch } from './search-vector.js';\nimport { runAfterSearch, runBeforeSearch } from '../components/hooks.js';\nexport function innerHybridSearch(orama, params, language) {\n    const fullTextIDs = minMaxScoreNormalization(innerFullTextSearch(orama, params, language));\n    const vectorIDs = innerVectorSearch(orama, params, language);\n    const hybridWeights = params.hybridWeights;\n    return mergeAndRankResults(fullTextIDs, vectorIDs, params.term ?? '', hybridWeights);\n}\nexport function hybridSearch(orama, params, language) {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const uniqueTokenScores = innerHybridSearch(orama, params, language);\n        let facetsResults;\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        if (shouldCalculateFacets) {\n            facetsResults = getFacets(orama, uniqueTokenScores, params.facets);\n        }\n        let groups;\n        if (params.groupBy) {\n            groups = getGroups(orama, uniqueTokenScores, params.groupBy);\n        }\n        const offset = params.offset ?? 0;\n        const limit = params.limit ?? 10;\n        const results = fetchDocuments(orama, uniqueTokenScores, offset, limit).filter(Boolean);\n        const timeEnd = getNanosecondsTime();\n        const returningResults = {\n            count: uniqueTokenScores.length,\n            elapsed: {\n                raw: Number(timeEnd - timeStart),\n                formatted: formatNanoseconds(timeEnd - timeStart)\n            },\n            hits: results,\n            ...(facetsResults ? { facets: facetsResults } : {}),\n            ...(groups ? { groups } : {})\n        };\n        const includeVectors = params.includeVectors ?? false;\n        if (!includeVectors) {\n            const vectorProperties = Object.keys(orama.data.index.vectorIndexes);\n            removeVectorsFromHits(returningResults, vectorProperties);\n        }\n        return returningResults;\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const results = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, results);\n        }\n        return results;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    return performSearchLogic();\n}\nfunction extractScore(token) {\n    return token[1];\n}\nfunction minMaxScoreNormalization(results) {\n    // In this case I disabled the `prefer-spread` rule because spread seems to be slower\n    // eslint-disable-next-line prefer-spread\n    const maxScore = Math.max.apply(Math, results.map(extractScore));\n    return results.map(([id, score]) => [id, score / maxScore]);\n}\nfunction normalizeScore(score, maxScore) {\n    return score / maxScore;\n}\nfunction hybridScoreBuilder(textWeight, vectorWeight) {\n    return (textScore, vectorScore) => textScore * textWeight + vectorScore * vectorWeight;\n}\nfunction mergeAndRankResults(textResults, vectorResults, query, hybridWeights) {\n    // eslint-disable-next-line prefer-spread\n    const maxTextScore = Math.max.apply(Math, textResults.map(extractScore));\n    // eslint-disable-next-line prefer-spread\n    const maxVectorScore = Math.max.apply(Math, vectorResults.map(extractScore));\n    const hasHybridWeights = hybridWeights && hybridWeights.text && hybridWeights.vector;\n    const { text: textWeight, vector: vectorWeight } = hasHybridWeights ? hybridWeights : getQueryWeights(query);\n    const mergedResults = new Map();\n    const textResultsLength = textResults.length;\n    const hybridScore = hybridScoreBuilder(textWeight, vectorWeight);\n    for (let i = 0; i < textResultsLength; i++) {\n        const [id, score] = textResults[i];\n        const normalizedScore = normalizeScore(score, maxTextScore);\n        const hybridScoreValue = hybridScore(normalizedScore, 0);\n        mergedResults.set(id, hybridScoreValue);\n    }\n    const vectorResultsLength = vectorResults.length;\n    for (let i = 0; i < vectorResultsLength; i++) {\n        const [resultId, score] = vectorResults[i];\n        const normalizedScore = normalizeScore(score, maxVectorScore);\n        const existingRes = mergedResults.get(resultId) ?? 0;\n        mergedResults.set(resultId, existingRes + hybridScore(0, normalizedScore));\n    }\n    return [...mergedResults].sort((a, b) => b[1] - a[1]);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction getQueryWeights(query) {\n    // In the next versions of Orama, we will ship a plugin containing a ML model to adjust the weights\n    // based on whether the query is keyword-focused, conceptual, etc.\n    // For now, we just return a fixed value.\n    return {\n        text: 0.5,\n        vector: 0.5\n    };\n}\n//# sourceMappingURL=search-hybrid.js.map","import { getDocumentIdFromInternalId } from '../components/internal-document-id-store.js';\nimport { createError } from '../errors.js';\nimport { getNested } from '../utils.js';\nimport { MODE_FULLTEXT_SEARCH, MODE_HYBRID_SEARCH, MODE_VECTOR_SEARCH } from '../constants.js';\nimport { fullTextSearch } from './search-fulltext.js';\nimport { searchVector } from './search-vector.js';\nimport { hybridSearch } from './search-hybrid.js';\nexport function search(orama, params, language) {\n    const mode = params.mode ?? MODE_FULLTEXT_SEARCH;\n    if (mode === MODE_FULLTEXT_SEARCH) {\n        return fullTextSearch(orama, params, language);\n    }\n    if (mode === MODE_VECTOR_SEARCH) {\n        return searchVector(orama, params);\n    }\n    if (mode === MODE_HYBRID_SEARCH) {\n        return hybridSearch(orama, params);\n    }\n    throw createError('INVALID_SEARCH_MODE', mode);\n}\nexport function fetchDocumentsWithDistinct(orama, uniqueDocsArray, offset, limit, distinctOn) {\n    const docs = orama.data.docs;\n    // Keep track which values we already seen\n    const values = new Map();\n    // We cannot know how many results we will have in the end,\n    // so we need cannot pre-allocate the array.\n    const results = [];\n    const resultIDs = new Set();\n    const uniqueDocsArrayLength = uniqueDocsArray.length;\n    let count = 0;\n    for (let i = 0; i < uniqueDocsArrayLength; i++) {\n        const idAndScore = uniqueDocsArray[i];\n        // If there are no more results, just break the loop\n        if (typeof idAndScore === 'undefined') {\n            continue;\n        }\n        const [id, score] = idAndScore;\n        if (resultIDs.has(id)) {\n            continue;\n        }\n        const doc = orama.documentsStore.get(docs, id);\n        const value = getNested(doc, distinctOn);\n        if (typeof value === 'undefined' || values.has(value)) {\n            continue;\n        }\n        values.set(value, true);\n        count++;\n        // We shouldn't consider the document if it's not in the offset range\n        if (count <= offset) {\n            continue;\n        }\n        results.push({ id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, id), score, document: doc });\n        resultIDs.add(id);\n        // reached the limit, break the loop\n        if (count >= offset + limit) {\n            break;\n        }\n    }\n    return results;\n}\nexport function fetchDocuments(orama, uniqueDocsArray, offset, limit) {\n    const docs = orama.data.docs;\n    const results = Array.from({\n        length: limit\n    });\n    const resultIDs = new Set();\n    // We already have the list of ALL the document IDs containing the search terms.\n    // We loop over them starting from a positional value \"offset\" and ending at \"offset + limit\"\n    // to provide pagination capabilities to the search.\n    for (let i = offset; i < limit + offset; i++) {\n        const idAndScore = uniqueDocsArray[i];\n        // If there are no more results, just break the loop\n        if (typeof idAndScore === 'undefined') {\n            break;\n        }\n        const [id, score] = idAndScore;\n        if (!resultIDs.has(id)) {\n            // We retrieve the full document only AFTER making sure that we really want it.\n            // We never retrieve the full document preventively.\n            const fullDoc = orama.documentsStore.get(docs, id);\n            results[i] = { id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, id), score, document: fullDoc };\n            resultIDs.add(id);\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=search.js.map","import { createError } from '../errors.js';\nimport { search } from './search.js';\nconst ORAMA_SECURE_PROXY_PLUGIN_NAME = 'orama-secure-proxy';\nexport class AnswerSession {\n    db;\n    proxy = null;\n    config;\n    abortController = null;\n    lastInteractionParams = null;\n    chatModel = null;\n    conversationID;\n    messages = [];\n    events;\n    initPromise;\n    state = [];\n    constructor(db, config) {\n        this.db = db;\n        this.config = config;\n        this.init();\n        this.messages = config.initialMessages || [];\n        this.events = config.events || {};\n        this.conversationID = config.conversationID || this.generateRandomID();\n    }\n    async ask(query) {\n        await this.initPromise;\n        let output = '';\n        for await (const msg of await this.askStream(query)) {\n            output += msg;\n        }\n        return output;\n    }\n    async askStream(query) {\n        await this.initPromise;\n        return this.fetchAnswer(query);\n    }\n    abortAnswer() {\n        this.abortController?.abort();\n        this.state[this.state.length - 1].aborted = true;\n        this.triggerStateChange();\n    }\n    getMessages() {\n        return this.messages;\n    }\n    clearSession() {\n        this.messages = [];\n        this.state = [];\n    }\n    regenerateLast({ stream = true }) {\n        if (this.state.length === 0 || this.messages.length === 0) {\n            throw new Error('No messages to regenerate');\n        }\n        const isLastMessageAssistant = this.messages.at(-1)?.role === 'assistant';\n        if (!isLastMessageAssistant) {\n            throw createError('ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT');\n        }\n        this.messages.pop();\n        this.state.pop();\n        if (stream) {\n            return this.askStream(this.lastInteractionParams);\n        }\n        return this.ask(this.lastInteractionParams);\n    }\n    async *fetchAnswer(params) {\n        if (!this.chatModel) {\n            throw createError('PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL');\n        }\n        this.abortController = new AbortController();\n        this.lastInteractionParams = params;\n        const interactionId = this.generateRandomID();\n        this.messages.push({ role: 'user', content: params.term ?? '' });\n        this.state.push({\n            interactionId,\n            aborted: false,\n            loading: true,\n            query: params.term ?? '',\n            response: '',\n            sources: null,\n            translatedQuery: null,\n            error: false,\n            errorMessage: null\n        });\n        const stateIdx = this.state.length - 1;\n        this.addEmptyAssistantMessage();\n        this.triggerStateChange();\n        try {\n            const sources = await search(this.db, params);\n            this.state[stateIdx].sources = sources;\n            this.triggerStateChange();\n            for await (const msg of this.proxy.chatStream({ model: this.chatModel, messages: this.messages })) {\n                yield msg;\n                this.state[stateIdx].response += msg;\n                this.messages.findLast((msg) => msg.role === 'assistant').content += msg;\n                this.triggerStateChange();\n            }\n        }\n        catch (err) {\n            if (err.name === 'AbortError') {\n                this.state[stateIdx].aborted = true;\n            }\n            else {\n                this.state[stateIdx].error = true;\n                this.state[stateIdx].errorMessage = err.toString();\n            }\n            this.triggerStateChange();\n        }\n        this.state[stateIdx].loading = false;\n        this.triggerStateChange();\n        return this.state[stateIdx].response;\n    }\n    generateRandomID(length = 24) {\n        return Array.from({ length }, () => Math.floor(Math.random() * 36).toString(36)).join('');\n    }\n    triggerStateChange() {\n        if (this.events.onStateChange) {\n            this.events.onStateChange(this.state);\n        }\n    }\n    async init() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const self = this;\n        async function getPlugin() {\n            return await self.db.plugins.find((plugin) => plugin.name === ORAMA_SECURE_PROXY_PLUGIN_NAME);\n        }\n        const plugin = await getPlugin();\n        if (!plugin) {\n            throw createError('PLUGIN_SECURE_PROXY_NOT_FOUND');\n        }\n        const pluginExtras = plugin.extra;\n        this.proxy = pluginExtras.proxy;\n        if (this.config.systemPrompt) {\n            this.messages.push({ role: 'system', content: this.config.systemPrompt });\n        }\n        if (pluginExtras?.pluginParams?.chat?.model) {\n            this.chatModel = pluginExtras.pluginParams.chat.model;\n        }\n        else {\n            throw createError('PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL');\n        }\n    }\n    addEmptyAssistantMessage() {\n        this.messages.push({ role: 'assistant', content: '' });\n    }\n}\n//# sourceMappingURL=answer-session.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n    // Pi\n    [x, y] = [y, (2 * x + 3 * y) % 5];\n    SHA3_PI.push(2 * (5 * y + x));\n    // Rotational\n    SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n    // Iota\n    let t = _0n;\n    for (let j = 0; j < 7; j++) {\n        R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n        if (R & _2n)\n            t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n    }\n    _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n    const B = new Uint32Array(5 * 2);\n    // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n    for (let round = 24 - rounds; round < 24; round++) {\n        // Theta θ\n        for (let x = 0; x < 10; x++)\n            B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n        for (let x = 0; x < 10; x += 2) {\n            const idx1 = (x + 8) % 10;\n            const idx0 = (x + 2) % 10;\n            const B0 = B[idx0];\n            const B1 = B[idx0 + 1];\n            const Th = rotlH(B0, B1, 1) ^ B[idx1];\n            const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n            for (let y = 0; y < 50; y += 10) {\n                s[x + y] ^= Th;\n                s[x + y + 1] ^= Tl;\n            }\n        }\n        // Rho (ρ) and Pi (π)\n        let curH = s[2];\n        let curL = s[3];\n        for (let t = 0; t < 24; t++) {\n            const shift = SHA3_ROTL[t];\n            const Th = rotlH(curH, curL, shift);\n            const Tl = rotlL(curH, curL, shift);\n            const PI = SHA3_PI[t];\n            curH = s[PI];\n            curL = s[PI + 1];\n            s[PI] = Th;\n            s[PI + 1] = Tl;\n        }\n        // Chi (χ)\n        for (let y = 0; y < 50; y += 10) {\n            for (let x = 0; x < 10; x++)\n                B[x] = s[y + x];\n            for (let x = 0; x < 10; x++)\n                s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n        }\n        // Iota (ι)\n        s[0] ^= SHA3_IOTA_H[round];\n        s[1] ^= SHA3_IOTA_L[round];\n    }\n    clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n    // NOTE: we accept arguments in bytes instead of bits here.\n    constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n        super();\n        this.pos = 0;\n        this.posOut = 0;\n        this.finished = false;\n        this.destroyed = false;\n        this.enableXOF = false;\n        this.blockLen = blockLen;\n        this.suffix = suffix;\n        this.outputLen = outputLen;\n        this.enableXOF = enableXOF;\n        this.rounds = rounds;\n        // Can be passed from user as dkLen\n        anumber(outputLen);\n        // 1600 = 5x5 matrix of 64bit.  1600 bits === 200 bytes\n        // 0 < blockLen < 200\n        if (!(0 < blockLen && blockLen < 200))\n            throw new Error('only keccak-f1600 function is supported');\n        this.state = new Uint8Array(200);\n        this.state32 = u32(this.state);\n    }\n    clone() {\n        return this._cloneInto();\n    }\n    keccak() {\n        swap32IfBE(this.state32);\n        keccakP(this.state32, this.rounds);\n        swap32IfBE(this.state32);\n        this.posOut = 0;\n        this.pos = 0;\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { blockLen, state } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            for (let i = 0; i < take; i++)\n                state[this.pos++] ^= data[pos++];\n            if (this.pos === blockLen)\n                this.keccak();\n        }\n        return this;\n    }\n    finish() {\n        if (this.finished)\n            return;\n        this.finished = true;\n        const { state, suffix, pos, blockLen } = this;\n        // Do the padding\n        state[pos] ^= suffix;\n        if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n            this.keccak();\n        state[blockLen - 1] ^= 0x80;\n        this.keccak();\n    }\n    writeInto(out) {\n        aexists(this, false);\n        abytes(out);\n        this.finish();\n        const bufferOut = this.state;\n        const { blockLen } = this;\n        for (let pos = 0, len = out.length; pos < len;) {\n            if (this.posOut >= blockLen)\n                this.keccak();\n            const take = Math.min(blockLen - this.posOut, len - pos);\n            out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n            this.posOut += take;\n            pos += take;\n        }\n        return out;\n    }\n    xofInto(out) {\n        // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n        if (!this.enableXOF)\n            throw new Error('XOF is not possible for this instance');\n        return this.writeInto(out);\n    }\n    xof(bytes) {\n        anumber(bytes);\n        return this.xofInto(new Uint8Array(bytes));\n    }\n    digestInto(out) {\n        aoutput(out, this);\n        if (this.finished)\n            throw new Error('digest() was already called');\n        this.writeInto(out);\n        this.destroy();\n        return out;\n    }\n    digest() {\n        return this.digestInto(new Uint8Array(this.outputLen));\n    }\n    destroy() {\n        this.destroyed = true;\n        clean(this.state);\n    }\n    _cloneInto(to) {\n        const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n        to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n        to.state32.set(this.state32);\n        to.pos = this.pos;\n        to.posOut = this.posOut;\n        to.finished = this.finished;\n        to.rounds = rounds;\n        // Suffix can change in cSHAKE\n        to.suffix = suffix;\n        to.outputLen = outputLen;\n        to.enableXOF = enableXOF;\n        to.destroyed = this.destroyed;\n        return to;\n    }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n  let entropy = \"\";\n\n  while (entropy.length < length) {\n    entropy = entropy + Math.floor(random() * 36).toString(36);\n  }\n  return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hernández Serrano\n */\nfunction bufToBigInt(buf) {\n  let bits = BigInt(8);\n\n  let value = BigInt(0);\n  for (const i of buf.values()) {\n    const bi = BigInt(i);\n    value = (value << bits) + bi;\n  }\n  return value;\n}\n\nconst hash = (input = \"\") => {\n  // Drop the first character because it will bias the histogram\n  // to the left.\n  return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n  String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n  alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n  globalObj = typeof global !== \"undefined\"\n    ? global\n    : typeof window !== \"undefined\"\n    ? window\n    : {},\n  random = Math.random,\n} = {}) => {\n  const globals = Object.keys(globalObj).toString();\n  const sourceString = globals.length\n    ? globals + createEntropy(bigLength, random)\n    : createEntropy(bigLength, random);\n\n  return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n  return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n  // Fallback if the user does not pass in a CSPRNG. This should be OK\n  // because we don't rely solely on the random number generator for entropy.\n  // We also use the host fingerprint, current time, and a session counter.\n  random = Math.random,\n  counter = createCounter(Math.floor(random() * initialCountMax)),\n  length = defaultLength,\n  fingerprint = createFingerprint({ random }),\n} = {}) => {\n  return function cuid2() {\n    const firstLetter = randomLetter(random);\n\n    // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n    // by shortening the input to the hash function a little.\n    const time = Date.now().toString(36);\n    const count = counter().toString(36);\n\n    // The salt should be long enough to be globally unique across the full\n    // length of the hash. For simplicity, we use the same length as the\n    // intended id output.\n    const salt = createEntropy(length, random);\n    const hashInput = `${time + salt + count + fingerprint}`;\n\n    return `${firstLetter + hash(hashInput).substring(1, length)}`;\n  };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n  const length = id.length;\n  const regex = /^[a-z][0-9a-z]+$/;\n\n  try {\n    if (\n      typeof id === \"string\" &&\n      length >= minLength &&\n      length <= maxLength &&\n      regex.test(id)\n    )\n      return true;\n  } finally {\n  }\n\n  return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n","const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n","export class EventsStreamTransformer extends TransformStream {\n    constructor() {\n        const decoder = new TextDecoder('utf-8', { ignoreBOM: false });\n        let buffer;\n        let currentEvent;\n        super({\n            start() {\n                buffer = '';\n                currentEvent = { data: '' };\n            },\n            transform(chunk, controller) {\n                const chunkText = decoder.decode(chunk);\n                buffer += chunkText;\n                let lineEnd;\n                while ((lineEnd = /\\r\\n|\\n|\\r/.exec(buffer)) !== null) {\n                    const line = buffer.substring(0, lineEnd.index);\n                    buffer = buffer.substring(lineEnd.index + lineEnd[0].length);\n                    if (line.length === 0) {\n                        controller.enqueue(currentEvent);\n                        currentEvent = { data: '' };\n                    }\n                    else if (!line.startsWith(':')) {\n                        const firstColonMatch = /:/.exec(line);\n                        if (!firstColonMatch) {\n                            // @ts-expect-error - Temporary fix\n                            currentEvent[line] = '';\n                            continue;\n                        }\n                        const key = line.substring(0, firstColonMatch.index);\n                        const value = line.substring(firstColonMatch.index + 1);\n                        // @ts-expect-error - Temporary fix\n                        currentEvent[key] = value?.replace(/^\\u0020/, '');\n                    }\n                }\n            },\n        });\n    }\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nconst dedent = createDedent({});\nexport default dedent;\nfunction createDedent(options) {\n  dedent.withOptions = newOptions => createDedent(_objectSpread(_objectSpread({}, options), newOptions));\n  return dedent;\n  function dedent(strings, ...values) {\n    const raw = typeof strings === \"string\" ? [strings] : strings.raw;\n    const {\n      escapeSpecialCharacters = Array.isArray(strings)\n    } = options;\n\n    // first, perform interpolation\n    let result = \"\";\n    for (let i = 0; i < raw.length; i++) {\n      let next = raw[i];\n      if (escapeSpecialCharacters) {\n        // handle escaped newlines, backticks, and interpolation characters\n        next = next.replace(/\\\\\\n[ \\t]*/g, \"\").replace(/\\\\`/g, \"`\").replace(/\\\\\\$/g, \"$\").replace(/\\\\\\{/g, \"{\");\n      }\n      result += next;\n      if (i < values.length) {\n        // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n        result += values[i];\n      }\n    }\n\n    // now strip indentation\n    const lines = result.split(\"\\n\");\n    let mindent = null;\n    for (const l of lines) {\n      const m = l.match(/^(\\s+)\\S+/);\n      if (m) {\n        const indent = m[1].length;\n        if (!mindent) {\n          // this is the first indented line\n          mindent = indent;\n        } else {\n          mindent = Math.min(mindent, indent);\n        }\n      }\n    }\n    if (mindent !== null) {\n      const m = mindent; // appease TypeScript\n      result = lines\n      // https://github.com/typescript-eslint/typescript-eslint/issues/7140\n      // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n      .map(l => l[0] === \" \" || l[0] === \"\\t\" ? l.slice(m) : l).join(\"\\n\");\n    }\n\n    // dedent eats leading and trailing whitespace too\n    result = result.trim();\n    if (escapeSpecialCharacters) {\n      // handle escaped newlines at the end to ensure they don't get stripped too\n      result = result.replace(/\\\\n/g, \"\\n\");\n    }\n    return result;\n  }\n}\n","import { EventsStreamTransformer } from './lib/event-stream.js';\nimport dedent from 'dedent';\nexport class OramaInterface {\n    constructor(config) {\n        Object.defineProperty(this, \"baseURL\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"masterAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"writeAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"readAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.baseURL = config.baseURL;\n        this.masterAPIKey = config.masterAPIKey;\n        this.writeAPIKey = config.writeAPIKey;\n        this.readAPIKey = config.readAPIKey;\n    }\n    async request(config) {\n        const remoteURL = new URL(config.url, this.baseURL);\n        const headers = new Headers();\n        headers.append('Content-Type', 'application/json');\n        const requestObject = {\n            method: config.method,\n            headers,\n        };\n        if (config.body && config.method !== 'GET') {\n            requestObject.body = JSON.stringify(config.body);\n        }\n        if (config.body && config.method === 'GET') {\n            remoteURL.search = new URLSearchParams(config.body).toString();\n        }\n        const APIKey = this.getAPIKey(config.securityLevel);\n        switch (true) {\n            case config.method !== 'GET' && config.securityLevel !== 'read-query':\n                headers.append('Authorization', `Bearer ${APIKey}`);\n                break;\n            case config.method === 'GET' && config.securityLevel === 'master':\n                headers.append('Authorization', `Bearer ${APIKey}`);\n                break;\n            case config.method === 'GET' || config.securityLevel === 'read-query':\n                remoteURL.searchParams.append('api-key', APIKey);\n                break;\n        }\n        const request = await fetch(remoteURL.toString(), requestObject);\n        if (!request.ok) {\n            throw new Error(dedent(`\n                Request to \"${config.url}\" failed with status ${request.status}:\n                ${await request.text()}\n            `));\n        }\n        return request.json();\n    }\n    async requestStream(config) {\n        const remoteURL = new URL(config.url, this.baseURL);\n        const headers = new Headers();\n        headers.append('Content-Type', 'application/json');\n        const APIKey = this.getAPIKey(config.securityLevel);\n        remoteURL.searchParams.append('api-key', APIKey);\n        const response = await fetch(remoteURL.toString(), {\n            body: JSON.stringify(config.body),\n            headers,\n            method: config.method,\n        });\n        if (!response.ok) {\n            throw new Error(dedent(`\n                Request to \"${config.url}\" failed with status ${response.status}:\n                ${await response.text()}\n            `));\n        }\n        if (response.body === null) {\n            throw new Error(`Response body is null for \"${config.url}\"`);\n        }\n        return response.body?.pipeThrough(new EventsStreamTransformer());\n    }\n    getAPIKey(securityLevel) {\n        switch (securityLevel) {\n            case 'master':\n                if (!this.masterAPIKey) {\n                    throw new Error('Master API key is required for this operation');\n                }\n                return this.masterAPIKey;\n            case 'write':\n                if (!this.writeAPIKey) {\n                    throw new Error('Write API key is required for this operation');\n                }\n                return this.writeAPIKey;\n            case 'read':\n            case 'read-query':\n                if (!this.readAPIKey) {\n                    throw new Error('Read API key is required for this operation');\n                }\n                return this.readAPIKey;\n        }\n    }\n}\nexport function safeJSONParse(data, silent = true) {\n    try {\n        return JSON.parse(data);\n    }\n    catch (error) {\n        if (!silent) {\n            console.warn('Recovered from failed JSON parsing with error:', error);\n        }\n        return data;\n    }\n}\n","export const knownActions = {\n    PERFORM_ORAMA_SEARCH: 'PERFORM_ORAMA_SEARCH',\n    OPTIMIZE_QUERY: 'OPTIMIZE_QUERY',\n    GENERATE_QUERIES: 'GENERATE_QUERIES',\n    ACTION_PLAN: 'ACTION_PLAN',\n    ASK_FOLLOWUP: 'ASK_FOLLOWUP',\n    GIVE_REPLY: 'GIVE_REPLY',\n    GET_SEGMENT: 'GET_SEGMENT',\n    GET_TRIGGER: 'GET_TRIGGER',\n    SELECT_SEGMENT_PROBABILITY: 'SELECT_SEGMENT_PROBABILITY',\n    SELECT_TRIGGER_PROBABILITY: 'SELECT_TRIGGER_PROBABILITY',\n};\nexport const knownActionsArray = Object.values(knownActions);\n","const dntGlobals = {};\nexport const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);\nfunction createMergeProxy(baseObj, extObj) {\n    return new Proxy(baseObj, {\n        get(_target, prop, _receiver) {\n            if (prop in extObj) {\n                return extObj[prop];\n            }\n            else {\n                return baseObj[prop];\n            }\n        },\n        set(_target, prop, value) {\n            if (prop in extObj) {\n                delete extObj[prop];\n            }\n            baseObj[prop] = value;\n            return true;\n        },\n        deleteProperty(_target, prop) {\n            let success = false;\n            if (prop in extObj) {\n                delete extObj[prop];\n                success = true;\n            }\n            if (prop in baseObj) {\n                delete baseObj[prop];\n                success = true;\n            }\n            return success;\n        },\n        ownKeys(_target) {\n            const baseKeys = Reflect.ownKeys(baseObj);\n            const extKeys = Reflect.ownKeys(extObj);\n            const extKeysSet = new Set(extKeys);\n            return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];\n        },\n        defineProperty(_target, prop, desc) {\n            if (prop in extObj) {\n                delete extObj[prop];\n            }\n            Reflect.defineProperty(baseObj, prop, desc);\n            return true;\n        },\n        getOwnPropertyDescriptor(_target, prop) {\n            if (prop in extObj) {\n                return Reflect.getOwnPropertyDescriptor(extObj, prop);\n            }\n            else {\n                return Reflect.getOwnPropertyDescriptor(baseObj, prop);\n            }\n        },\n        has(_target, prop) {\n            return prop in extObj || prop in baseObj;\n        },\n    });\n}\n","export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n    if (def.description) {\n        try {\n            return {\n                ...jsonSchema,\n                ...JSON.parse(def.description),\n            };\n        }\n        catch { }\n    }\n    return jsonSchema;\n};\nexport const defaultOptions = {\n    name: undefined,\n    $refStrategy: \"root\",\n    basePath: [\"#\"],\n    effectStrategy: \"input\",\n    pipeStrategy: \"all\",\n    dateStrategy: \"format:date-time\",\n    mapStrategy: \"entries\",\n    removeAdditionalStrategy: \"passthrough\",\n    allowedAdditionalProperties: true,\n    rejectedAdditionalProperties: false,\n    definitionPath: \"definitions\",\n    target: \"jsonSchema7\",\n    strictUnions: false,\n    definitions: {},\n    errorMessages: false,\n    markdownDescription: false,\n    patternStrategy: \"escape\",\n    applyRegexFlags: false,\n    emailStrategy: \"format:email\",\n    base64Strategy: \"contentEncoding:base64\",\n    nameStrategy: \"ref\",\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n    ? {\n        ...defaultOptions,\n        name: options,\n    }\n    : {\n        ...defaultOptions,\n        ...options,\n    });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n    const _options = getDefaultOptions(options);\n    const currentPath = _options.name !== undefined\n        ? [..._options.basePath, _options.definitionPath, _options.name]\n        : _options.basePath;\n    return {\n        ..._options,\n        currentPath: currentPath,\n        propertyPath: undefined,\n        seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n            def._def,\n            {\n                def: def._def,\n                path: [..._options.basePath, _options.definitionPath, name],\n                // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n                jsonSchema: undefined,\n            },\n        ])),\n    };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n    if (!refs?.errorMessages)\n        return;\n    if (errorMessage) {\n        res.errorMessage = {\n            ...res.errorMessage,\n            [key]: errorMessage,\n        };\n    }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n    res[key] = value;\n    addErrorMessage(res, key, errorMessage, refs);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParsedType = exports.ZodParsedType = exports.objectUtil = exports.util = void 0;\nvar util;\n(function (util) {\n    util.assertEqual = (val) => val;\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array\n            .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n            .join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (exports.util = util = {}));\nvar objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (exports.objectUtil = objectUtil = {}));\nexports.ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nconst getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return exports.ZodParsedType.undefined;\n        case \"string\":\n            return exports.ZodParsedType.string;\n        case \"number\":\n            return isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;\n        case \"boolean\":\n            return exports.ZodParsedType.boolean;\n        case \"function\":\n            return exports.ZodParsedType.function;\n        case \"bigint\":\n            return exports.ZodParsedType.bigint;\n        case \"symbol\":\n            return exports.ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return exports.ZodParsedType.array;\n            }\n            if (data === null) {\n                return exports.ZodParsedType.null;\n            }\n            if (data.then &&\n                typeof data.then === \"function\" &&\n                data.catch &&\n                typeof data.catch === \"function\") {\n                return exports.ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return exports.ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return exports.ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return exports.ZodParsedType.date;\n            }\n            return exports.ZodParsedType.object;\n        default:\n            return exports.ZodParsedType.unknown;\n    }\n};\nexports.getParsedType = getParsedType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodError = exports.quotelessJson = exports.ZodIssueCode = void 0;\nconst util_1 = require(\"./helpers/util\");\nexports.ZodIssueCode = util_1.util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexports.quotelessJson = quotelessJson;\nclass ZodError extends Error {\n    get errors() {\n        return this.issues;\n    }\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util_1.util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n                fieldErrors[sub.path[0]].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nexports.ZodError = ZodError;\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../helpers/util\");\nconst ZodError_1 = require(\"../ZodError\");\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodError_1.ZodIssueCode.invalid_type:\n            if (issue.received === util_1.ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodError_1.ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util_1.util.jsonStringifyReplacer)}`;\n            break;\n        case ZodError_1.ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util_1.util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util_1.util.joinValues(issue.options)}`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util_1.util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util_1.util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodError_1.ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact\n                    ? `exactly equal to `\n                    : issue.inclusive\n                        ? `greater than or equal to `\n                        : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact\n                    ? `exactly equal to `\n                    : issue.inclusive\n                        ? `greater than or equal to `\n                        : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodError_1.ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `less than or equal to`\n                        : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `less than or equal to`\n                        : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `smaller than or equal to`\n                        : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodError_1.ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodError_1.ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodError_1.ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodError_1.ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util_1.util.assertNever(issue);\n    }\n    return { message };\n};\nexports.default = errorMap;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorMap = exports.setErrorMap = exports.defaultErrorMap = void 0;\nconst en_1 = __importDefault(require(\"./locales/en\"));\nexports.defaultErrorMap = en_1.default;\nlet overrideErrorMap = en_1.default;\nfunction setErrorMap(map) {\n    overrideErrorMap = map;\n}\nexports.setErrorMap = setErrorMap;\nfunction getErrorMap() {\n    return overrideErrorMap;\n}\nexports.getErrorMap = getErrorMap;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.addIssueToContext = exports.EMPTY_PATH = exports.makeIssue = void 0;\nconst errors_1 = require(\"../errors\");\nconst en_1 = __importDefault(require(\"../locales/en\"));\nconst makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nexports.makeIssue = makeIssue;\nexports.EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n    const overrideMap = (0, errors_1.getErrorMap)();\n    const issue = (0, exports.makeIssue)({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap, // contextual error map is first priority\n            ctx.schemaErrorMap, // then schema-bound map if available\n            overrideMap, // then global override map\n            overrideMap === en_1.default ? undefined : en_1.default, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexports.addIssueToContext = addIssueToContext;\nclass ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return exports.INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return exports.INVALID;\n            if (value.status === \"aborted\")\n                return exports.INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" &&\n                (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexports.ParseStatus = ParseStatus;\nexports.INVALID = Object.freeze({\n    status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nexports.DIRTY = DIRTY;\nconst OK = (value) => ({ status: \"valid\", value });\nexports.OK = OK;\nconst isAborted = (x) => x.status === \"aborted\";\nexports.isAborted = isAborted;\nconst isDirty = (x) => x.status === \"dirty\";\nexports.isDirty = isDirty;\nconst isValid = (x) => x.status === \"valid\";\nexports.isValid = isValid;\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nexports.isAsync = isAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorUtil = void 0;\nvar errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (exports.errorUtil = errorUtil = {}));\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolean = exports.bigint = exports.array = exports.any = exports.coerce = exports.ZodFirstPartyTypeKind = exports.late = exports.ZodSchema = exports.Schema = exports.custom = exports.ZodReadonly = exports.ZodPipeline = exports.ZodBranded = exports.BRAND = exports.ZodNaN = exports.ZodCatch = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransformer = exports.ZodEffects = exports.ZodPromise = exports.ZodNativeEnum = exports.ZodEnum = exports.ZodLiteral = exports.ZodLazy = exports.ZodFunction = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodDate = exports.ZodBoolean = exports.ZodBigInt = exports.ZodNumber = exports.ZodString = exports.datetimeRegex = exports.ZodType = void 0;\nexports.NEVER = exports.void = exports.unknown = exports.union = exports.undefined = exports.tuple = exports.transformer = exports.symbol = exports.string = exports.strictObject = exports.set = exports.record = exports.promise = exports.preprocess = exports.pipeline = exports.ostring = exports.optional = exports.onumber = exports.oboolean = exports.object = exports.number = exports.nullable = exports.null = exports.never = exports.nativeEnum = exports.nan = exports.map = exports.literal = exports.lazy = exports.intersection = exports.instanceof = exports.function = exports.enum = exports.effect = exports.discriminatedUnion = exports.date = void 0;\nconst errors_1 = require(\"./errors\");\nconst errorUtil_1 = require(\"./helpers/errorUtil\");\nconst parseUtil_1 = require(\"./helpers/parseUtil\");\nconst util_1 = require(\"./helpers/util\");\nconst ZodError_1 = require(\"./ZodError\");\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (this._key instanceof Array) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if ((0, parseUtil_1.isValid)(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError_1.ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        var _a, _b;\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nclass ZodType {\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return (0, util_1.getParsedType)(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: (0, util_1.getParsedType)(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new parseUtil_1.ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: (0, util_1.getParsedType)(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if ((0, parseUtil_1.isAsync)(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        var _a;\n        const ctx = {\n            common: {\n                issues: [],\n                async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: (0, util_1.getParsedType)(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    \"~validate\"(data) {\n        var _a, _b;\n        const ctx = {\n            common: {\n                issues: [],\n                async: !!this[\"~standard\"].async,\n            },\n            path: [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: (0, util_1.getParsedType)(data),\n        };\n        if (!this[\"~standard\"].async) {\n            try {\n                const result = this._parseSync({ data, path: [], parent: ctx });\n                return (0, parseUtil_1.isValid)(result)\n                    ? {\n                        value: result.value,\n                    }\n                    : {\n                        issues: ctx.common.issues,\n                    };\n            }\n            catch (err) {\n                if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(\"encountered\")) {\n                    this[\"~standard\"].async = true;\n                }\n                ctx.common = {\n                    issues: [],\n                    async: true,\n                };\n            }\n        }\n        return this._parseAsync({ data, path: [], parent: ctx }).then((result) => (0, parseUtil_1.isValid)(result)\n            ? {\n                value: result.value,\n            }\n            : {\n                issues: ctx.common.issues,\n            });\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n                async: true,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: (0, util_1.getParsedType)(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await ((0, parseUtil_1.isAsync)(maybeAsyncResult)\n            ? maybeAsyncResult\n            : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodError_1.ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\"\n                    ? refinementData(val, ctx)\n                    : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n        this[\"~standard\"] = {\n            version: 1,\n            vendor: \"zod\",\n            validate: (data) => this[\"~validate\"](data),\n        };\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nexports.ZodType = ZodType;\nexports.Schema = ZodType;\nexports.ZodSchema = ZodType;\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n    let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n    if (args.precision) {\n        regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        regex = `${regex}(\\\\.\\\\d+)?`;\n    }\n    return regex;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nexports.datetimeRegex = datetimeRegex;\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nfunction isValidJWT(jwt, alg) {\n    if (!jwtRegex.test(jwt))\n        return false;\n    try {\n        const [header] = jwt.split(\".\");\n        // Convert base64url to base64\n        const base64 = header\n            .replace(/-/g, \"+\")\n            .replace(/_/g, \"/\")\n            .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n        const decoded = JSON.parse(atob(base64));\n        if (typeof decoded !== \"object\" || decoded === null)\n            return false;\n        if (!decoded.typ || !decoded.alg)\n            return false;\n        if (alg && decoded.alg !== alg)\n            return false;\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\nfunction isValidCidr(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nclass ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const status = new parseUtil_1.ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        (0, parseUtil_1.addIssueToContext)(ctx, {\n                            code: ZodError_1.ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        (0, parseUtil_1.addIssueToContext)(ctx, {\n                            code: ZodError_1.ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"email\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"emoji\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"uuid\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"cuid\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"ulid\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch (_a) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"url\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"regex\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"duration\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"ip\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"jwt\") {\n                if (!isValidJWT(input.data, check.alg)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"jwt\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cidr\") {\n                if (!isValidCidr(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"cidr\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"base64\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64url\") {\n                if (!base64urlRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: \"base64url\",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util_1.util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodError_1.ZodIssueCode.invalid_string,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    base64url(message) {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return this._addCheck({\n            kind: \"base64url\",\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    jwt(options) {\n        return this._addCheck({ kind: \"jwt\", ...errorUtil_1.errorUtil.errToObj(options) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil_1.errorUtil.errToObj(options) });\n    }\n    cidr(options) {\n        return this._addCheck({ kind: \"cidr\", ...errorUtil_1.errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        var _a, _b;\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n            offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n            local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n            ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n            ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options === null || options === void 0 ? void 0 : options.position,\n            ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * Equivalent to `.min(1)`\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil_1.errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isCIDR() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get isBase64url() {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nexports.ZodString = ZodString;\nZodString.create = (params) => {\n    var _a;\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        let ctx = undefined;\n        const status = new parseUtil_1.ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util_1.util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive\n                    ? input.data < check.value\n                    : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive\n                    ? input.data > check.value\n                    : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util_1.util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil_1.errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil_1.errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n            (ch.kind === \"multipleOf\" && util_1.util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null, min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" ||\n                ch.kind === \"int\" ||\n                ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nexports.ZodNumber = ZodNumber;\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            try {\n                input.data = BigInt(input.data);\n            }\n            catch (_a) {\n                return this._getInvalidInput(input);\n            }\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.bigint) {\n            return this._getInvalidInput(input);\n        }\n        let ctx = undefined;\n        const status = new parseUtil_1.ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive\n                    ? input.data < check.value\n                    : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive\n                    ? input.data > check.value\n                    : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util_1.util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _getInvalidInput(input) {\n        const ctx = this._getOrReturnCtx(input);\n        (0, parseUtil_1.addIssueToContext)(ctx, {\n            code: ZodError_1.ZodIssueCode.invalid_type,\n            expected: util_1.ZodParsedType.bigint,\n            received: ctx.parsedType,\n        });\n        return parseUtil_1.INVALID;\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil_1.errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nexports.ZodBigInt = ZodBigInt;\nZodBigInt.create = (params) => {\n    var _a;\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodBoolean = ZodBoolean;\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_date,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const status = new parseUtil_1.ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util_1.util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nexports.ZodDate = ZodDate;\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nclass ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodSymbol = ZodSymbol;\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodUndefined = ZodUndefined;\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodNull = ZodNull;\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nclass ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodAny = ZodAny;\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodUnknown = ZodUnknown;\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        (0, parseUtil_1.addIssueToContext)(ctx, {\n            code: ZodError_1.ZodIssueCode.invalid_type,\n            expected: util_1.ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return parseUtil_1.INVALID;\n    }\n}\nexports.ZodNever = ZodNever;\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nclass ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodVoid = ZodVoid;\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nclass ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== util_1.ZodParsedType.array) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: tooBig ? ZodError_1.ZodIssueCode.too_big : ZodError_1.ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return parseUtil_1.ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return parseUtil_1.ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nexports.ZodArray = ZodArray;\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nclass ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util_1.util.objectKeys(shape);\n        return (this._cached = { shape, keys });\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever &&\n            this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return parseUtil_1.ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil_1.errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        var _a, _b, _c, _d;\n                        const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: (_d = errorUtil_1.errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        util_1.util.objectKeys(mask).forEach((key) => {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        util_1.util.objectKeys(this.shape).forEach((key) => {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        util_1.util.objectKeys(this.shape).forEach((key) => {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        util_1.util.objectKeys(this.shape).forEach((key) => {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util_1.util.objectKeys(this.shape));\n    }\n}\nexports.ZodObject = ZodObject;\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError_1.ZodError(result.ctx.common.issues));\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError_1.ZodError(issues));\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return parseUtil_1.INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nexports.ZodUnion = ZodUnion;\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util_1.util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.object) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nexports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;\nfunction mergeValues(a, b) {\n    const aType = (0, util_1.getParsedType)(a);\n    const bType = (0, util_1.getParsedType)(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === util_1.ZodParsedType.object && bType === util_1.ZodParsedType.object) {\n        const bKeys = util_1.util.objectKeys(b);\n        const sharedKeys = util_1.util\n            .objectKeys(a)\n            .filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === util_1.ZodParsedType.array && bType === util_1.ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === util_1.ZodParsedType.date &&\n        bType === util_1.ZodParsedType.date &&\n        +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nclass ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if ((0, parseUtil_1.isAborted)(parsedLeft) || (0, parseUtil_1.isAborted)(parsedRight)) {\n                return parseUtil_1.INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.invalid_intersection_types,\n                });\n                return parseUtil_1.INVALID;\n            }\n            if ((0, parseUtil_1.isDirty)(parsedLeft) || (0, parseUtil_1.isDirty)(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nexports.ZodIntersection = ZodIntersection;\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\nclass ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.array) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return parseUtil_1.INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return parseUtil_1.ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nexports.ZodTuple = ZodTuple;\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nclass ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.object) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return parseUtil_1.ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexports.ZodRecord = ZodRecord;\nclass ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.map) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return parseUtil_1.INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return parseUtil_1.INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nexports.ZodMap = ZodMap;\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nclass ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.set) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return parseUtil_1.INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nexports.ZodSet = ZodSet;\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nclass ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.function) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return (0, parseUtil_1.makeIssue)({\n                data: args,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    (0, errors_1.getErrorMap)(),\n                    errors_1.defaultErrorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodError_1.ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return (0, parseUtil_1.makeIssue)({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    (0, errors_1.getErrorMap)(),\n                    errors_1.defaultErrorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodError_1.ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return (0, parseUtil_1.OK)(async function (...args) {\n                const error = new ZodError_1.ZodError([]);\n                const parsedArgs = await me._def.args\n                    .parseAsync(args, params)\n                    .catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return (0, parseUtil_1.OK)(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError_1.ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError_1.ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args\n                ? args\n                : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nexports.ZodFunction = ZodFunction;\nclass ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nexports.ZodLazy = ZodLazy;\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nclass ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                received: ctx.data,\n                code: ZodError_1.ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nexports.ZodLiteral = ZodLiteral;\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nclass ZodEnum extends ZodType {\n    constructor() {\n        super(...arguments);\n        _ZodEnum_cache.set(this, void 0);\n    }\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                expected: util_1.util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodError_1.ZodIssueCode.invalid_type,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n            __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n        }\n        if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                received: ctx.data,\n                code: ZodError_1.ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\nexports.ZodEnum = ZodEnum;\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n    constructor() {\n        super(...arguments);\n        _ZodNativeEnum_cache.set(this, void 0);\n    }\n    _parse(input) {\n        const nativeEnumValues = util_1.util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.string &&\n            ctx.parsedType !== util_1.ZodParsedType.number) {\n            const expectedValues = util_1.util.objectValues(nativeEnumValues);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                expected: util_1.util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodError_1.ZodIssueCode.invalid_type,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n            __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util_1.util.getValidEnumValues(this._def.values)), \"f\");\n        }\n        if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n            const expectedValues = util_1.util.objectValues(nativeEnumValues);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                received: ctx.data,\n                code: ZodError_1.ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nexports.ZodNativeEnum = ZodNativeEnum;\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nclass ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== util_1.ZodParsedType.promise &&\n            ctx.common.async === false) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const promisified = ctx.parsedType === util_1.ZodParsedType.promise\n            ? ctx.data\n            : Promise.resolve(ctx.data);\n        return (0, parseUtil_1.OK)(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nexports.ZodPromise = ZodPromise;\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nclass ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                (0, parseUtil_1.addIssueToContext)(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return parseUtil_1.INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return parseUtil_1.INVALID;\n                    if (result.status === \"dirty\")\n                        return (0, parseUtil_1.DIRTY)(result.value);\n                    if (status.value === \"dirty\")\n                        return (0, parseUtil_1.DIRTY)(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return parseUtil_1.INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return parseUtil_1.INVALID;\n                if (result.status === \"dirty\")\n                    return (0, parseUtil_1.DIRTY)(result.value);\n                if (status.value === \"dirty\")\n                    return (0, parseUtil_1.DIRTY)(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return parseUtil_1.INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return parseUtil_1.INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!(0, parseUtil_1.isValid)(base))\n                    return base;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((base) => {\n                    if (!(0, parseUtil_1.isValid)(base))\n                        return base;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n                });\n            }\n        }\n        util_1.util.assertNever(effect);\n    }\n}\nexports.ZodEffects = ZodEffects;\nexports.ZodTransformer = ZodEffects;\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nclass ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === util_1.ZodParsedType.undefined) {\n            return (0, parseUtil_1.OK)(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nexports.ZodOptional = ZodOptional;\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === util_1.ZodParsedType.null) {\n            return (0, parseUtil_1.OK)(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nexports.ZodNullable = ZodNullable;\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === util_1.ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nexports.ZodDefault = ZodDefault;\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\"\n            ? params.default\n            : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nclass ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if ((0, parseUtil_1.isAsync)(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError_1.ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError_1.ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nexports.ZodCatch = ZodCatch;\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== util_1.ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: util_1.ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nexports.ZodNaN = ZodNaN;\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nexports.BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nexports.ZodBranded = ZodBranded;\nclass ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return parseUtil_1.INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return (0, parseUtil_1.DIRTY)(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return parseUtil_1.INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nexports.ZodPipeline = ZodPipeline;\nclass ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if ((0, parseUtil_1.isValid)(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return (0, parseUtil_1.isAsync)(result)\n            ? result.then((data) => freeze(data))\n            : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nexports.ZodReadonly = ZodReadonly;\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n//////////                    //////////\n//////////      z.custom      //////////\n//////////                    //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n    const p = typeof params === \"function\"\n        ? params(data)\n        : typeof params === \"string\"\n            ? { message: params }\n            : params;\n    const p2 = typeof p === \"string\" ? { message: p } : p;\n    return p2;\n}\nfunction custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            var _a, _b;\n            const r = check(data);\n            if (r instanceof Promise) {\n                return r.then((r) => {\n                    var _a, _b;\n                    if (!r) {\n                        const params = cleanParams(_params, data);\n                        const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n                        ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n                    }\n                });\n            }\n            if (!r) {\n                const params = cleanParams(_params, data);\n                const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n                ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n            }\n            return;\n        });\n    return ZodAny.create();\n}\nexports.custom = custom;\nexports.late = {\n    object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n    constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nexports.instanceof = instanceOfType;\nconst stringType = ZodString.create;\nexports.string = stringType;\nconst numberType = ZodNumber.create;\nexports.number = numberType;\nconst nanType = ZodNaN.create;\nexports.nan = nanType;\nconst bigIntType = ZodBigInt.create;\nexports.bigint = bigIntType;\nconst booleanType = ZodBoolean.create;\nexports.boolean = booleanType;\nconst dateType = ZodDate.create;\nexports.date = dateType;\nconst symbolType = ZodSymbol.create;\nexports.symbol = symbolType;\nconst undefinedType = ZodUndefined.create;\nexports.undefined = undefinedType;\nconst nullType = ZodNull.create;\nexports.null = nullType;\nconst anyType = ZodAny.create;\nexports.any = anyType;\nconst unknownType = ZodUnknown.create;\nexports.unknown = unknownType;\nconst neverType = ZodNever.create;\nexports.never = neverType;\nconst voidType = ZodVoid.create;\nexports.void = voidType;\nconst arrayType = ZodArray.create;\nexports.array = arrayType;\nconst objectType = ZodObject.create;\nexports.object = objectType;\nconst strictObjectType = ZodObject.strictCreate;\nexports.strictObject = strictObjectType;\nconst unionType = ZodUnion.create;\nexports.union = unionType;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nexports.discriminatedUnion = discriminatedUnionType;\nconst intersectionType = ZodIntersection.create;\nexports.intersection = intersectionType;\nconst tupleType = ZodTuple.create;\nexports.tuple = tupleType;\nconst recordType = ZodRecord.create;\nexports.record = recordType;\nconst mapType = ZodMap.create;\nexports.map = mapType;\nconst setType = ZodSet.create;\nexports.set = setType;\nconst functionType = ZodFunction.create;\nexports.function = functionType;\nconst lazyType = ZodLazy.create;\nexports.lazy = lazyType;\nconst literalType = ZodLiteral.create;\nexports.literal = literalType;\nconst enumType = ZodEnum.create;\nexports.enum = enumType;\nconst nativeEnumType = ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nconst promiseType = ZodPromise.create;\nexports.promise = promiseType;\nconst effectsType = ZodEffects.create;\nexports.effect = effectsType;\nexports.transformer = effectsType;\nconst optionalType = ZodOptional.create;\nexports.optional = optionalType;\nconst nullableType = ZodNullable.create;\nexports.nullable = nullableType;\nconst preprocessType = ZodEffects.createWithPreprocess;\nexports.preprocess = preprocessType;\nconst pipelineType = ZodPipeline.create;\nexports.pipeline = pipelineType;\nconst ostring = () => stringType().optional();\nexports.ostring = ostring;\nconst onumber = () => numberType().optional();\nexports.onumber = onumber;\nconst oboolean = () => booleanType().optional();\nexports.oboolean = oboolean;\nexports.coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexports.NEVER = parseUtil_1.INVALID;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors\"), exports);\n__exportStar(require(\"./helpers/parseUtil\"), exports);\n__exportStar(require(\"./helpers/typeAliases\"), exports);\n__exportStar(require(\"./helpers/util\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./ZodError\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.z = void 0;\nconst z = __importStar(require(\"./external\"));\nexports.z = z;\n__exportStar(require(\"./external\"), exports);\nexports.default = z;\n","export function parseAnyDef() {\n    return {};\n}\n","import { ZodFirstPartyTypeKind } from \"zod\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n    const res = {\n        type: \"array\",\n    };\n    if (def.type?._def &&\n        def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n        res.items = parseDef(def.type._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"items\"],\n        });\n    }\n    if (def.minLength) {\n        setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n    }\n    if (def.maxLength) {\n        setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n    }\n    if (def.exactLength) {\n        setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n        setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n    }\n    return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n    const res = {\n        type: \"integer\",\n        format: \"int64\",\n    };\n    if (!def.checks)\n        return res;\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"min\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMinimum = true;\n                    }\n                    setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                }\n                break;\n            case \"max\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMaximum = true;\n                    }\n                    setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                }\n                break;\n            case \"multipleOf\":\n                setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n                break;\n        }\n    }\n    return res;\n}\n","export function parseBooleanDef() {\n    return {\n        type: \"boolean\",\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n    return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n    return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n    const strategy = overrideDateStrategy ?? refs.dateStrategy;\n    if (Array.isArray(strategy)) {\n        return {\n            anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n        };\n    }\n    switch (strategy) {\n        case \"string\":\n        case \"format:date-time\":\n            return {\n                type: \"string\",\n                format: \"date-time\",\n            };\n        case \"format:date\":\n            return {\n                type: \"string\",\n                format: \"date\",\n            };\n        case \"integer\":\n            return integerDateParser(def, refs);\n    }\n}\nconst integerDateParser = (def, refs) => {\n    const res = {\n        type: \"integer\",\n        format: \"unix-time\",\n    };\n    if (refs.target === \"openApi3\") {\n        return res;\n    }\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"min\":\n                setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n                check.message, refs);\n                break;\n            case \"max\":\n                setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n                check.message, refs);\n                break;\n        }\n    }\n    return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n    return {\n        ...parseDef(_def.innerType._def, refs),\n        default: _def.defaultValue(),\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseEffectsDef(_def, refs) {\n    return refs.effectStrategy === \"input\"\n        ? parseDef(_def.schema._def, refs)\n        : {};\n}\n","export function parseEnumDef(def) {\n    return {\n        type: \"string\",\n        enum: Array.from(def.values),\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n    if (\"type\" in type && type.type === \"string\")\n        return false;\n    return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n    const allOf = [\n        parseDef(def.left._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n        }),\n        parseDef(def.right._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n        }),\n    ].filter((x) => !!x);\n    let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n        ? { unevaluatedProperties: false }\n        : undefined;\n    const mergedAllOf = [];\n    // If either of the schemas is an allOf, merge them into a single allOf\n    allOf.forEach((schema) => {\n        if (isJsonSchema7AllOfType(schema)) {\n            mergedAllOf.push(...schema.allOf);\n            if (schema.unevaluatedProperties === undefined) {\n                // If one of the schemas has no unevaluatedProperties set,\n                // the merged schema should also have no unevaluatedProperties set\n                unevaluatedProperties = undefined;\n            }\n        }\n        else {\n            let nestedSchema = schema;\n            if (\"additionalProperties\" in schema &&\n                schema.additionalProperties === false) {\n                const { additionalProperties, ...rest } = schema;\n                nestedSchema = rest;\n            }\n            else {\n                // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n                unevaluatedProperties = undefined;\n            }\n            mergedAllOf.push(nestedSchema);\n        }\n    });\n    return mergedAllOf.length\n        ? {\n            allOf: mergedAllOf,\n            ...unevaluatedProperties,\n        }\n        : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n    const parsedType = typeof def.value;\n    if (parsedType !== \"bigint\" &&\n        parsedType !== \"number\" &&\n        parsedType !== \"boolean\" &&\n        parsedType !== \"string\") {\n        return {\n            type: Array.isArray(def.value) ? \"array\" : \"object\",\n        };\n    }\n    if (refs.target === \"openApi3\") {\n        return {\n            type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n            enum: [def.value],\n        };\n    }\n    return {\n        type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n        const: def.value,\n    };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n    /**\n     * `c` was changed to `[cC]` to replicate /i flag\n     */\n    cuid: /^[cC][^\\s-]{8,}$/,\n    cuid2: /^[0-9a-z]+$/,\n    ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n    /**\n     * `a-z` was added to replicate /i flag\n     */\n    email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n    /**\n     * Constructed a valid Unicode RegExp\n     *\n     * Lazily instantiate since this type of regex isn't supported\n     * in all envs (e.g. React Native).\n     *\n     * See:\n     * https://github.com/colinhacks/zod/issues/2433\n     * Fix in Zod:\n     * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n     */\n    emoji: () => {\n        if (emojiRegex === undefined) {\n            emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n        }\n        return emojiRegex;\n    },\n    /**\n     * Unused\n     */\n    uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n    /**\n     * Unused\n     */\n    ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n    ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n    /**\n     * Unused\n     */\n    ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n    ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n    base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n    base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n    nanoid: /^[a-zA-Z0-9_-]{21}$/,\n    jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n    const res = {\n        type: \"string\",\n    };\n    if (def.checks) {\n        for (const check of def.checks) {\n            switch (check.kind) {\n                case \"min\":\n                    setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n                        ? Math.max(res.minLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"max\":\n                    setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n                        ? Math.min(res.maxLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"email\":\n                    switch (refs.emailStrategy) {\n                        case \"format:email\":\n                            addFormat(res, \"email\", check.message, refs);\n                            break;\n                        case \"format:idn-email\":\n                            addFormat(res, \"idn-email\", check.message, refs);\n                            break;\n                        case \"pattern:zod\":\n                            addPattern(res, zodPatterns.email, check.message, refs);\n                            break;\n                    }\n                    break;\n                case \"url\":\n                    addFormat(res, \"uri\", check.message, refs);\n                    break;\n                case \"uuid\":\n                    addFormat(res, \"uuid\", check.message, refs);\n                    break;\n                case \"regex\":\n                    addPattern(res, check.regex, check.message, refs);\n                    break;\n                case \"cuid\":\n                    addPattern(res, zodPatterns.cuid, check.message, refs);\n                    break;\n                case \"cuid2\":\n                    addPattern(res, zodPatterns.cuid2, check.message, refs);\n                    break;\n                case \"startsWith\":\n                    addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n                    break;\n                case \"endsWith\":\n                    addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n                    break;\n                case \"datetime\":\n                    addFormat(res, \"date-time\", check.message, refs);\n                    break;\n                case \"date\":\n                    addFormat(res, \"date\", check.message, refs);\n                    break;\n                case \"time\":\n                    addFormat(res, \"time\", check.message, refs);\n                    break;\n                case \"duration\":\n                    addFormat(res, \"duration\", check.message, refs);\n                    break;\n                case \"length\":\n                    setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n                        ? Math.max(res.minLength, check.value)\n                        : check.value, check.message, refs);\n                    setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n                        ? Math.min(res.maxLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"includes\": {\n                    addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n                    break;\n                }\n                case \"ip\": {\n                    if (check.version !== \"v6\") {\n                        addFormat(res, \"ipv4\", check.message, refs);\n                    }\n                    if (check.version !== \"v4\") {\n                        addFormat(res, \"ipv6\", check.message, refs);\n                    }\n                    break;\n                }\n                case \"base64url\":\n                    addPattern(res, zodPatterns.base64url, check.message, refs);\n                    break;\n                case \"jwt\":\n                    addPattern(res, zodPatterns.jwt, check.message, refs);\n                    break;\n                case \"cidr\": {\n                    if (check.version !== \"v6\") {\n                        addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n                    }\n                    if (check.version !== \"v4\") {\n                        addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n                    }\n                    break;\n                }\n                case \"emoji\":\n                    addPattern(res, zodPatterns.emoji(), check.message, refs);\n                    break;\n                case \"ulid\": {\n                    addPattern(res, zodPatterns.ulid, check.message, refs);\n                    break;\n                }\n                case \"base64\": {\n                    switch (refs.base64Strategy) {\n                        case \"format:binary\": {\n                            addFormat(res, \"binary\", check.message, refs);\n                            break;\n                        }\n                        case \"contentEncoding:base64\": {\n                            setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n                            break;\n                        }\n                        case \"pattern:zod\": {\n                            addPattern(res, zodPatterns.base64, check.message, refs);\n                            break;\n                        }\n                    }\n                    break;\n                }\n                case \"nanoid\": {\n                    addPattern(res, zodPatterns.nanoid, check.message, refs);\n                }\n                case \"toLowerCase\":\n                case \"toUpperCase\":\n                case \"trim\":\n                    break;\n                default:\n                    /* c8 ignore next */\n                    ((_) => { })(check);\n            }\n        }\n    }\n    return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n    return refs.patternStrategy === \"escape\"\n        ? escapeNonAlphaNumeric(literal)\n        : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n    let result = \"\";\n    for (let i = 0; i < source.length; i++) {\n        if (!ALPHA_NUMERIC.has(source[i])) {\n            result += \"\\\\\";\n        }\n        result += source[i];\n    }\n    return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n    if (schema.format || schema.anyOf?.some((x) => x.format)) {\n        if (!schema.anyOf) {\n            schema.anyOf = [];\n        }\n        if (schema.format) {\n            schema.anyOf.push({\n                format: schema.format,\n                ...(schema.errorMessage &&\n                    refs.errorMessages && {\n                    errorMessage: { format: schema.errorMessage.format },\n                }),\n            });\n            delete schema.format;\n            if (schema.errorMessage) {\n                delete schema.errorMessage.format;\n                if (Object.keys(schema.errorMessage).length === 0) {\n                    delete schema.errorMessage;\n                }\n            }\n        }\n        schema.anyOf.push({\n            format: value,\n            ...(message &&\n                refs.errorMessages && { errorMessage: { format: message } }),\n        });\n    }\n    else {\n        setResponseValueAndErrors(schema, \"format\", value, message, refs);\n    }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n    if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n        if (!schema.allOf) {\n            schema.allOf = [];\n        }\n        if (schema.pattern) {\n            schema.allOf.push({\n                pattern: schema.pattern,\n                ...(schema.errorMessage &&\n                    refs.errorMessages && {\n                    errorMessage: { pattern: schema.errorMessage.pattern },\n                }),\n            });\n            delete schema.pattern;\n            if (schema.errorMessage) {\n                delete schema.errorMessage.pattern;\n                if (Object.keys(schema.errorMessage).length === 0) {\n                    delete schema.errorMessage;\n                }\n            }\n        }\n        schema.allOf.push({\n            pattern: stringifyRegExpWithFlags(regex, refs),\n            ...(message &&\n                refs.errorMessages && { errorMessage: { pattern: message } }),\n        });\n    }\n    else {\n        setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n    }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n    if (!refs.applyRegexFlags || !regex.flags) {\n        return regex.source;\n    }\n    // Currently handled flags\n    const flags = {\n        i: regex.flags.includes(\"i\"),\n        m: regex.flags.includes(\"m\"),\n        s: regex.flags.includes(\"s\"), // `.` matches newlines\n    };\n    // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n    const source = flags.i ? regex.source.toLowerCase() : regex.source;\n    let pattern = \"\";\n    let isEscaped = false;\n    let inCharGroup = false;\n    let inCharRange = false;\n    for (let i = 0; i < source.length; i++) {\n        if (isEscaped) {\n            pattern += source[i];\n            isEscaped = false;\n            continue;\n        }\n        if (flags.i) {\n            if (inCharGroup) {\n                if (source[i].match(/[a-z]/)) {\n                    if (inCharRange) {\n                        pattern += source[i];\n                        pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n                        inCharRange = false;\n                    }\n                    else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n                        pattern += source[i];\n                        inCharRange = true;\n                    }\n                    else {\n                        pattern += `${source[i]}${source[i].toUpperCase()}`;\n                    }\n                    continue;\n                }\n            }\n            else if (source[i].match(/[a-z]/)) {\n                pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n                continue;\n            }\n        }\n        if (flags.m) {\n            if (source[i] === \"^\") {\n                pattern += `(^|(?<=[\\r\\n]))`;\n                continue;\n            }\n            else if (source[i] === \"$\") {\n                pattern += `($|(?=[\\r\\n]))`;\n                continue;\n            }\n        }\n        if (flags.s && source[i] === \".\") {\n            pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n            continue;\n        }\n        pattern += source[i];\n        if (source[i] === \"\\\\\") {\n            isEscaped = true;\n        }\n        else if (inCharGroup && source[i] === \"]\") {\n            inCharGroup = false;\n        }\n        else if (!inCharGroup && source[i] === \"[\") {\n            inCharGroup = true;\n        }\n    }\n    try {\n        new RegExp(pattern);\n    }\n    catch {\n        console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n        return regex.source;\n    }\n    return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nexport function parseRecordDef(def, refs) {\n    if (refs.target === \"openAi\") {\n        console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n    }\n    if (refs.target === \"openApi3\" &&\n        def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n        return {\n            type: \"object\",\n            required: def.keyType._def.values,\n            properties: def.keyType._def.values.reduce((acc, key) => ({\n                ...acc,\n                [key]: parseDef(def.valueType._def, {\n                    ...refs,\n                    currentPath: [...refs.currentPath, \"properties\", key],\n                }) ?? {},\n            }), {}),\n            additionalProperties: refs.rejectedAdditionalProperties,\n        };\n    }\n    const schema = {\n        type: \"object\",\n        additionalProperties: parseDef(def.valueType._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"additionalProperties\"],\n        }) ?? refs.allowedAdditionalProperties,\n    };\n    if (refs.target === \"openApi3\") {\n        return schema;\n    }\n    if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n        def.keyType._def.checks?.length) {\n        const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n        return {\n            ...schema,\n            propertyNames: keyType,\n        };\n    }\n    else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n        return {\n            ...schema,\n            propertyNames: {\n                enum: def.keyType._def.values,\n            },\n        };\n    }\n    else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n        def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n        def.keyType._def.type._def.checks?.length) {\n        const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n        return {\n            ...schema,\n            propertyNames: keyType,\n        };\n    }\n    return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nexport function parseMapDef(def, refs) {\n    if (refs.mapStrategy === \"record\") {\n        return parseRecordDef(def, refs);\n    }\n    const keys = parseDef(def.keyType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n    }) || {};\n    const values = parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n    }) || {};\n    return {\n        type: \"array\",\n        maxItems: 125,\n        items: {\n            type: \"array\",\n            items: [keys, values],\n            minItems: 2,\n            maxItems: 2,\n        },\n    };\n}\n","export function parseNativeEnumDef(def) {\n    const object = def.values;\n    const actualKeys = Object.keys(def.values).filter((key) => {\n        return typeof object[object[key]] !== \"number\";\n    });\n    const actualValues = actualKeys.map((key) => object[key]);\n    const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n    return {\n        type: parsedTypes.length === 1\n            ? parsedTypes[0] === \"string\"\n                ? \"string\"\n                : \"number\"\n            : [\"string\", \"number\"],\n        enum: actualValues,\n    };\n}\n","export function parseNeverDef() {\n    return {\n        not: {},\n    };\n}\n","export function parseNullDef(refs) {\n    return refs.target === \"openApi3\"\n        ? {\n            enum: [\"null\"],\n            nullable: true,\n        }\n        : {\n            type: \"null\",\n        };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n    ZodString: \"string\",\n    ZodNumber: \"number\",\n    ZodBigInt: \"integer\",\n    ZodBoolean: \"boolean\",\n    ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n    if (refs.target === \"openApi3\")\n        return asAnyOf(def, refs);\n    const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n    // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n    if (options.every((x) => x._def.typeName in primitiveMappings &&\n        (!x._def.checks || !x._def.checks.length))) {\n        // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n        const types = options.reduce((types, x) => {\n            const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n            return type && !types.includes(type) ? [...types, type] : types;\n        }, []);\n        return {\n            type: types.length > 1 ? types : types[0],\n        };\n    }\n    else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n        // all options literals\n        const types = options.reduce((acc, x) => {\n            const type = typeof x._def.value;\n            switch (type) {\n                case \"string\":\n                case \"number\":\n                case \"boolean\":\n                    return [...acc, type];\n                case \"bigint\":\n                    return [...acc, \"integer\"];\n                case \"object\":\n                    if (x._def.value === null)\n                        return [...acc, \"null\"];\n                case \"symbol\":\n                case \"undefined\":\n                case \"function\":\n                default:\n                    return acc;\n            }\n        }, []);\n        if (types.length === options.length) {\n            // all the literals are primitive, as far as null can be considered primitive\n            const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n            return {\n                type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n                enum: options.reduce((acc, x) => {\n                    return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n                }, []),\n            };\n        }\n    }\n    else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n        return {\n            type: \"string\",\n            enum: options.reduce((acc, x) => [\n                ...acc,\n                ...x._def.values.filter((x) => !acc.includes(x)),\n            ], []),\n        };\n    }\n    return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n    const anyOf = (def.options instanceof Map\n        ? Array.from(def.options.values())\n        : def.options)\n        .map((x, i) => parseDef(x._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n    }))\n        .filter((x) => !!x &&\n        (!refs.strictUnions ||\n            (typeof x === \"object\" && Object.keys(x).length > 0)));\n    return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n    if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n        (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n        if (refs.target === \"openApi3\") {\n            return {\n                type: primitiveMappings[def.innerType._def.typeName],\n                nullable: true,\n            };\n        }\n        return {\n            type: [\n                primitiveMappings[def.innerType._def.typeName],\n                \"null\",\n            ],\n        };\n    }\n    if (refs.target === \"openApi3\") {\n        const base = parseDef(def.innerType._def, {\n            ...refs,\n            currentPath: [...refs.currentPath],\n        });\n        if (base && \"$ref\" in base)\n            return { allOf: [base], nullable: true };\n        return base && { ...base, nullable: true };\n    }\n    const base = parseDef(def.innerType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n    });\n    return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n    const res = {\n        type: \"number\",\n    };\n    if (!def.checks)\n        return res;\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"int\":\n                res.type = \"integer\";\n                addErrorMessage(res, \"type\", check.message, refs);\n                break;\n            case \"min\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMinimum = true;\n                    }\n                    setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                }\n                break;\n            case \"max\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMaximum = true;\n                    }\n                    setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                }\n                break;\n            case \"multipleOf\":\n                setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n                break;\n        }\n    }\n    return res;\n}\n","import { ZodOptional } from \"zod\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n    const forceOptionalIntoNullable = refs.target === \"openAi\";\n    const result = {\n        type: \"object\",\n        properties: {},\n    };\n    const required = [];\n    const shape = def.shape();\n    for (const propName in shape) {\n        let propDef = shape[propName];\n        if (propDef === undefined || propDef._def === undefined) {\n            continue;\n        }\n        let propOptional = safeIsOptional(propDef);\n        if (propOptional && forceOptionalIntoNullable) {\n            if (propDef instanceof ZodOptional) {\n                propDef = propDef._def.innerType;\n            }\n            if (!propDef.isNullable()) {\n                propDef = propDef.nullable();\n            }\n            propOptional = false;\n        }\n        const parsedDef = parseDef(propDef._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"properties\", propName],\n            propertyPath: [...refs.currentPath, \"properties\", propName],\n        });\n        if (parsedDef === undefined) {\n            continue;\n        }\n        result.properties[propName] = parsedDef;\n        if (!propOptional) {\n            required.push(propName);\n        }\n    }\n    if (required.length) {\n        result.required = required;\n    }\n    const additionalProperties = decideAdditionalProperties(def, refs);\n    if (additionalProperties !== undefined) {\n        result.additionalProperties = additionalProperties;\n    }\n    return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n    if (def.catchall._def.typeName !== \"ZodNever\") {\n        return parseDef(def.catchall._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"additionalProperties\"],\n        });\n    }\n    switch (def.unknownKeys) {\n        case \"passthrough\":\n            return refs.allowedAdditionalProperties;\n        case \"strict\":\n            return refs.rejectedAdditionalProperties;\n        case \"strip\":\n            return refs.removeAdditionalStrategy === \"strict\"\n                ? refs.allowedAdditionalProperties\n                : refs.rejectedAdditionalProperties;\n    }\n}\nfunction safeIsOptional(schema) {\n    try {\n        return schema.isOptional();\n    }\n    catch {\n        return true;\n    }\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseOptionalDef = (def, refs) => {\n    if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n        return parseDef(def.innerType._def, refs);\n    }\n    const innerSchema = parseDef(def.innerType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n    });\n    return innerSchema\n        ? {\n            anyOf: [\n                {\n                    not: {},\n                },\n                innerSchema,\n            ],\n        }\n        : {};\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n    if (refs.pipeStrategy === \"input\") {\n        return parseDef(def.in._def, refs);\n    }\n    else if (refs.pipeStrategy === \"output\") {\n        return parseDef(def.out._def, refs);\n    }\n    const a = parseDef(def.in._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n    });\n    const b = parseDef(def.out._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n    });\n    return {\n        allOf: [a, b].filter((x) => x !== undefined),\n    };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n    return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n    const items = parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\"],\n    });\n    const schema = {\n        type: \"array\",\n        uniqueItems: true,\n        items,\n    };\n    if (def.minSize) {\n        setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n    }\n    if (def.maxSize) {\n        setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n    }\n    return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n    if (def.rest) {\n        return {\n            type: \"array\",\n            minItems: def.items.length,\n            items: def.items\n                .map((x, i) => parseDef(x._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"items\", `${i}`],\n            }))\n                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n            additionalItems: parseDef(def.rest._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"additionalItems\"],\n            }),\n        };\n    }\n    else {\n        return {\n            type: \"array\",\n            minItems: def.items.length,\n            maxItems: def.items.length,\n            items: def.items\n                .map((x, i) => parseDef(x._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"items\", `${i}`],\n            }))\n                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n        };\n    }\n}\n","export function parseUndefinedDef() {\n    return {\n        not: {},\n    };\n}\n","export function parseUnknownDef() {\n    return {};\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n    return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n    switch (typeName) {\n        case ZodFirstPartyTypeKind.ZodString:\n            return parseStringDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodNumber:\n            return parseNumberDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodObject:\n            return parseObjectDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBigInt:\n            return parseBigintDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBoolean:\n            return parseBooleanDef();\n        case ZodFirstPartyTypeKind.ZodDate:\n            return parseDateDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodUndefined:\n            return parseUndefinedDef();\n        case ZodFirstPartyTypeKind.ZodNull:\n            return parseNullDef(refs);\n        case ZodFirstPartyTypeKind.ZodArray:\n            return parseArrayDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodUnion:\n        case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n            return parseUnionDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodIntersection:\n            return parseIntersectionDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodTuple:\n            return parseTupleDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodRecord:\n            return parseRecordDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodLiteral:\n            return parseLiteralDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodEnum:\n            return parseEnumDef(def);\n        case ZodFirstPartyTypeKind.ZodNativeEnum:\n            return parseNativeEnumDef(def);\n        case ZodFirstPartyTypeKind.ZodNullable:\n            return parseNullableDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodOptional:\n            return parseOptionalDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodMap:\n            return parseMapDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodSet:\n            return parseSetDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodLazy:\n            return () => def.getter()._def;\n        case ZodFirstPartyTypeKind.ZodPromise:\n            return parsePromiseDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodNaN:\n        case ZodFirstPartyTypeKind.ZodNever:\n            return parseNeverDef();\n        case ZodFirstPartyTypeKind.ZodEffects:\n            return parseEffectsDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodAny:\n            return parseAnyDef();\n        case ZodFirstPartyTypeKind.ZodUnknown:\n            return parseUnknownDef();\n        case ZodFirstPartyTypeKind.ZodDefault:\n            return parseDefaultDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBranded:\n            return parseBrandedDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodReadonly:\n            return parseReadonlyDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodCatch:\n            return parseCatchDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodPipeline:\n            return parsePipelineDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodFunction:\n        case ZodFirstPartyTypeKind.ZodVoid:\n        case ZodFirstPartyTypeKind.ZodSymbol:\n            return undefined;\n        default:\n            /* c8 ignore next */\n            return ((_) => undefined)(typeName);\n    }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n    const seenItem = refs.seen.get(def);\n    if (refs.override) {\n        const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n        if (overrideResult !== ignoreOverride) {\n            return overrideResult;\n        }\n    }\n    if (seenItem && !forceResolution) {\n        const seenSchema = get$ref(seenItem, refs);\n        if (seenSchema !== undefined) {\n            return seenSchema;\n        }\n    }\n    const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n    refs.seen.set(def, newItem);\n    const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n    // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n    const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n        ? parseDef(jsonSchemaOrGetter(), refs)\n        : jsonSchemaOrGetter;\n    if (jsonSchema) {\n        addMeta(def, refs, jsonSchema);\n    }\n    if (refs.postProcess) {\n        const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n        newItem.jsonSchema = jsonSchema;\n        return postProcessResult;\n    }\n    newItem.jsonSchema = jsonSchema;\n    return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n    switch (refs.$refStrategy) {\n        case \"root\":\n            return { $ref: item.path.join(\"/\") };\n        case \"relative\":\n            return { $ref: getRelativePath(refs.currentPath, item.path) };\n        case \"none\":\n        case \"seen\": {\n            if (item.path.length < refs.currentPath.length &&\n                item.path.every((value, index) => refs.currentPath[index] === value)) {\n                console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n                return {};\n            }\n            return refs.$refStrategy === \"seen\" ? {} : undefined;\n        }\n    }\n};\nconst getRelativePath = (pathA, pathB) => {\n    let i = 0;\n    for (; i < pathA.length && i < pathB.length; i++) {\n        if (pathA[i] !== pathB[i])\n            break;\n    }\n    return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\nconst addMeta = (def, refs, jsonSchema) => {\n    if (def.description) {\n        jsonSchema.description = def.description;\n        if (refs.markdownDescription) {\n            jsonSchema.markdownDescription = def.description;\n        }\n    }\n    return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nconst zodToJsonSchema = (schema, options) => {\n    const refs = getRefs(options);\n    const definitions = typeof options === \"object\" && options.definitions\n        ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n            ...acc,\n            [name]: parseDef(schema._def, {\n                ...refs,\n                currentPath: [...refs.basePath, refs.definitionPath, name],\n            }, true) ?? {},\n        }), {})\n        : undefined;\n    const name = typeof options === \"string\"\n        ? options\n        : options?.nameStrategy === \"title\"\n            ? undefined\n            : options?.name;\n    const main = parseDef(schema._def, name === undefined\n        ? refs\n        : {\n            ...refs,\n            currentPath: [...refs.basePath, refs.definitionPath, name],\n        }, false) ?? {};\n    const title = typeof options === \"object\" &&\n        options.name !== undefined &&\n        options.nameStrategy === \"title\"\n        ? options.name\n        : undefined;\n    if (title !== undefined) {\n        main.title = title;\n    }\n    const combined = name === undefined\n        ? definitions\n            ? {\n                ...main,\n                [refs.definitionPath]: definitions,\n            }\n            : main\n        : {\n            $ref: [\n                ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n                refs.definitionPath,\n                name,\n            ].join(\"/\"),\n            [refs.definitionPath]: {\n                ...definitions,\n                [name]: main,\n            },\n        };\n    if (refs.target === \"jsonSchema7\") {\n        combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n    }\n    else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n        combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n    }\n    if (refs.target === \"openAi\" &&\n        (\"anyOf\" in combined ||\n            \"oneOf\" in combined ||\n            \"allOf\" in combined ||\n            (\"type\" in combined && Array.isArray(combined.type)))) {\n        console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n    }\n    return combined;\n};\nexport { zodToJsonSchema };\n","import * as dntShim from \"../_dnt.shims.js\";\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nexport const LOCAL_STORAGE_USER_ID_KEY = '___orama_anonymous_user_id';\nexport const LOCAL_STORAGE_SERVER_SIDE_SESSION_KEY = '___orama_server_side_session';\nexport function createRandomString(length) {\n    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-$';\n    let result = '';\n    for (let i = 0; i < length; i++) {\n        result += characters.charAt(Math.floor(Math.random() * characters.length));\n    }\n    return result;\n}\nexport function formatDuration(duration) {\n    if (duration < 1000) {\n        return `${duration}ms`;\n    }\n    else {\n        const seconds = duration / 1000;\n        if (Number.isInteger(seconds)) {\n            return `${seconds}s`;\n        }\n        return `${seconds.toFixed(1)}s`;\n    }\n}\nexport function sendBeacon(endpoint, body) {\n    if (typeof navigator !== 'undefined') {\n        if (typeof navigator.sendBeacon !== 'undefined') {\n            navigator.sendBeacon(endpoint, body);\n        }\n        return;\n    }\n    fetch(endpoint, {\n        method: 'POST',\n        body,\n        headers: {\n            'Content-Type': 'application/json',\n        },\n    }).then(() => { }, (e) => console.log(e));\n}\nexport const hasLocalStorage = typeof localStorage !== 'undefined';\nexport function throttle(func, limit) {\n    let inThrottle;\n    return function (...args) {\n        if (!inThrottle) {\n            // @ts-ignore - 'this' has implicitly any, yes\n            func.apply(this, args);\n            inThrottle = true;\n            setTimeout(() => (inThrottle = false), limit);\n        }\n    };\n}\nexport function debounce(func, delay) {\n    let debounceTimer;\n    return function (...args) {\n        clearTimeout(debounceTimer);\n        // @ts-ignore - 'this' has implicitly any, yes\n        debounceTimer = setTimeout(() => func.apply(this, args), delay);\n    };\n}\nexport function isServerRuntime() {\n    // Browser detection: if window or document exists, you're definitely in a browser\n    if (typeof dntShim.dntGlobalThis !== 'undefined' || typeof document !== 'undefined') {\n        return false;\n    }\n    // Node.js\n    // @ts-ignore - process is not defined\n    if (typeof process !== 'undefined' && process.versions?.node) {\n        return true;\n    }\n    // Deno\n    // @ts-ignore - Deno is not defined\n    if (typeof Deno !== 'undefined' && typeof Deno.version !== 'undefined') {\n        return true;\n    }\n    // Bun\n    // @ts-ignore - Bun is not defined\n    if (typeof Bun !== 'undefined' && typeof Bun.version !== 'undefined') {\n        return true;\n    }\n    // Cloudflare Workers, Vercel Edge, and other serverless environments often run in a V8 isolate\n    if (typeof dntShim.dntGlobalThis !== 'undefined' &&\n        typeof globalThis.Response === 'function' &&\n        typeof globalThis.fetch === 'function' &&\n        typeof globalThis.navigator === 'undefined' // real browser usually has navigator\n    ) {\n        return true;\n    }\n    // AWS Lambda or generic serverless\n    // @ts-ignore - process is not defined\n    if (typeof process !== 'undefined' && process?.env.AWS_LAMBDA_FUNCTION_NAME) {\n        return true;\n    }\n    // Default to false if it looks like a browser\n    return false;\n}\nexport function flattenZodSchema(schema) {\n    const raw = zodToJsonSchema(schema, 'Tool');\n    if (raw.$ref && raw.definitions) {\n        const defName = raw.$ref.replace('#/definitions/', '');\n        const flattened = raw.definitions[defName];\n        if (!flattened) {\n            throw new Error(`Could not resolve definition: ${defName}`);\n        }\n        return flattened;\n    }\n    return raw;\n}\n","export const LOCAL_STORAGE_USER_ID_KEY = '___$orama_user_id$___';\nexport const DEFAULT_SERVER_USER_ID = 'ssid';\n","import { createId } from '@orama/cuid2';\nimport { OramaInterface, safeJSONParse } from './common.js';\nimport { knownActionsArray } from './const.js';\nimport { hasLocalStorage, isServerRuntime } from './lib/utils.js';\nimport { DEFAULT_SERVER_USER_ID, LOCAL_STORAGE_USER_ID_KEY } from './constants.js';\nexport class AnswerSession {\n    constructor(config) {\n        Object.defineProperty(this, \"url\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"readAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"collectionID\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"oramaInterface\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"abortController\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"events\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"LLMConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"sessionID\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"lastInteractionParams\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"messages\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"state\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        this.url = config.url;\n        this.readAPIKey = config.readAPIKey;\n        this.collectionID = config.collectionID;\n        this.oramaInterface = new OramaInterface({\n            baseURL: this.url,\n            readAPIKey: this.readAPIKey,\n        });\n        this.LLMConfig = config.LLMConfig;\n        this.messages = config.initialMessages || [];\n        this.events = config.events;\n        this.sessionID = config.sessionID || createId();\n    }\n    async *answerStream(data) {\n        // Save the last interaction params in case we need to regenerate the last answer.\n        this.lastInteractionParams = { ...data, planned: false };\n        // Make sure the config contains all the necessary fields.\n        data = this.enrichConfig(data);\n        // Resets the abort controller. This is necessary to avoid aborting the previous request if there is one.\n        this.abortController = new AbortController();\n        // Add the question to the messages list.\n        // Also add a new, empty assistant message to the conversation.\n        this.messages.push({ role: 'user', content: data.query });\n        this.messages.push({ role: 'assistant', content: '' });\n        // New interaction ID. This identifies a single interaction between the AI and the user.\n        // Question and answer will be linked by this ID.\n        const interactionID = data.interactionID || createId();\n        // Adds a new empty assistant message to the conversation.\n        // We'll later update this message as new data from the server arrives.\n        this.state.push({\n            id: interactionID,\n            query: data.query,\n            response: '',\n            sources: null,\n            loading: true,\n            error: false,\n            aborted: false,\n            errorMessage: null,\n            planned: false,\n            plan: null,\n            planExecution: {},\n            segment: null,\n            related: data.related?.enabled ? '' : null,\n        });\n        // Let's set a new state for the current interaction.\n        this.pushState();\n        // The current state index. We'll need to frequently access the last state to update it,\n        // so it might be worth it to simplify the process by storing the index.\n        // The same goes for the current message index.\n        const currentStateIndex = this.state.length - 1;\n        const currentMessageIndex = this.messages.length - 1;\n        const body = {\n            interaction_id: interactionID,\n            query: data.query,\n            visitor_id: data.visitorID,\n            conversation_id: data.sessionID,\n            messages: data.messages || [],\n            llm_config: null,\n            related: data.related,\n        };\n        if (this.LLMConfig) {\n            body.llm_config = this.LLMConfig;\n        }\n        const reqStream = await this.oramaInterface.requestStream({\n            method: 'POST',\n            securityLevel: 'read-query',\n            url: `/v1/collections/${this.collectionID}/answer`,\n            body,\n        });\n        const reader = reqStream.getReader();\n        while (true) {\n            const { done, value } = await reader.read();\n            if (value !== undefined) {\n                const data = safeJSONParse(value.data);\n                if (data.type === 'response') {\n                    const { action, result } = safeJSONParse(data.message);\n                    switch (action) {\n                        case 'GET_SEGMENT': {\n                            if (result !== null) {\n                                const segment = safeJSONParse(result);\n                                // Sometimes the server can send corrupted data due to hallucinations.\n                                // We need to check if the segment is valid before updating the state.\n                                if (!segment) {\n                                    break;\n                                }\n                                this.state[currentStateIndex].segment = {\n                                    id: segment.id,\n                                    name: segment.name,\n                                };\n                                this.pushState();\n                            }\n                            break;\n                        }\n                        case 'GET_TRIGGER': {\n                            if (result !== null) {\n                                const trigger = safeJSONParse(result);\n                                // Sometimes the server can send corrupted data due to hallucinations.\n                                // We need to check if the segment is valid before updating the state.\n                                if (!trigger) {\n                                    break;\n                                }\n                                this.state[currentStateIndex].segment = trigger;\n                                this.pushState();\n                            }\n                            break;\n                        }\n                        case 'OPTIMIZING_QUERY':\n                            // @todo: understand if we want to expose this to the user.\n                            break;\n                        case 'SEARCH_RESULTS': {\n                            const sources = safeJSONParse(result);\n                            this.state[currentStateIndex].sources = sources;\n                            this.pushState();\n                            break;\n                        }\n                        case 'ANSWER_RESPONSE': {\n                            this.state[currentStateIndex].response += result;\n                            this.messages[currentMessageIndex].content = this.state[currentStateIndex].response;\n                            yield this.state[currentStateIndex].response;\n                            this.pushState();\n                            break;\n                        }\n                        case 'RELATED_QUERIES': {\n                            this.state[currentStateIndex].related += result;\n                            this.pushState();\n                            break;\n                        }\n                        default:\n                            break;\n                    }\n                }\n            }\n            if (done) {\n                this.state[currentStateIndex].loading = false;\n                this.pushState();\n                break;\n            }\n        }\n        reader.releaseLock();\n    }\n    async answer(data) {\n        // Save the last interaction params in case we need to regenerate the last answer.\n        this.lastInteractionParams = { ...data, planned: false };\n        let acc = '';\n        for await (const value of this.answerStream(data)) {\n            acc = value;\n        }\n        return acc;\n    }\n    async *reasonStream(data) {\n        // Save the last interaction params in case we need to regenerate the last answer.\n        this.lastInteractionParams = { ...data, planned: true };\n        for await (const _ of this.fetchPlannedAnswer(data)) {\n            yield this.state[this.state.length - 1].response;\n        }\n    }\n    async reason(data) {\n        // Save the last interaction params in case we need to regenerate the last answer.\n        this.lastInteractionParams = { ...data, planned: true };\n        // deno-lint-ignore no-empty\n        for await (const _ of this.fetchPlannedAnswer(data)) { }\n        return this.state[this.state.length - 1].response;\n    }\n    async *fetchPlannedAnswer(data) {\n        // Make sure the config contains all the necessary fields.\n        data = this.enrichConfig(data);\n        // Resets the abort controller. This is necessary to avoid aborting the previous request if there is one.\n        this.abortController = new AbortController();\n        // Add the question to the messages list.\n        // Also add a new, empty assistant message to the conversation.\n        this.messages.push({ role: 'user', content: data.query });\n        this.messages.push({ role: 'assistant', content: '' });\n        // New interaction ID. This identifies a single interaction between the AI and the user.\n        // Question and answer will be linked by this ID.\n        const interactionID = createId();\n        // Adds a new empty assistant message to the conversation.\n        // We'll later update this message as new data from the server arrives.\n        this.state.push({\n            id: interactionID,\n            query: data.query,\n            response: '',\n            sources: null,\n            loading: true,\n            error: false,\n            aborted: false,\n            errorMessage: null,\n            planned: true,\n            plan: null,\n            planExecution: {},\n            segment: null,\n            related: data.related?.enabled ? '' : null,\n        });\n        // Push the new state.\n        this.pushState();\n        // The current state index. We'll need to frequently access the last state to update it,\n        // so it might be worth it to simplify the process by storing the index.\n        // The same goes for the current message index.\n        const currentStateIndex = this.state.length - 1;\n        const currentMessageIndex = this.messages.length - 1;\n        // The actual request to the server.\n        const reqStream = await this.oramaInterface.requestStream({\n            method: 'POST',\n            securityLevel: 'read-query',\n            url: `/v1/collections/${this.collectionID}/planned_answer`,\n            body: {\n                interaction_id: data.interactionID,\n                query: data.query,\n                visitor_id: data.visitorID,\n                conversation_id: data.sessionID,\n                messages: data.messages || [],\n                llm_config: this.LLMConfig ? this.LLMConfig : null,\n                related: data.related,\n            },\n            signal: this.abortController?.signal,\n        });\n        const reader = reqStream.getReader();\n        while (true) {\n            const { done, value } = await reader.read();\n            if (value !== undefined) {\n                // @ts-expect-error - Sometime it happens that the server sends an empty message. It should be ignored.\n                if (value === '') {\n                    continue;\n                }\n                const data = safeJSONParse(value.data);\n                // Acknowledgement message.\n                // This message is sent when the server starts processing the request.\n                // From this point, the server will start sending the response messages.\n                if (data.type === 'acknowledgement') {\n                    yield { action: 'ACKNOWLEDGEMENT', message: 'acknowledgement' };\n                    continue;\n                }\n                // Response message.\n                // It could contain several different types of messages.\n                if (data.type === 'response') {\n                    // Sometimes the server sends an empty message. It should be ignored.\n                    if (data.message === '') {\n                        continue;\n                    }\n                    const message = safeJSONParse(data.message);\n                    const action = message.action;\n                    // As a first message, the server will send the action plan.\n                    // This action plan contains the list of actions that the server will perform to answer the query.\n                    if (action === 'ACTION_PLAN') {\n                        const jsonPlan = safeJSONParse(message.result);\n                        // Updates the current state with the new plan.\n                        this.state[currentStateIndex].plan = jsonPlan;\n                        // Updates the current state's planExecution with the new plan.\n                        const planExecution = {};\n                        for (const step of jsonPlan) {\n                            planExecution[step.step] = {\n                                instruction: step.description,\n                                result: '',\n                                done: false,\n                            };\n                        }\n                        this.state[currentStateIndex].planExecution = planExecution;\n                        // Push the new state.\n                        this.pushState();\n                        yield { action: 'ACTION_PLAN', message: jsonPlan };\n                        continue;\n                    }\n                    // During the RAG process, the server will send the search results.\n                    // Since we know they will always be in a valid JSON format, we can parse them.\n                    if (action === 'PERFORM_ORAMA_SEARCH') {\n                        const jsonResult = JSON.parse(message.result);\n                        // Updates the current state with the new sources.\n                        this.state[currentStateIndex].sources = jsonResult;\n                        // Updates the current state's planExecution with the new result.\n                        if ('PERFORM_ORAMA_SEARCH' in this.state[currentStateIndex].planExecution) {\n                            this.state[currentStateIndex].planExecution.PERFORM_ORAMA_SEARCH.result = jsonResult;\n                            this.state[currentStateIndex].planExecution.PERFORM_ORAMA_SEARCH.done = true;\n                        }\n                        // Push the new state.\n                        this.pushState();\n                        yield { action: 'PERFORM_ORAMA_SEARCH', message: jsonResult };\n                        continue;\n                    }\n                    // ASK_FOLLOWUP and GIVE_REPLY are mutually exclusive.\n                    // When any of these actions are received, we'll need to store them into the current interaction response.\n                    if (action === 'ASK_FOLLOWUP' || action === 'GIVE_REPLY') {\n                        // This is a streamed message, so we'll need to accumulate.\n                        this.state[currentStateIndex].response += message.result;\n                        this.messages[currentMessageIndex].content = this.state[currentStateIndex].response;\n                        this.state[currentStateIndex].planExecution[action].result += message.result;\n                        this.state[currentStateIndex].planExecution[action].done = message.done;\n                        this.pushState();\n                        yield { action, message: message.result };\n                        continue;\n                    }\n                    // GET_SEGMENT needs to be handled separately.\n                    // It's a special action that will be used to get the segment of the user.\n                    if (action === 'GET_SEGMENT') {\n                        this.state[currentStateIndex].segment = {\n                            id: message.result.id,\n                            name: message.result.name,\n                        };\n                        this.pushState();\n                    }\n                    // SELECT_SEGMENT_PROBABILITY needs to be handled separately.\n                    // Sometimes the server will not send this, so we need to check this separately.\n                    if (action === 'SELECT_SEGMENT_PROBABILITY') {\n                        if (this.state[currentStateIndex].segment) {\n                            const probability = message.result.probability;\n                            this.state[currentStateIndex].segment.probability = probability;\n                            this.pushState();\n                        }\n                    }\n                    // Just like with the segment, we need to handle the triggers separately.\n                    if (action === 'GET_TRIGGER') {\n                        this.state[currentStateIndex].segment = {\n                            id: message.result.id,\n                            name: message.result.name,\n                        };\n                        this.pushState();\n                    }\n                    // And just like SELECT_SEGMENT_PROBABILITY, we need to handle SELECT_TRIGGER_PROBABILITY separately.\n                    if (action === 'SELECT_TRIGGER_PROBABILITY') {\n                        if (this.state[currentStateIndex].segment) {\n                            const probability = message.result.probability;\n                            this.state[currentStateIndex].segment.probability = probability;\n                            this.pushState();\n                        }\n                    }\n                    // The server is streaming the related queries. These will be streamed as a JSON string,\n                    // to be then parsed into an array of strings later. But sending a chunk at a time allows\n                    // the user to create more interesting UIs.\n                    if (action === 'RELATED_QUERIES') {\n                        this.state[currentStateIndex].related += message.result;\n                        this.pushState();\n                        break;\n                    }\n                    if (!knownActionsArray.includes(action)) {\n                        this.state[currentStateIndex].planExecution[action].result += message.result;\n                        this.state[currentStateIndex].planExecution[action].done = message.done;\n                        this.pushState();\n                    }\n                    yield message;\n                }\n            }\n            if (done) {\n                break;\n            }\n        }\n        reader.releaseLock();\n        // The server has finished sending messages.\n        // We can now mark the interaction as not loading anymore.\n        this.state[currentStateIndex].loading = false;\n        this.pushState();\n    }\n    async regenerateLast({ stream = true } = {}) {\n        if (this.state.length === 0 || this.messages.length === 0) {\n            throw new Error('No messages to regenerate');\n        }\n        const isLastMessageAssistant = this.messages.at(-1)?.role === 'assistant';\n        if (!isLastMessageAssistant) {\n            throw new Error('Last message is not an assistant message');\n        }\n        this.messages.pop();\n        this.state.pop();\n        if (this.lastInteractionParams?.planned) {\n            if (stream) {\n                return this.reasonStream(this.lastInteractionParams);\n            }\n            return this.reason(this.lastInteractionParams);\n        }\n        if (stream) {\n            return this.answerStream(this.lastInteractionParams);\n        }\n        return this.answer(this.lastInteractionParams);\n    }\n    abort() {\n        if (!this.abortController) {\n            throw new Error('AbortController is not available.');\n        }\n        if (this.state.length === 0) {\n            throw new Error('There is no active request to abort.');\n        }\n        this.abortController.abort();\n        this.abortController = undefined;\n        this.state[this.state.length - 1].aborted = true;\n    }\n    clearSession() {\n        this.messages = [];\n        this.state = [];\n        this.pushState();\n    }\n    pushState() {\n        this.events?.onStateChange?.(this.state);\n    }\n    enrichConfig(config) {\n        if (!config.visitorID) {\n            config.visitorID = getUserID();\n        }\n        if (!config.interactionID) {\n            config.interactionID = createId();\n        }\n        if (!config.sessionID) {\n            config.sessionID = this.sessionID;\n        }\n        return config;\n    }\n}\nfunction getUserID() {\n    if (isServerRuntime()) {\n        return DEFAULT_SERVER_USER_ID;\n    }\n    if (hasLocalStorage) {\n        const id = localStorage.getItem(LOCAL_STORAGE_USER_ID_KEY);\n        if (id) {\n            return id;\n        }\n    }\n    return createId();\n}\n","export function sendBeacon(endpoint, body) {\n    if (typeof navigator !== 'undefined') {\n        if (typeof navigator.sendBeacon !== 'undefined') {\n            navigator.sendBeacon(endpoint, body);\n        }\n        return;\n    }\n    fetch(endpoint, {\n        method: 'POST',\n        body,\n        headers: {\n            'Content-Type': 'application/json',\n        },\n    }).then(() => { }, (e) => console.log(e));\n}\n","import { createId } from '@orama/cuid2';\nimport { LOCAL_STORAGE_USER_ID_KEY } from './constants.js';\nimport { sendBeacon } from './send-beacon.js';\nexport class Profile {\n    constructor({ endpoint, apiKey }) {\n        Object.defineProperty(this, \"endpoint\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"apiKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"userId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"identity\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"userAlias\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"params\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        if (!endpoint || !apiKey) {\n            throw new Error('Endpoint and API Key are required to create a Profile');\n        }\n        if (typeof endpoint !== 'string' || typeof apiKey !== 'string') {\n            throw new Error('Endpoint and API Key must be strings');\n        }\n        if (typeof localStorage !== 'undefined') {\n            // Browser side\n            const userId = localStorage.getItem(LOCAL_STORAGE_USER_ID_KEY);\n            if (userId) {\n                this.userId = userId;\n            }\n            else {\n                this.userId = createId();\n                localStorage.setItem(LOCAL_STORAGE_USER_ID_KEY, this.userId);\n            }\n        }\n        else {\n            // Server side\n            this.userId = createId();\n        }\n        this.endpoint = endpoint;\n        this.apiKey = apiKey;\n    }\n    setParams(params) {\n        const { protocol, host } = new URL(params.identifyUrl);\n        const telemetryDomain = `${protocol}//${host}/identify`;\n        this.params = {\n            identifyUrl: telemetryDomain,\n            index: params.index,\n        };\n    }\n    getIdentity() {\n        return this.identity;\n    }\n    getUserId() {\n        return this.userId;\n    }\n    getAlias() {\n        return this.userAlias;\n    }\n    async sendProfileData(data) {\n        if (!this.params) {\n            throw new Error('Orama Profile is not initialized');\n        }\n        const body = JSON.stringify({\n            ...data,\n            visitorId: this.getUserId(),\n            index: this.params.index,\n        });\n        await sendBeacon(`${this.params?.identifyUrl}?api-key=${this.apiKey}`, body);\n    }\n    async identify(identity) {\n        if (typeof identity !== 'string') {\n            throw new Error('Identity must be a string');\n        }\n        await this.sendProfileData({\n            entity: 'identity',\n            id: identity,\n        });\n        this.identity = identity;\n    }\n    async alias(alias) {\n        if (typeof alias !== 'string') {\n            throw new Error('Identity must be a string');\n        }\n        await this.sendProfileData({\n            entity: 'alias',\n            id: alias,\n        });\n        this.userAlias = alias;\n    }\n    reset() {\n        this.userId = createId();\n        this.identity = undefined;\n        this.userAlias = undefined;\n    }\n}\n","import { ZodType } from 'zod';\nimport { Profile } from './profile.js';\nimport { AnswerSession } from './answer-session.js';\nimport { OramaInterface } from './common.js';\nimport { flattenZodSchema, formatDuration } from './lib/utils.js';\nexport class CollectionManager {\n    constructor(config) {\n        Object.defineProperty(this, \"url\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"collectionID\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"writeAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"readAPIKey\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"oramaInterface\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"profile\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.url = config.url;\n        this.writeAPIKey = config.writeAPIKey;\n        this.readAPIKey = config.readAPIKey;\n        this.collectionID = config.collectionID;\n        this.oramaInterface = new OramaInterface({\n            baseURL: this.url,\n            writeAPIKey: this.writeAPIKey,\n            readAPIKey: this.readAPIKey,\n        });\n        this.profile = new Profile({\n            endpoint: this.url,\n            apiKey: this.readAPIKey,\n        });\n    }\n    async search(query) {\n        const start = +new Date();\n        const { datasourceIDs, indexes, ...restQuery } = query;\n        const result = await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/search`,\n            body: {\n                ...restQuery,\n                indexes: datasourceIDs || indexes,\n            },\n            method: 'POST',\n            securityLevel: 'read-query',\n        });\n        const elapsed = +new Date() - start;\n        return {\n            ...result,\n            elapsed: {\n                raw: elapsed,\n                formatted: formatDuration(elapsed),\n            },\n        };\n    }\n    getStats(collectionID) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${collectionID}/stats`,\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    async createIndex(config) {\n        const body = {\n            id: config.id,\n            embedding: config.embeddings,\n        };\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/create`,\n            body,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    async deleteIndex(indexID) {\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/delete`,\n            body: { index_id_to_delete: indexID },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    setIndex(id) {\n        return new Index(this.collectionID, id, this.url, this.writeAPIKey, this.readAPIKey);\n    }\n    getAllDocsInCollection(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/list`,\n            method: 'POST',\n            body: { id },\n            securityLevel: 'write',\n        });\n    }\n    createAnswerSession(config) {\n        if (!this.readAPIKey) {\n            throw new Error('Read API key is required to create an answer session');\n        }\n        return new AnswerSession({\n            url: this.url,\n            readAPIKey: this.readAPIKey || '',\n            collectionID: this.collectionID,\n            ...config,\n        });\n    }\n    async insertHook(config) {\n        const body = {\n            name: config.name,\n            code: config.code,\n        };\n        await this.oramaInterface.request({\n            url: `/v1/collections/${config.collectionID}/hooks/create`,\n            body,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n        return {\n            hookID: body.name,\n            collectionID: config.collectionID,\n            code: body.code,\n        };\n    }\n    insertSegment(segment) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/segments/insert`,\n            body: segment,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    getSegment(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/segments/get`,\n            body: { segment_id: id },\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    getAllSegments() {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/segments/all`,\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    deleteSegment(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/segments/delete`,\n            body: { id },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    updateSegment(segment) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/segments/update`,\n            body: segment,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    insertTrigger(trigger) {\n        if (!trigger.segment_id) {\n            throw new Error('You cannot insert a trigger without a segment_id');\n        }\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/triggers/insert`,\n            body: trigger,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    getTrigger(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/triggers/get`,\n            body: { trigger_id: id },\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    getAllTriggers() {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/triggers/all`,\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    deleteTrigger(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/triggers/delete`,\n            body: { id },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    updateTrigger(trigger) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/triggers/update`,\n            body: trigger,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    insertSystemPrompt(systemPrompt) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/insert`,\n            body: systemPrompt,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    getSystemPrompt(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/get`,\n            body: { system_prompt_id: id },\n            method: 'GET',\n            securityLevel: 'read',\n        });\n    }\n    getAllSystemPrompts() {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/all`,\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    deleteSystemPrompt(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/delete`,\n            body: { id },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    updateSystemPrompt(systemPrompt) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/update`,\n            body: systemPrompt,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    validateSystemPrompt(systemPrompt) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/system_prompts/validate`,\n            body: systemPrompt,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    insertTool(tool) {\n        let parameters;\n        switch (true) {\n            case typeof tool.parameters === 'string': {\n                parameters = tool.parameters;\n                break;\n            }\n            case tool.parameters instanceof ZodType: {\n                const flattenedSchema = flattenZodSchema(tool.parameters);\n                parameters = JSON.stringify(flattenedSchema);\n                break;\n            }\n            case typeof tool.parameters === 'object': {\n                parameters = JSON.stringify(tool.parameters);\n                break;\n            }\n            default:\n                throw new Error('Invalid parameters type. Must be string, object or ZodType');\n        }\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/insert`,\n            body: {\n                ...tool,\n                parameters,\n            },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    getTool(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/get`,\n            body: { tool_id: id },\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    getAllTools() {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/all`,\n            method: 'GET',\n            securityLevel: 'read-query',\n        });\n    }\n    deleteTool(id) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/delete`,\n            body: { id },\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    updateTool(tool) {\n        return this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/update`,\n            body: tool,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    async executeTools(tools) {\n        const response = await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/tools/run`,\n            body: tools,\n            method: 'POST',\n            securityLevel: 'read',\n        });\n        if (response.results) {\n            return {\n                results: response.results.map((result) => {\n                    if ('functionResult' in result) {\n                        return {\n                            functionResult: {\n                                tool_id: result.functionResult.tool_id,\n                                result: JSON.parse(result.functionResult.result),\n                            },\n                        };\n                    }\n                    if ('functionParameters' in result) {\n                        return {\n                            functionParameters: {\n                                tool_id: result.functionParameters.tool_id,\n                                result: JSON.parse(result.functionParameters.result),\n                            },\n                        };\n                    }\n                    return result;\n                }),\n            };\n        }\n        return {\n            results: null,\n        };\n    }\n    getIdentity() {\n        return this.profile.getIdentity();\n    }\n    getUserId() {\n        return this.profile.getUserId();\n    }\n    getAlias() {\n        return this.profile.getAlias();\n    }\n    async identify(identity) {\n        await this.profile.identify(identity);\n    }\n    async alias(alias) {\n        await this.profile.alias(alias);\n    }\n    reset() {\n        this.profile.reset();\n    }\n}\nexport class Index {\n    constructor(collectionID, indexID, url, writeAPIKey, readAPIKey) {\n        Object.defineProperty(this, \"indexID\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"collectionID\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"oramaInterface\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.indexID = indexID;\n        this.collectionID = collectionID;\n        this.oramaInterface = new OramaInterface({\n            baseURL: url,\n            writeAPIKey: writeAPIKey,\n            readAPIKey: readAPIKey,\n        });\n    }\n    async reindex() {\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/${this.indexID}/reindex`,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    async insertDocuments(documents) {\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/${this.indexID}/insert`,\n            body: documents,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    async deleteDocuments(documentIDs) {\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/${this.indexID}/delete`,\n            body: documentIDs,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n    async upsertDocuments(documents) {\n        await this.oramaInterface.request({\n            url: `/v1/collections/${this.collectionID}/indexes/${this.indexID}/insert`,\n            body: documents,\n            method: 'POST',\n            securityLevel: 'write',\n        });\n    }\n}\n","// src/index.ts\nimport { AnswerSession as OSSAnswerSession, search } from \"@orama/orama\";\nimport { CollectionManager } from \"@orama/core\";\nfunction isOramaClient(client) {\n  return client && typeof client === \"object\" && \"api_key\" in client && \"endpoint\" in client;\n}\nfunction isOramaCoreClient(client) {\n  return client && (client instanceof CollectionManager || client.constructor.name === \"CollectionManager\");\n}\nfunction isOramaJSClient(client) {\n  return client && typeof client === \"object\" && \"id\" in client && \"tokenizer\" in client;\n}\nvar Switch = class {\n  invalidClientError = \"Invalid client. Expected either an OramaClient, CollectionManager, or an Orama JS database.\";\n  client;\n  clientType;\n  isCloud = false;\n  isJS = false;\n  isCore = false;\n  constructor(client) {\n    this.client = client;\n    switch (true) {\n      case isOramaCoreClient(client):\n        this.clientType = \"core\";\n        this.isCore = true;\n        break;\n      case isOramaClient(client):\n        this.clientType = \"cloud\";\n        this.isCloud = true;\n        break;\n      case isOramaJSClient(client):\n        this.clientType = \"oss\";\n        this.isJS = true;\n        break;\n      default:\n        throw new Error(this.invalidClientError);\n    }\n  }\n  async search(params, config) {\n    switch (true) {\n      case this.isCloud:\n        return this.client.search(\n          params,\n          config\n        );\n      case this.isCore: {\n        const results = await this.client.search(\n          params\n        );\n        return results;\n      }\n      case this.isJS:\n        return search(\n          this.client,\n          params\n        );\n      default:\n        throw new Error(this.invalidClientError);\n    }\n  }\n  createAnswerSession(params) {\n    switch (true) {\n      case this.isCloud: {\n        const p = params;\n        return this.client.createAnswerSession(\n          p\n        );\n      }\n      case this.isCore: {\n        const p = params;\n        return this.client.createAnswerSession(\n          p\n        );\n      }\n      case this.isJS: {\n        const p = params;\n        return new OSSAnswerSession(this.client, {\n          conversationID: p.conversationID,\n          initialMessages: p.initialMessages,\n          events: p.events,\n          userContext: p.userContext,\n          systemPrompt: p.systemPrompt\n        });\n      }\n      default:\n        throw new Error(this.invalidClientError);\n    }\n  }\n};\nexport {\n  Switch\n};\n//# sourceMappingURL=index.js.map","import type { AskParams } from '@oramacloud/client'\nimport type { AnswerSession as OSSAnswerSession } from '@orama/orama'\nimport type { AnswerSession as CloudAnswerSession } from '@oramacloud/client'\nimport type { AnswerConfig, AnswerSession as CoreAnswerSession } from '@orama/core'\nimport type { OramaClient } from '@oramacloud/client'\nimport type { CollectionManager } from '@orama/core'\nimport type { AnyOrama } from '@orama/orama'\nimport { OramaClientNotInitializedError } from '@/erros/OramaClientNotInitialized'\nimport {\n  type SourcesMap,\n  TAnswerStatus,\n  type OnAnswerGeneratedCallbackProps,\n  type SourcesMapItem,\n  type SourcesMapKeys,\n  type SourcesMapRenderFunction,\n} from '@/types'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\nimport { Switch, type OramaSwitchClient } from '@orama/switch'\n\nconst parseRelatedQueries = (relatedQueries: string) => {\n  try {\n    return JSON.parse(relatedQueries)\n  } catch (error) {\n    return []\n  }\n}\n\nexport class ChatService {\n  private answerSession: OSSAnswerSession | CloudAnswerSession<true> | CoreAnswerSession\n  private client: Switch<OramaSwitchClient> | CollectionManager\n  private chatStore: ChatStoreType\n\n  constructor(oramaClient: OramaClient | AnyOrama, oramaCoreClient: CollectionManager, chatStore: ChatStoreType) {\n    this.client = oramaCoreClient ? oramaCoreClient : new Switch(oramaClient)\n    this.chatStore = chatStore\n  }\n\n  private getSourcesMapObjectByIndexId = (resultMapArrayOrObject: SourcesMap, indexId: string): SourcesMapItem => {\n    const searchMapArray = Array.isArray(resultMapArrayOrObject) ? resultMapArrayOrObject : [resultMapArrayOrObject]\n\n    // If there is only one source map, assume it's the one for all hits, regardless of datasourceId\n    if (searchMapArray.length === 1) {\n      return searchMapArray[0]\n    }\n\n    // TODO: Instead of doing it per each HIT, we may want to create a map of datasourceId -> resultMap to avoid the O(n) lookup\n    const sourcesMapMatch = searchMapArray.find((resultMap) => resultMap.datasourceId === indexId)\n\n    return sourcesMapMatch || {}\n  }\n\n  private getResultMapValue(\n    sourceMapKey: SourcesMapKeys,\n    sourceMapObject: SourcesMapItem,\n    rawSource: { document: unknown; index_id: string },\n  ): string {\n    const sourcesMapFunctionOrString = sourceMapObject?.[sourceMapKey]\n\n    if (!sourcesMapFunctionOrString) {\n      return undefined\n    }\n\n    if (typeof sourcesMapFunctionOrString === 'function') {\n      const sourcesMapFunction = sourcesMapFunctionOrString as SourcesMapRenderFunction\n      return sourcesMapFunction(rawSource.document, rawSource.index_id)\n    }\n\n    const resultMapString = sourceMapObject[sourceMapKey] as string\n    return rawSource.document[resultMapString]\n  }\n\n  sendQuestion = async (\n    term: string,\n    relatedQueries?: number,\n    systemPrompts?: string[],\n    callbacks?: {\n      onAnswerGeneratedCallback?: (onAnswerGeneratedCallback: OnAnswerGeneratedCallbackProps) => unknown\n    },\n  ) => {\n    if (!this.client) throw new OramaClientNotInitializedError()\n\n    const askParams: AskParams = {\n      term,\n    }\n\n    if (systemPrompts?.length) {\n      if (this.answerSession && 'setSystemPromptConfiguration' in this.answerSession) {\n        ;(this.answerSession as any).setSystemPromptConfiguration(systemPrompts)\n      }\n    }\n\n    const existingInteractions = this.chatStore.state.interactions\n\n    if (!this.answerSession) {\n      try {\n        const existingInteractions = this.chatStore.state.interactions\n\n        try {\n          /* TODO: Inferfaces between Orama Core and Orama Cloud are different.\n            we must cast the client to the correct type and use different implementations.\n\n            We are not doing that for the sake of speed, but we must circle back to this.\n          */\n          this.answerSession = this.client.createAnswerSession({\n            events: {\n              onStateChange: (state) => {\n                // Filter out empty interactions\n                const normalizedState = state.filter((stateItem) => !!stateItem.query)\n\n                this.chatStore.state.interactions = [\n                  ...(existingInteractions || []),\n                  ...normalizedState.map((interaction, index) => {\n                    const isLatest = state.length - 1 === index\n                    let answerStatus = TAnswerStatus.loading\n                    let sources = []\n\n                    if (interaction.aborted) {\n                      answerStatus = TAnswerStatus.aborted\n                    } else if (interaction.loading && interaction.sources) {\n                      answerStatus = TAnswerStatus.rendering\n                    } else if (interaction.loading && interaction.response) {\n                      answerStatus = TAnswerStatus.streaming\n                    } else if (!interaction.loading && interaction.response) {\n                      answerStatus = TAnswerStatus.done\n                    }\n\n                    // Handle sources in different formats\n                    if (interaction.sources) {\n                      const rawSources: { document: unknown; index_id: string }[] = Array.isArray(interaction.sources)\n                        ? interaction.sources\n                        : interaction.sources.hits\n\n                      sources = rawSources.map((source) => {\n                        const matchingMap = this.getSourcesMapObjectByIndexId(\n                          this.chatStore.state.sourcesMap,\n                          source.index_id,\n                        )\n\n                        const title = this.getResultMapValue('title', matchingMap, source)\n                        const description = this.getResultMapValue('description', matchingMap, source)\n                        const path = this.getResultMapValue('path', matchingMap, source)\n\n                        return {\n                          title,\n                          description,\n                          path,\n                        }\n                      })\n                    }\n\n                    if (isLatest && answerStatus === TAnswerStatus.done) {\n                      callbacks?.onAnswerGeneratedCallback?.({\n                        askParams,\n                        query: interaction.query,\n                        sources: interaction.sources,\n                        answer: interaction.response,\n                        segment: interaction.segment,\n                        trigger: interaction.trigger,\n                      })\n                    }\n\n                    const relatedQueries = interaction.related\n\n                    return {\n                      query: interaction.query,\n                      // interactionId for Old Orama and id for Orama Core\n                      interactionId: interaction.interactionId || interaction.id,\n                      response: interaction.response,\n                      relatedQueries: parseRelatedQueries(relatedQueries),\n                      status: answerStatus,\n                      latest: isLatest,\n                      sources,\n                    }\n                  }),\n                ]\n              },\n            },\n          })\n        } catch (methodError) {\n          console.error('Client does not support createAnswerSession method:', methodError)\n          this.chatStore.state.interactions = [\n            ...(existingInteractions || []),\n            {\n              query: term,\n              response: 'Sorry, this client does not support chat functionality.',\n              status: TAnswerStatus.error,\n              latest: true,\n              sources: [],\n            },\n          ]\n          return\n        }\n      } catch (error) {\n        console.error('Error creating answer session:', error)\n        this.chatStore.state.interactions = [\n          ...(existingInteractions || []),\n          {\n            query: term,\n            response: 'Sorry, there was an error creating the answer session. Please try again later.',\n            status: TAnswerStatus.error,\n            latest: true,\n            sources: [],\n          },\n        ]\n        return\n      }\n    }\n\n    if (!this.answerSession) {\n      console.error('Answer session was not created')\n      return\n    }\n\n    try {\n      // Check existence of answerStream method (means that the client is Orama Core)\n      if ((this.answerSession as CoreAnswerSession).answer) {\n        this.askOramaCore(term, relatedQueries)\n      } else {\n        this.askOramaCloud(term)\n      }\n    } catch (error) {\n      // Update chat store to show error to user\n      const latestInteraction = this.chatStore.state.interactions[this.chatStore.state.interactions.length - 1]\n      if (latestInteraction) {\n        latestInteraction.status = TAnswerStatus.error\n        latestInteraction.response = 'Sorry, the answer service is not available. Please try again later.'\n        this.chatStore.state.interactions = [...this.chatStore.state.interactions]\n      }\n    }\n  }\n\n  private askOramaCore = (query: string, relatedQueries?: number) => {\n    console.log('askOramaCore', query, relatedQueries)\n    const streamParams: AnswerConfig = {\n      query,\n      ...(relatedQueries\n        ? {\n            related: {\n              enabled: true,\n              size: relatedQueries,\n              format: 'query',\n            },\n          }\n        : {}),\n    }\n\n    const answerStream = (this.answerSession as CoreAnswerSession).answerStream(streamParams)\n\n    const processAsyncGenerator = async () => {\n      for await (const _ of answerStream) {\n      }\n    }\n\n    processAsyncGenerator()\n  }\n\n  private askOramaCloud = (term: string) => {\n    const askParams: AskParams = {\n      term: term,\n      limit: 10,\n      threshold: 0.5,\n    }\n\n    const oldAnswerSession = this.answerSession as OSSAnswerSession | CloudAnswerSession<true>\n    oldAnswerSession.ask(askParams)\n  }\n\n  abortAnswer = () => {\n    if (!this.answerSession) {\n      throw new OramaClientNotInitializedError()\n    }\n\n    if ((this.answerSession as CoreAnswerSession).abort) {\n      ;(this.answerSession as CoreAnswerSession).abort()\n    } else {\n      ;(this.answerSession as OSSAnswerSession | CloudAnswerSession<true>).abortAnswer()\n    }\n  }\n\n  regenerateLatest = async () => {\n    if (!this.answerSession) {\n      throw new OramaClientNotInitializedError()\n    }\n\n    // Check if the client is Orama Cloud\n    if ((this.answerSession as OSSAnswerSession | CloudAnswerSession<true>).regenerateLast) {\n      const nonOramaCoreAnswerSession = this.answerSession as OSSAnswerSession | CloudAnswerSession<true>\n      nonOramaCoreAnswerSession.regenerateLast({ stream: false })\n    } else {\n      const oramaCoreAnswerSession = this.answerSession as CoreAnswerSession\n      oramaCoreAnswerSession.regenerateLast({ stream: false })\n    }\n  }\n\n  resetChat = async () => {\n    if (!this.answerSession) {\n      throw new OramaClientNotInitializedError()\n    }\n\n    if (this.chatStore.state.interactions.length < 1) {\n      return\n    }\n\n    // TODO: SDK should abort any streaming before cleaning the sessions. It is not doing that today\n    if (\n      ['loading', 'rendering', 'streaming'].includes(\n        this.chatStore.state.interactions[this.chatStore.state.interactions.length - 1].status,\n      )\n    ) {\n      this.abortAnswer()\n    }\n\n    this.answerSession.clearSession()\n\n    this.chatStore.state.interactions = []\n  }\n}\n","import type { Dictionary } from '@/types'\n\n/**\n * Default text dictionary with standard text values for all components\n */\nexport const defaultTextDictionary: Dictionary = {\n  searchPlaceholder: 'Search...',\n  chatPlaceholder: 'Ask me anything',\n  noResultsFound: 'No results found',\n  noResultsFoundFor: 'No results found for',\n  suggestionsTitle: 'Suggestions',\n  seeAll: 'See all',\n  addMore: 'Add more',\n  clearChat: 'Clear chat',\n  errorMessage: 'An error occurred while trying to search. Please try again.',\n  disclaimer: 'Orama can make mistakes. Please verify the information.',\n  startYourSearch: 'Start your search',\n  initErrorSearch: 'Unable to initialize search service',\n  initErrorChat: 'Unable to initialize chat service',\n  chatButtonLabel: 'Get a summary',\n  searchButtonLabel: 'Search',\n}\n\n/**\n * Gets the text for a specific key from the dictionary prop.\n * Prioritizes direct props (searchPlaceholder, chatPlaceholder) for backward compatibility,\n * then falls back to the dictionary prop, and finally to the defaultTextDictionary.\n *\n * @param key - The key to get the text for\n * @param dictionary - The custom text dictionary provided by the user\n * @param directProps - Optional direct props that take precedence (for backward compatibility)\n * @returns The text for the specified key\n */\nexport function getText(\n  key: keyof Dictionary,\n  dictionary: Partial<Dictionary> = {},\n  directProps: Partial<Record<keyof Dictionary, string>> = {},\n): string {\n  // First check if there's a direct prop for this key (for backward compatibility)\n  if (directProps[key]) {\n    return directProps[key]\n  }\n\n  // Then check the dictionary prop\n  return dictionary[key] || defaultTextDictionary[key]\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as g } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar w = Object.defineProperty, u = Object.getOwnPropertyDescriptor, a = (o, l, p, s) => {\n  for (var r = s > 1 ? void 0 : s ? u(l, p) : l, h = o.length - 1, n; h >= 0; h--)\n    (n = o[h]) && (r = (s ? n(l, p, r) : n(r)) || r);\n  return s && r && w(l, p, r), r;\n};\nlet t = class extends g {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var o;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((o = this.weight) != null ? o : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M202.83,146.83l-72,72a4,4,0,0,1-5.66,0l-72-72a4,4,0,0,1,5.66-5.66L124,206.34V40a4,4,0,0,1,8,0V206.34l65.17-65.17a4,4,0,0,1,5.66,5.66Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M204.24,148.24l-72,72a6,6,0,0,1-8.48,0l-72-72a6,6,0,0,1,8.48-8.48L122,201.51V40a6,6,0,0,1,12,0V201.51l61.76-61.75a6,6,0,0,1,8.48,8.48Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72a8,8,0,0,1,11.32-11.32L120,196.69V40a8,8,0,0,1,16,0V196.69l58.34-58.35a8,8,0,0,1,11.32,11.32Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72A8,8,0,0,1,56,136h64V40a8,8,0,0,1,16,0v96h64a8,8,0,0,1,5.66,13.66Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M200,144l-72,72L56,144Z\" opacity=\"0.2\"/><path d=\"M207.39,140.94A8,8,0,0,0,200,136H136V40a8,8,0,0,0-16,0v96H56a8,8,0,0,0-5.66,13.66l72,72a8,8,0,0,0,11.32,0l72-72A8,8,0,0,0,207.39,140.94ZM128,204.69,75.31,152H180.69Z\"/>`\n  ]\n]);\nt.styles = f`\n    :host {\n      display: contents;\n    }\n  `;\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\na([\n  i({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = a([\n  c(\"ph-arrow-down\")\n], t);\nexport {\n  t as PhArrowDown\n};\n",":host {\n  display: flex;\n  justify-content: end;\n  color: var(--text-color-primary, text-color('primary'));\n  padding: 0 var(--spacing-l, $spacing-l);\n\n  @media (--sm-min) {\n    justify-content: start;\n  }\n}\n\n.message-wrapper {\n  border-radius: var(--radius-s, $radius-s);\n  padding: var(--radius-s, $radius-s) var(--radius-m, $radius-m);\n}\n\n.chat-question {\n  font-weight: 400;\n\n  @media (--sm-min) {\n    margin-bottom: var(--spacing-l, $spacing-l);\n    font-size: pxToRem(20);\n  }\n}\n","import type { TChatInteraction } from '@/types'\nimport { Component, Host, Prop, h } from '@stencil/core'\n\n@Component({\n  tag: 'orama-chat-user-message',\n  styleUrl: 'orama-chat-user-message.scss',\n  scoped: true,\n})\nexport class OramaChatUserMessage {\n  @Prop() interaction: TChatInteraction\n\n  render() {\n    return (\n      <Host>\n        <div class=\"message-wrapper\">\n          <orama-text as=\"h2\" styledAs=\"p\" class=\"chat-question\">\n            {this.interaction.query}\n          </orama-text>\n        </div>\n      </Host>\n    )\n  }\n}\n",".suggestions-chips {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing-m, $spacing-m);\n  padding: var(--radius-s, $spacing-s) var(--radius-l, $spacing-l);\n  list-style: none;\n  margin: 0;\n  overflow-x: auto;\n\n  // TODO: check scroll styles\n  // Maybe move somewhere else to reuse in some somponents, but not globally\n  &::-webkit-scrollbar {\n    height: 0em;\n    background-color: transparent;\n  }\n\n  @media (--sm-min) {\n    justify-content: center;\n    flex-wrap: wrap;\n  }\n}\n\n.suggestion-button-chips {\n  @include span();\n  cursor: pointer;\n  border-radius: var(--radius-l, $radius-l);\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  padding: var(--spacing-s, $spacing-s);\n  display: flex;\n  align-items: center;\n  column-gap: var(--spacing-s, $spacing-s);\n  background-color: var(--background-color-secondary, background-color('secondary'));\n  width: max-content;\n  color: var(--text-color-secondary, text-color('secondary'));\n  transition: background-color 0.2s;\n\n  @media (hover: hover) {\n    &:hover {\n      background-color: var(--background-color-tertiary, background-color('tertiary'));\n    }\n  }\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.suggestions-list {\n  display: flex;\n  align-items: center;\n  padding: 0;\n  list-style: none;\n  margin: 0;\n  flex-wrap: wrap;\n}\n\n.suggestion-item-list {\n  width: 100%;\n}\n\n.suggestion-button-list {\n  display: flex;\n  align-items: center;\n  text-align: left;\n  column-gap: var(--spacing-s, $spacing-s);\n  border: 0;\n  background-color: transparent;\n  font-size: var(--font-size-sm, $font-size-sm);\n  cursor: pointer;\n  padding: var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m);\n  color: var(--text-color-secondary, text-color('secondary'));\n  background: linear-gradient(90deg, var(--text-color-accent, text-color('accent')) 0%, var(--text-color-primary, text-color()) 100%);\n  background-clip: text;\n  -webkit-text-fill-color: transparent;\n  width: 100%;\n  border: 1px solid transparent;\n  font-family: inherit;\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n    border-radius: var(--radius-s, $radius-s);\n  }\n}\n","import { Component, h, Prop } from '@stencil/core'\nimport { Icon } from '@/components/internal/icons'\n\n@Component({\n  tag: 'orama-suggestions',\n  styleUrl: 'orama-suggestions.scss',\n  scoped: true,\n})\nexport class OramaSuggestions {\n  @Prop() suggestions: string[]\n  @Prop() as: 'chips' | 'list' = 'chips'\n  @Prop() icon?: Node\n  @Prop() suggestionClicked: (suggestion: string) => void\n\n  handleClick(suggestion: string) {\n    if (!this.suggestionClicked) {\n      return\n    }\n    this.suggestionClicked(suggestion)\n  }\n\n  render() {\n    const isChips = this.as === 'chips'\n    const isList = this.as === 'list'\n\n    const classSuffix = isChips ? 'chips' : isList ? 'list' : ''\n\n    if (!this.suggestions?.length) {\n      return null\n    }\n\n    return (\n      <ul class={`suggestions-${classSuffix}`}>\n        {this.suggestions.map((suggestion) => {\n          return (\n            <li key={suggestion.split(' ').join('-').toLowerCase()} class={`suggestion-item-${classSuffix}`}>\n              <button\n                focus-on-arrow-nav\n                type=\"button\"\n                class={`suggestion-button-${classSuffix}`}\n                onClick={(e) => {\n                  e.preventDefault()\n                  this.handleClick(suggestion)\n                }}\n              >\n                {this.icon}\n                {suggestion}\n              </button>\n            </li>\n          )\n        })}\n      </ul>\n    )\n  }\n}\n","orama-chat-messages-container {\n  &::-webkit-scrollbar {\n    width: 0.3em;\n  }\n  &::-webkit-scrollbar-track {\n    background: transparent;\n  }\n  &::-webkit-scrollbar-thumb {\n    // TODO: Should it be a variable?\n    background-color: #b2b2b285;\n    border-radius: var(--border-radius-l, $radius-l);\n  }\n}\n\n.messages-container {\n  display: flex;\n  flex-direction: column;\n  margin: var(--spacing-l, $spacing-l) 0;\n  gap: var(--spacing-xl, $spacing-xl);\n  overflow: hidden;\n}\n\n.suggestions-wrapper {\n  margin-top: var(--spacing-xl, $spacing-xl);\n}\n","import { Component, Host, Prop, h, Element, State, type EventEmitter, Event } from '@stencil/core'\nimport type {\n  ChatMarkdownLinkHref,\n  ChatMarkdownLinkTarget,\n  ChatMarkdownLinkTitle,\n  OnAnswerGeneratedCallbackProps,\n  OnSearchCompletedCallbackProps,\n  TChatInteraction,\n} from '@/types'\nimport { Store } from '@/StoreDecorator'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\n\n@Component({\n  tag: 'orama-chat-messages-container',\n  styleUrl: 'orama-chat-messages-container.scss',\n  scoped: true,\n})\nexport class OramaChatMessagesContainer {\n  @Prop() interactions: TChatInteraction[]\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n\n  @Event({ bubbles: true, composed: true }) answerGenerated: EventEmitter<OnAnswerGeneratedCallbackProps>\n\n  @Element() el: HTMLElement\n\n  @State() latestInteractionMinHeight = 0\n\n  @Store('chat')\n  private chatStore: ChatStoreType\n\n  // TODO: I'm not sure about having this here as we're breaking our rule of maintain service access only to the very top level component\n  onSuggestionClick = (suggestion: string) => {\n    this.chatStore.state.chatService?.sendQuestion(suggestion, undefined, undefined, {\n      onAnswerGeneratedCallback: (onAnswerGeneratedCallbackProps) =>\n        this.answerGenerated.emit(onAnswerGeneratedCallbackProps),\n    })\n  }\n\n  resizeObserver = new ResizeObserver((entries) => {\n    // FIXME: We are removing the margin with a constant value. It should be calculated\n    this.latestInteractionMinHeight = entries[0].target.clientHeight - 32\n  })\n\n  componentDidLoad() {\n    // FIXME: We should get the element in another way. I tried findById or class and it was not working.\n    // probable something related to the shadow dom\n    const messagesWrapperElement = this.el.parentElement.parentElement\n\n    this.resizeObserver.observe(messagesWrapperElement)\n  }\n\n  render() {\n    return (\n      <Host>\n        <div class=\"messages-container\">\n          {this.interactions.map((interaction, interactionIndex) => (\n            <div\n              key={interaction.interactionId}\n              class=\"interaction-wrapper\"\n              // Hack to put the message on top when auto scrolling\n              style={{\n                minHeight:\n                  this.interactions.length > 1 && interactionIndex === this.interactions.length - 1\n                    ? `${this.latestInteractionMinHeight}px`\n                    : '0px',\n              }}\n            >\n              <orama-chat-user-message interaction={{ ...interaction }} />\n              <orama-chat-assistent-message\n                interaction={{ ...interaction }}\n                chatMarkdownLinkTitle={this.chatMarkdownLinkTitle}\n                chatMarkdownLinkHref={this.chatMarkdownLinkHref}\n              />\n              {interaction.latest && interaction.status === 'done' && !!interaction.relatedQueries?.length && (\n                <div class=\"suggestions-wrapper\">\n                  <orama-suggestions\n                    as=\"chips\"\n                    suggestions={interaction.relatedQueries}\n                    suggestionClicked={this.onSuggestionClick}\n                  />\n                </div>\n              )}\n            </div>\n          ))}\n        </div>\n      </Host>\n    )\n  }\n}\n",":host {\n  position: relative;\n  display: flex;\n  align-items: center;\n  border-radius: var(--textarea-radius, var(--radius-l, $radius-l));\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  background: var(--background-color-secondary, background-color('secondary'));\n  box-shadow: var(--textarea-shadow, var(--shadow-color-primary, shadow-color('primary')));\n  padding: var(--spacing-xs, $spacing-xs) var(--spacing-xs, $spacing-xs) var(--spacing-xs, $spacing-xs) var(--spacing-m, $spacing-m);\n}\n\n::slotted([slot='adornment-end']) {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.textarea {\n  @include paragraph();\n  left: 0;\n  right: 0;\n  resize: none;\n  border: none;\n  outline: none;\n  background: none;\n  font-family: inherit;\n  color: var(--text-color-primary, text-color('primary'));\n  width: 100%;\n  padding: 0;\n  font-size: var(--font-size-sm, $font-size-sm);\n\n  transition: height 0.1s;\n\n  @media (--sm-min) {\n    padding: var(--spacing-s, $spacing-s) 0;\n  }\n\n  &::placeholder {\n    color: var(--text-color-inactive, text-color('inactive'));\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    width: 95%;\n  }\n\n  &:focus-visible {\n    border-color: var(--border-color-accent, border-color('accent'));\n    outline: none;\n  }\n\n  // Maybe move somewhere else to reuse in some somponents, but not globally\n  &::-webkit-scrollbar {\n    width: 0.3em;\n  }\n  &::-webkit-scrollbar-track {\n    background: transparent;\n  }\n  &::-webkit-scrollbar-thumb {\n    background-color: #b2b2b285;\n    border-radius: var(--border-radius-l, $radius-l);\n  }\n\n  @media (--sm-min) {\n    font-size: var(--font-size-md, $font-size-md);\n  }\n}\n","import { Component, Host, Prop, State, Watch, h, Element } from '@stencil/core'\n\n@Component({\n  tag: 'orama-textarea',\n  styleUrl: 'orama-textarea.scss',\n  scoped: true,\n})\nexport class OramaTextarea {\n  @Element() el: HTMLDivElement\n\n  @Prop() value: string | null = ''\n  @Prop() maxRows: number | string\n  @Prop() minRows: number | string = 1\n  @Prop() placeholder: string\n  @Prop() autoFocus = false\n\n  @State() height: number\n  @State() startAdornmentWidth: number\n  @State() endAdornmentWidth: number\n\n  textarea!: HTMLTextAreaElement\n  shadowTextarea!: HTMLTextAreaElement\n\n  @Watch('autoFocus')\n  handleAutoFocusChange() {\n    if (this.autoFocus) {\n      this.textarea.focus()\n    }\n  }\n\n  componetWillLoad() {\n    this.startAdornmentWidth = this.getNamedSlotWidth('adornment-start')\n    this.endAdornmentWidth = this.getNamedSlotWidth('adornment-end')\n    this.syncHeight()\n    if (this.autoFocus) {\n      this.textarea.focus()\n    }\n  }\n\n  getNamedSlotWidth(slotName: string) {\n    const slot = this.el.querySelector(`slot[name=\"${slotName}\"]`) as HTMLSlotElement\n    if (slot) {\n      const assignedElements = slot.assignedElements()\n      if (assignedElements.length > 0) {\n        const firstAssignedElement = assignedElements[0] as HTMLElement\n        const width = firstAssignedElement.offsetWidth\n        return width\n      }\n    }\n    return 0\n  }\n\n  @Watch('value')\n  @Watch('maxRows')\n  @Watch('minRows')\n  handlePropsChange() {\n    this.syncHeight()\n  }\n\n  getStyleValue(value: string) {\n    return Number.parseInt(value, 10) || 0\n  }\n\n  calculateTextareaStyles() {\n    const input = this.textarea\n    const computedStyle = window.getComputedStyle(input)\n\n    if (computedStyle.width === '0px') {\n      return {\n        outerHeightStyle: 0,\n        overflowing: false,\n      }\n    }\n\n    const inputShallow = this.shadowTextarea\n    inputShallow.style.width = computedStyle.width\n    inputShallow.value = input.value || this.placeholder || 'x'\n    if (inputShallow.value.slice(-1) === '\\n') {\n      inputShallow.value += ' '\n    }\n\n    const boxSizing = computedStyle.boxSizing\n    const padding = this.getStyleValue(computedStyle.paddingBottom) + this.getStyleValue(computedStyle.paddingTop)\n    const border =\n      this.getStyleValue(computedStyle.borderBottomWidth) + this.getStyleValue(computedStyle.borderTopWidth)\n\n    const innerHeight = inputShallow.scrollHeight\n    inputShallow.value = 'x'\n    const singleRowHeight = inputShallow.scrollHeight\n\n    let outerHeight = innerHeight\n\n    if (this.minRows) {\n      outerHeight = Math.max(Number(this.minRows) * singleRowHeight, outerHeight)\n    }\n    if (this.maxRows) {\n      outerHeight = Math.min(Number(this.maxRows) * singleRowHeight, outerHeight)\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight)\n\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0)\n    const overflowing = Math.abs(outerHeight - innerHeight) <= 1\n\n    return { outerHeightStyle, overflowing }\n  }\n\n  syncHeight() {\n    const textareaStyles = this.calculateTextareaStyles()\n\n    if (!textareaStyles) {\n      return\n    }\n\n    const outerHeightStyle = textareaStyles.outerHeightStyle\n    if (this.height !== outerHeightStyle) {\n      this.height = outerHeightStyle\n      this.textarea.style.height = `${outerHeightStyle}px`\n    }\n    this.textarea.style.overflow = textareaStyles.overflowing ? 'hidden' : ''\n  }\n\n  handleChange = (event: Event) => {\n    const target = event.target as HTMLTextAreaElement\n    if (!this.value) {\n      this.syncHeight()\n    }\n    this.value = target.value\n  }\n\n  private getAllProps() {\n    const props = {}\n\n    for (let i = 0; i < this.el.attributes.length; i++) {\n      const attr = this.el.attributes[i]\n      props[attr.name] = attr.value\n    }\n    return props\n  }\n\n  render() {\n    return (\n      <Host>\n        {/* TODO: We should calculate the adormnent width dinamically and apply the appding to the textarea  */}\n\n        <slot name=\"adornment-start\" />\n\n        <textarea\n          {...this.getAllProps()}\n          value={this.value}\n          onInput={this.handleChange}\n          ref={(el) => (this.textarea = el as HTMLTextAreaElement)}\n          rows={Number(this.minRows)}\n          style={{\n            height: this.height ? `${this.height}px` : undefined,\n            paddingLeft: this.startAdornmentWidth ? `${this.startAdornmentWidth}px` : undefined,\n            paddingRight: this.endAdornmentWidth ? `${this.endAdornmentWidth}px` : undefined,\n          }}\n          class=\"textarea\"\n          placeholder={this.placeholder}\n        />\n        {/* TODO: We should calculate the adormnent width dinamically and apply the appding to the textarea  */}\n        <slot name=\"adornment-end\" />\n\n        {/* Textare below should be hidden from the user and it's used to calculate the height of the textarea */}\n        {/* biome-ignore lint/a11y/noAriaHiddenOnFocusable: This component shouldn't be focusable */}\n        <textarea\n          aria-hidden=\"true\"\n          readonly\n          ref={(el) => (this.shadowTextarea = el as HTMLTextAreaElement)}\n          tabindex={-1}\n          class=\"textarea\"\n          style={{\n            visibility: 'hidden',\n            position: 'absolute',\n            overflow: 'hidden',\n            height: '0',\n            top: '0',\n            left: '0',\n            transform: 'translateZ(0)',\n            paddingTop: '0',\n            paddingBottom: '0',\n            paddingLeft: this.startAdornmentWidth ? `${this.startAdornmentWidth}px` : undefined,\n            paddingRight: this.endAdornmentWidth ? `${this.endAdornmentWidth}px` : undefined,\n          }}\n        />\n      </Host>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as L } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, a = (l, s, i, o) => {\n  for (var e = o > 1 ? void 0 : o ? u(s, i) : s, h = l.length - 1, n; h >= 0; h--)\n    (n = l[h]) && (e = (o ? n(s, i, e) : n(e)) || e);\n  return o && e && f(s, i, e), e;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var l;\n    return L`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((l = this.weight) != null ? l : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M224.47,31.52a11.87,11.87,0,0,0-11.82-3L20.74,86.67a12,12,0,0,0-1.91,22.38L105,151l41.92,86.15A11.88,11.88,0,0,0,157.74,244c.34,0,.69,0,1,0a11.89,11.89,0,0,0,10.52-8.63l58.21-192,0-.08A11.85,11.85,0,0,0,224.47,31.52Zm-4.62,9.54-58.23,192a4,4,0,0,1-7.48.59l-41.3-84.86,50-50a4,4,0,1,0-5.66-5.66l-50,50-84.9-41.31a3.88,3.88,0,0,1-2.27-4,3.93,3.93,0,0,1,3-3.54L214.9,36.16A3.93,3.93,0,0,1,216,36a4,4,0,0,1,2.79,1.19A3.93,3.93,0,0,1,219.85,41.06Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M225.88,30.12a13.83,13.83,0,0,0-13.7-3.58l-.11,0L20.14,84.77A14,14,0,0,0,18,110.85l85.56,41.64L145.12,238a13.87,13.87,0,0,0,12.61,8c.4,0,.81,0,1.21-.05a13.9,13.9,0,0,0,12.29-10.09l58.2-191.93,0-.11A13.83,13.83,0,0,0,225.88,30.12Zm-8,10.4L159.73,232.43l0,.11a2,2,0,0,1-3.76.26l-40.68-83.58,49-49a6,6,0,1,0-8.49-8.49l-49,49L23.15,100a2,2,0,0,1,.31-3.74l.11,0L215.48,38.08a1.94,1.94,0,0,1,1.92.52A2,2,0,0,1,217.92,40.52Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M230.14,25.86a20,20,0,0,0-19.57-5.11l-.22.07L18.44,79a20,20,0,0,0-3.06,37.25L99,157l40.71,83.65a19.81,19.81,0,0,0,18,11.38c.57,0,1.15,0,1.73-.07A19.82,19.82,0,0,0,177,237.56L235.18,45.65a1.42,1.42,0,0,0,.07-.22A20,20,0,0,0,230.14,25.86ZM156.91,221.07l-34.37-70.64,46-45.95a12,12,0,0,0-17-17l-46,46L34.93,99.09,210,46Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M231.4,44.34s0,.1,0,.15l-58.2,191.94a15.88,15.88,0,0,1-14,11.51q-.69.06-1.38.06a15.86,15.86,0,0,1-14.42-9.15L107,164.15a4,4,0,0,1,.77-4.58l57.92-57.92a8,8,0,0,0-11.31-11.31L96.43,148.26a4,4,0,0,1-4.58.77L17.08,112.64a16,16,0,0,1,2.49-29.8l191.94-58.2.15,0A16,16,0,0,1,231.4,44.34Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M223.69,42.18l-58.22,192a8,8,0,0,1-14.92,1.25L108,148,20.58,105.45a8,8,0,0,1,1.25-14.92l192-58.22A8,8,0,0,1,223.69,42.18Z\" opacity=\"0.2\"/><path d=\"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z\"/>`\n  ]\n]);\nt.styles = g`\n    :host {\n      display: contents;\n    }\n  `;\na([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\na([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\na([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\na([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = a([\n  c(\"ph-paper-plane-tilt\")\n], t);\nexport {\n  t as PhPaperPlaneTilt\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as n } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as Z } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, o = (a, s, p, h) => {\n  for (var r = h > 1 ? void 0 : h ? u(s, p) : s, l = a.length - 1, m; l >= 0; l--)\n    (m = a[l]) && (r = (h ? m(s, p, r) : m(r)) || r);\n  return h && r && f(s, p, r), r;\n};\nlet t = class extends Z {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return n`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220ZM160,92H96a4,4,0,0,0-4,4v64a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V96A4,4,0,0,0,160,92Zm-4,64H100V100h56Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218ZM160,90H96a6,6,0,0,0-6,6v64a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V96A6,6,0,0,0,160,90Zm-6,64H102V102h52Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216ZM160,88H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V96A8,8,0,0,0,160,88Zm-8,64H104V104h48Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm40-112v56a12,12,0,0,1-12,12H100a12,12,0,0,1-12-12V100a12,12,0,0,1,12-12h56A12,12,0,0,1,168,100Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm32,132a4,4,0,0,1-4,4H100a4,4,0,0,1-4-4V100a4,4,0,0,1,4-4h56a4,4,0,0,1,4,4Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M128,32a96,96,0,1,0,96,96A96,96,0,0,0,128,32Zm32,128H96V96h64Z\" opacity=\"0.2\"/><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216ZM160,88H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V96A8,8,0,0,0,160,88Zm-8,64H104V104h48Z\"/>`\n  ]\n]);\nt.styles = g`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  i({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  c(\"ph-stop-circle\")\n], t);\nexport {\n  t as PhStopCircle\n};\n","orama-chat {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n  overflow: hidden;\n  height: 100%;\n  background: var(--background-color-primary, background-color('primary'));\n}\n\n.messages-container-wrapper {\n  position: relative;\n  z-index: 1;\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  overflow: auto;\n\n  // Maybe move somewhere else to reuse in some somponents, but not globally\n  &::-webkit-scrollbar {\n    width: 0.3em;\n  }\n  &::-webkit-scrollbar-track {\n    background: transparent;\n  }\n  &::-webkit-scrollbar-thumb {\n    // TODO: Should it be a variable?\n    background-color: #b2b2b285;\n    border-radius: var(--border-radius-l, $radius-l);\n  }\n\n  &.isEmpty {\n    justify-content: flex-end;\n  }\n}\n\n.messages-container-wrapper-non-scrollable {\n  position: relative;\n  z-index: 1;\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n}\n\n.lock-scroll-on-bottom-button-wrapper {\n  bottom: 0;\n  left: 50%;\n  transform: translateX(-50%);\n  z-index: 2;\n  display: flex;\n  position: absolute;\n  background-color: transparent;\n  border: none;\n  cursor: pointer;\n  padding: var(--spacing-s, $spacing-s);\n  background-color: var(--background-color-tertiary, background-color('tertiary'));\n  color: var(--icon-color-tertiary, text-color('tertiary'));\n  width: fit-content;\n  height: fit-content;\n  justify-content: center;\n  align-items: center;\n  font-family: var(--font-primary, font('primary'));\n  margin: var(--spacing-xs, $spacing-xs);\n  border-radius: var(--radius-m, $radius-m);\n}\n\n.chat-form-wrapper {\n  padding: var(--spacing-m, $spacing-m) var(--spacing-l, $spacing-l);\n}\n\n.chat-input {\n  margin-bottom: var(--spacing-s, $spacing-s);\n}\n\n.disclaimer-text {\n  margin-top: var(--spacing-xs, $spacing-xs);\n  opacity: 0.8;\n  color: var(--text-color-secondary, text-color('secondary'));\n}\n\n.suggestions-wrapper {\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n  justify-content: end;\n  overflow-x: auto;\n}\n\norama-logo-icon {\n  z-index: -1;\n  position: absolute;\n  top: 50%;\n  right: 50%;\n  transform: translate(50%, -50%);\n}\n","import { Component, Fragment, Listen, Host, Prop, State, Watch, h, type EventEmitter, Event } from '@stencil/core'\nimport {\n  TAnswerStatus,\n  type ChatMarkdownLinkHref,\n  type ChatMarkdownLinkTarget,\n  type ChatMarkdownLinkTitle,\n  type OnAnswerGeneratedCallbackProps,\n  type onStartConversationCallbackProps,\n  type SearchResult,\n  type SourcesMap,\n  type Dictionary,\n} from '@/types'\nimport '@phosphor-icons/webcomponents/dist/icons/PhPaperPlaneTilt.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhStopCircle.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowDown.mjs'\nimport { Store } from '@/StoreDecorator'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\nimport { getText as getTextUtil } from '@/utils/textDictionary'\n\nconst BOTTOM_THRESHOLD = 1\n\n@Component({\n  tag: 'orama-chat',\n  styleUrl: 'orama-chat.scss',\n})\nexport class OramaChat {\n  @Prop() placeholder?: string = 'Ask me anything'\n  @Prop() sourceBaseUrl?: string = ''\n  @Prop() linksTarget?: string\n  @Prop() linksRel?: string\n  @Prop() sourcesMap?: SourcesMap\n  @Prop() showClearChat?: boolean = true\n  @Prop() defaultTerm?: string\n  @Prop() focusInput?: boolean = false\n  @Prop() suggestions?: string[]\n  @Prop() relatedQueries?: number\n  @Prop() prompt?: string\n  @Prop() systemPrompts?: string[]\n  @Prop() clearChatOnDisconnect?: boolean\n  @Prop() dictionary?: Partial<Dictionary>\n  @Prop() disclaimer?: string = 'Orama can make mistakes. Please verify the information.'\n\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n\n  @Event({ bubbles: true, composed: true }) answerGenerated: EventEmitter<OnAnswerGeneratedCallbackProps>\n  @Event({ bubbles: true, composed: true }) clearChat: EventEmitter<void>\n  @Event({ bubbles: true, composed: true }) startConversation: EventEmitter<onStartConversationCallbackProps>\n\n  @State() inputValue = ''\n  @State() showGoToBottomButton = false\n\n  @Listen('sourceItemClick')\n  handleSourceItemClick(event: CustomEvent<SearchResult>) {\n    // console.log(`Source item clicked: ${event.detail.title}`, event.detail)\n  }\n\n  @Watch('defaultTerm')\n  handleDefaultTermChange() {\n    if (this.defaultTerm) {\n      this.chatStore.state.chatService?.sendQuestion(this.defaultTerm, this.relatedQueries, this.systemPrompts, {\n        onAnswerGeneratedCallback: (params) => this.answerGenerated.emit(params),\n      })\n    }\n  }\n\n  @Watch('focusInput')\n  focusInputWatcher() {\n    this.handleFocus()\n  }\n\n  @Watch('prompt')\n  promptWatcher(newValue: string, oldValue: string) {\n    if (newValue !== oldValue) {\n      this.triggerSendQuestion(newValue, this.relatedQueries)\n      this.chatStore.state.prompt = newValue\n    }\n  }\n\n  @Watch('dictionary')\n  handleTextDictionaryChange() {\n    // If dictionary has a chatPlaceholder, update the placeholder prop\n    if (this.dictionary?.chatPlaceholder) {\n      this.placeholder = this.dictionary.chatPlaceholder\n    }\n\n    // If dictionary has a disclaimer, update the disclaimer prop\n    if (this.dictionary?.disclaimer) {\n      this.disclaimer = this.dictionary.disclaimer\n    }\n\n    // Log the current values for debugging\n    console.log('Updated from dictionary:', {\n      placeholder: this.placeholder,\n      disclaimer: this.disclaimer,\n      dictionary: this.dictionary,\n    })\n  }\n\n  triggerSendQuestion = (question: string, relatedQueries?: number) => {\n    if (this.chatStore.state.chatService === null) {\n      throw new Error('Chat Service is not initialized')\n    }\n\n    this.startConversation.emit({ userPrompt: question, systemPrompts: this.systemPrompts })\n\n    this.chatStore.state.chatService.sendQuestion(question, relatedQueries, this.systemPrompts, {\n      onAnswerGeneratedCallback: (params) => this.answerGenerated.emit(params),\n    })\n  }\n\n  messagesContainerRef!: HTMLElement\n  nonScrollableMessagesContainerRef!: HTMLElement\n  textareaRef!: HTMLOramaTextareaElement\n  isScrolling = false\n  prevScrollTop = 0\n  scrollTarget = 0\n\n  pendingNewInteractionSideEffects = false\n\n  scrollableContainerResizeObserver: ResizeObserver\n  nonScrollableContainerResizeObserver: ResizeObserver\n\n  lockScrollOnBottom = false\n\n  @Store('chat')\n  private chatStore: ChatStoreType\n  private isDisconnecting = false;\n\n  componentWillLoad() {\n    // Initialize placeholder and disclaimer from dictionary if available\n    this.handleTextDictionaryChange()\n\n    // Ensure the disclaimer has a default value if not set\n    if (!this.disclaimer && this.dictionary?.disclaimer) {\n      this.disclaimer = this.dictionary.disclaimer\n    } else if (!this.disclaimer) {\n      this.disclaimer = 'Orama can make mistakes. Please verify the information.'\n    }\n\n    this.chatStore.on('set', (prop, newInteractions, oldInteractions) => {\n      if (prop !== 'interactions') {\n        return\n      }\n\n      if (oldInteractions?.length < newInteractions?.length) {\n        this.lockScrollOnBottom = false\n        this.pendingNewInteractionSideEffects = true\n      }\n    })\n  }\n\n  /**\n   * Gets the text for a specific key from the dictionary prop.\n   * Prioritizes direct props (placeholder) for backward compatibility,\n   * then falls back to the dictionary prop, and finally to the defaultTextDictionary.\n   *\n   * @param key - The key to get the text for\n   * @returns The text for the specified key\n   */\n  getText(key: keyof Dictionary): string {\n    // Create a map of direct props for backward compatibility\n    const directProps: Partial<Record<keyof Dictionary, string>> = {\n      chatPlaceholder: this.placeholder,\n    }\n\n    // If the key exists in directProps and its value is defined, return its value\n    const directValue = directProps[key]\n    if (directValue !== undefined) {\n      return directValue\n    }\n\n    // Otherwise, try to get the text from the dictionary prop or fall back to the defaultTextDictionary\n    return getTextUtil(key, this.dictionary)\n  }\n\n  handleFocus = () => {\n    if (this.focusInput) {\n      const texteareaEl = this.textareaRef.querySelector('textarea')\n      if (!texteareaEl) return\n      // requestAnimationFrame used to ensure that the focus is set after the textarea is fully rendered\n      requestAnimationFrame(() => {\n        texteareaEl.focus()\n      })\n    }\n  }\n\n  calculateIsScrollOnBottom = () => {\n    const scrollableHeight = this.messagesContainerRef.scrollHeight - this.messagesContainerRef.clientHeight\n\n    return this.messagesContainerRef.scrollTop + BOTTOM_THRESHOLD >= scrollableHeight\n  }\n\n  scrollToBottom = (\n    options: { animated: boolean; onScrollDone?: () => void } = { animated: true, onScrollDone: () => {} },\n  ) => {\n    if (!this.messagesContainerRef) {\n      return\n    }\n\n    if (!options.animated) {\n      this.messagesContainerRef.scrollTop = this.messagesContainerRef.scrollHeight\n      options.onScrollDone()\n      return\n    }\n\n    this.isScrolling = true\n    const startTime = performance.now()\n    const startPosition = this.messagesContainerRef.scrollTop\n\n    const duration = 300 // Custom duration in milliseconds\n\n    const animateScroll = (currentTime: number) => {\n      if (!this.messagesContainerRef || !this.isScrolling) {\n        return\n      }\n      const scrollTarget = this.messagesContainerRef.scrollHeight - this.messagesContainerRef.clientHeight\n      const elapsedTime = currentTime - startTime\n      const scrollProgress = Math.min(1, elapsedTime / duration)\n      const easeFunction = this.easeInOutQuad(scrollProgress)\n      const scrollTo = startPosition + (scrollTarget - startPosition) * easeFunction\n\n      this.messagesContainerRef.scrollTo(0, scrollTo)\n\n      if (elapsedTime < duration) {\n        requestAnimationFrame(animateScroll)\n      } else {\n        this.isScrolling = false\n        options.onScrollDone()\n      }\n    }\n\n    requestAnimationFrame(animateScroll)\n  }\n\n  // Easing function for smooth scroll animation\n  easeInOutQuad = (t: number) => {\n    return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t\n  }\n\n  recalculateGoBoToBottomButton = () => {\n    const isContainerOverflowing = this.calculateIsContainerOverflowing()\n    if (!isContainerOverflowing) {\n      this.showGoToBottomButton = false\n      return\n    }\n\n    this.showGoToBottomButton = !this.calculateIsScrollOnBottom()\n  }\n\n  handleWheel = (e: WheelEvent) => {\n    const isContainerOverflowing = this.calculateIsContainerOverflowing()\n    if (!isContainerOverflowing) {\n      this.lockScrollOnBottom = false\n      this.showGoToBottomButton = false\n      return\n    }\n\n    // Get the current scroll position\n    const currentScrollTop = this.messagesContainerRef.scrollTop\n\n    this.showGoToBottomButton = !this.calculateIsScrollOnBottom()\n\n    this.lockScrollOnBottom = !this.showGoToBottomButton\n    if (!this.showGoToBottomButton) {\n      this.isScrolling = false\n    }\n\n    // Update the previous scroll position\n    this.prevScrollTop = currentScrollTop\n  }\n\n  setSources = () => {\n    this.chatStore.state.sourceBaseURL = this.sourceBaseUrl\n    this.chatStore.state.sourcesMap = this.sourcesMap\n    this.chatStore.state.linksTarget = this.linksTarget\n    this.chatStore.state.linksRel = this.linksRel\n  }\n\n  componentDidLoad() {\n    this.messagesContainerRef.addEventListener('wheel', this.handleWheel)\n    this.setSources()\n    this.handleFocus()\n\n    if (this.prompt && this.chatStore.state?.prompt !== this.prompt) {\n      this.triggerSendQuestion(this.prompt)\n      this.chatStore.state.prompt = this.prompt\n    }\n\n    this.scrollableContainerResizeObserver = new ResizeObserver(() => {\n      this.recalculateGoBoToBottomButton()\n    })\n    this.scrollableContainerResizeObserver.observe(this.messagesContainerRef)\n\n    this.nonScrollableContainerResizeObserver = new ResizeObserver(() => {\n      if (this.pendingNewInteractionSideEffects) {\n        this.pendingNewInteractionSideEffects = false\n        this.lockScrollOnBottom = false\n        this.scrollToBottom({\n          animated: true,\n          onScrollDone: () => {\n            this.recalculateGoBoToBottomButton()\n          },\n        })\n\n        return\n      }\n\n      if (this.lockScrollOnBottom && !this.isScrolling) {\n        this.scrollToBottom({\n          animated: false,\n          onScrollDone: () => {\n            this.recalculateGoBoToBottomButton()\n          },\n        })\n      }\n\n      this.recalculateGoBoToBottomButton()\n    })\n\n    this.nonScrollableContainerResizeObserver.observe(this.nonScrollableMessagesContainerRef)\n  }\n\n  disconnectedCallback() {\n    this.isDisconnecting = true;\n    this.messagesContainerRef?.removeEventListener('wheel', this.handleWheel);\n    this.scrollableContainerResizeObserver?.disconnect();\n    this.nonScrollableContainerResizeObserver?.disconnect();\n\n    if (this.clearChatOnDisconnect) {\n      if (this.chatStore) {\n        if (this.chatStore.state) {\n          this.chatStore.state.interactions = [];\n        }\n      }\n    }\n  }\n\nhandleSubmit = (e: Event) => {\n  e.preventDefault()\n\n  if (this.chatStore.state.chatService === null) {\n    throw new Error('Chat Service is not initialized');\n  }\n\n  this.startConversation.emit({ userPrompt: this.inputValue, systemPrompts: this.systemPrompts });\n\n  this.chatStore.state.chatService.sendQuestion(this.inputValue, this.relatedQueries, this.systemPrompts, {\n    onAnswerGeneratedCallback: (params) => this.answerGenerated.emit(params),\n  });\n\n  this.chatStore.state.prompt = this.inputValue;\n  this.inputValue = '';\n  }\n\n  handleAbortAnswerClick = () => {\n    this.chatStore.state.chatService.abortAnswer()\n  }\n\n  handleSuggestionClick = (suggestion: string, relatedQueries?: number) => {\n    if (this.chatStore.state.chatService === null) {\n      throw new Error('Chat Service is not initialized')\n    }\n\n    this.startConversation.emit({ userPrompt: suggestion, systemPrompts: this.systemPrompts })\n\n    this.chatStore.state.chatService.sendQuestion(suggestion, relatedQueries, undefined, {\n      onAnswerGeneratedCallback: (params) => this.answerGenerated.emit(params),\n    })\n    this.inputValue = ''\n  }\n\n  handleClearChat = () => {\n    this.chatStore.state.chatService.resetChat()\n    this.clearChat.emit()\n  }\n\n  calculateIsContainerOverflowing = () => {\n    if (!this.messagesContainerRef) {\n      return false\n    }\n\n    return this.messagesContainerRef.scrollHeight > this.messagesContainerRef.clientHeight;\n  }\n\n  render() {\n    const lastInteraction = this.chatStore.state.interactions?.[this.chatStore.state.interactions.length - 1];\n    const lastInteractionStatus = lastInteraction?.status\n    const hasInteractions = this.chatStore.state.interactions?.length > 0\n\n    // ? Question: Maybe should be a orama-button variant?\n    return (\n      <Host>\n        {this.showClearChat && hasInteractions && (\n          <div class=\"header\">\n            <button type=\"button\" onClick={this.handleClearChat}>\n              <ph-arrow-clockwise weight=\"fill\" size=\"14\" /> {this.getText('clearChat')}\n            </button>\n          </div>\n        )}\n        {/* CHAT MESSAGES */}\n        <div class={'messages-container-wrapper-non-scrollable'}>\n          <div\n            class={`messages-container-wrapper ${!hasInteractions ? 'isEmpty' : ''}`}\n            ref={(ref) => (this.messagesContainerRef = ref)}\n          >\n            <div ref={(ref) => (this.nonScrollableMessagesContainerRef = ref)}>\n              {hasInteractions ? (\n                <orama-chat-messages-container\n                  interactions={this.chatStore.state.interactions}\n                  chatMarkdownLinkTitle={this.chatMarkdownLinkTitle}\n                  chatMarkdownLinkHref={this.chatMarkdownLinkHref}\n                />\n              ) : null}\n\n              {/* TODO: Provide a better animation */}\n              {!hasInteractions ? (\n                <Fragment>\n                  <slot name=\"chat-empty-state\" />\n                  {!!this.suggestions?.length && (\n                    <div class=\"suggestions-wrapper\">\n                      <orama-suggestions\n                        suggestions={this.suggestions}\n                        suggestionClicked={this.handleSuggestionClick}\n                      />\n                    </div>\n                  )}\n                </Fragment>\n              ) : null}\n              {/* TODO: not required for chatbox, but maybe required for Searchbox v2 */}\n              {/* <orama-logo-icon /> */}\n            </div>\n          </div>\n          {this.showGoToBottomButton && (\n            <button\n              class=\"lock-scroll-on-bottom-button-wrapper\"\n              type=\"button\"\n              onClick={() => {\n                this.lockScrollOnBottom = true\n                this.scrollToBottom({ animated: true, onScrollDone: () => this.recalculateGoBoToBottomButton() })\n              }}\n            >\n              <ph-arrow-down size={'18px'} />\n            </button>\n          )}\n        </div>\n\n        {/* CHAT INPUT */}\n        <div class=\"chat-form-wrapper\">\n          <form onSubmit={this.handleSubmit}>\n            <div class=\"chat-input\">\n              <orama-textarea\n                ref={(ref) => (this.textareaRef = ref)}\n                autoFocus={this.focusInput}\n                maxRows={4}\n                value={this.inputValue}\n                onKeyDown={(e: KeyboardEvent) => {\n                  if (e.key === 'Enter' && !e.shiftKey) {\n                    this.handleSubmit(e)\n                    e.preventDefault()\n                  }\n                }}\n                onInput={(e: Event) => {\n                  this.inputValue = (e.target as HTMLInputElement).value\n                }}\n                placeholder={this.placeholder}\n              >\n                <div slot=\"adornment-end\">\n                  {[TAnswerStatus.streaming, TAnswerStatus.rendering, TAnswerStatus.loading].includes(\n                    lastInteractionStatus,\n                  ) ? (\n                    <orama-button\n                      type=\"submit\"\n                      onClick={this.handleAbortAnswerClick}\n                      onKeyDown={this.handleAbortAnswerClick}\n                      disabled={lastInteractionStatus !== TAnswerStatus.rendering}\n                      aria-label=\"Abort answer\"\n                    >\n                      <ph-stop-circle size={16} />\n                    </orama-button>\n                  ) : (\n                    <orama-button\n                      type=\"submit\"\n                      onClick={this.handleSubmit}\n                      onKeyDown={this.handleSubmit}\n                      disabled={!this.inputValue}\n                      aria-label=\"Send question\"\n                    >\n                      <ph-paper-plane-tilt size={16} />\n                    </orama-button>\n                  )}\n                </div>\n              </orama-textarea>\n            </div>\n          </form>\n          {this.disclaimer && (\n            <orama-text as=\"p\" styledAs=\"small\" align=\"center\" class=\"disclaimer-text\">\n              {this.disclaimer}\n            </orama-text>\n          )}\n        </div>\n      </Host>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as n } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as l } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar w = Object.defineProperty, u = Object.getOwnPropertyDescriptor, o = (a, s, h, i) => {\n  for (var r = i > 1 ? void 0 : i ? u(s, h) : s, p = a.length - 1, c; p >= 0; p--)\n    (c = a[p]) && (r = (i ? c(s, h, r) : c(r)) || r);\n  return i && r && w(s, h, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return n`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M236,56v48a4,4,0,0,1-4,4H184a4,4,0,0,1,0-8h37.7L187.53,68.69l-.13-.12a84,84,0,1,0-1.75,120.51,4,4,0,0,1,5.5,5.82A91.43,91.43,0,0,1,128,220h-1.26A92,92,0,1,1,193,62.84l35,32.05V56a4,4,0,1,1,8,0Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M238,56v48a6,6,0,0,1-6,6H184a6,6,0,0,1,0-12h32.55l-30.38-27.8c-.06-.06-.12-.13-.19-.19a82,82,0,1,0-1.7,117.65,6,6,0,0,1,8.24,8.73A93.46,93.46,0,0,1,128,222h-1.28A94,94,0,1,1,194.37,61.4L226,90.35V56a6,6,0,1,1,12,0Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1-5.66-13.66l17-17-10.55-9.65-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,1,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60l10.93,10L226.34,50.3A8,8,0,0,1,240,56Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\" opacity=\"0.2\"/><path d=\"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z\"/>`\n  ]\n]);\nt.styles = f`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  l({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  g(\"ph-arrow-clockwise\")\n], t);\nexport {\n  t as PhArrowClockwise\n};\n",":host {\n  display: flex;\n  flex-grow: 1;\n}\n\n.header {\n  padding: var(--spacing-m, $spacing-m) var(--spacing-l, $spacing-l);\n  background: var(--background-color-primary, background-color('primary'));\n  text-align: end;\n  transition: opacity 0.2s;\n\n  &.hidden button {\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  button {\n    background-color: transparent;\n    border: none;\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    gap: var(--spacing-xs, $spacing-xs);\n    color: var(--text-color-tertiary, text-color('tertiary'));\n    font-size: var(--font-size-sm, $font-size-sm);\n    transition: color 0.2s;\n    padding: var(--spacing-2xs, $spacing-2xs) var(--spacing-xs, $spacing-xs);\n    transition: background-color 0.2s;\n    border-radius: var(--radius-s, $radius-s);\n\n    &:hover {\n      color: var(--text-color-tertiary, text-color('tertiary'));\n      background-color: var(--background-color-tertiary, background-color('tertiary'));\n    }\n  }\n}\n","import { Component, Host, h, Prop, Watch, State, Element, type EventEmitter, Event } from '@stencil/core'\nimport { ChatService } from '@/services/ChatService'\nimport {\n  generateRandomID,\n  initOramaClient,\n  updateCssVariables,\n  updateThemeClasses,\n  validateCloudIndexConfig,\n} from '@/utils/utils'\nimport { defaultTextDictionary, getText as getTextUtil } from '@/utils/textDictionary'\nimport type {\n  ChatMarkdownLinkHref,\n  ChatMarkdownLinkTarget,\n  ChatMarkdownLinkTitle,\n  CloudIndexConfig,\n  ColorScheme,\n  OnAnswerGeneratedCallbackProps,\n  OnAnswerSourceClickCallbackProps,\n  OnChatMarkdownLinkClickedCallbackProps,\n  onStartConversationCallbackProps,\n  SourcesMap,\n  Dictionary,\n} from '@/types'\nimport type { TThemeOverrides } from '@/config/theme'\nimport type { AnyOrama } from '@orama/orama'\nimport type { OramaClient } from '@oramacloud/client'\nimport type { CollectionManager } from '@orama/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowClockwise.mjs'\nimport { initStore, removeAllStores } from '@/ParentComponentStore/ParentComponentStoreManager'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\n\n@Component({\n  tag: 'orama-chat-box',\n  styleUrl: 'orama-chat-box.scss',\n  shadow: true,\n})\nexport class ChatBox {\n  @Element() htmlElement: HTMLElement\n  @Prop() index?: CloudIndexConfig | CloudIndexConfig[]\n  @Prop() clientInstance?: OramaClient | AnyOrama\n  @Prop() oramaCoreClientInstance?: CollectionManager\n  @Prop() sourceBaseUrl?: string\n  @Prop() linksTarget?: string\n  @Prop() linksRel?: string\n  @Prop() placeholder?: string\n  @Prop() sourcesMap?: SourcesMap\n  @Prop() suggestions?: string[]\n  @Prop() relatedQueries?: number\n  @Prop() autoFocus = true\n  @Prop() systemPrompts?: string[]\n  @Prop() prompt?: string\n  @Prop() clearChatOnDisconnect = true\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n\n  /**\n   * Text dictionary for customizing all text content in the component.\n   * This can be set either via HTML attribute as a JSON string or via JavaScript as an object.\n   * It allows for customization of all text elements like placeholders, error messages, and UI labels.\n   * @example\n   * // Via HTML attribute\n   * <orama-chat-box dictionary='{\"chatPlaceholder\": \"Ask about our docs...\"}' />\n   *\n   * // Via JavaScript\n   * const chatBox = document.querySelector('orama-chat-box');\n   * chatBox.dictionary = { chatPlaceholder: \"Ask about our docs...\" };\n   */\n  @Prop() dictionary?: Partial<Dictionary> = {}\n  @Prop() disclaimer?: string\n\n  /**\n   * Component theme customization\n   */\n  @Prop() themeConfig?: Partial<TThemeOverrides>\n\n  /**\n   * Component color schema\n   */\n  @Prop() colorScheme?: ColorScheme = 'light'\n\n  @State() componentID = generateRandomID('chat-box')\n  @State() systemScheme: Omit<ColorScheme, 'system'> = 'light'\n\n  schemaQuery!: MediaQueryList\n\n  /**\n   * Gets the text for a specific key from the dictionary prop.\n   * Prioritizes direct props (placeholder) for backward compatibility,\n   * then falls back to the dictionary prop, and finally to the defaultTextDictionary.\n   *\n   * @param key - The key to get the text forstartChatService\n   * @returns The text for the specified key\n   */\n  getText(key: keyof Dictionary): string {\n    // Create a map of direct props for backward compatibility\n    const directProps: Partial<Record<keyof Dictionary, string>> = {\n      chatPlaceholder: this.placeholder,\n    }\n\n    return getTextUtil(key, this.dictionary, directProps)\n  }\n\n  /**\n   * Fired when answer generation is successfully completed\n   */\n  @Event({ bubbles: true, composed: true }) answerGenerated: EventEmitter<OnAnswerGeneratedCallbackProps>\n\n  /**\n   * Fired when the chat is cleared\n   */\n  @Event({ bubbles: true, composed: true }) clearChat: EventEmitter<void>\n\n  /**\n   * Fired as soon as the conversation is started\n   */\n  @Event({ bubbles: true, composed: true }) startConversation: EventEmitter<onStartConversationCallbackProps>\n\n  /**\n   * Fired when user clicks on answer source\n   */\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  answerSourceClick: EventEmitter<OnAnswerSourceClickCallbackProps>\n  /**\n   * Fired when user clicks on chat markdown link\n   */\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  chatMarkdownLinkClicked: EventEmitter<OnChatMarkdownLinkClickedCallbackProps>\n\n  @Watch('index')\n  @Watch('themeConfig')\n  @Watch('colorScheme')\n  @Watch('oramaCoreClientInstance')\n  @Watch('clientInstance')\n  watchHandler() {\n    // This is a naive way to check if it is safe to eval this method (after componentWillLoad)\n    if (!this.chatStore) {\n      return\n    }\n\n    this.startChatService()\n    this.updateTheme()\n  }\n\n  /**\n   * Watch for changes to the dictionary prop\n   */\n  @Watch('dictionary')\n  handleTextDictionaryChange(newValue: Partial<Dictionary> | string) {\n    // Handle case where dictionary is passed as a string (via HTML attribute)\n    if (typeof newValue === 'string') {\n      try {\n        this.dictionary = JSON.parse(newValue)\n      } catch (e) {\n        console.error('Error parsing dictionary:', e)\n      }\n    }\n  }\n\n  private chatStore: ChatStoreType\n\n  componentWillLoad() {\n    this.htmlElement.id = this.componentID\n    this.schemaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n    this.systemScheme = this.schemaQuery.matches ? 'dark' : 'light'\n    this.updateTheme()\n\n    this.schemaQuery.addEventListener('change', this.onPrefersColorSchemeChange)\n    this.startChatService()\n  }\n\n  componentDidLoad() {\n    this.htmlElement.id = this.componentID\n    this.startChatService()\n  }\n\n  /**\n   * Get the old Orama Client if oramaCore ins't available\n   */\n  getOldOramaClient() {\n    if (this.oramaCoreClientInstance) {\n      return undefined\n    }\n\n    if (this.clientInstance) {\n      return this.clientInstance\n    }\n\n    return initOramaClient(this.index)\n  }\n\n  private startChatService() {\n    if (!this.index && !this.clientInstance && !this.oramaCoreClientInstance) {\n      console.error('Missing Index, ClientInstance or OramaCoreClientInstance')\n      // Skip initialization if no index or clientInstance is provided\n      return\n    }\n\n    validateCloudIndexConfig(this.htmlElement, this.index, this.clientInstance, this.oramaCoreClientInstance)\n    const oldOramaClient = this.getOldOramaClient()\n    this.chatStore.state.chatService = new ChatService(oldOramaClient, this.oramaCoreClientInstance, this.chatStore)\n\n    if (!this.chatStore.state.chatService) {\n      console.error('Failed to initialize chat service')\n    }\n  }\n\n  updateTheme() {\n    const scheme = updateThemeClasses(this.htmlElement, this.colorScheme, this.systemScheme)\n\n    updateCssVariables(this.htmlElement, scheme as ColorScheme, this.themeConfig)\n  }\n\n  private onPrefersColorSchemeChange = (event) => {\n    this.systemScheme = event.matches ? 'dark' : 'light'\n    this.updateTheme()\n  }\n\n  connectedCallback() {\n    this.chatStore = initStore('chat', this.componentID)\n  }\n\n  disconnectedCallback() {\n    removeAllStores(this.componentID)\n\n    this.schemaQuery?.removeEventListener('change', this.onPrefersColorSchemeChange)\n  }\n\n  render() {\n    if (!this.chatStore.state.chatService) {\n      return null\n    }\n\n    // Maintain backwards compatibility with dark theme default\n    const defaultTheme = 'dark'\n    const currentScheme = this.colorScheme === 'system' ? this.systemScheme : this.colorScheme || defaultTheme\n\n    return (\n      <Host class={`theme-${currentScheme}`}>\n        <orama-chat\n          placeholder={this.getText('chatPlaceholder')}\n          sourceBaseUrl={this.sourceBaseUrl}\n          sourcesMap={this.sourcesMap}\n          suggestions={this.suggestions}\n          relatedQueries={this.relatedQueries}\n          focusInput={this.autoFocus}\n          systemPrompts={this.systemPrompts}\n          prompt={this.prompt}\n          clearChatOnDisconnect={this.clearChatOnDisconnect}\n          chatMarkdownLinkTitle={this.chatMarkdownLinkTitle}\n          chatMarkdownLinkHref={this.chatMarkdownLinkHref}\n          dictionary={this.dictionary}\n          disclaimer={this.disclaimer}\n        >\n          {!!this.chatStore.state?.interactions?.length && (\n            <div slot=\"chat-empty-state\">\n              <slot name=\"empty-state\" />\n            </div>\n          )}\n        </orama-chat>\n      </Host>\n    )\n  }\n}\n","import { type FunctionalComponent, h } from '@stencil/core'\n\ninterface IconProps {\n  name: string\n  size?: number\n  color?: string\n}\n\nexport const Icon: FunctionalComponent<IconProps> = ({ name, size = 24, color = 'black' }) => {\n  const getIconSvg = (iconName: string) => {\n    const icons: { [key: string]: string } = {\n      star: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=${size} height=${size} viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M8.1875 0.6875L9.12531 3.22189C9.78366 5.00107 11.1864 6.40384 12.9656 7.06219L15.5 8L12.9656 8.93781C11.1864 9.59616 9.78366 10.9989 9.12531 12.7781L8.1875 15.3125L7.24969 12.7781C6.59134 10.9989 5.18857 9.59616 3.40939 8.93781L0.875 8L3.40939 7.06219C5.18857 6.40384 6.59134 5.00107 7.24969 3.22189L8.1875 0.6875Z\" fill=\"url(#paint0_radial_1183_175)\"/>\n          <defs>\n          <radialGradient id=\"paint0_radial_1183_175\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(16.5 -9.5) rotate(141.053) scale(24.2042)\">\n          <stop stop-color=\"#6A4BB2\"/>\n          <stop offset=\"1\"/>\n          </radialGradient>\n          </defs>\n        </svg>`,\n      starFour: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n        <path d=\"M14.3434 7.06266L10.379 5.62516L8.93717 1.65641C8.86613 1.46503 8.73823 1.29998 8.57064 1.18342C8.40305 1.06687 8.20381 1.00439 7.99967 1.00439C7.79554 1.00439 7.59629 1.06687 7.4287 1.18342C7.26111 1.29998 7.13321 1.46503 7.06217 1.65641L5.62467 5.62078L1.65592 7.06266C1.46454 7.1337 1.29949 7.2616 1.18294 7.42919C1.06638 7.59678 1.00391 7.79602 1.00391 8.00016C1.00391 8.20429 1.06638 8.40354 1.18294 8.57113C1.29949 8.73872 1.46454 8.86662 1.65592 8.93766L5.6203 10.3752L7.06217 14.3439C7.13321 14.5353 7.26111 14.7003 7.4287 14.8169C7.59629 14.9334 7.79554 14.9959 7.99967 14.9959C8.20381 14.9959 8.40305 14.9334 8.57064 14.8169C8.73823 14.7003 8.86613 14.5353 8.93717 14.3439L10.379 10.3789L14.3434 8.93766C14.5348 8.86662 14.6999 8.73872 14.8164 8.57113C14.933 8.40354 14.9954 8.20429 14.9954 8.00016C14.9954 7.79602 14.933 7.59678 14.8164 7.42919C14.6999 7.2616 14.5348 7.1337 14.3434 7.06266ZM10.0353 9.43766C9.89849 9.48763 9.77424 9.56687 9.67125 9.66986C9.56826 9.77285 9.48901 9.8971 9.43905 10.0339L7.99967 13.9939L6.56217 10.0358C6.51224 9.89844 6.4328 9.7737 6.32946 9.67037C6.22613 9.56703 6.10139 9.48759 5.96405 9.43766L2.00592 8.00016L5.96405 6.56266C6.10139 6.51272 6.22613 6.43329 6.32946 6.32995C6.4328 6.22661 6.51224 6.10188 6.56217 5.96453L7.99967 2.00641L9.43717 5.96453C9.48714 6.10134 9.56639 6.22559 9.66938 6.32858C9.77237 6.43157 9.89661 6.51082 10.0334 6.56078L13.9915 7.99828L10.0353 9.43766Z\" />\n      </svg>`,\n    }\n    return icons[iconName] || ''\n  }\n\n  return (\n    <div\n      innerHTML={getIconSvg(name)}\n      style={{\n        width: `${size}px`,\n        height: `${size}px`,\n        fill: color,\n        display: 'inline-block',\n        verticalAlign: 'middle',\n      }}\n    />\n  )\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as f } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as i } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar w = Object.defineProperty, d = Object.getOwnPropertyDescriptor, a = (o, l, p, s) => {\n  for (var r = s > 1 ? void 0 : s ? d(l, p) : l, h = o.length - 1, n; h >= 0; h--)\n    (n = o[h]) && (r = (s ? n(l, p, r) : n(r)) || r);\n  return s && r && w(l, p, r), r;\n};\nlet t = class extends f {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var o;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((o = this.weight) != null ? o : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M228,56A100.11,100.11,0,0,1,128,156H41.66l41.17,41.17a4,4,0,0,1-5.66,5.66l-48-48a4,4,0,0,1,0-5.66l48-48a4,4,0,0,1,5.66,5.66L41.66,148H128a92.1,92.1,0,0,0,92-92,4,4,0,0,1,8,0Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M230,56A102.12,102.12,0,0,1,128,158H46.49l37.75,37.76a6,6,0,1,1-8.48,8.48l-48-48a6,6,0,0,1,0-8.48l48-48a6,6,0,0,1,8.48,8.48L46.49,146H128a90.1,90.1,0,0,0,90-90,6,6,0,0,1,12,0Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M232,56A104.11,104.11,0,0,1,128,160H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48a8,8,0,0,1,11.32,11.32L51.31,144H128a88.1,88.1,0,0,0,88-88,8,8,0,0,1,16,0Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M236,56A108.12,108.12,0,0,1,128,164H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,140h67a84.09,84.09,0,0,0,84-84,12,12,0,0,1,24,0Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M232,56A104.11,104.11,0,0,1,128,160H88v40a8,8,0,0,1-13.66,5.66l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,88,104v40h40a88.1,88.1,0,0,0,88-88,8,8,0,0,1,16,0Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M80,104v96L32,152Z\" opacity=\"0.2\"/><path d=\"M224,48a8,8,0,0,0-8,8,88.1,88.1,0,0,1-88,88H88V104a8,8,0,0,0-13.66-5.66l-48,48a8,8,0,0,0,0,11.32l48,48A8,8,0,0,0,88,200V160h40A104.11,104.11,0,0,0,232,56,8,8,0,0,0,224,48ZM72,180.69,43.31,152,72,123.31Z\"/>`\n  ]\n]);\nt.styles = c`\n    :host {\n      display: contents;\n    }\n  `;\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\na([\n  i({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\na([\n  i({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = a([\n  g(\"ph-arrow-bend-down-left\")\n], t);\nexport {\n  t as PhArrowBendDownLeft\n};\n","@keyframes shine {\n  from {\n    background-position: 0% 50%;\n  }\n  to {\n    background-position: 150% center;\n    opacity: 0;\n  }\n}\n\n@keyframes animBg {\n  0% {\n    background: var(--background-color-tertiary, background-color('tertiary'));\n  }\n  70% {\n    background: var(--background-color-tertiary, background-color('tertiary'));\n  }\n  100% {\n    background: transparent;\n  }\n}\n\n@keyframes steam {\n  0% {\n    background-position: 0% 50%;\n  }\n  50% {\n    background-position: 75% 50%;\n  }\n  100% {\n    background-position: 0% 50%;\n  }\n}\n\n:host {\n  padding: var(--spacing-s, $spacing-s);\n  border-bottom: 1px solid var(--border-color-primary, border-color('primary'));\n}\n\n.chat-button {\n  @include paragraph();\n  display: flex;\n  width: 100%;\n  padding: var(--spacing-s, $spacing-s);\n  align-items: center;\n  gap: var(--spacing-s, $spacing-s);\n  cursor: pointer;\n  border-radius: var(--spacing-s, $spacing-s);\n  border: 1px solid transparent;\n  background: transparent;\n  position: relative;\n\n  @media (hover: hover) {\n    &:hover {\n      background: var(--background-color-tertiary, background-color('tertiary'));\n    }\n  }\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n\n  &.is-active {\n    background: var(--background-color-tertiary, background-color('tertiary'));\n  }\n\n  &.is-highlighted {\n    &::before,\n    &:after {\n      content: '';\n      position: absolute;\n      display: block;\n      border-radius: var(--spacing-s, $spacing-s);\n      top: -2px;\n      left: -2px;\n      z-index: -1;\n      height: calc(100% + 4px);\n      width: calc(100% + 4px);\n      overflow: hidden;\n      background: linear-gradient(\n        to right,\n        var(--chat-button-border-color-gradientOne, palette('chat-button-border', 'gradientOne')) 0%,\n        var(--chat-button-border-color-gradientTwo, palette('chat-button-border', 'gradientTwo')) 20%,\n        var(--chat-button-border-color-gradientThree, palette('chat-button-border', 'gradientThree')) 40%,\n        var(--chat-button-border-color-gradientFour, palette('chat-button-border', 'gradientFour')) 60%,\n        var(--chat-button-border-color-gradientFive, palette('chat-button-border', 'gradientFive')) 80%,\n        var(--chat-button-border-color-gradientSix, palette('chat-button-border', 'gradientSix')) 100%\n      );\n      background-size: 150% auto;\n\n      animation: shine 1s linear 1 forwards;\n    }\n\n    &:after {\n      filter: blur(3px);\n      width: 100%;\n      height: 100%;\n    }\n  }\n}\n\n.icon-star {\n  display: flex;\n  padding: var(--spacing-s, $spacing-s);\n  align-items: center;\n  border-radius: var(--radius-xs, $radius-xs);\n  background: linear-gradient(\n    79deg,\n    var(--chat-button-background-color-gradientOne, palette('chat-button-background', 'gradientOne')) -45%,\n    var(--chat-button-backgroun-color-gradientTwo, palette('chat-button-background', 'gradientTwo')) 75%\n  );\n  background-size: 200% auto;\n\n  .is-highlighted & {\n    animation: steam 1.4s linear 1 forwards;\n  }\n}\n\n.icon-enter {\n  display: flex;\n  align-items: center;\n  padding: var(--spacing-xs, $spacing-xs);\n  border-radius: var(--radius-xs, $radius-xs);\n  border: 0.7px solid var(--border-color-primary, border-color('primary'));\n  justify-self: flex-end;\n}\n\n.button-label {\n  flex-grow: 1;\n  text-align: left;\n}\n","import { Component, Prop, h, Element, Host, Watch } from '@stencil/core'\nimport { Icon } from '@/components/internal/icons'\nimport { getNonExplicitAttributes } from '@/utils/utils'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowBendDownLeft.mjs'\n\n@Component({\n  tag: 'orama-chat-button',\n  styleUrl: 'orama-chat-button.scss',\n  scoped: true,\n})\n// TODO: consider renaming this component\n/**\n * The orama-chat-button component is used to render a button element that will trigger the chat.\n */\nexport class OramaChatButton {\n  @Element() el: HTMLButtonElement\n\n  @Prop() label: string\n  @Prop() active?: boolean = false\n  @Prop({ mutable: true }) highlight?: boolean = false\n  @Prop() class?: string\n\n  @Watch('active')\n  @Watch('highlight')\n  highlightButton() {\n    if (this.active && !this.highlight) {\n      this.highlight = true\n    }\n  }\n\n  render() {\n    const declaredProps = ['label', 'onClick', 'class']\n    const buttonProps = getNonExplicitAttributes(this.el, declaredProps)\n\n    return (\n      <Host class={this.class}>\n        <button\n          class={{\n            'chat-button': true,\n            'is-active': this.active,\n            'is-highlighted': this.highlight,\n          }}\n          {...buttonProps}\n          type=\"button\"\n        >\n          <span class=\"icon-star\">\n            <Icon name=\"star\" size={16} />\n          </span>\n          <span class=\"button-label\">{this.label}</span>\n          <span class=\"icon-enter\">\n            <ph-arrow-bend-down-left size={12} />\n          </span>\n        </button>\n      </Host>\n    )\n  }\n}\n",".embed {\n  background-color: var(--background-color-primary, background-color('primary'));\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  border-radius: var(--radius-m, $radius-m);\n  inset: 0;\n  width: 100%;\n  margin: 0 auto;\n  height: 100%;\n  min-height: pxToRem(400);\n  max-height: 100%;\n  overflow: hidden;\n  padding: 0;\n  display: flex;\n  flex-direction: column;\n  box-sizing: border-box;\n\n  @media (--md-min) {\n    background-color: var(--background-color-secondary, background-color('secondary'));\n\n    orama-input {\n      padding: 0;\n      margin: 0;\n      border-radius: 0;\n    }\n\n    input[type='search'] {\n      border-radius: var(--radius-m, $radius-m) var(--radius-m, $radius-m) 0 0;\n    }\n  }\n}\n","import { Component, h, Prop, State, Listen, Element, Event, type EventEmitter, Watch } from '@stencil/core'\n\n@Component({\n  tag: 'orama-embed',\n  styleUrl: 'orama-embed.scss',\n  scoped: true,\n})\nexport class OramaEmbed {\n  render() {\n    return (\n      <div class=\"embed\">\n        <slot />\n      </div>\n    )\n  }\n}\n",".facets-list {\n  display: flex;\n  align-items: center;\n  column-gap: var(--spacing-s, $spacing-s);\n\n  list-style: none;\n  padding: var(--radius-l, $spacing-l);\n\n  margin: 0;\n  overflow-x: auto;\n  scroll-snap-type: y mandatory;\n\n  // TODO: check scroll styles\n  // Maybe move somewhere else to reuse in some somponents, but not globally\n  &::-webkit-scrollbar {\n    height: 0em;\n    background-color: transparent;\n  }\n\n  @media (--md-min) {\n    padding: var(--radius-l, $spacing-l) var(--radius-xs, $spacing-xs) var(--radius-s, $spacing-s);\n  }\n}\n\n.facet {\n  scroll-snap-align: start;\n}\n\n.facet-button {\n  @include span();\n  border-radius: var(--radius-3xl, $radius-3xl);\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  cursor: pointer;\n  padding: var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m);\n  display: flex;\n  column-gap: var(--spacing-xs, $spacing-xs);\n  background-color: transparent;\n  width: max-content;\n\n  &--selected {\n    border-color: var(--border-color-accent, border-color('accent'));\n  }\n\n  @media (--md-min) {\n    padding: var(--spacing-xs, $spacing-xs) var(--spacing-m, $spacing-m);\n  }\n\n  &:focus {\n    outline: 1px solid var(--border-color-accent, border-color('accent'));\n    border-color: var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.facet-count {\n  color: var(--text-color-tertiary, text-color('tertiary'));\n}\n","import type { Facet } from '@/types'\nimport { Component, h, Listen, Prop, Watch } from '@stencil/core'\n\n@Component({\n  tag: 'orama-facets',\n  styleUrl: 'orama-facets.scss',\n  scoped: true,\n})\n\n/**\n * The orama-facets component renders a list of facets\n */\nexport class OramaFacets {\n  @Prop() facets: Facet[]\n  @Prop() selectedFacet: string\n  @Prop() selectedFacetChanged: (facetName: string) => void\n\n  private facetListRef!: HTMLUListElement\n\n  handleClick(facet: Facet) {\n    this.selectedFacetChanged(facet.name)\n  }\n\n  getFacetButtonElementId(facetName: string) {\n    return `${facetName}-facet-button`\n  }\n\n  setFocusToFacetElement(facetName: string) {\n    const buttonList = this.facetListRef.getElementsByTagName('button')\n\n    for (let i = 0; i < buttonList.length; i++) {\n      if (buttonList.item(i).id === this.getFacetButtonElementId(facetName)) {\n        buttonList.item(i).focus()\n        return\n      }\n    }\n  }\n\n  @Watch('selectedFacet')\n  handleSelectedFacetChange() {\n    this.setFocusToFacetElement(this.selectedFacet?.length ? this.selectedFacet : 'All')\n  }\n\n  @Listen('keydown')\n  handleKeyDown(ev: KeyboardEvent) {\n    if (['ArrowLeft', 'ArrowRight'].includes(ev.key)) {\n      const index = this.selectedFacet ? this.facets.findIndex((facet) => facet.name === this.selectedFacet) : 0\n\n      if (ev.key === 'ArrowRight') {\n        if (index < this.facets.length - 1) {\n          this.selectedFacetChanged(this.facets[index + 1].name)\n        } else {\n          this.selectedFacetChanged('')\n        }\n      }\n\n      if (ev.key === 'ArrowLeft') {\n        if (index > 1) {\n          this.selectedFacetChanged(this.facets[index - 1].name)\n        } else if (index - 1 === 0) {\n          this.selectedFacetChanged('')\n        } else {\n          this.selectedFacetChanged(this.facets[this.facets.length - 1].name)\n        }\n      }\n    }\n  }\n\n  render() {\n    if (!this.facets || this.facets.every((facet) => !facet.count)) {\n      return null\n    }\n\n    return (\n      <ul class=\"facets-list\" ref={(el) => (this.facetListRef = el as HTMLUListElement)}>\n        {this.facets?.map((facet) => {\n          if (facet?.count === 0) {\n            return\n          }\n          const isSelected = this.selectedFacet === facet?.name || (!this.selectedFacet && facet?.name === 'All')\n          return (\n            <li key={facet.name} class=\"facet\">\n              <button\n                id={this.getFacetButtonElementId(facet.name)}\n                type=\"button\"\n                class={{\n                  'facet-button': true,\n                  'facet-button--selected': isSelected,\n                }}\n                tabIndex={isSelected ? 0 : -1}\n                onClick={() => this.handleClick(facet)}\n              >\n                {facet?.name}\n                <span class=\"facet-count\">{facet?.count}</span>\n              </button>\n            </li>\n          )\n        })}\n      </ul>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as m } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as g } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar u = Object.defineProperty, w = Object.getOwnPropertyDescriptor, o = (a, s, i, l) => {\n  for (var r = l > 1 ? void 0 : l ? w(s, i) : s, h = a.length - 1, n; h >= 0; h--)\n    (n = a[h]) && (r = (l ? n(s, i, r) : n(r)) || r);\n  return l && r && u(s, i, r), r;\n};\nlet t = class extends g {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return m`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M202.83,114.83a4,4,0,0,1-5.66,0L132,49.66V216a4,4,0,0,1-8,0V49.66L58.83,114.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0l72,72A4,4,0,0,1,202.83,114.83Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M204.24,116.24a6,6,0,0,1-8.48,0L134,54.49V216a6,6,0,0,1-12,0V54.49L60.24,116.24a6,6,0,0,1-8.48-8.48l72-72a6,6,0,0,1,8.48,0l72,72A6,6,0,0,1,204.24,116.24Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M205.66,117.66a8,8,0,0,1-11.32,0L136,59.31V216a8,8,0,0,1-16,0V59.31L61.66,117.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,117.66Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M207.39,115.06A8,8,0,0,1,200,120H136v96a8,8,0,0,1-16,0V120H56a8,8,0,0,1-5.66-13.66l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,207.39,115.06Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M200,112H56l72-72Z\" opacity=\"0.2\"/><path d=\"M205.66,106.34l-72-72a8,8,0,0,0-11.32,0l-72,72A8,8,0,0,0,56,120h64v96a8,8,0,0,0,16,0V120h64a8,8,0,0,0,5.66-13.66ZM75.31,104,128,51.31,180.69,104Z\"/>`\n  ]\n]);\nt.styles = f`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  c(\"ph-arrow-up\")\n], t);\nexport {\n  t as PhArrowUp\n};\n",":host {\n  display: flex;\n  align-items: center;\n  padding: var(--spacing-m, $spacing-m);\n  justify-content: space-between;\n  border-radius: 0 0 var(--radius-m, $radius-m) var(--radius-m, $radius-m);\n  border-top: 1px solid var(--border-color-primary, border-color('primary'));\n  background-color: var(--background-color-secondary, background-color('secondary'));\n}\n\n.keyboard-shortcuts {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing-m, $spacing-m);\n}\n\n.shortcut-item {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing-xs, $spacing-xs);\n  font-size: $font-size-md;\n}\n\n.shortcut-description {\n  color: var(--text-color-tertiary, text-color('tertiary'));\n}\n\n.shortcut-icon {\n  color: var(--text-color-tertiary, text-color('tertiary'));\n  display: flex;\n  align-items: center;\n  border-radius: var(--radius-xs, $radius-xs);\n  background: var(--background-color-fourth, background-color('tertiary'));\n  border: 0.7px solid var(--border-color-primary, border-color('primary'));\n  justify-self: flex-end;\n  padding: pxToRem(4);\n  justify-content: center;\n}\n\n.arrows-container {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing-xs, $spacing-xs);\n}\n\n.esc-text {\n  font-size: 0.7rem;\n}\n\n.powered-by {\n  display: flex;\n  align-items: flex-end;\n  text-align: right;\n  flex-grow: 1;\n  justify-content: right;\n  gap: var(--spacing-s, $spacing-s);\n}\n\n.logo-link {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--spacing-s, $spacing-s);\n  text-decoration: none;\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.logo {\n  max-width: pxToRem(62);\n}\n\n@media (max-width: 768px) {\n  :host {\n    flex-direction: column;\n    gap: var(--spacing-m, $spacing-m);\n  }\n\n  .keyboard-shortcuts {\n    display: none;\n  }\n\n  .powered-by {\n    justify-content: center;\n  }\n}\n","import { Component, Prop, h, Element, Host } from '@stencil/core'\nimport type { ColorScheme } from '@/types'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowBendDownLeft.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowUp.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhArrowDown.mjs'\n\n@Component({\n  tag: 'orama-footer',\n  styleUrl: 'orama-footer.scss',\n  scoped: true,\n})\n\n/**\n * The orama-footer component is used to render a footer element with logo and keyboard shortcuts.\n */\nexport class OramaFooter {\n  @Element() el: HTMLElement\n\n  @Prop() class?: string\n  @Prop() colorScheme?: Omit<ColorScheme, 'system'> = 'light'\n  /** Whether to show keyboard shortcuts in the footer */\n  @Prop() showKeyboardShortcuts?: boolean = false\n\n  private poweredByDestinationUrl: string\n  private linkTarget = '_blank'\n\n  /** Keyboard shortcuts to display */\n  private keyboardShortcuts = [\n    { name: 'select', key: 'Enter', icon: 'arrow-bend-down-left', description: 'to select' },\n    { name: 'navigate', key: '↑ ↓', icon: 'arrows-vertical', description: 'to navigate' },\n    { name: 'close', key: 'Esc', icon: 'esc', description: 'to close' },\n  ]\n\n  componentWillLoad() {\n    const utmSource = encodeURIComponent(window.location.hostname)\n    this.poweredByDestinationUrl = `https://www.orama.com/?utm_source=${utmSource}&utm_medium=powered-by`\n    if (['localhost', 'orama.com'].includes(utmSource)) {\n      this.linkTarget = '_parent'\n    }\n  }\n\n  private renderIcon(shortcut: { name: string; icon: string }) {\n    // Special case for ESC key\n    if (shortcut.icon === 'esc') {\n      return (\n        <div>\n          <span class=\"shortcut-icon\">\n          <span class=\"esc-text\">esc</span>\n          </span>\n        </div>\n      )\n    }\n    \n    // For Phosphor icons\n    switch (shortcut.icon) {\n      case 'arrow-bend-down-left':\n        return (\n          <span class=\"shortcut-icon\">\n            <ph-arrow-bend-down-left size={16} />\n          </span>\n        );\n      case 'arrows-vertical':\n        return (\n          <div class=\"arrows-container\">\n            <span class=\"shortcut-icon\">\n              <ph-arrow-up size={16} />\n            </span>\n            <span class=\"shortcut-icon\">\n              <ph-arrow-down size={16} />\n            </span>\n          </div>\n        );\n      default:\n        return null;\n    }\n  }\n\n  render() {\n    const imgName = this.colorScheme === 'dark' ? 'orama-when-dark.svg' : 'orama-when-light.svg'\n    return (\n      <Host>\n        {this.showKeyboardShortcuts && (\n          <div class=\"keyboard-shortcuts\" aria-label=\"Keyboard shortcuts\">\n            {this.keyboardShortcuts.map((shortcut) => (\n              <div class=\"shortcut-item\">\n                {this.renderIcon(shortcut)}\n                <orama-text as=\"small\" variant=\"tertiary\">\n                  <span class=\"shortcut-description\">{shortcut.description}</span>\n                </orama-text>\n              </div>\n            ))}\n          </div>\n        )}\n        <div class=\"powered-by\">\n          <a href={this.poweredByDestinationUrl} target={this.linkTarget} rel=\"noopener noreferrer\" class=\"logo-link\">\n            <orama-text as=\"small\">Powered by</orama-text>\n            <img\n              src={`https://website-assets.oramasearch.com/${imgName}`}\n              alt=\"Powered by Orama\"\n              class=\"logo\"\n              width={62}\n            />\n          </a>\n        </div>\n      </Host>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as n } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, o = (a, s, l, i) => {\n  for (var r = i > 1 ? void 0 : i ? u(s, l) : s, h = a.length - 1, L; h >= 0; h--)\n    (L = a[h]) && (r = (i ? L(s, l, r) : L(r)) || r);\n  return i && r && f(s, l, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return n`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\" opacity=\"0.2\"/><path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"/>`\n  ]\n]);\nt.styles = c`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  g(\"ph-x\")\n], t);\nexport {\n  t as PhX\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as g } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as l } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as c } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar u = Object.defineProperty, M = Object.getOwnPropertyDescriptor, s = (a, o, p, i) => {\n  for (var r = i > 1 ? void 0 : i ? M(o, p) : o, h = a.length - 1, n; h >= 0; h--)\n    (n = a[h]) && (r = (i ? n(o, p, r) : n(r)) || r);\n  return i && r && u(o, p, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return g`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z\" opacity=\"0.2\"/><path d=\"M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"/>`\n  ]\n]);\nt.styles = c`\n    :host {\n      display: contents;\n    }\n  `;\ns([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\ns([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\ns([\n  l({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\ns([\n  l({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = s([\n  f(\"ph-magnifying-glass\")\n], t);\nexport {\n  t as PhMagnifyingGlass\n};\n",":host {\n  margin: var(--spacing-s, $spacing-s) 0;\n}\n\n.input-wrapper {\n  position: relative;\n}\n\n.input {\n  @include paragraph();\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  background: var(--background-color-secondary, background-color('secondary'));\n  border-radius: var(--radius-m, $radius-m);\n  color: var(--text-color-primary, text-color('primary'));\n  width: 100%;\n\n  &::placeholder {\n    color: var(--text-color-inactive, text-color('inactive'));\n  }\n\n  &[type='search'] {\n    padding-right: var(--spacing-2xl, $spacing-2xl);\n\n    @media (--md-min) {\n      padding-left: var(--spacing-3xl, $spacing-3xl);\n      border: 0;\n      border-bottom: 1px solid var(--border-color-primary, border-color('primary'));\n    }\n  }\n\n  &[type='search']::-webkit-search-cancel-button,\n  &[type='search']::-webkit-search-decoration {\n    appearance: none;\n  }\n\n  &:focus {\n    outline: none;\n  }\n\n  &:focus-visibile {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.input--small {\n  padding: var(--spacing-xs, $spacing-xs) var(--spacing-s, $spacing-s);\n}\n\n.input--medium {\n  padding: var(--spacing-s, $spacing-s);\n}\n\n.input--large {\n  padding: var(--spacing-m, $spacing-m);\n}\n\n.label {\n  @include span();\n  margin-bottom: var(--spacing-xs, $spacing-xs);\n  display: block;\n}\n\n.reset-button {\n  position: absolute;\n  right: var(--spacing-s, $spacing-s);\n  top: 50%;\n  transform: translate3d(0, -50%, 0);\n  cursor: pointer;\n  background-color: transparent;\n  border: 0;\n  color: var(--icon-color-inactive, icon-color('inactive'));\n  display: inline-flex;\n\n  &:focus {\n    outline: none;\n  }\n\n  &:focus-visible {\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.search-icon {\n  display: none;\n  position: absolute;\n  left: var(--spacing-l, $spacing-l);\n  top: 50%;\n  transform: translate3d(0, -50%, 0);\n  color: var(--icon-color-inactive, icon-color('inactive'));\n  z-index: 100;\n\n  @media (--md-min) {\n    display: inline-flex;\n  }\n}\n\n.sr-only {\n  @include screen-reader-only();\n}\n","import { Component, Host, Prop, h, Element, State, Event, Watch, type EventEmitter } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhX.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhMagnifyingGlass.mjs'\nimport { getNonExplicitAttributes } from '@/utils/utils'\n\ntype BaseInputProps = {\n  name?: string\n  size?: 'small' | 'medium' | 'large'\n  type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search'\n  placeholder?: string\n  defaultValue?: string\n}\n\ntype ConditionalInputProps =\n  | {\n      label: string\n      labelForScreenReaders?: never\n    }\n  | {\n      label?: never\n      labelForScreenReaders?: string\n    }\n\nexport type InputProps = BaseInputProps & ConditionalInputProps\n\n@Component({\n  tag: 'orama-input',\n  styleUrl: 'orama-input.scss',\n  scoped: true,\n})\nexport class Input {\n  @Element() el: HTMLDivElement\n\n  @Prop() name: InputProps['name']\n  @Prop() size?: InputProps['size'] = 'medium'\n  @Prop() label?: InputProps['label']\n  @Prop() type?: InputProps['type'] = 'text'\n  @Prop() placeholder?: InputProps['placeholder']\n  @Prop() labelForScreenReaders?: InputProps['labelForScreenReaders']\n  @Prop() defaultValue: InputProps['defaultValue']\n  @Prop() autoFocus?: boolean = false\n  @Prop() value?: string\n\n  @Event() inputChanged: EventEmitter<string>\n\n  private inputRef!: HTMLInputElement\n\n  @Event({\n    eventName: 'resetValue',\n    composed: true,\n    cancelable: true,\n    bubbles: true,\n  })\n\n  @Watch('autoFocus')\n  handleAutoFocusChange() {\n    if (this.autoFocus) {\n      this.inputRef?.focus()\n    }\n  }\n\n  ensureFocus() {\n    const checkRefInterval = setInterval(() => {\n      if (this.inputRef) {\n        this.inputRef.focus()\n        clearInterval(checkRefInterval)\n      }\n    }, 10)\n  }\n  componentDidLoad() {\n    if (this.autoFocus) {\n      this.ensureFocus()\n    }\n  }\n\n  render() {\n    const inputClass = `input input--${this.size}`\n    const labelClass = `label ${this.labelForScreenReaders ? 'sr-only' : ''}`\n\n    const declaredProps = [\n      'id',\n      'name',\n      'type',\n      'class',\n      'onInput',\n      'value',\n      'label-for-screen-readers',\n      'default-value',\n      'placeholder',\n    ]\n    const inputProps = getNonExplicitAttributes(this.el, declaredProps)\n\n    const isSearch = this.type === 'search'\n\n    return (\n      <Host>\n        <div class=\"wrapper\">\n          <label htmlFor={this.name} class={labelClass}>\n            {this.label || this.labelForScreenReaders}\n          </label>\n          <div class=\"input-wrapper\">\n            {isSearch && (\n              <span class=\"search-icon\">\n                <ph-magnifying-glass size={16} />\n              </span>\n            )}\n            <input\n              {...inputProps}\n              ref={(el) => {\n                this.inputRef = el as HTMLInputElement\n              }}\n              class={inputClass}\n              id={this.name}\n              type={this.type}\n              value={this.value}\n              onInput={(event) => {\n                const target = event.target as HTMLInputElement\n                this.inputChanged.emit(target.value)\n              }}\n              placeholder={this.placeholder}\n            />\n            {isSearch && !!this.value && (\n              <button\n                type=\"button\"\n                class=\"reset-button\"\n                onClick={() => {\n                  if (this.inputRef) {\n                    this.inputRef.value = ''\n                  }\n                  this.inputChanged.emit('')\n                  this.inputRef?.focus()\n                }}\n              >\n                <ph-x size={16} />\n              </button>\n            )}\n          </div>\n        </div>\n      </Host>\n    )\n  }\n}\n","import { O as OramaMarkdown$1, d as defineCustomElement$1 } from './p-4sqp5s07.js';\nconst OramaMarkdown = OramaMarkdown$1;\nconst defineCustomElement = defineCustomElement$1;\nexport { OramaMarkdown, defineCustomElement }; //# sourceMappingURL=orama-markdown.js.map\n //# sourceMappingURL=orama-markdown.js.map\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JhbWEtbWFya2Rvd24uanMiLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9",".modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: var(--backdrop-background-color-primary, palette('backdrop-background', 'primary'));\n  display: none;\n  z-index: 9999;\n\n  &.open {\n    display: block;\n  }\n}\n\ndialog {\n  border: none;\n}\n\n.modal-content {\n  display: flex;\n  background-color: var(--background-color-primary, background-color('primary'));\n  position: fixed;\n  inset: 0;\n  flex-direction: column;\n  justify-content: space-between;\n\n  @media (--md-min) {\n    background-color: var(--background-color-secondary, background-color('secondary'));\n    border: 1px solid var(--border-color-primary, border-color('primary'));\n    width: 80%;\n    margin: 0 auto;\n    max-width: pxToRem(720);\n    min-height: pxToRem(200);\n    max-height: 70vh;\n    top: 5vh;\n    bottom: auto;\n    border-radius: var(--radius-m, $radius-m);\n    padding: 0;\n  }\n}\n\n.modal-close {\n  &:not(:focus-visible) {\n    @include screen-reader-only();\n  }\n}\n\n.modal-title {\n  @include screen-reader-only();\n}\n","import { Component, h, Prop, State, Element, Event, type EventEmitter, Watch } from '@stencil/core'\n\nexport type ModalStatus = {\n  open: boolean\n  id: HTMLElement\n}\n@Component({\n  tag: 'orama-modal',\n  styleUrl: 'orama-modal.scss',\n  scoped: true,\n})\nexport class OramaModal {\n  @Prop() closeOnEscape = true\n  @Prop() closeOnOutsideClick = true\n  @Prop() mainTitle = ''\n\n  @State() activeElement: HTMLElement\n\n  @Event() modalClosed: EventEmitter\n\n  @Element() el: HTMLElement\n\n  originalBodyOverflowState = 'scroll'\n\n  private firstFocusableElement: HTMLElement\n  private lastFocusableElement: HTMLElement\n  private innerModalRef: HTMLElement\n\n  private trapFocus(event: KeyboardEvent) {\n    const focusableElements = this.el.querySelectorAll(\n      'a[href], button, textarea, input, select, [tabindex]:not([tabindex=\"-1\"])',\n    )\n    const focusableArray = (Array.from(focusableElements) as HTMLElement[]).filter(\n      (element) => element.offsetParent !== null,\n    )\n\n    if (focusableArray.length > 0) {\n      this.firstFocusableElement = focusableArray[0]\n      this.lastFocusableElement = focusableArray[focusableArray.length - 1]\n\n      const focusedElement = this.el.querySelector(':focus') as HTMLElement\n\n      if (event.shiftKey && focusedElement === this.firstFocusableElement) {\n        event.preventDefault()\n        this.lastFocusableElement.focus()\n      } else if (!event.shiftKey && focusedElement === this.lastFocusableElement) {\n        event.preventDefault()\n        this.firstFocusableElement.focus()\n      }\n    }\n  }\n\n  private handleFocus() {\n    const focusableElements = this.el.querySelectorAll(\n      'a[href], button, textarea, input, select, [tabindex]:not([tabindex=\"-1\"])',\n    )\n    const focusableArray = (Array.from(focusableElements) as HTMLElement[]).filter(\n      (element) => element.offsetParent !== null,\n    )\n\n    if (focusableArray.length > 0) {\n      focusableArray[0].focus()\n    }\n  }\n\n  connectedCallback() {\n    this.originalBodyOverflowState = document.body.style.overflow\n\n    this.activeElement = document.activeElement as HTMLElement\n    this.handleFocus()\n    document.body.style.overflow = 'hidden'\n  }\n\n  disconnectedCallback() {\n    document.body.style.overflow = this.originalBodyOverflowState\n  }\n\n  componentDidUpdate() {\n    this.handleFocus()\n    if (this.activeElement) {\n      this.activeElement.focus()\n    }\n  }\n\n  render() {\n    return (\n      <dialog\n        class={'modal open'}\n        aria-modal=\"true\"\n        aria-labelledby=\"modalTitle\"\n        aria-describedby=\"modalContent\"\n        onKeyDown={(event) => {\n          switch (event.key) {\n            case 'Tab':\n              this.trapFocus(event)\n              break\n            case 'Escape':\n              if (this.closeOnEscape) {\n                event.preventDefault()\n                event.stopPropagation()\n                this.modalClosed.emit()\n              }\n              break\n          }\n        }}\n        onClick={(event) => {\n          if (this.innerModalRef && !this.innerModalRef.contains(event.target as Node)) {\n            event.stopPropagation()\n            event.preventDefault()\n            this.modalClosed.emit()\n          }\n        }}\n      >\n        <div class=\"modal-inner\" ref={(ref) => (this.innerModalRef = ref)}>\n          <h1 id=\"modalTitle\" class=\"modal-title\">\n            {this.mainTitle}\n          </h1>\n          <div id=\"modalContent\" class=\"modal-content\">\n            <slot />\n          </div>\n          <button onClick={() => this.modalClosed.emit()} type=\"button\" class=\"modal-close\">\n            Close\n          </button>\n        </div>\n      </dialog>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as r, html as V } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as Z } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as o } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as n } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar v = Object.defineProperty, M = Object.getOwnPropertyDescriptor, l = (e, h, p, s) => {\n  for (var t = s > 1 ? void 0 : s ? M(h, p) : h, i = e.length - 1, L; i >= 0; i--)\n    (L = e[i]) && (t = (s ? L(h, p, t) : L(t)) || t);\n  return s && t && v(h, p, t), t;\n};\nlet a = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var e;\n    return V`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${a.weightsMap.get((e = this.weight) != null ? e : \"regular\")}\n    </svg>`;\n  }\n};\na.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    r`<path d=\"M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z\"/>`\n  ],\n  [\n    \"light\",\n    r`<path d=\"M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z\"/>`\n  ],\n  [\n    \"regular\",\n    r`<path d=\"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\"/>`\n  ],\n  [\n    \"bold\",\n    r`<path d=\"M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z\"/>`\n  ],\n  [\n    \"fill\",\n    r`<path d=\"M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z\"/>`\n  ],\n  [\n    \"duotone\",\n    r`<path d=\"M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z\" opacity=\"0.2\"/><path d=\"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\"/>`\n  ]\n]);\na.styles = n`\n    :host {\n      display: contents;\n    }\n  `;\nl([\n  o({ type: String, reflect: !0 })\n], a.prototype, \"size\", 2);\nl([\n  o({ type: String, reflect: !0 })\n], a.prototype, \"weight\", 2);\nl([\n  o({ type: String, reflect: !0 })\n], a.prototype, \"color\", 2);\nl([\n  o({ type: Boolean, reflect: !0 })\n], a.prototype, \"mirrored\", 2);\na = l([\n  Z(\"ph-sparkle\")\n], a);\nexport {\n  a as PhSparkle\n};\n",":host {\n  display: inline-flex;\n  padding: var(--spacing-2xs, $spacing-2xs);\n  align-items: center;\n\n  border-radius: var(--radius-3xl, $radius-3xl);\n  background: var(--background-color-fourth, background-color('fourth'));\n  overflow: hidden;\n\n  button {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-xs, $spacing-xs);\n    background-color: transparent;\n    border: none;\n    padding: var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m);\n    color: var(--text-color-primary, text-color('primary'));\n    cursor: pointer;\n    position: relative;\n\n    &.selected {\n      color: var(--text-color-reverse, text-color('reverse'));\n      transition: color 0.3s ease-in-out;\n      z-index: 1;\n\n      &::after {\n        content: '';\n        position: absolute;\n        inset: 0;\n        background-color: var(--background-color-reverse, background-color('reverse'));\n        padding: var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m);\n        border-radius: var(--radius-3xl, $radius-3xl);\n        z-index: -1;\n      }\n\n      &.animate {\n        &::after {\n          animation: slideToLeft 0.3s ease-in-out;\n        }\n\n        &:first-child::after {\n          animation: slideToRight 0.3s ease-in-out;\n        }\n      }\n    }\n  }\n}\n\n// TODO: This is not ideal. If sizes changes, it will make a small  glitch on the animation.\n// I'll leave it like that for now\n@keyframes slideToRight {\n  from {\n    transform: translateX(100%);\n  }\n  to {\n    transform: translateX(0);\n  }\n}\n\n@keyframes slideToLeft {\n  from {\n    transform: translateX(-100%);\n  }\n  to {\n    transform: translateX(0);\n  }\n}\n","import { Component, Host, Prop, h } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhMagnifyingGlass.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhSparkle.mjs'\nimport { Store } from '@/StoreDecorator'\nimport type { GlobalStoreType } from '@/ParentComponentStore/GlobalStore'\n\n@Component({\n  tag: 'orama-toggler',\n  styleUrl: 'orama-toggler.scss',\n  scoped: true,\n})\nexport class OramaToggler {\n  @Prop() performInitialAnimation = false\n  private firstRender = true\n\n  @Store('global')\n  private globalStore: GlobalStoreType\n\n  componentWillLoad() {\n    if (this.performInitialAnimation) {\n      this.firstRender = false\n    }\n  }\n\n  componentDidLoad() {\n    if (this.firstRender) {\n      this.firstRender = false\n    }\n  }\n\n  render() {\n    return (\n      <Host>\n        <button\n          type=\"button\"\n          class={{\n            selected: this.globalStore.state.currentTask === 'search',\n            animate: !this.firstRender || this.performInitialAnimation,\n          }}\n          onClick={() => (this.globalStore.state.currentTask = 'search')}\n        >\n          <span>Search</span>\n          <ph-magnifying-glass size={16} />\n        </button>\n        <button\n          type=\"button\"\n          class={{\n            selected: this.globalStore.state.currentTask === 'chat',\n            animate: !this.firstRender || this.performInitialAnimation,\n          }}\n          onClick={() => (this.globalStore.state.currentTask = 'chat')}\n        >\n          <ph-sparkle size={16} />\n          <span>Ask AI</span>\n        </button>\n      </Host>\n    )\n  }\n}\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as n } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as c } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as f } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar Z = Object.defineProperty, u = Object.getOwnPropertyDescriptor, o = (a, s, h, i) => {\n  for (var r = i > 1 ? void 0 : i ? u(s, h) : s, l = a.length - 1, m; l >= 0; l--)\n    (m = a[l]) && (r = (i ? m(s, h, r) : m(r)) || r);\n  return i && r && Z(s, h, r), r;\n};\nlet t = class extends c {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return n`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\" opacity=\"0.2\"/><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\"/>`\n  ]\n]);\nt.styles = f`\n    :host {\n      display: contents;\n    }\n  `;\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\no([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\no([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = o([\n  g(\"ph-clock\")\n], t);\nexport {\n  t as PhClock\n};\n","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as v } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as m } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as g } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as p } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as u } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar c = Object.defineProperty, f = Object.getOwnPropertyDescriptor, s = (a, o, i, h) => {\n  for (var r = h > 1 ? void 0 : h ? f(o, i) : o, l = a.length - 1, n; l >= 0; l--)\n    (n = a[l]) && (r = (h ? n(o, i, r) : n(r)) || r);\n  return h && r && c(o, i, r), r;\n};\nlet t = class extends m {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var a;\n    return v`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${t.weightsMap.get((a = this.weight) != null ? a : \"regular\")}\n    </svg>`;\n  }\n};\nt.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\" opacity=\"0.2\"/><path d=\"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\"/>`\n  ]\n]);\nt.styles = u`\n    :host {\n      display: contents;\n    }\n  `;\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"size\", 2);\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"weight\", 2);\ns([\n  p({ type: String, reflect: !0 })\n], t.prototype, \"color\", 2);\ns([\n  p({ type: Boolean, reflect: !0 })\n], t.prototype, \"mirrored\", 2);\nt = s([\n  g(\"ph-plus\")\n], t);\nexport {\n  t as PhPlus\n};\n",":host {\n  display: flex;\n  align-items: center;\n  padding: var(--spacing-l, $spacing-l) var(--spacing-l, $spacing-l) var(--spacing-s, $spacing-s);\n  background-color: var(--background-color-primary, background-color('primary'));\n\n  @media (--md-min) {\n    display: none;\n  }\n}\n\n.spacer {\n  display: block;\n  width: pxToRem(36);\n  height: pxToRem(36);\n}\n\n.corner-section {\n  display: flex;\n  gap: var(--spacing-xs, $spacing-xs);\n\n  &.start {\n    display: flex;\n    justify-content: flex-start;\n  }\n\n  &.center {\n    display: flex;\n    flex: 1;\n    justify-content: center;\n  }\n\n  &.end {\n    display: flex;\n    justify-content: flex-end;\n  }\n}\n","import { Component, Fragment, Host, Prop, h } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhClock.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhPlus.mjs'\nimport '@phosphor-icons/webcomponents/dist/icons/PhCaretLeft.mjs'\nimport { Store } from '@/StoreDecorator'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\n\n@Component({\n  tag: 'orama-navigation-bar',\n  styleUrl: 'orama-navigation-bar.scss',\n  scoped: true,\n})\nexport class OramaNavigationBar {\n  @Prop() handleClose: () => void\n  @Prop() showBackButton = true\n  @Prop() showChatActions = false\n\n  @Store('chat')\n  private chatStore: ChatStoreType\n\n  // TODO: maybe better to make this component context agnostic\n  private handleStartNewChat = () => {\n    this.chatStore.state.chatService?.resetChat()\n  }\n\n  render() {\n    return (\n      <Host>\n        <div class=\"corner-section start\">\n          {this.showBackButton ? (\n            <Fragment>\n              <orama-button\n                type=\"button\"\n                variant=\"icon\"\n                aria-label=\"Exit\"\n                onClick={this.handleClose}\n                onKeyDown={this.handleClose}\n              >\n                <ph-caret-left size=\"20px\" />\n              </orama-button>\n            </Fragment>\n          ) : (\n            <div class=\"spacer\" />\n          )}\n        </div>\n        <div class=\"corner-section center\">\n          <orama-toggler />\n        </div>\n        <div class=\"corner-section end\">\n          {this.showChatActions ? (\n            <Fragment>\n              {/*\n                <orama-button type=\"button\" variant=\"icon\" aria-label=\"View history\">\n                  <ph-clock size=\"20px\" />\n                </orama-button> \n              */}\n              <orama-button\n                type=\"button\"\n                variant=\"icon\"\n                aria-label=\"Start new chat\"\n                onClick={this.handleStartNewChat}\n                onKeyDown={this.handleStartNewChat}\n              >\n                <ph-plus size=\"20px\" />\n              </orama-button>\n            </Fragment>\n          ) : (\n            <div class=\"spacer\" />\n          )}\n        </div>\n      </Host>\n    )\n  }\n}\n","\"use strict\";var H=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var A=(e,t)=>{for(var s in t)H(e,s,{get:t[s],enumerable:!0})},d=(e,t,s,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of C(t))!m.call(e,i)&&i!==s&&H(e,i,{get:()=>t[i],enumerable:!(r=y(t,i))||r.enumerable});return e};var R=e=>d(H({},\"__esModule\",{value:!0}),e);var b={};A(b,{Highlight:()=>u,highlightStrategy:()=>g});module.exports=R(b);var g={WHOLE_WORD_MATCH:\"wholeWordMatch\",PARTIAL_MATCH:\"partialMatch\",PARTIAL_MATCH_FULL_WORD:\"partialMatchFullWord\"},o={caseSensitive:!1,strategy:g.PARTIAL_MATCH,HTMLTag:\"mark\",CSSClass:\"orama-highlight\"},u=class{options;_positions=[];_HTML=\"\";_searchTerm=\"\";_originalText=\"\";constructor(t=o){this.options={...o,...t}}highlight(t,s){if(this._searchTerm=s??\"\",this._originalText=t??\"\",!this._searchTerm||!this._originalText)return this._positions=[],this._HTML=this._originalText,this;let r=this.options.HTMLTag??o.HTMLTag,i=this.options.CSSClass??o.CSSClass,h=this.options.caseSensitive??o.caseSensitive,a=this.options.strategy??o.strategy,c=h?\"g\":\"gi\",T=this.escapeRegExp(h?this._searchTerm:this._searchTerm.toLowerCase()).trim().split(/\\s+/).join(\"|\"),n;if(a===g.WHOLE_WORD_MATCH)n=new RegExp(`\\\\b${T}\\\\b`,c);else if(a===g.PARTIAL_MATCH)n=new RegExp(T,c);else if(a===g.PARTIAL_MATCH_FULL_WORD)n=new RegExp(`\\\\b[^\\\\s]*(${T})[^\\\\s]*\\\\b`,c);else throw new Error(\"Invalid highlighter strategy\");let M=[],l=[],p,_=0,L=-1;for(;(p=n.exec(this._originalText))!==null&&n.lastIndex!==L;){L=n.lastIndex;let x=p.index,S=x+p[0].length-1;M.push({start:x,end:S}),l.push(this._originalText.slice(_,x)),l.push(`<${r} class=\"${i}\">${p[0]}</${r}>`),_=S+1}return l.push(this._originalText.slice(_)),this._positions=M,this._HTML=l.join(\"\"),this}trim(t,s=!0){if(this._positions.length===0)return`${this._HTML.substring(0,t)}${s?\"...\":\"\"}`;if(this._originalText.length<=t)return this._HTML;let r=this._positions[0].start,i=Math.max(r-Math.floor(t/2),0),h=Math.min(i+t,this._originalText.length),a=`${i===0||!s?\"\":\"...\"}${this._originalText.slice(i,h)}${h<this._originalText.length&&s?\"...\":\"\"}`;return this.highlight(a,this._searchTerm),this._HTML}get positions(){return this._positions}get HTML(){return this._HTML}escapeRegExp(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}};0&&(module.exports={Highlight,highlightStrategy});\n//# sourceMappingURL=index.cjs.map","import \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.mjs\";\nimport { svg as e, html as p } from \"../node_modules/.pnpm/lit-html@3.1.4/node_modules/lit-html/lit-html.mjs\";\nimport { LitElement as A } from \"../node_modules/.pnpm/lit-element@4.0.6/node_modules/lit-element/lit-element.mjs\";\nimport { customElement as m } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.mjs\";\nimport { property as H } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.mjs\";\nimport { css as Z } from \"../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.mjs\";\nvar n = Object.defineProperty, c = Object.getOwnPropertyDescriptor, h = (r, s, o, l) => {\n  for (var t = l > 1 ? void 0 : l ? c(s, o) : s, V = r.length - 1, i; V >= 0; V--)\n    (i = r[V]) && (t = (l ? i(s, o, t) : i(t)) || t);\n  return l && t && n(s, o, t), t;\n};\nlet a = class extends A {\n  constructor() {\n    super(...arguments), this.size = \"1em\", this.weight = \"regular\", this.color = \"currentColor\", this.mirrored = !1;\n  }\n  render() {\n    var r;\n    return p`<svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"${this.size}\"\n      height=\"${this.size}\"\n      fill=\"${this.color}\"\n      viewBox=\"0 0 256 256\"\n      transform=${this.mirrored ? \"scale(-1, 1)\" : null}\n    >\n      ${a.weightsMap.get((r = this.weight) != null ? r : \"regular\")}\n    </svg>`;\n  }\n};\na.weightsMap = /* @__PURE__ */ new Map([\n  [\n    \"thin\",\n    e`<path d=\"M210.83,69.17l-40-40A4,4,0,0,0,168,28H88A12,12,0,0,0,76,40V60H56A12,12,0,0,0,44,72V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V196h20a12,12,0,0,0,12-12V72A4,4,0,0,0,210.83,69.17ZM172,216a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V72a4,4,0,0,1,4-4h78.34L172,105.66Zm32-32a4,4,0,0,1-4,4H180V104a4,4,0,0,0-1.17-2.83l-40-40A4,4,0,0,0,136,60H84V40a4,4,0,0,1,4-4h78.34L204,73.66Zm-64-32a4,4,0,0,1-4,4H88a4,4,0,0,1,0-8h48A4,4,0,0,1,140,152Zm0,32a4,4,0,0,1-4,4H88a4,4,0,0,1,0-8h48A4,4,0,0,1,140,184Z\"/>`\n  ],\n  [\n    \"light\",\n    e`<path d=\"M212.24,67.76l-40-40A6,6,0,0,0,168,26H88A14,14,0,0,0,74,40V58H56A14,14,0,0,0,42,72V216a14,14,0,0,0,14,14H168a14,14,0,0,0,14-14V198h18a14,14,0,0,0,14-14V72A6,6,0,0,0,212.24,67.76ZM170,216a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V72a2,2,0,0,1,2-2h77.51L170,106.49Zm32-32a2,2,0,0,1-2,2H182V104a6,6,0,0,0-1.76-4.24l-40-40A6,6,0,0,0,136,58H86V40a2,2,0,0,1,2-2h77.51L202,74.49Zm-60-32a6,6,0,0,1-6,6H88a6,6,0,0,1,0-12h48A6,6,0,0,1,142,152Zm0,32a6,6,0,0,1-6,6H88a6,6,0,0,1,0-12h48A6,6,0,0,1,142,184Z\"/>`\n  ],\n  [\n    \"regular\",\n    e`<path d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM168,216H56V72h76.69L168,107.31v84.53c0,.06,0,.11,0,.16s0,.1,0,.16V216Zm32-32H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Zm-56-32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,152Zm0,32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,184Z\"/>`\n  ],\n  [\n    \"bold\",\n    e`<path d=\"M220.49,59.51l-40-40A12,12,0,0,0,172,16H92A20,20,0,0,0,72,36V56H56A20,20,0,0,0,36,76V216a20,20,0,0,0,20,20H164a20,20,0,0,0,20-20V196h20a20,20,0,0,0,20-20V68A12,12,0,0,0,220.49,59.51ZM160,212H60V80h67l33,33Zm40-40H184V108a12,12,0,0,0-3.51-8.49l-40-40A12,12,0,0,0,132,56H96V40h71l33,33Zm-56-28a12,12,0,0,1-12,12H88a12,12,0,0,1,0-24h44A12,12,0,0,1,144,144Zm0,40a12,12,0,0,1-12,12H88a12,12,0,0,1,0-24h44A12,12,0,0,1,144,184Z\"/>`\n  ],\n  [\n    \"fill\",\n    e`<path d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM136,192H88a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm0-32H88a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm64,24H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Z\"/>`\n  ],\n  [\n    \"duotone\",\n    e`<path d=\"M208,72V184a8,8,0,0,1-8,8H176V104L136,64H80V40a8,8,0,0,1,8-8h80Z\" opacity=\"0.2\"/><path d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM168,216H56V72h76.69L168,107.31v84.53c0,.06,0,.11,0,.16s0,.1,0,.16V216Zm32-32H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Zm-56-32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,152Zm0,32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,184Z\"/>`\n  ]\n]);\na.styles = Z`\n    :host {\n      display: contents;\n    }\n  `;\nh([\n  H({ type: String, reflect: !0 })\n], a.prototype, \"size\", 2);\nh([\n  H({ type: String, reflect: !0 })\n], a.prototype, \"weight\", 2);\nh([\n  H({ type: String, reflect: !0 })\n], a.prototype, \"color\", 2);\nh([\n  H({ type: Boolean, reflect: !0 })\n], a.prototype, \"mirrored\", 2);\na = h([\n  m(\"ph-files\")\n], a);\nexport {\n  a as PhFiles\n};\n",".list {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n\n.section-list {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing-m, $spacing-m);\n  margin-top: var(--spacing-s, $spacing-s);\n  padding-bottom: var(--spacing-l, $spacing-l);\n}\n\n.section-item-list {\n  display: flex;\n  flex-direction: column;\n}\n\n.section-wrapper {\n  border-bottom: 1px solid var(--border-color-primary, border-color('primary'));\n  padding-bottom: var(--spacing-m, $spacing-m);\n\n  &:last-of-type {\n    border-bottom: none;\n  }\n}\n\n.section-title-wrapper {\n  text-transform: capitalize;\n  padding: var(--spacing-s, $spacing-s) var(--spacing-m, $spacing-m);\n\n  * {\n    color: var(--text-text-color-secondary, text-color('secondary'));\n  }\n}\n\n.list-item {\n  cursor: pointer;\n}\n\n.list-item-button {\n  position: relative;\n  text-decoration: none;\n  display: flex;\n  gap: var(--spacing-m, $spacing-m);\n  align-items: center;\n  padding: var(--spacing-m, $spacing-m);\n  border-radius: var(--radius-s, $radius-s);\n  background-color: var(--background-color-secondary, background-color('secondary'));\n  border: 1px solid transparent;\n  text-align: left;\n  font-family: unset;\n  cursor: pointer;\n  transition: background-color 0.2s;\n\n  @media (hover: hover) {\n    &:hover {\n      background-color: var(--background-color-tertiary, background-color('tertiary'));\n    }\n  }\n\n  &:focus-visible {\n    outline: none;\n    border: 1px solid var(--border-color-accent, border-color('accent'));\n  }\n}\n\n.collapsed {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.result-title {\n  color: var(--text-color-primary, text-color('primary'));\n}\n\n.result-description {\n  color: var(--text-color-tertiary, text-color('tertiary'));\n}\n\n.results-empty {\n  text-align: center;\n  width: 80%;\n  max-width: pxToRem(400);\n  margin: $spacing-2xl auto $spacing-3xl;\n}\n\n.suggestions-wrapper {\n  padding: var(--spacing-l, $spacing-l) 0 var(--spacing-m, $spacing-m) 0;\n}\n\n.suggestions-title {\n  text-transform: uppercase;\n  margin-bottom: var(--spacing-xs, $spacing-xs);\n  padding: 0 var(--spacing-s, $spacing-s);\n}\n\n.textWrapper {\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n}\n\nph-files {\n  color: var(--icon-color-primary, icon-color('primary'));\n}\n\n.result-item-icon-wrapper {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-shrink: 0;\n  width: 20px;\n  height: 20px;\n}\n\n.custom-result-item-icon {\n  max-height: 20px;\n  max-width: 20px;\n  object-fit: contain;\n}\n","import { Component, Host, h, Element, Prop, Event, type EventEmitter } from '@stencil/core'\nimport type { OnSearchResultClickCallbackProps, SearchResult, SearchResultBySection, Dictionary } from '@/types'\nimport { Highlight } from '@orama/highlight'\nimport type { HighlightOptions } from '@orama/highlight'\nimport '@phosphor-icons/webcomponents/dist/icons/PhFiles.mjs'\nimport { Icon } from '@/components/internal/icons'\n\nexport type SearchResultsProps = {\n  sections: SearchResultBySection[]\n  searchTerm?: string\n}\n\n@Component({\n  tag: 'orama-search-results',\n  styleUrl: 'orama-search-results.scss',\n  scoped: true,\n})\nexport class SearchResults {\n  @Element() el: HTMLUListElement\n  @Prop() sourceBaseUrl?: string\n  @Prop() linksTarget?: string = '_blank'\n  @Prop() linksRel?: string = 'noopener noreferrer'\n  @Prop() sections: SearchResultBySection[] = []\n  @Prop() suggestions?: string[] = []\n  @Prop() searchTerm: SearchResultsProps['searchTerm']\n  @Prop() setChatTerm: (term: string) => void\n  @Prop() loading = false\n  @Prop() error = false\n  @Prop() highlightTitle?: HighlightOptions | false = false\n  @Prop() highlightDescription?: HighlightOptions | false = false\n  @Prop() dictionary?: Partial<Dictionary>\n\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  searchResultClick: EventEmitter<OnSearchResultClickCallbackProps>\n\n  private highlighterTitle?: Highlight\n  private highlighterDescription?: Highlight\n\n  private buildUrl(path: string): string {\n    if (!path) {\n      return '#'\n    }\n\n    if (this.sourceBaseUrl) {\n      // Remove trailing slashes from the base URL\n      const sanitizedBaseUrl = this.sourceBaseUrl.replace(/\\/+$/, '')\n\n      // Remove leading slashes from the path\n      const sanitizedPath = path.replace(/^\\/+/, '')\n\n      // Concatenate the base URL with the path\n      return `${sanitizedBaseUrl}/${sanitizedPath}`\n    }\n\n    return path\n  }\n\n  handleItemClick = (originalOnClickEvent: MouseEvent, item: SearchResult) => {\n    const searchResultClick = this.searchResultClick.emit({ result: item })\n\n    if (searchResultClick.defaultPrevented) {\n      originalOnClickEvent.preventDefault()\n      return\n    }\n\n    if (!item?.path) {\n      throw new Error('No path found')\n    }\n  }\n\n  getItemLinkUrl = (item: SearchResult) => {\n    if (item?.path) {\n      return this.sourceBaseUrl ? `${this.sourceBaseUrl}${item.path}` : item.path\n    }\n    return '#'\n  }\n\n  getHighlightedTitleText = (text: string) => {\n    return this.highlighterTitle.highlight(text, this.searchTerm)\n  }\n\n  getHighlightedDescriptionText = (text: string) => {\n    return this.highlighterDescription.highlight(text, this.searchTerm)\n  }\n\n  componentDidLoad() {\n    if (this.highlightTitle) {\n      this.highlighterTitle = new Highlight(this.highlightTitle)\n    }\n\n    if (this.highlightDescription) {\n      this.highlighterDescription = new Highlight(this.highlightDescription)\n    }\n  }\n\n  render() {\n    if (!this.searchTerm) {\n      return (\n        <div class=\"suggestions-wrapper\">\n          {!!this.suggestions?.length && (\n            <orama-text as=\"h2\" styledAs=\"small\" class=\"suggestions-title\" variant=\"secondary\">\n              {this.dictionary?.suggestionsTitle || 'Suggestions'}\n            </orama-text>\n          )}\n          <orama-suggestions\n            as=\"list\"\n            suggestions={this.suggestions}\n            icon={<Icon name=\"starFour\" size={16} color=\"var(--text-color-accent, text-color('accent')\" />}\n            suggestionClicked={(term) => {\n              this.setChatTerm(term)\n            }}\n          />\n        </div>\n      )\n    }\n\n    if (this.error) {\n      return <div>{this.dictionary?.errorMessage || 'An error occurred while trying to search. Please try again.'}</div>\n    }\n\n    if (!this.loading && !this.sections?.some((section) => section.items.length > 0)) {\n      return (\n        <div class=\"results-empty\">\n          <orama-text as=\"h3\" styledAs=\"span\">\n            {`${this.dictionary?.noResultsFound || 'No results found'} ${this.searchTerm ? `${this.dictionary?.noResultsFoundFor || 'for'} \"${this.searchTerm}\"` : ''}`}\n          </orama-text>\n        </div>\n      )\n    }\n\n    return (\n      <Host>\n        <ul class=\"list section-list\">\n          {this.sections.map((section) => (\n            <div key={section.section} class=\"section-wrapper\">\n              {section.section && (\n                <div class=\"section-title-wrapper\">\n                  <orama-text as=\"h2\" styledAs=\"span\">\n                    {section.section}\n                  </orama-text>\n                </div>\n              )}\n              <ul class=\"list section-item-list\">\n                {section.items.map((result) => (\n                  <li class=\"list-item\" key={result.id}>\n                    <a\n                      focus-on-arrow-nav\n                      href={this.buildUrl(result.path)}\n                      class=\"list-item-button\"\n                      target={this.linksTarget}\n                      rel={this.linksRel}\n                      id={`search-result-${result.id}`}\n                      onClick={(onClickEvent) => this.handleItemClick(onClickEvent, result)}\n                    >\n                      <div class=\"result-item-icon-wrapper\">\n                        {result.icon ? (\n                          <img alt=\"\" class=\"custom-result-item-icon\" src={result.icon} />\n                        ) : (\n                          <ph-files size=\"20px\" />\n                        )}\n                      </div>\n                      <div class=\"textWrapper\">\n                        <orama-text as=\"h3\" styledAs=\"p\" class=\"result-title collapsed\">\n                          {!this.highlightTitle ? (\n                            <span innerHTML={result.title} />\n                          ) : result.title.length > 200 ? ( // Trim exists here to prevent to render too much data to the DOM\n                            <span innerHTML={this.getHighlightedTitleText(result.title).trim(200)} />\n                          ) : (\n                            <span innerHTML={this.getHighlightedTitleText(result.title).HTML} />\n                          )}\n                        </orama-text>\n                        <orama-text as=\"p\" styledAs=\"span\" class=\"result-description collapsed\" variant=\"tertiary\">\n                          {!this.highlightDescription ? (\n                            <span innerHTML={result.description} />\n                          ) : (\n                            <span innerHTML={this.getHighlightedDescriptionText(result.description).HTML} />\n                          )}\n                        </orama-text>\n                      </div>\n                    </a>\n                  </li>\n                ))}\n              </ul>\n            </div>\n          ))}\n        </ul>\n      </Host>\n    )\n  }\n}\n",":host {\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  width: 100%;\n\n  orama-input {\n    @media (--md-max) {\n      padding: 0 var(--spacing-l, $spacing-l);\n    }\n  }\n\n  @media (--md-max) {\n    padding: var(--spacing-s, $spacing-s) 0;\n  }\n}\n\n.result-wrapper {\n  flex-grow: 1;\n  overflow-y: auto;\n  padding: 0 var(--spacing-l, $spacing-l);\n\n  // TODO: check scroll styles\n  // Maybe move somewhere else to reuse in some somponents, but not globally\n  &::-webkit-scrollbar {\n    width: 0.3em;\n  }\n  &::-webkit-scrollbar-track {\n    background: transparent;\n  }\n  &::-webkit-scrollbar-thumb {\n    // TODO: Should it be a variable?\n    background-color: #b2b2b285;\n    border-radius: var(--border-radius-l, $radius-l);\n  }\n\n  @media (--md-min) {\n    padding: 0 var(--spacing-m, $spacing-m);\n  }\n}\n\n.search-form {\n  display: flex;\n  flex-direction: column;\n}\n","import { Component, Host, Listen, State, Watch, h, Element, Prop, type EventEmitter, Event } from '@stencil/core'\nimport type { OnAnswerGeneratedCallbackProps, OnSearchCompletedCallbackProps, SearchResult, Dictionary } from '@/types'\nimport type { HighlightOptions } from '@orama/highlight'\nimport { Store } from '@/StoreDecorator'\nimport type { SearchStoreType } from '@/ParentComponentStore/SearchStore'\nimport type { GlobalStoreType } from '@/ParentComponentStore/GlobalStore'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\nimport { defaultTextDictionary, getText as getTextUtil } from '@/utils/textDictionary'\n\n@Component({\n  tag: 'orama-search',\n  styleUrl: 'orama-search.scss',\n  scoped: true,\n})\nexport class OramaSearch {\n  @Element() el: HTMLElement\n\n  @Prop() placeholder?: string = 'Search...'\n  @Prop() focusInput?: boolean = false\n  @Prop() suggestions?: string[] = []\n  @Prop() sourceBaseUrl?: string\n  @Prop() linksTarget?: string\n  @Prop() linksRel?: string\n  @Prop() disableChat?: boolean = false\n  @Prop() relatedQueries?: number\n  @Prop() highlightTitle?: HighlightOptions | false = false\n  @Prop() highlightDescription?: HighlightOptions | false = false\n  @Prop() dictionary?: Partial<Dictionary>\n\n  @State() selectedFacet = ''\n\n  @Event({ bubbles: true, composed: true }) searchCompleted: EventEmitter<OnSearchCompletedCallbackProps>\n  @Event({ bubbles: true, composed: true }) answerGenerated: EventEmitter<OnAnswerGeneratedCallbackProps>\n\n  inputRef!: HTMLOramaInputElement\n\n  @Store('search')\n  private searchStore: SearchStoreType\n  @Store('global')\n  private globalStore: GlobalStoreType\n  @Store('chat')\n  private chatStore: ChatStoreType\n\n  /**\n   * Gets the text for a specific key from the dictionary prop.\n   * Prioritizes direct props (placeholder) for backward compatibility,\n   * then falls back to the dictionary prop, and finally to the defaultTextDictionary.\n   *\n   * @param key - The key to get the text for\n   * @returns The text for the specified key\n   */\n  getText(key: keyof Dictionary): string {\n    // Create a map of direct props for backward compatibility\n    const directProps: Partial<Record<keyof Dictionary, string>> = {\n      searchPlaceholder: this.placeholder,\n    }\n\n    return getTextUtil(key, this.dictionary, directProps)\n  }\n\n  doSearch() {\n    this.searchStore.state.searchService.search(this.globalStore.state.currentTerm, this.selectedFacet, {\n      onSearchCompletedCallback: (onSearchCompletedCallbackProps) => {\n        this.searchCompleted.emit(onSearchCompletedCallbackProps)\n      },\n    })\n  }\n\n  handleSubmit = (e: Event) => {\n    e.preventDefault()\n\n    if (this.disableChat) {\n      return\n    }\n\n    const chatButton = this.el.querySelector('orama-chat-button') as HTMLElement\n    chatButton?.click()\n  }\n\n  render() {\n    return (\n      <Host>\n        <form onSubmit={this.handleSubmit} class=\"search-form\">\n          <orama-input\n            focus-on-arrow-nav\n            autoFocus={this.focusInput}\n            type=\"search\"\n            onInput={(e) => {\n              const target = e.target as HTMLInputElement\n              this.globalStore.state.currentTerm = target.value\n\n              this.doSearch()\n            }}\n            value={this.globalStore.state.currentTerm}\n            size=\"large\"\n            labelForScreenReaders={this.getText('searchPlaceholder')}\n            placeholder={this.getText('searchPlaceholder')}\n          />\n          <slot name=\"summary\" />\n        </form>\n        <div class=\"result-wrapper\">\n          <orama-facets\n            facets={this.searchStore.state.facets}\n            selectedFacet={this.selectedFacet}\n            selectedFacetChanged={(facetName) => {\n              this.selectedFacet = facetName\n\n              this.doSearch()\n            }}\n          />\n          <orama-search-results\n            suggestions={!this.globalStore.state.currentTerm?.length && !this.disableChat ? this.suggestions : []}\n            setChatTerm={(term) => {\n              this.globalStore.state.currentTask = 'chat'\n              this.chatStore.state.chatService?.sendQuestion(term, this.relatedQueries, undefined, {\n                onAnswerGeneratedCallback: (onAnswerGeneratedCallbackProps) =>\n                  this.answerGenerated.emit(onAnswerGeneratedCallbackProps),\n              })\n            }}\n            sourceBaseUrl={this.sourceBaseUrl}\n            linksTarget={this.linksTarget}\n            linksRel={this.linksRel}\n            sections={this.searchStore.state.results}\n            searchTerm={this.globalStore.state.currentTerm}\n            highlightTitle={this.highlightTitle}\n            highlightDescription={this.highlightDescription}\n            loading={this.searchStore.state.loading}\n            error={this.searchStore.state.error}\n            dictionary={this.dictionary}\n          />\n        </div>\n      </Host>\n    )\n  }\n}\n","$height-panel: 95vh;\n$height-panel-header: 5vh;\n\n.slide-backdrop {\n  &.visible {\n    display: none;\n    position: fixed;\n    display: block;\n    width: 100vw;\n    height: 100vh;\n    top: 0;\n    left: 0;\n    background-color: var(--backdrop-background-color-primary, palette('backdrop-background', 'primary'));\n    z-index: $zindex-slider-container - 10;\n    animation: backdropFadeIn 0.5s ease-in 1;\n    opacity: 0;\n\n    @media (--md-min) {\n      display: block;\n      opacity: 1;\n    }\n  }\n}\n\n@keyframes backdropFadeIn {\n  0% {\n    opacity: 0;\n  }\n  50% {\n    opacity: 0.2;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n\n.slide-container {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: $height-panel;\n  transform: translate3d(0, calc(100% + $height-panel-header), 0);\n  transition: cubic-bezier(0.4, 0, 0.2, 1) 0.4s;\n  z-index: $zindex-slider-container;\n  border-radius: var(--radius-m, $radius-m) var(--radius-m, $radius-m) 0 0;\n  border: 1px solid var(--border-color-primary, border-color('primary'));\n  background-color: var(--background-color-primary, background-color('primary'));\n  color: var(--text-color-primary, text-color('primary'));\n  box-sizing: border-box;\n\n  &.slide-up {\n    transform: translate3d(0, 0, 0);\n  }\n\n  @media (--md-max) {\n    display: none;\n  }\n}\n\n.slide-container-inner {\n  width: 80%;\n  margin: 0 auto;\n  max-width: pxToRem(840);\n  height: $height-panel;\n\n  orama-chat {\n    height: 100%;\n  }\n}\n\n.slide-container-header {\n  height: calc(100vh - $height-panel);\n  width: 100%;\n  position: absolute;\n  top: - calc(100vh - $height-panel);\n  display: flex;\n  justify-content: flex-end;\n  padding: 0 var(--spacing-3xl, $spacing-3xl);\n  box-sizing: border-box;\n}\n\n.close-button {\n  cursor: pointer;\n  border: 0;\n  background-color: transparent;\n  color: var(--text-color-primary, text-color('primary'));\n  animation: showIn 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.1s forwards;\n}\n","import { Component, Prop, State, h, Element, Watch, Event, Listen, EventEmitter, Fragment } from '@stencil/core'\nimport '@phosphor-icons/webcomponents/dist/icons/PhX.mjs'\n\n@Component({\n  tag: 'orama-sliding-panel',\n  styleUrl: 'orama-sliding-panel.scss',\n  scoped: true,\n})\nexport class SlideInPanel {\n  @Element() el: HTMLElement\n\n  @Prop() backdrop = false\n  @Prop() open = false\n  @Prop() closed: () => void\n  @State() isOpen: boolean = this.open\n\n  private firstFocusableElement: HTMLElement\n  private lastFocusableElement: HTMLElement\n\n  @Watch('open')\n  openChanged() {\n    this.isOpen = this.open\n  }\n\n  closePanel() {\n    if (this.closed) {\n      this.closed()\n    }\n    this.isOpen = false\n  }\n\n  private trapFocus(event: KeyboardEvent) {\n    const focusableElements = this.el?.querySelectorAll(\n      'a[href], button, textarea, input, select, [tabindex]:not([tabindex=\"-1\"])',\n    )\n    let focusableArray = Array.from(focusableElements) as HTMLElement[]\n    focusableArray = focusableArray.filter((element) => element.tabIndex !== -1)\n\n    if (focusableArray.length > 0) {\n      this.firstFocusableElement = focusableArray[0]\n      this.lastFocusableElement = focusableArray[focusableArray.length - 1]\n\n      const focusedElement = this.el.querySelector(':focus') as HTMLElement\n\n      if (event.shiftKey && focusedElement === this.firstFocusableElement) {\n        event.preventDefault()\n        this.lastFocusableElement.focus()\n      } else if (!event.shiftKey && focusedElement === this.lastFocusableElement) {\n        event.preventDefault()\n        this.firstFocusableElement.focus()\n      }\n    }\n  }\n\n  @Listen('keydown', { target: 'document' })\n  handleKeyDown(event: KeyboardEvent) {\n    event.stopPropagation()\n    if (event.key === 'Escape') {\n      this.closePanel()\n    }\n    if (event.key === 'Tab') {\n      this.trapFocus(event)\n    }\n  }\n\n  componentDidLoad() {\n    this.isOpen = this.open\n  }\n\n  render() {\n    return (\n      <Fragment>\n        <div class={{ 'slide-container': true, 'slide-up': this.isOpen }} tabIndex={this.isOpen ? 0 : -1}>\n          <div class=\"slide-container-header\">\n            <button\n              onClick={() => this.closePanel()}\n              aria-expanded={this.isOpen ? 'true' : 'false'}\n              aria-label=\"Close panel\"\n              aria-controls=\"panel\"\n              class=\"close-button\"\n              type=\"button\"\n            >\n              <ph-x size=\"18\" />\n            </button>\n          </div>\n          <div id=\"panel\" aria-hidden={!this.isOpen} tabindex=\"-1\" class=\"slide-container-inner\">\n            <slot />\n          </div>\n        </div>\n        {this.backdrop && <div class={{ 'slide-backdrop': true, visible: this.isOpen }} />}\n      </Fragment>\n    )\n  }\n}\n","import type { ClientSearchParams } from '@oramacloud/client'\nimport { OramaClientNotInitializedError } from '@/erros/OramaClientNotInitialized'\nimport { Switch, type OramaSwitchClient } from '@orama/switch'\nimport type { OramaClient } from '@oramacloud/client'\nimport type { CollectionManager } from '@orama/core'\nimport type { AnyOrama } from '@orama/orama'\nimport type {\n  OnSearchCompletedCallbackProps,\n  ResultItemRenderFunction,\n  ResultMap,\n  ResultMapItem,\n  ResultMapKeys,\n  ResultMapRenderFunction,\n  SearchResultBySection,\n  SearchResultWithIcon,\n} from '@/types'\nimport type { SearchStoreType } from '@/ParentComponentStore/SearchStore'\n\nconst LIMIT_RESULTS = 10\n\n// TODO: Orama Client should expose Result type\n// biome-ignore lint/suspicious/noExplicitAny: There is not way to type document as we only know what it is in runtime\ntype OramaHit = { id: string; score: number; document: any; datasource_id: string }\n\nexport class SearchService {\n  private abortController: AbortController\n  private client: Switch<OramaSwitchClient> | CollectionManager\n  private searchStore: SearchStoreType\n\n  constructor(oramaClient: OramaClient | AnyOrama, oramaCoreClient: CollectionManager, searchStore: SearchStoreType) {\n    this.client = oramaCoreClient ? oramaCoreClient : new Switch(oramaClient)\n    this.searchStore = searchStore\n    this.abortController = new AbortController()\n  }\n\n  search = async (\n    term: string,\n    selectedFacet?: string,\n    callbacks?: {\n      onSearchCompletedCallback?: (onSearchCompletedCallbackProps: OnSearchCompletedCallbackProps) => unknown\n      onSearchErrorCallback?: (error: Error) => unknown\n    },\n  ) => {\n    if (!this.client) {\n      throw new OramaClientNotInitializedError()\n    }\n\n    this.abortSearch()\n\n    if (!term) {\n      this.searchStore.state.results = []\n      this.searchStore.state.count = 0\n      this.searchStore.state.facets = []\n      this.searchStore.state.highlightedIndex = -1\n\n      return\n    }\n\n    this.searchStore.state.loading = true\n\n    const latestAbortController = this.abortController\n    const { limit, offset, where, ...restSearchParams } = this.searchStore.state.searchParams ?? {}\n\n    const clientSearchParams = {\n      ...restSearchParams,\n      term,\n      limit: limit || LIMIT_RESULTS,\n      ...(where ? { where } : {}),\n      ...(this.searchStore.state.facetProperty && {\n        facets: {\n          [this.searchStore.state.facetProperty]: {},\n        },\n        ...(selectedFacet &&\n          selectedFacet !== 'All' && {\n            where: {\n              [this.searchStore.state.facetProperty]: {\n                eq: selectedFacet,\n              },\n              ...where,\n            },\n          }),\n      }),\n      // In order to make the types work for both Switch and CollectionManager\n    } as ClientSearchParams & { term: string }\n\n    try {\n      const results = await this.client.search(clientSearchParams)\n      if (latestAbortController.signal.aborted) {\n        return\n      }\n\n      if (results && !results.hits) {\n        throw new Error(\n          'This search was made by a OramaClient with property mergeResult set to false. Orama Search Service requires mergeResult to be true.',\n        )\n      }\n\n      // biome-ignore lint/suspicious/noExplicitAny: To be fixed when Orama Swtich export the right type\n      this.searchStore.state.results = this.parserResults(results?.hits as any, this.searchStore.state.resultMap)\n      this.searchStore.state.count = results?.count || 0\n      this.searchStore.state.facets = this.parseFacets(results?.facets, this.searchStore.state.facetProperty)\n      this.searchStore.state.highlightedIndex = -1\n\n      this.searchStore.state.loading = false\n\n      callbacks?.onSearchCompletedCallback?.({\n        clientSearchParams,\n        result: {\n          results: this.searchStore.state.results,\n          resultsCount: this.searchStore.state.count,\n          facets: this.searchStore.state.facets,\n        },\n      })\n      callbacks?.onSearchCompletedCallback?.({\n        clientSearchParams,\n        result: {\n          results: this.searchStore.state.results,\n          resultsCount: this.searchStore.state.count,\n          facets: this.searchStore.state.facets,\n        },\n      })\n    } catch (error) {\n      console.error('Search error:', error)\n\n      if (latestAbortController.signal.aborted) {\n        return\n      }\n\n      this.searchStore.state.loading = false\n\n      callbacks?.onSearchErrorCallback?.(error)\n    }\n  }\n\n  abortSearch(): void {\n    this.abortController.abort()\n    this.abortController = new AbortController()\n  }\n\n  // TODO\n  retry = () => {\n    throw new Error('Not implemented')\n  }\n\n  private getResultMapObjectByForTheHit = (resultMapArrayOrObject: ResultMap, hit: OramaHit): ResultMapItem => {\n    const resultMapArray = Array.isArray(resultMapArrayOrObject) ? resultMapArrayOrObject : [resultMapArrayOrObject]\n\n    // If there is only one result map, assume it's the one for all hits, regardless of datasourceId\n    if (resultMapArray.length === 1) {\n      return resultMapArray[0]\n    }\n\n    // TODO: Instead of doing it per each HIT, we may want to create a map of datasourceId -> resultMap to avoid the O(n) lookup\n    const resultmapMatch = resultMapArray.find((resultMap) => resultMap.datasourceId === hit.datasource_id)\n\n    return resultmapMatch || {}\n  }\n\n  private parserResults = (\n    hits: OramaHit[] | undefined,\n    resultMapArrayOrObject: ResultMap,\n  ): SearchResultBySection[] => {\n    if (!hits) {\n      return []\n    }\n\n    const perSectionResults = [] as SearchResultBySection[]\n    const arraySectionMap: { [key: string]: number } = {}\n\n    for (const hit of hits) {\n      const resultMap = this.getResultMapObjectByForTheHit(resultMapArrayOrObject, hit)\n\n      const searchResultWithScore = this.hitToSearchResultParser(hit, resultMap)\n      const documentSectionValue =\n        typeof resultMap.section === 'function'\n          ? resultMap.section(hit.document, hit.datasource_id)\n          : hit.document[resultMap.section]\n\n      if (arraySectionMap[documentSectionValue] === undefined) {\n        perSectionResults.push({\n          section: documentSectionValue,\n          items: [searchResultWithScore],\n        })\n        arraySectionMap[documentSectionValue] = perSectionResults.length - 1\n      } else {\n        const sectionIndex = arraySectionMap[documentSectionValue]\n        perSectionResults[sectionIndex].items.push(searchResultWithScore)\n      }\n    }\n\n    return perSectionResults\n  }\n\n  private hitToSearchResultParser = (hit: OramaHit, resultMapObject: ResultMapItem): SearchResultWithIcon => {\n    function getResultMapValue(resultMapKey: ResultMapKeys): string {\n      if (!hit.document) {\n        return '';\n      }\n\n      const resultMapFunctionOrString = resultMapObject[resultMapKey];\n\n      if (!resultMapFunctionOrString) {\n        const value = hit.document[resultMapKey];\n        return typeof value === 'string' ? value : String(value ?? '');\n      }\n\n      if (typeof resultMapFunctionOrString === 'function') {\n        const resultMapFunction = resultMapFunctionOrString as ResultMapRenderFunction;\n        const value = resultMapFunction(hit.document, hit.datasource_id);\n        return typeof value === 'string' ? value : String(value ?? '');\n      }\n\n      const resultMapString = resultMapFunctionOrString as string;\n      const value = hit.document[resultMapString];\n      return typeof value === 'string' ? value : String(value ?? '');\n    }\n\n    function getIcon(): string | null {\n      const iconStringOrFunction = resultMapObject.icon\n\n      if (!iconStringOrFunction) {\n        return null\n      }\n\n      if (typeof iconStringOrFunction === 'function') {\n        const iconFunctionRender = iconStringOrFunction as ResultItemRenderFunction\n        const iconFunctionRenderResult = iconFunctionRender(hit.document, hit.datasource_id)\n\n        return iconFunctionRenderResult ?? null\n      }\n\n      return resultMapObject.icon as string\n    }\n\n    return {\n      id: hit.id,\n      title: getResultMapValue('title'),\n      description: getResultMapValue('description'),\n      path: getResultMapValue('path'),\n      icon: getIcon(),\n    }\n  }\n\n  private parseFacets = (rawFacets: unknown, facetProperty: string): { name: string; count: number }[] => {\n    // Handle case where facets are missing or empty\n    if (!facetProperty || !rawFacets) {\n      return []\n    }\n\n    // Handle different facet formats based on client type\n    const facetPropertyObject = rawFacets[facetProperty]\n    if (!facetPropertyObject || !facetPropertyObject.values) {\n      return []\n    }\n\n    // Process facets in standard format\n    const totalCount = Object.values(facetPropertyObject.values).reduce((acc: number, count: number) => acc + count, 0)\n    const allFacets = Object.keys(facetPropertyObject.values).map((key) => {\n      return {\n        name: key,\n        count: facetPropertyObject.values[key],\n      }\n    })\n\n    allFacets.unshift({ name: 'All', count: totalCount })\n    return allFacets\n  }\n}\n","export class WindowService extends EventTarget {\n  private _width: number\n\n  constructor() {\n    super()\n    this._width = window.innerWidth\n    this.handleResize = this.handleResize.bind(this)\n    window.addEventListener('resize', this.handleResize)\n  }\n\n  private handleResize() {\n    this._width = window.innerWidth\n    this.dispatchEvent(new CustomEvent('widthChange', { detail: this._width }))\n  }\n\n  get width() {\n    return this._width\n  }\n}\n\nconst windowWidthListener = new WindowService()\n\nexport { windowWidthListener }\n","@keyframes showIn {\n  0% {\n    opacity: 0;\n    transform: translateY(-25%);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n.modal {\n  @media (--md-min) {\n    orama-input {\n      padding: 0;\n      margin: 0;\n      border-radius: 0;\n    }\n\n    input[type='search'] {\n      border-radius: var(--radius-m, $radius-m) var(--radius-m, $radius-m) 0 0;\n    }\n  }\n}\n\n.main {\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n  overflow: hidden;\n}\n\n.section-active {\n  display: flex;\n  overflow: hidden;\n}\n\n.section-inactive {\n  display: none;\n}\n","import { Component, Prop, Watch, h, Listen, Element, State, Fragment, Event, type EventEmitter } from '@stencil/core'\nimport { ChatService } from '@/services/ChatService'\nimport { SearchService } from '@/services/SearchService'\nimport { windowWidthListener } from '@/services/WindowService'\nimport {\n  arrowKeysNavigation,\n  generateRandomID,\n  initOramaClient,\n  updateCssVariables,\n  updateThemeClasses,\n  validateCloudIndexConfig,\n} from '@/utils/utils'\nimport { defaultTextDictionary as importedDefaultTextDictionary, getText as getTextUtil } from '@/utils/textDictionary'\nimport type { AnyOrama, Orama, SearchParams } from '@orama/orama'\nimport type { HighlightOptions } from '@orama/highlight'\nimport type { OramaClient } from '@oramacloud/client'\nimport type { CollectionManager } from '@orama/core'\nimport type {\n  ChatMarkdownLinkHref,\n  ChatMarkdownLinkTarget,\n  ChatMarkdownLinkTitle,\n  CloudIndexConfig,\n  ColorScheme,\n  OnAnswerGeneratedCallbackProps,\n  OnAnswerSourceClickCallbackProps,\n  OnChatMarkdownLinkClickedCallbackProps,\n  OnSearchCompletedCallbackProps,\n  OnSearchResultClickCallbackProps,\n  onStartConversationCallbackProps,\n  ResultItemRenderFunction,\n  ResultMap,\n  SourcesMap,\n  Dictionary,\n} from '@/types'\nimport type { TThemeOverrides } from '@/config/theme'\nimport { initStore, removeAllStores } from '@/ParentComponentStore/ParentComponentStoreManager'\nimport type { SearchStoreType } from '@/ParentComponentStore/SearchStore'\nimport type { ChatStoreType } from '@/ParentComponentStore/ChatStore'\nimport type { GlobalStoreType } from '@/ParentComponentStore/GlobalStore'\n\n// TODO: AI components should be lazyly loaded. In case of Disable AI flag, it should not be loaded at all\n// https://linear.app/oramasearch/issue/ORM-1824/ai-components-should-be-lazyly-loaded-in-case-of-disable-ai-flag-they\n\n@Component({\n  tag: 'orama-search-box',\n  styleUrl: 'orama-search-box.scss',\n  shadow: true,\n})\nexport class SearchBox {\n  @Element() htmlElement!: HTMLElement\n\n  /**\n   * Component theme customization\n   */\n  @Prop() themeConfig?: Partial<TThemeOverrides>\n  /**\n   * Component color schema\n   */\n  @Prop() colorScheme?: ColorScheme = 'light'\n  /**\n   * Orama Index configuration\n   *\n   * note: It will be overrided by clientInstance property\n   */\n  @Prop() index?: CloudIndexConfig | CloudIndexConfig[]\n  /**\n   * Orama Instance or CollectionManager\n   */\n  @Prop() clientInstance?: OramaClient | AnyOrama\n  @Prop() oramaCoreClientInstance?: CollectionManager\n  @Prop({ mutable: true, reflect: true }) open = false\n  /**\n   * Index result property to\n   */\n  @Prop() facetProperty?: string\n  /**\n   * Used to map dataset result properties to the expected SearchBox properties\n   */\n  @Prop() resultMap?: Partial<ResultMap> = {}\n  /**\n   * Used to render a custom icom per result. It should return a local asset path.\n   */\n  @Prop() resultItemRender?: ResultItemRenderFunction\n  /**\n   * Used to provide source base URL for the Search Results\n   */\n  @Prop() sourceBaseUrl?: string\n  /**\n   * Used to provide linkRel to search result links\n   */\n  @Prop() linksTarget?: string\n  /**\n   * Used to provide linkRel to search result links\n   */\n  @Prop() linksRel?: string\n  /**\n   * Used to map Chat result sources to expected Orama Chat properties\n   */\n  @Prop() sourcesMap?: SourcesMap\n  /**\n   * Disables chat capabilities\n   */\n  @Prop() disableChat?: boolean = false\n  /**\n   * This component can behave either as Modal or a Embed component.\n   * For Modal, a new absolute panel will be displayed on top.\n   * For Embed, Orama Search Box will be displayed as a inline component.\n   */\n  @Prop() layout?: 'modal' | 'embed' = 'modal'\n  /**\n   * Options for highlights of Search Result titles\n   */\n  @Prop() highlightTitle?: HighlightOptions | false = false\n  /**\n   * Options for highlights of Search Result descriptions\n   */\n  @Prop() highlightDescription?: HighlightOptions | false = false\n  /**\n   * Prompt for the search box\n   */\n  @Prop() prompt?: string\n  /**\n   * Placeholder for chat input\n   */\n  @Prop() chatPlaceholder?: string\n  /**\n   * Placeholder for search input\n   */\n  @Prop() searchPlaceholder?: string\n  /**\n   * List of suggestions to show when the input is empty\n   */\n  @Prop() suggestions?: string[]\n  /**\n   * Parameters forwarded to Orama Client.\n   */\n  @Prop() searchParams?: SearchParams<Orama<AnyOrama | OramaClient>>\n  /**\n   * Callback function used on every AI Chat link title\n   */\n  @Prop() chatMarkdownLinkTitle?: ChatMarkdownLinkTitle\n  /**\n   * Callback function used on every AI Chat link\n   */\n  @Prop() chatMarkdownLinkHref?: ChatMarkdownLinkHref\n  /**\n   * Clear chat on disconnect\n   */\n  @Prop() clearChatOnDisconnect?: boolean = true\n  /**\n   * System prompts to be used for the chat\n   */\n  @Prop() systemPrompts?: string[]\n  /**\n   * Callback function used on every AI Chat link target\n   */\n  @Prop() chatMarkdownLinkTarget?: ChatMarkdownLinkTarget\n  /**\n   * Show keyboard shortcuts in the footer\n   */\n  @Prop() showKeyboardShortcuts?: boolean = true\n  /**\n   * Disclaimer text to show below the chat input\n   */\n  @Prop() disclaimer?: string\n\n  /**\n   * Custom text dictionary for localization\n   * @example\n   * const searchBox = document.querySelector('orama-search-box');\n   * searchBox.dictionary = { searchPlaceholder: \"Search our products...\" };\n   */\n  @Prop() dictionary?: Partial<Dictionary> = {}\n\n  /**\n   * Display automatic chat suggestions\n   */\n  @Prop() relatedQueries?: number\n\n  /**\n   * Watch for changes to the dictionary prop\n   */\n  @Watch('dictionary')\n  handleDictionaryChange(newValue: Partial<Dictionary> | string) {\n    let parsedNewValue: Partial<Dictionary> = {}\n    if (typeof newValue === 'string') {\n      try {\n        parsedNewValue = JSON.parse(newValue)\n      } catch (e) {\n        console.error('Failed to parse dictionary string:', e)\n        // Keep current internalTextDictionary or revert to pure defaults if preferred\n      }\n    } else {\n      parsedNewValue = newValue || {}\n    }\n    this.internalTextDictionary = { ...importedDefaultTextDictionary, ...parsedNewValue }\n  }\n\n  /**\n   * Internal state for the parsed text dictionary.\n   */\n  @State() private internalTextDictionary: Dictionary\n  @State() componentID = generateRandomID('search-box')\n  @State() systemScheme: Omit<ColorScheme, 'system'> = 'light'\n  @State() windowWidth: number\n\n  private searchStore: SearchStoreType\n  private chatStore: ChatStoreType\n  private globalStore: GlobalStoreType\n\n  /**\n   * Fired when search successfully resolves\n   */\n  @Event({ bubbles: true, composed: true }) searchCompleted: EventEmitter<OnSearchCompletedCallbackProps>\n  /**\n   * Fired when user clicks on search result\n   */\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  searchResultClick: EventEmitter<OnSearchResultClickCallbackProps>\n  /**\n   * Fired when the chat is cleared\n   */\n  @Event({ bubbles: true, composed: true }) clearChat: EventEmitter<void>\n  /**\n   * Fired as soon as the conversation is started\n   */\n  @Event({ bubbles: true, composed: true }) startConversation: EventEmitter<onStartConversationCallbackProps>\n  /**\n   * Fired when answer generation is successfully completed\n   */\n  @Event({ bubbles: true, composed: true }) answerGenerated: EventEmitter<OnAnswerGeneratedCallbackProps>\n  /**\n   * Fired when user clicks on answer source\n   */\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  answerSourceClick: EventEmitter<OnAnswerSourceClickCallbackProps>\n  /**\n   * Fired when user clicks on chat markdown link\n   */\n  @Event({ bubbles: true, composed: true, cancelable: true })\n  chatMarkdownLinkClicked: EventEmitter<OnChatMarkdownLinkClickedCallbackProps>\n\n  /**\n   * Fired when modal is closed\n   */\n  @Event({ bubbles: true, composed: true })\n  modalClosed: EventEmitter\n\n  /**\n   * Fire when modal status changes\n   * @deprecated use modalClosed instead\n   */\n  @Event({ bubbles: true, composed: true })\n  modalStatusChanged: EventEmitter<{ open: boolean; id: HTMLElement }>\n\n  wrapperRef!: HTMLElement\n\n  schemaQuery: MediaQueryList\n\n  @Watch('index')\n  @Watch('clientInstance')\n  @Watch('oramaCoreClientInstance')\n  indexChanged() {\n    // This is a naive way to check if it is safe to eval this method (after componentWillLoad)\n    if (!this.searchStore) {\n      return\n    }\n\n    this.bootstrap()\n  }\n\n  @Watch('themeConfig')\n  @Watch('colorScheme')\n  watchHandler() {\n    this.updateTheme()\n  }\n\n  @Watch('open')\n  handleOpenPropChange(newValue: boolean) {\n    this.globalStore.state.open = newValue\n    this.modalStatusChanged.emit({\n      open: newValue,\n      id: this.wrapperRef,\n    })\n    if (!newValue) {\n      this.modalClosed.emit()\n    }\n  }\n\n  @Watch('facetProperty')\n  handleFacetPropertyChange(newValue: string) {\n    this.searchStore.state.facetProperty = newValue\n  }\n\n  @Watch('searchParams')\n  handleSearchParamsChange(newValue: SearchParams<Orama<AnyOrama | OramaClient>>) {\n    this.searchStore.state.searchParams = newValue\n  }\n\n  @Listen('keydown', { target: 'document' })\n  handleKeyDown(ev: KeyboardEvent) {\n    if (\n      this.globalStore?.state.currentTask === 'search' &&\n      ((this.layout === 'modal' && this.open) || this.layout === 'embed') &&\n      ['ArrowDown', 'ArrowUp'].includes(ev.key)\n    ) {\n      arrowKeysNavigation(this.wrapperRef, ev)\n    }\n  }\n\n  updateTheme() {\n    const scheme = updateThemeClasses(this.htmlElement, this.colorScheme, this.systemScheme)\n\n    updateCssVariables(this.htmlElement, scheme as ColorScheme, this.themeConfig)\n  }\n\n  getOldOramaClient() {\n    if (this.oramaCoreClientInstance) {\n      return undefined\n    }\n\n    if (this.clientInstance) {\n      return this.clientInstance\n    }\n\n    return initOramaClient(this.index)\n  }\n\n  bootstrap() {\n    this.searchStore.state.facetProperty = this.facetProperty\n    this.searchStore.state.resultMap = this.resultMap\n    this.searchStore.state.searchParams = this.searchParams\n\n    this.startServices()\n  }\n\n  startServices() {\n    if (!this.index && !this.clientInstance && !this.oramaCoreClientInstance) {\n      // Skip initialization if no index or clientInstance is provided\n      return\n    }\n\n    validateCloudIndexConfig(this.htmlElement, this.index, this.clientInstance, this.oramaCoreClientInstance)\n    const oldOramaClient = this.getOldOramaClient()\n    this.searchStore.state.searchService = new SearchService(\n      oldOramaClient,\n      this.oramaCoreClientInstance,\n      this.searchStore,\n    )\n    this.chatStore.state.chatService = new ChatService(oldOramaClient, this.oramaCoreClientInstance, this.chatStore)\n  }\n\n  componentWillLoad() {\n    this.htmlElement.id = this.componentID\n    this.bootstrap()\n\n    this.globalStore.state.open = this.open\n\n    this.globalStore.onChange('open', () => {\n      if (!this.globalStore) {\n        return\n      }\n\n      this.open = this.globalStore.state.open\n\n      if (!this.globalStore.state.open) {\n        this.globalStore.state.currentTerm = ''\n        // TODO: We should be reseting the context, but we do not want to lose params definitions.\n        // We may want to handle params in a different way.\n\n        this.searchStore.state.facets = []\n        this.searchStore.state.count = 0\n        this.searchStore.state.results = []\n        this.searchStore.state.highlightedIndex = -1\n        this.searchStore.state.loading = false\n        this.searchStore.state.error = false\n        this.chatStore.state.interactions = []\n        setTimeout(() => {})\n      }\n    })\n\n    this.schemaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n    this.systemScheme = this.schemaQuery.matches ? 'dark' : 'light'\n    this.updateTheme()\n\n    this.schemaQuery.addEventListener('change', this.onPrefersColorSchemeChange)\n    windowWidthListener.addEventListener('widthChange', this.updateWindowWidth)\n\n    let propValue: Partial<Dictionary> = {}\n    if (typeof this.dictionary === 'string') {\n      try {\n        propValue = JSON.parse(this.dictionary)\n      } catch (e) {\n        console.error('Failed to parse initial dictionary string:', e)\n      }\n    } else {\n      propValue = this.dictionary || {}\n    }\n    this.internalTextDictionary = { ...importedDefaultTextDictionary, ...propValue }\n  }\n\n  connectedCallback() {\n    this.chatStore = initStore('chat', this.componentID)\n    this.searchStore = initStore('search', this.componentID)\n    this.globalStore = initStore('global', this.componentID)\n\n    this.windowWidth = windowWidthListener.width\n  }\n\n  disconnectedCallback() {\n    removeAllStores(this.componentID)\n\n    windowWidthListener.removeEventListener('widthChange', this.updateWindowWidth)\n    this.schemaQuery?.removeEventListener('change', this.onPrefersColorSchemeChange)\n  }\n\n  /**\n   * Gets the text for a specific key from the dictionary prop.\n   * Prioritizes direct props (searchPlaceholder, chatPlaceholder) for backward compatibility,\n   * then falls back to the dictionary prop, and finally to the defaultTextDictionary.\n   *\n   * @param key - The key to get the text for\n   * @returns The text for the specified key\n   */\n  getText(key: keyof Dictionary): string {\n    // Create a map of direct props for backward compatibility\n    const directProps: Partial<Record<keyof Dictionary, string>> = {\n      searchPlaceholder: this.searchPlaceholder,\n      chatPlaceholder: this.chatPlaceholder,\n    }\n\n    return getTextUtil(key, this.internalTextDictionary, directProps)\n  }\n\n  getSearchBox() {\n    return (\n      <div\n        class={`${\n          this.windowWidth > 1024\n            ? 'section-active'\n            : this.globalStore.state.currentTask === 'search'\n              ? 'section-active'\n              : 'section-inactive'\n        }`}\n      >\n        <orama-search\n          placeholder={this.getText('searchPlaceholder')}\n          focusInput={this.globalStore.state.currentTask === 'search'}\n          sourceBaseUrl={this.sourceBaseUrl}\n          linksTarget={this.linksTarget}\n          linksRel={this.linksRel}\n          highlightTitle={this.highlightTitle}\n          highlightDescription={this.highlightDescription}\n          disableChat={this.disableChat}\n          suggestions={this.suggestions}\n          dictionary={this.internalTextDictionary}\n        >\n          {this.windowWidth > 1024 && !this.disableChat && (\n            <orama-chat-button\n              slot=\"summary\"\n              focus-on-arrow-nav\n              active={!!this.globalStore.state.currentTerm}\n              label={`${this.globalStore.state.currentTerm ? `${this.globalStore.state.currentTerm} - ` : ''}${this.getText('chatButtonLabel')}`}\n              onClick={this.onChatButtonClick}\n              onKeyPress={this.onChatButtonClick}\n            />\n          )}\n        </orama-search>\n      </div>\n    )\n  }\n\n  getChatBox() {\n    return (\n      <Fragment>\n        <orama-chat\n          class={`${this.globalStore.state.currentTask === 'chat' ? 'section-active' : 'section-inactive'}`}\n          defaultTerm={this.globalStore.state.currentTask === 'chat' ? this.globalStore.state.currentTerm : ''}\n          showClearChat={false}\n          focusInput={this.globalStore.state.currentTask === 'chat'}\n          placeholder={this.getText('chatPlaceholder')}\n          sourceBaseUrl={this.sourceBaseUrl}\n          linksTarget={this.linksTarget}\n          linksRel={this.linksRel}\n          sourcesMap={this.sourcesMap}\n          suggestions={this.suggestions}\n          chatMarkdownLinkTitle={this.chatMarkdownLinkTitle}\n          chatMarkdownLinkHref={this.chatMarkdownLinkHref}\n          chatMarkdownLinkTarget={this.chatMarkdownLinkTarget}\n          disclaimer={this.disclaimer}\n          dictionary={this.internalTextDictionary}\n          systemPrompts={this.systemPrompts}\n          prompt={this.prompt}\n          clearChatOnDisconnect={this.clearChatOnDisconnect}\n          relatedQueries={this.relatedQueries}\n        />\n      </Fragment>\n    )\n  }\n\n  getInnerContent() {\n    return (\n      <Fragment>\n        {this.disableChat ? null : (\n          <orama-navigation-bar\n            handleClose={this.closeSearchbox}\n            showBackButton={this.layout !== 'embed'}\n            showChatActions={this.globalStore.state.currentTask === 'chat'}\n          />\n        )}\n        <div class=\"main\">\n          {this.getSearchBox()}\n          {this.windowWidth <= 1024 && this.getChatBox()}\n        </div>\n        <orama-footer\n          colorScheme={this.colorScheme === 'system' ? this.systemScheme : this.colorScheme}\n          showKeyboardShortcuts={this.showKeyboardShortcuts}\n        />\n      </Fragment>\n    )\n  }\n\n  getOuterContent() {\n    return this.windowWidth > 1024 ? (\n      <orama-sliding-panel\n        open={this.globalStore.state.currentTask === 'chat'}\n        backdrop={this.layout === 'embed'}\n        closed={() => {\n          this.globalStore.state.currentTask = 'search'\n        }}\n      >\n        {this.getChatBox()}\n      </orama-sliding-panel>\n    ) : null\n  }\n\n  getModalLayout() {\n    return (\n      <Fragment>\n        <orama-modal\n          ref={(el) => (this.wrapperRef = el)}\n          class=\"modal\"\n          mainTitle={this.getText('startYourSearch')}\n          onModalClosed={(e) => {\n            this.open = false\n            e.stopPropagation()\n          }}\n          closeOnEscape={this.globalStore.state.currentTask === 'search' || this.windowWidth <= 1024}\n        >\n          {this.getInnerContent()}\n        </orama-modal>\n        {this.getOuterContent()}\n      </Fragment>\n    )\n  }\n\n  getEmbedLayout() {\n    return (\n      <Fragment>\n        <orama-embed ref={(el) => (this.wrapperRef = el)}>{this.getInnerContent()}</orama-embed>\n        {this.getOuterContent()}\n      </Fragment>\n    )\n  }\n\n  private closeSearchbox = () => {\n    this.globalStore.state.open = false\n    this.open = false\n  }\n\n  private onChatButtonClick = () => {\n    this.globalStore.state.currentTask = 'chat'\n  }\n\n  private onPrefersColorSchemeChange = (event) => {\n    this.systemScheme = event.matches ? 'dark' : 'light'\n    this.updateTheme()\n  }\n\n  private updateWindowWidth = (event: CustomEvent) => {\n    this.windowWidth = event.detail\n  }\n\n  render() {\n    if (this.layout === 'modal' && !this.globalStore.state.open) {\n      return null\n    }\n\n    if (!this.searchStore.state.searchService) {\n      return null\n    }\n\n    if (!this.chatStore.state.chatService) {\n      return null\n    }\n\n    return this.layout === 'modal' ? this.getModalLayout() : this.getEmbedLayout()\n  }\n}\n",":host {\n  display: block;\n}\n\n.kyb-shortcut {\n  background-color: var(--background-color-tertiary, background-color('tertiary'));\n  border-radius: var(--radius-s, $radius-s);\n  padding: var(--spacing-xs, $spacing-xs) var(--spacing-s, $spacing-xs);\n}\n","import { Component, Watch, Prop, h, State, Element, Listen, Host } from '@stencil/core'\nimport type { ColorScheme, Dictionary } from '@/types'\nimport '@phosphor-icons/webcomponents/dist/icons/PhMagnifyingGlass.mjs'\nimport type { TThemeOverrides } from '@/components'\nimport { generateRandomID, updateCssVariables, updateThemeClasses } from '@/utils/utils'\nimport { defaultTextDictionary, getText as getTextUtil } from '@/utils/textDictionary'\n\nexport type ButtonClick = {\n  id: HTMLElement\n  searchboxId: string\n}\n\n@Component({\n  tag: 'orama-search-button',\n  styleUrl: 'orama-search-button.scss',\n  shadow: true,\n})\nexport class OramaSearchButton {\n  @Element() htmlElement!: HTMLElement\n\n  @Prop() size: 'small' | 'medium' | 'large' = 'medium'\n  @Prop() themeConfig?: Partial<TThemeOverrides>\n  @Prop() colorScheme?: ColorScheme = 'light'\n\n  /**\n   * Text dictionary for customizing all text content in the component.\n   * This can be set either via HTML attribute as a JSON string or via JavaScript as an object.\n   * @example\n   * // Via HTML attribute\n   * <orama-search-button dictionary='{\"searchButtonLabel\": \"Search docs\"}' />\n   * \n   * // Via JavaScript\n   * const searchButton = document.querySelector('orama-search-button');\n   * searchButton.dictionary = { searchButtonLabel: \"Search docs\" };\n   */\n  @Prop() dictionary?: Partial<Dictionary> = {}\n\n  /**\n   * Watch for changes to the dictionary prop\n   */\n  @Watch('dictionary')\n  handleTextDictionaryChange(newValue: Partial<Dictionary> | string) {\n    // Handle case where dictionary is passed as a string (via HTML attribute)\n    if (typeof newValue === 'string') {\n      try {\n        this.dictionary = JSON.parse(newValue);\n      } catch (e) {\n        console.error('Error parsing dictionary:', e);\n      }\n    }\n  }\n\n  @State() systemScheme: Omit<ColorScheme, 'system'> = 'light'\n  @State() shortcutLabel = ''\n  @State() componentID = generateRandomID('search-button')\n\n  schemaQuery!: MediaQueryList\n\n  /**\n   * Gets the text for a specific key from the dictionary prop.\n   * \n   * @param key - The key to get the text for\n   * @returns The text for the specified key\n   */\n  getText(key: keyof Dictionary): string {\n    return getTextUtil(key, this.dictionary);\n  }\n\n  @Watch('themeConfig')\n  @Watch('colorScheme')\n  watchHandler() {\n    this.updateTheme()\n  }\n\n  buttonRef!: HTMLElement\n\n  @Listen('searchboxClosed', { target: 'body' })\n  handleSearchboxClosed(event: CustomEvent<ButtonClick>) {\n    // TODO: should be based on the id of current searchbox\n    this.buttonRef.querySelector('button').focus()\n  }\n\n  // trigger click when entering  '⌘ K' o Mac or 'Ctrl + K'\n  @Listen('keydown', { target: 'document' })\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'k' && (event.metaKey || event.ctrlKey)) {\n      event.preventDefault()\n      this.buttonRef.click()\n    }\n  }\n\n  updateTheme() {\n    const scheme = updateThemeClasses(this.htmlElement, this.colorScheme, this.systemScheme)\n\n    updateCssVariables(this.htmlElement, scheme as ColorScheme, this.themeConfig)\n  }\n\n  private handleShortcutLabel() {\n    const userAgent = navigator.userAgent\n    const isMac = userAgent.includes('Mac')\n\n    return isMac ? '⌘ K' : 'Ctrl + K'\n  }\n\n  private onPrefersColorSchemeChange = (event) => {\n    this.systemScheme = event.matches ? 'dark' : 'light'\n    this.updateTheme()\n  }\n  connectedCallback() {\n    this.htmlElement.id = this.componentID\n    this.shortcutLabel = this.handleShortcutLabel()\n\n    this.schemaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n    this.systemScheme = this.schemaQuery.matches ? 'dark' : 'light'\n    this.updateTheme()\n\n    this.schemaQuery.addEventListener('change', this.onPrefersColorSchemeChange)\n  }\n\n  disconnectedCallback() {\n    this.schemaQuery.removeEventListener('change', this.onPrefersColorSchemeChange)\n  }\n\n  componentWillLoad() {\n    this.updateTheme()\n  }\n\n  render() {\n    return (\n      <Host>\n        {/* biome-ignore lint/a11y/useKeyWithClickEvents: TODO we need to address it. I do not have time now */}\n        <orama-button\n          type=\"button\"\n          variant=\"secondary\"\n          ref={(el) => (this.buttonRef = el)}\n          size={this.size}\n          onClick={() => {\n            const searchBoxList = document.getElementsByTagName(\n              'orama-search-box',\n            ) as unknown as HTMLOramaSearchBoxElement[]\n\n            if (!searchBoxList.length) {\n              console.error('No OramaSearchBox found')\n              return\n            }\n\n            if (searchBoxList.length > 1) {\n              console.error(\n                'Multiple instances of OramaSearchBox (orama-search-box) found. Considere to assign an ID to OramaSearchBox, implement onClick on OramaSearchButton and select desired OramaSearchBox on onClick method',\n              )\n\n              return\n            }\n\n            searchBoxList[0].open = true\n          }}\n        >\n          <span slot=\"adorment-start\">\n            <ph-magnifying-glass />\n          </span>\n          <slot>\n            {this.getText('searchButtonLabel')}\n          </slot>\n          <span slot=\"adorment-end\" class=\"kyb-shortcut\">\n            {this.shortcutLabel}\n          </span>\n        </orama-button>\n      </Host>\n    )\n  }\n}\n","'use client';\n\n/**\n * This file was automatically generated by the Stencil React Output Target.\n * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\n/* eslint-disable */\n\nimport { type OnAnswerGeneratedCallbackProps, type OnAnswerSourceClickCallbackProps, type OnChatMarkdownLinkClickedCallbackProps, type OnSearchCompletedCallbackProps, type OnSearchResultClickCallbackProps, type OramaChatBoxCustomEvent, type OramaChatCustomEvent, type OramaChatMessagesContainerCustomEvent, type OramaMarkdownCustomEvent, type OramaSearchBoxCustomEvent, type OramaSearchCustomEvent, type OramaSearchResultsCustomEvent, type OramaSourcesCustomEvent, type onStartConversationCallbackProps } from \"@orama/wc-components\";\nimport { OramaButton as OramaButtonElement, defineCustomElement as defineOramaButton } from \"@orama/wc-components/dist/components/orama-button.js\";\nimport { OramaChatAssistentMessage as OramaChatAssistentMessageElement, defineCustomElement as defineOramaChatAssistentMessage } from \"@orama/wc-components/dist/components/orama-chat-assistent-message.js\";\nimport { OramaChatBox as OramaChatBoxElement, defineCustomElement as defineOramaChatBox } from \"@orama/wc-components/dist/components/orama-chat-box.js\";\nimport { OramaChatButton as OramaChatButtonElement, defineCustomElement as defineOramaChatButton } from \"@orama/wc-components/dist/components/orama-chat-button.js\";\nimport { OramaChatMessagesContainer as OramaChatMessagesContainerElement, defineCustomElement as defineOramaChatMessagesContainer } from \"@orama/wc-components/dist/components/orama-chat-messages-container.js\";\nimport { OramaChatUserMessage as OramaChatUserMessageElement, defineCustomElement as defineOramaChatUserMessage } from \"@orama/wc-components/dist/components/orama-chat-user-message.js\";\nimport { OramaChat as OramaChatElement, defineCustomElement as defineOramaChat } from \"@orama/wc-components/dist/components/orama-chat.js\";\nimport { OramaDotsLoader as OramaDotsLoaderElement, defineCustomElement as defineOramaDotsLoader } from \"@orama/wc-components/dist/components/orama-dots-loader.js\";\nimport { OramaEmbed as OramaEmbedElement, defineCustomElement as defineOramaEmbed } from \"@orama/wc-components/dist/components/orama-embed.js\";\nimport { OramaFacets as OramaFacetsElement, defineCustomElement as defineOramaFacets } from \"@orama/wc-components/dist/components/orama-facets.js\";\nimport { OramaFooter as OramaFooterElement, defineCustomElement as defineOramaFooter } from \"@orama/wc-components/dist/components/orama-footer.js\";\nimport { OramaInput as OramaInputElement, defineCustomElement as defineOramaInput } from \"@orama/wc-components/dist/components/orama-input.js\";\nimport { OramaLogoIcon as OramaLogoIconElement, defineCustomElement as defineOramaLogoIcon } from \"@orama/wc-components/dist/components/orama-logo-icon.js\";\nimport { OramaMarkdown as OramaMarkdownElement, defineCustomElement as defineOramaMarkdown } from \"@orama/wc-components/dist/components/orama-markdown.js\";\nimport { OramaModal as OramaModalElement, defineCustomElement as defineOramaModal } from \"@orama/wc-components/dist/components/orama-modal.js\";\nimport { OramaNavigationBar as OramaNavigationBarElement, defineCustomElement as defineOramaNavigationBar } from \"@orama/wc-components/dist/components/orama-navigation-bar.js\";\nimport { OramaSearchBox as OramaSearchBoxElement, defineCustomElement as defineOramaSearchBox } from \"@orama/wc-components/dist/components/orama-search-box.js\";\nimport { OramaSearchButton as OramaSearchButtonElement, defineCustomElement as defineOramaSearchButton } from \"@orama/wc-components/dist/components/orama-search-button.js\";\nimport { OramaSearchResults as OramaSearchResultsElement, defineCustomElement as defineOramaSearchResults } from \"@orama/wc-components/dist/components/orama-search-results.js\";\nimport { OramaSearch as OramaSearchElement, defineCustomElement as defineOramaSearch } from \"@orama/wc-components/dist/components/orama-search.js\";\nimport { OramaSlidingPanel as OramaSlidingPanelElement, defineCustomElement as defineOramaSlidingPanel } from \"@orama/wc-components/dist/components/orama-sliding-panel.js\";\nimport { OramaSources as OramaSourcesElement, defineCustomElement as defineOramaSources } from \"@orama/wc-components/dist/components/orama-sources.js\";\nimport { OramaSuggestions as OramaSuggestionsElement, defineCustomElement as defineOramaSuggestions } from \"@orama/wc-components/dist/components/orama-suggestions.js\";\nimport { OramaText as OramaTextElement, defineCustomElement as defineOramaText } from \"@orama/wc-components/dist/components/orama-text.js\";\nimport { OramaTextarea as OramaTextareaElement, defineCustomElement as defineOramaTextarea } from \"@orama/wc-components/dist/components/orama-textarea.js\";\nimport { OramaToggler as OramaTogglerElement, defineCustomElement as defineOramaToggler } from \"@orama/wc-components/dist/components/orama-toggler.js\";\nimport type { EventName, StencilReactComponent } from '@stencil/react-output-target/runtime';\nimport { createComponent } from '@stencil/react-output-target/runtime';\nimport React from 'react';\n\nexport type OramaButtonEvents = NonNullable<unknown>;\n\nexport const OramaButton: StencilReactComponent<OramaButtonElement, OramaButtonEvents> = /*@__PURE__*/ createComponent<OramaButtonElement, OramaButtonEvents>({\n    tagName: 'orama-button',\n    elementClass: OramaButtonElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaButtonEvents,\n    defineCustomElement: defineOramaButton\n});\n\nexport type OramaChatEvents = {\n    onAnswerGenerated: EventName<OramaChatCustomEvent<OnAnswerGeneratedCallbackProps>>,\n    onClearChat: EventName<CustomEvent<void>>,\n    onStartConversation: EventName<OramaChatCustomEvent<onStartConversationCallbackProps>>\n};\n\nexport const OramaChat: StencilReactComponent<OramaChatElement, OramaChatEvents> = /*@__PURE__*/ createComponent<OramaChatElement, OramaChatEvents>({\n    tagName: 'orama-chat',\n    elementClass: OramaChatElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {\n        onAnswerGenerated: 'answerGenerated',\n        onClearChat: 'clearChat',\n        onStartConversation: 'startConversation'\n    } as OramaChatEvents,\n    defineCustomElement: defineOramaChat\n});\n\nexport type OramaChatAssistentMessageEvents = NonNullable<unknown>;\n\nexport const OramaChatAssistentMessage: StencilReactComponent<OramaChatAssistentMessageElement, OramaChatAssistentMessageEvents> = /*@__PURE__*/ createComponent<OramaChatAssistentMessageElement, OramaChatAssistentMessageEvents>({\n    tagName: 'orama-chat-assistent-message',\n    elementClass: OramaChatAssistentMessageElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaChatAssistentMessageEvents,\n    defineCustomElement: defineOramaChatAssistentMessage\n});\n\nexport type OramaChatBoxEvents = {\n    onAnswerGenerated: EventName<OramaChatBoxCustomEvent<OnAnswerGeneratedCallbackProps>>,\n    onClearChat: EventName<CustomEvent<void>>,\n    onStartConversation: EventName<OramaChatBoxCustomEvent<onStartConversationCallbackProps>>,\n    onAnswerSourceClick: EventName<OramaChatBoxCustomEvent<OnAnswerSourceClickCallbackProps>>,\n    onChatMarkdownLinkClicked: EventName<OramaChatBoxCustomEvent<OnChatMarkdownLinkClickedCallbackProps>>\n};\n\nexport const OramaChatBox: StencilReactComponent<OramaChatBoxElement, OramaChatBoxEvents> = /*@__PURE__*/ createComponent<OramaChatBoxElement, OramaChatBoxEvents>({\n    tagName: 'orama-chat-box',\n    elementClass: OramaChatBoxElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {\n        onAnswerGenerated: 'answerGenerated',\n        onClearChat: 'clearChat',\n        onStartConversation: 'startConversation',\n        onAnswerSourceClick: 'answerSourceClick',\n        onChatMarkdownLinkClicked: 'chatMarkdownLinkClicked'\n    } as OramaChatBoxEvents,\n    defineCustomElement: defineOramaChatBox\n});\n\nexport type OramaChatButtonEvents = NonNullable<unknown>;\n\nexport const OramaChatButton: StencilReactComponent<OramaChatButtonElement, OramaChatButtonEvents> = /*@__PURE__*/ createComponent<OramaChatButtonElement, OramaChatButtonEvents>({\n    tagName: 'orama-chat-button',\n    elementClass: OramaChatButtonElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaChatButtonEvents,\n    defineCustomElement: defineOramaChatButton\n});\n\nexport type OramaChatMessagesContainerEvents = { onAnswerGenerated: EventName<OramaChatMessagesContainerCustomEvent<OnAnswerGeneratedCallbackProps>> };\n\nexport const OramaChatMessagesContainer: StencilReactComponent<OramaChatMessagesContainerElement, OramaChatMessagesContainerEvents> = /*@__PURE__*/ createComponent<OramaChatMessagesContainerElement, OramaChatMessagesContainerEvents>({\n    tagName: 'orama-chat-messages-container',\n    elementClass: OramaChatMessagesContainerElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onAnswerGenerated: 'answerGenerated' } as OramaChatMessagesContainerEvents,\n    defineCustomElement: defineOramaChatMessagesContainer\n});\n\nexport type OramaChatUserMessageEvents = NonNullable<unknown>;\n\nexport const OramaChatUserMessage: StencilReactComponent<OramaChatUserMessageElement, OramaChatUserMessageEvents> = /*@__PURE__*/ createComponent<OramaChatUserMessageElement, OramaChatUserMessageEvents>({\n    tagName: 'orama-chat-user-message',\n    elementClass: OramaChatUserMessageElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaChatUserMessageEvents,\n    defineCustomElement: defineOramaChatUserMessage\n});\n\nexport type OramaDotsLoaderEvents = NonNullable<unknown>;\n\nexport const OramaDotsLoader: StencilReactComponent<OramaDotsLoaderElement, OramaDotsLoaderEvents> = /*@__PURE__*/ createComponent<OramaDotsLoaderElement, OramaDotsLoaderEvents>({\n    tagName: 'orama-dots-loader',\n    elementClass: OramaDotsLoaderElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaDotsLoaderEvents,\n    defineCustomElement: defineOramaDotsLoader\n});\n\nexport type OramaEmbedEvents = NonNullable<unknown>;\n\nexport const OramaEmbed: StencilReactComponent<OramaEmbedElement, OramaEmbedEvents> = /*@__PURE__*/ createComponent<OramaEmbedElement, OramaEmbedEvents>({\n    tagName: 'orama-embed',\n    elementClass: OramaEmbedElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaEmbedEvents,\n    defineCustomElement: defineOramaEmbed\n});\n\nexport type OramaFacetsEvents = NonNullable<unknown>;\n\nexport const OramaFacets: StencilReactComponent<OramaFacetsElement, OramaFacetsEvents> = /*@__PURE__*/ createComponent<OramaFacetsElement, OramaFacetsEvents>({\n    tagName: 'orama-facets',\n    elementClass: OramaFacetsElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaFacetsEvents,\n    defineCustomElement: defineOramaFacets\n});\n\nexport type OramaFooterEvents = NonNullable<unknown>;\n\nexport const OramaFooter: StencilReactComponent<OramaFooterElement, OramaFooterEvents> = /*@__PURE__*/ createComponent<OramaFooterElement, OramaFooterEvents>({\n    tagName: 'orama-footer',\n    elementClass: OramaFooterElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaFooterEvents,\n    defineCustomElement: defineOramaFooter\n});\n\nexport type OramaInputEvents = { onInputChanged: EventName<CustomEvent<string>> };\n\nexport const OramaInput: StencilReactComponent<OramaInputElement, OramaInputEvents> = /*@__PURE__*/ createComponent<OramaInputElement, OramaInputEvents>({\n    tagName: 'orama-input',\n    elementClass: OramaInputElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onInputChanged: 'inputChanged' } as OramaInputEvents,\n    defineCustomElement: defineOramaInput\n});\n\nexport type OramaLogoIconEvents = NonNullable<unknown>;\n\nexport const OramaLogoIcon: StencilReactComponent<OramaLogoIconElement, OramaLogoIconEvents> = /*@__PURE__*/ createComponent<OramaLogoIconElement, OramaLogoIconEvents>({\n    tagName: 'orama-logo-icon',\n    elementClass: OramaLogoIconElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaLogoIconEvents,\n    defineCustomElement: defineOramaLogoIcon\n});\n\nexport type OramaMarkdownEvents = { onChatMarkdownLinkClicked: EventName<OramaMarkdownCustomEvent<OnChatMarkdownLinkClickedCallbackProps>> };\n\nexport const OramaMarkdown: StencilReactComponent<OramaMarkdownElement, OramaMarkdownEvents> = /*@__PURE__*/ createComponent<OramaMarkdownElement, OramaMarkdownEvents>({\n    tagName: 'orama-markdown',\n    elementClass: OramaMarkdownElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onChatMarkdownLinkClicked: 'chatMarkdownLinkClicked' } as OramaMarkdownEvents,\n    defineCustomElement: defineOramaMarkdown\n});\n\nexport type OramaModalEvents = { onModalClosed: EventName<CustomEvent<any>> };\n\nexport const OramaModal: StencilReactComponent<OramaModalElement, OramaModalEvents> = /*@__PURE__*/ createComponent<OramaModalElement, OramaModalEvents>({\n    tagName: 'orama-modal',\n    elementClass: OramaModalElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onModalClosed: 'modalClosed' } as OramaModalEvents,\n    defineCustomElement: defineOramaModal\n});\n\nexport type OramaNavigationBarEvents = NonNullable<unknown>;\n\nexport const OramaNavigationBar: StencilReactComponent<OramaNavigationBarElement, OramaNavigationBarEvents> = /*@__PURE__*/ createComponent<OramaNavigationBarElement, OramaNavigationBarEvents>({\n    tagName: 'orama-navigation-bar',\n    elementClass: OramaNavigationBarElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaNavigationBarEvents,\n    defineCustomElement: defineOramaNavigationBar\n});\n\nexport type OramaSearchEvents = {\n    onSearchCompleted: EventName<OramaSearchCustomEvent<OnSearchCompletedCallbackProps>>,\n    onAnswerGenerated: EventName<OramaSearchCustomEvent<OnAnswerGeneratedCallbackProps>>\n};\n\nexport const OramaSearch: StencilReactComponent<OramaSearchElement, OramaSearchEvents> = /*@__PURE__*/ createComponent<OramaSearchElement, OramaSearchEvents>({\n    tagName: 'orama-search',\n    elementClass: OramaSearchElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {\n        onSearchCompleted: 'searchCompleted',\n        onAnswerGenerated: 'answerGenerated'\n    } as OramaSearchEvents,\n    defineCustomElement: defineOramaSearch\n});\n\nexport type OramaSearchBoxEvents = {\n    onSearchCompleted: EventName<OramaSearchBoxCustomEvent<OnSearchCompletedCallbackProps>>,\n    onSearchResultClick: EventName<OramaSearchBoxCustomEvent<OnSearchResultClickCallbackProps>>,\n    onClearChat: EventName<CustomEvent<void>>,\n    onStartConversation: EventName<OramaSearchBoxCustomEvent<onStartConversationCallbackProps>>,\n    onAnswerGenerated: EventName<OramaSearchBoxCustomEvent<OnAnswerGeneratedCallbackProps>>,\n    onAnswerSourceClick: EventName<OramaSearchBoxCustomEvent<OnAnswerSourceClickCallbackProps>>,\n    onChatMarkdownLinkClicked: EventName<OramaSearchBoxCustomEvent<OnChatMarkdownLinkClickedCallbackProps>>,\n    onModalClosed: EventName<CustomEvent<any>>,\n    onModalStatusChanged: EventName<OramaSearchBoxCustomEvent<{ open: boolean; id: HTMLElement }>>\n};\n\nexport const OramaSearchBox: StencilReactComponent<OramaSearchBoxElement, OramaSearchBoxEvents> = /*@__PURE__*/ createComponent<OramaSearchBoxElement, OramaSearchBoxEvents>({\n    tagName: 'orama-search-box',\n    elementClass: OramaSearchBoxElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {\n        onSearchCompleted: 'searchCompleted',\n        onSearchResultClick: 'searchResultClick',\n        onClearChat: 'clearChat',\n        onStartConversation: 'startConversation',\n        onAnswerGenerated: 'answerGenerated',\n        onAnswerSourceClick: 'answerSourceClick',\n        onChatMarkdownLinkClicked: 'chatMarkdownLinkClicked',\n        onModalClosed: 'modalClosed',\n        onModalStatusChanged: 'modalStatusChanged'\n    } as OramaSearchBoxEvents,\n    defineCustomElement: defineOramaSearchBox\n});\n\nexport type OramaSearchButtonEvents = NonNullable<unknown>;\n\nexport const OramaSearchButton: StencilReactComponent<OramaSearchButtonElement, OramaSearchButtonEvents> = /*@__PURE__*/ createComponent<OramaSearchButtonElement, OramaSearchButtonEvents>({\n    tagName: 'orama-search-button',\n    elementClass: OramaSearchButtonElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaSearchButtonEvents,\n    defineCustomElement: defineOramaSearchButton\n});\n\nexport type OramaSearchResultsEvents = { onSearchResultClick: EventName<OramaSearchResultsCustomEvent<OnSearchResultClickCallbackProps>> };\n\nexport const OramaSearchResults: StencilReactComponent<OramaSearchResultsElement, OramaSearchResultsEvents> = /*@__PURE__*/ createComponent<OramaSearchResultsElement, OramaSearchResultsEvents>({\n    tagName: 'orama-search-results',\n    elementClass: OramaSearchResultsElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onSearchResultClick: 'searchResultClick' } as OramaSearchResultsEvents,\n    defineCustomElement: defineOramaSearchResults\n});\n\nexport type OramaSlidingPanelEvents = NonNullable<unknown>;\n\nexport const OramaSlidingPanel: StencilReactComponent<OramaSlidingPanelElement, OramaSlidingPanelEvents> = /*@__PURE__*/ createComponent<OramaSlidingPanelElement, OramaSlidingPanelEvents>({\n    tagName: 'orama-sliding-panel',\n    elementClass: OramaSlidingPanelElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaSlidingPanelEvents,\n    defineCustomElement: defineOramaSlidingPanel\n});\n\nexport type OramaSourcesEvents = { onAnswerSourceClick: EventName<OramaSourcesCustomEvent<OnAnswerSourceClickCallbackProps>> };\n\nexport const OramaSources: StencilReactComponent<OramaSourcesElement, OramaSourcesEvents> = /*@__PURE__*/ createComponent<OramaSourcesElement, OramaSourcesEvents>({\n    tagName: 'orama-sources',\n    elementClass: OramaSourcesElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: { onAnswerSourceClick: 'answerSourceClick' } as OramaSourcesEvents,\n    defineCustomElement: defineOramaSources\n});\n\nexport type OramaSuggestionsEvents = NonNullable<unknown>;\n\nexport const OramaSuggestions: StencilReactComponent<OramaSuggestionsElement, OramaSuggestionsEvents> = /*@__PURE__*/ createComponent<OramaSuggestionsElement, OramaSuggestionsEvents>({\n    tagName: 'orama-suggestions',\n    elementClass: OramaSuggestionsElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaSuggestionsEvents,\n    defineCustomElement: defineOramaSuggestions\n});\n\nexport type OramaTextEvents = NonNullable<unknown>;\n\nexport const OramaText: StencilReactComponent<OramaTextElement, OramaTextEvents> = /*@__PURE__*/ createComponent<OramaTextElement, OramaTextEvents>({\n    tagName: 'orama-text',\n    elementClass: OramaTextElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaTextEvents,\n    defineCustomElement: defineOramaText\n});\n\nexport type OramaTextareaEvents = NonNullable<unknown>;\n\nexport const OramaTextarea: StencilReactComponent<OramaTextareaElement, OramaTextareaEvents> = /*@__PURE__*/ createComponent<OramaTextareaElement, OramaTextareaEvents>({\n    tagName: 'orama-textarea',\n    elementClass: OramaTextareaElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaTextareaEvents,\n    defineCustomElement: defineOramaTextarea\n});\n\nexport type OramaTogglerEvents = NonNullable<unknown>;\n\nexport const OramaToggler: StencilReactComponent<OramaTogglerElement, OramaTogglerEvents> = /*@__PURE__*/ createComponent<OramaTogglerElement, OramaTogglerEvents>({\n    tagName: 'orama-toggler',\n    elementClass: OramaTogglerElement,\n    // @ts-ignore - React type of Stencil Output Target may differ from the React version used in the Nuxt.js project, this can be ignored.\n    react: React,\n    events: {} as OramaTogglerEvents,\n    defineCustomElement: defineOramaToggler\n});\n","export const globalScripts = () => {};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n  if (typeof window === 'undefined') return undefined;\n  await globalScripts();\n  return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n","(function(){if(\"undefined\"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a)}})();\nexport * from '../dist/esm/loader.js';","import styleInject from '#style-inject';styleInject(\"@import\\\"https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&display=swap\\\";[id^=orama-ui]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Instrument Sans,sans-serif;font-family:var(--font-primary,\\\"Instrument Sans\\\",sans-serif);font-weight:400;text-rendering:optimizeLegibility;vertical-align:baseline;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;--text-color-primary:#151515;--text-color-secondary:#838289;--text-color-tertiary:#99989d;--text-color-accent:#ae8ff7;--text-color-inactive:#99989d;--text-color-reverse:#fff;--background-color-primary:#fbfbfb;--background-color-secondary:#fff;--background-color-tertiary:#eee9f6;--background-color-fourth:#efefef;--background-color-reverse:#000;--background-color-accent:#432d77;--border-color-primary:#dadada;--border-color-secondary:#efefef;--border-color-tertiary:#151515;--border-color-accent:#432d77;--icon-color-primary:#151515;--icon-color-secondary:#dadada;--icon-color-tertiary:#838289;--icon-color-inactive:#99989d;--icon-color-reverse:#fbfbfb;--shadow-color-primary:#fff;--button-text-color-primary:#fbfbfb;--button-text-color-secondary:#838289;--button-background-color-primary:#432d77;--button-background-color-secondary:#fff;--button-background-color-secondary-hover:#eee9f6;--button-border-color-secondary:#dadada;--backdrop-background-color-primary:hsla(0,0%,98%,.7);--chat-button-border-color-gradientOne:transparent;--chat-button-border-color-gradientTwo:transparent;--chat-button-border-color-gradientThree:#432d77;--chat-button-border-color-gradientFour:#432d77;--chat-button-border-color-gradientFive:transparent;--chat-button-border-color-gradientSix:transparent;--chat-button-background-color-gradientOne:#432d77;--chat-button-background-color-gradientTwo:transparent;--font-primary:\\\"Instrument Sans\\\",sans-serif;--font-size-xxs:calc(10rem/var(--orama-base-font-size, 16));--font-size-xs:calc(12rem/var(--orama-base-font-size, 16));--font-size-sm:calc(14rem/var(--orama-base-font-size, 16));--font-size-md:calc(16rem/var(--orama-base-font-size, 16));--font-size-lg:calc(20rem/var(--orama-base-font-size, 16));--font-weight-normal:400;--font-weight-semibold:600;--font-line-height-s:1.25;--font-line-height-m:1.5;--radius-xs:calc(6rem/var(--orama-base-font-size, 16));--radius-s:calc(8rem/var(--orama-base-font-size, 16));--radius-m:calc(12rem/var(--orama-base-font-size, 16));--radius-l:calc(16rem/var(--orama-base-font-size, 16));--radius-3xl:calc(40rem/var(--orama-base-font-size, 16));--textarea-radius:calc(16rem/var(--orama-base-font-size, 16));--spacing-2xs:calc(2rem/var(--orama-base-font-size, 16));--spacing-xs:calc(4rem/var(--orama-base-font-size, 16));--spacing-s:calc(8rem/var(--orama-base-font-size, 16));--spacing-m:calc(12rem/var(--orama-base-font-size, 16));--spacing-l:calc(16rem/var(--orama-base-font-size, 16));--spacing-xl:calc(24rem/var(--orama-base-font-size, 16));--spacing-2xl:calc(32rem/var(--orama-base-font-size, 16));--spacing-3xl:calc(40rem/var(--orama-base-font-size, 16));--textarea-shadow:0px 4px 24px 0px var(--shadow-color-primary,#fff)}[id^=orama-ui] *,[id^=orama-ui] :after,[id^=orama-ui] :before{box-sizing:border-box}[id^=orama-ui].theme-dark{--text-color-primary:#fbfbfb;--text-color-secondary:#dadada;--text-color-tertiary:#838289;--text-color-accent:#ae8ff7;--text-color-inactive:#99989d;--text-color-reverse:#000;--background-color-primary:#050505;--background-color-secondary:#151515;--background-color-tertiary:#212121;--background-color-fourth:#2e2e2e;--background-color-reverse:#fff;--background-color-accent:#8152ee;--border-color-primary:#2e2e2e;--border-color-secondary:#151515;--border-color-tertiary:#afafb1;--border-color-accent:#8152ee;--icon-color-primary:#fbfbfb;--icon-color-secondary:#dadada;--icon-color-tertiary:#838289;--icon-color-inactive:#99989d;--icon-color-reverse:#050505;--shadow-color-primary:#000;--button-text-color-primary:#fbfbfb;--button-text-color-secondary:#99989d;--button-background-color-primary:#8152ee;--button-background-color-secondary:#151515;--button-background-color-secondary-hover:#212121;--button-border-color-secondary:#2e2e2e;--backdrop-background-color-primary:rgba(5,5,5,.7);--chat-button-border-color-gradientOne:transparent;--chat-button-border-color-gradientTwo:transparent;--chat-button-border-color-gradientThree:#8152ee;--chat-button-border-color-gradientFour:#8152ee;--chat-button-border-color-gradientFive:transparent;--chat-button-border-color-gradientSix:transparent;--chat-button-background-color-gradientOne:#8152ee;--chat-button-background-color-gradientTwo:transparent}\\n\")"],"mappings":"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AA,+DACrB,QAAM,CACJ,OACEC,EAAA,MAAA,CAAA,IAAA,2CAAK,MAAM,aAAa,EACtBA,EAAK,MAAA,CAAA,IAAA,2CAAA,MAAM,KAAK,CAAG,EACnBA,EAAK,MAAA,CAAA,IAAA,2CAAA,MAAM,KAAK,CAAG,EACnBA,EAAA,MAAA,CAAA,IAAA,2CAAK,MAAM,KAAK,CAAG,CAAA,wQCbpB,IAAMC,GAAiC,CAC5C,KACA,OACA,YACA,MACA,UACA,MACA,SACA,MACA,SACA,eACA,KACA,cACA,MACA,SACA,aACA,cACA,YACA,SACA,WACA,OACA,UACA,aACA,SACA,MACA,OACA,OACA,OACA,OACA,KACA,MACA,QACA,MACA,YACA,KACA,SACA,KACA,IACA,IACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,WACA,MACA,MACA,MACA,YACA,QACA,UACA,MACA,eACA,SACA,OACA,OACA,QACA,MACA,OACA,UACA,KACA,IACA,OACA,MACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,MACA,OACA,OACA,aACA,SACA,MACA,MACA,MACA,WACA,MACA,OACA,MACA,OACA,SACA,MACA,SACA,MACA,QACA,MACA,OACA,SACA,KACA,MACA,MACA,WACA,MACA,UACA,MACA,MACA,QACA,KACA,OACA,MACA,QACA,MACA,UACA,KACA,SACA,OACA,WACA,SACA,UACA,MACA,SACA,MACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,QACA,MACA,OACA,QACA,OACA,aACA,MACA,WACA,kBACA,UACA,KACA,OACA,KACA,KACA,SACA,MACA,OACA,UACA,KACA,SACA,OACA,QACA,OACA,MACA,aACA,KACA,MACA,QACA,KACA,aACA,SACA,KACA,MACA,OACA,QACA,KACA,cACA,OACA,OACA,OACA,iBACA,aACA,KACA,MACA,WACA,KACA,MACA,OACA,WACA,KACA,SACA,MACA,cACA,MACA,KACA,SACA,SACA,MACA,UACA,OACA,UACA,QACA,cACA,SACA,aACA,OACA,OACA,OACA,QACA,YACA,MACA,SACA,MACA,QACA,KACA,aACA,KACA,OACA,QACA,UACA,gBACA,OACA,WACA,OACA,gBACA,UACA,KACA,UACA,MACA,UACA,OACA,KACA,KACA,YACA,MACA,OACA,OACA,QACA,WACA,aACA,aACA,KACA,MACA,aACA,SACA,aACA,QACA,WACA,SACA,KACA,SACA,KACA,MACA,UACA,cACA,QACA,IACA,MACA,MACA,IACA,WACA,KACA,MACA,MACA,QACA,YACA,OACA,KACA,UACA,UACA,OACA,MACA,OACA,KACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,QACA,SACA,SACA,MACA,QACA,UACA,QACA,YACA,KACA,MACA,KACA,OACA,YACA,QACA,SACA,OACA,UACA,QACA,MACA,KACA,MACA,SACA,KACA,OACA,WACA,aACA,KACA,MACA,MACA,MACA,QACA,KACA,WACA,MACA,OACA,OACA,UACA,IACA,MACA,SACA,MACA,SACA,KACA,MACA,SACA,QACA,KACA,MACA,MACA,OACA,SACA,OChUF,GAAM,CACJ,QAAAC,GACA,eAAAC,GACA,SAAAC,GACA,eAAAC,GACA,yBAAAC,EAAA,EACE,OACA,CACF,OAAAC,GACA,KAAAC,GACA,OAAAC,EAAA,EACE,OACA,CACF,MAAAC,GACA,UAAAC,EAAA,EACE,OAAO,QAAY,KAAe,QACjCJ,KACHA,GAASK,EAAA,SAAgBC,EAAG,CAC1B,OAAOA,CACX,EAFW,WAINL,KACHA,GAAOI,EAAA,SAAcC,EAAG,CACtB,OAAOA,CACX,EAFS,SAIJH,KACHA,GAAQE,EAAA,SAAeE,EAAKC,EAAWC,EAAM,CAC3C,OAAOF,EAAI,MAAMC,EAAWC,CAAI,CACpC,EAFU,UAILL,KACHA,GAAYC,EAAA,SAAmBK,EAAMD,EAAM,CACzC,OAAO,IAAIC,EAAK,GAAGD,CAAI,CAC3B,EAFc,cAId,IAAME,GAAeC,GAAQ,MAAM,UAAU,OAAO,EAC9CC,GAAmBD,GAAQ,MAAM,UAAU,WAAW,EACtDE,GAAWF,GAAQ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","names":["NAMESPACE","BUILD","__defProp","__export","__name","target","all","name","SVG_NS","HTML_NS","PrimitiveType","PrimitiveType2","NonPrimitiveType","NonPrimitiveType2","TYPE_CONSTANT","VALUE_CONSTANT","SERIALIZED_PREFIX","getHostRef","ref","registerHost","hostElement","cmpMeta","hostRef","r","isMemberInElement","elm","memberName","consoleError","e","el","styles","CONTENT_REF_ID","ORG_LOCATION_ID","SLOT_NODE_ID","TEXT_NODE_ID","COMMENT_NODE_ID","HYDRATE_ID","HYDRATED_STYLE_ID","HYDRATE_CHILD_ID","SLOT_FB_CSS","XLINK_NS","win","H","plt","h2","eventName","listener","opts","supportsShadow","BUILD6","supportsListenerOptions","_a","supportsListenerOptions2","promiseResolve","v","supportsConstructableStylesheets","queuePending","queueDomReads","queueDomWrites","queueTask","queue","write","cb","nextTick","flush","consume","i2","writeTask","isDef","__name","v","isComplexType","o","queryNonceMetaTagContent","doc","_a","_b","_c","escapeRegExpSpecialCharacters","text","RemoteValue","_RemoteValue","serialized","type","TYPE_CONSTANT","value","VALUE_CONSTANT","item","map2","key","val","deserializedKey","deserializedValue","obj","pattern","flags","set","serializedValues","PrimitiveType","NonPrimitiveType","result_exports","__export","err","map","ok","unwrap","unwrapErr","result","fn","newVal","deserializeProperty","SERIALIZED_PREFIX","updateFallbackSlotVisibility","elm","childNodes","internalCall","getHostSlotNodes","slotNode","getSlotChildSiblings","getSlotName","i2","childNode","getSlottedChildNodes","slottedNode","hostName","slotName","slottedNodes","slot","includeSlot","node","isNodeLocatedInSlot","nodeToRelocate","addSlotRelocateNode","newChild","prepend","position","slottedNodeLocation","parent","appendMethod","slotRelocateNodes","n","a","b","patchSlotNode","assignedFactory","elementsOnly","opts","toReturn","dispatchSlotChangeEvent","findSlotFromSlottedNode","parentHost","patchPseudoShadowDom","hostElementPrototype","patchCloneNode","patchSlotAppendChild","patchSlotAppend","patchSlotPrepend","patchSlotInsertAdjacentElement","patchSlotInsertAdjacentHTML","patchSlotInsertAdjacentText","patchInsertBefore","patchTextContent","patchChildSlotNodes","patchSlotRemoveChild","HostElementPrototype","orgCloneNode","deep","srcNode","isShadowDom","supportsShadow","clonedNode","slotted","nonStencilNode","stencilPrivates","privateField","slotChildNodes","appendAfter","insertedNode","ElementPrototype","toRemove","newChildren","originalInsertAdjacentHtml","container","eleProto","currentChild","found","parentNode","originalInsertAdjacentElement","element","patchHostOriginalAccessor","FakeNodeList","patchSlottedNode","patchNextSibling","patchPreviousSibling","patchParentNode","patchNextElementSibling","patchPreviousElementSibling","parentNodes","index","parentEles","validElementPatches","validNodesPatches","accessorName","accessor","method","createTime","fnName","tagName","h","nodeName","vnodeData","children","child","simple","lastSimple","vNodeChildren","walk","c","newVNode","classData","k","vdomFnUtils","vnode","tag","Host","isHost","cb","convertToPublic","convertToPrivate","initializeClientHydrate","hostElm","hostId","hostRef","endHydrate","shadowRoot","childRenderNodes","slotNodes","shadowRootNodes","memberName","memberFlags","metaAttributeName","_a2","attributeName","attrVal","attrPropVal","parsePropertyValue","scopeId2","cmpMeta","win","plt","initializeDocumentHydrate","HYDRATE_ID","clientHydrate","crIndex","crLength","childRenderNode","orgLocationId","orgLocationNode","hosts","snLen","snIndex","slotGroup","snGroupIdx","snGroupLen","slottedItem","hostEle","rnIdex","rnLen","parentVNode","childNodeType","childIdSplt","childVNode","HYDRATE_CHILD_ID","createSimpleVNode","addSlot","nonShadowNodes","TEXT_NODE_ID","findCorrespondingNode","COMMENT_NODE_ID","SLOT_NODE_ID","CONTENT_REF_ID","orgLocNodes","componentId","ORG_LOCATION_ID","slotId","parentNodeId","addSlottedNodes","shouldMove","slotNodeId","sibling","createSupportsRuleRe","selector","safeSelector2","propValue","propType","getElement","ref","createEvent","name","detail","emitEvent","ev","rootAppliedStyles","registerStyle","cssText","allowCS","style","styles","supportsConstructableStylesheets","addStyle","styleContainerNode","mode","getScopeId","appliedStyles","styleElm","HYDRATED_STYLE_ID","nonce","preconnectLinks","referenceNode2","stylesheet","existingStyleContainer","SLOT_FB_CSS","attachStyles","endAttachStyles","cmp","convertScopedToShadow","css","hydrateScopedToShadow","styles2","setAccessor","oldValue","newValue","isSvg","initialRender","isProp","isMemberInElement","ln","classList","oldClasses","parseClassList","newClasses","prop","capture","CAPTURE_EVENT_SUFFIX","CAPTURE_EVENT_REGEX","isComplex","xlink","XLINK_NS","parseClassListRegex","updateElement","oldVnode","newVnode","isSvgMode2","isInitialRender","oldVnodeAttrs","newVnodeAttrs","sortedAttrNames","attrNames","attr","scopeId","contentRef","hostTagName","useNativeShadowDom","checkSlotFallbackVisibility","checkSlotRelocate","isSvgMode","createElm","oldParentVNode","newParentVNode","childIndex","newVNode2","oldVNode","SVG_NS","HTML_NS","BUILD19","relocateToHostRoot","addRemoveSlotScopedClass","parentElm","host","contentRefNode","childNodeArray","insertBefore","putBackInOriginalLocation","recursive","oldSlotChildNodes","referenceNode","addVnodes","before","vnodes","startIdx","endIdx","containerElm","removeVnodes","nullifyVNodeRefs","updateChildren","oldCh","newCh","oldStartIdx","newStartIdx","idxInOld","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","elmToMove","isSameVnode","patch","leftVNode","rightVNode","oldChildren","defaultHolder","relocateNodes","markSlotContentForRelocation","hostContentNodes","j","relocateNodeData","r","relocateNode","vNode","newNode","reference","newParent","oldParent","scopeName","renderVdom","renderFnResults","isInitialLoad","_d","_e","rootVnode","propName","attribute","relocateData","slotRefNode","parentNodeRef","insertBeforeNode","refNode","nextSibling","attachToAncestor","ancestorComponent","scheduleUpdate","writeTask","dispatchHooks","endSchedule","instance","maybePromise","safeCall","enqueue","updateComponent","isPromisey","err2","endUpdate","rc","endRender","callRender","childrenPromises","postUpdate","postUpdateComponent","renderingRef","e","consoleError","getRenderingRef","endPostUpdate","addHydratedFlag","appDidLoad","nextTick","forceUpdate","getHostRef","isConnected","who","NAMESPACE","arg","BUILD20","getValue","setValue","oldVal","areBothNaN","watchMethods","watchMethodName","proxyComponent","Cstr","prototype","members","origGetter","origSetter","currentValue","attrNameToPropName","attrName","BUILD22","flags2","entry","callbackName","propDesc","_","m","initializeComponent","hmrVersionId","cmpTag","endRegisterStyles","schedule","fireConnectedCallback","connectedCallback","endConnected","addHostEventListeners","setContentReference","BUILD24","contentRefElm","disconnectedCallback","rmListener","proxyCustomElement","compactMeta","originalConnectedCallback","originalDisconnectedCallback","registerHost","Fragment","listeners","attachParentListeners","target","getHostListenerTarget","handler","hostListenerProxy","hostListenerOpts","methodName","supportsListenerOptions","Pt","pe","vt","Ct","_t","Nt","A","__name","Dt","n","r","s","Y","Q","y","ge","R","me","X","ye","Se","be","t","e","kt","Fe","a","ee","Ie","Le","M","Z","o","i","Te","we","xe","Ae","Oe","Ee","Pe","ve","Ce","_e","Ne","De","ke","Re","Me","Be","Ue","ze","He","Lt","We","B","je","c","Rt","Wt","$t","jt","Kt","$e","U","qt","Yt","Xt","Qt","Zt","en","E","ne","Mt","Bt","Ut","zt","Ht","Ft","Vt","S","Ve","l","f","Jt","te","Gt","Ze","d","Xe","P","C","b","qe","Ge","Ye","tn","v","nn","rn","sn","on","an","cn","Je","Ke","h","u","p","m","I","_","T","Qe","at","Bn","w","ln","tt","N","re","nt","rt","et","un","st","ot","dn","it","hn","fn","z","Un","D","pn","mn","gn","yn","Tt","Sn","se","ct","lt","ut","dt","oe","mt","gt","ce","yt","St","ie","bt","ae","H","q","de","G","g","he","fe","F","O","W","V","$","j","vn","It","arrowKeysNavigation","ref","event","selector","focusableElements","focusableArray","element","firstFocusableElement","lastFocusableElement","focusedElement","focusedIndex","nextFocusableElement","copyToClipboard","text","_a","err","textarea","getNonExplicitAttributes","explicitProps","acc","attr","validateCloudIndexConfig","el","indexOrIndexes","instance","oramaCoreInstance","componentDetails","index","initOramaClient","indexes","OramaClient","generateRandomID","componentName","updateThemeClasses","colorScheme","systemScheme","scheme","updateCssVariables","themeConfig","base","key","oramaButtonCss","OramaButton","__stencil_proxyCustomElement","HTMLElement","__name","Tag","declaredProps","buttonProps","getNonExplicitAttributes","buttonClass","h","r","c","a","i","__name","s","t","o","h","e","l","p","S","u","n","d","y","b","v","U","w","A","f","O","E","g","P","m","I","W","k","F","x","H","D","Z","B","R","V","Y","tt","N","_","j","z","q","$","T","C","J","K","Q","M","X","G","L","et","ChatStoreInitialProps","appendToMap","__name","map","propName","value","items","debounce","fn","ms","timeoutId","args","isConnected","maybeElement","cleanupElements","key","stencilSubscription","getRenderingRef","elmsToUpdate","elm","elements","forceUpdate","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","handlers","reset","cb","dispose","get","set","oldValue","state","_","on","eventName","callback","removeFromArray","unSet","newValue","unReset","subscriptions","unsubs","subscription","unsub","array","item","index","createStore","GlobalStoreInitialProps","SearchStoreInitialProps","storesMapInitialProps","storesReferencesMap","getParentComponentStore","parentComponentId","storeName","parentStores","store","initStore","initialProps","currentStores","removeAllStores","getStore","element","externalComponent","getExternalParentComponentHTMLElement","EXTERNAL_COMPONENT_TAG_LIST","currentNode","host","_a","STORE_PROPS","STORE_WILL_LOAD_PATCHED","Store","targetClass","propKey","classConstructor","originalComponentWillLoad","hostEl","getElement","storeProps","oramaDotsLoaderCss","DotsLoader","__stencil_proxyCustomElement","HTMLElement","__name","h","SUPPORTED_HLJS_LANGUAGES_ARRAY","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","__name","x","fun","thisValue","args","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","property","value","lookupGetter","prop","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window1","DOMPurify","root","document1","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","parentTagName","_forceRemove","node","_removeAttribute","name","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","body","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","content","_isBasicCustomElement","parentNode","childNodes","childCount","i","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","attr","namespaceURI","attrValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","tag","entryPoint","hookFunction","purify","deepFreeze","obj","type","Response","mode","escapeHTML","inherit$1","original","objects","result","key","SPAN_CLOSE","emitsWrappingTags","scopeToCSSClass","prefix","pieces","HTMLRenderer","parseTree","options","className","newNode","opts","TokenTree","scope","builder","child","el","TokenTreeEmitter","emitter","source","re","lookahead","concat","anyNumberOfTimes","optional","stripOptionsFromArgs","either","countMatchGroups","startsWith","lexeme","match","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","regex","offset","out","MATCH_NOTHING_RE","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","SHEBANG","beginShebang","m","resp","BACKSLASH_ESCAPE","APOS_STRING_MODE","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","begin","end","modeOptions","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","skipIfHasPrecedingDot","response","scopeClassName","_parent","beginKeywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","originalMode","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","keyword","pair","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","error","message","warn","deprecated","version","MultiClassError","remapScopeNames","regexes","scopeNames","emit","positions","beginMultiClass","endMultiClass","scopeSugar","MultiClass","compileLanguage","language","langRe","global1","MultiRegex","terminators","s","matchData","ResumableMultiRegex","matcher","m2","buildModeRegex","mm","term","compileMode","cmode","ext","keywordPattern","c","expandOrCloneMode","dependencyOnParent","variant","HTMLInjectionError","reason","escape","inherit","NO_MATCH","MAX_KEYWORD_HITS","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","shouldNotHighlight","languageName","blockLanguage","block","classes","getLanguage","_class","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","code","context","fire","_highlight","codeToHighlight","continuation","keywordHits","keywordData","matchText","processKeywords","top","modeBuffer","lastIndex","buf","word","kind","keywordRelevance","relevance","cssClass","emitKeyword","processSubLanguage","continuations","highlightAuto","processBuffer","emitMultiClass","max","klass","startNewMode","endOfMode","matchPlusRemainder","matched","doIgnore","resumeScanAtSamePosition","doBeginMatch","newMode","beforeCallbacks","cb","doEndMatch","endMode","origin","processContinuations","list","current","item","lastMatch","processLexeme","textBeforeMatch","err","processed","iterations","md","beforeMatch","processedCount","justTextHighlightResult","languageSubset","plaintext","results","autoDetection","sorted","a","b","best","secondBest","updateClassName","currentLang","resultLang","highlightElement","configure","userOptions","initHighlighting","highlightAll","initHighlightingOnLoad","wantsHighlight","boot","registerLanguage","languageDefinition","lang","error$1","registerAliases","unregisterLanguage","alias","listLanguages","aliasList","upgradePluginAPI","plugin","addPlugin","removePlugin","event","deprecateHighlightBlock","core","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","encode","unescapeTest","unescape","_","n","caret","edit","opt","val","valSource","cleanUrl","href","noopTest","splitCells","tableRow","count","row","str","escaped","curr","cells","rtrim","invert","suffLen","findClosingBracket","level","outputLink","cap","link","raw","lexer","title","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","src","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","lastToken","oldToken","newText","newToken","bull","isordered","itemRegex","endsWithBlankLine","endEarly","itemContents","line","t","nextLine","blankLine","indent","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","headers","aligns","rows","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","inline","_Lexer","rules","next","lastParagraphClipped","leading","tabs","cutSrc","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","langString","depth","ordered","start","j","startAttr","itemBody","checkbox","checked","header","k","cleanHref","_TextRenderer","_Parser","anyToken","genericToken","ret","textToken","renderer","_Hooks","markdown","Marked","#parseMarkdown","callback","values","tableToken","listToken","childTokens","extensions","pack","prevRenderer","extLevel","rendererProp","rendererFunc","#convertRendererFunction","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","loose","task","parser","origOpt","throwError","#onError","e","silent","async","msg","markedInstance","marked","oramaMarkdownCss","SUPPORTED_HLJS_LANGUAGES","LANGUAGES_MAPPING","loadLanguageAndHighlight","localCachedLanguage","scriptContent","OramaMarkdown","__stencil_proxyCustomElement","HTMLElement","noZeroWidthCharsContent","highlightedCode","mk","pedningBlocksByLanguage","codeBlockRef","pendingLanguage","parsedContent","originalOnClickEvent","htmlElement","_b","_a","_d","_c","_e","mappedLanguage","actualLanguage","pre","codeTitle","hljsLanguage","h","ref","u","d","s","__name","o","a","p","l","e","h","n","t","f","m","r","c","i","g","oramaTextCss","OramaText","__stencil_proxyCustomElement","HTMLElement","__name","defaultStyle","Tag","declaredProps","textProps","getNonExplicitAttributes","h","u","d","s","__name","o","l","a","i","r","h","n","t","m","g","e","f","p","c","oramaSourcesCss","SOURCE_BOX_OFFSET","OramaSources","__stencil_proxyCustomElement","HTMLElement","originalOnClickEvent","item","path","sanitizedBaseUrl","sanitizedPath","container","items","itemRect","containerRect","_a","direction","carousel","nextItemCarousel","previousItemCarousel","element","el","source","index","onClickEvent","TAnswerStatus","c","f","o","__name","a","s","p","H","r","i","h","t","m","l","e","g","V","n","w","u","v","A","M","Z","oramaChatAssistentMessageCss","OramaChatAssistentMessage","__stencil_proxyCustomElement","HTMLElement","copyToClipboard","_a","Host","__decorate","Store","OramaClientNotInitializedError","__name","STEMMERS","SUPPORTED_LANGUAGES","nano","milli","second","MAX_ARGUMENT_FOR_STACK","safeArrayPush","arr","newArr","newArrLength","i","sprintf","template","args","replaceArgs","groups","rawWidth","type","position","replacement","width","value","padding","precision","w","isInsideWebWorker","isInsideNode","getNanosecondTimeViaPerformance","formatNanoseconds","getNanosecondsTime","sortTokenScorePredicate","a","b","intersect","arrays","tmp","set","elem","found","count","e","getDocumentProperties","doc","paths","properties","pathsLength","path","pathTokens","current","pathTokensLength","j","getNested","obj","removeVectorsFromHits","searchResult","vectorProperties","result","acc","prop","lastKey","key","isAsyncFunction","func","item","allLanguages","errors","createError","code","error","getInternalDocumentId","store","id","internalId","currentId","getDocumentIdFromInternalId","runAfterSearch","hooks","db","params","language","results","hook","runBeforeSearch","DEFAULT_SIMILARITY","MODE_FULLTEXT_SEARCH","MODE_HYBRID_SEARCH","MODE_VECTOR_SEARCH","sortAsc","sortDesc","sortingPredicateBuilder","order","getFacets","orama","facetsConfig","facets","allIDs","allDocs","facetKeys","facet","values","ranges","rangesLength","range","allDocsLength","facetValue","propertyType","facetValues","calculateNumberFacetBuilder","alreadyInsertedValues","calculateNumberFacet","v","calculateBooleanStringOrEnumFacetBuilder","calculateBooleanStringOrEnumFacet","currentFacet","stringFacetDefinition","sortingPredicate","defaultValue","DEFAULT_REDUCE","_","res","index","length","ALLOWED_TYPES","getGroups","groupBy","propertiesLength","schemaProperties","property","returnedCount","listOfValues","g","groupByKey","group","keyValue","perValue","combinations","calculateCombination","combinationsLength","combination","combinationLength","indexes","groupsLength","reduce","docs","initialValue","aggregationValue","arrs","head","c","innerFullTextSearch","term","propertiesToSearch","propertiesToSearchWithTypes","hasFilters","whereFiltersIDs","uniqueDocsIDs","threshold","docsCount","applyDefault","k","fullTextSearch","timeStart","performSearchLogic","shouldCalculateFacets","limit","offset","distinctOn","includeVectors","isPreflight","uniqueDocsArray","ids","docsWithIdAndScore","d","score","fetchDocumentsWithDistinct","fetchDocuments","executeSearchAsync","defaultBM25Params","bm25Relevance","r","innerVectorSearch","vector","vectorIndex","vectorSize","searchVector","facetsResults","vectorProperty","newDoc","elapsedTime","innerHybridSearch","fullTextIDs","minMaxScoreNormalization","vectorIDs","hybridWeights","mergeAndRankResults","hybridSearch","uniqueTokenScores","timeEnd","returningResults","extractScore","token","maxScore","normalizeScore","hybridScoreBuilder","textWeight","vectorWeight","textScore","vectorScore","textResults","vectorResults","query","maxTextScore","maxVectorScore","hasHybridWeights","getQueryWeights","mergedResults","textResultsLength","hybridScore","normalizedScore","hybridScoreValue","vectorResultsLength","resultId","existingRes","search","mode","resultIDs","uniqueDocsArrayLength","idAndScore","fullDoc","ORAMA_SECURE_PROXY_PLUGIN_NAME","config","output","msg","stream","interactionId","stateIdx","sources","err","self1","getPlugin","plugin","pluginExtras","U32_MASK64","_32n","fromBig","n","le","split","lst","len","Ah","Al","h","l","rotlSH","s","rotlSL","rotlBH","rotlBL","isBytes","anumber","abytes","lengths","aexists","instance","checkFinished","aoutput","out","min","u32","clean","isLE","byteSwap","word","byteSwap32","swap32IfBE","u","utf8ToBytes","str","toBytes","data","Hash","createHasher","hashCons","hashC","createXOFer","opts","_0n","_1n","_2n","_7n","_256n","_0x71n","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","round","R","x","y","t","IOTAS","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","shift","PI","Keccak","blockLen","suffix","outputLen","enableXOF","state","pos","take","bufferOut","bytes","to","gen","sha3_224","sha3_256","sha3_384","sha3_512","keccak_224","keccak_256","keccak_384","keccak_512","genShake","shake128","shake256","sha3","require$$0","defaultLength","bigLength","createEntropy","random","entropy","bufToBigInt","buf","bits","bi","hash","input","alphabet","randomLetter","createFingerprint","globalObj","global","globals","sourceString","createCounter","initialCountMax","init","counter","fingerprint","firstLetter","time","salt","hashInput","createId","isCuid","minLength","maxLength","regex","src","getConstants","cuid2","EventsStreamTransformer","decoder","buffer","currentEvent","chunk","controller","chunkText","lineEnd","line","firstColonMatch","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","_defineProperty","_toPropertyKey","arg","_toPrimitive","hint","prim","dedent","createDedent","options","newOptions","strings","raw","escapeSpecialCharacters","next","lines","mindent","m","indent","remoteURL","headers","requestObject","APIKey","request","response","securityLevel","safeJSONParse","silent","knownActions","knownActionsArray","dntGlobals","dntGlobalThis","createMergeProxy","baseObj","extObj","_target","_receiver","success","baseKeys","extKeys","extKeysSet","desc","ignoreOverride","defaultOptions","getDefaultOptions","getRefs","_options","currentPath","name","def","addErrorMessage","errorMessage","refs","setResponseValueAndErrors","exports","util","val","assertIs","_arg","assertNever","_x","items","validKeys","filtered","checker","joinValues","array","separator","objectUtil","first","getParsedType","ZodError_1","util_1","quotelessJson","ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","el","formErrors","en","require$$1","errorMap","_ctx","message","__importDefault","this","mod","en_1","requireEn","overrideErrorMap","setErrorMap","map","getErrorMap","errors_1","makeIssue","errorMaps","issueData","fullPath","fullIssue","maps","addIssueToContext","ctx","overrideMap","ParseStatus","status","arrayValue","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","typeAliases","errorUtil_1","errorUtil","__classPrivateFieldGet","types","receiver","kind","f","__classPrivateFieldSet","_ZodEnum_cache","_ZodNativeEnum_cache","parseUtil_1","require$$2","require$$3","require$$4","ParseInputLazyPath","parent","handleResult","processCreateParams","invalid_type_error","required_error","description","iss","_a","_b","maybeAsyncResult","check","getIssueProperties","setError","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","ZodOptional","ZodNullable","ZodArray","ZodPromise","option","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","ZodPipeline","ZodReadonly","ZodType","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","timeRegex","datetimeRegex","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","tooBig","tooSmall","validation","ch","max","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","inclusive","ZodBigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","schema","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","_c","_d","defaultError","augmentation","merging","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","getDiscriminator","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","itemIndex","rest","schemas","ZodRecord","keyType","valueType","third","finalMap","ZodMap","ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","size","ZodFunction","makeArgsIssue","makeReturnsIssue","returns","fn","me","parsedArgs","parsedReturns","returnType","getter","expectedValues","enumValues","newDef","opt","nativeEnumValues","promisified","effect","checkCtx","processed","executeRefinement","inner","base","preprocess","newCtx","ZodNaN","inResult","freeze","cleanParams","p","custom","_params","fatal","_fatal","instanceOfType","cls","stringType","numberType","nanType","bigIntType","booleanType","dateType","symbolType","undefinedType","nullType","anyType","unknownType","neverType","voidType","arrayType","objectType","strictObjectType","unionType","discriminatedUnionType","intersectionType","tupleType","recordType","mapType","setType","functionType","lazyType","literalType","enumType","nativeEnumType","promiseType","effectsType","optionalType","nullableType","preprocessType","pipelineType","ostring","onumber","oboolean","__createBinding","o","k2","__exportStar","require$$5","__setModuleDefault","__importStar","z","requireExternal","parseAnyDef","parseArrayDef","parseDef","parseBigintDef","parseBooleanDef","parseBrandedDef","_def","parseCatchDef","parseDateDef","overrideDateStrategy","strategy","integerDateParser","parseDefaultDef","parseEffectsDef","parseEnumDef","isJsonSchema7AllOfType","parseIntersectionDef","allOf","unevaluatedProperties","mergedAllOf","nestedSchema","additionalProperties","parseLiteralDef","parsedType","zodPatterns","parseStringDef","addFormat","addPattern","escapeLiteralCheckValue","literal","escapeNonAlphaNumeric","ALPHA_NUMERIC","stringifyRegExpWithFlags","flags","pattern","isEscaped","inCharGroup","inCharRange","parseRecordDef","parseMapDef","parseNativeEnumDef","actualValues","parsedTypes","parseNeverDef","parseNullDef","primitiveMappings","parseUnionDef","asAnyOf","uniqueTypes","anyOf","parseNullableDef","parseNumberDef","parseObjectDef","forceOptionalIntoNullable","required","propName","propDef","propOptional","safeIsOptional","parsedDef","decideAdditionalProperties","parseOptionalDef","innerSchema","parsePipelineDef","parsePromiseDef","parseSetDef","parseTupleDef","parseUndefinedDef","parseUnknownDef","parseReadonlyDef","selectParser","typeName","forceResolution","seenItem","overrideResult","seenSchema","get$ref","newItem","jsonSchemaOrGetter","jsonSchema","addMeta","postProcessResult","getRelativePath","pathA","pathB","zodToJsonSchema","definitions","main","combined","formatDuration","duration","seconds","hasLocalStorage","isServerRuntime","dntShim.dntGlobalThis","flattenZodSchema","defName","flattened","LOCAL_STORAGE_USER_ID_KEY","DEFAULT_SERVER_USER_ID","OramaInterface","interactionID","currentStateIndex","currentMessageIndex","body","reader","done","action","segment","trigger","jsonPlan","planExecution","jsonResult","probability","getUserID","sendBeacon","endpoint","apiKey","userId","protocol","host","telemetryDomain","identity","alias","Profile","start","datasourceIDs","restQuery","elapsed","collectionID","indexID","Index","AnswerSession","systemPrompt","tool","parameters","flattenedSchema","tools","url","writeAPIKey","readAPIKey","documents","documentIDs","isOramaClient","client","isOramaCoreClient","CollectionManager","isOramaJSClient","Switch","OSSAnswerSession","parseRelatedQueries","relatedQueries","oramaClient","oramaCoreClient","chatStore","resultMapArrayOrObject","indexId","searchMapArray","resultMap","systemPrompts","callbacks","askParams","existingInteractions","normalizedState","stateItem","interaction","isLatest","answerStatus","TAnswerStatus","matchingMap","title","methodError","latestInteraction","streamParams","answerStream","answerStream_1","__asyncValues","answerStream_1_1","sourceMapKey","sourceMapObject","rawSource","sourcesMapFunctionOrString","resultMapString","defaultTextDictionary","getText","key","dictionary","directProps","__name","w","u","a","__name","o","l","p","r","h","n","t","g","m","e","f","i","c","oramaChatUserMessageCss","OramaChatUserMessage","__stencil_proxyCustomElement","HTMLElement","__name","h","Host","oramaSuggestionsCss","OramaSuggestions","__stencil_proxyCustomElement","HTMLElement","__name","suggestion","isChips","isList","classSuffix","_a","h","e","oramaChatMessagesContainerCss","OramaChatMessagesContainer","__stencil_proxyCustomElement","HTMLElement","__name","suggestion","_a","onAnswerGeneratedCallbackProps","entries","messagesWrapperElement","h","Host","interaction","interactionIndex","__decorate","Store","oramaTextareaCss","OramaTextarea","__stencil_proxyCustomElement","HTMLElement","__name","event","target","slotName","slot","assignedElements","value","input","computedStyle","inputShallow","boxSizing","padding","border","innerHeight","singleRowHeight","outerHeight","outerHeightStyle","overflowing","textareaStyles","props","i","attr","h","Host","el","f","u","a","__name","l","s","i","o","e","h","n","t","m","L","r","g","p","c","Z","oramaChatCss","BOTTOM_THRESHOLD","OramaChat","__stencil_proxyCustomElement","HTMLElement","question","relatedQueries","params","texteareaEl","scrollableHeight","options","startTime","startPosition","duration","animateScroll","currentTime","scrollTarget","elapsedTime","scrollProgress","easeFunction","scrollTo","currentScrollTop","suggestion","event","_a","newValue","oldValue","_b","prop","newInteractions","oldInteractions","key","directValue","getTextUtil","_c","lastInteraction","lastInteractionStatus","hasInteractions","Host","ref","Fragment","TAnswerStatus","__decorate","Store","w","u","o","__name","a","s","h","i","r","p","c","t","m","n","e","f","l","g","oramaChatBoxCss","ChatBox","__stencil_proxyCustomElement","HTMLElement","generateRandomID","event","key","directProps","getTextUtil","newValue","initOramaClient","validateCloudIndexConfig","oldOramaClient","ChatService","scheme","updateThemeClasses","updateCssVariables","initStore","removeAllStores","_a","currentScheme","Host","_b","Icon","__name","name","size","color","h","iconName","w","d","a","__name","o","l","p","r","h","n","t","f","m","e","c","i","g","oramaChatButtonCss","OramaChatButton","__stencil_proxyCustomElement","HTMLElement","__name","declaredProps","buttonProps","getNonExplicitAttributes","h","Host","Icon","oramaEmbedCss","OramaEmbed","__stencil_proxyCustomElement","HTMLElement","__name","h","oramaFacetsCss","OramaFacets","__stencil_proxyCustomElement","HTMLElement","__name","facet","facetName","buttonList","i","_a","ev","index","h","el","isSelected","u","w","o","__name","a","s","i","l","r","h","n","t","g","m","e","f","p","c","oramaFooterCss","OramaFooter","__stencil_proxyCustomElement","HTMLElement","utmSource","shortcut","imgName","Host","f","u","o","__name","a","s","l","i","r","h","L","t","m","n","e","c","p","g","u","M","s","__name","a","o","p","i","r","h","n","t","m","g","e","c","l","f","oramaInputCss","Input","__stencil_proxyCustomElement","HTMLElement","__name","_a","checkRefInterval","inputClass","labelClass","declaredProps","inputProps","getNonExplicitAttributes","isSearch","h","Host","el","event","target","OramaMarkdown","defineCustomElement","oramaModalCss","OramaModal","__stencil_proxyCustomElement","HTMLElement","__name","event","focusableElements","focusableArray","element","focusedElement","h","ref","v","M","l","__name","e","h","p","t","i","L","a","m","V","r","n","o","Z","oramaTogglerCss","OramaToggler","__stencil_proxyCustomElement","HTMLElement","Host","__decorate","Store","Z","u","o","__name","a","s","h","i","r","l","m","t","c","n","e","f","p","g","v","oramaNavigationBarCss","OramaNavigationBar","__stencil_proxyCustomElement","HTMLElement","_a","Host","Fragment","__decorate","Store","H","y","C","m","A","__name","e","t","s","d","r","i","R","b","u","g","dist","o","h","a","c","T","n","M","l","p","_","L","x","S","V","Z","oramaSearchResultsCss","SearchResults","__stencil_proxyCustomElement","HTMLElement","originalOnClickEvent","item","text","path","sanitizedBaseUrl","sanitizedPath","Highlight","_c","_d","section","_e","_f","Host","result","onClickEvent","_a","_b","Icon","term","oramaSearchCss","OramaSearch","__stencil_proxyCustomElement","HTMLElement","__name","chatButton","key","directProps","getTextUtil","onSearchCompletedCallbackProps","h","Host","e","target","facetName","_a","term","onAnswerGeneratedCallbackProps","__decorate","Store","oramaSlidingPanelCss","SlideInPanel","__stencil_proxyCustomElement","HTMLElement","__name","event","focusableElements","_a","focusableArray","element","focusedElement","h","Fragment","LIMIT_RESULTS","__name","oramaClient","oramaCoreClient","searchStore","term","selectedFacet","callbacks","OramaClientNotInitializedError","latestAbortController","_e","_a","limit","where","restSearchParams","__rest","clientSearchParams","results","_b","_c","error","_d","resultMapArrayOrObject","hit","resultMapArray","resultMap","hits","perSectionResults","arraySectionMap","searchResultWithScore","documentSectionValue","sectionIndex","resultMapObject","getResultMapValue","resultMapKey","resultMapFunctionOrString","value","resultMapString","getIcon","iconStringOrFunction","iconFunctionRenderResult","rawFacets","facetProperty","facetPropertyObject","totalCount","acc","count","allFacets","key","Switch","WindowService","windowWidthListener","oramaSearchBoxCss","SearchBox","__stencil_proxyCustomElement","HTMLElement","generateRandomID","event","newValue","parsedNewValue","e","importedDefaultTextDictionary","ev","arrowKeysNavigation","scheme","updateThemeClasses","updateCssVariables","initOramaClient","validateCloudIndexConfig","oldOramaClient","SearchService","ChatService","propValue","initStore","removeAllStores","directProps","getTextUtil","h","Fragment","el","oramaSearchButtonCss","OramaSearchButton","__stencil_proxyCustomElement","HTMLElement","__name","generateRandomID","event","newValue","e","key","getTextUtil","scheme","updateThemeClasses","updateCssVariables","h","Host","el","searchBoxList","createComponent","React","OramaChatBox","createComponent","tagName","elementClass","OramaChatBoxElement","react","React","events","onAnswerGenerated","onClearChat","onStartConversation","onAnswerSourceClick","onChatMarkdownLinkClicked","defineCustomElement","defineOramaChatBox","OramaMarkdown","createComponent","tagName","elementClass","OramaMarkdownElement","react","React","events","onChatMarkdownLinkClicked","defineCustomElement","defineOramaMarkdown","OramaSearchBox","createComponent","tagName","elementClass","OramaSearchBoxElement","react","React","events","onSearchCompleted","onSearchResultClick","onClearChat","onStartConversation","onAnswerGenerated","onAnswerSourceClick","onChatMarkdownLinkClicked","onModalClosed","onModalStatusChanged","defineCustomElement","defineOramaSearchBox","OramaSearchButton","OramaSearchButtonElement","defineOramaSearchButton","globalScripts","__name","defineCustomElements","__name","win","options","globalScripts","bootstrapLazy","window","Reflect","customElements","a","HTMLElement","construct","constructor","prototype","Object","setPrototypeOf","styleInject"]}