{"version":3,"sources":["node_modules/dayjs/locale/en.js","node_modules/dayjs/locale/fr.js","node_modules/dayjs/plugin/localizedFormat.js","node_modules/deep-freeze-strict/index.js","node_modules/hammerjs/hammer.js","src/app/unregister-service-worker.ts","node_modules/@angular/service-worker/fesm2022/service-worker.mjs","src/app/core/helpers/app-pre-boot-initializer.ts","src/app/core/helpers/root-injector.ts","node_modules/@ngx-translate/http-loader/fesm2020/ngx-translate-http-loader.mjs","src/app/core/helpers/translate-http-loader.ts","node_modules/@angular/common/locales/fr.mjs","src/app/core/helpers/translation-initializer-factory.ts","src/app/core/http/accept-language.interceptor.ts","node_modules/@sentry/utils/esm/tracing.js","src/app/core/http/context-interceptor/context.interceptor.ts","src/app/core/http/encode-params-codec.ts","src/app/core/http/encode-params.interceptor.ts","src/app/core/http/request.interceptor.ts","src/app/core/http/unsafe-token.interceptor.ts","src/app/core/models/dynamic-locale-id/dynamic-locale-id.ts","src/app/core/modules/auth/auth.config.ts","src/app/core/modules/auth/oauth-module.config.ts","src/app/core/modules/auth/auth.module.ts","src/app/core/modules/dayjs/dayjs.module.ts","src/app/core/modules/dayjs/dayjs.service.ts","node_modules/@sentry/tracing/node_modules/tslib/tslib.es6.js","node_modules/@sentry/tracing/esm/flags.js","node_modules/@sentry/tracing/esm/utils.js","node_modules/@sentry/tracing/esm/errors.js","node_modules/@sentry/tracing/esm/constants.js","node_modules/@sentry/tracing/esm/span.js","node_modules/@sentry/tracing/esm/transaction.js","node_modules/@sentry/tracing/esm/idletransaction.js","node_modules/@sentry/tracing/esm/hubextensions.js","node_modules/@sentry/tracing/esm/browser/backgroundtab.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","node_modules/@sentry/tracing/esm/browser/metrics.js","node_modules/@sentry/tracing/esm/browser/request.js","node_modules/@sentry/tracing/esm/browser/router.js","node_modules/@sentry/tracing/esm/browser/browsertracing.js","node_modules/@sentry/tracing/esm/index.js","src/app/core/modules/sentry/sentry.module.ts","src/app/core/modules/core.module.ts","src/app/features/thematics/+state/thematics.effects.ts","src/app/features/thematics/+state/thematics.reducer.ts","src/app/features/thematics/thematics.module.ts","node_modules/@ngrx/router-store/fesm2022/ngrx-router-store.mjs","node_modules/@ngrx/store-devtools/fesm2022/ngrx-store-devtools.mjs","src/app/shared/components/organisms/consent-banner/consent-banner.component.ts","src/app/shared/components/organisms/consent-banner/consent-banner.component.html","src/app/shared/components/organisms/consent-banner/consent-banner.module.ts","src/app/store/router/custom-route-serializer.ts","node_modules/ngrx-store-freeze/es6/src/index.js","src/app/configs/favicon.config.ts","src/app/app.component.ts","src/app/app.component.html","src/app/store/settings/settings.actions.ts","src/app/store/settings/settings.state.ts","src/app/store/settings/settings.reducer.ts","src/app/store/app.state.ts","src/app/store/settings/settings.service.ts","src/app/store/settings/settings.effects.ts","src/app/app.module.ts","src/main.ts"],"sourcesContent":["!function (e, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = n() : \"function\" == typeof define && define.amd ? define(n) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_locale_en = n();\n}(this, function () {\n \"use strict\";\n\n return {\n name: \"en\",\n weekdays: \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),\n months: \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),\n ordinal: function (e) {\n var n = [\"th\", \"st\", \"nd\", \"rd\"],\n t = e % 100;\n return \"[\" + e + (n[(t - 20) % 10] || n[t] || n[0]) + \"]\";\n }\n };\n});","!function (e, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = n(require(\"dayjs\")) : \"function\" == typeof define && define.amd ? define([\"dayjs\"], n) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_locale_fr = n(e.dayjs);\n}(this, function (e) {\n \"use strict\";\n\n function n(e) {\n return e && \"object\" == typeof e && \"default\" in e ? e : {\n default: e\n };\n }\n var t = n(e),\n i = {\n name: \"fr\",\n weekdays: \"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),\n weekdaysShort: \"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),\n weekdaysMin: \"di_lu_ma_me_je_ve_sa\".split(\"_\"),\n months: \"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),\n monthsShort: \"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),\n weekStart: 1,\n yearStart: 4,\n formats: {\n LT: \"HH:mm\",\n LTS: \"HH:mm:ss\",\n L: \"DD/MM/YYYY\",\n LL: \"D MMMM YYYY\",\n LLL: \"D MMMM YYYY HH:mm\",\n LLLL: \"dddd D MMMM YYYY HH:mm\"\n },\n relativeTime: {\n future: \"dans %s\",\n past: \"il y a %s\",\n s: \"quelques secondes\",\n m: \"une minute\",\n mm: \"%d minutes\",\n h: \"une heure\",\n hh: \"%d heures\",\n d: \"un jour\",\n dd: \"%d jours\",\n M: \"un mois\",\n MM: \"%d mois\",\n y: \"un an\",\n yy: \"%d ans\"\n },\n ordinal: function (e) {\n return \"\" + e + (1 === e ? \"er\" : \"\");\n }\n };\n return t.default.locale(i, null, !0), i;\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_localizedFormat = t();\n}(this, function () {\n \"use strict\";\n\n var e = {\n LTS: \"h:mm:ss A\",\n LT: \"h:mm A\",\n L: \"MM/DD/YYYY\",\n LL: \"MMMM D, YYYY\",\n LLL: \"MMMM D, YYYY h:mm A\",\n LLLL: \"dddd, MMMM D, YYYY h:mm A\"\n };\n return function (t, o, n) {\n var r = o.prototype,\n i = r.format;\n n.en.formats = e, r.format = function (t) {\n void 0 === t && (t = \"YYYY-MM-DDTHH:mm:ssZ\");\n var o = this.$locale().formats,\n n = function (t, o) {\n return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (t, n, r) {\n var i = r && r.toUpperCase();\n return n || o[r] || e[r] || o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (e, t, o) {\n return t || o.slice(1);\n });\n });\n }(t, void 0 === o ? {} : o);\n return i.call(this, n);\n };\n };\n});","module.exports = function deepFreeze(o) {\n Object.freeze(o);\n var oIsFunction = typeof o === \"function\";\n var hasOwnProp = Object.prototype.hasOwnProperty;\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (hasOwnProp.call(o, prop) && (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) && o[prop] !== null && (typeof o[prop] === \"object\" || typeof o[prop] === \"function\") && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n};","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function (window, document, exportName, undefined) {\n 'use strict';\n\n var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\n var TEST_ELEMENT = document.createElement('div');\n var TYPE_FUNCTION = 'function';\n var round = Math.round;\n var abs = Math.abs;\n var now = Date.now;\n\n /**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\n function setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n }\n\n /**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n }\n\n /**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\n function each(obj, iterator, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n }\n\n /**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\n function deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\n var assign;\n if (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n } else {\n assign = Object.assign;\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n var extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n }, 'extend', 'Use `assign`.');\n\n /**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n var merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n }, 'merge', 'Use `assign`.');\n\n /**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n function inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign(childP, properties);\n }\n }\n\n /**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\n function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n }\n\n /**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n function boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n }\n\n /**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\n function ifUndefined(val1, val2) {\n return val1 === undefined ? val2 : val1;\n }\n\n /**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n }\n\n /**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n }\n\n /**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\n function hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\n function inStr(str, find) {\n return str.indexOf(find) > -1;\n }\n\n /**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n function splitStr(str) {\n return str.trim().split(/\\s+/g);\n }\n\n /**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\n function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n i++;\n }\n return -1;\n }\n }\n\n /**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\n function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n }\n\n /**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n function uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n }\n\n /**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n function prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n }\n\n /**\n * get a unique id\n * @returns {number} uniqueId\n */\n var _uniqueId = 1;\n function uniqueId() {\n return _uniqueId++;\n }\n\n /**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\n function getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n }\n var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n var SUPPORT_TOUCH = ('ontouchstart' in window);\n var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\n var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n var INPUT_TYPE_TOUCH = 'touch';\n var INPUT_TYPE_PEN = 'pen';\n var INPUT_TYPE_MOUSE = 'mouse';\n var INPUT_TYPE_KINECT = 'kinect';\n var COMPUTE_INTERVAL = 25;\n var INPUT_START = 1;\n var INPUT_MOVE = 2;\n var INPUT_END = 4;\n var INPUT_CANCEL = 8;\n var DIRECTION_NONE = 1;\n var DIRECTION_LEFT = 2;\n var DIRECTION_RIGHT = 4;\n var DIRECTION_UP = 8;\n var DIRECTION_DOWN = 16;\n var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\n var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\n var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n var PROPS_XY = ['x', 'y'];\n var PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n /**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n this.init();\n }\n Input.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function () {},\n /**\n * bind the events\n */\n init: function () {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n /**\n * unbind the events\n */\n destroy: function () {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n };\n\n /**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n function createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n }\n\n /**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n function inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n }\n\n /**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n function computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n }\n function computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n }\n\n /**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n function computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity,\n velocityX,\n velocityY,\n direction;\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n }\n\n /**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n }\n\n /**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n function getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0,\n y = 0,\n i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n }\n\n /**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\n function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n }\n\n /**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n }\n\n /**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n }\n\n /**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n }\n\n /**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n }\n\n /**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n }\n var MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n };\n var MOUSE_ELEMENT_EVENTS = 'mousedown';\n var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n /**\n * Mouse events input\n * @constructor\n * @extends Input\n */\n function MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n }\n inherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n });\n var POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n };\n\n // in IE10 the pointer types is defined as an enum\n var IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n };\n var POINTER_ELEMENT_EVENTS = 'pointerdown';\n var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n // IE10 has prefixed support, and case-sensitive\n if (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n }\n\n /**\n * Pointer events input\n * @constructor\n * @extends Input\n */\n function PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n Input.apply(this, arguments);\n this.store = this.manager.session.pointerEvents = [];\n }\n inherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType == INPUT_TYPE_TOUCH;\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n });\n var SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\n var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Touch events input\n * @constructor\n * @extends Input\n */\n function SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n Input.apply(this, arguments);\n }\n inherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n return [all, changed];\n }\n var TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n function TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n Input.apply(this, arguments);\n }\n inherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n }\n\n /**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\n var DEDUP_TIMEOUT = 2500;\n var DEDUP_DISTANCE = 25;\n function TouchMouseInput() {\n Input.apply(this, arguments);\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n this.primaryTouch = null;\n this.lastTouches = [];\n }\n inherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType == INPUT_TYPE_TOUCH,\n isMouse = inputData.pointerType == INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n this.callback(manager, inputEvent, inputData);\n },\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n });\n function recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n }\n function setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function () {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n }\n function isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX,\n y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x),\n dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n }\n var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\n var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n // magical touchAction value\n var TOUCH_ACTION_COMPUTE = 'compute';\n var TOUCH_ACTION_AUTO = 'auto';\n var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n var TOUCH_ACTION_NONE = 'none';\n var TOUCH_ACTION_PAN_X = 'pan-x';\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n var TOUCH_ACTION_MAP = getTouchActionProps();\n\n /**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n TouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function (value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n /**\n * just re-set the touchAction value\n */\n update: function () {\n this.set(this.manager.options.touchAction);\n },\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function () {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function (input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n },\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function (srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n };\n\n /**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n }\n function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n }\n\n /**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n var STATE_POSSIBLE = 1;\n var STATE_BEGAN = 2;\n var STATE_CHANGED = 4;\n var STATE_ENDED = 8;\n var STATE_RECOGNIZED = STATE_ENDED;\n var STATE_CANCELLED = 16;\n var STATE_FAILED = 32;\n\n /**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n function Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n this.id = uniqueId();\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n Recognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function (options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function () {\n return this.requireFail.length > 0;\n },\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function (otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function (input) {\n var self = this;\n var state = this.state;\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function (input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function () {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function (inputData) {},\n // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function () {},\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function () {}\n };\n\n /**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\n function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n }\n\n /**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\n function directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n }\n\n /**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\n function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n }\n\n /**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n function AttrRecognizer() {\n Recognizer.apply(this, arguments);\n }\n inherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function (input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function (input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n });\n\n /**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n this.pX = null;\n this.pY = null;\n }\n inherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n getTouchAction: function () {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n directionTest: function (input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n attrTest: function (input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n },\n emit: function (input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n function PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n emit: function (input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n function PressRecognizer() {\n Recognizer.apply(this, arguments);\n this._timer = null;\n this._input = null;\n }\n inherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_AUTO];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function (input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n function RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n });\n\n /**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n getTouchAction: function () {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n attrTest: function (input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return this._super.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n emit: function (input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n }\n });\n\n /**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n function TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n inherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_MANIPULATION];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n failTimeout: function () {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function () {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n }\n\n /**\n * @const {string}\n */\n Hammer.VERSION = '2.0.7';\n\n /**\n * default settings\n * @namespace\n */\n Hammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {\n enable: false\n }], [PinchRecognizer, {\n enable: false\n }, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n }, ['tap']], [PressRecognizer]],\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n };\n var STOP = 1;\n var FORCED_STOP = 2;\n\n /**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n Manager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function (options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function (force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n curRecognizer = session.curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (\n // 1\n !curRecognizer || recognizer == curRecognizer ||\n // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function (recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function (recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n },\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function (recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n return this;\n },\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function (events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function (events, handler) {\n if (events === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function (event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function () {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n };\n\n /**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n function toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n }\n\n /**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n function triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n }\n assign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n });\n\n // this prevents errors when Hammer is loaded in the presence of an AMD\n // style loader but by script tag, not by the loader.\n var freeGlobal = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}; // jshint ignore:line\n freeGlobal.Hammer = Hammer;\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Hammer;\n });\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n } else {\n window[exportName] = Hammer;\n }\n})(window, document, 'Hammer');","/**\n * Unregisters all currently registered service workers and returns a boolean that indicates\n * whether there were service workers registered or not.\n */\nexport const unregisterServiceWorkers = async (): Promise => {\n if (!navigator.serviceWorker) {\n return false;\n }\n\n const registrations = await navigator.serviceWorker.getRegistrations();\n\n const unregistrations = registrations.map(registration => registration.unregister().catch());\n\n // Await all unregistrations\n await Promise.all(unregistrations);\n\n return registrations.length > 0;\n};\n","/**\n * @license Angular v18.1.3\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, NgZone, ApplicationRef, makeEnvironmentProviders, PLATFORM_ID, APP_INITIALIZER, Injector, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { defer, throwError, fromEvent, of, concat, Subject, NEVER, merge } from 'rxjs';\nimport { map, filter, switchMap, publish, take, tap, delay } from 'rxjs/operators';\nconst ERR_SW_NOT_SUPPORTED = 'Service workers are disabled or not supported by this browser';\nfunction errorObservable(message) {\n return defer(() => throwError(new Error(message)));\n}\n/**\n * @publicApi\n */\nclass NgswCommChannel {\n constructor(serviceWorker) {\n this.serviceWorker = serviceWorker;\n if (!serviceWorker) {\n this.worker = this.events = this.registration = errorObservable(ERR_SW_NOT_SUPPORTED);\n } else {\n const controllerChangeEvents = fromEvent(serviceWorker, 'controllerchange');\n const controllerChanges = controllerChangeEvents.pipe(map(() => serviceWorker.controller));\n const currentController = defer(() => of(serviceWorker.controller));\n const controllerWithChanges = concat(currentController, controllerChanges);\n this.worker = controllerWithChanges.pipe(filter(c => !!c));\n this.registration = this.worker.pipe(switchMap(() => serviceWorker.getRegistration()));\n const rawEvents = fromEvent(serviceWorker, 'message');\n const rawEventPayload = rawEvents.pipe(map(event => event.data));\n const eventsUnconnected = rawEventPayload.pipe(filter(event => event && event.type));\n const events = eventsUnconnected.pipe(publish());\n events.connect();\n this.events = events;\n }\n }\n postMessage(action, payload) {\n return this.worker.pipe(take(1), tap(sw => {\n sw.postMessage({\n action,\n ...payload\n });\n })).toPromise().then(() => undefined);\n }\n postMessageWithOperation(type, payload, operationNonce) {\n const waitForOperationCompleted = this.waitForOperationCompleted(operationNonce);\n const postMessage = this.postMessage(type, payload);\n return Promise.all([postMessage, waitForOperationCompleted]).then(([, result]) => result);\n }\n generateNonce() {\n return Math.round(Math.random() * 10000000);\n }\n eventsOfType(type) {\n let filterFn;\n if (typeof type === 'string') {\n filterFn = event => event.type === type;\n } else {\n filterFn = event => type.includes(event.type);\n }\n return this.events.pipe(filter(filterFn));\n }\n nextEventOfType(type) {\n return this.eventsOfType(type).pipe(take(1));\n }\n waitForOperationCompleted(nonce) {\n return this.eventsOfType('OPERATION_COMPLETED').pipe(filter(event => event.nonce === nonce), take(1), map(event => {\n if (event.result !== undefined) {\n return event.result;\n }\n throw new Error(event.error);\n })).toPromise();\n }\n get isEnabled() {\n return !!this.serviceWorker;\n }\n}\n\n/**\n * Subscribe and listen to\n * [Web Push\n * Notifications](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices) through\n * Angular Service Worker.\n *\n * @usageNotes\n *\n * You can inject a `SwPush` instance into any component or service\n * as a dependency.\n *\n * \n *\n * To subscribe, call `SwPush.requestSubscription()`, which asks the user for permission.\n * The call returns a `Promise` with a new\n * [`PushSubscription`](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)\n * instance.\n *\n * \n *\n * A request is rejected if the user denies permission, or if the browser\n * blocks or does not support the Push API or ServiceWorkers.\n * Check `SwPush.isEnabled` to confirm status.\n *\n * Invoke Push Notifications by pushing a message with the following payload.\n *\n * ```ts\n * {\n * \"notification\": {\n * \"actions\": NotificationAction[],\n * \"badge\": USVString,\n * \"body\": DOMString,\n * \"data\": any,\n * \"dir\": \"auto\"|\"ltr\"|\"rtl\",\n * \"icon\": USVString,\n * \"image\": USVString,\n * \"lang\": DOMString,\n * \"renotify\": boolean,\n * \"requireInteraction\": boolean,\n * \"silent\": boolean,\n * \"tag\": DOMString,\n * \"timestamp\": DOMTimeStamp,\n * \"title\": DOMString,\n * \"vibrate\": number[]\n * }\n * }\n * ```\n *\n * Only `title` is required. See `Notification`\n * [instance\n * properties](https://developer.mozilla.org/en-US/docs/Web/API/Notification#Instance_properties).\n *\n * While the subscription is active, Service Worker listens for\n * [PushEvent](https://developer.mozilla.org/en-US/docs/Web/API/PushEvent)\n * occurrences and creates\n * [Notification](https://developer.mozilla.org/en-US/docs/Web/API/Notification)\n * instances in response.\n *\n * Unsubscribe using `SwPush.unsubscribe()`.\n *\n * An application can subscribe to `SwPush.notificationClicks` observable to be notified when a user\n * clicks on a notification. For example:\n *\n * \n *\n * You can read more on handling notification clicks in the [Service worker notifications\n * guide](ecosystem/service-workers/push-notifications).\n *\n * @see [Push Notifications](https://developers.google.com/web/fundamentals/codelabs/push-notifications/)\n * @see [Angular Push Notifications](https://blog.angular-university.io/angular-push-notifications/)\n * @see [MDN: Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API)\n * @see [MDN: Notifications API](https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API)\n * @see [MDN: Web Push API Notifications best practices](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices)\n *\n * @publicApi\n */\nclass SwPush {\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n constructor(sw) {\n this.sw = sw;\n this.pushManager = null;\n this.subscriptionChanges = new Subject();\n if (!sw.isEnabled) {\n this.messages = NEVER;\n this.notificationClicks = NEVER;\n this.subscription = NEVER;\n return;\n }\n this.messages = this.sw.eventsOfType('PUSH').pipe(map(message => message.data));\n this.notificationClicks = this.sw.eventsOfType('NOTIFICATION_CLICK').pipe(map(message => message.data));\n this.pushManager = this.sw.registration.pipe(map(registration => registration.pushManager));\n const workerDrivenSubscriptions = this.pushManager.pipe(switchMap(pm => pm.getSubscription()));\n this.subscription = merge(workerDrivenSubscriptions, this.subscriptionChanges);\n }\n /**\n * Subscribes to Web Push Notifications,\n * after requesting and receiving user permission.\n *\n * @param options An object containing the `serverPublicKey` string.\n * @returns A Promise that resolves to the new subscription object.\n */\n requestSubscription(options) {\n if (!this.sw.isEnabled || this.pushManager === null) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const pushOptions = {\n userVisibleOnly: true\n };\n let key = this.decodeBase64(options.serverPublicKey.replace(/_/g, '/').replace(/-/g, '+'));\n let applicationServerKey = new Uint8Array(new ArrayBuffer(key.length));\n for (let i = 0; i < key.length; i++) {\n applicationServerKey[i] = key.charCodeAt(i);\n }\n pushOptions.applicationServerKey = applicationServerKey;\n return this.pushManager.pipe(switchMap(pm => pm.subscribe(pushOptions)), take(1)).toPromise().then(sub => {\n this.subscriptionChanges.next(sub);\n return sub;\n });\n }\n /**\n * Unsubscribes from Service Worker push notifications.\n *\n * @returns A Promise that is resolved when the operation succeeds, or is rejected if there is no\n * active subscription or the unsubscribe operation fails.\n */\n unsubscribe() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const doUnsubscribe = sub => {\n if (sub === null) {\n throw new Error('Not subscribed to push notifications.');\n }\n return sub.unsubscribe().then(success => {\n if (!success) {\n throw new Error('Unsubscribe failed!');\n }\n this.subscriptionChanges.next(null);\n });\n };\n return this.subscription.pipe(take(1), switchMap(doUnsubscribe)).toPromise();\n }\n decodeBase64(input) {\n return atob(input);\n }\n static {\n this.ɵfac = function SwPush_Factory(ɵt) {\n return new (ɵt || SwPush)(i0.ɵɵinject(NgswCommChannel));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SwPush,\n factory: SwPush.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SwPush, [{\n type: Injectable\n }], () => [{\n type: NgswCommChannel\n }], null);\n})();\n\n/**\n * Subscribe to update notifications from the Service Worker, trigger update\n * checks, and forcibly activate updates.\n *\n * @see {@link ecosystem/service-workers/communications Service worker communication guide}\n *\n * @publicApi\n */\nclass SwUpdate {\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n constructor(sw) {\n this.sw = sw;\n if (!sw.isEnabled) {\n this.versionUpdates = NEVER;\n this.unrecoverable = NEVER;\n return;\n }\n this.versionUpdates = this.sw.eventsOfType(['VERSION_DETECTED', 'VERSION_INSTALLATION_FAILED', 'VERSION_READY', 'NO_NEW_VERSION_DETECTED']);\n this.unrecoverable = this.sw.eventsOfType('UNRECOVERABLE_STATE');\n }\n /**\n * Checks for an update and waits until the new version is downloaded from the server and ready\n * for activation.\n *\n * @returns a promise that\n * - resolves to `true` if a new version was found and is ready to be activated.\n * - resolves to `false` if no new version was found\n * - rejects if any error occurs\n */\n checkForUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('CHECK_FOR_UPDATES', {\n nonce\n }, nonce);\n }\n /**\n * Updates the current client (i.e. browser tab) to the latest version that is ready for\n * activation.\n *\n * In most cases, you should not use this method and instead should update a client by reloading\n * the page.\n *\n *
\n *\n * Updating a client without reloading can easily result in a broken application due to a version\n * mismatch between the application shell and other page resources,\n * such as lazy-loaded chunks, whose filenames may change between\n * versions.\n *\n * Only use this method, if you are certain it is safe for your specific use case.\n *\n *
\n *\n * @returns a promise that\n * - resolves to `true` if an update was activated successfully\n * - resolves to `false` if no update was available (for example, the client was already on the\n * latest version).\n * - rejects if any error occurs\n */\n activateUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('ACTIVATE_UPDATE', {\n nonce\n }, nonce);\n }\n static {\n this.ɵfac = function SwUpdate_Factory(ɵt) {\n return new (ɵt || SwUpdate)(i0.ɵɵinject(NgswCommChannel));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SwUpdate,\n factory: SwUpdate.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SwUpdate, [{\n type: Injectable\n }], () => [{\n type: NgswCommChannel\n }], null);\n})();\n\n/*!\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SCRIPT = new InjectionToken(ngDevMode ? 'NGSW_REGISTER_SCRIPT' : '');\nfunction ngswAppInitializer(injector, script, options, platformId) {\n return () => {\n if (!(isPlatformBrowser(platformId) && 'serviceWorker' in navigator && options.enabled !== false)) {\n return;\n }\n const ngZone = injector.get(NgZone);\n const appRef = injector.get(ApplicationRef);\n // Set up the `controllerchange` event listener outside of\n // the Angular zone to avoid unnecessary change detections,\n // as this event has no impact on view updates.\n ngZone.runOutsideAngular(() => {\n // Wait for service worker controller changes, and fire an INITIALIZE action when a new SW\n // becomes active. This allows the SW to initialize itself even if there is no application\n // traffic.\n const sw = navigator.serviceWorker;\n const onControllerChange = () => sw.controller?.postMessage({\n action: 'INITIALIZE'\n });\n sw.addEventListener('controllerchange', onControllerChange);\n appRef.onDestroy(() => {\n sw.removeEventListener('controllerchange', onControllerChange);\n });\n });\n let readyToRegister$;\n if (typeof options.registrationStrategy === 'function') {\n readyToRegister$ = options.registrationStrategy();\n } else {\n const [strategy, ...args] = (options.registrationStrategy || 'registerWhenStable:30000').split(':');\n switch (strategy) {\n case 'registerImmediately':\n readyToRegister$ = of(null);\n break;\n case 'registerWithDelay':\n readyToRegister$ = delayWithTimeout(+args[0] || 0);\n break;\n case 'registerWhenStable':\n readyToRegister$ = !args[0] ? whenStable(injector) : merge(whenStable(injector), delayWithTimeout(+args[0]));\n break;\n default:\n // Unknown strategy.\n throw new Error(`Unknown ServiceWorker registration strategy: ${options.registrationStrategy}`);\n }\n }\n // Don't return anything to avoid blocking the application until the SW is registered.\n // Also, run outside the Angular zone to avoid preventing the app from stabilizing (especially\n // given that some registration strategies wait for the app to stabilize).\n // Catch and log the error if SW registration fails to avoid uncaught rejection warning.\n ngZone.runOutsideAngular(() => readyToRegister$.pipe(take(1)).subscribe(() => navigator.serviceWorker.register(script, {\n scope: options.scope\n }).catch(err => console.error('Service worker registration failed with:', err))));\n };\n}\nfunction delayWithTimeout(timeout) {\n return of(null).pipe(delay(timeout));\n}\nfunction whenStable(injector) {\n const appRef = injector.get(ApplicationRef);\n return appRef.isStable.pipe(filter(stable => stable));\n}\nfunction ngswCommChannelFactory(opts, platformId) {\n return new NgswCommChannel(isPlatformBrowser(platformId) && opts.enabled !== false ? navigator.serviceWorker : undefined);\n}\n/**\n * Token that can be used to provide options for `ServiceWorkerModule` outside of\n * `ServiceWorkerModule.register()`.\n *\n * You can use this token to define a provider that generates the registration options at runtime,\n * for example via a function call:\n *\n * {@example service-worker/registration-options/module.ts region=\"registration-options\"\n * header=\"app.module.ts\"}\n *\n * @publicApi\n */\nclass SwRegistrationOptions {}\n/**\n * @publicApi\n *\n * Sets up providers to register the given Angular Service Worker script.\n *\n * If `enabled` is set to `false` in the given options, the module will behave as if service\n * workers are not supported by the browser, and the service worker will not be registered.\n *\n * Example usage:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideServiceWorker('ngsw-worker.js')\n * ],\n * });\n * ```\n */\nfunction provideServiceWorker(script, options = {}) {\n return makeEnvironmentProviders([SwPush, SwUpdate, {\n provide: SCRIPT,\n useValue: script\n }, {\n provide: SwRegistrationOptions,\n useValue: options\n }, {\n provide: NgswCommChannel,\n useFactory: ngswCommChannelFactory,\n deps: [SwRegistrationOptions, PLATFORM_ID]\n }, {\n provide: APP_INITIALIZER,\n useFactory: ngswAppInitializer,\n deps: [Injector, SCRIPT, SwRegistrationOptions, PLATFORM_ID],\n multi: true\n }]);\n}\n\n/**\n * @publicApi\n */\nclass ServiceWorkerModule {\n /**\n * Register the given Angular Service Worker script.\n *\n * If `enabled` is set to `false` in the given options, the module will behave as if service\n * workers are not supported by the browser, and the service worker will not be registered.\n */\n static register(script, options = {}) {\n return {\n ngModule: ServiceWorkerModule,\n providers: [provideServiceWorker(script, options)]\n };\n }\n static {\n this.ɵfac = function ServiceWorkerModule_Factory(ɵt) {\n return new (ɵt || ServiceWorkerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ServiceWorkerModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [SwPush, SwUpdate]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ServiceWorkerModule, [{\n type: NgModule,\n args: [{\n providers: [SwPush, SwUpdate]\n }]\n }], null, null);\n})();\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ServiceWorkerModule, SwPush, SwRegistrationOptions, SwUpdate, provideServiceWorker };\n","import { ApplicationContext, AuthService, SituationContext } from '@core/services';\nimport { Observable } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\n\nexport const initApp =\n (\n context: ApplicationContext,\n authService: AuthService,\n situationContext: SituationContext\n ): (() => Observable) =>\n (): Observable =>\n // AuthService is initialized first so when the context loads the app, the token in the local storage is correct\n authService.initAuth().pipe(\n // Context is initialized then so other services are not initialized if not needed (dispatch, unknown app, ...)\n switchMap(() => context.init()),\n tap(() => situationContext.init())\n );\n","/* eslint-disable import/no-mutable-exports */\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nimport { Injector } from '@angular/core';\n\nexport let rootInjector: Injector;\n\nexport function setRootInjector(injector: Injector): void {\n rootInjector = injector;\n}\n","class TranslateHttpLoader {\n constructor(http, prefix = \"/assets/i18n/\", suffix = \".json\") {\n this.http = http;\n this.prefix = prefix;\n this.suffix = suffix;\n }\n /**\r\n * Gets the translations from the server\r\n */\n getTranslation(lang) {\n return this.http.get(`${this.prefix}${lang}${this.suffix}`);\n }\n}\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { TranslateHttpLoader };","import { HttpClient } from '@angular/common/http';\nimport { APP_VERSION } from '@configs/app.config';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nexport const createTranslateLoader = (http: HttpClient): TranslateHttpLoader =>\n new TranslateHttpLoader(http, './assets/i18n/', `.json?v=${APP_VERSION}`);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length,\n e = parseInt(val.toString().replace(/^[^e]*(e([-+]?\\d+))?/, '$2')) || 0;\n if (i === 0 || i === 1) return 1;\n if (e === 0 && !(i === 0) && i % 1000000 === 0 && v === 0 || !(e >= 0 && e <= 5)) return 4;\n return 5;\n}\nexport default [\"fr\", [[\"AM\", \"PM\"], u, u], u, [[\"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\"], [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"], [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"], [\"di\", \"lu\", \"ma\", \"me\", \"je\", \"ve\", \"sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"], [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"]], u, [[\"av. J.-C.\", \"ap. J.-C.\"], u, [\"avant Jésus-Christ\", \"après Jésus-Christ\"]], 1, [6, 0], [\"dd/MM/y\", \"d MMM y\", \"d MMMM y\", \"EEEE d MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1} {0}\", \"{1}, {0}\", \"{1} 'à' {0}\", u], [\",\", \" \", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", {\n \"ARS\": [\"$AR\", \"$\"],\n \"AUD\": [\"$AU\", \"$\"],\n \"BEF\": [\"FB\"],\n \"BMD\": [\"$BM\", \"$\"],\n \"BND\": [\"$BN\", \"$\"],\n \"BYN\": [u, \"р.\"],\n \"BZD\": [\"$BZ\", \"$\"],\n \"CAD\": [\"$CA\", \"$\"],\n \"CLP\": [\"$CL\", \"$\"],\n \"CNY\": [u, \"¥\"],\n \"COP\": [\"$CO\", \"$\"],\n \"CYP\": [\"£CY\"],\n \"EGP\": [u, \"£E\"],\n \"FJD\": [\"$FJ\", \"$\"],\n \"FKP\": [\"£FK\", \"£\"],\n \"FRF\": [\"F\"],\n \"GBP\": [\"£GB\", \"£\"],\n \"GIP\": [\"£GI\", \"£\"],\n \"HKD\": [u, \"$\"],\n \"IEP\": [\"£IE\"],\n \"ILP\": [\"£IL\"],\n \"ITL\": [\"₤IT\"],\n \"JPY\": [u, \"¥\"],\n \"KMF\": [u, \"FC\"],\n \"LBP\": [\"£LB\", \"£L\"],\n \"MTP\": [\"£MT\"],\n \"MXN\": [\"$MX\", \"$\"],\n \"NAD\": [\"$NA\", \"$\"],\n \"NIO\": [u, \"$C\"],\n \"NZD\": [\"$NZ\", \"$\"],\n \"PHP\": [u, \"₱\"],\n \"RHD\": [\"$RH\"],\n \"RON\": [u, \"L\"],\n \"RWF\": [u, \"FR\"],\n \"SBD\": [\"$SB\", \"$\"],\n \"SGD\": [\"$SG\", \"$\"],\n \"SRD\": [\"$SR\", \"$\"],\n \"TOP\": [u, \"$T\"],\n \"TTD\": [\"$TT\", \"$\"],\n \"TWD\": [u, \"NT$\"],\n \"USD\": [\"$US\", \"$\"],\n \"UYU\": [\"$UY\", \"$\"],\n \"WST\": [\"$WS\"],\n \"XCD\": [u, \"$\"],\n \"XPF\": [\"FCFP\"],\n \"ZMW\": [u, \"Kw\"]\n}, \"ltr\", plural];\n","import { LOCATION_INITIALIZED, registerLocaleData } from '@angular/common';\nimport localeFr from '@angular/common/locales/fr';\nimport { Injector } from '@angular/core';\nimport { AVAILABLE_LANG, DEFAULT_LANG } from '@configs/app.config';\nimport { TranslateService } from '@ngx-translate/core';\nimport { take } from 'rxjs';\n\n/**\n * waits until translations are loaded\n * see https://github.com/ngx-translate/core/issues/517#issuecomment-299637956\n */\nexport const initializerFactory =\n (injector: Injector, translate: TranslateService) => (): Promise =>\n new Promise((resolve: (_: null) => void) => {\n registerLocaleData(localeFr);\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized.then(() => {\n translate.addLangs(AVAILABLE_LANG);\n translate.setDefaultLang(DEFAULT_LANG);\n const lang = translate.getBrowserLang();\n\n translate\n .use(translate.getLangs().includes(lang) ? lang : translate.defaultLang)\n .pipe(take(1))\n .subscribe({\n complete: () => {\n resolve(null);\n }\n });\n });\n });\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DEFAULT_LANG } from '@configs/app.config';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AcceptLanguageInterceptor implements HttpInterceptor {\n constructor(private translateService: TranslateService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (req.url.startsWith('/apis')) {\n return next.handle(\n req.clone({\n setHeaders: {\n 'Accept-Language':\n this.translateService.currentLang || this.translateService.defaultLang || DEFAULT_LANG\n }\n })\n );\n }\n\n return next.handle(req);\n }\n}\n","export var TRACEPARENT_REGEXP = new RegExp('^[ \\\\t]*' +\n// whitespace\n'([0-9a-f]{32})?' +\n// trace_id\n'-?([0-9a-f]{16})?' +\n// span_id\n'-?([01])?' +\n// sampled\n'[ \\\\t]*$');\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n var parentSampled = void 0;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled: parentSampled,\n parentSpanId: matches[2]\n };\n }\n return undefined;\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ApplicationContext } from '@core/services';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class ContextInterceptor implements HttpInterceptor {\n constructor(private context: ApplicationContext) {}\n\n /**\n * Intercept requests and add X-TENANT-ID header to requests to APIs with the application name and X-PRODUCT to the product name\n *\n * @param req The request\n * @param next The HTTP handler\n * @returns An observable executing the request\n */\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const { applicationName, product } = this.context;\n\n if (req.url.startsWith('/apis/') && applicationName && product) {\n return next.handle(\n req.clone({\n setHeaders: { 'X-TENANT-ID': applicationName, 'X-PRODUCT': product }\n })\n );\n }\n\n return next.handle(req);\n }\n}\n","import { HttpUrlEncodingCodec } from '@angular/common/http';\n\nexport class EncodeParamCodec extends HttpUrlEncodingCodec {\n public encodeKey(key: string): string {\n return super.encodeKey(key);\n }\n\n public encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n public decodeKey(key: string): string {\n return super.decodeKey(key);\n }\n\n public decodeValue(value: string): string {\n return super.decodeValue(value);\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpParams,\n HttpRequest\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { EncodeParamCodec } from './encode-params-codec';\n\n@Injectable()\nexport class EncodeParamsInterceptor implements HttpInterceptor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n // If any params contains a +, params are encoded safely\n if (req.params.keys().some(key => req.params.get(key).includes('+'))) {\n const encodedParams = new HttpParams({\n fromString: req.params.toString(),\n encoder: new EncodeParamCodec()\n });\n\n return next.handle(\n req.clone({\n params: encodedParams\n })\n );\n }\n\n return next.handle(req);\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { LoadingService } from '@core/services/';\nimport { finalize, Observable } from 'rxjs';\n\n// NOTE: interceptor is used to update loading$ in LoadingService which is used for @loading decorator.\n\n@Injectable()\nexport class RequestInterceptor implements HttpInterceptor {\n public count = 0;\n\n constructor(private loading: LoadingService) {}\n\n public intercept(\n request: HttpRequest,\n next: HttpHandler\n ): Observable> {\n if (this.count === 0) {\n this.loading.show();\n }\n\n this.count++;\n\n return next.handle(request).pipe(\n finalize(() => {\n this.count--;\n\n if (this.count === 0) {\n this.loading.hide();\n }\n })\n );\n }\n}\n","/**\n * It seems that for now, angular-oauth2-oidc module does not handle properly expired access token\n * This interceptor is a temporary fix\n * The issue to follow: https://github.com/manfredsteyer/angular-oauth2-oidc/issues/820\n */\n\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@core/services';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class UnsafeTokenInterceptor implements HttpInterceptor {\n constructor(private auth: AuthService, private oauth: OAuthService) {}\n\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (!this.oauth.hasValidAccessToken) {\n this.auth.emptyAuthStorage();\n this.auth.logout(true);\n }\n\n return next.handle(req);\n }\n}\n","import { TranslateService } from '@ngx-translate/core';\n\nexport class DynamicLocaleId extends String {\n constructor(protected service: TranslateService) {\n super();\n }\n\n public toString(): string {\n return this.service.currentLang;\n }\n}\n","import { AuthConfig } from 'angular-oauth2-oidc';\nimport { environment } from 'environments/environment';\n\n/**\n * Configuration for the OAuth module\n */\nexport const authConfig: AuthConfig = {\n /**\n * Keycloak configuration\n */\n issuer: environment.keycloak.issuer,\n\n /**\n * Use Code Flow, the last OIDC best practice\n */\n responseType: 'code',\n\n // FIXME : To get a refresh token for silent refresh with Code Flow, offline_access should be added but we get an error from Keycloak\n // scope: 'openid profile email offline_access',\n scope: 'openid profile email',\n\n /**\n * Needed to use silent refresh with Code Flow\n */\n useSilentRefresh: true,\n\n /**\n * Periodically checks the validity of the session\n */\n sessionChecksEnabled: true,\n sessionCheckIntervall: 10000,\n\n /**\n * https://github.com/manfredsteyer/angular-oauth2-oidc/issues/457\n */\n clearHashAfterLogin: false,\n\n showDebugInformation: environment.keycloak.showDebugInformation,\n\n /**\n * Has to be set to true as Keycloak does not return at_hash claim in access token.\n * https://ordina-jworks.github.io/security/2019/08/22/Securing-Web-Applications-With-Keycloak.html\n */\n disableAtHashCheck: true\n};\n","import { OAuthModuleConfig } from 'angular-oauth2-oidc';\n\n/**\n * Inject the Authentication Token in HTTP requests to /apis\n */\nexport const oAuthModuleConfig: OAuthModuleConfig = {\n resourceServer: {\n allowedUrls: ['/apis'],\n sendAccessToken: true\n }\n};\n","import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { AuthConfig, OAuthModule, OAuthModuleConfig, OAuthStorage } from 'angular-oauth2-oidc';\nimport { environment } from 'environments/environment';\nimport { authStorageFactory } from './auth-storage';\nimport { authConfig } from './auth.config';\nimport { oAuthModuleConfig } from './oauth-module.config';\n\n@NgModule({\n imports: [OAuthModule.forRoot()],\n providers: [provideHttpClient(withInterceptorsFromDi())]\n})\nexport class AuthModule {\n // NOTE: See https://angular.io/guide/singleton-services#prevent-reimport-of-the-greetingmodule\n constructor(@Optional() @SkipSelf() parentModule: AuthModule) {\n if (parentModule) {\n throw new Error(\n `${parentModule.constructor.name} has already been loaded. Import this module in the AppModule only.`\n );\n }\n }\n\n public static forRoot(): ModuleWithProviders {\n const clientId: string =\n window.location.href.includes('/admin') ||\n localStorage.getItem('returnUrl')?.includes('admin')\n ? environment.keycloak.adminClientId\n : environment.keycloak.clientId;\n\n return {\n ngModule: AuthModule,\n providers: [\n { provide: AuthConfig, useValue: { ...authConfig, clientId } },\n { provide: OAuthModuleConfig, useValue: oAuthModuleConfig },\n { provide: OAuthStorage, useFactory: authStorageFactory }\n ]\n };\n }\n}\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/en';\nimport 'dayjs/locale/fr';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport { DayjsService } from './dayjs.service';\n\n// Dayjs plugins\ndayjs.extend(localizedFormat);\n\n@NgModule({\n imports: [TranslateModule],\n providers: [DayjsService]\n})\nexport class DayjsModule {\n // NOTE: See https://angular.io/guide/singleton-services#prevent-reimport-of-the-greetingmodule\n constructor(private service: DayjsService, @Optional() @SkipSelf() parentModule: DayjsModule) {\n if (parentModule) {\n throw new Error(\n `${parentModule.constructor.name} has already been loaded. Import this module in the AppModule only.`\n );\n }\n\n this.service.init();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport dayjs from 'dayjs';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Injectable()\nexport class DayjsService implements OnDestroy {\n private destroy$ = new Subject();\n\n constructor(private translateService: TranslateService) {}\n\n public init(): void {\n this.translateService.onLangChange\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: LangChangeEvent) => {\n dayjs.locale(event.lang);\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nexport function __extends(d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nexport var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}\nexport function __exportStar(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n}","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","import { getCurrentHub } from '@sentry/hub';\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(maybeOptions) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || client && client.getOptions();\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && scope.getTransaction();\n}\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time) {\n return time / 1000;\n}\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time) {\n return time * 1000;\n}\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getActiveTransaction } from './utils';\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var status_1 = 'internal_error';\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Transaction: \" + status_1 + \" -> Global error occured\");\n activeTransaction.setStatus(status_1);\n }\n}\n","// Store finish reasons in tuple to save on bundle size\n// Readonly type should enforce that this is not mutated.\nexport var FINISH_REASON_TAG = 'finishReason';\nexport var IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'];\n","import { __assign } from \"tslib\";\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nvar SpanRecorder = /** @class */function () {\n function SpanRecorder(maxlen) {\n if (maxlen === void 0) {\n maxlen = 1000;\n }\n this.spans = [];\n this._maxlen = maxlen;\n }\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n SpanRecorder.prototype.add = function (span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n };\n return SpanRecorder;\n}();\nexport { SpanRecorder };\n/**\n * Span contains all data about a span\n */\nvar Span = /** @class */function () {\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Span(spanContext) {\n /**\n * @inheritDoc\n */\n this.traceId = uuid4();\n /**\n * @inheritDoc\n */\n this.spanId = uuid4().substring(16);\n /**\n * Timestamp in seconds when the span was created.\n */\n this.startTimestamp = timestampWithMs();\n /**\n * @inheritDoc\n */\n this.tags = {};\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.data = {};\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n /**\n * @inheritDoc\n * @deprecated\n */\n Span.prototype.child = function (spanContext) {\n return this.startChild(spanContext);\n };\n /**\n * @inheritDoc\n */\n Span.prototype.startChild = function (spanContext) {\n var childSpan = new Span(__assign(__assign({}, spanContext), {\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId\n }));\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n childSpan.transaction = this.transaction;\n return childSpan;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setTag = function (key, value) {\n var _a;\n this.tags = __assign(__assign({}, this.tags), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Span.prototype.setData = function (key, value) {\n var _a;\n this.data = __assign(__assign({}, this.data), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setStatus = function (value) {\n this.status = value;\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setHttpStatus = function (httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.isSuccess = function () {\n return this.status === 'ok';\n };\n /**\n * @inheritDoc\n */\n Span.prototype.finish = function (endTimestamp) {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toTraceparent = function () {\n var sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return this.traceId + \"-\" + this.spanId + sampledString;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toContext = function () {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId\n });\n };\n /**\n * @inheritDoc\n */\n Span.prototype.updateWithContext = function (spanContext) {\n var _a, _b, _c, _d, _e;\n this.data = (_a = spanContext.data, _a !== null && _a !== void 0 ? _a : {});\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = (_b = spanContext.spanId, _b !== null && _b !== void 0 ? _b : this.spanId);\n this.startTimestamp = (_c = spanContext.startTimestamp, _c !== null && _c !== void 0 ? _c : this.startTimestamp);\n this.status = spanContext.status;\n this.tags = (_d = spanContext.tags, _d !== null && _d !== void 0 ? _d : {});\n this.traceId = (_e = spanContext.traceId, _e !== null && _e !== void 0 ? _e : this.traceId);\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.getTraceContext = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId\n });\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toJSON = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId\n });\n };\n return Span;\n}();\nexport { Span };\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n return 'unknown_error';\n}\n","import { __assign, __extends } from \"tslib\";\nimport { getCurrentHub, Hub } from '@sentry/hub';\nimport { dropUndefinedKeys, isInstanceOf, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span as SpanClass, SpanRecorder } from './span';\n/** JSDoc */\nvar Transaction = /** @class */function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Transaction(transactionContext, hub) {\n var _this = _super.call(this, transactionContext) || this;\n _this._measurements = {};\n /**\n * The reference to the current hub.\n */\n _this._hub = getCurrentHub();\n if (isInstanceOf(hub, Hub)) {\n _this._hub = hub;\n }\n _this.name = transactionContext.name || '';\n _this.metadata = transactionContext.metadata || {};\n _this._trimEnd = transactionContext.trimEnd;\n // this is because transactions are also spans, and spans have a transaction pointer\n _this.transaction = _this;\n return _this;\n }\n /**\n * JSDoc\n */\n Transaction.prototype.setName = function (name) {\n this.name = name;\n };\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n Transaction.prototype.initSpanRecorder = function (maxlen) {\n if (maxlen === void 0) {\n maxlen = 1000;\n }\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n };\n /**\n * Set observed measurements for this transaction.\n * @hidden\n */\n Transaction.prototype.setMeasurements = function (measurements) {\n this._measurements = __assign({}, measurements);\n };\n /**\n * Set metadata for this transaction.\n * @hidden\n */\n Transaction.prototype.setMetadata = function (newMetadata) {\n this.metadata = __assign(__assign({}, this.metadata), newMetadata);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.finish = function (endTimestamp) {\n var _this = this;\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n if (!this.name) {\n IS_DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n // just sets the end timestamp\n _super.prototype.finish.call(this, endTimestamp);\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n IS_DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n var client = this._hub.getClient();\n var transport = client && client.getTransport && client.getTransport();\n if (transport && transport.recordLostEvent) {\n transport.recordLostEvent('sample_rate', 'transaction');\n }\n return undefined;\n }\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(function (s) {\n return s !== _this && s.endTimestamp;\n }) : [];\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce(function (prev, current) {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n var transaction = {\n contexts: {\n trace: this.getTraceContext()\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: this.metadata\n };\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n if (hasMeasurements) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding measurements to transaction', JSON.stringify(this._measurements, undefined, 2));\n transaction.measurements = this._measurements;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Finishing \" + this.op + \" transaction: \" + this.name + \".\");\n return this._hub.captureEvent(transaction);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.toContext = function () {\n var spanContext = _super.prototype.toContext.call(this);\n return dropUndefinedKeys(__assign(__assign({}, spanContext), {\n name: this.name,\n trimEnd: this._trimEnd\n }));\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.updateWithContext = function (transactionContext) {\n var _a;\n _super.prototype.updateWithContext.call(this, transactionContext);\n this.name = (_a = transactionContext.name, _a !== null && _a !== void 0 ? _a : '');\n this._trimEnd = transactionContext.trimEnd;\n return this;\n };\n return Transaction;\n}(SpanClass);\nexport { Transaction };\n","import { __extends, __values } from \"tslib\";\nimport { logger, timestampWithMs } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\nexport var DEFAULT_IDLE_TIMEOUT = 1000;\nexport var HEARTBEAT_INTERVAL = 5000;\n/**\n * @inheritDoc\n */\nvar IdleTransactionSpanRecorder = /** @class */function (_super) {\n __extends(IdleTransactionSpanRecorder, _super);\n function IdleTransactionSpanRecorder(_pushActivity, _popActivity, transactionSpanId, maxlen) {\n if (transactionSpanId === void 0) {\n transactionSpanId = '';\n }\n var _this = _super.call(this, maxlen) || this;\n _this._pushActivity = _pushActivity;\n _this._popActivity = _popActivity;\n _this.transactionSpanId = transactionSpanId;\n return _this;\n }\n /**\n * @inheritDoc\n */\n IdleTransactionSpanRecorder.prototype.add = function (span) {\n var _this = this;\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = function (endTimestamp) {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n _this._popActivity(span.spanId);\n };\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n _super.prototype.add.call(this, span);\n };\n return IdleTransactionSpanRecorder;\n}(SpanRecorder);\nexport { IdleTransactionSpanRecorder };\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nvar IdleTransaction = /** @class */function (_super) {\n __extends(IdleTransaction, _super);\n function IdleTransaction(transactionContext, _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished.\n * @default 1000\n */\n _idleTimeout,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope) {\n if (_idleTimeout === void 0) {\n _idleTimeout = DEFAULT_IDLE_TIMEOUT;\n }\n if (_onScope === void 0) {\n _onScope = false;\n }\n var _this = _super.call(this, transactionContext, _idleHub) || this;\n _this._idleHub = _idleHub;\n _this._idleTimeout = _idleTimeout;\n _this._onScope = _onScope;\n // Activities store a list of active spans\n _this.activities = {};\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n _this._heartbeatCounter = 0;\n // We should not use heartbeat if we finished a transaction\n _this._finished = false;\n _this._beforeFinishCallbacks = [];\n if (_idleHub && _onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n IS_DEBUG_BUILD && logger.log(\"Setting idle transaction on scope. Span ID: \" + _this.spanId);\n _idleHub.configureScope(function (scope) {\n return scope.setSpan(_this);\n });\n }\n _this._initTimeout = setTimeout(function () {\n if (!_this._finished) {\n _this.finish();\n }\n }, _this._idleTimeout);\n return _this;\n }\n /** {@inheritDoc} */\n IdleTransaction.prototype.finish = function (endTimestamp) {\n var e_1, _a;\n var _this = this;\n if (endTimestamp === void 0) {\n endTimestamp = timestampWithMs();\n }\n this._finished = true;\n this.activities = {};\n if (this.spanRecorder) {\n IS_DEBUG_BUILD && logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n try {\n for (var _b = __values(this._beforeFinishCallbacks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var callback = _c.value;\n callback(this, endTimestamp);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n this.spanRecorder.spans = this.spanRecorder.spans.filter(function (span) {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === _this.spanId) {\n return true;\n }\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n IS_DEBUG_BUILD && logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n IS_DEBUG_BUILD && logger.log('[Tracing] discarding Span since it happened after Transaction was finished', JSON.stringify(span, undefined, 2));\n }\n return keepSpan;\n });\n IS_DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n IS_DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n return _super.prototype.finish.call(this, endTimestamp);\n };\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n IdleTransaction.prototype.registerBeforeFinishCallback = function (callback) {\n this._beforeFinishCallbacks.push(callback);\n };\n /**\n * @inheritDoc\n */\n IdleTransaction.prototype.initSpanRecorder = function (maxlen) {\n var _this = this;\n if (!this.spanRecorder) {\n var pushActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._pushActivity(id);\n };\n var popActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._popActivity(id);\n };\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n // Start heartbeat so that transactions do not run forever.\n IS_DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n };\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._pushActivity = function (spanId) {\n if (this._initTimeout) {\n clearTimeout(this._initTimeout);\n this._initTimeout = undefined;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] pushActivity: \" + spanId);\n this.activities[spanId] = true;\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n };\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._popActivity = function (spanId) {\n var _this = this;\n if (this.activities[spanId]) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] popActivity \" + spanId);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n if (Object.keys(this.activities).length === 0) {\n var timeout = this._idleTimeout;\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var end_1 = timestampWithMs() + timeout / 1000;\n setTimeout(function () {\n if (!_this._finished) {\n _this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);\n _this.finish(end_1);\n }\n }, timeout);\n }\n };\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n IdleTransaction.prototype._beat = function () {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n var heartbeatString = Object.keys(this.activities).join('');\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n this._prevHeartbeatString = heartbeatString;\n if (this._heartbeatCounter >= 3) {\n IS_DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n };\n /**\n * Pings the heartbeat\n */\n IdleTransaction.prototype._pingHeartbeat = function () {\n var _this = this;\n IS_DEBUG_BUILD && logger.log(\"pinging Heartbeat -> current counter: \" + this._heartbeatCounter);\n setTimeout(function () {\n _this._beat();\n }, HEARTBEAT_INTERVAL);\n };\n return IdleTransaction;\n}(Transaction);\nexport { IdleTransaction };\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n if (hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n }\n}\n","import { __assign, __read, __spread } from \"tslib\";\nimport { getMainCarrier } from '@sentry/hub';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent()\n };\n }\n }\n return {};\n}\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(transaction, options, samplingContext) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: {\n method: 'explicitly_set'\n }\n });\n return transaction;\n }\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n var sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate)\n }\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: {\n method: 'inheritance'\n }\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate)\n }\n });\n }\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Discarding transaction because \" + (typeof options.tracesSampler === 'function' ? 'tracesSampler returned 0 or false' : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'));\n transaction.sampled = false;\n return transaction;\n }\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < sampleRate;\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = \" + Number(sampleRate) + \")\");\n return transaction;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] starting \" + transaction.op + \" transaction - \" + transaction.name);\n return transaction;\n}\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n IS_DEBUG_BUILD && logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got \" + JSON.stringify(rate) + \" of type \" + JSON.stringify(typeof rate) + \".\");\n return false;\n }\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n IS_DEBUG_BUILD && logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got \" + rate + \".\");\n return false;\n }\n return true;\n}\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(transactionContext, customSamplingContext) {\n var client = this.getClient();\n var options = client && client.getOptions() || {};\n var transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, __assign({\n parentSampled: transactionContext.parentSampled,\n transactionContext: transactionContext\n }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(hub, transactionContext, idleTimeout, onScope, customSamplingContext) {\n var client = hub.getClient();\n var options = client && client.getOptions() || {};\n var transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n transaction = sample(transaction, options, __assign({\n parentSampled: transactionContext.parentSampled,\n transactionContext: transactionContext\n }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * @private\n */\nexport function _addTracingExtensions() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n var packageToIntegrationMapping = {\n mongodb: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo();\n },\n mongoose: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo({\n mongoose: true\n });\n },\n mysql: function () {\n var integration = dynamicRequire(module, './integrations/node/mysql');\n return new integration.Mysql();\n },\n pg: function () {\n var integration = dynamicRequire(module, './integrations/node/postgres');\n return new integration.Postgres();\n }\n };\n var mappedPackages = Object.keys(packageToIntegrationMapping).filter(function (moduleName) {\n return !!loadModule(moduleName);\n }).map(function (pkg) {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n }).filter(function (p) {\n return p;\n });\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = __spread(carrier.__SENTRY__.integrations || [], mappedPackages);\n }\n}\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods() {\n _addTracingExtensions();\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","import { getGlobalObject, logger } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { getActiveTransaction } from '../utils';\nvar global = getGlobalObject();\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', function () {\n var activeTransaction = getActiveTransaction();\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Transaction: \" + statusType + \" -> since tab moved to the background, op: \" + activeTransaction.op);\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);\n activeTransaction.finish();\n }\n });\n } else {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var bindReporter = function (callback, metric, reportAllChanges) {\n var prevValue;\n return function (forceReport) {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport var generateUniqueID = function () {\n return \"v2-\" + Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { generateUniqueID } from './generateUniqueID';\nexport var initMetric = function (name, value) {\n return {\n name: name,\n value: value !== null && value !== void 0 ? value : -1,\n delta: 0,\n entries: [],\n id: generateUniqueID()\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport var observe = function (type, callback) {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n var po = new PerformanceObserver(function (l) {\n return l.getEntries().map(callback);\n });\n po.observe({\n type: type,\n buffered: true\n });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobalObject } from '@sentry/utils';\nexport var onHidden = function (cb, once) {\n var onHiddenOrPageHide = function (event) {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getCLS = function (onReport, reportAllChanges) {\n var metric = initMetric('CLS', 0);\n var report;\n var sessionValue = 0;\n var sessionEntries = [];\n var entryHandler = function (entry) {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (sessionValue && sessionEntries.length !== 0 && entry.startTime - lastSessionEntry.startTime < 1000 && entry.startTime - firstSessionEntry.startTime < 5000) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n var po = observe('layout-shift', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobalObject } from '@sentry/utils';\nimport { onHidden } from './onHidden';\nvar firstHiddenTime = -1;\nvar initHiddenTime = function () {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\nvar trackChanges = function () {\n // Update the time if/when the document becomes hidden.\n onHidden(function (_a) {\n var timeStamp = _a.timeStamp;\n firstHiddenTime = timeStamp;\n }, true);\n};\nexport var getVisibilityWatcher = function () {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n }\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getFID = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n var report;\n var entryHandler = function (entry) {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n var po = observe('first-input', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n }, true);\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nvar reportedMetricIDs = {};\nexport var getLCP = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n var report;\n var entryHandler = function (entry) {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n if (report) {\n report();\n }\n };\n var po = observe('largest-contentful-paint', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n var stopListening_1 = function () {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(function (type) {\n addEventListener(type, stopListening_1, {\n once: true,\n capture: true\n });\n });\n onHidden(stopListening_1, true);\n }\n};\n","import { __assign, __rest } from \"tslib\";\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { msToSec } from '../utils';\nimport { getCLS } from './web-vitals/getCLS';\nimport { getFID } from './web-vitals/getFID';\nimport { getLCP } from './web-vitals/getLCP';\nimport { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher';\nvar global = getGlobalObject();\n/** Class tracking metrics */\nvar MetricsInstrumentation = /** @class */function () {\n function MetricsInstrumentation(_reportAllChanges) {\n if (_reportAllChanges === void 0) {\n _reportAllChanges = false;\n }\n this._reportAllChanges = _reportAllChanges;\n this._measurements = {};\n this._performanceCursor = 0;\n if (!isNodeEnv() && global && global.performance && global.document) {\n if (global.performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n this._trackCLS();\n this._trackLCP();\n this._trackFID();\n }\n }\n /** Add performance related spans to a transaction */\n MetricsInstrumentation.prototype.addPerformanceEntries = function (transaction) {\n var _this = this;\n if (!global || !global.performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n IS_DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var responseStartTimestamp;\n var requestStartTimestamp;\n global.performance.getEntries().slice(this._performanceCursor).forEach(function (entry) {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n switch (entry.entryType) {\n case 'navigation':\n {\n addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure':\n {\n var startTimestamp = addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n if (entry.name === 'first-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n _this._measurements['fp'] = {\n value: entry.startTime\n };\n _this._measurements['mark.fp'] = {\n value: startTimestamp\n };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n _this._measurements['fcp'] = {\n value: entry.startTime\n };\n _this._measurements['mark.fcp'] = {\n value: startTimestamp\n };\n }\n break;\n }\n case 'resource':\n {\n var resourceName = entry.name.replace(global.location.origin, '');\n addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n this._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n this._trackNavigator(transaction);\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // normalize applicable web vital values to be relative to transaction.startTimestamp\n var timeOrigin_1 = msToSec(browserPerformanceTimeOrigin);\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n this._measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000\n };\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n this._measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000\n };\n }\n }\n ['fcp', 'fp', 'lcp'].forEach(function (name) {\n if (!_this._measurements[name] || timeOrigin_1 >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _this._measurements[name].value;\n var measurementTimestamp = timeOrigin_1 + msToSec(oldValue);\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n IS_DEBUG_BUILD && logger.log(\"[Measurements] Normalized \" + name + \" from \" + oldValue + \" to \" + normalizedValue + \" (\" + delta + \")\");\n _this._measurements[name].value = normalizedValue;\n });\n if (this._measurements['mark.fid'] && this._measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: this._measurements['mark.fid'].value + msToSec(this._measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: this._measurements['mark.fid'].value\n });\n }\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in this._measurements)) {\n delete this._measurements.cls;\n }\n transaction.setMeasurements(this._measurements);\n tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);\n transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);\n }\n };\n /**\n * Capture the information of the user agent.\n */\n MetricsInstrumentation.prototype._trackNavigator = function (transaction) {\n var navigator = global.navigator;\n if (!navigator) {\n return;\n }\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n if (isMeasurementValue(connection.rtt)) {\n this._measurements['connection.rtt'] = {\n value: connection.rtt\n };\n }\n if (isMeasurementValue(connection.downlink)) {\n this._measurements['connection.downlink'] = {\n value: connection.downlink\n };\n }\n }\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', String(navigator.deviceMemory));\n }\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n };\n /** Starts tracking the Cumulative Layout Shift on the current page. */\n MetricsInstrumentation.prototype._trackCLS = function () {\n var _this = this;\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n _this._measurements['cls'] = {\n value: metric.value\n };\n _this._clsEntry = entry;\n });\n };\n /** Starts tracking the Largest Contentful Paint on the current page. */\n MetricsInstrumentation.prototype._trackLCP = function () {\n var _this = this;\n getLCP(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n _this._measurements['lcp'] = {\n value: metric.value\n };\n _this._measurements['mark.lcp'] = {\n value: timeOrigin + startTime\n };\n _this._lcpEntry = entry;\n }, this._reportAllChanges);\n };\n /** Starts tracking the First Input Delay on the current page. */\n MetricsInstrumentation.prototype._trackFID = function () {\n var _this = this;\n getFID(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n _this._measurements['fid'] = {\n value: metric.value\n };\n _this._measurements['mark.fid'] = {\n value: timeOrigin + startTime\n };\n });\n };\n return MetricsInstrumentation;\n}();\nexport { MetricsInstrumentation };\n/** Instrument navigation entries */\nfunction addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(function (event) {\n addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n addRequest(transaction, entry, timeOrigin);\n}\n/** Create measure related spans */\nfunction addMeasureSpans(transaction, entry, startTime, duration, timeOrigin) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n _startChild(transaction, {\n description: entry.name,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType,\n startTimestamp: measureStartTimestamp\n });\n return measureStartTimestamp;\n}\n/** Create resource-related spans */\nexport function addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n _startChild(transaction, {\n description: resourceName,\n endTimestamp: endTimestamp,\n op: entry.initiatorType ? \"resource.\" + entry.initiatorType : 'resource',\n startTimestamp: startTimestamp,\n data: data\n });\n}\n/** Create performance navigation related spans */\nfunction addPerformanceNavigationTiming(transaction, entry, event, timeOrigin, description, eventEnd) {\n var end = eventEnd ? entry[eventEnd] : entry[event + \"End\"];\n var start = entry[event + \"Start\"];\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description !== null && description !== void 0 ? description : event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end)\n });\n}\n/** Create request and response related spans */\nfunction addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd)\n });\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd)\n });\n}\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction, _a) {\n var startTimestamp = _a.startTimestamp,\n ctx = __rest(_a, [\"startTimestamp\"]);\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n return transaction.startChild(__assign({\n startTimestamp: startTimestamp\n }, ctx));\n}\n/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction tagMetricInfo(transaction, lcpEntry, clsEntry) {\n if (lcpEntry) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n // Capture Properties of the LCP element that contributes to the LCP.\n if (lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(lcpEntry.element));\n }\n if (lcpEntry.id) {\n transaction.setTag('lcp.id', lcpEntry.id);\n }\n if (lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', lcpEntry.url.trim().slice(0, 200));\n }\n transaction.setTag('lcp.size', lcpEntry.size);\n }\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (clsEntry && clsEntry.sources) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n clsEntry.sources.forEach(function (source, index) {\n return transaction.setTag(\"cls.source.\" + (index + 1), htmlTreeAsString(source.node));\n });\n }\n}\n","import { __assign, __read, __spread } from \"tslib\";\nimport { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\nexport var DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\nexport var defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS\n};\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = __assign(__assign({}, defaultRequestInstrumentationOptions), _options),\n traceFetch = _a.traceFetch,\n traceXHR = _a.traceXHR,\n tracingOrigins = _a.tracingOrigins,\n shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n var defaultShouldCreateSpan = function (url) {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] = origins.some(function (origin) {\n return isMatchingPattern(url, origin);\n }) && !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n var shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = function (url) {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n var spans = {};\n if (traceFetch) {\n addInstrumentationHandler('fetch', function (handlerData) {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n if (traceXHR) {\n addInstrumentationHandler('xhr', function (handlerData) {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: __assign(__assign({}, handlerData.fetchData), {\n type: 'fetch'\n }),\n description: handlerData.fetchData.method + \" \" + handlerData.fetchData.url,\n op: 'http.client'\n });\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n var request = handlerData.args[0] = handlerData.args[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = handlerData.args[1] = handlerData.args[1] || {};\n var headers = options.headers;\n if (isInstanceOf(request, Request)) {\n headers = request.headers;\n }\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n } else if (Array.isArray(headers)) {\n headers = __spread(headers, [['sentry-trace', span.toTraceparent()]]);\n } else {\n headers = __assign(__assign({}, headers), {\n 'sentry-trace': span.toTraceparent()\n });\n }\n } else {\n headers = {\n 'sentry-trace': span.toTraceparent()\n };\n }\n options.headers = headers;\n }\n}\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() || handlerData.xhr && handlerData.xhr.__sentry_own_request__ || !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))) {\n return;\n }\n var xhr = handlerData.xhr.__sentry_xhr__;\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n // if not, create a new span to track it\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: __assign(__assign({}, xhr.data), {\n type: 'xhr',\n method: xhr.method,\n url: xhr.url\n }),\n description: xhr.method + \" \" + xhr.url,\n op: 'http.client'\n });\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","import { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nvar global = getGlobalObject();\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(customStartTransaction, startTransactionOnPageLoad, startTransactionOnLocationChange) {\n if (startTransactionOnPageLoad === void 0) {\n startTransactionOnPageLoad = true;\n }\n if (startTransactionOnLocationChange === void 0) {\n startTransactionOnLocationChange = true;\n }\n if (!global || !global.location) {\n IS_DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n var startingUrl = global.location.href;\n var activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'pageload'\n });\n }\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', function (_a) {\n var to = _a.to,\n from = _a.from;\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Finishing current transaction with op: \" + activeTransaction.op);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'navigation'\n });\n }\n });\n }\n}\n","import { __assign } from \"tslib\";\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData, secToMs } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { MetricsInstrumentation } from './metrics';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nexport var DEFAULT_MAX_TRANSACTION_DURATION_SECONDS = 600;\nvar DEFAULT_BROWSER_TRACING_OPTIONS = __assign({\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n markBackgroundTransactions: true,\n maxTransactionDuration: DEFAULT_MAX_TRANSACTION_DURATION_SECONDS,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true\n}, defaultRequestInstrumentationOptions);\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nvar BrowserTracing = /** @class */function () {\n function BrowserTracing(_options) {\n /**\n * @inheritDoc\n */\n this.name = BrowserTracing.id;\n /** Store configured idle timeout so that it can be added as a tag to transactions */\n this._configuredIdleTimeout = undefined;\n var tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n this._configuredIdleTimeout = _options.idleTimeout;\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n IS_DEBUG_BUILD && (this._emitOptionsWarning = true);\n }\n }\n this.options = __assign(__assign(__assign({}, DEFAULT_BROWSER_TRACING_OPTIONS), _options), {\n tracingOrigins: tracingOrigins\n });\n var _metricOptions = this.options._metricOptions;\n this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);\n }\n /**\n * @inheritDoc\n */\n BrowserTracing.prototype.setupOnce = function (_, getCurrentHub) {\n var _this = this;\n this._getCurrentHub = getCurrentHub;\n if (this._emitOptionsWarning) {\n IS_DEBUG_BUILD && logger.warn('[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.');\n IS_DEBUG_BUILD && logger.warn(\"[Tracing] We added a reasonable default for you: \" + defaultRequestInstrumentationOptions.tracingOrigins);\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options,\n instrumentRouting = _a.routingInstrumentation,\n startTransactionOnLocationChange = _a.startTransactionOnLocationChange,\n startTransactionOnPageLoad = _a.startTransactionOnPageLoad,\n markBackgroundTransactions = _a.markBackgroundTransactions,\n traceFetch = _a.traceFetch,\n traceXHR = _a.traceXHR,\n tracingOrigins = _a.tracingOrigins,\n shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\n instrumentRouting(function (context) {\n return _this._createRouteTransaction(context);\n }, startTransactionOnPageLoad, startTransactionOnLocationChange);\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n instrumentOutgoingRequests({\n traceFetch: traceFetch,\n traceXHR: traceXHR,\n tracingOrigins: tracingOrigins,\n shouldCreateSpanForRequest: shouldCreateSpanForRequest\n });\n };\n /** Create routing idle transaction. */\n BrowserTracing.prototype._createRouteTransaction = function (context) {\n var _this = this;\n if (!this._getCurrentHub) {\n IS_DEBUG_BUILD && logger.warn(\"[Tracing] Did not create \" + context.op + \" transaction because _getCurrentHub is invalid.\");\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options,\n beforeNavigate = _a.beforeNavigate,\n idleTimeout = _a.idleTimeout,\n maxTransactionDuration = _a.maxTransactionDuration;\n var parentContextFromHeader = context.op === 'pageload' ? getHeaderContext() : undefined;\n var expandedContext = __assign(__assign(__assign({}, context), parentContextFromHeader), {\n trimEnd: true\n });\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? __assign(__assign({}, expandedContext), {\n sampled: false\n }) : modifiedContext;\n if (finalContext.sampled === false) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Will not send \" + finalContext.op + \" transaction because of beforeNavigate.\");\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Starting \" + finalContext.op + \" transaction on scope\");\n var hub = this._getCurrentHub();\n var location = getGlobalObject().location;\n var idleTransaction = startIdleTransaction(hub, finalContext, idleTimeout, true, {\n location: location\n });\n idleTransaction.registerBeforeFinishCallback(function (transaction, endTimestamp) {\n _this._metrics.addPerformanceEntries(transaction);\n adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);\n });\n idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);\n return idleTransaction;\n };\n /**\n * @inheritDoc\n */\n BrowserTracing.id = 'BrowserTracing';\n return BrowserTracing;\n}();\nexport { BrowserTracing };\n/**\n * Gets transaction context from a sentry-trace meta.\n *\n * @returns Transaction context data from the header or undefined if there's no header or the header is malformed\n */\nexport function getHeaderContext() {\n var header = getMetaContent('sentry-trace');\n if (header) {\n return extractTraceparentData(header);\n }\n return undefined;\n}\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName) {\n var el = getGlobalObject().document.querySelector(\"meta[name=\" + metaName + \"]\");\n return el ? el.getAttribute('content') : null;\n}\n/** Adjusts transaction value based on max transaction duration */\nfunction adjustTransactionDuration(maxDuration, transaction, endTimestamp) {\n var diff = endTimestamp - transaction.startTimestamp;\n var isOutdatedTransaction = endTimestamp && (diff > maxDuration || diff < 0);\n if (isOutdatedTransaction) {\n transaction.setStatus('deadline_exceeded');\n transaction.setTag('maxTransactionDurationExceeded', 'true');\n }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\nexport { Integrations };\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing } from './browser';\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport {\n// TODO deprecate old name in v7\ninstrumentOutgoingRequests as registerRequestInstrumentation, defaultRequestInstrumentationOptions } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n// We are patching the global object with our hub extension methods\naddExtensionMethods();\nexport { addExtensionMethods };\nexport { extractTraceparentData, getActiveTransaction, hasTracingEnabled, stripUrlQueryAndFragment, TRACEPARENT_REGEXP } from './utils';\n","import { APP_INITIALIZER, ErrorHandler, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { APP_VERSION } from '@configs/app.config';\nimport { createErrorHandler, init, routingInstrumentation, TraceService } from '@sentry/angular';\nimport { BrowserTracing } from '@sentry/tracing';\nimport { environment } from 'environments/environment';\n\n@NgModule({\n providers: [\n {\n provide: ErrorHandler,\n useValue: createErrorHandler({\n showDialog: false\n })\n },\n {\n provide: TraceService,\n deps: [Router]\n },\n {\n provide: APP_INITIALIZER,\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n useFactory: () => () => {},\n deps: [TraceService],\n multi: true\n }\n ]\n})\nexport class SentryModule {\n // NOTE: See https://angular.io/guide/singleton-services#prevent-reimport-of-the-greetingmodule\n constructor(@Optional() @SkipSelf() parentModule: SentryModule) {\n if (parentModule) {\n throw new Error(\n `${parentModule.constructor.name} has already been loaded. Import this module in the AppModule only.`\n );\n }\n\n // Initialise Sentry\n // Notes: If Sentry doesn't work, put this section in initApp (app-pre-boot-initializer)\n if (environment.analyticsEnvironment !== 'local') {\n init({\n dsn: 'https://37bd4fa1b523444598b22ab04e266f12@app.glitchtip.com/2175',\n environment: environment.analyticsEnvironment,\n integrations: [\n new BrowserTracing({\n routingInstrumentation\n })\n ],\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n // NOTE : Reduced for the moment as we are testing Sentry as a trial\n tracesSampleRate: 0.1,\n release: `gps@${APP_VERSION}`,\n autoSessionTracking: false\n });\n }\n }\n}\n","import { HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, LOCALE_ID, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { MAT_LEGACY_TABS_CONFIG as MAT_TABS_CONFIG } from '@angular/material/legacy-tabs';\nimport { HammerModule } from '@angular/platform-browser';\nimport { initApp } from '@core/helpers/app-pre-boot-initializer';\nimport { setRootInjector } from '@core/helpers/root-injector';\nimport { createTranslateLoader } from '@core/helpers/translate-http-loader';\nimport { initializerFactory } from '@core/helpers/translation-initializer-factory';\nimport { AcceptLanguageInterceptor } from '@core/http/accept-language.interceptor';\nimport { ContextInterceptor } from '@core/http/context-interceptor/context.interceptor';\nimport { EncodeParamsInterceptor } from '@core/http/encode-params.interceptor';\nimport { RequestInterceptor } from '@core/http/request.interceptor';\nimport { UnsafeTokenInterceptor } from '@core/http/unsafe-token.interceptor';\nimport { ApplicationContext, AuthService, SituationContext } from '@core/services';\nimport { DynamicLocaleId } from '@models/dynamic-locale-id/dynamic-locale-id';\nimport { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AuthModule } from './auth/auth.module';\nimport { DayjsModule } from './dayjs/dayjs.module';\nimport { SentryModule } from './sentry/sentry.module';\n\n@NgModule({\n imports: [\n AuthModule.forRoot(),\n DayjsModule,\n HammerModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: createTranslateLoader,\n deps: [HttpClient]\n }\n }),\n SentryModule\n ],\n providers: [\n { provide: LOCALE_ID, useClass: DynamicLocaleId, deps: [TranslateService] },\n {\n provide: APP_INITIALIZER,\n useFactory: initApp,\n deps: [ApplicationContext, AuthService, SituationContext],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initializerFactory,\n deps: [Injector, TranslateService],\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: UnsafeTokenInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: EncodeParamsInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AcceptLanguageInterceptor,\n deps: [TranslateService],\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ContextInterceptor,\n deps: [ApplicationContext],\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: RequestInterceptor,\n multi: true\n },\n { provide: MAT_TABS_CONFIG, useValue: { animationDuration: '0ms' } }\n ]\n})\nexport class CoreModule {\n // NOTE: See https://angular.io/guide/singleton-services#prevent-reimport-of-the-greetingmodule\n constructor(@Optional() @SkipSelf() parentModule: CoreModule, private injector: Injector) {\n if (parentModule) {\n throw new Error(\n `${parentModule.constructor.name} has already been loaded. Import this module in the AppModule only.`\n );\n }\n\n // use for create custom typescript decorators\n setRootInjector(this.injector);\n }\n}\n","/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppRouteUrls } from '@core/routing/app/route-urls';\nimport { ErrorCodes } from '@models/error-codes/error-codes';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { catchError, concatMap, map, of, withLatestFrom } from 'rxjs';\nimport { ThematicsService } from '../services/thematiques.service';\nimport { thematicsActions } from './thematics.actions';\nimport { selectThematicEntities, selectThematics } from './thematics.selectors';\n@Injectable()\nexport class ThematicsEffects {\n public loadThematic$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(thematicsActions.loadSingleThematic),\n withLatestFrom(this.store.select(selectThematicEntities)),\n concatMap(([action, entities]) => {\n const thematic = entities[action.uuid];\n\n if (thematic) {\n return of(thematicsActions.loadSingleThematicSuccess({ thematic }));\n }\n\n return this.thematicsService.getThematicAll(action.uuid).pipe(\n map(thematic => thematicsActions.loadSingleThematicSuccess({ thematic })),\n catchError((error: any) => of(thematicsActions.loadSingleThematicFailure({ error })))\n );\n })\n );\n });\n\n public loadThematicError$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(thematicsActions.loadSingleThematicFailure),\n concatMap(() =>\n // TODO go to the route corresponding to the error when the error pages are made (by default we route in 404 page)\n of(this.router.navigateByUrl(`/${AppRouteUrls.ERROR(ErrorCodes.ERROR_404)}`))\n )\n );\n },\n { dispatch: false }\n );\n\n public loadThematics$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(thematicsActions.loadThematics),\n withLatestFrom(this.store.select(selectThematics)),\n concatMap(([_, thematics]) => {\n const allThematicsCount = 17;\n\n if (thematics.length >= allThematicsCount) {\n return of(thematicsActions.loadThematicsSuccess({ thematics }));\n }\n\n return this.thematicsService.getThematicsCauses().pipe(\n map(thematics => thematicsActions.loadThematicsSuccess({ thematics })),\n catchError((error: any) => of(thematicsActions.loadThematicsFailure({ error })))\n );\n })\n );\n });\n\n public loadThematicsError$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(thematicsActions.loadThematicsFailure)\n // TODO concatMap((action) => show message action.error)\n );\n },\n { dispatch: false }\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly thematicsService: ThematicsService,\n private readonly store: Store,\n private readonly router: Router\n ) {}\n}\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { thematicsActions } from './thematics.actions';\nimport {\n initialThematicsState,\n thematicsAdapter,\n ThematicsState,\n THEMATICS_FEATURE_KEY\n} from './thematics.state';\n\nexport const thematicsReducer = createReducer(\n initialThematicsState,\n on(\n thematicsActions.loadSingleThematic,\n (state): ThematicsState => ({\n ...state,\n loading: true\n })\n ),\n on(thematicsActions.loadSingleThematicSuccess, (state, action) =>\n thematicsAdapter.addOne(action.thematic, { ...state, loading: false })\n ),\n on(\n thematicsActions.loadSingleThematicFailure,\n (state, action): ThematicsState => ({\n ...state,\n loading: false,\n error: action.error\n })\n ),\n on(\n thematicsActions.loadThematics,\n (state): ThematicsState => ({\n ...state,\n loading: true\n })\n ),\n on(thematicsActions.loadThematicsSuccess, (state, action) =>\n thematicsAdapter.addMany(action.thematics, { ...state, loading: false })\n ),\n on(\n thematicsActions.loadThematicsFailure,\n (state, action): ThematicsState => ({\n ...state,\n loading: false,\n error: action.error\n })\n )\n);\n\nexport const THEMATICS_FEATURE_STATE = createFeature({\n name: THEMATICS_FEATURE_KEY,\n reducer: thematicsReducer\n});\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { ThematicsEffects } from './+state/thematics.effects';\nimport { THEMATICS_FEATURE_STATE } from './+state/thematics.reducer';\n\n// NOTES : ThematicsModule is not lazy loaded because we need to dispatch actions from thematic state in cause state\n// If you need to lazy load this module for performance reason, you probably can :\n// 1. merge module causes and thematics in feature module lazy loaded\n// 2. put thematics state in app State and remove feature state for thematics\n\n@NgModule({\n imports: [\n StoreModule.forFeature(THEMATICS_FEATURE_STATE),\n EffectsModule.forFeature([ThematicsEffects])\n ]\n})\nexport class ThematicsModule {}\n","import * as i1 from '@ngrx/store';\nimport { createAction, props, isNgrxMockEnvironment, select, ACTIVE_RUNTIME_CHECKS, createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, Injectable, Inject, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, inject, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { NavigationStart, RoutesRecognized, NavigationCancel, NavigationError, NavigationEnd } from '@angular/router';\nimport { withLatestFrom } from 'rxjs/operators';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nconst ROUTER_REQUEST = '@ngrx/router-store/request';\nconst routerRequestAction = createAction(ROUTER_REQUEST, props());\n/**\n * An action dispatched when the router navigates.\n */\nconst ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\nconst routerNavigationAction = createAction(ROUTER_NAVIGATION, props());\n/**\n * An action dispatched when the router cancels navigation.\n */\nconst ROUTER_CANCEL = '@ngrx/router-store/cancel';\nconst routerCancelAction = createAction(ROUTER_CANCEL, props());\n/**\n * An action dispatched when the router errors.\n */\nconst ROUTER_ERROR = '@ngrx/router-store/error';\nconst routerErrorAction = createAction(ROUTER_ERROR, props());\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nconst ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\nconst routerNavigatedAction = createAction(ROUTER_NAVIGATED, props());\nfunction routerReducer(state, action) {\n // Allow compilation with strictFunctionTypes - ref: #1344\n const routerAction = action;\n switch (routerAction.type) {\n case ROUTER_NAVIGATION:\n case ROUTER_ERROR:\n case ROUTER_CANCEL:\n return {\n state: routerAction.payload.routerState,\n navigationId: routerAction.payload.event.id\n };\n default:\n return state;\n }\n}\nclass MinimalRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url\n };\n }\n serializeRoute(route) {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n params: route.params,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n title: route.title,\n routeConfig: route.routeConfig ? {\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n title: typeof route.routeConfig.title === 'string' ? route.routeConfig.title : undefined\n } : null,\n queryParams: route.queryParams,\n fragment: route.fragment,\n firstChild: children[0],\n children\n };\n }\n}\nvar NavigationActionTiming;\n(function (NavigationActionTiming) {\n NavigationActionTiming[NavigationActionTiming[\"PreActivation\"] = 1] = \"PreActivation\";\n NavigationActionTiming[NavigationActionTiming[\"PostActivation\"] = 2] = \"PostActivation\";\n})(NavigationActionTiming || (NavigationActionTiming = {}));\nconst DEFAULT_ROUTER_FEATURENAME = 'router';\nconst _ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Internal Configuration');\nconst ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Configuration');\nfunction _createRouterConfig(config) {\n return {\n stateKey: DEFAULT_ROUTER_FEATURENAME,\n serializer: MinimalRouterStateSerializer,\n navigationActionTiming: NavigationActionTiming.PreActivation,\n ...config\n };\n}\nclass FullRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url\n };\n }\n serializeRoute(route) {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n params: route.params,\n paramMap: route.paramMap,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n title: route.title,\n routeConfig: route.routeConfig ? {\n component: route.routeConfig.component,\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n title: route.routeConfig.title\n } : null,\n queryParams: route.queryParams,\n queryParamMap: route.queryParamMap,\n fragment: route.fragment,\n component: route.routeConfig ? route.routeConfig.component : undefined,\n root: undefined,\n parent: undefined,\n firstChild: children[0],\n pathFromRoot: undefined,\n children\n };\n }\n}\nclass RouterStateSerializer {}\nvar RouterTrigger;\n(function (RouterTrigger) {\n RouterTrigger[RouterTrigger[\"NONE\"] = 1] = \"NONE\";\n RouterTrigger[RouterTrigger[\"ROUTER\"] = 2] = \"ROUTER\";\n RouterTrigger[RouterTrigger[\"STORE\"] = 3] = \"STORE\";\n})(RouterTrigger || (RouterTrigger = {}));\n/**\n * Shared router initialization logic used alongside both the StoreRouterConnectingModule and the provideRouterStore\n * function\n */\nclass StoreRouterConnectingService {\n constructor(store, router, serializer, errorHandler, config, activeRuntimeChecks) {\n this.store = store;\n this.router = router;\n this.serializer = serializer;\n this.errorHandler = errorHandler;\n this.config = config;\n this.activeRuntimeChecks = activeRuntimeChecks;\n this.lastEvent = null;\n this.routerState = null;\n this.trigger = RouterTrigger.NONE;\n this.stateKey = this.config.stateKey;\n if (!isNgrxMockEnvironment() && isDevMode() && (activeRuntimeChecks?.strictActionSerializability || activeRuntimeChecks?.strictStateSerializability) && this.serializer instanceof FullRouterStateSerializer) {\n console.warn('@ngrx/router-store: The serializability runtime checks cannot be enabled ' + 'with the FullRouterStateSerializer. The FullRouterStateSerializer ' + 'has an unserializable router state and actions that are not serializable. ' + 'To use the serializability runtime checks either use ' + 'the MinimalRouterStateSerializer or implement a custom router state serializer.');\n }\n this.setUpStoreStateListener();\n this.setUpRouterEventsListener();\n }\n setUpStoreStateListener() {\n this.store.pipe(select(this.stateKey), withLatestFrom(this.store)).subscribe(([routerStoreState, storeState]) => {\n this.navigateIfNeeded(routerStoreState, storeState);\n });\n }\n navigateIfNeeded(routerStoreState, storeState) {\n if (!routerStoreState || !routerStoreState.state) {\n return;\n }\n if (this.trigger === RouterTrigger.ROUTER) {\n return;\n }\n if (this.lastEvent instanceof NavigationStart) {\n return;\n }\n const url = routerStoreState.state.url;\n if (!isSameUrl(this.router.url, url)) {\n this.storeState = storeState;\n this.trigger = RouterTrigger.STORE;\n this.router.navigateByUrl(url).catch(error => {\n this.errorHandler.handleError(error);\n });\n }\n }\n setUpRouterEventsListener() {\n const dispatchNavLate = this.config.navigationActionTiming === NavigationActionTiming.PostActivation;\n let routesRecognized;\n this.router.events.pipe(withLatestFrom(this.store)).subscribe(([event, storeState]) => {\n this.lastEvent = event;\n if (event instanceof NavigationStart) {\n this.routerState = this.serializer.serialize(this.router.routerState.snapshot);\n if (this.trigger !== RouterTrigger.STORE) {\n this.storeState = storeState;\n this.dispatchRouterRequest(event);\n }\n } else if (event instanceof RoutesRecognized) {\n routesRecognized = event;\n if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n this.dispatchRouterNavigation(event);\n }\n } else if (event instanceof NavigationCancel) {\n this.dispatchRouterCancel(event);\n this.reset();\n } else if (event instanceof NavigationError) {\n this.dispatchRouterError(event);\n this.reset();\n } else if (event instanceof NavigationEnd) {\n if (this.trigger !== RouterTrigger.STORE) {\n if (dispatchNavLate) {\n this.dispatchRouterNavigation(routesRecognized);\n }\n this.dispatchRouterNavigated(event);\n }\n this.reset();\n }\n });\n }\n dispatchRouterRequest(event) {\n this.dispatchRouterAction(ROUTER_REQUEST, {\n event\n });\n }\n dispatchRouterNavigation(lastRoutesRecognized) {\n const nextRouterState = this.serializer.serialize(lastRoutesRecognized.state);\n this.dispatchRouterAction(ROUTER_NAVIGATION, {\n routerState: nextRouterState,\n event: new RoutesRecognized(lastRoutesRecognized.id, lastRoutesRecognized.url, lastRoutesRecognized.urlAfterRedirects, nextRouterState)\n });\n }\n dispatchRouterCancel(event) {\n this.dispatchRouterAction(ROUTER_CANCEL, {\n storeState: this.storeState,\n event\n });\n }\n dispatchRouterError(event) {\n this.dispatchRouterAction(ROUTER_ERROR, {\n storeState: this.storeState,\n event: new NavigationError(event.id, event.url, `${event}`)\n });\n }\n dispatchRouterNavigated(event) {\n const routerState = this.serializer.serialize(this.router.routerState.snapshot);\n this.dispatchRouterAction(ROUTER_NAVIGATED, {\n event,\n routerState\n });\n }\n dispatchRouterAction(type, payload) {\n this.trigger = RouterTrigger.ROUTER;\n try {\n this.store.dispatch({\n type,\n payload: {\n routerState: this.routerState,\n ...payload,\n event: this.config.routerState === 0 /* RouterState.Full */ ? payload.event : {\n id: payload.event.id,\n url: payload.event.url,\n // safe, as it will just be `undefined` for non-NavigationEnd router events\n urlAfterRedirects: payload.event.urlAfterRedirects\n }\n }\n });\n } finally {\n this.trigger = RouterTrigger.NONE;\n }\n }\n reset() {\n this.trigger = RouterTrigger.NONE;\n this.storeState = null;\n this.routerState = null;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreRouterConnectingService_Factory(ɵt) {\n return new (ɵt || StoreRouterConnectingService)(i0.ɵɵinject(i1.Store), i0.ɵɵinject(i2.Router), i0.ɵɵinject(RouterStateSerializer), i0.ɵɵinject(i0.ErrorHandler), i0.ɵɵinject(ROUTER_CONFIG), i0.ɵɵinject(ACTIVE_RUNTIME_CHECKS));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StoreRouterConnectingService,\n factory: StoreRouterConnectingService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StoreRouterConnectingService, [{\n type: Injectable\n }], () => [{\n type: i1.Store\n }, {\n type: i2.Router\n }, {\n type: RouterStateSerializer\n }, {\n type: i0.ErrorHandler\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [ROUTER_CONFIG]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [ACTIVE_RUNTIME_CHECKS]\n }]\n }], null);\n})();\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first, second) {\n return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\nfunction stripTrailingSlash(text) {\n if (text?.length > 0 && text[text.length - 1] === '/') {\n return text.substring(0, text.length - 1);\n }\n return text;\n}\n\n/**\n * Connects the Angular Router to the Store.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStore({ router: routerReducer }),\n * provideRouterStore(),\n * ],\n * });\n * ```\n */\nfunction provideRouterStore(config = {}) {\n return makeEnvironmentProviders([{\n provide: _ROUTER_CONFIG,\n useValue: config\n }, {\n provide: ROUTER_CONFIG,\n useFactory: _createRouterConfig,\n deps: [_ROUTER_CONFIG]\n }, {\n provide: RouterStateSerializer,\n useClass: config.serializer ? config.serializer : config.routerState === 0 /* RouterState.Full */ ? FullRouterStateSerializer : MinimalRouterStateSerializer\n }, {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(StoreRouterConnectingService);\n }\n }, StoreRouterConnectingService]);\n}\n\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n * routerState: SerializedRouterStateSnapshot,\n * event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n * declarations: [AppCmp, SimpleCmp],\n * imports: [\n * BrowserModule,\n * StoreModule.forRoot(mapOfReducers),\n * RouterModule.forRoot([\n * { path: '', component: SimpleCmp },\n * { path: 'next', component: SimpleCmp }\n * ]),\n * StoreRouterConnectingModule.forRoot()\n * ],\n * bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass StoreRouterConnectingModule {\n static forRoot(config = {}) {\n return {\n ngModule: StoreRouterConnectingModule,\n providers: [provideRouterStore(config)]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreRouterConnectingModule_Factory(ɵt) {\n return new (ɵt || StoreRouterConnectingModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreRouterConnectingModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StoreRouterConnectingModule, [{\n type: NgModule,\n args: [{}]\n }], null, null);\n})();\nfunction createRouterSelector() {\n return createFeatureSelector(DEFAULT_ROUTER_FEATURENAME);\n}\nfunction getRouterSelectors(selectState = createRouterSelector()) {\n const selectRouterState = createSelector(selectState, router => router && router.state);\n const selectRootRoute = createSelector(selectRouterState, routerState => routerState && routerState.root);\n const selectCurrentRoute = createSelector(selectRootRoute, rootRoute => {\n if (!rootRoute) {\n return undefined;\n }\n let route = rootRoute;\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n });\n const selectFragment = createSelector(selectRootRoute, route => route && route.fragment);\n const selectQueryParams = createSelector(selectRootRoute, route => route && route.queryParams);\n const selectQueryParam = param => createSelector(selectQueryParams, params => params && params[param]);\n const selectRouteParams = createSelector(selectCurrentRoute, route => route && route.params);\n const selectRouteParam = param => createSelector(selectRouteParams, params => params && params[param]);\n const selectRouteData = createSelector(selectCurrentRoute, route => route && route.data);\n const selectRouteDataParam = param => createSelector(selectRouteData, data => data && data[param]);\n const selectUrl = createSelector(selectRouterState, routerState => routerState && routerState.url);\n const selectTitle = createSelector(selectCurrentRoute, route => {\n if (!route?.routeConfig) {\n return undefined;\n }\n return typeof route.routeConfig.title === 'string' ? route.routeConfig.title // static title\n : route.title; // resolved title\n });\n return {\n selectCurrentRoute,\n selectFragment,\n selectQueryParams,\n selectQueryParam,\n selectRouteParams,\n selectRouteParam,\n selectRouteData,\n selectRouteDataParam,\n selectUrl,\n selectTitle\n };\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DEFAULT_ROUTER_FEATURENAME, FullRouterStateSerializer, MinimalRouterStateSerializer, NavigationActionTiming, ROUTER_CANCEL, ROUTER_CONFIG, ROUTER_ERROR, ROUTER_NAVIGATED, ROUTER_NAVIGATION, ROUTER_REQUEST, RouterStateSerializer, StoreRouterConnectingModule, createRouterSelector, getRouterSelectors, provideRouterStore, routerCancelAction, routerErrorAction, routerNavigatedAction, routerNavigationAction, routerReducer, routerRequestAction };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, NgZone, Injectable, Inject, makeEnvironmentProviders, NgModule } from '@angular/core';\nimport * as i2 from '@ngrx/store';\nimport { ActionsSubject, UPDATE, INIT, INITIAL_STATE, StateObservable, ReducerManagerDispatcher } from '@ngrx/store';\nimport { EMPTY, Observable, of, merge, queueScheduler, ReplaySubject } from 'rxjs';\nimport { share, filter, map, concatMap, timeout, debounceTime, catchError, take, takeUntil, switchMap, skip, observeOn, withLatestFrom, scan } from 'rxjs/operators';\nimport { toSignal } from '@angular/core/rxjs-interop';\nconst PERFORM_ACTION = 'PERFORM_ACTION';\nconst REFRESH = 'REFRESH';\nconst RESET = 'RESET';\nconst ROLLBACK = 'ROLLBACK';\nconst COMMIT = 'COMMIT';\nconst SWEEP = 'SWEEP';\nconst TOGGLE_ACTION = 'TOGGLE_ACTION';\nconst SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nconst JUMP_TO_STATE = 'JUMP_TO_STATE';\nconst JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nconst IMPORT_STATE = 'IMPORT_STATE';\nconst LOCK_CHANGES = 'LOCK_CHANGES';\nconst PAUSE_RECORDING = 'PAUSE_RECORDING';\nclass PerformAction {\n constructor(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n }\n}\nclass Refresh {\n constructor() {\n this.type = REFRESH;\n }\n}\nclass Reset {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n}\nclass Rollback {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n}\nclass Commit {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n}\nclass Sweep {\n constructor() {\n this.type = SWEEP;\n }\n}\nclass ToggleAction {\n constructor(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n}\nclass SetActionsActive {\n constructor(start, end, active = true) {\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n}\nclass JumpToState {\n constructor(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n}\nclass JumpToAction {\n constructor(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n}\nclass ImportState {\n constructor(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n}\nclass LockChanges {\n constructor(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n}\nclass PauseRecording {\n constructor(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n}\n\n/**\n * Chrome extension documentation\n * @see https://github.com/reduxjs/redux-devtools/blob/main/extension/docs/API/Arguments.md\n * Firefox extension documentation\n * @see https://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md\n */\nclass StoreDevtoolsConfig {\n constructor() {\n /**\n * Maximum allowed actions to be stored in the history tree (default: `false`)\n */\n this.maxAge = false;\n }\n}\nconst STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/store-devtools Options');\n/**\n * Used to provide a `StoreDevtoolsConfig` for the store-devtools.\n */\nconst INITIAL_OPTIONS = new InjectionToken('@ngrx/store-devtools Initial Config');\nfunction noMonitor() {\n return null;\n}\nconst DEFAULT_NAME = 'NgRx Store DevTools';\nfunction createConfig(optionsInput) {\n const DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n autoPause: false,\n trace: false,\n traceLimit: 75,\n // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n // Start/pause recording of dispatched actions\n lock: true,\n // Lock/unlock dispatching actions and side effects\n persist: true,\n // Persist states on page reloading\n export: true,\n // Export history of actions in a file\n import: 'custom',\n // Import history of actions from a file\n jump: true,\n // Jump back and forth (time travelling)\n skip: true,\n // Skip (cancel) actions\n reorder: true,\n // Drag and drop actions in the history list\n dispatch: true,\n // Dispatch custom actions or action creators\n test: true // Generate tests for the selected actions\n },\n connectInZone: false\n };\n const options = typeof optionsInput === 'function' ? optionsInput() : optionsInput;\n const logOnly = options.logOnly ? {\n pause: true,\n export: true,\n test: true\n } : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n if (features.import === true) {\n features.import = 'custom';\n }\n const config = Object.assign({}, DEFAULT_OPTIONS, {\n features\n }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`);\n }\n return config;\n}\nfunction difference(first, second) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nfunction unliftState(liftedState) {\n const {\n computedStates,\n currentStateIndex\n } = liftedState;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n const {\n state\n } = computedStates[computedStates.length - 1];\n return state;\n }\n const {\n state\n } = computedStates[currentStateIndex];\n return state;\n}\nfunction unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nfunction liftAction(action) {\n return new PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n */\nfunction sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, {});\n}\n/**\n * Sanitizes given action with given function.\n */\nfunction sanitizeAction(actionSanitizer, action, actionIdx) {\n return {\n ...action,\n action: actionSanitizer(action.action, actionIdx)\n };\n}\n/**\n * Sanitizes given states with given function.\n */\nfunction sanitizeStates(stateSanitizer, states) {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error\n }));\n}\n/**\n * Sanitizes given state with given function.\n */\nfunction sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n/**\n * Read the config and tell if actions should be filtered\n */\nfunction shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n}\n/**\n * Return a full filtered lifted state\n */\nfunction filterLiftedState(liftedState, predicate, safelist, blocklist) {\n const filteredStagedActionIds = [];\n const filteredActionsById = {};\n const filteredComputedStates = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction) return;\n if (idx && isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return {\n ...liftedState,\n stagedActionIds: filteredStagedActionIds,\n actionsById: filteredActionsById,\n computedStates: filteredComputedStates\n };\n}\n/**\n * Return true is the action should be ignored\n */\nfunction isActionFiltered(state, action, predicate, safelist, blockedlist) {\n const predicateMatch = predicate && !predicate(state, action.action);\n const safelistMatch = safelist && !action.action.type.match(safelist.map(s => escapeRegExp(s)).join('|'));\n const blocklistMatch = blockedlist && action.action.type.match(blockedlist.map(s => escapeRegExp(s)).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n}\n/**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\nfunction escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction injectZoneConfig(connectInZone) {\n const ngZone = connectInZone ? inject(NgZone) : null;\n return {\n ngZone,\n connectInZone\n };\n}\nclass DevtoolsDispatcher extends ActionsSubject {\n /** @nocollapse */static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDevtoolsDispatcher_BaseFactory;\n return function DevtoolsDispatcher_Factory(ɵt) {\n return (ɵDevtoolsDispatcher_BaseFactory || (ɵDevtoolsDispatcher_BaseFactory = i0.ɵɵgetInheritedFactory(DevtoolsDispatcher)))(ɵt || DevtoolsDispatcher);\n };\n })();\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsDispatcher,\n factory: DevtoolsDispatcher.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DevtoolsDispatcher, [{\n type: Injectable\n }], null, null);\n})();\nconst ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION'\n};\nconst REDUX_DEVTOOLS_EXTENSION = new InjectionToken('@ngrx/store-devtools Redux Devtools Extension');\nclass DevtoolsExtension {\n constructor(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.zoneConfig = injectZoneConfig(this.config.connectInZone);\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n notify(action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n const currentState = unliftState(state);\n if (shouldFilterActions(this.config) && isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex) : currentState;\n const sanitizedAction = this.config.actionSanitizer ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId) : action;\n this.sendToReduxDevtools(() => this.extensionConnection.send(sanitizedAction, sanitizedState));\n } else {\n // Requires full state update\n const sanitizedLiftedState = {\n ...state,\n stagedActionIds: state.stagedActionIds,\n actionsById: this.config.actionSanitizer ? sanitizeActions(this.config.actionSanitizer, state.actionsById) : state.actionsById,\n computedStates: this.config.stateSanitizer ? sanitizeStates(this.config.stateSanitizer, state.computedStates) : state.computedStates\n };\n this.sendToReduxDevtools(() => this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.config)));\n }\n }\n createChangesObservable() {\n if (!this.devtoolsExtension) {\n return EMPTY;\n }\n return new Observable(subscriber => {\n const connection = this.zoneConfig.connectInZone ?\n // To reduce change detection cycles, we need to run the `connect` method\n // outside of the Angular zone. The `connect` method adds a `message`\n // event listener to communicate with an extension using `window.postMessage`\n // and handle message events.\n this.zoneConfig.ngZone.runOutsideAngular(() => this.devtoolsExtension.connect(this.getExtensionConfig(this.config))) : this.devtoolsExtension.connect(this.getExtensionConfig(this.config));\n this.extensionConnection = connection;\n connection.init();\n connection.subscribe(change => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n const start$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.START));\n // Listen for the stop action\n const stop$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.STOP));\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.DISPATCH), map(change => this.unwrapAction(change.payload)), concatMap(action => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(filter(action => action.type === UPDATE), timeout(1000), debounceTime(1000), map(() => action), catchError(() => of(action)), take(1));\n } else {\n return of(action);\n }\n }));\n // Listen for unlifted actions\n const actions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.ACTION), map(change => this.unwrapAction(change.payload)));\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n unwrapAction(action) {\n // indirect eval according to https://esbuild.github.io/content-types/#direct-eval\n return typeof action === 'string' ? (0, eval)(`(${action})`) : action;\n }\n getExtensionConfig(config) {\n const extensionOptions = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n autoPause: config.autoPause ?? false,\n trace: config.trace ?? false,\n traceLimit: config.traceLimit ?? 75\n // The action/state sanitizers are not added to the config\n // because sanitation is done in this class already.\n // It is done before sending it to the devtools extension for consistency:\n // - If we call extensionConnection.send(...),\n // the extension would call the sanitizers.\n // - If we call devtoolsExtension.send(...) (aka full state update),\n // the extension would NOT call the sanitizers, so we have to do it ourselves.\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n sendToReduxDevtools(send) {\n try {\n send();\n } catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n }\n /** @nocollapse */\n static {\n this.ɵfac = function DevtoolsExtension_Factory(ɵt) {\n return new (ɵt || DevtoolsExtension)(i0.ɵɵinject(REDUX_DEVTOOLS_EXTENSION), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG), i0.ɵɵinject(DevtoolsDispatcher));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsExtension,\n factory: DevtoolsExtension.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DevtoolsExtension, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [REDUX_DEVTOOLS_EXTENSION]\n }]\n }, {\n type: StoreDevtoolsConfig,\n decorators: [{\n type: Inject,\n args: [STORE_DEVTOOLS_CONFIG]\n }]\n }, {\n type: DevtoolsDispatcher\n }], null);\n})();\nconst INIT_ACTION = {\n type: INIT\n};\nconst RECOMPUTE = '@ngrx/store-devtools/recompute';\nconst RECOMPUTE_ACTION = {\n type: RECOMPUTE\n};\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain'\n };\n }\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n } catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err);\n }\n return {\n state: nextState,\n error: nextError\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length && computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry = shouldSkip ? previousEntry : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n return nextComputedStates;\n}\nfunction liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: {\n 0: liftAction(INIT_ACTION)\n },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n */\nfunction liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options = {}) {\n /**\n * Manages how the history actions modify the history state.\n */\n return reducer => (liftedState, liftedAction) => {\n let {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedState || initialLiftedState;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n } else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(id => idsToDelete.indexOf(id) === -1);\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex = currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case LOCK_CHANGES:\n {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case PAUSE_RECORDING:\n {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause'\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n } else {\n commitChanges();\n }\n break;\n }\n case RESET:\n {\n // Get back to the state the store was created with.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case COMMIT:\n {\n commitChanges();\n break;\n }\n case ROLLBACK:\n {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case TOGGLE_ACTION:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n id: actionId\n } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n } else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case SET_ACTIONS_ACTIVE:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n start,\n end,\n active\n } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++) actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n } else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case JUMP_TO_STATE:\n {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case JUMP_TO_ACTION:\n {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1) currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case SWEEP:\n {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case PERFORM_ACTION:\n {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused || liftedState && isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist)) {\n // If recording is paused or if the action should be ignored, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [...computedStates.slice(0, -1), computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler)];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE:\n {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT:\n {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE:\n {\n const stateHasErrors = computedStates.filter(state => state.error).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n } else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = [...stagedActionIds, actionId];\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => ({\n ...cmp,\n state: reducer(cmp.state, RECOMPUTE_ACTION)\n }));\n currentStateIndex = stagedActionIds.length - 1;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default:\n {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n };\n };\n}\nclass StoreDevtools {\n constructor(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n const liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n const zoneConfig = injectZoneConfig(config.connectInZone);\n const liftedStateSubject = new ReplaySubject(1);\n this.liftedStateSubscription = liftedAction$.pipe(withLatestFrom(liftedReducer$),\n // The extension would post messages back outside of the Angular zone\n // because we call `connect()` wrapped with `runOutsideAngular`. We run change\n // detection only once at the end after all the required asynchronous tasks have\n // been processed (for instance, `setInterval` scheduled by the `timeout` operator).\n // We have to re-enter the Angular zone before the `scan` since it runs the reducer\n // which must be run within the Angular zone.\n emitInZone(zoneConfig), scan(({\n state: liftedState\n }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return {\n state: reducedLiftedState,\n action\n };\n }, {\n state: liftedInitialState,\n action: null\n })).subscribe(({\n state,\n action\n }) => {\n liftedStateSubject.next(state);\n if (action.type === PERFORM_ACTION) {\n const unliftedAction = action.action;\n scannedActions.next(unliftedAction);\n }\n });\n this.extensionStartSubscription = extension.start$.pipe(emitInZone(zoneConfig)).subscribe(() => {\n this.refresh();\n });\n const liftedState$ = liftedStateSubject.asObservable();\n const state$ = liftedState$.pipe(map(unliftState));\n Object.defineProperty(state$, 'state', {\n value: toSignal(state$, {\n manualCleanup: true,\n requireSync: true\n })\n });\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n ngOnDestroy() {\n // Even though the store devtools plugin is recommended to be\n // used only in development mode, it can still cause a memory leak\n // in microfrontend applications that are being created and destroyed\n // multiple times during development. This results in excessive memory\n // consumption, as it prevents entire apps from being garbage collected.\n this.liftedStateSubscription.unsubscribe();\n this.extensionStartSubscription.unsubscribe();\n }\n dispatch(action) {\n this.dispatcher.next(action);\n }\n next(action) {\n this.dispatcher.next(action);\n }\n error(error) {}\n complete() {}\n performAction(action) {\n this.dispatch(new PerformAction(action, +Date.now()));\n }\n refresh() {\n this.dispatch(new Refresh());\n }\n reset() {\n this.dispatch(new Reset(+Date.now()));\n }\n rollback() {\n this.dispatch(new Rollback(+Date.now()));\n }\n commit() {\n this.dispatch(new Commit(+Date.now()));\n }\n sweep() {\n this.dispatch(new Sweep());\n }\n toggleAction(id) {\n this.dispatch(new ToggleAction(id));\n }\n jumpToAction(actionId) {\n this.dispatch(new JumpToAction(actionId));\n }\n jumpToState(index) {\n this.dispatch(new JumpToState(index));\n }\n importState(nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n }\n lockChanges(status) {\n this.dispatch(new LockChanges(status));\n }\n pauseRecording(status) {\n this.dispatch(new PauseRecording(status));\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtools_Factory(ɵt) {\n return new (ɵt || StoreDevtools)(i0.ɵɵinject(DevtoolsDispatcher), i0.ɵɵinject(i2.ActionsSubject), i0.ɵɵinject(i2.ReducerObservable), i0.ɵɵinject(DevtoolsExtension), i0.ɵɵinject(i2.ScannedActionsSubject), i0.ɵɵinject(i0.ErrorHandler), i0.ɵɵinject(INITIAL_STATE), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StoreDevtools,\n factory: StoreDevtools.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StoreDevtools, [{\n type: Injectable\n }], () => [{\n type: DevtoolsDispatcher\n }, {\n type: i2.ActionsSubject\n }, {\n type: i2.ReducerObservable\n }, {\n type: DevtoolsExtension\n }, {\n type: i2.ScannedActionsSubject\n }, {\n type: i0.ErrorHandler\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [INITIAL_STATE]\n }]\n }, {\n type: StoreDevtoolsConfig,\n decorators: [{\n type: Inject,\n args: [STORE_DEVTOOLS_CONFIG]\n }]\n }], null);\n})();\n/**\n * If the devtools extension is connected out of the Angular zone,\n * this operator will emit all events within the zone.\n */\nfunction emitInZone({\n ngZone,\n connectInZone\n}) {\n return source => connectInZone ? new Observable(subscriber => source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: error => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete())\n })) : source;\n}\nconst IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('@ngrx/store-devtools Is Devtools Extension or Monitor Present');\nfunction createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\nfunction createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' && typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n } else {\n return null;\n }\n}\n/**\n * Provides developer tools and instrumentation for `Store`.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStoreDevtools({\n * maxAge: 25,\n * logOnly: !isDevMode(),\n * }),\n * ],\n * });\n * ```\n */\nfunction provideStoreDevtools(options = {}) {\n return makeEnvironmentProviders([DevtoolsExtension, DevtoolsDispatcher, StoreDevtools, {\n provide: INITIAL_OPTIONS,\n useValue: options\n }, {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent\n }, {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension\n }, {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig\n }, {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable\n }, {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher\n }]);\n}\nfunction createStateObservable(devtools) {\n return devtools.state;\n}\nclass StoreDevtoolsModule {\n static instrument(options = {}) {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [provideStoreDevtools(options)]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtoolsModule_Factory(ɵt) {\n return new (ɵt || StoreDevtoolsModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreDevtoolsModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StoreDevtoolsModule, [{\n type: NgModule,\n args: [{}]\n }], null, null);\n})();\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_OPTIONS, RECOMPUTE, REDUX_DEVTOOLS_EXTENSION, StoreDevtools, StoreDevtoolsConfig, StoreDevtoolsModule, provideStoreDevtools };\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { EXTERNAL_LINKS_CONFIG } from '@configs/external-links.config';\nimport { RouteIds } from '@core/routing/route-ids';\nimport { AnalyticsService, ApplicationContext } from '@core/services';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-consent-banner',\n templateUrl: './consent-banner.component.html',\n styleUrls: ['./consent-banner.component.scss']\n})\nexport class ConsentBannerComponent implements OnInit, OnDestroy {\n public externalLinks: boolean;\n\n public get isAdminPage(): boolean {\n return this.route.snapshot.data.routeId === RouteIds.ADMIN;\n }\n\n private onDestroySubject$ = new Subject();\n\n constructor(\n private analyticsService: AnalyticsService,\n private context: ApplicationContext,\n private route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.externalLinks = EXTERNAL_LINKS_CONFIG(this.context.product);\n }\n\n public ngOnDestroy(): void {\n this.onDestroySubject$.next();\n this.onDestroySubject$.complete();\n }\n\n public onConsent(): void {\n this.analyticsService.consent().pipe(takeUntil(this.onDestroySubject$)).subscribe();\n }\n\n public onDismiss(): void {\n this.analyticsService.dismiss();\n }\n}\n","

\n {{\n (isAdminPage ? \"consent-banner.consent-text-admin\" : \"consent-banner.consent-text\") | translate\n }}\n \n consent-banner.privacy-policy.\n\n \n {{ \"consent-banner.privacy-policy\" | translate }}\n \n

\n\n
\n \n\n \n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MaterialModule } from '@shared/modules/material.module';\nimport { ConsentBannerComponent } from './consent-banner.component';\n\n@NgModule({\n declarations: [ConsentBannerComponent],\n imports: [CommonModule, MaterialModule, RouterModule, TranslateModule],\n exports: [ConsentBannerComponent]\n})\nexport class ConsentBannerModule {}\n","import { RouterStateSnapshot } from '@angular/router';\nimport { RouterStateSerializer } from '@ngrx/router-store';\nimport { CustomRouterState } from './custom-route.model';\n\nexport class CustomSerializer implements RouterStateSerializer {\n public serialize(routerState: RouterStateSnapshot): CustomRouterState {\n let route = routerState.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const {\n url,\n root: { queryParams }\n } = routerState;\n\n const { params, data } = route;\n\n // Only return an object including the URL, params, data and query params\n // instead of the entire snapshot\n return { url, params, data, queryParams };\n }\n}\n","var deepFreeze = require('deep-freeze-strict');\nexport function storeFreeze(reducer) {\n return function freeze(state, action) {\n state = state || {};\n deepFreeze(state);\n // guard against trying to freeze null or undefined types\n if (action.payload) {\n deepFreeze(action.payload);\n }\n var nextState = reducer(state, action);\n deepFreeze(nextState);\n return nextState;\n };\n}\n","import { ApplicationName } from '@models/context/application-name';\n\n/**\n * A config setting the specific href of the favicon\n *\n * @param applicationName The application name\n * @returns The specific href of the favicon, default if the application has the default favicon\n */\nexport const FAVICON_CONFIG = (applicationName: string): string => {\n switch (applicationName) {\n case ApplicationName.PaysDeLaLoire:\n return 'assets/img/favicon-pays-de-la-loire.svg';\n case ApplicationName.RegionSud:\n return 'assets/img/favicon-region-sud.svg';\n default:\n return null;\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, Inject, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { SwUpdate } from '@angular/service-worker';\nimport { AnalyticsService, ApplicationContext, DialogService } from '@core/services';\nimport { Product } from '@models/context/product';\nimport { ConfirmationDialogComponent } from '@organisms/confirmation-dialog/confirmation-dialog.component';\nimport { BehaviorSubject, Observable, Subject, fromEvent, merge } from 'rxjs';\nimport { debounceTime, filter, mergeMap, takeUntil } from 'rxjs/operators';\nimport { FAVICON_CONFIG } from './configs/favicon.config';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html'\n})\nexport class AppComponent implements OnInit, AfterViewInit, OnDestroy {\n public IN_NATIVE_APP: boolean;\n public hasGivenChoice$: BehaviorSubject;\n public isEmbed = window.location.pathname.startsWith('/embed'); // ActivatedRoute is not available on top of the first router outlet.\n\n private readonly SHOW_MODE_INACTIVITY_TIME = 60000;\n private onDestroySubject$ = new Subject();\n\n constructor(\n icons: MatIconRegistry,\n sanitizer: DomSanitizer,\n @Inject(DOCUMENT) private readonly document: Document,\n private analyticsService: AnalyticsService,\n private context: ApplicationContext,\n private dialog: MatDialog,\n private dialogService: DialogService,\n private renderer: Renderer2,\n private router: Router,\n private swUpdate: SwUpdate\n ) {\n icons.addSvgIcon(\n 'comment',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-comment.svg')\n );\n icons.addSvgIcon(\n 'destination',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-destination.svg')\n );\n icons.addSvgIcon(\n 'discover',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-discover.svg')\n );\n icons.addSvgIcon(\n 'explorer',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-explorer.svg')\n );\n icons.addSvgIcon(\n 'feedback',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-feedback.svg')\n );\n icons.addSvgIcon(\n 'instagram-logo',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-instagram.svg')\n );\n icons.addSvgIcon(\n 'roadmap',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-roadmap.svg')\n );\n icons.addSvgIcon(\n 'school',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-school.svg')\n );\n icons.addSvgIcon(\n 'question-mark',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-circle-question-mark.svg')\n );\n icons.addSvgIcon(\n 'situation',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-situation.svg')\n );\n icons.addSvgIcon(\n 'twitter-logo',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-twitter.svg')\n );\n icons.addSvgIcon(\n 'linkedin-logo',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-linkedin.svg')\n );\n icons.addSvgIcon(\n 'parcoursup',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-parcoursup.svg')\n );\n icons.addSvgIcon(\n 'profile',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-profile.svg')\n );\n icons.addSvgIcon(\n 'settings',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-settings.svg')\n );\n icons.addSvgIcon(\n 'lady-poi-avatar-1',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-lady-poi-avatar-1.svg')\n );\n icons.addSvgIcon(\n 'lady-poi-avatar-2',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-lady-poi-avatar-2.svg')\n );\n icons.addSvgIcon(\n 'lady-poi-avatar-3',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-lady-poi-avatar-3.svg')\n );\n icons.addSvgIcon(\n 'lady-poi-avatar-4',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-lady-poi-avatar-4.svg')\n );\n icons.addSvgIcon(\n 'lady-poi-avatar-5',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-lady-poi-avatar-5.svg')\n );\n icons.addSvgIcon(\n 'man-poi-avatar-1',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-man-poi-avatar-1.svg')\n );\n icons.addSvgIcon(\n 'man-poi-avatar-2',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-man-poi-avatar-2.svg')\n );\n icons.addSvgIcon(\n 'man-poi-avatar-3',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-man-poi-avatar-3.svg')\n );\n icons.addSvgIcon(\n 'man-poi-avatar-4',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-man-poi-avatar-4.svg')\n );\n icons.addSvgIcon(\n 'man-poi-avatar-5',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-man-poi-avatar-5.svg')\n );\n icons.addSvgIcon(\n 'whatsapp',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-whatsapp.svg')\n );\n icons.addSvgIcon('user', sanitizer.bypassSecurityTrustResourceUrl('assets/img/user.svg'));\n // map\n icons.addSvgIcon(\n 'pin-diploma',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-pin-diploma.svg')\n );\n icons.addSvgIcon(\n 'pin-job',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-pin-job.svg')\n );\n icons.addSvgIcon(\n 'pin-village',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village.svg')\n );\n icons.addSvgIcon(\n 'pin-village-custom',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-custom.svg')\n );\n icons.addSvgIcon(\n 'pin-village-selected',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-selected.svg')\n );\n icons.addSvgIcon(\n 'pin-village-departure',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-departure.svg')\n );\n icons.addSvgIcon(\n 'pin-village-destination',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-destination.svg')\n );\n icons.addSvgIcon(\n 'pin-village-green',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-green.svg')\n );\n icons.addSvgIcon(\n 'pin-village-empty',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pin-village-empty.svg')\n );\n icons.addSvgIcon('line', sanitizer.bypassSecurityTrustResourceUrl('assets/img/line.svg'));\n icons.addSvgIcon('gold', sanitizer.bypassSecurityTrustResourceUrl('assets/img/gold.svg'));\n icons.addSvgIcon(\n 'info',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-info.svg')\n );\n icons.addSvgIcon(\n 'error',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-error.svg')\n );\n icons.addSvgIcon(\n 'warning',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-warning.svg')\n );\n icons.addSvgIcon(\n 'success',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/icon-success.svg')\n );\n icons.addSvgIcon('dots', sanitizer.bypassSecurityTrustResourceUrl('assets/icons/dots.svg'));\n icons.addSvgIcon(\n 'trash-bin',\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/trash-bin.svg')\n );\n\n // Statuses\n icons.addSvgIcon(\n 'student-lady',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/student-lady.svg')\n );\n icons.addSvgIcon(\n 'student-man',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/student-man.svg')\n );\n icons.addSvgIcon(\n 'unemployed-lady',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/unemployed-lady.svg')\n );\n icons.addSvgIcon(\n 'unemployed-man',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/unemployed-man.svg')\n );\n icons.addSvgIcon(\n 'pro-lady',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/pro-lady.svg')\n );\n icons.addSvgIcon('pro-man', sanitizer.bypassSecurityTrustResourceUrl('assets/img/pro-man.svg'));\n icons.addSvgIcon(\n 'highschool-lady',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/highschool-lady.svg')\n );\n icons.addSvgIcon(\n 'highschool-man',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/highschool-man.svg')\n );\n icons.addSvgIcon(\n 'middleschool-lady',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/middleschool-lady.svg')\n );\n icons.addSvgIcon(\n 'middleschool-man',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/middleschool-man.svg')\n );\n }\n\n public ngOnInit(): void {\n this.IN_NATIVE_APP = this.context.inNativeApp;\n this.hasGivenChoice$ = this.analyticsService.hasGivenChoice$;\n\n this.analyticsService.init().pipe(takeUntil(this.onDestroySubject$)).subscribe();\n\n if (this.context.product === Product.Show) {\n const window: Window = this.document.defaultView;\n\n merge(fromEvent(window, 'mousemove'), fromEvent(window, 'scroll'), fromEvent(window, 'click'))\n .pipe(\n debounceTime(this.SHOW_MODE_INACTIVITY_TIME),\n filter(() => this.router.url !== '/'),\n mergeMap(() => this.showInactivityDialog()),\n takeUntil(this.onDestroySubject$)\n )\n .subscribe(confirmed => {\n if (confirmed === false) this.router.navigateByUrl('/');\n });\n }\n\n this.handleAppUpdate();\n }\n\n public ngOnDestroy(): void {\n this.onDestroySubject$.next();\n this.onDestroySubject$.complete();\n }\n\n public ngAfterViewInit(): void {\n const newFavIcon = FAVICON_CONFIG(this.context.applicationName);\n\n if (newFavIcon)\n this.renderer.setAttribute(this.document.querySelector('#favicon'), 'href', newFavIcon);\n }\n\n private showInactivityDialog(): Observable {\n return this.dialog\n .open(\n ConfirmationDialogComponent,\n this.dialogService.simpleDialogConfig({\n titleKey: 'inactivity-dialog.title',\n confirmButtonLabelKey: 'inactivity-dialog.confirm',\n cancelButtonLabelKey: 'inactivity-dialog.cancel'\n })\n )\n .afterClosed();\n }\n\n // TODO : add activateUpdate feature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleAppUpdate(): any {\n if (this.swUpdate.isEnabled) {\n this.swUpdate.versionUpdates.pipe(takeUntil(this.onDestroySubject$)).subscribe(evt => {\n // eslint-disable-next-line default-case\n switch (evt.type) {\n case 'VERSION_DETECTED':\n console.log(`Downloading new app version: ${evt.version.hash}`);\n\n // this.swUpdate.activateUpdate().then(() => {\n // this.document.defaultView.location.reload();\n // console.log('Reload');\n // });\n break;\n\n case 'VERSION_READY':\n // TODO : add cta to trigger new version installation\n console.log(`Current app version: ${evt.currentVersion.hash}`);\n console.log(`New app version ready for use: ${evt.latestVersion.hash}`);\n break;\n\n case 'VERSION_INSTALLATION_FAILED':\n console.log(`Failed to install app version '${evt.version.hash}': ${evt.error}`);\n break;\n }\n });\n }\n }\n}\n","
\n \n
\n\n\n","import { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { FeatureSettings } from './settings.state';\n\nexport const settingsActions = createActionGroup({\n source: 'Settings',\n events: {\n 'Load Feature Settings': emptyProps(),\n 'Load Feature Settings Success': props<{ payload: FeatureSettings }>(),\n 'Load Feature Settings Failure': props<{ error: Error }>()\n }\n});\n","// NOTES : essai à généraliser si ok\ninterface RemoteData {\n loading: boolean;\n error: Error | null;\n}\n\nexport interface FeatureSettings {\n expeditions: boolean;\n authUseSso: boolean;\n dataTab: boolean;\n itinerariesTab: boolean;\n testimonyIntention: boolean;\n testimonyUrl: string;\n companyIntention: boolean;\n jobTeaserPrefix: string;\n diplomaTypes: boolean;\n bridges: boolean;\n}\n\nexport type FeatureTypes =\n | 'expeditions'\n | 'authUseSso'\n | 'dataTab'\n | 'itinerariesTab'\n | 'testimonyIntention'\n | 'testimonyUrl'\n | 'companyIntention'\n | 'jobTeaserPrefix'\n | 'diplomaTypes'\n | 'bridges';\n\nexport interface FeatureSettingsState extends RemoteData, FeatureSettings {}\n\nexport interface SettingsState {\n features: FeatureSettingsState;\n // NOTES: ajouter à l'avenir tout ce qui touche aux paramètres de l'application\n // application: string;\n // product: string;\n}\n\nexport const initialSettingsState = {\n features: {\n expeditions: false,\n authUseSso: false,\n dataTab: false,\n itinerariesTab: false,\n testimonyIntention: false,\n testimonyUrl: null,\n companyIntention: false,\n jobTeaserPrefix: null,\n diplomaTypes: false,\n bridges: false,\n loading: false,\n error: null\n }\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { settingsActions } from './settings.actions';\nimport { initialSettingsState, SettingsState } from './settings.state';\n\nexport const settingsReducer = createReducer(\n initialSettingsState,\n on(\n settingsActions.loadFeatureSettings,\n (state): SettingsState => ({\n ...state,\n features: {\n ...state.features,\n loading: true\n }\n })\n ),\n on(\n settingsActions.loadFeatureSettingsSuccess,\n (state, action): SettingsState => ({\n ...state,\n features: {\n ...state.features,\n ...action.payload,\n loading: false\n }\n })\n ),\n on(\n settingsActions.loadFeatureSettingsFailure,\n (state, action): SettingsState => ({\n ...state,\n features: {\n ...state.features,\n error: action.error,\n loading: false\n }\n })\n )\n);\n","import { routerReducer, RouterReducerState } from '@ngrx/router-store';\nimport { settingsReducer } from './settings/settings.reducer';\nimport { SettingsState } from './settings/settings.state';\n\nexport interface AppState {\n router: RouterReducerState;\n settings: SettingsState;\n}\n\nexport const appReducer = {\n // Notes: add NOT lazy loaded state here or shared state (like sharedState, authState...)\n router: routerReducer,\n settings: settingsReducer\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'environments/environment';\nimport { Observable } from 'rxjs';\nimport { FeatureSettings } from './settings.state';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n private readonly SETTINGS_URI = `${environment.adventureUri}/feature-settings`;\n\n constructor(private http: HttpClient) {}\n\n public loadFeatureSetttings(): Observable {\n return this.http.get(`${this.SETTINGS_URI}`);\n }\n}\n","/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, concatMap, map, NEVER, of } from 'rxjs';\nimport { settingsActions as actions } from './settings.actions';\nimport { SettingsService } from './settings.service';\n\n@Injectable()\nexport class SettingsEffects {\n public loadFeatureSettings$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(actions.loadFeatureSettings),\n concatMap(() => {\n return this.settingsService.loadFeatureSetttings().pipe(\n map(features => actions.loadFeatureSettingsSuccess({ payload: features })),\n catchError((error: any) => of(actions.loadFeatureSettingsFailure({ error })))\n );\n })\n );\n });\n\n public loadFeatureSettingsError$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(actions.loadFeatureSettingsFailure),\n concatMap(\n () =>\n // TODO error behaviour ?\n NEVER\n )\n );\n },\n { dispatch: false }\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly settingsService: SettingsService\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { CoreModule } from '@core/modules/core.module';\nimport { ThematicsModule } from '@features/thematics/thematics.module';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreRouterConnectingModule } from '@ngrx/router-store';\nimport { MetaReducer, Store, StoreModule } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { ConsentBannerModule } from '@organisms/consent-banner/consent-banner.module';\nimport { MaterialModule } from '@shared/modules/material.module';\nimport { CustomSerializer } from 'app/store/router/custom-route-serializer';\nimport { environment } from 'environments/environment';\nimport { storeFreeze } from 'ngrx-store-freeze';\nimport { AppComponent } from './app.component';\nimport { AppRouting } from './app.routing';\nimport { appReducer } from './store/app.state';\nimport { settingsActions } from './store/settings/settings.actions';\nimport { SettingsEffects } from './store/settings/settings.effects';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const metaReducers: MetaReducer[] = !environment.production ? [storeFreeze] : [];\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n AppRouting,\n BrowserAnimationsModule,\n CommonModule,\n ConsentBannerModule,\n CoreModule,\n MaterialModule,\n ServiceWorkerModule.register('ngsw-worker.js', {\n enabled: false,\n // Register the ServiceWorker as soon as the application is stable\n // or after 30 seconds (whichever comes first).\n registrationStrategy: 'registerWhenStable:30000'\n }),\n StoreModule.forRoot(appReducer, { metaReducers }),\n EffectsModule.forRoot([SettingsEffects]),\n StoreRouterConnectingModule.forRoot({ serializer: CustomSerializer }),\n StoreDevtoolsModule.instrument({\n maxAge: 25,\n logOnly: !environment.production,\n autoPause: true\n }),\n ThematicsModule\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor(private store: Store) {\n this.store.dispatch(settingsActions.loadFeatureSettings());\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { unregisterServiceWorkers } from 'app/unregister-service-worker';\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport 'hammerjs';\n\n// Unregister all installed service workers and force reload the page if there was\n// an old service worker from a previous version.\n// eslint-disable-next-line no-restricted-globals\nunregisterServiceWorkers().then(hadServiceWorker => hadServiceWorker && location.reload());\n\nif (environment.production) enableProdMode();\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch(err => {\n if (!environment.production) console.error(err);\n });\n"],"mappings":"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","names":["module","module","e","module","t","o","n","r","i","e","module","deepFreeze","module","window","document","undefined","timeout","assign","extend","merge","self","props","timeout","import_dayjs","import_fr","dayjs","dayjs","localizedFormat","d","b","__assign","SpanRecorder","Span","Transaction","IdleTransactionSpanRecorder","IdleTransaction","timeout","global","MetricsInstrumentation","navigator","global","BrowserTracing","getCurrentHub","location","thematic","thematics","NavigationActionTiming","RouterTrigger","state","action","document","window"],"x_google_ignoreList":[0,1,2,3,4,6,9,11,14,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,55,56,61]}