{"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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"}