{"version":3,"names":["getAnalyticsConfig","searchEngineConfig","enabled","store","analyticsClientMiddleware","event","payload","augmentAnalytics","defaultConfiguration","augmentAnalyticsConfigWithDocument","analytics","config","result","augmentWithExternalMiddleware","augmentAnalyticsWithAtomicVersion","augmentAnalyticsWithFacetTitles","allFacets","getAllFacets","getAtomicFacetLabelOrOriginalTitle","facetId","originalTitle","label","facetState","map","analyticsFacetState","id","title","customData","facetTitle","createAtomicStore","commonStore","createAtomicCommonStore","loadingFlags","facets","numericFacets","dateFacets","categoryFacets","facetElements","sortOptions","iconAssetsPath","mobileBreakpoint","DEFAULT_MOBILE_BREAKPOINT","fieldsToInclude","currentQuickviewPosition","state","isMobile","window","matchMedia","makeDesktopQuery","matches","getUniqueIDFromEngine","engine","search","response","searchUid","atomicSearchInterfaceCss","FirstSearchExecutedFlag","AtomicSearchInterface","constructor","hostRef","this","unsubscribeUrlManager","unsubscribeSearchStatus","initialized","relevanceInspectorIsOpen","i18n","i18next","createInstance","language","reflectStateInUrl","scrollContainer","languageAssetsPath","enableRelevanceInspector","onHashChange","urlManager","synchronize","fragment","initRelevanceInspector","commonInterfaceHelper","CommonAtomicInterfaceHelper","connectedCallback","setLoadingFlag","updateMobileBreakpoint","componentWillLoad","initAriaLive","initFieldsToInclude","updateSearchConfiguration","updatedProp","newValue","engineIsCreated","loadSearchConfigurationActions","dispatch","updateSearchHub","_a","searchHub","updatePipeline","pipeline","toggleAnalytics","onAnalyticsChange","updateLanguage","locale","onLanguageChange","updateIconAssetsPath","set","disconnectedCallback","removeEventListener","handleInitialization","onComponentInitializing","scrollToTop","scrollContainerElement","document","querySelector","bindings","logger","warn","scrollIntoView","behavior","closeRelevanceInspector","initialize","options","internalInitialization","initEngine","initializeWithSearchEngine","console","mismatchedInterfaceAndEnginePropError","executeFirstSearch","error","host","safeStorage","SafeStorage","standaloneSearchBoxData","getParsedJSON","StorageItems","STANDALONE_SEARCH_BOX_DATA","removeItem","updateQuery","loadQueryActions","value","enableQuerySyntax","q","executeFirstSearchAfterStandaloneSearchBoxRedirect","getOrganizationEndpoints","organizationId","env","getOrganizationEndpointsHeadless","interfaceElement","fields","EcommerceDefaultFieldsToInclude","concat","addFieldsToInclude","registerFieldsToInclude","loadFieldActions","breakpoint","searchConfig","getSearchConfiguration","analyticsConfig","buildSearchEngine","configuration","loggerOptions","level","logLevel","searchConfigFromProps","timezone","location","hash","slice","initUrlManager","buildUrlManager","initialState","subscribe","updateHash","addEventListener","Array","from","children","some","element","tagName","prepend","createElement","e","altKey","initSearchStatus","searchStatus","buildSearchStatus","hasNoResultsAfterInitialSearch","hasResults","firstSearchExecuted","hasError","classList","toggle","hasLoadingFlag","unsetLoadingFlag","newFragment","history","replaceState","info","pushState","onInitialization","render","h","open","__decorate","ArrayProp"],"sources":["src/components/search/atomic-search-interface/analytics-config.ts","src/components/search/atomic-search-interface/store.ts","src/components/search/atomic-search-interface/atomic-search-interface.pcss?tag=atomic-search-interface&encapsulation=shadow","src/components/search/atomic-search-interface/atomic-search-interface.tsx"],"sourcesContent":["import {\n  AnalyticsConfiguration,\n  SearchEngineConfiguration,\n} from '@coveo/headless';\nimport {\n  AnalyticsPayload,\n  augmentAnalyticsWithAtomicVersion,\n  augmentWithExternalMiddleware,\n  augmentAnalyticsConfigWithDocument,\n} from '../../common/interface/analytics-config';\nimport {createAtomicStore} from './store';\n\nexport function getAnalyticsConfig(\n  searchEngineConfig: SearchEngineConfiguration,\n  enabled: boolean,\n  store: ReturnType<typeof createAtomicStore>\n): AnalyticsConfiguration {\n  const analyticsClientMiddleware = (\n    event: string,\n    payload: AnalyticsPayload\n  ) => augmentAnalytics(event, payload, store, searchEngineConfig);\n\n  const defaultConfiguration: AnalyticsConfiguration = {\n    analyticsClientMiddleware,\n    enabled,\n    ...augmentAnalyticsConfigWithDocument(),\n  };\n\n  if (searchEngineConfig.analytics) {\n    return {\n      ...defaultConfiguration,\n      ...searchEngineConfig.analytics,\n      analyticsClientMiddleware,\n    };\n  }\n  return defaultConfiguration;\n}\n\nfunction augmentAnalytics(\n  event: string,\n  payload: AnalyticsPayload,\n  store: ReturnType<typeof createAtomicStore>,\n  config: SearchEngineConfiguration\n) {\n  let result = augmentWithExternalMiddleware(event, payload, config);\n  result = augmentAnalyticsWithAtomicVersion(result);\n  result = augmentAnalyticsWithFacetTitles(result, store);\n  return result;\n}\n\nfunction augmentAnalyticsWithFacetTitles(\n  payload: AnalyticsPayload,\n  store: ReturnType<typeof createAtomicStore>\n) {\n  const allFacets = store.getAllFacets();\n  const getAtomicFacetLabelOrOriginalTitle = (\n    facetId: string,\n    originalTitle: string\n  ) => (allFacets[facetId] ? allFacets[facetId].label() : originalTitle);\n\n  if (payload.facetState) {\n    payload.facetState = payload.facetState.map(\n      (analyticsFacetState: {id: string; title: string}) => {\n        const {id, title: originalTitle} = analyticsFacetState;\n        return {\n          ...analyticsFacetState,\n          title: getAtomicFacetLabelOrOriginalTitle(id, originalTitle),\n        };\n      }\n    );\n  }\n\n  if (\n    payload.customData &&\n    payload.customData.facetTitle &&\n    payload.customData.facetId &&\n    payload.customData.facetTitle\n  ) {\n    payload.customData.facetTitle = getAtomicFacetLabelOrOriginalTitle(\n      payload.customData.facetId,\n      payload.customData.facetTitle\n    );\n  }\n  return payload;\n}\n","import {\n  NumericFacetValue,\n  DateFacetValue,\n  SortCriterion,\n  SearchEngine,\n} from '@coveo/headless';\nimport {DEFAULT_MOBILE_BREAKPOINT} from '../../../utils/replace-breakpoint';\nimport {\n  FacetInfo,\n  FacetStore,\n  FacetValueFormat,\n} from '../../common/facets/facet-common-store';\nimport {\n  createAtomicCommonStore,\n  AtomicCommonStoreData,\n  AtomicCommonStore,\n} from '../../common/interface/store';\nimport {makeDesktopQuery} from '../atomic-layout/search-layout';\n\nexport interface SortDropdownOption {\n  expression: string;\n  criteria: SortCriterion[];\n  label: string;\n}\n\nexport interface AtomicStoreData extends AtomicCommonStoreData {\n  facets: FacetStore<FacetInfo>;\n  numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n  dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n  categoryFacets: FacetStore<FacetInfo>;\n  sortOptions: SortDropdownOption[];\n  mobileBreakpoint: string;\n  currentQuickviewPosition: number;\n}\n\nexport interface AtomicStore extends AtomicCommonStore<AtomicStoreData> {\n  getAllFacets(): FacetInfoMap;\n\n  isMobile(): boolean;\n}\n\nexport interface FacetInfoMap {\n  [facetId: string]:\n    | FacetInfo\n    | (FacetInfo & FacetValueFormat<NumericFacetValue>)\n    | (FacetInfo & FacetValueFormat<DateFacetValue>);\n}\n\nexport function createAtomicStore(): AtomicStore {\n  const commonStore = createAtomicCommonStore<AtomicStoreData>({\n    loadingFlags: [],\n    facets: {},\n    numericFacets: {},\n    dateFacets: {},\n    categoryFacets: {},\n    facetElements: [],\n    sortOptions: [],\n    iconAssetsPath: '',\n    mobileBreakpoint: DEFAULT_MOBILE_BREAKPOINT,\n    fieldsToInclude: [],\n    currentQuickviewPosition: -1,\n  });\n\n  return {\n    ...commonStore,\n\n    getAllFacets() {\n      return {\n        ...commonStore.state.facets,\n        ...commonStore.state.dateFacets,\n        ...commonStore.state.categoryFacets,\n        ...commonStore.state.numericFacets,\n      };\n    },\n\n    isMobile() {\n      return !window.matchMedia(\n        makeDesktopQuery(commonStore.state.mobileBreakpoint)\n      ).matches;\n    },\n\n    getUniqueIDFromEngine(engine: SearchEngine): string {\n      return engine.state.search.response.searchUid;\n    },\n  };\n}\n","@import '../../../global/global.pcss';\n\n:host {\n  height: inherit;\n  width: inherit;\n  & > slot {\n    height: inherit;\n  }\n}\n","import {\n  LogLevel,\n  Unsubscribe,\n  buildUrlManager,\n  UrlManager,\n  buildSearchEngine,\n  SearchEngine,\n  SearchEngineConfiguration,\n  SearchStatus,\n  buildSearchStatus,\n  loadSearchConfigurationActions,\n  loadQueryActions,\n  EcommerceDefaultFieldsToInclude,\n  loadFieldActions,\n  getOrganizationEndpoints as getOrganizationEndpointsHeadless,\n  PlatformEnvironment,\n} from '@coveo/headless';\nimport {\n  Component,\n  Prop,\n  h,\n  Listen,\n  Method,\n  Watch,\n  Element,\n  State,\n} from '@stencil/core';\nimport i18next, {i18n} from 'i18next';\nimport {InitializeEvent} from '../../../utils/initialization-utils';\nimport {\n  SafeStorage,\n  StandaloneSearchBoxData,\n  StorageItems,\n} from '../../../utils/local-storage-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {CommonBindings} from '../../common/interface/bindings';\nimport {\n  BaseAtomicInterface,\n  CommonAtomicInterfaceHelper,\n  mismatchedInterfaceAndEnginePropError,\n} from '../../common/interface/interface-common';\nimport {getAnalyticsConfig} from './analytics-config';\nimport {AtomicStore, createAtomicStore} from './store';\n\nconst FirstSearchExecutedFlag = 'firstSearchExecuted';\nexport type InitializationOptions = SearchEngineConfiguration;\nexport type Bindings = CommonBindings<\n  SearchEngine,\n  AtomicStore,\n  HTMLAtomicSearchInterfaceElement\n>;\n\n/**\n * The `atomic-search-interface` component is the parent to all other atomic components in a search page. It handles the headless search engine and localization configurations.\n */\n@Component({\n  tag: 'atomic-search-interface',\n  styleUrl: 'atomic-search-interface.pcss',\n  shadow: true,\n  assetsDirs: ['lang'],\n})\nexport class AtomicSearchInterface\n  implements BaseAtomicInterface<SearchEngine>\n{\n  private urlManager!: UrlManager;\n  private searchStatus!: SearchStatus;\n  private unsubscribeUrlManager: Unsubscribe = () => {};\n  private unsubscribeSearchStatus: Unsubscribe = () => {};\n  private initialized = false;\n  private store = createAtomicStore();\n  private commonInterfaceHelper: CommonAtomicInterfaceHelper<SearchEngine>;\n\n  @Element() public host!: HTMLAtomicSearchInterfaceElement;\n\n  @State() public error?: Error;\n  @State() relevanceInspectorIsOpen = false;\n\n  /**\n   * A list of non-default fields to include in the query results.\n   *\n   * Specify the property as an array using a JSON string representation:\n   * ```html\n   * <atomic-search-interface fields-to-include='[\"fieldA\", \"fieldB\"]'></atomic-search-interface>\n   * ```\n   */\n  @ArrayProp()\n  @Prop({mutable: true})\n  public fieldsToInclude: string[] | string = '[]';\n\n  /**\n   * The search interface [query pipeline](https://docs.coveo.com/en/180/).\n   *\n   * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine), the query pipeline should instead be configured in the target engine.\n   */\n  @Prop({reflect: true, mutable: true}) public pipeline?: string;\n\n  /**\n   * The search interface [search hub](https://docs.coveo.com/en/1342/).\n   *\n   * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine, the search hub should instead be configured in the target engine.\n   */\n  @Prop({reflect: true, mutable: true}) public searchHub?: string;\n\n  /**\n   * Whether analytics should be enabled.\n   */\n  @Prop({reflect: true}) public analytics = true;\n\n  /**\n   * The [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) identifier of the time zone to use to correctly interpret dates in the query expression, facets, and result items.\n   * By default, the timezone will be [guessed](https://day.js.org/docs/en/timezone/guessing-user-timezone).\n   *\n   * Example: \"America/Montreal\"\n   */\n  @Prop({reflect: true}) public timezone?: string;\n\n  /**\n   * The severity level of the messages to log in the console.\n   */\n  @Prop({reflect: true}) public logLevel?: LogLevel;\n\n  /**\n   * The search interface i18next instance.\n   */\n  @Prop() public i18n: i18n = i18next.createInstance();\n\n  /**\n   * The search interface language.\n   */\n  @Prop({reflect: true}) public language = 'en';\n\n  /**\n   * The search interface headless engine.\n   */\n  @Prop({mutable: true}) public engine?: SearchEngine;\n\n  /**\n   * Whether the state should be reflected in the URL parameters.\n   */\n  @Prop({reflect: true}) public reflectStateInUrl = true;\n\n  /**\n   * The CSS selector for the container where the interface will scroll back to.\n   */\n  @Prop({reflect: true}) public scrollContainer = 'atomic-search-interface';\n\n  /**\n   * The language assets path. By default, this will be a relative URL pointing to `./lang`.\n   *\n   * Example: \"/mypublicpath/languages\"\n   *\n   */\n  @Prop({reflect: true}) public languageAssetsPath = './lang';\n\n  /**\n   * The icon assets path. By default, this will be a relative URL pointing to `./assets`.\n   *\n   * Example: \"/mypublicpath/icons\"\n   *\n   */\n  @Prop({reflect: true}) public iconAssetsPath = './assets';\n\n  /**\n   * Whether the relevance inspector shortcut should be enabled for this interface.\n   *\n   * The relevance inspector can be opened by holding the Alt key (Option on Mac) while over the interface, and performing a double click.\n   *\n   * The relevance inspector allows to troubleshoot and debug queries.\n   */\n  @Prop({reflect: true}) public enableRelevanceInspector = true;\n\n  public constructor() {\n    this.initRelevanceInspector();\n    this.commonInterfaceHelper = new CommonAtomicInterfaceHelper(\n      this,\n      'CoveoAtomic'\n    );\n  }\n\n  public connectedCallback() {\n    this.store.setLoadingFlag(FirstSearchExecutedFlag);\n    this.updateMobileBreakpoint();\n  }\n\n  componentWillLoad() {\n    this.initAriaLive();\n    this.initFieldsToInclude();\n  }\n\n  public updateSearchConfiguration(\n    updatedProp: 'searchHub' | 'pipeline',\n    newValue: string | undefined\n  ) {\n    if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n      return;\n    }\n\n    if (this.engine.state[updatedProp] === newValue) {\n      return;\n    }\n\n    const {updateSearchConfiguration} = loadSearchConfigurationActions(\n      this.engine\n    );\n    this.engine.dispatch(\n      updateSearchConfiguration({\n        [updatedProp]: newValue,\n      })\n    );\n  }\n\n  @Watch('searchHub')\n  public updateSearchHub() {\n    this.updateSearchConfiguration('searchHub', this.searchHub ?? 'default');\n  }\n\n  @Watch('pipeline')\n  public updatePipeline() {\n    this.updateSearchConfiguration('pipeline', this.pipeline);\n  }\n\n  @Watch('analytics')\n  public toggleAnalytics() {\n    if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n      return;\n    }\n\n    this.commonInterfaceHelper.onAnalyticsChange();\n  }\n\n  @Watch('language')\n  public updateLanguage() {\n    if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n      return;\n    }\n\n    const {updateSearchConfiguration} = loadSearchConfigurationActions(\n      this.engine\n    );\n    this.engine.dispatch(\n      updateSearchConfiguration({\n        locale: this.language,\n      })\n    );\n    this.commonInterfaceHelper.onLanguageChange();\n  }\n\n  @Watch('iconAssetsPath')\n  public updateIconAssetsPath() {\n    this.store.set('iconAssetsPath', this.iconAssetsPath);\n  }\n\n  public disconnectedCallback() {\n    this.unsubscribeUrlManager();\n    this.unsubscribeSearchStatus();\n    window.removeEventListener('hashchange', this.onHashChange);\n  }\n\n  @Listen('atomic/initializeComponent')\n  public handleInitialization(event: InitializeEvent) {\n    this.commonInterfaceHelper.onComponentInitializing(event);\n  }\n\n  @Listen('atomic/scrollToTop')\n  public scrollToTop() {\n    const scrollContainerElement = document.querySelector(this.scrollContainer);\n    if (!scrollContainerElement) {\n      this.bindings.engine.logger.warn(\n        `Could not find the scroll container with the selector \"${this.scrollContainer}\". This will prevent UX interactions that require a scroll from working correctly. Please check the CSS selector in the scrollContainer option`\n      );\n      return;\n    }\n\n    scrollContainerElement.scrollIntoView({behavior: 'smooth'});\n  }\n\n  @Listen('atomic/relevanceInspector/close')\n  public closeRelevanceInspector() {\n    this.relevanceInspectorIsOpen = false;\n  }\n\n  /**\n   * Initializes the connection with the headless search engine using options for accessToken (required), organizationId (required), renewAccessToken, organizationEndpoints (recommended), and platformUrl (deprecated).\n   */\n  @Method() public initialize(options: InitializationOptions) {\n    return this.internalInitialization(() => this.initEngine(options));\n  }\n\n  /**\n   * Initializes the connection with an already preconfigured headless search engine, as opposed to the `initialize` method which will internally create a new search engine instance.\n   * This bypasses the properties set on the component, such as analytics, searchHub, pipeline, language, timezone & logLevel.\n   */\n  @Method() public initializeWithSearchEngine(engine: SearchEngine) {\n    if (this.pipeline && this.pipeline !== engine.state.pipeline) {\n      console.warn(\n        mismatchedInterfaceAndEnginePropError('search', 'query pipeline')\n      );\n    }\n    if (this.searchHub && this.searchHub !== engine.state.searchHub) {\n      console.warn(\n        mismatchedInterfaceAndEnginePropError('search', 'search hub')\n      );\n    }\n    return this.internalInitialization(() => (this.engine = engine));\n  }\n\n  /**\n   *\n   * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.\n   */\n  @Method() public async executeFirstSearch() {\n    if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n      return;\n    }\n\n    if (!this.initialized) {\n      console.error(\n        'You have to wait until the \"initialize\" promise is fulfilled before executing a search.',\n        this.host\n      );\n      return;\n    }\n\n    const safeStorage = new SafeStorage();\n    const standaloneSearchBoxData =\n      safeStorage.getParsedJSON<StandaloneSearchBoxData | null>(\n        StorageItems.STANDALONE_SEARCH_BOX_DATA,\n        null\n      );\n\n    if (!standaloneSearchBoxData) {\n      this.engine.executeFirstSearch();\n      return;\n    }\n\n    safeStorage.removeItem(StorageItems.STANDALONE_SEARCH_BOX_DATA);\n    const {updateQuery} = loadQueryActions(this.engine!);\n    const {value, enableQuerySyntax, analytics} = standaloneSearchBoxData;\n    this.engine!.dispatch(updateQuery({q: value, enableQuerySyntax}));\n    this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics);\n  }\n\n  /**\n   * Returns the unique, organization-specific endpoint(s)\n   * @param {string} organizationId\n   * @param {'prod'|'hipaa'|'staging'|'dev'} [env=Prod]\n   */\n  @Method() public async getOrganizationEndpoints(\n    organizationId: string,\n    env: PlatformEnvironment = 'prod'\n  ) {\n    return getOrganizationEndpointsHeadless(organizationId, env);\n  }\n\n  public get bindings(): Bindings {\n    return {\n      engine: this.engine!,\n      i18n: this.i18n,\n      store: this.store,\n      interfaceElement: this.host,\n    };\n  }\n\n  private initFieldsToInclude() {\n    const fields = EcommerceDefaultFieldsToInclude.concat(this.fieldsToInclude);\n    this.store.addFieldsToInclude(fields);\n  }\n\n  public registerFieldsToInclude() {\n    this.engine?.dispatch(\n      loadFieldActions(this.engine!).registerFieldsToInclude(\n        this.store.state.fieldsToInclude\n      )\n    );\n  }\n\n  private updateMobileBreakpoint() {\n    const breakpoint = this.host.querySelector('atomic-search-layout')\n      ?.mobileBreakpoint;\n    if (breakpoint) {\n      this.store.set('mobileBreakpoint', breakpoint);\n    }\n  }\n\n  private initEngine(options: InitializationOptions) {\n    const searchConfig = this.getSearchConfiguration(options);\n    const analyticsConfig = getAnalyticsConfig(\n      options,\n      this.analytics,\n      this.store\n    );\n    try {\n      this.engine = buildSearchEngine({\n        configuration: {\n          ...options,\n          search: searchConfig,\n          analytics: analyticsConfig,\n        },\n        loggerOptions: {\n          level: this.logLevel,\n        },\n      });\n    } catch (error) {\n      this.error = error as Error;\n      throw error;\n    }\n  }\n\n  private getSearchConfiguration(options: InitializationOptions) {\n    const searchConfigFromProps = {\n      searchHub: this.searchHub ?? 'default',\n      pipeline: this.pipeline,\n      locale: this.language,\n      timezone: this.timezone,\n    };\n\n    if (options.search) {\n      return {\n        ...searchConfigFromProps,\n        ...options.search,\n      };\n    }\n\n    return searchConfigFromProps;\n  }\n\n  private get fragment() {\n    return window.location.hash.slice(1);\n  }\n\n  private initUrlManager() {\n    if (!this.reflectStateInUrl) {\n      return;\n    }\n\n    this.urlManager = buildUrlManager(this.engine!, {\n      initialState: {fragment: this.fragment},\n    });\n\n    this.unsubscribeUrlManager = this.urlManager.subscribe(() =>\n      this.updateHash()\n    );\n\n    window.addEventListener('hashchange', this.onHashChange);\n  }\n\n  private initAriaLive() {\n    if (\n      Array.from(this.host.children).some(\n        (element) => element.tagName === 'ATOMIC-ARIA-LIVE'\n      )\n    ) {\n      return;\n    }\n    this.host.prepend(document.createElement('atomic-aria-live'));\n  }\n\n  private initRelevanceInspector() {\n    if (this.enableRelevanceInspector) {\n      this.host.addEventListener('dblclick', (e) => {\n        if (e.altKey) {\n          this.relevanceInspectorIsOpen = !this.relevanceInspectorIsOpen;\n        }\n      });\n    }\n  }\n\n  private initSearchStatus() {\n    this.searchStatus = buildSearchStatus(this.engine!);\n    this.unsubscribeSearchStatus = this.searchStatus.subscribe(() => {\n      const hasNoResultsAfterInitialSearch =\n        !this.searchStatus.state.hasResults &&\n        this.searchStatus.state.firstSearchExecuted &&\n        !this.searchStatus.state.hasError;\n\n      this.host.classList.toggle(\n        'atomic-search-interface-no-results',\n        hasNoResultsAfterInitialSearch\n      );\n\n      this.host.classList.toggle(\n        'atomic-search-interface-error',\n        this.searchStatus.state.hasError\n      );\n\n      this.host.classList.toggle(\n        'atomic-search-interface-search-executed',\n        this.searchStatus.state.firstSearchExecuted\n      );\n\n      if (\n        this.searchStatus.state.firstSearchExecuted &&\n        this.store.hasLoadingFlag(FirstSearchExecutedFlag)\n      ) {\n        this.store.unsetLoadingFlag(FirstSearchExecutedFlag);\n      }\n    });\n  }\n\n  private updateHash() {\n    const newFragment = this.urlManager.state.fragment;\n\n    if (!this.searchStatus.state.firstSearchExecuted) {\n      history.replaceState(null, document.title, `#${newFragment}`);\n      this.bindings.engine.logger.info(`History replaceState #${newFragment}`);\n\n      return;\n    }\n\n    history.pushState(null, document.title, `#${newFragment}`);\n    this.bindings.engine.logger.info(`History pushState #${newFragment}`);\n  }\n\n  private onHashChange = () => {\n    this.urlManager.synchronize(this.fragment);\n  };\n\n  private async internalInitialization(initEngine: () => void) {\n    await this.commonInterfaceHelper.onInitialization(initEngine);\n    this.pipeline = this.engine!.state.pipeline;\n    this.searchHub = this.engine!.state.searchHub;\n    this.initSearchStatus();\n    this.initUrlManager();\n    this.initialized = true;\n  }\n\n  public render() {\n    return [\n      this.engine && this.enableRelevanceInspector && (\n        <atomic-relevance-inspector\n          open={this.relevanceInspectorIsOpen}\n          bindings={this.bindings}\n        ></atomic-relevance-inspector>\n      ),\n      <slot></slot>,\n    ];\n  }\n}\n"],"mappings":"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"}