{"version":3,"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","key","keys","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","Object","entries","handlers","_a","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","length","createStore","isRefineModalFacet","createAtomicCommonStore","initialStoreData","stencilStore","clearExistingFacetElement","facetType","facetId","facetElements","facetElement","getAttribute","registerFacet","data","element","getIconAssetsPath","setLoadingFlag","loadingFlag","flags","concat","unsetLoadingFlag","hasLoadingFlag","registerResultList","addFieldsToInclude","fields","waitUntilAppLoaded","isAppLoaded","getUniqueIDFromEngine","_engine","Error","getFacetElements","isInDocument"],"sources":["../../node_modules/@stencil/store/dist/index.mjs","src/components/common/interface/store.ts"],"sourcesContent":["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}, 2000);\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 !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\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((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\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} from '@stencil/store';\nimport {isInDocument} from '../../../utils/utils';\nimport {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../facets/facet-common-store';\nimport {DateFacetValue, NumericFacetValue} from '../types';\nimport {AnyEngineType, CommonStencilStore} from './bindings';\n\nexport interface ResultListInfo {\n focusOnNextNewResult(): void;\n focusOnFirstResultAfterNextSearch(): Promise<void>;\n}\n\nexport type AtomicCommonStoreData = {\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n loadingFlags: string[];\n iconAssetsPath: string;\n fieldsToInclude: string[];\n facetElements: HTMLElement[];\n resultList?: ResultListInfo;\n};\n\nexport interface AtomicCommonStore<StoreData extends AtomicCommonStoreData>\n extends CommonStencilStore<StoreData> {\n getIconAssetsPath(): string;\n setLoadingFlag(flag: string): void;\n unsetLoadingFlag(loadingFlag: string): void;\n hasLoadingFlag(loadingFlag: string): boolean;\n waitUntilAppLoaded(callback: () => void): void;\n isAppLoaded(): boolean;\n getUniqueIDFromEngine(engine: AnyEngineType): string;\n getFacetElements(): HTMLElement[];\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: StoreData[T][U] & {facetId: U; element: HTMLElement}\n ): void;\n registerResultList(data: ResultListInfo): void;\n addFieldsToInclude(fields: string[]): void;\n}\n\nexport const isRefineModalFacet = 'is-refine-modal';\n\nexport function createAtomicCommonStore<\n StoreData extends AtomicCommonStoreData,\n>(initialStoreData: StoreData): AtomicCommonStore<StoreData> {\n const stencilStore = createStore(\n initialStoreData\n ) as CommonStencilStore<StoreData>;\n\n const clearExistingFacetElement = (facetType: FacetType, facetId: string) => {\n if (stencilStore.state[facetType][facetId]) {\n stencilStore.state.facetElements =\n stencilStore.state.facetElements.filter(\n (facetElement) => facetElement.getAttribute('facet-id') !== facetId\n );\n }\n };\n\n return {\n ...stencilStore,\n\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: StoreData[T][U] & {facetId: U; element: HTMLElement}\n ) {\n if (data.element.getAttribute(isRefineModalFacet) !== null) {\n return;\n }\n\n clearExistingFacetElement(facetType, data.facetId);\n stencilStore.state.facetElements.push(data.element);\n stencilStore.state[facetType][data.facetId] = data;\n },\n\n getIconAssetsPath() {\n return stencilStore.get('iconAssetsPath');\n },\n\n setLoadingFlag(loadingFlag: string) {\n const flags = stencilStore.get('loadingFlags');\n stencilStore.set('loadingFlags', flags.concat(loadingFlag));\n },\n\n unsetLoadingFlag(loadingFlag: string) {\n const flags = stencilStore.get('loadingFlags');\n stencilStore.set(\n 'loadingFlags',\n flags.filter((value) => value !== loadingFlag)\n );\n },\n\n hasLoadingFlag(loadingFlag: string) {\n return stencilStore.get('loadingFlags').indexOf(loadingFlag) !== -1;\n },\n\n registerResultList(data: ResultListInfo) {\n stencilStore.set('resultList', data);\n },\n\n addFieldsToInclude(fields) {\n stencilStore.set('fieldsToInclude', [\n ...stencilStore.get('fieldsToInclude'),\n ...fields,\n ]);\n },\n\n waitUntilAppLoaded(callback: () => void) {\n if (!stencilStore.get('loadingFlags').length) {\n callback();\n } else {\n stencilStore.onChange('loadingFlags', (flags) => {\n if (!flags.length) {\n callback();\n }\n });\n }\n },\n\n isAppLoaded() {\n return !stencilStore.get('loadingFlags').length;\n },\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getUniqueIDFromEngine(_engine: AnyEngineType): string {\n throw new Error(\n 'getUniqueIDFromEngine not implemented at the common store level.'\n );\n },\n\n getFacetElements() {\n return stencilStore\n .get('facetElements')\n .filter((element) => isInDocument(element));\n },\n };\n}\n"],"mappings":"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"}