{"version":3,"sources":["webpack://app.[name]/./source/App/Views/Containers/BoxeverContainer.js","webpack://app.[name]/./source/App/Views/hooks/index.js","webpack://app.[name]/./source/App/Views/hooks/useScript.js"],"names":["_interopRequireDefault","Object","defineProperty","exports","value","default","_slicedToArray2","_immutable","_react","_reactRedux","_momentEs","_dates","_flightType","_personalisation","_hooks","_functions","_object","_performance","RETURN","FLIGHT_TYPE_IDS","ONE_WAY","timeouts","cachedResults","formatDate","date","format","DEFAULT_BOOKING_ENGINE_DATE_FORMAT","fetchBoxever","boxeverData","name","sanitizeDataProps","_ref","posCode","settings","isRecentSearch","RECENT_SEARCH","requestObject","context","browserId","window","Boxever","getID","channel","clientKey","pointOfSale","friendlyId","RECENT_SEARCH_WEB","cacheKey","JSON","stringify","Promise","resolve","reject","sanitize","createPerformanceMarker","BOXEVER_START_MARKER","clearTimeout","setTimeout","Error","concat","TIMEOUT_DURATION","callFlows","response","recentSearches","BOXEVER_END_MARKER","measurePerformance","error","callBoxeverAPI","_ref2","airportCodes","dateFormatLabel","result","fromJS","map","item","newItem","cameliseKeys","departureDateDisplay","departureDate","returnDateDisplay","returnDate","DEFAULT_DATE_FORMAT","departureDateObject","Date","departure_date","returnDateObject","return_date","flightType","originName","getIn","originIata","destinationName","destinationIata","List","sanitizeRecentSearches","_ref3","origin","rawData","get","destinationCode","destination_code","ref","tracking","sanitizeRecommended","then","catch","results","filteredResults","filter","isRouteValid","slice","maxItems","BoxeverContainer","props","onRender","onLoading","_props$settings","apiUrl","createApiUrl","enabled","scriptUrl","webFlowTarget","cookieExpiryInDays","missingRequiredSettings","_useState","useState","_useState2","isLoading","setIsLoading","_useState3","Map","recentSearch","recommended","_useState4","setResults","useEffect","_boxever_settings","client_key","cookie_domain","cookies_only","cookie_expiry_in_days","target","web_flow_target","scriptSrc","undefined","SCRIPT_ALREADY_LOADED","_useScript","useScript","BOXEVER_SCRIPT_ID","_useScript2","isBoxeverReady","boxeverScriptError","isMounted","currencyCode","languageName","maxRecentSearch","maxRecommendedDestination","shouldFetchRecommended","sanitizeRecentSearchData","sanitizeRecommendedData","fetchRecentSearch","fetchRecommended","enableBoxeverRecommended","RECOMMENDED","all","_ref4","_ref5","recentSearchResult","recommendedResult","defaultProps","DEFAULT_RECENT_SEARCH_FORMAT","noop","MAX_RECENT_SEARCH","MAX_RECOMMENDED_DESTINATION","_default","connect","state","config","flightSchedule","_typeof","enumerable","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","scriptID","scriptLoader","cachedScripts","alreadyLoaded","loaded","initialState","DEFAULT_STATE","LOADED_STATE","ERROR_STATE","setState","onScriptLoad","onScriptError","loadingScript","script","addEventListener","removeEventListener","document","createElement","src","async","id","body","appendChild"],"mappings":"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","file":"scripts/46.bundle.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nrequire(\"core-js/modules/es6.object.to-string.js\");\n\nrequire(\"core-js/modules/es6.promise.js\");\n\nrequire(\"core-js/modules/es6.array.map.js\");\n\nrequire(\"core-js/modules/es6.array.filter.js\");\n\nrequire(\"core-js/modules/es6.array.slice.js\");\n\nrequire(\"core-js/modules/es6.string.iterator.js\");\n\nrequire(\"core-js/modules/es6.array.iterator.js\");\n\nrequire(\"core-js/modules/web.dom.iterable.js\");\n\nvar _immutable = require(\"immutable\");\n\nvar _react = require(\"react\");\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _momentEs = _interopRequireDefault(require(\"moment-es6\"));\n\nvar _dates = require(\"../../Constants/dates\");\n\nvar _flightType = require(\"../../Constants/flightType\");\n\nvar _personalisation = require(\"../../Constants/personalisation\");\n\nvar _hooks = require(\"../hooks\");\n\nvar _functions = require(\"../../Utils/functions\");\n\nvar _object = require(\"../../Utils/object\");\n\nvar _performance = require(\"../../Utils/performance\");\n\n// constants\n// state\n// hooks\n// utils\nvar RETURN = _flightType.FLIGHT_TYPE_IDS.RETURN,\n    ONE_WAY = _flightType.FLIGHT_TYPE_IDS.ONE_WAY;\nvar timeouts = {};\nvar cachedResults = {};\n\nvar createRequestObject = function createRequestObject(_ref) {\n  var posCode = _ref.posCode,\n      settings = _ref.settings;\n  return {\n    context: {\n      browserId: window.Boxever && window.Boxever.getID(),\n      channel: settings.channel,\n      clientKey: settings.clientKey,\n      pointOfSale: posCode,\n      friendlyId: _personalisation.RECENT_SEARCH_WEB\n    }\n  };\n};\n\nvar callBoxeverAPI = function callBoxeverAPI(requestObject, name, sanitize) {\n  (0, _performance.createPerformanceMarker)(_personalisation.BOXEVER_START_MARKER + name);\n  return new Promise(function (resolve, reject) {\n    window.clearTimeout(timeouts[name]);\n    timeouts[name] = window.setTimeout(function () {\n      return reject(new Error(\"Boxever API \\\"\".concat(name, \"\\\" timeout. Slower than \").concat(_personalisation.TIMEOUT_DURATION)));\n    }, _personalisation.TIMEOUT_DURATION);\n\n    try {\n      window.Boxever.callFlows(requestObject, function (response) {\n        var recentSearches = response && response.recentSearches;\n\n        if (recentSearches) {\n          (0, _performance.createPerformanceMarker)(_personalisation.BOXEVER_END_MARKER + name);\n          (0, _performance.measurePerformance)(\"boxever_request_\".concat(name), _personalisation.BOXEVER_START_MARKER + name, _personalisation.BOXEVER_END_MARKER + name);\n        }\n\n        window.clearTimeout(timeouts[name]);\n        resolve(sanitize(response));\n      });\n    } catch (error) {\n      window.clearTimeout(timeouts[name]);\n      reject(error);\n    }\n  });\n};\n\nvar formatDate = function formatDate(date, format) {\n  return (0, _momentEs.default)(date, _dates.DEFAULT_BOOKING_ENGINE_DATE_FORMAT).format(format);\n};\n\nvar sanitizeRecentSearches = function sanitizeRecentSearches(response, _ref2, cacheKey) {\n  var airportCodes = _ref2.airportCodes,\n      dateFormatLabel = _ref2.dateFormatLabel;\n  var recentSearches = response.recentSearches || [];\n  var result = recentSearches ? (0, _immutable.fromJS)(recentSearches.map(function (item) {\n    var newItem = (0, _object.cameliseKeys)(item);\n    newItem.departureDateDisplay = formatDate(newItem.departureDate, dateFormatLabel);\n    newItem.returnDateDisplay = formatDate(newItem.returnDate, dateFormatLabel);\n    newItem.departureDate = formatDate(newItem.departureDate, _dates.DEFAULT_DATE_FORMAT);\n    newItem.departureDateObject = new Date(item.departure_date);\n    newItem.returnDate = formatDate(newItem.returnDate, _dates.DEFAULT_DATE_FORMAT);\n    newItem.returnDateObject = new Date(item.return_date);\n    newItem.flightType = newItem.flightType === 'RT' ? RETURN : ONE_WAY;\n    newItem.originName = airportCodes.getIn([newItem.originIata, 'Name']);\n    newItem.destinationName = airportCodes.getIn([newItem.destinationIata, 'Name']);\n    return newItem;\n  })) : (0, _immutable.List)();\n\n  if (response.result) {\n    cachedResults[cacheKey] = result;\n  }\n\n  return result;\n};\n\nvar sanitizeRecommended = function sanitizeRecommended(response, _ref3, cacheKey) {\n  var airportCodes = _ref3.airportCodes,\n      origin = _ref3.origin;\n  var rawData = (0, _functions.get)(response, 'result.data.offerGroups.0.offerItems.items');\n  var result = rawData ? (0, _immutable.fromJS)(rawData.map(function (item) {\n    return {\n      destinationCode: item.destination_code,\n      destinationName: airportCodes.getIn([item.destination_code, 'Name']),\n      originName: airportCodes.getIn([origin, 'Name']),\n      ref: item.ref,\n      tracking: (0, _object.cameliseKeys)(item.tracking)\n    };\n  })) : (0, _immutable.List)();\n\n  if (response.result) {\n    cachedResults[cacheKey] = result;\n  }\n\n  return result;\n};\n\nvar fetchBoxever = function fetchBoxever(boxeverData, name, sanitizeDataProps) {\n  var isRecentSearch = name === _personalisation.RECENT_SEARCH;\n  var requestObject = createRequestObject(boxeverData);\n  var cacheKey = JSON.stringify(requestObject);\n  return new Promise(function (resolve, reject) {\n    if (cachedResults[cacheKey]) {\n      return resolve(cachedResults[cacheKey]);\n    }\n\n    var sanitize = function sanitize(response) {\n      return isRecentSearch ? sanitizeRecentSearches(response, sanitizeDataProps, cacheKey) : sanitizeRecommended(response, sanitizeDataProps, cacheKey);\n    };\n\n    return callBoxeverAPI(requestObject, name, sanitize).then(resolve).catch(reject);\n  }).then(function (results) {\n    // Filter the results based on the origin + return only the `maxItems` first items\n    var filteredResults = results;\n\n    if (sanitizeDataProps.origin) {\n      filteredResults = name === _personalisation.RECENT_SEARCH ? results.filter(function (result) {\n        return result.get('originIata') === sanitizeDataProps.origin;\n      }) : results.filter(function (result) {\n        return sanitizeDataProps.isRouteValid(sanitizeDataProps.origin, result.get('destinationCode'));\n      });\n    }\n\n    return filteredResults.slice(0, sanitizeDataProps.maxItems);\n  });\n};\n\nvar BoxeverContainer = function BoxeverContainer(props) {\n  var onRender = props.onRender,\n      onLoading = props.onLoading,\n      posCode = props.posCode;\n  var _props$settings = props.settings,\n      apiUrl = _props$settings.apiUrl,\n      clientKey = _props$settings.clientKey,\n      createApiUrl = _props$settings.createApiUrl,\n      enabled = _props$settings.enabled,\n      scriptUrl = _props$settings.scriptUrl,\n      webFlowTarget = _props$settings.webFlowTarget,\n      cookieExpiryInDays = _props$settings.cookieExpiryInDays;\n  var missingRequiredSettings = !(apiUrl && clientKey && createApiUrl && enabled && onRender && scriptUrl);\n\n  var _useState = (0, _react.useState)(false),\n      _useState2 = (0, _slicedToArray2.default)(_useState, 2),\n      isLoading = _useState2[0],\n      setIsLoading = _useState2[1];\n\n  var _useState3 = (0, _react.useState)((0, _immutable.Map)({\n    recentSearch: (0, _immutable.List)(),\n    recommended: (0, _immutable.List)()\n  })),\n      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),\n      results = _useState4[0],\n      setResults = _useState4[1];\n\n  (0, _react.useEffect)(function () {\n    /* eslint-disable-next-line no-underscore-dangle */\n    if (apiUrl && clientKey && posCode && webFlowTarget && !window._boxever_settings) {\n      /* eslint-disable-next-line no-underscore-dangle */\n      window._boxever_settings = {\n        client_key: clientKey,\n        cookie_domain: '.jetstar.com',\n        cookies_only: true,\n        cookie_expiry_in_days: cookieExpiryInDays,\n        target: apiUrl,\n        web_flow_target: webFlowTarget,\n        pointOfSale: posCode\n      };\n    }\n  }, [clientKey, apiUrl, posCode, webFlowTarget, cookieExpiryInDays]);\n  var scriptSrc = window.Boxever !== undefined ? _hooks.SCRIPT_ALREADY_LOADED : scriptUrl;\n\n  var _useScript = (0, _hooks.useScript)(scriptSrc, _personalisation.BOXEVER_SCRIPT_ID),\n      _useScript2 = (0, _slicedToArray2.default)(_useScript, 2),\n      isBoxeverReady = _useScript2[0],\n      boxeverScriptError = _useScript2[1];\n\n  (0, _react.useEffect)(function () {\n    var isMounted = true;\n    var airportCodes = props.airportCodes,\n        currencyCode = props.currencyCode,\n        dateFormatLabel = props.dateFormatLabel,\n        isRouteValid = props.isRouteValid,\n        languageName = props.languageName,\n        maxRecentSearch = props.maxRecentSearch,\n        maxRecommendedDestination = props.maxRecommendedDestination,\n        origin = props.origin,\n        settings = props.settings,\n        shouldFetchRecommended = props.shouldFetchRecommended;\n\n    if (missingRequiredSettings || !isBoxeverReady || boxeverScriptError) {\n      return function () {};\n    }\n\n    var boxeverData = {\n      currencyCode: currencyCode,\n      languageName: languageName,\n      posCode: posCode,\n      settings: settings\n    };\n    var sanitizeRecentSearchData = {\n      airportCodes: airportCodes,\n      dateFormatLabel: dateFormatLabel,\n      maxItems: maxRecentSearch,\n      origin: origin\n    };\n    var sanitizeRecommendedData = {\n      airportCodes: airportCodes,\n      isRouteValid: isRouteValid,\n      maxItems: maxRecommendedDestination,\n      origin: origin\n    };\n    var fetchRecentSearch = fetchBoxever(boxeverData, _personalisation.RECENT_SEARCH, sanitizeRecentSearchData).catch(function () {\n      return (0, _immutable.List)();\n    }); //TODO : refactor to new boxever callFlows\n\n    var fetchRecommended = shouldFetchRecommended && settings.enableBoxeverRecommended ? fetchBoxever(boxeverData, _personalisation.RECOMMENDED, sanitizeRecommendedData).catch(function () {\n      return (0, _immutable.List)();\n    }) : (0, _immutable.List)();\n    setIsLoading(true);\n    Promise.all([fetchRecentSearch, fetchRecommended]).then(function (_ref4) {\n      var _ref5 = (0, _slicedToArray2.default)(_ref4, 2),\n          recentSearchResult = _ref5[0],\n          recommendedResult = _ref5[1];\n\n      // ensure component is still mounted before async promises update the state\n      if (isMounted) {\n        setResults((0, _immutable.Map)({\n          recentSearch: recentSearchResult,\n          recommended: recommendedResult\n        }));\n        setIsLoading(false);\n      }\n    }).catch(function () {\n      isMounted && setIsLoading(false);\n    });\n    return function () {\n      isMounted = false;\n    };\n  }, [isBoxeverReady, boxeverScriptError, missingRequiredSettings, props, posCode]);\n  return isLoading ? onLoading() : onRender(results);\n};\n\nBoxeverContainer.defaultProps = {\n  dateFormatLabel: _dates.DEFAULT_RECENT_SEARCH_FORMAT,\n  isRouteValid: _functions.noop,\n  maxRecentSearch: _personalisation.MAX_RECENT_SEARCH,\n  maxRecommendedDestination: _personalisation.MAX_RECOMMENDED_DESTINATION,\n  onLoading: function onLoading() {\n    return null;\n  },\n  shouldFetchRecommended: false\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n  var config = state.config,\n      flightSchedule = state.flightSchedule;\n  return {\n    airportCodes: flightSchedule.getIn(['data', 'Airports', 'ById']),\n    posCode: config.getIn(['data', 'posCode']),\n    settings: (0, _functions.get)(window, 'Jetstar.features.boxever') || {}\n  };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps)(BoxeverContainer);\n\nexports.default = _default;","\"use strict\";\n\nrequire(\"core-js/modules/es6.weak-map.js\");\n\nrequire(\"core-js/modules/es6.string.iterator.js\");\n\nrequire(\"core-js/modules/es6.object.to-string.js\");\n\nrequire(\"core-js/modules/es6.array.iterator.js\");\n\nrequire(\"core-js/modules/web.dom.iterable.js\");\n\nrequire(\"core-js/modules/es6.object.get-own-property-descriptor.js\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"SCRIPT_ALREADY_LOADED\", {\n  enumerable: true,\n  get: function get() {\n    return _useScript.SCRIPT_ALREADY_LOADED;\n  }\n});\nObject.defineProperty(exports, \"useScript\", {\n  enumerable: true,\n  get: function get() {\n    return _useScript.default;\n  }\n});\n\nvar _useScript = _interopRequireWildcard(require(\"./useScript\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SCRIPT_ALREADY_LOADED = void 0;\nexports.default = useScript;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _react = require(\"react\");\n\n// Inspired by: https://usehooks.com/useScript/\nvar DEFAULT_STATE = {\n  loaded: false,\n  error: false\n};\nvar LOADED_STATE = {\n  loaded: true,\n  error: false\n};\nvar ERROR_STATE = {\n  loaded: true,\n  error: true\n};\nvar cachedScripts = {}; // In the case we know the script has already been loaded externally (via a head tag for instance)\n// and because we can't use a hook inside a conditional statement\n// Could be use as:\n//   useScript(window.Boxever !== undefined ? SCRIPT_ALREADY_LOADED : 'https://url-to-boxever-script.com/script.js')\n\nvar SCRIPT_ALREADY_LOADED = 'SCRIPT_ALREADY_LOADED';\nexports.SCRIPT_ALREADY_LOADED = SCRIPT_ALREADY_LOADED;\n\nfunction useScript(scriptSrc, scriptID) {\n  var scriptLoader = cachedScripts[scriptSrc];\n  var alreadyLoaded = scriptSrc === SCRIPT_ALREADY_LOADED || scriptLoader && scriptLoader.loaded;\n  var initialState = DEFAULT_STATE;\n\n  if (alreadyLoaded) {\n    initialState = LOADED_STATE;\n  } else if (!scriptSrc) {\n    initialState = ERROR_STATE;\n  }\n\n  var _useState = (0, _react.useState)(initialState),\n      _useState2 = (0, _slicedToArray2.default)(_useState, 2),\n      state = _useState2[0],\n      setState = _useState2[1];\n\n  (0, _react.useEffect)(function () {\n    var onScriptLoad = function onScriptLoad() {\n      cachedScripts[scriptSrc].loaded = true;\n      setState(LOADED_STATE);\n    };\n\n    var onScriptError = function onScriptError() {\n      // Remove it from cache, so that it can be re-attempted if someone tries to load it again\n      delete cachedScripts[scriptSrc];\n      setState(ERROR_STATE);\n    };\n\n    if (alreadyLoaded || !scriptSrc) {\n      return function () {};\n    }\n\n    if (scriptLoader && !scriptLoader.loaded) {\n      var loadingScript = scriptLoader.script;\n      loadingScript.addEventListener('load', onScriptLoad);\n      loadingScript.addEventListener('error', onScriptError);\n      return function () {\n        loadingScript.removeEventListener('load', onScriptLoad);\n        loadingScript.removeEventListener('error', onScriptError);\n      };\n    }\n\n    var script = document.createElement('script');\n    script.src = scriptSrc;\n    script.async = true;\n\n    if (scriptID) {\n      script.id = scriptID;\n    }\n\n    script.addEventListener('load', onScriptLoad);\n    script.addEventListener('error', onScriptError);\n    cachedScripts[scriptSrc] = {\n      loaded: false,\n      script: script\n    };\n    document.body && document.body.appendChild(script);\n    return function () {\n      script.removeEventListener('load', onScriptLoad);\n      script.removeEventListener('error', onScriptError);\n    };\n  }, [alreadyLoaded, scriptID, scriptLoader, scriptSrc]);\n  var loaded = state.loaded,\n      error = state.error;\n  return [loaded, error];\n}"],"sourceRoot":""}