{"version":3,"file":"findation-xxxxxxxxxxxxxxxxxxxx.min.js","mappings":"yBAEA,IAAIA,GAAkB,EAiBtB,SAASC,IACP,MAAMC,EAAQ,IAAIC,YAAY,iCAAkC,CAAEC,YAAY,IAC9EC,cAAcH,GAGVF,GACFM,OAAOC,YAAY,cAEvB,CAEA,SAASC,IACP,MAAMN,EAAQ,IAAIC,YAAY,iCAAkC,CAAEC,YAAY,IAC9EC,cAAcH,EAChB,CAEA,SAASO,IACP,MAAMP,EAAQ,IAAIC,YAAY,kCAAmC,CAAEC,YAAY,IAC/EC,cAAcH,EAChB,CAEA,SAASQ,EAAiBC,GACxB,MAAMT,EAAQ,IAAIC,YAChB,iCACA,CACEC,YAAY,EACZQ,OAAQD,IAGZN,cAAcH,GAGVS,EAAKE,cACPP,OAAOQ,UAAUC,OAAOC,cAAcT,YACpC,CACEL,MAAO,mBACPe,GAAIN,EAAKO,YAEXZ,OAAOQ,UAAUC,OAAOI,IAG9B,CAEA,SAASC,EAAUlB,GAAqB,IAAAmB,EAAAC,EACiCC,EAA7C,6BAAZ,OAAVF,EAAAnB,EAAMS,WAAI,EAAVU,EAAYnB,QAAiD,OAAdoB,EAAIpB,EAAMS,OAANW,EAAYL,KACjEO,SAASC,KAAO,GAAHC,OAAMF,SAASG,QAAMD,OAAGF,SAASI,SAAQ,aAAAF,OAAsB,OAAtBH,EAAYrB,EAAMS,WAAI,EAAVY,EAAYN,IAElF,CAUAX,OAAOQ,UAAYR,OAAOQ,WAAa,CAAC,EAExCe,iBAAiB,mBAzEjB,WACEvB,OAAOQ,UAAUgB,KACfC,SAASC,eAAe,2BACxB,+DACA,CAAC,GAGH1B,OAAOQ,UAAUmB,eAAiBhC,EAClCK,OAAOQ,UAAUoB,cAAgB1B,EACjCF,OAAOQ,UAAUqB,eAAiB1B,EAClCH,OAAOQ,UAAUJ,iBAAmBA,EAEpCmB,iBAAiB,UAAWT,EAC9B,ICgBO,SAAuBgB,GAC5B,IAAK,MAAMlC,KAASI,OAAO+B,KAAKC,MAAO,CACrC,MAAMC,EAAWH,EAAc,MAALlC,OAAK,EAALA,EAAOsC,MAC7BD,GACFA,EAASrC,EAEb,CAEA,IAAK,MAAMuC,KAAaL,EACtBP,iBAAiBY,EAAWL,EAASK,GAEzC,CDuCAC,CAJ8D,CAC5D,kBAbF,SAAqBxC,GAEfA,EAAMU,OAAO+B,iBACf3C,GAAkB,EAEtB,G","sources":["webpack://lange/./scripts/integrations/findation/index.ts","webpack://lange/./scripts/integrations/common.ts"],"sourcesContent":["import * as common from '../common';\n\nlet shouldOpenModal = false;\n\nfunction onDOMContentLoaded() {\n  window.Findation.init(\n    document.getElementById('findation-widget-button'),\n    'cc9d02b6b78746ede9bb4fa953cd8921090f36330c2cda6f35ece9adf925',\n    {}\n  );\n\n  window.Findation.widgetEmbedded = onWidgetEmbedded;\n  window.Findation.widgetDidOpen = onWidgetDidOpen;\n  window.Findation.widgetDidClose = onWidgetDidClose;\n  window.Findation.onSearchComplete = onSearchComplete;\n\n  addEventListener('message', onMessage);\n}\n\nfunction onWidgetEmbedded() {\n  const event = new CustomEvent('ofir-findation-widget-embedded', { cancelable: true });\n  dispatchEvent(event);\n\n  // Open Findation modal on init\n  if (shouldOpenModal) {\n    window.postMessage('overlayOpen');\n  }\n}\n\nfunction onWidgetDidOpen() {\n  const event = new CustomEvent('ofir-findation-widget-did-open', { cancelable: true });\n  dispatchEvent(event);\n}\n\nfunction onWidgetDidClose() {\n  const event = new CustomEvent('ofir-findation-widget-did-close', { cancelable: true });\n  dispatchEvent(event);\n}\n\nfunction onSearchComplete(data: Findation.SearchResponse) {\n  const event = new CustomEvent<OfirCustomEvents.FindationSearchCompleteEventDetails>(\n    'ofir-findation-search-complete',\n    {\n      cancelable: true,\n      detail: data\n    }\n  );\n  dispatchEvent(event);\n\n  // Send postMessage with variant id for Shop Now button if match was successful\n  if (data.matchSuccess) {\n    window.Findation.iframe.contentWindow.postMessage(\n      {\n        event: 'onSearchComplete',\n        id: data.externalId\n      },\n      window.Findation.iframe.src\n    );\n  }\n}\n\nfunction onMessage(event: MessageEvent) {\n  if (event.data?.event === 'ofir-findation-shop-now' && event.data?.id) {\n    location.href = `${location.origin}${location.pathname}?variant=${event.data?.id}`;\n  }\n}\n\nfunction onAdClicked(event: OfirCustomEvents.AdClickedEvent) {\n  // Should open Findation modal\n  if (event.detail.findationModal) {\n    shouldOpenModal = true;\n  }\n}\n\n// @ts-ignore\nwindow.Findation = window.Findation || {};\n\naddEventListener('DOMContentLoaded', onDOMContentLoaded);\n\nconst registry = <Record<string, (...args: unknown[])=> void>>{\n  'ofir-ad-clicked': onAdClicked\n};\n\ncommon.setupRegistry(registry);\n","/**\n * Appends a script element in the head that loads its url async.\n *\n * @todo set crossorigin or other attributes?\n *\n * @param url The script url to load\n * @returns A promise that resolves to a load event or rejects with an error event\n */\nexport function loadScript(url: string) {\n  return new Promise<Event>((resolve, reject) => {\n    const script = document.createElement('script');\n    script.async = true;\n    script.addEventListener('load', resolve);\n    script.addEventListener('error', reject);\n    document.head.append(script);\n    script.src = url;\n  });\n}\n\n/**\n * Search the queue for events that have already fired. For each event, search for whether we have a\n * listener for the event. If found, directly dispatch the event to the listener. This fixes the\n * issue where the script that loads the registry does not add its event listeners until after the\n * event has fired.\n *\n * Then register event listeners for each key of the registry.\n *\n * We cannot restrict the type of parameters to the callback because we have some special callbacks\n * such as the callback for the global error event. However, most of the time the callback is just\n * one parameter, event of type Event.\n *\n * @param registry An event registry\n */\nexport function setupRegistry(registry: Record<string, (...args: unknown[])=> void>) {\n  for (const event of window.ofir.queue) {\n    const listener = registry[event?.type];\n    if (listener) {\n      listener(event);\n    }\n  }\n\n  for (const eventType in registry) {\n    addEventListener(eventType, registry[eventType]);\n  }\n}\n"],"names":["shouldOpenModal","onWidgetEmbedded","event","CustomEvent","cancelable","dispatchEvent","window","postMessage","onWidgetDidOpen","onWidgetDidClose","onSearchComplete","data","detail","matchSuccess","Findation","iframe","contentWindow","id","externalId","src","onMessage","_event$data","_event$data2","_event$data3","location","href","concat","origin","pathname","addEventListener","init","document","getElementById","widgetEmbedded","widgetDidOpen","widgetDidClose","registry","ofir","queue","listener","type","eventType","common","findationModal"],"sourceRoot":""}