{"version":3,"file":"contentCollectionView.obs.js","sources":["../../src/Cms/ContentCollectionView/filter.partial.obs","../../src/Cms/ContentCollectionView/filtersContainer.partial.obs","../../src/Cms/ContentCollectionView/types.partial.ts","../../src/Cms/contentCollectionView.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div :class=\"filterClass\">\r\n        <div v-if=\"headerMarkup\" class=\"filter-header\" v-html=\"headerMarkup\"></div>\r\n\r\n        <CheckBoxList v-if=\"isPills && isMultiSelect\"\r\n                      :label=\"label\"\r\n                      v-model=\"multipleValue\"\r\n                      :items=\"items\"\r\n                      horizontal />\r\n\r\n        <RadioButtonList v-if=\"isPills && !isMultiSelect\"\r\n                         :label=\"label\"\r\n                         v-model=\"singleValue\"\r\n                         :items=\"items\"\r\n                         horizontal />\r\n\r\n        <DropDownList v-if=\"isDropDownList && isMultiSelect\"\r\n                      :label=\"label\"\r\n                      v-model=\"multipleValue\"\r\n                      :items=\"items\"\r\n                      multiple />\r\n\r\n        <DropDownList v-if=\"isDropDownList && !isMultiSelect\"\r\n                      :label=\"label\"\r\n                      v-model=\"singleValue\"\r\n                      :items=\"items\" />\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref, watch } from \"vue\";\r\n    import CheckBoxList from \"@Obsidian/Controls/checkBoxList.obs\";\r\n    import DropDownList from \"@Obsidian/Controls/dropDownList.obs\";\r\n    import RadioButtonList from \"@Obsidian/Controls/radioButtonList.obs\";\r\n    import { SearchFilterBag } from \"@Obsidian/ViewModels/Blocks/Cms/ContentCollectionView/searchFilterBag\";\r\n    import { ContentCollectionFilterControl } from \"@Obsidian/Enums/Cms/contentCollectionFilterControl\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<string>,\r\n            required: true\r\n        },\r\n\r\n        filter: {\r\n            type: Object as PropType<SearchFilterBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: string): void;\r\n    }>();\r\n\r\n    const singleValue = ref(props.modelValue);\r\n    const multipleValue = ref(props.modelValue.split(\",\"));\r\n\r\n    const filterClass = computed((): string => {\r\n        const filterSlugName = props.filter.label?.replace(/[^a-zA-Z0-9 ]/g, \"\").replace(/ /g, \"-\").toLowerCase() ?? \"\";\r\n\r\n        return `filter filter-${filterSlugName}`;\r\n    });\r\n\r\n    const headerMarkup = computed((): string => {\r\n        return props.filter.headerMarkup ?? \"\";\r\n    });\r\n\r\n    const items = computed((): ListItemBag[] => {\r\n        // If this is goind to render as radio items then we need an All option.\r\n        if (isPills.value && !isMultiSelect.value) {\r\n            const radioItems = [...(props.filter.items ?? [])];\r\n\r\n            radioItems.splice(0, 0, {\r\n                value: \"\",\r\n                text: \"All\"\r\n            });\r\n\r\n            return radioItems;\r\n        }\r\n\r\n        return props.filter.items ?? [];\r\n    });\r\n\r\n    const isMultiSelect = computed((): boolean => {\r\n        return props.filter.isMultipleSelection;\r\n    });\r\n\r\n    const isDropDownList = computed((): boolean => {\r\n        return props.filter.control === ContentCollectionFilterControl.Dropdown;\r\n    });\r\n\r\n    const isPills = computed((): boolean => {\r\n        return props.filter.control === ContentCollectionFilterControl.Pills;\r\n    });\r\n\r\n    const label = computed((): string => {\r\n        return props.filter.label ?? \"\";\r\n    });\r\n\r\n    watch(() => props.modelValue, () => {\r\n        singleValue.value = props.modelValue;\r\n        multipleValue.value = props.modelValue.split(\",\");\r\n    });\r\n\r\n    watch(singleValue, () => {\r\n        if (props.modelValue !== singleValue.value) {\r\n            emit(\"update:modelValue\", singleValue.value);\r\n        }\r\n    });\r\n\r\n    watch(multipleValue, () => {\r\n        if (props.modelValue !== multipleValue.value.join(\",\")) {\r\n            emit(\"update:modelValue\", multipleValue.value.join(\",\"));\r\n        }\r\n    });\r\n</script>\r\n","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div class=\"collectionsearch-filters\">\r\n        <h4 class=\"title\">Filter By</h4>\r\n\r\n        <Filter v-for=\"item in filters\"\r\n                :modelValue=\"getFilterValue(item)\"\r\n                @update:modelValue=\"setFilterValue(item, $event)\"\r\n                :filter=\"item\" />\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType, ref, watch } from \"vue\";\r\n    import { SearchFilterBag } from \"@Obsidian/ViewModels/Blocks/Cms/ContentCollectionView/searchFilterBag\";\r\n    import { updateRefValue } from \"@Obsidian/Utility/component\";\r\n    import Filter from \"./filter.partial.obs\";\r\n\r\n    const props = defineProps({\r\n        filters: {\r\n            type: Array as PropType<SearchFilterBag[]>,\r\n            required: true\r\n        },\r\n\r\n        filterValues: {\r\n            type: Object as PropType<Record<string, string>>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:filterValues\", value: Record<string, string>): void;\r\n    }>();\r\n\r\n    const filterValues = ref<Record<string, string>>(props.filterValues);\r\n\r\n    const getFilterValue = (filter: SearchFilterBag): string => {\r\n        return filterValues.value[(filter.label ?? \"\").toLowerCase()] ?? \"\";\r\n    };\r\n\r\n    const setFilterValue = (filter: SearchFilterBag, value: string): void => {\r\n        const newValues = { ...filterValues.value };\r\n        newValues[(filter.label ?? \"\").toLowerCase()] = value;\r\n        filterValues.value = newValues;\r\n\r\n        emit(\"update:filterValues\", newValues);\r\n    };\r\n\r\n    watch(() => props.filterValues, () => {\r\n        updateRefValue(filterValues, props.filterValues);\r\n    });\r\n</script>\r\n","// <copyright>\r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// </copyright>\r\n//\r\n\r\nexport const enum SortOrdersKey {\r\n    Relevance = \"relevance\",\r\n    Newest = \"newest\",\r\n    Oldest = \"oldest\",\r\n    Trending = \"trending\",\r\n    Alphabetical = \"alphabetical\"\r\n}\r\n","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"blockError\" alertType=\"warning\" v-text=\"blockError\" />\r\n\r\n    <div v-if=\"!blockError\" class=\"collectionsearch\">\r\n        <div v-if=\"showFullTextSearch\" class=\"collectionsearch-fulltext\">\r\n            <div ref=\"searchContainerElement\" class=\"content\">\r\n                <div class=\"search-fulltext\">\r\n                    <TextBox v-model=\"query\" placeholder=\"What can we help you find?\">\r\n                        <template #inputGroupPrepend>\r\n                            <div class=\"input-group-addon\">\r\n                                <i class=\"fa fa-search\"></i>\r\n                            </div>\r\n                        </template>\r\n                        <template #inputGroupAppend>\r\n                            <div v-if=\"query\" class=\"input-group-addon\">\r\n                                <i class=\"fa fa-times clickable\" @click=\"onClearClick\"></i>\r\n                            </div>\r\n                        </template>\r\n                    </TextBox>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <FiltersContainer v-if=\"showFiltersPanel\" :filters=\"filters\" v-model:filterValues=\"filterValues\" />\r\n\r\n        <div class=\"collectionsearch-results\">\r\n            <div class=\"results-header\">\r\n                <div class=\"results-count\">\r\n                    Results <span class=\"results-count-number\">{{ totalResultsCount }}</span>\r\n                </div>\r\n\r\n                <div v-if=\"showSort\" class=\"results-order\">\r\n                    <DropDownList v-model=\"sortOrder\" :items=\"sortOrderItems\" :showBlankItem=\"false\" />\r\n                </div>\r\n            </div>\r\n\r\n            <div ref=\"searchResultContainerElement\">\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { onMounted, ref, shallowRef, watch } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import DropDownList from \"@Obsidian/Controls/dropDownList.obs\";\r\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\r\n    import { dispatchBlockEvent, getSecurityGrant, provideSecurityGrant, useBlockGuid, useConfigurationValues, useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\n    import { debounce } from \"@Obsidian/Utility/util\";\r\n    import { SearchOrder } from \"@Obsidian/Enums/Blocks/Cms/ContentCollectionView/searchOrder\";\r\n    import { ContentCollectionInitializationBox } from \"@Obsidian/ViewModels/Blocks/Cms/ContentCollectionView/contentCollectionInitializationBox\";\r\n    import { SearchResultBag } from \"@Obsidian/ViewModels/Blocks/Cms/ContentCollectionView/searchResultBag\";\r\n    import { SearchQueryBag } from \"@Obsidian/ViewModels/Blocks/Cms/ContentCollectionView/searchQueryBag\";\r\n    import FiltersContainer from \"./ContentCollectionView/filtersContainer.partial.obs\";\r\n    import { Guid } from \"@Obsidian/Types\";\r\n    import { toNumber } from \"@Obsidian/Utility/numberUtils\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n    import { emptyGuid } from \"@Obsidian/Utility/guid\";\r\n    import { SortOrdersKey } from \"./ContentCollectionView/types.partial\";\r\n\r\n    const config = useConfigurationValues<ContentCollectionInitializationBox>();\r\n    const invokeBlockAction = useInvokeBlockAction();\r\n    const blockGuid = useBlockGuid() ?? emptyGuid;\r\n    const securityGrant = getSecurityGrant(config.securityGrantToken);\r\n\r\n    // #region Values\r\n\r\n    const urlSearchParams = new URLSearchParams(window.location.search);\r\n\r\n    const blockError = ref(config.errorMessage);\r\n    const filters = config.filters ?? [];\r\n    const searchContainerElement = shallowRef<HTMLElement | null>(null);\r\n    const searchResultContainerElement = shallowRef<HTMLElement | null>(null);\r\n    const query = ref(urlSearchParams.get(\"q\") || urlSearchParams.get(\"Q\") || \"\");\r\n    const filterValues = ref<Record<string, string>>(getQueryStringFilterValues(filters.map(f => f.label ?? \"\")));\r\n    const sortOrder = ref(urlSearchParams.get(\"s\") || urlSearchParams.get(\"S\") || SearchOrder.Relevance.toString());\r\n    const sortOrderItems = getSortOrderItems(config.enabledSortOrders ?? [], config.trendingTerm ?? \"Trending\");\r\n    const totalResultsCount = ref(config.initialResults?.totalResultCount ?? 0);\r\n    const showSort = ref(config.showSort);\r\n    const showFiltersPanel = ref(config.showFiltersPanel);\r\n    const showFullTextSearch = ref(config.showFullTextSearch);\r\n\r\n    // #endregion\r\n\r\n    // #region Computed Values\r\n\r\n    // #endregion\r\n\r\n    // #region Functions\r\n\r\n    /**\r\n     * Parses the window query string into the initial filter values that will be used.\r\n     *\r\n     * @param filterNames The names of the filters that are known by this block instance.\r\n     *\r\n     * @returns An object that contains the query string values that match a filter.\r\n     */\r\n    function getQueryStringFilterValues(filterNames: string[]): Record<string, string> {\r\n        const params: Record<string, string> = {};\r\n\r\n        for (const entry of new URLSearchParams(window.location.search).entries()) {\r\n            if (filterNames.some(n => n.toLowerCase() === entry[0].toLowerCase()) && entry[1] !== \"\") {\r\n                params[entry[0].toLowerCase()] = entry[1];\r\n            }\r\n        }\r\n\r\n        return params;\r\n    }\r\n\r\n    /**\r\n     * Updates the window query string to match the search parameters.\r\n     *\r\n     * @param query The full-text query that was performed.\r\n     * @param sortOrder The current sorting order applied to the results.\r\n     * @param filterValues The values of the various filters.\r\n     * @param filterNames The names of all known filters, this is used to include any additional query string parameters that we don't understand.\r\n     */\r\n    function updateUrl(query: string, sortOrder: string, filterValues: Record<string, string>, filterNames: string[]): void {\r\n        const qs: string[][] = [];\r\n\r\n        // Add in the query text.\r\n        if (query) {\r\n            qs.push([\"q\", query]);\r\n        }\r\n\r\n        // Add in the sort order if it isn't default.\r\n        if (sortOrder != SearchOrder.Relevance.toString()) {\r\n            qs.push([\"s\", sortOrder.toString()]);\r\n        }\r\n\r\n        // Add in all the filter values if they are not blank.\r\n        for (const key in filterValues) {\r\n            if (filterValues[key]) {\r\n                qs.push([key, filterValues[key]]);\r\n            }\r\n        }\r\n\r\n        // Add in any query string parameters not related to us.\r\n        for (const entry of new URLSearchParams(window.location.search).entries()) {\r\n            const entryName = entry[0].toLowerCase();\r\n\r\n            // Skip our special query string parameters.\r\n            if (entryName === \"q\" || entryName === \"s\") {\r\n                continue;\r\n            }\r\n\r\n            if (!filterNames.some(n => n.toLowerCase() === entryName)) {\r\n                qs.push([entry[0].toLowerCase(), entry[1]]);\r\n            }\r\n        }\r\n\r\n        // Update the URL in the window.\r\n        if (qs.length > 0) {\r\n            const querystring = qs.map(q => `${q[0]}=${q[1]}`).join(\"&\");\r\n            window.history.replaceState(null, \"\", `${window.location.pathname}?${querystring}`);\r\n        }\r\n        else {\r\n            window.history.replaceState(null, \"\", window.location.pathname);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the results element with additional data from the search result bag.\r\n     *\r\n     * @param resultsContainerElement The element that will contain all results.\r\n     * @param results The results that were returned by the server.\r\n     * @param seeMore The callback to use when the js-more element is clicked.\r\n     */\r\n    function updateResults(resultsContainerElement: HTMLElement, results: SearchResultBag, seeMore: ((sourceGuid: Guid) => void)): void {\r\n        for (const resultSource of results.resultSources ?? []) {\r\n            const sourceGuid = resultSource.sourceGuid;\r\n\r\n            if (!sourceGuid) {\r\n                continue;\r\n            }\r\n\r\n            let sourceContainerElement = resultsContainerElement.querySelector<HTMLDivElement>(`.result-source-${sourceGuid.toLowerCase()}`);\r\n\r\n            if (!sourceContainerElement) {\r\n                sourceContainerElement = document.createElement(\"div\");\r\n                sourceContainerElement.classList.add(\"results\", `result-source-${sourceGuid.toLowerCase()}`);\r\n                sourceContainerElement.innerHTML = resultSource.template ?? \"\";\r\n\r\n                const newSeeMoreElement = sourceContainerElement.querySelector(\".js-more\");\r\n                if (newSeeMoreElement) {\r\n                    newSeeMoreElement.addEventListener(\"click\", (e) => {\r\n                        e.preventDefault();\r\n                        seeMore(sourceGuid);\r\n                    });\r\n                }\r\n\r\n                resultsContainerElement.append(sourceContainerElement);\r\n            }\r\n\r\n            const resultItemsElement = sourceContainerElement.querySelector(\".result-items\");\r\n\r\n            if (!resultItemsElement) {\r\n                continue;\r\n            }\r\n\r\n            // Add each item from the results to the result container.\r\n            for (const item of resultSource.results ?? []) {\r\n                const itemElement = document.createElement(\"div\");\r\n                itemElement.innerHTML = item;\r\n\r\n                for (const innerElement of Array.from(itemElement.children)) {\r\n                    innerElement.remove();\r\n                    resultItemsElement.append(innerElement);\r\n                }\r\n\r\n                const resultItemCount = toNumber(sourceContainerElement.dataset[\"resultItemCount\"]) + 1;\r\n                sourceContainerElement.dataset[\"resultItemCount\"] = resultItemCount.toString();\r\n            }\r\n\r\n            // If there are no more results to load then hide the see more element.\r\n            const seeMoreElement = sourceContainerElement.querySelector(\".js-more\");\r\n            if (seeMoreElement && !resultSource.hasMore) {\r\n                seeMoreElement.classList.add(\"hidden\");\r\n            }\r\n\r\n            // If there are no results then add a \"no-results\" class to the source.\r\n            if (!toNumber(sourceContainerElement.dataset[\"resultItemCount\"])) {\r\n                sourceContainerElement.classList.add(\"no-results\");\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the sort order items that can be selected by the person.\r\n     *\r\n     * @param allowed The allowed item names.\r\n     *\r\n     * @returns A list of items that can be selected.\r\n     */\r\n    function getSortOrderItems(allowed: string[], trendingTerm: string): ListItemBag[] {\r\n        /** The sort order items that can be selected by the person. */\r\n        const sortOrderItems: ListItemBag[] = [];\r\n\r\n        if (allowed.includes(SortOrdersKey.Relevance)) {\r\n            sortOrderItems.push({\r\n                value: SearchOrder.Relevance.toString(),\r\n                text: \"Relevance\"\r\n            });\r\n        }\r\n\r\n        if (allowed.includes(SortOrdersKey.Newest)) {\r\n            sortOrderItems.push({\r\n                value: SearchOrder.Newest.toString(),\r\n                text: \"Newest\"\r\n            });\r\n        }\r\n\r\n        if (allowed.includes(SortOrdersKey.Oldest)) {\r\n            sortOrderItems.push({\r\n                value: SearchOrder.Oldest.toString(),\r\n                text: \"Oldest\"\r\n            });\r\n        }\r\n\r\n        if (allowed.includes(SortOrdersKey.Trending)) {\r\n            sortOrderItems.push({\r\n                value: SearchOrder.Trending.toString(),\r\n                text: trendingTerm\r\n            });\r\n        }\r\n\r\n        if (allowed.includes(SortOrdersKey.Alphabetical)) {\r\n            sortOrderItems.push({\r\n                value: SearchOrder.Alphabetical.toString(),\r\n                text: \"Alphabetical\"\r\n            });\r\n        }\r\n\r\n        return sortOrderItems;\r\n    }\r\n\r\n    /**\r\n     * Call the block action to perform the search and then update\r\n     * the DOM with the results of the search.\r\n     *\r\n     * @param sourceGuid The unique identifier of the source we are loading more results for.\r\n     * @param offset The offset into the source's results to load from.\r\n     */\r\n    const performSearch = async (sourceGuid?: Guid, offset?: number): Promise<void> => {\r\n        // Update the URL to match this search.\r\n        updateUrl(query.value, sortOrder.value, filterValues.value, filters.map(f => f.label ?? \"\"));\r\n\r\n        const queryBag: SearchQueryBag = {\r\n            text: query.value,\r\n            filters: filterValues.value,\r\n            sourceGuid: sourceGuid,\r\n            offset: offset,\r\n            order: toNumber(sortOrder.value) as SearchOrder\r\n        };\r\n\r\n        const data = {\r\n            query: queryBag\r\n        };\r\n\r\n        const result = await invokeBlockAction<SearchResultBag>(\"Search\", data);\r\n\r\n        if (result.isSuccess && result.data != null) {\r\n            totalResultsCount.value = result.data.totalResultCount;\r\n            processResults(result.data, !offset, sourceGuid);\r\n        }\r\n        else {\r\n            console.error(result.errorMessage || \"Unable to complete the search request.\");\r\n        }\r\n    };\r\n\r\n    /**\r\n     * Process the results received from the search request by updating\r\n     * the DOM with the additional results.\r\n     *\r\n     * @param data The data that contains the search results.\r\n     * @param initialResults True if this call is for initial results being loaded.\r\n     * @param sourceGuid The unique identifier of the source we are loading additional results for.\r\n     */\r\n    const processResults = (data: SearchResultBag, initialResults: boolean, sourceGuid?: Guid): void => {\r\n        if (!searchResultContainerElement.value) {\r\n            return;\r\n        }\r\n\r\n        if (initialResults) {\r\n            searchResultContainerElement.value.innerHTML = \"\";\r\n        }\r\n\r\n        updateResults(searchResultContainerElement.value, data, onLoadMore);\r\n\r\n        if (initialResults) {\r\n            dispatchBlockEvent(\"content-collection-view-full-search\", blockGuid);\r\n        }\r\n        else if (sourceGuid) {\r\n            dispatchBlockEvent(\"content-collection-view-results-updated\", blockGuid, {\r\n                sourceGuid\r\n            });\r\n        }\r\n    };\r\n\r\n    // #endregion\r\n\r\n    // #region Event Handlers\r\n\r\n    /**\r\n     * Called when a \"see more\" button has been clicked and the person\r\n     * wants to load more results for the source.\r\n     *\r\n     * @param sourceGuid\r\n     */\r\n    const onLoadMore = async (sourceGuid: Guid): Promise<void> => {\r\n        if (!searchResultContainerElement.value) {\r\n            return;\r\n        }\r\n\r\n        const sourceContainerElement = searchResultContainerElement.value.querySelector<HTMLDivElement>(`.result-source-${sourceGuid.toLowerCase()}`);\r\n        if (!sourceContainerElement) {\r\n            return;\r\n        }\r\n\r\n        const itemCount = toNumber(sourceContainerElement.dataset[\"resultItemCount\"]);\r\n        await performSearch(sourceGuid, itemCount);\r\n    };\r\n\r\n    /**\r\n     * Event handler for when the individual clicks the clear button in\r\n     * the query text box.\r\n     */\r\n    function onClearClick(): void {\r\n        query.value = \"\";\r\n\r\n        const inputElement = searchContainerElement.value?.querySelector(\"input\");\r\n\r\n        if (inputElement) {\r\n            inputElement.focus();\r\n        }\r\n    }\r\n\r\n    // #endregion\r\n\r\n    provideSecurityGrant(securityGrant);\r\n\r\n    const debounceSearch = debounce(performSearch, 450);\r\n\r\n    // Any time the query text changes, perform a new search on a 450ms\r\n    // delayed debounce timer.\r\n    watch(query, () => {\r\n        debounceSearch();\r\n    });\r\n\r\n    // If any of the other filter values change, perform a new search immediately.\r\n    watch([filterValues, sortOrder], () => {\r\n        performSearch();\r\n    });\r\n\r\n    onMounted(() => {\r\n        const inputElement = searchContainerElement.value?.querySelector(\"input\");\r\n\r\n        if (inputElement) {\r\n            inputElement.focus();\r\n        }\r\n\r\n        if (searchResultContainerElement.value) {\r\n            if (config.initialResults) {\r\n                processResults(config.initialResults, true);\r\n            }\r\n            else if (config.preSearchContent) {\r\n                searchResultContainerElement.value.innerHTML = config.preSearchContent;\r\n            }\r\n        }\r\n    });\r\n</script>\r\n"],"names":["singleValue","ref","props","modelValue","multipleValue","split","filterClass","computed","_props$filter$label$r","_props$filter$label","filterSlugName","filter","label","replace","toLowerCase","concat","headerMarkup","_props$filter$headerM","items","_props$filter$items2","isPills","value","isMultiSelect","_props$filter$items","radioItems","splice","text","isMultipleSelection","isDropDownList","control","ContentCollectionFilterControl","Dropdown","Pills","_props$filter$label2","watch","emit","join","filterValues","getFilterValue","_filterValues$value$t","_filter$label","setFilterValue","_filter$label2","newValues","_objectSpread","updateRefValue","SortOrdersKey","config","useConfigurationValues","invokeBlockAction","useInvokeBlockAction","blockGuid","_useBlockGuid","useBlockGuid","emptyGuid","securityGrant","getSecurityGrant","securityGrantToken","urlSearchParams","URLSearchParams","window","location","search","blockError","errorMessage","filters","_config$filters","searchContainerElement","shallowRef","searchResultContainerElement","query","get","getQueryStringFilterValues","map","f","_f$label","sortOrder","SearchOrder","Relevance","toString","sortOrderItems","getSortOrderItems","_config$enabledSortOr","enabledSortOrders","_config$trendingTerm","trendingTerm","totalResultsCount","_config$initialResult","_config$initialResult2","initialResults","totalResultCount","showSort","showFiltersPanel","showFullTextSearch","filterNames","params","_iterator","_createForOfIteratorHelper","entries","_step","_loop","entry","some","n","s","done","err","e","updateUrl","qs","push","key","_iterator2","_step2","_loop2","entryName","_ret","length","querystring","q","history","replaceState","pathname","updateResults","resultsContainerElement","results","seeMore","_results$resultSource","_iterator3","resultSources","_step3","_loop3","_resultSource$results","resultSource","sourceGuid","sourceContainerElement","querySelector","_resultSource$templat","document","createElement","classList","add","innerHTML","template","newSeeMoreElement","addEventListener","preventDefault","append","resultItemsElement","_iterator4","_step4","item","itemElement","_i","_Array$from","Array","from","children","innerElement","remove","resultItemCount","toNumber","dataset","seeMoreElement","hasMore","_ret2","allowed","includes","Newest","Oldest","Trending","Alphabetical","performSearch","_ref","_asyncToGenerator","offset","_f$label2","queryBag","order","data","result","isSuccess","processResults","console","error","_x","_x2","apply","arguments","onLoadMore","dispatchBlockEvent","_ref2","itemCount","_x3","onClearClick","_searchContainerEleme","inputElement","focus","provideSecurityGrant","debounceSearch","debounce","onMounted","_searchContainerEleme2","preSearchContent"],"mappings":"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"}