{"version":3,"file":"js/9214.ecc672ff2c72beeb.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/help-center/composables/use-hc-search.ts","webpack://@sazka/web/./js/app/shared/utils/analytics/analytics-search.ts","webpack://@sazka/web/../../libs/design-system/src/loader/loader.ts","webpack://@sazka/web/../../libs/utils/debounce.ts","webpack://@sazka/web/../../libs/utils/document-ready.ts","webpack://@sazka/web/./js/app/help-center/components/_hc-search.vue?6055","webpack://@sazka/web/./js/app/help-center/components/_hc-search.vue","webpack://@sazka/web/./js/app/help-center/components/_hc-search.vue?f653"],"sourcesContent":["import { ref } from \"vue\";\r\nimport { ArticlePreviewDto } from \"../model/article\";\r\nimport { SearchAnalytics } from \"@/shared/utils/analytics/analytics-search\";\r\nimport { httpClient } from \"@sazka/utils/http-clients/http-client\";\r\n\r\nconst searchResultList = ref<ArticlePreviewDto[]>([]);\r\nconst searchText = ref(\"\");\r\nconst areSearchResultsVisible = ref(false);\r\n\r\nconst hideSearchResults = () => {\r\n    searchResultList.value = [];\r\n};\r\n\r\nconst fetch = async (searchText: string, topn = 10) => {\r\n    try {\r\n        const response = await httpClient.get<ArticlePreviewDto[]>(\r\n            `/api/help-center/search?searchText=${searchText}&topn=${topn}`\r\n        );\r\n        return response.data;\r\n    } catch (e) {\r\n        return [];\r\n    }\r\n};\r\n\r\nconst fetchAutocomplete = async (text: string) => {\r\n    return fetch(text);\r\n};\r\n\r\nconst fetchResults = async (text: string) => {\r\n    searchText.value = text;\r\n    if (!text) {\r\n        searchResultList.value = [];\r\n        areSearchResultsVisible.value = false;\r\n    } else {\r\n        searchResultList.value = await fetch(text, 20);\r\n        areSearchResultsVisible.value = true;\r\n    }\r\n    SearchAnalytics.pushSearchResults(\"help center\", text, searchResultList.value.length);\r\n};\r\n\r\nexport const useHcSearch = () => ({\r\n    searchText,\r\n    searchResultList,\r\n    areSearchResultsVisible,\r\n    fetchResults,\r\n    fetchAutocomplete,\r\n    hideSearchResults,\r\n});\r\n","export namespace SearchAnalytics {\r\n    export const pushSearchSuggester = (type: \"main\" | \"help center\", term: string, resultsCount: number) => {\r\n        dataLayer.push({\r\n            page: {\r\n                type: \"list.searchresults\",\r\n                kind: \"whisperer\",\r\n                list: {\r\n                    searchresults: {\r\n                        type: `${type} search`,\r\n                        term: term,\r\n                        resultCount: resultsCount,\r\n                    },\r\n                    pageNumber: 1,\r\n                },\r\n            },\r\n            event: \"page\",\r\n        });\r\n    };\r\n\r\n    export const pushSearchResults = (type: \"main\" | \"help center\", term: string, resultsCount: number) => {\r\n        dataLayer.push({\r\n            page: {\r\n                type: \"list.searchresults\",\r\n                kind: \"searchresults\",\r\n                list: {\r\n                    searchresults: {\r\n                        type: `${type} search`,\r\n                        term: term,\r\n                        resultCount: resultsCount,\r\n                    },\r\n                    pageNumber: 1,\r\n                },\r\n            },\r\n            event: \"pageReady\",\r\n        });\r\n    };\r\n\r\n    export const pushSuggesterClick = (category: string, name: string) => {\r\n        dataLayer.push({\r\n            event: \"action.click.search\",\r\n            action: {\r\n                click: {\r\n                    category: category,\r\n                    name: name,\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    export const pushResultsClick = (category: string, name: string) => {\r\n        dataLayer.push({\r\n            event: \"action.click.search\",\r\n            action: {\r\n                click: {\r\n                    category: category,\r\n                    name: name,\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    export const getVerticalByCategory = (category: string) => {\r\n        switch (category) {\r\n            case \"lottery\":\r\n                return \"loterie\";\r\n            case \"ticket\":\r\n                return \"losy\";\r\n            case \"kasino\":\r\n                return \"elosy\";\r\n            case \"game\":\r\n                return \"hry\";\r\n        }\r\n    };\r\n\r\n    export const getVerticalByUrl = (url: string) => {\r\n        if (url.startsWith(\"/loterie\")) {\r\n            return \"loterie\";\r\n        } else if (url.startsWith(\"/losy/stiraci-losy\")) {\r\n            return \"losy\";\r\n        } else if (url.startsWith(\"/losy\")) {\r\n            return \"elosy\";\r\n        } else if (url.startsWith(\"/hry\")) {\r\n            return \"hry\";\r\n        }\r\n\r\n        return \"\";\r\n    };\r\n}\r\n","import { documentReady } from \"@sazka/utils/document-ready\";\r\n\r\ndeclare const environment: any;\r\ntype ColorVariant = \"yellow\" | \"blue\";\r\n\r\n/**\r\n * Loader tells user, he has to wait for some ajax operation\r\n */\r\nexport class Loader {\r\n    private static showTimeout: number;\r\n    private static hideTimeout: number;\r\n    private static lockNumber = 0;\r\n    public static get isShown() {\r\n        return this.lockNumber > 0;\r\n    }\r\n\r\n    static {\r\n        // loader from backend\r\n        if (document.body) {\r\n            this.showLoaderFromBackend();\r\n        } else {\r\n            documentReady(() => {\r\n                this.showLoaderFromBackend();\r\n            });\r\n        }\r\n    }\r\n\r\n    static showLoaderFromBackend() {\r\n        if (document.body.classList.contains(\"loader\")) {\r\n            this.lockNumber++;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows loader after some time in miliseconds\r\n     * This is to reduce flickering when ajax actions are super-fast\r\n     *\r\n     * @param showLoaderIn Time in miliseconds, after which, loaded will be shown\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static show(showLoaderIn = 30, text?: string, aboveAll = false, color: ColorVariant = \"yellow\") {\r\n        this.clearTimeout();\r\n        this.lockNumber++;\r\n\r\n        this.showTimeout = window.setTimeout(() => {\r\n            this.showNow(text, aboveAll, true, color);\r\n        }, showLoaderIn);\r\n    }\r\n\r\n    /**\r\n     * Shows loader right away\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showNow(text?: string, aboveAll = false, counted = false, color: ColorVariant = \"yellow\") {\r\n        if (!counted) {\r\n            this.lockNumber++;\r\n        }\r\n\r\n        if (!environment.isEditMode) {\r\n            const loader = document.getElementById(\"loader\");\r\n\r\n            if (!loader) return;\r\n\r\n            if (aboveAll) {\r\n                loader.classList.add(\"loader--above-all\");\r\n            } else {\r\n                loader.classList.remove(\"loader--above-all\");\r\n            }\r\n            if (text) {\r\n                loader.querySelector(\".loader__text\").textContent = text;\r\n                loader.classList.add(\"loader--with-text\");\r\n            } else {\r\n                loader.querySelector(\".loader__text\").textContent = \"\";\r\n                loader.classList.remove(\"loader--with-text\");\r\n            }\r\n\r\n            if (color === \"blue\") {\r\n                loader.classList.add(\"loader--blue\");\r\n            }\r\n\r\n            document.body.classList.add(\"loader\", \"loader--fade-in\");\r\n            this.clearTimeout();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows loader after delay with z-index of 9999\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showAboveAll(showLoaderIn = 30, text?: string) {\r\n        this.show(showLoaderIn, text, true);\r\n    }\r\n\r\n    /**\r\n     * Shows loader right away with z-index of 9999\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showNowAboveAll(text?: string) {\r\n        this.showNow(text, true);\r\n    }\r\n\r\n    /**\r\n     * Hides loader\r\n     */\r\n    static hide() {\r\n        this.lockNumber--;\r\n        if (this.lockNumber > 0) return;\r\n\r\n        this.clearTimeout();\r\n        document.body.classList.remove(\"loader--fade-in\");\r\n        this.hideTimeout = window.setTimeout(() => {\r\n            document.body.classList.remove(\"loader\");\r\n            const loader = document.getElementById(\"loader\");\r\n            loader.querySelector(\".loader__text\").textContent = \"\";\r\n            loader.classList.remove(\"loader--with-text\");\r\n        }, 150);\r\n    }\r\n\r\n    private static clearTimeout() {\r\n        if (this.showTimeout) {\r\n            clearTimeout(this.showTimeout);\r\n            this.showTimeout = null;\r\n        }\r\n        if (this.hideTimeout) {\r\n            clearTimeout(this.hideTimeout);\r\n            this.hideTimeout = null;\r\n        }\r\n    }\r\n}\r\n","/**\r\n * Debounce function - use like this:\r\n * var handler = debounce(function(){ do the work}, 100);\r\n * $(window).scroll(handler);\r\n * @param func callback function\r\n * @param wait time in milliseconds to wait\r\n * @param immediate\r\n */\r\n\r\ntype CallbackFunction = (...args: any[]) => any;\r\n\r\nexport function debounce<T extends CallbackFunction>(func: T, wait: number, immediate = false) {\r\n    let timeout: number | null;\r\n\r\n    return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\r\n        /* eslint-disable @typescript-eslint/no-this-alias */\r\n        const context = this;\r\n        const later = function () {\r\n            timeout = null;\r\n            if (!immediate) func.apply(context, args);\r\n        };\r\n        const callNow = immediate && !timeout;\r\n        clearTimeout(timeout as number);\r\n        timeout = window.setTimeout(later, wait);\r\n        if (callNow) func.apply(context, args);\r\n    };\r\n}\r\n","/**\r\n * Vanila JS variant to jQuery $(() => {}).\r\n * @param {callback} callback\r\n * @example - documentReady(() => {}).\r\n * This function is binding to document.ready\r\n * */\r\nexport function documentReady(callback: () => void) {\r\n    if (document.readyState !== \"loading\") {\r\n        return callback();\r\n    } else {\r\n        document.addEventListener(\"DOMContentLoaded\", callback);\r\n    }\r\n}\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, vModelText as _vModelText, withModifiers as _withModifiers, withKeys as _withKeys, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"hc-header__search\" }\nconst _hoisted_2 = [\"aria-activedescendant\", \"aria-expanded\", \"placeholder\", \"onKeydown\"]\nconst _hoisted_3 = {\n  key: 0,\n  class: \"autocomplete__list\",\n  id: \"autocomplete-default__listbox\",\n  role: \"listbox\"\n}\nconst _hoisted_4 = [\"tabindex\", \"aria-selected\", \"aria-posinset\", \"aria-setsize\", \"id\", \"onClick\", \"onMouseenter\"]\nconst _hoisted_5 = [\"data-text\", \"innerHTML\"]\n\nimport { Loader } from \"@sazka/design-system/src/loader/loader\";\r\nimport { SearchAnalytics } from \"@/shared/utils/analytics/analytics-search\";\r\n// eslint-disable-next-line vue/no-dupe-keys\r\nimport { debounce } from \"@sazka/utils/debounce\";\r\nimport { UrlUtils } from \"@sazka/utils/url\";\r\nimport { computed, onMounted, onUnmounted, ref, watch } from \"vue\";\r\nimport { useHcSearch } from \"../composables/use-hc-search\";\r\nimport { ArticlePreviewDto } from \"../model/article\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: '_hc-search',\n  props: {\n    minInputLength: { default: 2 },\n    debounce: { default: 500 },\n    placeholder: {},\n    enableResultPage: { type: Boolean, default: true }\n  },\n  setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst { fetchResults, hideSearchResults, fetchAutocomplete } = useHcSearch();\r\n\r\nconst inputRef = ref<HTMLInputElement>(null);\r\nconst items = ref<ArticlePreviewDto[]>([]);\r\nconst isInputFocused = ref(false);\r\nconst searchText = ref(\"\");\r\nconst currentSelectionIndex = ref(null);\r\nconst isListVisible = computed(\r\n    () => isInputFocused.value && searchText.value.length >= props.minInputLength && items.value.length\r\n);\r\nconst currentSelection = computed(() =>\r\n    isListVisible.value && currentSelectionIndex.value < items.value.length\r\n        ? items.value[currentSelectionIndex.value]\r\n        : null\r\n);\r\n\r\nconst escapeRegExp = (string: string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst highlightTextMatch = (text: string) => {\r\n    const regexp = new RegExp(`(${escapeRegExp(searchText.value)})`, \"ig\");\r\n    return text.replace(regexp, \"<strong>$1</strong>\");\r\n};\r\n\r\nconst transformationHtml = (item: ArticlePreviewDto) =>\r\n    `<a href=\"${item.pageUrl.absolute}\">${highlightTextMatch(item.name)}</a>`;\r\nconst transformationText = (item: ArticlePreviewDto) => item.name;\r\n\r\nconst fetch = async () => {\r\n    if (searchText.value && searchText.value.length >= props.minInputLength) {\r\n        items.value = await fetchAutocomplete(searchText.value);\r\n    } else {\r\n        items.value = [];\r\n    }\r\n    SearchAnalytics.pushSearchSuggester(\"help center\", searchText.value, items.value.length);\r\n};\r\n\r\nconst selectItem = (item: ArticlePreviewDto) => {\r\n    SearchAnalytics.pushSuggesterClick(\"centrum podpory\", currentSelection.value.name);\r\n    searchText.value = transformationText(item);\r\n    window.location.href = currentSelection.value.pageUrl.absolute;\r\n    Loader.show();\r\n};\r\n\r\nconst onInput = () => {\r\n    currentSelectionIndex.value = null;\r\n};\r\n\r\nconst onFocus = () => {\r\n    isInputFocused.value = true;\r\n};\r\n\r\nconst onBlur = () => {\r\n    isInputFocused.value = false;\r\n};\r\n\r\nconst onArrowDown = () => {\r\n    if (!isListVisible.value) return;\r\n    if (currentSelectionIndex.value === null) currentSelectionIndex.value = 0;\r\n    else if (currentSelectionIndex.value < items.value.length - 1) currentSelectionIndex.value++;\r\n};\r\n\r\nconst onArrowUp = () => {\r\n    if (!isListVisible.value) return;\r\n    if (currentSelectionIndex.value === null) currentSelectionIndex.value = items.value.length - 1;\r\n    else if (currentSelectionIndex.value > 0) currentSelectionIndex.value--;\r\n    else currentSelectionIndex.value = null;\r\n};\r\n\r\nconst onEscapeDown = (e: KeyboardEvent) => {\r\n    if (e.key === \"Escape\") {\r\n        isInputFocused.value = false;\r\n    }\r\n};\r\n\r\nconst selectCurrentSelection = async () => {\r\n    if (currentSelection.value) {\r\n        selectItem(currentSelection.value);\r\n        hideSearchResults();\r\n    } else if (props.enableResultPage) {\r\n        try {\r\n            Loader.show();\r\n            await fetchResults(searchText.value);\r\n            inputRef.value.blur();\r\n        } finally {\r\n            Loader.hide();\r\n        }\r\n    } else {\r\n        Loader.show();\r\n        window.location.href = `/centrum-podpory?search-text=${searchText.value}`;\r\n    }\r\n};\r\n\r\nconst loadLinksDebounced = debounce(() => fetch(), props.debounce);\r\nwatch(searchText, loadLinksDebounced);\r\n\r\nonMounted(() => {\r\n    document.addEventListener(\"keydown\", (e) => onEscapeDown(e));\r\n    if (props.enableResultPage) {\r\n        const query = UrlUtils.getQueryString(\"search-text\");\r\n        if (query) {\r\n            searchText.value = query;\r\n            selectCurrentSelection();\r\n        }\r\n    }\r\n});\r\n\r\nonUnmounted(() => {\r\n    document.removeEventListener(\"keydown\", (e) => onEscapeDown(e));\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"label\", _hoisted_1, [\n    _createElementVNode(\"img\", {\n      class: \"ico-a-centrum-glass hc-header__search-icon\",\n      alt: \"\",\n      src: \"/frontend/web/img/help-center/centrum-glass.svg\",\n      onClick: _cache[0] || (_cache[0] = ($event: any) => (selectCurrentSelection()))\n    }),\n    _withDirectives(_createElementVNode(\"input\", {\n      type: \"text\",\n      role: \"combobox\",\n      \"aria-activedescendant\": \r\n                isListVisible.value && currentSelectionIndex.value ? `autocomplete-default__option--${currentSelectionIndex.value}` : null\r\n            ,\n      \"aria-expanded\": isListVisible.value ? true : false,\n      \"aria-owns\": \"autocomplete-default__listbox\",\n      \"aria-autocomplete\": \"list\",\n      autocomplete: \"off\",\n      class: \"hc-header__search-input form-control\",\n      ref_key: \"inputRef\",\n      ref: inputRef,\n      placeholder: _ctx.placeholder,\n      \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((searchText).value = $event)),\n      onInput: onInput,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      onKeydown: [\n        _withKeys(_withModifiers(onArrowDown, [\"prevent\"]), [\"down\"]),\n        _withKeys(_withModifiers(onArrowUp, [\"prevent\"]), [\"up\"]),\n        _withKeys(_withModifiers(selectCurrentSelection, [\"prevent\"]), [\"enter\"])\n      ]\n    }, null, 40, _hoisted_2), [\n      [_vModelText, searchText.value]\n    ]),\n    (isListVisible.value)\n      ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items.value, (item, index) => {\n            return (_openBlock(), _createElementBlock(\"li\", {\n              role: \"option\",\n              tabindex: currentSelectionIndex.value === index ? null : -1,\n              \"aria-selected\": currentSelectionIndex.value === index ? true : false,\n              \"aria-posinset\": index,\n              \"aria-setsize\": items.value.length,\n              id: `autocomplete-default__option--${index}`,\n              class: _normalizeClass([\"autocomplete__list-item\", { 'autocomplete__list-item--active': currentSelectionIndex.value === index }]),\n              key: index,\n              onMousedown: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"])),\n              onClick: ($event: any) => (selectItem(item)),\n              onMouseenter: ($event: any) => (currentSelectionIndex.value = index)\n            }, [\n              _createElementVNode(\"span\", {\n                class: \"autocomplete__list-item-text\",\n                \"data-text\": transformationText(item),\n                innerHTML: transformationHtml(item)\n              }, null, 8, _hoisted_5)\n            ], 42, _hoisted_4))\n          }), 128))\n        ]))\n      : _createCommentVNode(\"\", true)\n  ]))\n}\n}\n\n})","<template>\r\n    <label class=\"hc-header__search\">\r\n        <img\r\n            class=\"ico-a-centrum-glass hc-header__search-icon\"\r\n            alt=\"\"\r\n            src=\"/frontend/web/img/help-center/centrum-glass.svg\"\r\n            @click=\"selectCurrentSelection()\"\r\n        />\r\n        <!-- https://alphagov.github.io/accessible-autocomplete/examples/ -->\r\n        <input\r\n            type=\"text\"\r\n            role=\"combobox\"\r\n            :aria-activedescendant=\"\r\n                isListVisible && currentSelectionIndex ? `autocomplete-default__option--${currentSelectionIndex}` : null\r\n            \"\r\n            :aria-expanded=\"isListVisible ? true : false\"\r\n            aria-owns=\"autocomplete-default__listbox\"\r\n            aria-autocomplete=\"list\"\r\n            autocomplete=\"off\"\r\n            class=\"hc-header__search-input form-control\"\r\n            ref=\"inputRef\"\r\n            :placeholder=\"placeholder\"\r\n            v-model=\"searchText\"\r\n            @input=\"onInput\"\r\n            @focus=\"onFocus\"\r\n            @blur=\"onBlur\"\r\n            @keydown.down.prevent=\"onArrowDown\"\r\n            @keydown.up.prevent=\"onArrowUp\"\r\n            @keydown.enter.prevent=\"selectCurrentSelection\"\r\n        />\r\n        <ul v-if=\"isListVisible\" class=\"autocomplete__list\" id=\"autocomplete-default__listbox\" role=\"listbox\">\r\n            <li\r\n                v-for=\"(item, index) in items\"\r\n                role=\"option\"\r\n                :tabindex=\"currentSelectionIndex === index ? null : -1\"\r\n                :aria-selected=\"currentSelectionIndex === index ? true : false\"\r\n                :aria-posinset=\"index\"\r\n                :aria-setsize=\"items.length\"\r\n                :id=\"`autocomplete-default__option--${index}`\"\r\n                class=\"autocomplete__list-item\"\r\n                :class=\"{ 'autocomplete__list-item--active': currentSelectionIndex === index }\"\r\n                :key=\"index\"\r\n                @mousedown.prevent\r\n                @click=\"selectItem(item)\"\r\n                @mouseenter=\"currentSelectionIndex = index\"\r\n            >\r\n                <span\r\n                    class=\"autocomplete__list-item-text\"\r\n                    :data-text=\"transformationText(item)\"\r\n                    v-html=\"transformationHtml(item)\"\r\n                ></span>\r\n            </li>\r\n        </ul>\r\n    </label>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { Loader } from \"@sazka/design-system/src/loader/loader\";\r\nimport { SearchAnalytics } from \"@/shared/utils/analytics/analytics-search\";\r\n// eslint-disable-next-line vue/no-dupe-keys\r\nimport { debounce } from \"@sazka/utils/debounce\";\r\nimport { UrlUtils } from \"@sazka/utils/url\";\r\nimport { computed, onMounted, onUnmounted, ref, watch } from \"vue\";\r\nimport { useHcSearch } from \"../composables/use-hc-search\";\r\nimport { ArticlePreviewDto } from \"../model/article\";\r\n\r\nconst props = withDefaults(\r\n    defineProps<{\r\n        minInputLength: number;\r\n        debounce: number;\r\n        placeholder: string;\r\n        enableResultPage: boolean;\r\n    }>(),\r\n    {\r\n        minInputLength: 2,\r\n        debounce: 500,\r\n        enableResultPage: true,\r\n    }\r\n);\r\n\r\nconst { fetchResults, hideSearchResults, fetchAutocomplete } = useHcSearch();\r\n\r\nconst inputRef = ref<HTMLInputElement>(null);\r\nconst items = ref<ArticlePreviewDto[]>([]);\r\nconst isInputFocused = ref(false);\r\nconst searchText = ref(\"\");\r\nconst currentSelectionIndex = ref(null);\r\nconst isListVisible = computed(\r\n    () => isInputFocused.value && searchText.value.length >= props.minInputLength && items.value.length\r\n);\r\nconst currentSelection = computed(() =>\r\n    isListVisible.value && currentSelectionIndex.value < items.value.length\r\n        ? items.value[currentSelectionIndex.value]\r\n        : null\r\n);\r\n\r\nconst escapeRegExp = (string: string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst highlightTextMatch = (text: string) => {\r\n    const regexp = new RegExp(`(${escapeRegExp(searchText.value)})`, \"ig\");\r\n    return text.replace(regexp, \"<strong>$1</strong>\");\r\n};\r\n\r\nconst transformationHtml = (item: ArticlePreviewDto) =>\r\n    `<a href=\"${item.pageUrl.absolute}\">${highlightTextMatch(item.name)}</a>`;\r\nconst transformationText = (item: ArticlePreviewDto) => item.name;\r\n\r\nconst fetch = async () => {\r\n    if (searchText.value && searchText.value.length >= props.minInputLength) {\r\n        items.value = await fetchAutocomplete(searchText.value);\r\n    } else {\r\n        items.value = [];\r\n    }\r\n    SearchAnalytics.pushSearchSuggester(\"help center\", searchText.value, items.value.length);\r\n};\r\n\r\nconst selectItem = (item: ArticlePreviewDto) => {\r\n    SearchAnalytics.pushSuggesterClick(\"centrum podpory\", currentSelection.value.name);\r\n    searchText.value = transformationText(item);\r\n    window.location.href = currentSelection.value.pageUrl.absolute;\r\n    Loader.show();\r\n};\r\n\r\nconst onInput = () => {\r\n    currentSelectionIndex.value = null;\r\n};\r\n\r\nconst onFocus = () => {\r\n    isInputFocused.value = true;\r\n};\r\n\r\nconst onBlur = () => {\r\n    isInputFocused.value = false;\r\n};\r\n\r\nconst onArrowDown = () => {\r\n    if (!isListVisible.value) return;\r\n    if (currentSelectionIndex.value === null) currentSelectionIndex.value = 0;\r\n    else if (currentSelectionIndex.value < items.value.length - 1) currentSelectionIndex.value++;\r\n};\r\n\r\nconst onArrowUp = () => {\r\n    if (!isListVisible.value) return;\r\n    if (currentSelectionIndex.value === null) currentSelectionIndex.value = items.value.length - 1;\r\n    else if (currentSelectionIndex.value > 0) currentSelectionIndex.value--;\r\n    else currentSelectionIndex.value = null;\r\n};\r\n\r\nconst onEscapeDown = (e: KeyboardEvent) => {\r\n    if (e.key === \"Escape\") {\r\n        isInputFocused.value = false;\r\n    }\r\n};\r\n\r\nconst selectCurrentSelection = async () => {\r\n    if (currentSelection.value) {\r\n        selectItem(currentSelection.value);\r\n        hideSearchResults();\r\n    } else if (props.enableResultPage) {\r\n        try {\r\n            Loader.show();\r\n            await fetchResults(searchText.value);\r\n            inputRef.value.blur();\r\n        } finally {\r\n            Loader.hide();\r\n        }\r\n    } else {\r\n        Loader.show();\r\n        window.location.href = `/centrum-podpory?search-text=${searchText.value}`;\r\n    }\r\n};\r\n\r\nconst loadLinksDebounced = debounce(() => fetch(), props.debounce);\r\nwatch(searchText, loadLinksDebounced);\r\n\r\nonMounted(() => {\r\n    document.addEventListener(\"keydown\", (e) => onEscapeDown(e));\r\n    if (props.enableResultPage) {\r\n        const query = UrlUtils.getQueryString(\"search-text\");\r\n        if (query) {\r\n            searchText.value = query;\r\n            selectCurrentSelection();\r\n        }\r\n    }\r\n});\r\n\r\nonUnmounted(() => {\r\n    document.removeEventListener(\"keydown\", (e) => onEscapeDown(e));\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.hc-header__search {\r\n    position: relative;\r\n}\r\n\r\n.autocomplete__list {\r\n    position: absolute;\r\n    top: calc(100% + 4px);\r\n    box-shadow: 0px 10px 24px -6px rgba(0, 0, 0, 0.12);\r\n    padding: $sp-container-inset-small;\r\n    background-color: #fff;\r\n    left: 0;\r\n    right: 0;\r\n    border-radius: $radius-xxs;\r\n    list-style: none;\r\n}\r\n\r\n.autocomplete__list-item {\r\n    a {\r\n        text-decoration: none;\r\n        color: $color-text;\r\n    }\r\n\r\n    &--active {\r\n        text-decoration: underline;\r\n\r\n        a {\r\n            color: $blue;\r\n        }\r\n    }\r\n}\r\n</style>\r\n","import script from \"./_hc-search.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./_hc-search.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./_hc-search.vue?vue&type=style&index=0&id=555fa5d8&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__"],"names":["searchResultList","ref","searchText","areSearchResultsVisible","hideSearchResults","value","fetch","async","topn","response","httpClient","get","data","e","fetchAutocomplete","text","fetchResults","SearchAnalytics","pushSearchResults","length","useHcSearch","pushSearchSuggester","type","term","resultsCount","dataLayer","push","page","kind","list","searchresults","resultCount","pageNumber","event","pushSuggesterClick","category","name","action","click","pushResultsClick","getVerticalByCategory","getVerticalByUrl","url","startsWith","Loader","isShown","this","lockNumber","showLoaderFromBackend","document","body","classList","contains","show","showLoaderIn","aboveAll","color","clearTimeout","showTimeout","window","setTimeout","showNow","counted","environment","isEditMode","loader","getElementById","add","remove","querySelector","textContent","showAboveAll","showNowAboveAll","hide","hideTimeout","_defineProperty","_Loader","documentReady","debounce","func","wait","immediate","timeout","args","context","later","apply","callNow","callback","readyState","addEventListener","_hoisted_1","class","_hoisted_2","_hoisted_3","key","id","role","_hoisted_4","_hoisted_5","_defineComponent","__name","props","minInputLength","default","placeholder","enableResultPage","Boolean","setup","__props","inputRef","items","isInputFocused","currentSelectionIndex","isListVisible","computed","currentSelection","escapeRegExp","string","replace","highlightTextMatch","regexp","RegExp","transformationHtml","item","pageUrl","absolute","transformationText","selectItem","location","href","onInput","onFocus","onBlur","onArrowDown","onArrowUp","onEscapeDown","selectCurrentSelection","blur","loadLinksDebounced","watch","onMounted","query","UrlUtils","getQueryString","onUnmounted","removeEventListener","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","alt","src","onClick","$event","_withDirectives","autocomplete","ref_key","onKeydown","_withKeys","_withModifiers","_vModelText","_Fragment","_renderList","index","tabindex","_normalizeClass","onMousedown","onMouseenter","innerHTML","_createCommentVNode","__exports__"],"sourceRoot":""}