{"version":3,"file":"tweakwise.js","mappings":"+tBASA,SAASA,IACP,GAAI,oBAAqBC,OAAQ,CAC/BA,OAAO,sBAAwBA,OAAO,uBAAyB,CAAC,EAChEA,OAAO,sBAAsBC,MAAO,EACpCD,OAAO,sBAAsBE,MAAQ,KAErC,IAAIC,EAAgC,KAEpCH,OAAOI,iBAAiB,oBAAqB,WAC3C,IAAIC,EA+BV,WACE,IAAIA,EAAiB,CAAC,EAClBC,EAAaC,UAAUC,SAASC,MAEpC,GAAIH,EAAWI,QAAQ,UAAY,EAAG,CAQpC,OAPWJ,EAAWK,MAAM,UACP,GAAGA,MAAM,KACpBC,QAAQ,SAACC,GACjB,IAAIC,EAAID,EAAEF,MAAM,KAChBN,EAAUS,EAAE,IAAMA,EAAE,EACtB,GAEO,CAAEC,SAAS,EAAMV,UAAAA,EAC1B,CAEA,MAAO,CAAEU,SAAS,EAAOV,UAAAA,EAC3B,CA/CsBW,IAEhBb,EAAaH,OAAOiB,oBAAoB,CACtCC,OAAQ,oBACRC,IAAKnB,OAAOoB,gBAAgBD,IAC5BE,MAAO,KACPhB,UAAWA,EAAUA,UACrBiB,GAAI,CACF,sBAAuBC,OAIXpB,EAAWqB,SAAQ,EACrC,GAEAxB,OAAOI,iBAAiB,wBAAyB,WAC/CJ,OAAOyB,qBAAqB,CAC1BC,YAAa1B,OAAOoB,gBAAgBM,YACpCxB,MAAO,mBACPiB,IAAKnB,OAAOoB,gBAAgBD,IAC5BQ,cAAe,CACbC,OAAM,SAACC,GACLrB,SAASsB,KAAO,GAAHC,OAAM/B,OAAOoB,gBAAgBY,IAAG,eAAAD,OAAcF,EAAMI,KAAKC,OAClE/B,GAAYA,EAAWgC,SAASN,EAAMI,KAAKC,MACjD,IAGN,EACF,CACF,CAoBA,SAASX,EAAea,GAAqC,IAAAC,EAAlCJ,EAAIG,EAAJH,KACnBK,EAAYC,SAASC,cAAc,gBACnCC,EAA4B,QAAlBJ,EAAGJ,EAAKS,kBAAU,IAAAL,OAAA,EAAfA,EAAiBM,WAEhCL,GAAaG,IACfH,EAAUM,YAAc,wBAAHb,OAA2BU,EAAU,KAE9D,ECtBqB,IA/CH,WAKf,O,EAFD,SAAAI,I,uGAAcC,CAAA,KAAAD,G,EAAA,K,OAAA,G,MAAA,c,wFACZE,KAAKC,QAAU,CAAC,CAClB,E,EAAC,EAAAC,IAAA,aAAAC,MAED,SAAkBlB,EAAamB,GAAa,IAAAC,EAAA,KAC1C,OAAO,IAAIC,QAAc,SAACC,EAASC,GACjC,IAAMC,EAAkBJ,EAAKJ,QAAQhB,GAErC,GAAIwB,EAQF,OAPIA,EAAgBC,QAClBH,SAGEE,EAAgBE,OAClBH,KAKJ,IAAMI,EAASpB,SAASqB,cAAc,UACtCD,EAAOE,KAAO,kBACdF,EAAOG,IAAM9B,EACTmB,IAAIQ,EAAOR,GAAKA,GACpBnD,OAAOuC,SAASwB,KAAKC,YAAYL,GAEjC,IAAMM,EAAgB,SAACC,GACrBP,EAAOQ,oBAAoB,OAAQF,GACnCN,EAAOQ,oBAAoB,QAASF,GAEpCb,EAAKJ,QAAQhB,GAAkB,SAAXkC,EAAEL,KAEP,SAAXK,EAAEL,KACJP,IAEAC,GAEJ,EAEAI,EAAOvD,iBAAiB,OAAQ6D,GAChCN,EAAOvD,iBAAiB,QAAS6D,EACnC,EACF,I,4FAAC,CA5Ce,KDuELG,WAAW,6CAADrC,OACwB/B,OAAOoB,gBAAgBM,YAAW,iBAC/E,aAEC2C,KAAK,kBAAMtE,GAAe,GAAC,MACrB,kBAAMuE,QAAQC,IAAI,kCAAkC,E","sources":["webpack://suzuki/./src/tweakwise.ts","webpack://suzuki/./src/utils/script-loader.ts"],"sourcesContent":["import ScriptLoader from '~src/utils/script-loader'\nimport { ListerPageMethods } from './types/tweakwise/lister-page'\nimport { IApiNavigation } from './types/tweakwise/api-response'\n\n/**\n * Tweakwise Configuration\n * @link https://docs.tweakwise.com/docs/js-js-implementation-local-configuration\n */\n\nfunction initTweakwise() {\n  if ('tweakwiseConfig' in window) {\n    window['twn-starter-config'] = window['twn-starter-config'] || {}\n    window['twn-starter-config'].auto = false\n    window['twn-starter-config'].input = null\n\n    let listerPage: ListerPageMethods = null\n\n    window.addEventListener('twn.starter.ready', function () {\n      let selection = getSelection()\n\n      listerPage = window.tweakwiseListerPage({\n        output: '#tweakwise-output',\n        cid: window.tweakwiseConfig.cid,\n        query: null,\n        selection: selection.selection,\n        on: {\n          'twn.request.success': updatePageTitle,\n        },\n      })\n\n      if (listerPage) listerPage.setOpen(true)\n    })\n\n    window.addEventListener('twn.suggestions.ready', function () {\n      window.tweakwiseSuggestions({\n        instancekey: window.tweakwiseConfig.instancekey,\n        input: '#tweakwise-input',\n        cid: window.tweakwiseConfig.cid,\n        searchPhrases: {\n          handle(event) {\n            location.href = `${window.tweakwiseConfig.url}#twn|?tn_q=${event.data.match}`\n            if (listerPage) listerPage.setQuery(event.data.match)\n          },\n        },\n      })\n    })\n  }\n}\n\nfunction getSelection() {\n  let selection: any = {}\n  let decodedUrl = decodeURI(location.hash)\n\n  if (decodedUrl.indexOf('twn|?') >= 0) {\n    let hash = decodedUrl.split('#twn|?')\n    let hashSplit = hash[1].split('&')\n    hashSplit.forEach((o) => {\n      let x = o.split('=')\n      selection[x[0]] = x[1]\n    })\n\n    return { enabled: true, selection }\n  }\n\n  return { enabled: false, selection }\n}\n\nfunction updatePageTitle({ data }: { data: IApiNavigation }) {\n  const titleNode = document.querySelector('.js-tw-title')\n  const searchTerm = data.properties?.searchterm\n\n  if (titleNode && searchTerm) {\n    titleNode.textContent = `Zoekresultaten voor \"${searchTerm}\"`\n  }\n}\n\nScriptLoader.loadScript(\n  `https://gateway.tweakwisenavigator.net/js/${window.tweakwiseConfig.instancekey}/tweakwise.js`,\n  'tweakwise'\n)\n  .then(() => initTweakwise())\n  .catch(() => console.log('Loading Tweakwise script failed'))\n","/**\n * @name Script loader\n *\n */\n\nclass ScriptLoader {\n  private scripts: any\n\n  constructor() {\n    this.scripts = {}\n  }\n\n  public loadScript(url: string, id?: string) {\n    return new Promise<void>((resolve, reject) => {\n      const requestedScript = this.scripts[url]\n\n      if (requestedScript) {\n        if (requestedScript.loaded) {\n          resolve()\n        }\n\n        if (requestedScript.error) {\n          reject()\n        }\n        return\n      }\n\n      const script = document.createElement('script')\n      script.type = 'text/javascript'\n      script.src = url\n      if (id) script.id = id\n      window.document.body.appendChild(script)\n\n      const scriptHandler = (e: Event) => {\n        script.removeEventListener('load', scriptHandler)\n        script.removeEventListener('error', scriptHandler)\n\n        this.scripts[url] = e.type === 'load'\n\n        if (e.type === 'load') {\n          resolve()\n        } else {\n          reject()\n        }\n      }\n\n      script.addEventListener('load', scriptHandler)\n      script.addEventListener('error', scriptHandler)\n    })\n  }\n}\n\nconst scriptLoader = new ScriptLoader()\n\nexport default scriptLoader\n"],"names":["initTweakwise","window","auto","input","listerPage","addEventListener","selection","decodedUrl","decodeURI","location","hash","indexOf","split","forEach","o","x","enabled","getSelection","tweakwiseListerPage","output","cid","tweakwiseConfig","query","on","updatePageTitle","setOpen","tweakwiseSuggestions","instancekey","searchPhrases","handle","event","href","concat","url","data","match","setQuery","_ref","_data$properties","titleNode","document","querySelector","searchTerm","properties","searchterm","textContent","ScriptLoader","_classCallCheck","this","scripts","key","value","id","_this","Promise","resolve","reject","requestedScript","loaded","error","script","createElement","type","src","body","appendChild","scriptHandler","e","removeEventListener","loadScript","then","console","log"],"ignoreList":[],"sourceRoot":""}