TP_JO2024/home/dist/analytics/analytics.nomodule.min.js.map
2024-03-27 17:19:37 +01:00

1 line
No EOL
234 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"analytics.nomodule.min.js","sources":["../../.config/config.js","../../src/core/api.js","../../src/patch/script/patch.js","../../src/analytics/script/analytics/engine/collection.js","../../src/analytics/script/analytics/facade/opt.js","../../src/analytics/script/analytics/facade/init.js","../../src/analytics/script/analytics/cmp/tarte-au-citron-integration.js","../../src/analytics/script/analytics/cmp/consent-manager-platform.js","../../src/analytics/script/analytics/facade/push.js","../../src/analytics/script/analytics/facade/push-type.js","../../src/analytics/script/analytics/engine/renderer.js","../../src/analytics/script/analytics/engine/queue.js","../../src/analytics/script/analytics/facade/debug.js","../../src/analytics/script/analytics/collector/user/status.js","../../src/analytics/script/analytics/collector/user/type.js","../../src/analytics/script/analytics/utils/restricted.js","../../src/analytics/script/analytics/utils/normalize.js","../../src/analytics/script/analytics/utils/type-validator.js","../../src/analytics/script/analytics/collector/user/user.js","../../src/analytics/script/analytics/collector/site/environment.js","../../src/analytics/script/analytics/collector/site/site.js","../../src/analytics/script/analytics/collector/page/inventory.js","../../src/analytics/script/analytics/collector/page/page.js","../../src/analytics/script/analytics/collector/search/mehod.js","../../src/analytics/script/analytics/collector/search/search.js","../../src/analytics/script/analytics/collector/funnel/funnel.js","../../src/analytics/script/analytics/action/action-mode.js","../../src/analytics/script/analytics/action/action-status.js","../../src/analytics/script/analytics/action/action.js","../../src/analytics/script/analytics/action/actions.js","../../src/analytics/script/analytics/engine/location.js","../../src/analytics/script/analytics/engine/collector-event.js","../../src/analytics/script/integration/core/actionee-emission.js","../../src/analytics/script/analytics/engine/collector.js","../../src/analytics/script/analytics/analytics.js","../../src/analytics/index.js","../../src/core/script/api/utilities/property/complete-assign.js","../../src/analytics/script/analytics/action/type.js","../../src/analytics/script/analytics/utils/hierarchy/type.js","../../src/analytics/script/analytics/utils/hierarchy/member.js","../../src/analytics/script/analytics/utils/hierarchy/hierarchy.js","../../src/analytics/script/analytics/action/action-element.js","../../src/analytics/script/integration/core/actionee.js","../../src/analytics/script/integration/attributes/attribute-actionee.js","../../src/analytics/script/integration/component/button/button-emission.js","../../src/analytics/script/integration/component/component-actionee.js","../../src/analytics/script/integration/component/accordion/accordion-selector.js","../../src/analytics/script/integration/component/accordion/id.js","../../src/analytics/script/integration/component/accordion/accordion-button-actionee.js","../../src/analytics/script/integration/component/accordion/accordion-actionee.js","../../src/analytics/script/integration/component/alert/alert-selector.js","../../src/analytics/script/integration/component/alert/alert-actionee.js","../../src/analytics/script/integration/component/alert/id.js","../../src/analytics/script/integration/component/breadcrumb/breadcrumb-selector.js","../../src/analytics/script/integration/component/breadcrumb/breadcrumb-actionee.js","../../src/analytics/script/integration/component/breadcrumb/id.js","../../src/analytics/script/integration/component/breadcrumb/breadcrumb-link-actionee.js","../../src/analytics/script/integration/component/button/button-selector.js","../../src/analytics/script/integration/component/button/button-actionee.js","../../src/analytics/script/integration/component/button/id.js","../../src/analytics/script/integration/component/callout/callout-selector.js","../../src/analytics/script/integration/component/callout/callout-actionee.js","../../src/analytics/script/integration/component/callout/id.js","../../src/analytics/script/integration/component/card/card-selector.js","../../src/analytics/script/integration/component/card/card-actionee.js","../../src/analytics/script/integration/component/card/id.js","../../src/analytics/script/integration/component/checkbox/checkbox-selector.js","../../src/analytics/script/integration/component/checkbox/checkbox-actionee.js","../../src/analytics/script/integration/component/checkbox/id.js","../../src/analytics/script/integration/component/connect/connect-selector.js","../../src/analytics/script/integration/component/connect/id.js","../../src/analytics/script/integration/component/connect/connect-actionee.js","../../src/analytics/script/integration/component/connect/connect-link-actionee.js","../../src/analytics/script/integration/component/consent/consent-selector.js","../../src/analytics/script/integration/component/consent/consent-actionee.js","../../src/analytics/script/integration/component/consent/id.js","../../src/analytics/script/integration/component/download/download-selector.js","../../src/analytics/script/integration/component/download/download-actionee.js","../../src/analytics/script/integration/component/download/id.js","../../src/analytics/script/integration/component/follow/follow-selector.js","../../src/analytics/script/integration/component/follow/follow-actionee.js","../../src/analytics/script/integration/component/follow/id.js","../../src/analytics/script/integration/component/footer/footer-selector.js","../../src/analytics/script/integration/component/footer/footer-actionee.js","../../src/analytics/script/integration/component/footer/id.js","../../src/analytics/script/integration/component/footer/footer-link-actionee.js","../../src/analytics/script/integration/component/header/header-actionee.js","../../src/analytics/script/integration/component/header/id.js","../../src/analytics/script/integration/component/header/header-modal-button-actionee.js","../../src/analytics/script/integration/component/header/header-modal-actionee.js","../../src/analytics/script/integration/component/header/header-selector.js","../../src/analytics/script/integration/component/header/header-tools-button-actionee.js","../../src/analytics/script/integration/component/header/header-menu-button-actionee.js","../../src/analytics/script/integration/component/highlight/highlight-selector.js","../../src/analytics/script/integration/component/highlight/highlight-actionee.js","../../src/analytics/script/integration/component/highlight/id.js","../../src/analytics/script/integration/component/link/link-selector.js","../../src/analytics/script/integration/component/link/link-actionee.js","../../src/analytics/script/integration/component/link/id.js","../../src/analytics/script/integration/component/input/input-selector.js","../../src/analytics/script/integration/component/input/input-actionee.js","../../src/analytics/script/integration/component/input/id.js","../../src/analytics/script/integration/component/modal/modal-selector.js","../../src/analytics/script/integration/component/modal/modal-actionee.js","../../src/analytics/script/integration/component/modal/id.js","../../src/analytics/script/integration/component/navigation/navigation-actionee.js","../../src/analytics/script/integration/component/navigation/navigation-selector.js","../../src/analytics/script/integration/component/navigation/navigation-link-actionee.js","../../src/analytics/script/integration/component/navigation/id.js","../../src/analytics/script/integration/component/navigation/navigation-section-actionee.js","../../src/analytics/script/integration/component/pagination/pagination-selector.js","../../src/analytics/script/integration/component/pagination/pagination-actionee.js","../../src/analytics/script/integration/component/pagination/id.js","../../src/analytics/script/integration/component/pagination/pagination-link-actionee.js","../../src/analytics/script/integration/component/quote/quote-selector.js","../../src/analytics/script/integration/component/quote/quote-actionee.js","../../src/analytics/script/integration/component/quote/id.js","../../src/analytics/script/integration/component/radio/radio-selector.js","../../src/analytics/script/integration/component/form/form-selector.js","../../src/analytics/script/integration/component/radio/radio-actionee.js","../../src/analytics/script/integration/component/radio/id.js","../../src/analytics/script/integration/component/search/search-selector.js","../../src/analytics/script/integration/component/search/search-actionee.js","../../src/analytics/script/integration/component/search/id.js","../../src/analytics/script/integration/component/select/select-selector.js","../../src/analytics/script/integration/component/select/select-actionee.js","../../src/analytics/script/integration/component/select/id.js","../../src/analytics/script/integration/component/share/share-selector.js","../../src/analytics/script/integration/component/share/share-actionee.js","../../src/analytics/script/integration/component/share/id.js","../../src/analytics/script/integration/component/sidemenu/sidemenu-selector.js","../../src/analytics/script/integration/component/sidemenu/sidemenu-actionee.js","../../src/analytics/script/integration/component/sidemenu/sidemenu-link-actionee.js","../../src/analytics/script/integration/component/sidemenu/id.js","../../src/analytics/script/integration/component/sidemenu/sidemenu-section-actionee.js","../../src/analytics/script/integration/component/summary/summary-selector.js","../../src/analytics/script/integration/component/summary/summary-actionee.js","../../src/analytics/script/integration/component/summary/summary-link-actionee.js","../../src/analytics/script/integration/component/summary/id.js","../../src/analytics/script/integration/component/summary/summary-section-actionee.js","../../src/analytics/script/integration/component/tab/tab-button-actionee.js","../../src/analytics/script/integration/component/tab/id.js","../../src/analytics/script/integration/component/tab/tab-actionee.js","../../src/analytics/script/integration/component/table/table-selector.js","../../src/analytics/script/integration/component/table/table-actionee.js","../../src/analytics/script/integration/component/table/id.js","../../src/analytics/script/integration/component/tag/tag-selector.js","../../src/analytics/script/integration/component/tag/tag-actionee.js","../../src/analytics/script/integration/component/tag/id.js","../../src/analytics/script/integration/component/tile/tile-selector.js","../../src/analytics/script/integration/component/tile/tile-actionee.js","../../src/analytics/script/integration/component/tile/id.js","../../src/analytics/script/integration/component/toggle/toggle-selector.js","../../src/analytics/script/integration/component/toggle/toggle-actionee.js","../../src/analytics/script/integration/component/toggle/id.js","../../src/analytics/script/integration/component/transcription/transcription-selector.js","../../src/analytics/script/integration/component/transcription/id.js","../../src/analytics/script/integration/component/transcription/transcription-button-actionee.js","../../src/analytics/script/integration/component/transcription/transcription-actionee.js","../../src/analytics/script/integration/component/translate/translate-selector.js","../../src/analytics/script/integration/component/translate/id.js","../../src/analytics/script/integration/component/translate/translate-actionee.js","../../src/analytics/script/integration/component/translate/translate-button-actionee.js","../../src/analytics/script/integration/component/upload/upload-selector.js","../../src/analytics/script/integration/component/upload/upload-actionee.js","../../src/analytics/script/integration/component/upload/id.js","../../src/analytics/script/integration/component/components.js","../../src/analytics/script/integration/component/accordion/integrate.js","../../src/analytics/script/integration/component/breadcrumb/integrate.js","../../src/analytics/script/integration/component/alert/integrate.js","../../src/analytics/script/integration/component/button/integrate.js","../../src/analytics/script/integration/component/callout/integrate.js","../../src/analytics/script/integration/component/connect/integrate.js","../../src/analytics/script/integration/component/consent/integrate.js","../../src/analytics/script/integration/component/card/integrate.js","../../src/analytics/script/integration/component/input/integrate.js","../../src/analytics/script/integration/component/checkbox/integrate.js","../../src/analytics/script/integration/component/download/integrate.js","../../src/analytics/script/integration/component/footer/integrate.js","../../src/analytics/script/integration/component/follow/integrate.js","../../src/analytics/script/integration/component/header/integrate.js","../../src/analytics/script/integration/component/highlight/integrate.js","../../src/analytics/script/integration/component/link/integrate.js","../../src/analytics/script/integration/component/modal/integrate.js","../../src/analytics/script/integration/component/navigation/integrate.js","../../src/analytics/script/integration/component/pagination/integrate.js","../../src/analytics/script/integration/component/quote/integrate.js","../../src/analytics/script/integration/component/radio/integrate.js","../../src/analytics/script/integration/component/search/integrate.js","../../src/analytics/script/integration/component/select/integrate.js","../../src/analytics/script/integration/component/share/integrate.js","../../src/analytics/script/integration/component/sidemenu/integrate.js","../../src/analytics/script/integration/component/summary/integrate.js","../../src/analytics/script/integration/component/tab/integrate.js","../../src/analytics/script/integration/component/table/integrate.js","../../src/analytics/script/integration/component/tag/integrate.js","../../src/analytics/script/integration/component/tile/integrate.js","../../src/analytics/script/integration/component/toggle/integrate.js","../../src/analytics/script/integration/component/transcription/integrate.js","../../src/analytics/script/integration/component/translate/integrate.js","../../src/analytics/script/integration/component/upload/integrate.js","../../src/analytics/script/integration/integration.js","../../src/analytics/script/integration/attributes/attributes.js","../../src/analytics/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.11.2'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","const patch = {\n namespace: 'a4e35ba2a938ba9d007689dbf3f46acbb9807869'\n};\n\nexport default patch;\n","const Collection = {\n MANUAL: 'manual',\n LOAD: 'load',\n FULL: 'full',\n HASH: 'hash'\n};\n\nexport default Collection;\n","const key = '_EA_';\nconst DISABLED = `${key}disabled`;\nconst TOGGLE = `${key}toggle`;\n\nclass Opt {\n constructor () {\n this._configure();\n }\n\n _configure () {\n const scope = this;\n window[DISABLED] = () => scope.isDisabled;\n window[TOGGLE] = this.toggle.bind(this);\n }\n\n get isDisabled () {\n return localStorage.getItem(key);\n }\n\n toggle () {\n if (this.isDisabled) this.enable();\n else this.disable();\n }\n\n enable () {\n if (localStorage.getItem(key)) {\n localStorage.removeItem(key);\n }\n }\n\n disable () {\n localStorage.setItem(key, '1');\n }\n}\n\nconst opt = new Opt();\n\nexport default opt;\n","import api from '../../../api.js';\nimport opt from './opt';\n\nconst PUSH = 'EA_push';\n\nclass Init {\n constructor (domain) {\n this._domain = domain;\n this._isLoaded = false;\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get id () {\n return this._id;\n }\n\n get store () {\n return this._store;\n }\n\n configure () {\n this.init();\n return this._promise;\n }\n\n init () {\n let bit = 5381;\n for (let i = this._domain.length - 1; i > 0; i--) bit = (bit * 33) ^ this._domain.charCodeAt(i);\n bit >>>= 0;\n this._id = `_EA_${bit}`;\n\n this._store = [];\n this._store.eah = this._domain;\n window[this._id] = this._store;\n\n if (!window[PUSH]) window[PUSH] = (...args) => this.store.push(args);\n\n if (opt.isDisabled) {\n api.inspector.warn('User opted out, eulerian is disabled');\n this._reject('User opted out, eulerian is disabled');\n } else this.load();\n }\n\n load () {\n const stamp = new Date() / 1E7 | 0;\n const offset = stamp % 26;\n const key = String.fromCharCode(97 + offset, 122 - offset, 65 + offset) + (stamp % 1E3);\n this._script = document.createElement('script');\n this._script.ea = this.id;\n this._script.async = true;\n this._script.addEventListener('load', this.loaded.bind(this));\n this._script.addEventListener('error', this.error.bind(this));\n this._script.src = `//${this._domain}/${key}.js?2`;\n const node = document.getElementsByTagName('script')[0];\n node.parentNode.insertBefore(this._script, node);\n }\n\n error () {\n api.inspector.error('unable to load Eulerian script file. the domain declared in your configuration must match the domain provided by the Eulerian interface (tag creation)');\n this._reject('eulerian script loading error');\n }\n\n loaded () {\n if (this._isLoaded) return;\n this._isLoaded = true;\n this._resolve();\n }\n}\n\nexport { Init };\n\n/*\n(function(e, a) {\n var i = e.length,\n y = 5381,\n k = 'script',\n s = window,\n v = document,\n o = v.createElement(k);\n for (; i;) {\n i -= 1;\n y = (y * 33) ^ e.charCodeAt(i)\n }\n y = '_EA_' + (y >>>= 0);\n (function(e, a, s, y) {\n s[a] = s[a] || function() {\n (s[y] = s[y] || []).push(arguments);\n s[y].eah = e;\n };\n }(e, a, s, y));\n i = new Date / 1E7 | 0;\n o.ea = y;\n y = i % 26;\n o.async = 1;\n o.src = '//' + e + '/' + String.fromCharCode(97 + y, 122 - y, 65 + y) + (i % 1E3) + '.js?2';\n s = v.getElementsByTagName(k)[0];\n s.parentNode.insertBefore(o, s);\n})\n('mon.domainedetracking.com', 'EA_push');\n*/\n\n/*\n(function(e, a) {\n var i = e.length,\n y = 5381,\n k = 'script',\n z = '_EA_',\n zd = z + 'disabled',\n s = window,\n v = document,\n o = v.createElement(k),\n l = s.localStorage;\n for (; i;) {\n i -= 1;\n y = (y * 33) ^ e.charCodeAt(i)\n }\n y = z + (y >>>= 0);\n (function(e, a, s, y, z, zd, l) {\n s[a] = s[a] || function() {\n (s[y] = s[y] || []).push(arguments);\n s[y].eah = e;\n };\n s[zd] = function() {\n return l.getItem(z);\n };\n s[z + 'toggle'] = function() {\n (s[zd]()) ? l.removeItem(z): l.setItem(z, 1);\n }\n }(e, a, s, y, z, zd, l));\n if (!s[zd]()) {\n i = new Date / 1E7 | 0;\n o.ea = y;\n y = i % 26;\n o.async = 1;\n o.src = '//' + e + '/' + String.fromCharCode(97 + y, 122 - y, 65 + y) + (i % 1E3) + '.js?2';\n s = v.getElementsByTagName(k)[0];\n s.parentNode.insertBefore(o, s);\n }\n})('mon.domainedetracking.com', 'EA_push');\n*/\n","import api from '../../../api.js';\n\nconst State = {\n UNKNOWN: -1,\n CONFIGURING: 0,\n CONFIGURED: 1,\n INITIATED: 2,\n READY: 3\n};\n\nclass TarteAuCitronIntegration {\n constructor (config) {\n this._config = config;\n this._state = State.UNKNOWN;\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n configure () {\n if (this._state >= State.CONFIGURED) return this._promise;\n if (this._state === State.UNKNOWN) {\n api.inspector.info('analytics configures tarteaucitron');\n this._state = State.CONFIGURING;\n }\n\n const tarteaucitron = window.tarteaucitron;\n if (!tarteaucitron || !tarteaucitron.services) {\n window.requestAnimationFrame(this.configure.bind(this));\n return;\n }\n\n this._state = State.CONFIGURED;\n const init = this.init.bind(this);\n\n const data = {\n key: 'eulerian',\n type: 'analytic',\n name: 'Eulerian Analytics',\n needConsent: true,\n cookies: ['etuix'],\n uri: 'https://eulerian.com/vie-privee',\n js: init,\n fallback: () => { tarteaucitron.services.eulerian.js(); }\n };\n\n tarteaucitron.services.eulerian = data;\n if (!tarteaucitron.job) tarteaucitron.job = [];\n tarteaucitron.job.push('eulerian');\n\n return this._promise;\n }\n\n init () {\n if (this._state >= State.INITIATED) return;\n this._state = State.INITIATED;\n window.__eaGenericCmpApi = this.integrate.bind(this);\n const update = this.update.bind(this);\n window.addEventListener('tac.close_alert', update);\n window.addEventListener('tac.close_panel', update);\n }\n\n integrate (cmpApi) {\n if (this._state >= State.READY) return;\n this._state = State.READY;\n this._cmpApi = cmpApi;\n\n api.inspector.info('analytics has integrated tarteaucitron');\n\n this._resolve();\n this.update();\n }\n\n update () {\n if (this._state < State.READY) return;\n this._cmpApi('tac', window.tarteaucitron, 1);\n }\n}\n\nexport { TarteAuCitronIntegration };\n","import { TarteAuCitronIntegration } from './tarte-au-citron-integration';\n\nclass ConsentManagerPlatform {\n constructor (config) {\n this._config = config;\n\n if (config) {\n switch (config.id) {\n case 'tarteaucitron':\n this.integrateTarteAuCitron();\n break;\n }\n }\n }\n\n integrateTarteAuCitron () {\n this._tac = new TarteAuCitronIntegration(this._config);\n return this._tac.configure();\n }\n\n optin () {\n\n }\n}\n\nexport { ConsentManagerPlatform };\n","import api from '../../../api.js';\n\nconst push = (type, layer) => {\n if (typeof window.EA_push !== 'function') {\n api.inspector.warn('Analytics datalayer not sent, Eulerian API isn\\'t yet avalaible');\n return;\n }\n\n api.inspector.info('analytics', type, layer);\n\n window.EA_push(type, layer);\n};\n\nexport default push;\n","const PushType = {\n COLLECTOR: 'collector',\n ACTION: 'action',\n ACTION_PARAMETER: 'actionparam'\n};\n\nexport default PushType;\n","class Renderer {\n constructor () {\n this._renderables = [];\n this._rendering = this.render.bind(this);\n requestAnimationFrame(this._rendering);\n }\n\n add (renderable) {\n const index = this._renderables.indexOf(renderable);\n if (index === -1) this._renderables.push(renderable);\n }\n\n remove (renderable) {\n const index = this._renderables.indexOf(renderable);\n if (index > -1) this._renderables.splice(index, 1);\n }\n\n render () {\n this._renderables.forEach(renderable => renderable.render());\n requestAnimationFrame(this._rendering);\n }\n}\n\nconst renderer = new Renderer();\n\nexport default renderer;\n","\nimport PushType from '../facade/push-type.js';\nimport push from '../facade/push.js';\nimport renderer from './renderer';\nimport api from '../../../api';\n\nconst SLICE = 80;\n\nclass Queue {\n constructor () {\n this._startingActions = [];\n this._endingActions = [];\n this._handlingVisibilityChange = this._handleVisibilityChange.bind(this);\n this._handlingEnd = this._handleEnd.bind(this);\n this._isStarted = false;\n this._isListening = false;\n this.reset();\n }\n\n setCollector (collector) {\n this._collector = collector;\n }\n\n reset (ending = false) {\n this._type = PushType.ACTION;\n if (!ending) this._startingActions.length = 0;\n this._endingActions.length = 0;\n this._count = 0;\n this._delay = -1;\n this._isRequested = false;\n this._unlisten();\n }\n\n start () {\n if (this._isStarted) return;\n this._isStarted = true;\n renderer.add(this);\n }\n\n collect () {\n this._type = PushType.COLLECTOR;\n this._request();\n }\n\n appendStartingAction (action, data) {\n if (!this._collector.isActionEnabled && !action.isForced) return;\n if (!action || this._startingActions.some(queued => queued.test(action))) {\n api.inspector.log('appendStartingAction exists or null', action);\n return;\n }\n const queued = new QueuedAction(action, data);\n this._startingActions.push(queued);\n this._request();\n }\n\n appendEndingAction (action, data) {\n if (!this._collector.isActionEnabled && !action.isForced) return;\n if (!action || this._endingActions.some(queued => queued.test(action))) {\n api.inspector.log('appendEndingAction exists or null', action);\n return;\n }\n const queued = new QueuedAction(action, data);\n this._endingActions.push(queued);\n this._request();\n }\n\n _request () {\n this._listen();\n this._isRequested = true;\n this._delay = 4;\n }\n\n _listen () {\n if (this._isListening) return;\n this._isListening = true;\n document.addEventListener('visibilitychange', this._handlingVisibilityChange);\n document.addEventListener('unload', this._handlingEnd);\n document.addEventListener('beforeunload', this._handlingEnd);\n document.addEventListener('pagehide', this._handlingEnd);\n }\n\n _unlisten () {\n if (!this._isListening) return;\n this._isListening = false;\n document.removeEventListener('visibilitychange', this._handlingVisibilityChange);\n document.removeEventListener('unload', this._handlingEnd);\n document.removeEventListener('beforeunload', this._handlingEnd);\n document.removeEventListener('pagehide', this._handlingEnd);\n }\n\n _handleVisibilityChange (e) {\n if (document.visibilityState === 'hidden') this.send();\n }\n\n _handleEnd () {\n this.send();\n }\n\n render () {\n if (this._delay <= -1) return;\n this._delay--;\n this._count++;\n switch (true) {\n case this._count > 20:\n case this._delay === 0:\n this.send();\n break;\n }\n }\n\n send (ending = false) {\n if (!this._isRequested) return;\n const actionLayers = [];\n if (!ending) actionLayers.push(...this._startingActions.map(queued => queued.start()).filter(layer => layer.length > 0));\n actionLayers.push(...this._endingActions.map(queued => queued.end()).filter(layer => layer.length > 0));\n\n const length = ((actionLayers.length / SLICE) + 1) | 0;\n const slices = [];\n for (let i = 0; i < length; i++) {\n const slice = actionLayers.slice(i * SLICE, (i + 1) * SLICE);\n slices.push(slice.flat());\n }\n\n if (this._type === PushType.COLLECTOR && this._collector.isCollecting) {\n const layer = this._collector.layer;\n if (slices.length > 0) {\n const slice = slices.splice(0, 1)[0];\n if (slice.length > 0) layer.push.apply(layer, slice);\n }\n layer.flat();\n if (layer.length > 0) push(PushType.COLLECTOR, layer);\n }\n\n if (slices.length > 0) {\n for (let i = 0; i < slices.length; i++) {\n const slice = slices[i];\n if (slice.length > 0) push(PushType.ACTION, slice);\n }\n }\n\n this.reset(ending);\n }\n}\n\nclass QueuedAction {\n constructor (action, data) {\n this._action = action;\n this._data = data;\n }\n\n test (action) {\n return this._action === action;\n }\n\n start () {\n return this._action.start(this._data);\n }\n\n end () {\n return this._action.end(this._data);\n }\n}\n\nconst queue = new Queue();\n\nexport default queue;\n","class Debug {\n get debugger () {\n return window._oEa;\n }\n\n get isActive () {\n if (!this.debugger) return false;\n return this.debugger._dbg === '1';\n }\n\n set isActive (value) {\n if (!this.debugger || this.isActive === value) return;\n this.debugger.debug(value ? 1 : 0);\n }\n}\n\nconst debug = new Debug();\n\nexport default debug;\n","const Status = {\n CONNECTED: {\n id: 'connected',\n value: 'connecté',\n isConnected: true,\n isDefault: true\n },\n ANONYMOUS: {\n id: 'anonymous',\n value: 'anonyme',\n isConnected: false,\n isDefault: true\n },\n GUEST: {\n id: 'guest',\n value: 'invité',\n isConnected: false\n }\n};\n\nexport default Status;\n","const Type = {\n INDIVIDUAL: {\n id: 'individual',\n value: 'part'\n },\n PROFESSIONNAL: {\n id: 'professionnal',\n value: 'pro'\n }\n};\n\nexport default Type;\n","/* '[\"\\'<>*$&~`|\\\\\\\\?^~]'; */\nexport default {\n '0x0022': '',\n '0x0024': '',\n '0x0026': '',\n '0x0027': '',\n '0x002a': '',\n '0x002c': '',\n '0x003c': '',\n '0x003e': '',\n '0x003f': '',\n '0x005c': '',\n '0x005e': '',\n '0x0060': '',\n '0x007c': '',\n '0x007e': ''\n};\n","// import TABLE from './unicode-table';\nimport RESTRICTED from './restricted';\n\nconst charCodeHex = (char) => {\n const code = char.charCodeAt(0).toString(16);\n return '0x0000'.slice(0, -code.length) + code;\n};\n\nconst normalize = (text) => {\n if (!text) return text;\n // text = [...text].map(char => TABLE[charCodeHex(char)] || char).join('');\n text = [...text].map(char => RESTRICTED[charCodeHex(char)] || char).join('');\n text = text.replace(/\\s+/g, ' ').replace(/\\s/g, '_');\n text = text.toLowerCase();\n return text;\n};\n\nexport default normalize;\n","import api from '../../../api';\n\nconst validateString = (value, name, allowNull = true) => {\n switch (true) {\n case typeof value === 'number':\n return `${value}`;\n\n case typeof value === 'string':\n return value;\n\n case value === undefined && allowNull:\n case value === null && allowNull:\n return '';\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting a String`);\n return null;\n};\n\nconst validateNumber = (value, name, allowNull = true) => {\n switch (true) {\n case !isNaN(value):\n return value;\n\n case typeof value === 'string' && !isNaN(Number(value)):\n return Number(value);\n\n case value === undefined && allowNull:\n case value === null && allowNull:\n return -1;\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting a Number`);\n return null;\n};\n\nconst validateBoolean = (value, name) => {\n switch (true) {\n case typeof value === 'boolean':\n return value;\n\n case typeof value === 'string' && value.toLowerCase() === 'true':\n case value === '1':\n case value === 1:\n return true;\n\n case typeof value === 'string' && value.toLowerCase() === 'false':\n case value === '0':\n case value === 0:\n return false;\n\n case value === undefined:\n case value === null:\n return value;\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting a Boolean`);\n return null;\n};\n\nconst validateLang = (value, name, allowNull = true) => {\n switch (true) {\n case typeof value === 'string' && /^[A-Za-z]{2}$|^[A-Za-z]{2}[-_]/.test(value):\n return value.split(/[-_]/)[0].toLowerCase();\n\n case value === undefined && allowNull:\n case value === null && allowNull:\n return '';\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting language as a String following ISO 639-1 format`);\n return null;\n};\n\nconst validateGeography = (value, name, allowNull = true) => {\n switch (true) {\n case typeof value === 'string':\n if (!/^FR-[A-Z0-9]{2,3}$/.test(value)) api.inspector.warn(`value '${value}' set at analytics.${name} with wrong format. Geographic location should be a String following ISO 3166-2:FR format`);\n return value;\n\n case value === undefined && allowNull:\n case value === null && allowNull:\n return '';\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting geographic location as a String following ISO 3166-2:FR format`);\n return null;\n};\n\nconst normaliseISODate = (date) => date.toISOString().split('T')[0];\n\nconst validateDate = (value, name, allowNull = true) => {\n switch (true) {\n case value instanceof Date:\n return normaliseISODate(value);\n\n case typeof value === 'string': {\n const date = new Date(value);\n if (date.toString() !== 'Invalid Date') return normaliseISODate(date);\n break;\n }\n\n case value === undefined && allowNull:\n case value === null && allowNull:\n return null;\n }\n\n api.inspector.warn(`unexpected value '${value}' set at analytics.${name}. Expecting a Date`);\n return null;\n};\n\nexport { validateString, validateNumber, validateBoolean, validateLang, validateGeography, validateDate };\n","import api from '../../../../api';\nimport Status from './status';\nimport Type from './type';\nimport normalize from '../../utils/normalize';\nimport { validateBoolean, validateLang, validateString } from '../../utils/type-validator';\n\nclass User {\n constructor (config) {\n this._config = config || {};\n }\n\n reset (clear = false) {\n this._isConnected = false;\n this.status = Status.ANONYMOUS;\n if (!clear && this._config.connect) this.connect(this._config.connect.uid, this._config.connect.email, this._config.connect.isNew);\n else {\n this._uid = undefined;\n this._email = undefined;\n this._isNew = false;\n }\n this.profile = clear ? undefined : this._config.profile;\n this.language = clear ? undefined : this._config.language;\n this.type = clear ? undefined : this._config.type;\n }\n\n connect (uid, email, isNew = false) {\n this._uid = validateString(uid, 'user.uid');\n if (/^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]{2,}@[a-zA-Z0-9-]{2,}\\.[a-zA-Z]{2,}$/.test(email)) api.inspector.warn('Please check analytics.user.email is properly encrypted ');\n this._email = validateString(email, 'user.email');\n this._isNew = validateBoolean(isNew);\n this._isConnected = true;\n this.status = Status.CONNECTED;\n }\n\n get uid () {\n return this._uid;\n }\n\n get email () {\n return this._email;\n }\n\n get isNew () {\n return this._isNew;\n }\n\n set status (id) {\n const stati = Object.values(Status).filter(status => status.isConnected === this._isConnected);\n this._status = stati.filter(status => status.id === id || status.value === id)[0] || stati.filter(status => status.isDefault)[0];\n }\n\n get status () {\n return this._status.id;\n }\n\n set profile (value) {\n const valid = validateString(value, 'user.profile');\n if (valid !== null) this._profile = valid;\n }\n\n get profile () {\n return this._profile.id;\n }\n\n set language (value) {\n const valid = validateLang(value, 'user.language');\n if (valid !== null) this._language = valid;\n }\n\n get language () {\n return this._language || navigator.language;\n }\n\n set type (id) {\n this._type = Object.values(Type).filter(type => type.id === id || type.value === id)[0];\n }\n\n get type () {\n return this._type.id;\n }\n\n get layer () {\n const layer = [];\n if (this.uid) layer.push('uid', normalize(this.uid));\n if (this.email) layer.push('email', normalize(this.email));\n if (this.isNew) layer.push('newcustomer', '1');\n if (this.language) layer.push('user_language', this.language);\n layer.push('user_login_status', this._status.value);\n if (this._profile) layer.push('profile', this._profile);\n if (this._type) layer.push('user_type', this._type.value);\n return layer;\n }\n}\n\nUser.Status = Status;\nUser.Type = Type;\n\nexport { User };\n","const Environment = {\n DEVELOPMENT: {\n id: 'development',\n value: 'dev'\n },\n STAGE: {\n id: 'stage',\n value: 'stage'\n },\n PRODUCTION: {\n id: 'production',\n value: 'prod'\n }\n};\n\nexport default Environment;\n","import api from '../../../../api';\nimport Environment from './environment';\nimport normalize from '../../utils/normalize';\nimport { validateGeography, validateLang, validateString } from '../../utils/type-validator';\n\nclass Site {\n constructor (config) {\n this._config = config || {};\n }\n\n reset (clear = false) {\n this.environment = clear ? Environment.DEVELOPMENT.id : this._config.environment;\n this.entity = clear ? undefined : this._config.entity;\n this.language = clear ? undefined : this._config.language;\n this.target = clear ? undefined : this._config.target;\n this.type = clear ? undefined : this._config.type;\n this.region = clear ? undefined : this._config.region;\n this.department = clear ? undefined : this._config.department;\n this.version = clear ? undefined : this._config.version;\n this._api = api.version;\n }\n\n set environment (value) {\n switch (value) {\n case Environment.PRODUCTION.id:\n case Environment.PRODUCTION.value:\n this._environment = Environment.PRODUCTION;\n break;\n\n case Environment.STAGE.id:\n case Environment.STAGE.value:\n this._environment = Environment.STAGE;\n break;\n\n case Environment.DEVELOPMENT.id:\n case Environment.DEVELOPMENT.value:\n this._environment = Environment.DEVELOPMENT;\n break;\n\n default:\n this._environment = Environment.DEVELOPMENT;\n }\n }\n\n get environment () {\n return this._environment ? this._environment.id : Environment.DEVELOPMENT.id;\n }\n\n set entity (value) {\n const valid = validateString(value, 'site.entity');\n if (valid !== null) this._entity = valid;\n }\n\n get entity () {\n return this._entity;\n }\n\n set language (value) {\n const valid = validateLang(value, 'site.language');\n if (valid !== null) this._language = valid;\n }\n\n get language () {\n return this._language || document.documentElement.lang;\n }\n\n set target (value) {\n const valid = validateString(value, 'site.target');\n if (valid !== null) this._target = valid;\n }\n\n get target () {\n return this._target;\n }\n\n set type (value) {\n const valid = validateString(value, 'site.type');\n if (valid !== null) this._type = valid;\n }\n\n get type () {\n return this._type;\n }\n\n set region (value) {\n const valid = validateGeography(value, 'site.region');\n if (valid !== null) this._region = valid;\n }\n\n get region () {\n return this._region;\n }\n\n set department (value) {\n const valid = validateGeography(value, 'site.department');\n if (valid !== null) this._department = valid;\n }\n\n get department () {\n return this._department;\n }\n\n set version (value) {\n const valid = validateString(value, 'site.version');\n if (valid !== null) this._version = valid;\n }\n\n get version () {\n return this._version;\n }\n\n get api () {\n return this._api;\n }\n\n get layer () {\n const layer = [];\n layer.push('site_environment', this._environment.value);\n if (this.entity) layer.push('site_entity', normalize(this.entity));\n else api.inspector.warn('entity is required in analytics.site');\n if (this.language) layer.push('site_language', this.language);\n if (this.target) layer.push('site_target', normalize(this.target));\n if (this.type) layer.push('site_type', normalize(this.type));\n if (this.region) layer.push('site_region', this.region);\n if (this.department) layer.push('site_department', this.department);\n if (this.version) layer.push('site_version', this.version);\n if (this.api) layer.push('api_version', this.api);\n return layer;\n }\n}\n\nSite.Environment = Environment;\n\nexport { Site };\n","import api from '../../../../api';\n\nexport const Inventory = {\n accordion: api.internals.ns.selector('accordion'),\n alert: api.internals.ns.selector('alert'),\n badge: api.internals.ns.selector('badge'),\n breadcrumb: api.internals.ns.selector('breadcrumb'),\n button: api.internals.ns.selector('btn'),\n callout: api.internals.ns.selector('callout'),\n card: api.internals.ns.selector('card'),\n checkbox: api.internals.ns.selector('checkbox-group'),\n connect: api.internals.ns.selector('connect'),\n consent: api.internals.ns.selector('consent-banner'),\n content: api.internals.ns.selector('content-media'),\n download: api.internals.ns.selector('download'),\n follow: api.internals.ns.selector('follow'),\n footer: api.internals.ns.selector('footer'),\n header: api.internals.ns.selector('header'),\n highlight: api.internals.ns.selector('highlight'),\n input: api.internals.ns.selector('input-group'),\n link: api.internals.ns.selector('link'),\n modal: api.internals.ns.selector('modal'),\n navigation: api.internals.ns.selector('nav'),\n notice: api.internals.ns.selector('notice'),\n pagination: api.internals.ns.selector('pagination'),\n quote: api.internals.ns.selector('quote'),\n radio: api.internals.ns.selector('radio-group'),\n search: api.internals.ns.selector('search-bar'),\n select: api.internals.ns.selector('select'),\n share: api.internals.ns.selector('share'),\n sidemenu: api.internals.ns.selector('sidemenu'),\n stepper: api.internals.ns.selector('stepper'),\n summary: api.internals.ns.selector('summary'),\n tab: api.internals.ns.selector('tabs'),\n table: api.internals.ns.selector('table'),\n tag: api.internals.ns.selector('tag'),\n tile: api.internals.ns.selector('tile'),\n toggle: api.internals.ns.selector('toggle'),\n tooltip: api.internals.ns.selector('tooltip'),\n transcription: api.internals.ns.selector('transcription'),\n translate: api.internals.ns.selector('translate'),\n upload: api.internals.ns.selector('upload-group')\n};\n","import api from '../../../../api';\nimport normalize from '../../utils/normalize';\nimport { validateBoolean, validateNumber, validateString, validateDate } from '../../utils/type-validator';\nimport { Inventory } from './inventory';\n\nconst CollectionState = {\n COLLECTABLE: 'collectable',\n COLLECTING: 'collecting',\n COLLECTED: 'collected'\n};\n\nclass Page {\n constructor (config) {\n this._config = config || {};\n this._state = CollectionState.COLLECTABLE;\n }\n\n reset (clear = false) {\n this.path = clear ? '' : this._config.path;\n this.referrer = clear ? '' : this._config.referrer;\n this.title = clear ? '' : this._config.title;\n this.name = clear ? '' : this._config.name;\n this.id = clear ? '' : this._config.id;\n this.author = clear ? '' : this._config.author;\n this.date = clear ? '' : this._config.date;\n this._labels = clear || !this._config.labels ? ['', '', '', '', ''] : this._config.labels;\n this._labels.length = 5;\n this._tags = clear || !this._config.tags ? [] : this._config.tags;\n this._categories = clear || !this._config.categories ? ['', '', ''] : this._config.categories;\n this.isError = !clear && this._config.isError;\n this.template = clear ? '' : this._config.template;\n this.group = clear ? '' : this._config.group;\n this.segment = clear ? '' : this._config.segment;\n this.subtemplate = clear ? '' : this._config.subtemplate;\n this.theme = clear ? '' : this._config.theme;\n this.subtheme = clear ? '' : this._config.subtheme;\n this.related = clear ? '' : this._config.related;\n this.depth = clear || isNaN(this._config.depth) ? 0 : this._config.depth;\n this.current = clear || isNaN(this._config.current) ? -1 : this._config.current;\n this.total = clear || isNaN(this._config.total) ? -1 : this._config.total;\n this._filters = clear || !this._config.filters ? [] : this._config.filters;\n }\n\n collecting () {\n if (this._state !== CollectionState.COLLECTABLE) {\n api.inspector.warn(`current path '${this.path}' was already collected`);\n return false;\n }\n this._state = CollectionState.COLLECTING;\n return true;\n }\n\n get isCollecting () {\n return this._state === CollectionState.COLLECTING;\n }\n\n set path (value) {\n const valid = validateString(value, 'page.path');\n if (valid !== null) {\n this._path = valid;\n this._state = CollectionState.COLLECTABLE;\n }\n }\n\n get path () {\n return this._path || `${document.location.pathname}${document.location.search}`;\n }\n\n set referrer (value) {\n const valid = validateString(value, 'page.referrer');\n if (valid !== null) this._referrer = valid;\n }\n\n get referrer () {\n return this._referrer;\n }\n\n set title (value) {\n const valid = validateString(value, 'page.title');\n if (valid !== null) this._title = valid;\n }\n\n get title () {\n return this._title || document.title;\n }\n\n set id (value) {\n const valid = validateString(value, 'page.id');\n if (valid !== null) this._id = valid;\n }\n\n get id () {\n return this._id;\n }\n\n set author (value) {\n const valid = validateString(value, 'page.author');\n if (valid !== null) this._author = valid;\n }\n\n get author () {\n return this._author;\n }\n\n set date (value) {\n const valid = validateDate(value, 'page.date');\n if (valid !== null) this._date = valid;\n }\n\n get date () {\n return this._date;\n }\n\n get tags () {\n return this._tags;\n }\n\n set name (value) {\n const valid = validateString(value, 'page.name');\n if (valid !== null) this._name = valid;\n }\n\n get name () {\n return this._name || this.title;\n }\n\n get labels () {\n return this._labels;\n }\n\n get categories () {\n return this._categories;\n }\n\n set isError (value) {\n const valid = validateBoolean(value, 'page.isError');\n if (valid !== null) this._isError = valid;\n }\n\n get isError () {\n return this._isError;\n }\n\n set template (value) {\n const valid = validateString(value, 'page.template');\n if (valid !== null) this._template = valid;\n }\n\n get template () {\n return this._template || 'autres';\n }\n\n set segment (value) {\n const valid = validateString(value, 'page.segment');\n if (valid !== null) this._segment = valid;\n }\n\n get segment () {\n return this._segment || this.template;\n }\n\n set group (value) {\n const valid = validateString(value, 'page.group');\n if (valid !== null) this._group = valid;\n }\n\n get group () {\n return this._group || this.template;\n }\n\n set subtemplate (value) {\n const valid = validateString(value, 'page.subtemplate');\n if (valid !== null) this._subtemplate = valid;\n }\n\n get subtemplate () {\n return this._subtemplate;\n }\n\n set theme (value) {\n const valid = validateString(value, 'page.theme');\n if (valid !== null) this._theme = valid;\n }\n\n get theme () {\n return this._theme;\n }\n\n set subtheme (value) {\n const valid = validateString(value, 'page.subtheme');\n if (valid !== null) this._subtheme = valid;\n }\n\n get subtheme () {\n return this._subtheme;\n }\n\n set related (value) {\n const valid = validateString(value, 'page.related');\n if (valid !== null) this._related = valid;\n }\n\n get related () {\n return this._related;\n }\n\n set depth (value) {\n const valid = validateNumber(value, 'page.depth');\n if (valid !== null) this._depth = valid;\n }\n\n get depth () {\n return this._depth;\n }\n\n set current (value) {\n const valid = validateNumber(value, 'page.current');\n if (valid !== null) this._current = valid;\n }\n\n get current () {\n return this._current;\n }\n\n set total (value) {\n const valid = validateNumber(value, 'page.total');\n if (valid !== null) this._total = valid;\n }\n\n get total () {\n return this._total;\n }\n\n get filters () {\n return this._filters;\n }\n\n get layer () {\n this._state = CollectionState.COLLECTED;\n const layer = [];\n if (this.path) layer.push('path', normalize(this.path));\n if (this.referrer) layer.push('referrer', normalize(this.referrer));\n if (this.title) layer.push('page_title', normalize(this.title));\n if (this.name) layer.push('page_name', normalize(this.name));\n if (this.id) layer.push('page_id', normalize(this.id));\n if (this.author) layer.push('page_author', normalize(this.author));\n if (this.date) layer.push('page_date', normalize(this.date));\n\n const components = Object.keys(Inventory).map(id => document.querySelector(Inventory[id]) !== null ? id : null).filter(id => id !== null).join(',');\n if (components) layer.push('page_components', components);\n\n const labels = this._labels.slice(0, 5);\n labels.length = 5;\n if (labels.some(label => label)) layer.push('pagelabel', labels.map(label => typeof label === 'string' ? normalize(label) : '').join(','));\n\n const tags = this._tags;\n if (tags.some(tag => tag)) layer.push('pagetag', tags.map(tag => typeof tag === 'string' ? normalize(tag) : '').join(','));\n\n this._categories.forEach((category, index) => {\n if (category) layer.push(`page_category${index + 1}`, category);\n });\n\n if (this._isError) layer.push('error', '1');\n\n layer.push('page_template', normalize(this.template));\n layer.push('pagegroup', normalize(this.group));\n layer.push('site-segment', normalize(this.segment));\n\n if (this.subtemplate) layer.push('page_subtemplate', normalize(this.subtemplate));\n if (this.theme) layer.push('page_theme', normalize(this.theme));\n if (this.subtheme) layer.push('page_subtheme', normalize(this.subtheme));\n if (this.related) layer.push('page_related', normalize(this.related));\n if (!isNaN(this.depth)) layer.push('page_depth', this.depth);\n\n if (!isNaN(this.current) && this.current > -1) {\n let pagination = `${this.current}`;\n if (!isNaN(this.total) && this.total > -1) pagination += `/${this.total}`;\n layer.push('page_pagination', pagination);\n }\n\n if (this.filters.length && this.filters.some(label => label)) {\n const filters = this.filters.map(filter => typeof filter === 'string' ? normalize(filter) : '');\n layer.push('page_filters', filters.join(','));\n }\n return layer;\n }\n}\n\nexport { Page };\n","const Method = {\n STANDARD: {\n id: 'standard',\n value: 'standard',\n isDefault: true\n },\n AUTOCOMPLETE: {\n id: 'autocomplete',\n value: 'autocompletion'\n }\n};\n\nexport default Method;\n","import normalize from '../../utils/normalize';\nimport { validateNumber, validateString } from '../../utils/type-validator';\nimport Method from './mehod';\n\nclass Search {\n constructor (config) {\n this._config = config || {};\n }\n\n reset (clear = false) {\n this.engine = clear ? undefined : this._config.engine;\n this.results = clear || isNaN(this._config.results) ? -1 : this._config.results;\n this.terms = clear ? undefined : this._config.terms;\n this.category = clear ? undefined : this._config.category;\n this.theme = clear ? undefined : this._config.theme;\n this.type = clear ? undefined : this._config.type;\n this.method = clear ? undefined : this._config.method;\n }\n\n set engine (value) {\n const valid = validateString(value, 'search.engine');\n if (valid !== null) this._engine = valid;\n }\n\n get engine () {\n return this._engine;\n }\n\n set results (value) {\n const valid = validateNumber(value, 'search.results');\n if (valid !== null) this._results = valid;\n }\n\n get results () {\n return this._results;\n }\n\n set terms (value) {\n const valid = validateString(value, 'search.terms');\n if (valid !== null) this._terms = valid;\n }\n\n get terms () {\n return this._terms;\n }\n\n set category (value) {\n const valid = validateString(value, 'search.category');\n if (valid !== null) this._category = valid;\n }\n\n get category () {\n return this._category;\n }\n\n set theme (value) {\n const valid = validateString(value, 'search.theme');\n if (valid !== null) this._theme = valid;\n }\n\n get theme () {\n return this._theme;\n }\n\n set type (value) {\n const valid = validateString(value, 'search.type');\n if (valid !== null) this._type = valid;\n this._type = value;\n }\n\n get type () {\n return this._type;\n }\n\n set method (id) {\n const methods = Object.values(Method);\n this._method = methods.filter(method => method.id === id || method.value === id)[0] || methods.filter(method => method.isDefault)[0];\n }\n\n get method () {\n return this._method;\n }\n\n get layer () {\n const layer = [];\n if (this.engine) layer.push('isearchengine', normalize(this.engine));\n if (this.results > -1) layer.push('isearchresults', this.results);\n if (this.terms) layer.push('isearchkey', 'search_terms', 'isearchdata', normalize(this.terms));\n if (this.category) layer.push('isearchkey', 'search_category', 'isearchdata', normalize(this.category));\n if (this.theme) layer.push('isearchkey', 'search_theme', 'isearchdata', normalize(this.theme));\n if (this.type) layer.push('isearchkey', 'search_type', 'isearchdata', normalize(this.type));\n if (this._method && layer.length) layer.push('isearchkey', 'search_method', 'isearchdata', this._method.value);\n return layer;\n }\n}\n\nSearch.Method = Method;\n\nexport { Search };\n","import normalize from '../../utils/normalize';\nimport { validateNumber, validateString } from '../../utils/type-validator';\n\nclass Funnel {\n constructor (config) {\n this._config = config || {};\n }\n\n reset (clear = false) {\n this.id = clear ? undefined : this._config.id;\n this.type = clear ? undefined : this._config.type;\n this.name = clear ? undefined : this._config.name;\n this.step = clear ? undefined : this._config.step;\n this.current = clear || isNaN(this._config.current) ? -1 : this._config.current;\n this.total = clear || isNaN(this._config.total) ? -1 : this._config.total;\n this.objective = clear ? undefined : this._config.objective;\n this.error = clear ? undefined : this._config.error;\n }\n\n set id (value) {\n const valid = validateString(value, 'funnel.id');\n if (valid !== null) this._id = valid;\n }\n\n get id () {\n return this._id;\n }\n\n set type (value) {\n const valid = validateString(value, 'funnel.type');\n if (valid !== null) this._type = valid;\n }\n\n get type () {\n return this._type;\n }\n\n set name (value) {\n const valid = validateString(value, 'funnel.name');\n if (valid !== null) this._name = valid;\n }\n\n get name () {\n return this._name;\n }\n\n set step (value) {\n const valid = validateString(value, 'funnel.step');\n if (valid !== null) this._step = valid;\n }\n\n get step () {\n return this._step;\n }\n\n set current (value) {\n const valid = validateNumber(value, 'funnel.current');\n if (valid !== null) this._current = valid;\n }\n\n get current () {\n return this._current;\n }\n\n set total (value) {\n const valid = validateNumber(value, 'funnel.total');\n if (valid !== null) this._total = valid;\n }\n\n get total () {\n return this._total;\n }\n\n set objective (value) {\n const valid = validateString(value, 'funnel.objective');\n if (valid !== null) this._objective = valid;\n this._objective = value;\n }\n\n get objective () {\n return this._objective;\n }\n\n set error (value) {\n const valid = validateString(value, 'funnel.error');\n if (valid !== null) this._error = valid;\n this._error = value;\n }\n\n get error () {\n return this._error;\n }\n\n get layer () {\n const layer = [];\n if (this.id) layer.push('funnel_id', normalize(this.id));\n if (this.type) layer.push('funnel_type', normalize(this.type));\n if (this.name) layer.push('funnel_name', normalize(this.name));\n if (this.step) layer.push('funnel_step_name', normalize(this.step));\n if (!isNaN(this.current) && this.current > -1) layer.push('funnel_step_number', this.current);\n if (!isNaN(this.total) && this.total > -1) layer.push('funnel_step_max', this.total);\n if (this.objective) layer.push('funnel_objective', normalize(this.objective));\n if (this.error) layer.push('funnel_error', normalize(this.error));\n return layer;\n }\n}\n\nexport { Funnel };\n","const ActionMode = {\n IN: 'in',\n OUT: 'out',\n NONE: 'none'\n};\n\nexport { ActionMode };\n","const ActionStatus = {\n UNSTARTED: {\n id: 'unstarted',\n value: -1\n },\n STARTED: {\n id: 'started',\n value: 1\n },\n SINGULAR: {\n id: 'singular',\n value: 2\n },\n ENDED: {\n id: 'ended',\n value: 3\n }\n};\n\nexport { ActionStatus };\n","import api from '../../../api.js';\nimport normalize from '../utils/normalize';\nimport { ActionMode } from './action-mode';\nimport { validateString } from '../utils/type-validator';\nimport { ActionStatus } from './action-status';\n\nconst getParametersLayer = (data) => {\n return Object.entries(data).map(([key, value]) => ['actionpname', normalize(key), 'actionpvalue', normalize(value)]).flat();\n};\n\nclass Action {\n constructor (name) {\n this._isMuted = false;\n this._isForced = false;\n this._name = name;\n this._status = ActionStatus.UNSTARTED;\n this._labels = [];\n this._parameters = {};\n this._sentData = [];\n }\n\n get isMuted () {\n return this._isMuted;\n }\n\n set isMuted (value) {\n this._isMuted = value;\n }\n\n get isForced () {\n return this._isForced;\n }\n\n set isForced (value) {\n this._isForced = value;\n }\n\n get isSingular () {\n return this._status === ActionStatus.SINGULAR;\n }\n\n get status () {\n return this._status;\n }\n\n get name () {\n return this._name;\n }\n\n get labels () {\n return this._labels;\n }\n\n get reference () {\n return this._reference;\n }\n\n get parameters () {\n return this._parameters;\n }\n\n get mode () {\n return this._mode;\n }\n\n singularize () {\n this._status = ActionStatus.SINGULAR;\n }\n\n rewind () {\n this._sentData = [];\n this._status = ActionStatus.UNSTARTED;\n }\n\n addParameter (key, value) {\n this._parameters[key] = value;\n }\n\n removeParameter (key) {\n delete this._parameters[key];\n }\n\n set reference (value) {\n const valid = validateString(value, `action ${this._name}`);\n if (valid !== null) this._reference = valid;\n }\n\n get _base () {\n return ['actionname', this._name];\n }\n\n _getLayer (data = {}) {\n if (this._isMuted) return [];\n\n if (this._mode !== ActionMode.IN) this._sentData.push(JSON.stringify(data));\n\n const layer = this._base;\n switch (this._mode) {\n case ActionMode.IN:\n case ActionMode.OUT:\n layer.push('actionmode', this._mode);\n break;\n }\n\n const labels = this._labels.slice(0, 5);\n labels.length = 5;\n if (labels.some(label => label)) layer.push('actionlabel', labels.map(label => typeof label === 'string' ? normalize(label) : '').join(','));\n\n if (this._reference) layer.push('actionref', this._reference);\n\n layer.push.apply(layer, getParametersLayer(Object.assign(this._parameters, data || {})));\n return layer;\n }\n\n start (data) {\n switch (this._status) {\n case ActionStatus.UNSTARTED:\n this._mode = ActionMode.IN;\n this._status = ActionStatus.STARTED;\n break;\n\n case ActionStatus.SINGULAR:\n this._mode = ActionMode.NONE;\n this._status = ActionStatus.ENDED;\n break;\n\n default:\n api.inspector.error(`unexpected start on action ${this._name} with status ${this._status.id}`);\n return [];\n }\n return this._getLayer(data);\n }\n\n end (data) {\n switch (this._status) {\n case ActionStatus.STARTED:\n this._mode = ActionMode.OUT;\n this._status = ActionStatus.ENDED;\n break;\n\n case ActionStatus.UNSTARTED:\n this._mode = ActionMode.NONE;\n this._status = ActionStatus.ENDED;\n break;\n\n case ActionStatus.SINGULAR:\n this._mode = ActionMode.NONE;\n this._status = ActionStatus.ENDED;\n break;\n\n case ActionStatus.ENDED:\n if (this._sentData.includes(JSON.stringify(data))) return [];\n this._mode = ActionMode.NONE;\n this._status = ActionStatus.ENDED;\n break;\n\n default:\n return [];\n }\n return this._getLayer(data);\n }\n\n resume (data) {\n if (this._isMuted) return [];\n if (this._status.value >= ActionStatus.ENDED.value) {\n api.inspector.error(`unexpected resuming on action ${this._name} with status ${this._status.id}`);\n return [];\n }\n const layer = this._base;\n if (data) layer.push.apply(layer, getParametersLayer(data));\n return layer;\n }\n}\n\nexport { Action };\n","import { ActionMode } from './action-mode';\nimport { Action } from './action';\n\nclass Actions {\n constructor () {\n this._actions = [];\n }\n\n rewind () {\n this._actions.forEach(action => action.rewind());\n }\n\n getAction (name) {\n let action = this._actions.filter(action => action.name === name)[0];\n if (!action) {\n action = new Action(name);\n this._actions.push(action);\n }\n return action;\n }\n\n hasAction (name) {\n return this._actions.some(action => action.name === name);\n }\n\n remove (action) {\n const index = this._actions.indexOf(action);\n if (index === -1) return false;\n this._actions.splice(index, 1);\n return true;\n }\n}\n\nActions.ActionMode = ActionMode;\n\nconst actions = new Actions();\nActions.instance = actions;\n\nexport default actions;\n","import renderer from './renderer';\n\nclass Location {\n constructor (onRouteChange, isListeningHash = false) {\n this._onRouteChange = onRouteChange;\n this._isListeningHash = isListeningHash;\n this._update();\n renderer.add(this);\n }\n\n _update () {\n this._pathname = document.location.pathname;\n this._search = document.location.search;\n this._hash = document.location.hash;\n this._path = `${this._pathname}${this._search}`;\n if (this._isListeningHash) this._path += this._hash;\n this._hasTitle = this._title === document.title;\n this._title = document.title;\n }\n\n render () {\n if (this._pathname !== document.location.pathname || this._search !== document.location.search) this.change();\n if (this._isListeningHash && this._hash !== document.location.hash) this.change();\n }\n\n change () {\n this._referrer = this._path;\n this._update();\n this._onRouteChange();\n }\n\n get path () {\n return this._path;\n }\n\n get hasTitle () {\n return this._hasTitle;\n }\n\n get title () {\n return this._title;\n }\n\n get referrer () {\n return this._referrer;\n }\n}\n\nexport { Location };\n","import api from '../../../api.js';\n\nconst CollectorEvent = {\n COLLECT: api.internals.ns.event('collect')\n};\n\nexport { CollectorEvent };\n","import api from '../../../api.js';\n\nexport const ActioneeEmission = {\n REWIND: api.internals.ns.emission('analytics', 'rewind')\n};\n","import Collection from './collection.js';\nimport api from '../../../api';\nimport { User } from '../collector/user/user';\nimport { Site } from '../collector/site/site';\nimport { Page } from '../collector/page/page';\nimport { Search } from '../collector/search/search';\nimport { Funnel } from '../collector/funnel/funnel';\nimport queue from './queue';\nimport renderer from './renderer';\nimport actions from '../action/actions';\nimport { Location } from './location';\nimport { CollectorEvent } from './collector-event';\nimport { ActioneeEmission } from '../../integration/core/actionee-emission';\n\nclass Collector {\n constructor (config) {\n switch (config.collection) {\n case Collection.MANUAL:\n case Collection.LOAD:\n case Collection.FULL:\n case Collection.HASH:\n this._collection = config.collection;\n break;\n\n default:\n /* deprecated start */\n if (config.mode) {\n switch (config.mode) {\n case 'manual':\n this._collection = config.collection;\n break;\n }\n }\n /* deprecated end */\n\n switch (true) {\n /* deprecated */\n case config.mode === 'manual':\n this._collection = Collection.MANUAL;\n break;\n\n case api.mode === api.Modes.ANGULAR:\n case api.mode === api.Modes.REACT:\n case api.mode === api.Modes.VUE:\n this._collection = Collection.FULL;\n break;\n\n default:\n this._collection = Collection.LOAD;\n }\n }\n\n this._isActionEnabled = config.isActionEnabled === 'false' || config.isActionEnabled;\n\n this._user = new User(config.user);\n this._site = new Site(config.site);\n this._page = new Page(config.page);\n this._search = new Search(config.search);\n this._funnel = new Funnel(config.funnel);\n\n this._delay = -1;\n queue.setCollector(this);\n }\n\n get page () {\n return this._page;\n }\n\n get user () {\n return this._user;\n }\n\n get site () {\n return this._site;\n }\n\n get search () {\n return this._search;\n }\n\n get funnel () {\n return this._funnel;\n }\n\n start () {\n const handleRouteChange = this._handleRouteChange.bind(this);\n switch (this._collection) {\n case Collection.LOAD:\n this.collect();\n break;\n\n case Collection.FULL:\n this.collect();\n this._location = new Location(handleRouteChange);\n break;\n\n case Collection.HASH:\n this.collect();\n this._location = new Location(handleRouteChange, true);\n break;\n }\n }\n\n _handleRouteChange () {\n queue.send(true);\n this._delay = 6;\n renderer.add(this);\n }\n\n render () {\n this._delay--;\n if (this._delay < 0) {\n renderer.remove(this);\n this._routeChanged();\n }\n }\n\n _routeChanged () {\n actions.rewind();\n this._page.referrer = this._location.referrer;\n if (this._location.hasTitle) this._page.title = this._location.title;\n this._page.path = this._location.path;\n const event = new CustomEvent(CollectorEvent.COLLECT);\n document.documentElement.dispatchEvent(event);\n this.collect();\n if (api.internals && api.internals.stage && api.internals.stage.root) api.internals.stage.root.descend(ActioneeEmission.REWIND);\n }\n\n reset (clear = false) {\n this._user.reset(clear);\n this._site.reset(clear);\n this._page.reset(clear);\n this._search.reset(clear);\n this._funnel.reset(clear);\n }\n\n collect () {\n if (!this.page.collecting()) return;\n queue.collect();\n }\n\n get collection () {\n return this._collection;\n }\n\n get isCollecting () {\n return this._page.isCollecting;\n }\n\n get isActionEnabled () {\n return this._isActionEnabled;\n }\n\n set isActionEnabled (value) {\n this._isActionEnabled = value;\n }\n\n get layer () {\n return [\n ...this._user.layer,\n ...this._site.layer,\n ...this._page.layer,\n ...this._search.layer,\n ...this._funnel.layer\n ];\n }\n}\n\nexport { Collector };\n","import api from '../../api.js';\nimport patch from '../../../patch/script/patch';\nimport Collection from './engine/collection';\nimport { Init } from './facade/init';\nimport { ConsentManagerPlatform } from './cmp/consent-manager-platform';\nimport push from './facade/push';\nimport PushType from './facade/push-type';\nimport queue from './engine/queue';\nimport opt from './facade/opt';\nimport debug from './facade/debug';\nimport { Collector } from './engine/collector';\n\nclass Analytics {\n constructor () {\n this._isReady = false;\n this._readiness = new Promise((resolve, reject) => {\n if (this._isReady) resolve();\n else {\n this._resolve = resolve;\n this._reject = reject;\n }\n });\n this._configure();\n }\n\n _configure () {\n switch (true) {\n case window[patch.namespace] !== undefined:\n this._config = window[patch.namespace].configuration.analytics;\n window[patch.namespace].promise.then(this._build.bind(this), () => {});\n break;\n\n case api.internals !== undefined && api.internals.configuration !== undefined && api.internals.configuration.analytics !== undefined && api.internals.configuration.analytics.domain !== undefined:\n this._config = api.internals.configuration.analytics;\n this._build();\n break;\n\n case api.analytics !== undefined && api.analytics.domain !== undefined:\n this._config = api.analytics;\n this._build();\n break;\n\n default:\n api.inspector.warn('analytics configuration is incorrect or missing (required : domain)');\n }\n }\n\n _build () {\n this._init = new Init(this._config.domain);\n this._init.configure().then(this._start.bind(this), (reason) => this._reject(reason));\n }\n\n get isReady () {\n return this._isReady;\n }\n\n get readiness () {\n return this._readiness;\n }\n\n _start () {\n if (this._isReady) return;\n\n this._cmp = new ConsentManagerPlatform(this._config.cmp);\n this._collector = new Collector(this._config);\n this._collector.reset();\n\n this._isReady = true;\n this._resolve();\n\n queue.start();\n this._collector.start();\n }\n\n get page () {\n return this._collector.page;\n }\n\n get user () {\n return this._collector.user;\n }\n\n get site () {\n return this._collector._site;\n }\n\n get search () {\n return this._collector.search;\n }\n\n get funnel () {\n return this._collector.funnel;\n }\n\n get cmp () {\n return this._cmp;\n }\n\n get opt () {\n return opt;\n }\n\n get collection () {\n return this._collector.collection;\n }\n\n get isActionEnabled () {\n return this._collector.isActionEnabled;\n }\n\n set isActionEnabled (value) {\n this._collector.isActionEnabled = value;\n }\n\n get isDebugging () {\n return debug.isActive;\n }\n\n set isDebugging (value) {\n debug.isActive = value;\n }\n\n push (type, layer) {\n push(type, layer);\n }\n\n reset (clear = false) {\n this._collector.reset();\n }\n\n collect () {\n this._collector.collect();\n }\n}\n\nconst analytics = new Analytics();\n\nanalytics.Collection = Collection;\nanalytics.PushType = PushType;\n\nexport default analytics;\n","import api from './api.js';\nimport analytics from './script/analytics/analytics';\nimport { completeAssign } from '../core/script/api/utilities/property/complete-assign';\n\napi.analytics = completeAssign(analytics, {});\n\nexport default api;\n","/**\n * Copy properties from multiple sources including accessors.\n * source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copier_des_accesseurs\n *\n * @param {object} [target] - Target object to copy into\n * @param {...objects} [sources] - Multiple objects\n * @return {object} A new object\n *\n * @example\n *\n * const obj1 = {\n * key: 'value'\n * };\n * const obj2 = {\n * get function01 () {\n * return a-value;\n * }\n * set function01 () {\n * return a-value;\n * }\n * };\n * completeAssign(obj1, obj2)\n */\nconst completeAssign = (target, ...sources) => {\n sources.forEach(source => {\n const descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {});\n\n Object.getOwnPropertySymbols(source).forEach(sym => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(target, descriptors);\n });\n return target;\n};\n\nexport { completeAssign };\n","export const Type = {\n // impression\n IMPRESSION: {\n id: 'impression', // element appeared in the page\n isSingular: true,\n isBeginning: true,\n attributed: false,\n type: 'impression'\n },\n // interaction\n CLICK: {\n id: 'click', // generic click interaction\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'click',\n method: 'eventListener'\n },\n INTERNAL: {\n id: 'internal', // anchor click redirecting on an internal url\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'click',\n method: 'eventListener'\n },\n EXTERNAL: {\n id: 'external', // anchor click redirecting on an external url\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'click',\n method: 'eventListener'\n },\n DOWNLOAD: {\n id: 'download', // anchor click downloading a file\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'click',\n method: 'eventListener'\n },\n BUTTON: {\n id: 'button', // button click\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'click',\n method: 'eventListener'\n },\n DOUBLE_CLICK: {\n id: 'dblclick', // double click\n isBeginning: true,\n attributed: true,\n type: 'interaction',\n event: 'dblclick',\n method: 'eventListener'\n },\n // event\n OPEN: {\n id: 'open', // open event\n isSingular: true,\n attributed: false,\n type: 'event',\n method: 'eventListener'\n },\n COMPLETE: {\n id: 'complete', // complete event\n isSingular: true,\n attributed: false,\n type: 'event',\n method: 'eventListener'\n },\n FOCUS: {\n id: 'focus', // focus event\n isSingular: true,\n attributed: false,\n type: 'event',\n method: 'eventListener'\n },\n ERROR: {\n id: 'error', // error event\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n ADD: {\n id: 'add', // add event\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n REMOVE: {\n id: 'remove', // remove event\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n DISPLAY: {\n id: 'display', // display event\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n CHANGE: {\n id: 'change', // input event change\n isSingular: true,\n attributed: true,\n type: 'event',\n event: 'change',\n method: 'change'\n },\n PROGRESS: {\n id: 'progress', // video retention event with percent of the part reached\n isBeginning: true,\n attributed: true,\n type: 'event'\n },\n // component interaction\n SHARE: {\n id: 'share', // component share click (share)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n PRESS: {\n id: 'press', // component press click (pressable tag)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n RELEASE: {\n id: 'release', // component release click (pressable tag)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n DISMISS: {\n id: 'dismiss', // component dismiss click (dismissible tag)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n UPLOAD: {\n id: 'upload', // component upload click (upload)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n CHECK: {\n id: 'check', // component check click (checkbox, radio, toggle)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n UNCHECK: {\n id: 'uncheck', // component uncheck click (checkbox, radio, toggle)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n SELECT: {\n id: 'select', // component select change (select)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n SUBSCRIBE: {\n id: 'subscribe', // component subscribe click (follow)\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n // component event\n DISCLOSE: {\n id: 'disclose', // component disclose event (accordion, modal, tab)\n isBeginning: true,\n attributed: false,\n type: 'event'\n },\n SEARCH: {\n id: 'search', // component disclose event (accordion, modal, tab)\n isBeginning: true,\n attributed: false,\n type: 'event'\n },\n SHOW: {\n id: 'show', // component show event (tooltip)\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n HIDE: {\n id: 'hide', // component hide event (tooltip)\n isSingular: true,\n attributed: false,\n type: 'event'\n },\n // video\n AUTOPLAY: {\n id: 'autoplay', // video autoplay event\n isBeginning: true,\n attributed: false,\n type: 'event'\n },\n PLAY: {\n id: 'play', // video play click\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n PAUSE: {\n id: 'pause', // video pause click\n isBeginning: true,\n attributed: false,\n type: 'interaction'\n },\n END: {\n id: 'end', // video end event\n isBeginning: true,\n attributed: false,\n type: 'event'\n }\n};\n\nexport default Type;\n","const Type = {\n UNDEFINED: 'undefined',\n HEADING: 'heading',\n COMPONENT: 'component',\n CONTENT: 'content'\n};\n\nexport { Type };\n","import api from '../../../../api';\nimport { Type } from './type';\n\nconst NODE_POSITION = Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\nclass Heading {\n constructor (heading) {\n this._label = heading.textContent.trim();\n this._level = Number(heading.tagName.charAt(1));\n }\n\n get level () {\n return this._level;\n }\n\n get label () {\n return this._label;\n }\n}\n\nclass Member {\n constructor (node, target, level) {\n this._type = Type.UNDEFINED;\n this._node = node;\n this._target = target;\n this._level = level;\n this._label = '';\n this._component = '';\n this._isValid = true;\n this.analyse();\n }\n\n _parseHeadings () {\n const selector = Array.from({ length: this._level }, (v, i) => `h${i + 1}`).join(',');\n this._headings = Array.from(this._node.querySelectorAll(selector)).filter(heading => heading === this._node || heading.parentNode === this._node || (heading.parentNode != null && heading.parentNode.parentNode === this._node)).filter(heading => (this._target.compareDocumentPosition(heading) & NODE_POSITION) > 0).map(heading => new Heading(heading)).reverse();\n }\n\n _getComponent () {\n if (typeof api !== 'function') return false;\n const element = api(this._node);\n if (!element) return false;\n const instance = Object.values(element).filter(actionee => actionee.isActionee).sort((a, b) => b.priority - a.priority)[0];\n if (!instance) return false;\n\n this._type = Type.COMPONENT;\n this._isValid = instance.validate(this._target);\n const selector = Array.from({ length: 6 }, (v, i) => `h${i + 1}`).join(',');\n const top = Array.from(this._node.querySelectorAll(selector)).map(heading => new Heading(heading)).sort((a, b) => a.level - b.level)[0];\n if (top && top.level <= this._level) this._level = top.level - 1;\n\n const hx = this._node.closest(selector);\n if (hx) {\n const heading = new Heading(hx);\n if (heading.level <= this._level) this._level = heading.level - 1;\n }\n\n if (!isNaN(instance.level) && instance.level < this._level) this._level = instance.level;\n this._label = instance.label;\n this._component = instance.component;\n return true;\n }\n\n _getHeading () {\n if (!this._headings.length) return false;\n const labels = [];\n this._headings.forEach(heading => {\n if (heading.level <= this._level) {\n if (heading.level > 1) labels.unshift(heading.label);\n this._level = heading.level - 1;\n }\n });\n if (!labels.length) return false;\n this._type = Type.HEADING;\n this._label = labels.join(' ');\n return true;\n }\n\n analyse () {\n this._parseHeadings();\n if (this._getComponent()) return;\n if (this._getHeading()) return;\n if (this._node !== this._target) return;\n\n const label = this._node.textContent.trim();\n if (!label) return;\n this._type = Type.CONTENT;\n this._label = label;\n }\n\n get type () {\n return this._type;\n }\n\n get level () {\n return this._level;\n }\n\n get label () {\n return this._label;\n }\n\n get component () {\n return this._component;\n }\n\n get node () {\n return this._node;\n }\n\n get target () {\n return this._target;\n }\n\n get isValid () {\n return this._isValid;\n }\n}\n\nexport { Member };\n","import normalize from '../normalize';\nimport { Member } from './member';\nimport { Type } from './type';\n\nclass Hierarchy {\n constructor (node) {\n this._node = node;\n this._process();\n }\n\n _process () {\n // console.log('_______________ start ____________________');\n const member = new Member(this._node, this._node, 6);\n // console.log('- FIRST MEMBER', member);\n this._level = member.level;\n this._members = [member];\n\n let node = this._node.parentNode;\n\n while (document.documentElement.contains(node) && node !== document.documentElement && this._level > 0) {\n // console.log('MEMBERS ARRAY', this._members);\n // console.log('NODE ANALYSIS', node);\n const member = new Member(node, this._node, this._level);\n // console.log('NEW MEMBER', member);\n switch (true) {\n case member.type === Type.UNDEFINED:\n // console.log('****UNDEFINED');\n break;\n\n case !member.isValid:\n // console.log('****INVALID');\n break;\n\n case member.label === this._members[0].label && member.type === Type.HEADING && this._members[0].type === Type.COMPONENT:\n // console.log('***** SAME');\n // do nothing\n break;\n\n case member.label === this._members[0].label && member.type === Type.COMPONENT && this._members[0].type === Type.HEADING:\n // console.log('***** SAME INVERT');\n this._members.splice(0, 1, member);\n break;\n\n default:\n this._members.unshift(member);\n if (member.level < this._level) this._level = member.level;\n }\n\n node = node.parentNode;\n }\n\n this._label = normalize(this._members[this._members.length - 1].label);\n this._title = normalize(this._members.filter(member => member.label).map(member => member.label).join(' '));\n const components = this._members.filter(member => member.component).map(member => member.component);\n this._component = normalize(components.join(' '));\n this._localComponent = components[components.length - 1];\n this._globalComponent = components[0];\n\n // console.log('========= end ===========');\n }\n\n get localComponent () {\n return this._localComponent;\n }\n\n get globalComponent () {\n return this._globalComponent;\n }\n\n get label () {\n return this._label;\n }\n\n get title () {\n return this._title;\n }\n\n get component () {\n return this._component;\n }\n}\n\nexport { Hierarchy };\n","import api from '../../../api';\nimport actions from './actions';\nimport { Hierarchy } from '../utils/hierarchy/hierarchy';\nimport queue from '../engine/queue';\n\nclass ActionElement {\n constructor (node, type, id, category = '', title = null, parameters = {}, isRating = false, isForced = false) {\n this._node = node;\n this._type = type;\n this._id = id || this._node.id;\n this._isMuted = false;\n this._title = title;\n this._category = category;\n this._parameters = parameters;\n this._isRating = isRating;\n this._isForced = isForced;\n this._hasBegun = false;\n\n // this._init();\n requestAnimationFrame(this._init.bind(this));\n }\n\n _init () {\n this._hierarchy = new Hierarchy(this._node);\n\n let id = '';\n let type = '';\n if (this._id) id = `_[${this._id}]`;\n else api.inspector.warn(`Analytics API requires an id to be set on tracked element. Missing on ${this._node.outerHTML}`);\n if (this._type) type = `(${this._type.id})_`;\n this._name = `${type}${this._title || this._hierarchy.title}${id}`;\n\n this._action = actions.getAction(this._name, this._type.status);\n if (this._type.isSingular) this._action.singularize();\n Object.keys(this._parameters).forEach(key => this._action.addParameter(key, this._parameters[key]));\n this._action.isMuted = this._isMuted;\n this._action.isForced = this._isForced;\n\n this._action.labels[0] = this._type.id;\n this._action.labels[1] = this._hierarchy.globalComponent;\n this._action.labels[2] = this._hierarchy.localComponent;\n this._action.labels[4] = this._category;\n\n if (this._hierarchy.label) this._action.addParameter('component_label', this._hierarchy.label);\n if (this._hierarchy.title) this._action.addParameter('heading_hierarchy', this._hierarchy.title);\n if (this._hierarchy.component) this._action.addParameter('component_hierarchy', this._hierarchy.component);\n\n this.begin();\n }\n\n get isMuted () {\n return this._action ? this._action.isMuted : this._isMuted;\n }\n\n set isMuted (value) {\n this._isMuted = value;\n if (this._action) this._action.isMuted = value;\n }\n\n get action () {\n return this._action;\n }\n\n rewind () {\n this._hasBegun = false;\n this.begin();\n }\n\n begin (data = {}) {\n if (this._hasBegun) return;\n this._hasBegun = true;\n if (this._type.isBeginning && (this._type.isSingular || this._isRating)) queue.appendStartingAction(this._action, data);\n }\n\n act (data = {}) {\n if (this._isMuted) return;\n if (!this._action) {\n requestAnimationFrame(() => this.act(data));\n return;\n }\n queue.appendEndingAction(this._action, data);\n }\n\n dispose () {\n actions.remove(this._action);\n }\n}\n\nexport { ActionElement };\n","import api from '../../../api.js';\nimport { Type } from '../../analytics/action/type';\nimport { ActionElement } from '../../analytics/action/action-element';\nimport { ActioneeEmission } from './actionee-emission';\n\nconst ActionAttributes = {\n RATING: api.internals.ns.attr('analytics-rating'),\n ACTION: api.internals.ns.attr('analytics-action')\n};\n\nclass Actionee extends api.core.Instance {\n constructor (priority = -1, category = '', title = null, isForced = false) {\n super();\n this._type = null;\n this._priority = priority;\n this._category = category;\n this._title = title;\n this._parameters = {};\n this._data = {};\n this._isMuted = false;\n this._isForced = isForced;\n }\n\n static get instanceClassName () {\n return 'Actionee';\n }\n\n get proxy () {\n const scope = this;\n\n const proxy = {\n validate: (target, members) => scope.validate(target, members)\n };\n\n const proxyAccessors = {\n get isActionee () {\n return true;\n },\n get label () {\n return scope.label;\n },\n get priority () {\n return scope.priority;\n },\n get level () {\n return scope.level;\n },\n get node () {\n return scope.node; // TODO: remove in v2\n }\n };\n\n return api.internals.property.completeAssign(super.proxy, proxy, proxyAccessors);\n }\n\n get data () {\n return this._data;\n }\n\n _config (element, registration) {\n super._config(element, registration);\n\n if (this._type === null) {\n this._sort(element);\n this._isMuted = true;\n return;\n }\n\n this._actionElement = new ActionElement(this.node, this._type, this.id, this._category, this.getAttribute(ActionAttributes.ACTION) || this._title, this._parameters, this.hasAttribute(ActionAttributes.RATING), this.hasAttribute(ActionAttributes.ACTION) || this._isForced);\n if (this._isMuted) this._actionElement.isMuted = true;\n\n this.addDescent(ActioneeEmission.REWIND, this.rewind.bind(this));\n\n this._sort(element);\n }\n\n _sort (element) {\n const actionees = element.instances.filter(instance => instance.isActionee).sort((a, b) => b.priority - a.priority);\n if (actionees.length <= 1) return;\n actionees.forEach((actionee, index) => { actionee.isMuted = index > 0; });\n }\n\n get isMuted () {\n return this._actionElement ? this._actionElement.isMuted : this._isMuted;\n }\n\n set isMuted (value) {\n this._isMuted = value;\n if (this._actionElement) this._actionElement.isMuted = value;\n }\n\n get priority () {\n return this._priority;\n }\n\n setPriority (value) {\n this._priority = value;\n }\n\n get isInteractive () {\n return this.node.tagName === 'A' || this.node.tagName === 'BUTTON';\n }\n\n detectInteractionType (node) {\n if (!node) node = this.node;\n const tag = node.tagName;\n const href = node.getAttribute('href');\n const isDownload = node.hasAttribute('download');\n const hostname = node.hostname;\n\n switch (true) {\n case tag !== 'A':\n this._type = Type.CLICK;\n break;\n\n case isDownload:\n this._type = Type.DOWNLOAD;\n this.value = href;\n break;\n\n case hostname === location.hostname :\n this._type = Type.INTERNAL;\n this.value = href;\n break;\n\n case hostname.length > 0 :\n this._type = Type.EXTERNAL;\n this.value = href;\n break;\n\n default:\n this._type = Type.CLICK;\n break;\n }\n }\n\n setClickType () {\n this._type = Type.CLICK;\n }\n\n listenActionClick (target) {\n if (target) {\n this._clickTarget = target;\n this._clickTarget.addEventListener('click', this._handlingClick, { capture: true });\n } else this.listenClick({ capture: true });\n }\n\n handleClick () {\n this.act();\n }\n\n setImpressionType () {\n this._type = Type.IMPRESSION;\n }\n\n rewind () {\n if (this._actionElement) this._actionElement.rewind();\n }\n\n act (data = {}) {\n if (this._actionElement !== undefined) {\n this._data.component_value = this.value;\n this._actionElement.act(Object.assign(this._data, data));\n }\n }\n\n getFirstText (node) {\n if (!node) node = this.node;\n if (node.childNodes && node.childNodes.length > 0) {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === Node.TEXT_NODE) {\n const text = node.childNodes[i].textContent.trim();\n if (text) {\n return this.cropText(text);\n }\n }\n }\n\n for (let i = 0; i < node.childNodes.length; i++) {\n const text = this.getFirstText(node.childNodes[i]);\n if (text) {\n return this.cropText(text);\n }\n }\n }\n return '';\n }\n\n cropText (text, length = 50) {\n return text.length > 50 ? `${text.substring(0, 50).trim()}[...]` : text;\n }\n\n getInteractionLabel () {\n const title = this.getAttribute('title');\n if (title) return this.cropText(title);\n\n const text = this.getFirstText();\n if (text) return text;\n\n const img = this.node.querySelector('img');\n if (img) {\n const alt = img.getAttribute('alt');\n if (alt) return this.cropText(alt);\n }\n\n return null;\n }\n\n getHeadingLabel (length = 6) {\n const selector = Array.from({ length: length }, (v, i) => `h${i + 1}`).join(',');\n const headings = Array.from(this.querySelectorAll(selector)).filter(heading => (this.node.compareDocumentPosition(heading) & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0);\n if (headings.length) {\n for (const heading of headings) {\n const text = this.getFirstText(heading);\n if (text) return text;\n }\n }\n }\n\n detectLevel (node) {\n if (!node) node = this.node;\n const selector = Array.from({ length: 6 }, (v, i) => `h${i + 1}`).join(',');\n const levels = Array.from(node.querySelectorAll(selector)).map(heading => Number(heading.tagName.charAt(1)));\n if (levels.length) this._level = Math.min.apply(null, levels) - 1;\n }\n\n validate (target) {\n return true;\n }\n\n get actionElement () {\n return this._actionElement;\n }\n\n get label () {\n return null;\n }\n\n get value () {\n return this._value || this.label;\n }\n\n set value (value) {\n this._value = value;\n }\n\n get isActionee () {\n return true;\n }\n\n get level () {\n return this._level;\n }\n\n get type () {\n return this._type;\n }\n\n dispose () {\n if (this._clickTarget) {\n this._clickTarget.removeEventListener('click', this._handlingClick);\n }\n super.dispose();\n }\n}\n\nexport { Actionee };\n","import Type from '../../analytics/action/type';\nimport { Actionee } from '../core/actionee';\n\nclass AttributeActionee extends Actionee {\n constructor () {\n super(100, '', null, true);\n }\n\n static get instanceClassName () {\n return 'AttributeActionee';\n }\n\n init () {\n this._attribute = this.registration.selector.replace(/[[\\]]/g, '');\n const id = this._attribute.split('-').pop();\n this._type = Object.values(Type).filter(type => type.id === id)[0];\n this._title = this.getAttribute(this._attribute);\n if (this._type === Type.CLICK) this.detectInteractionType();\n\n switch (this._type.method) {\n case 'eventListener':\n this.listen(this._type.event, this.handleEvent.bind(this));\n break;\n\n case 'change':\n this.listen(this._type.event, this.handleChange.bind(this));\n break;\n }\n }\n\n handleEvent (e) {\n this._actionElement.act();\n }\n\n handleChange (e) {\n this._actionElement.act({ change_value: e.target.value });\n }\n\n dispose () {\n this._actionElement.dispose();\n super.dispose();\n }\n}\n\nexport { AttributeActionee };\n","import api from '../../../../api.js';\n\nexport const ButtonEmission = {\n CLICK: api.internals.ns.emission('button', 'click')\n};\n","import api from '../../../api.js';\nimport { Type } from '../../analytics/action/type';\nimport { Actionee } from '../core/actionee';\nimport { ButtonEmission } from './button/button-emission';\n\nclass ComponentActionee extends Actionee {\n constructor (priority = -1) {\n super(priority, 'dsfr_component');\n }\n\n static get instanceClassName () {\n return 'ComponentActionee';\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n get component () {\n return scope.component;\n }\n };\n\n return api.internals.property.completeAssign(super.proxy, proxyAccessors);\n }\n\n setDiscloseType () {\n this._type = Type.DISCLOSE;\n }\n\n listenDisclose () {\n this.listen(api.core.DisclosureEvent.DISCLOSE, this._handleDisclose.bind(this), { capture: true });\n }\n\n _handleDisclose () {\n this.act();\n }\n\n setChangeType () {\n this._type = Type.CHANGE;\n }\n\n listenChange () {\n this.listen('change', this._handleChange.bind(this), { capture: true });\n }\n\n _handleChange (e) {\n if (e.target && e.target.value) {\n this.setChangeValue(e);\n this.act();\n }\n }\n\n setChangeValue (e) {\n this.value = e.target.value;\n }\n\n listenInputValidation (node, type = Type.CLICK, isSendingInputValue = false) {\n if (!node) node = this.node;\n this._type = type;\n this._isSendingInputValue = isSendingInputValue;\n this.addAscent(ButtonEmission.CLICK, this._actValidatedInput.bind(this));\n const button = this.element.getDescendantInstances('ButtonActionee', null, true)[0];\n if (button) button.isMuted = true;\n this._validatedInput = node.querySelector('input');\n this._handlingInputValidation = this._handleInputValidation.bind(this);\n if (this._validatedInput) this._validatedInput.addEventListener('keydown', this._handlingInputValidation);\n }\n\n _handleInputValidation (e) {\n if (e.keyCode === 13) this._actValidatedInput();\n }\n\n _actValidatedInput () {\n if (this._isActingValidatedInput) return;\n this._isActingValidatedInput = true;\n if (this._isSendingInputValue) this.value = this._validatedInput.value.trim();\n this.act();\n this.request(this._actedValidatedInput.bind(this));\n }\n\n _actedValidatedInput () {\n this._isActingValidatedInput = false;\n }\n\n setCheckType () {\n this._type = Type.CHECK;\n }\n\n detectCheckableType () {\n const isChecked = this.node.checked;\n this._type = isChecked ? Type.UNCHECK : Type.CHECK;\n }\n\n listenCheckable () {\n this.listen('change', this._handleCheckable.bind(this), { capture: true });\n }\n\n _handleCheckable (e) {\n if (e.target && e.target.value !== 'on') {\n this.value = e.target.value;\n }\n\n switch (true) {\n case this._type === Type.CHECK && e.target.checked:\n case this._type === Type.UNCHECK && !e.target.checked:\n this.act();\n break;\n }\n }\n\n detectPressableType () {\n const isPressable = this.node.hasAttribute('aria-pressed');\n if (isPressable) {\n const isPressed = this.node.getAttribute('aria-pressed') === 'true';\n this._type = isPressed ? Type.RELEASE : Type.PRESS;\n }\n return isPressable;\n }\n\n listenPressable () {\n this.listen('click', this._handlePressable.bind(this), { capture: true });\n }\n\n _handlePressable (e) {\n switch (true) {\n case this._type === Type.PRESS && e.target.getAttribute('aria-pressed') === 'false':\n case this._type === Type.RELEASE && e.target.getAttribute('aria-pressed') === 'true':\n this.act();\n break;\n }\n }\n\n setDismissType () {\n this._type = Type.DISMISS;\n }\n\n get component () {\n return null;\n }\n\n dispose () {\n if (this._validatedInput) {\n this._validatedInput.removeEventListener('keydown', this._handlingInputValidation);\n }\n\n super.dispose();\n }\n}\n\nexport { ComponentActionee };\n","import api from '../../../../api';\n\nexport const AccordionSelector = {\n ACCORDION: api.internals.ns.selector('accordion'),\n TITLE: api.internals.ns.selector('accordion__title')\n};\n","const ID = 'accordion';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass AccordionButtonActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'AccordionButtonActionee';\n }\n\n init () {\n this.isMuted = true;\n }\n\n get button () {\n return this.element.getInstance('CollapseButton');\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n\n return 'bouton d\\'accordéon';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { AccordionButtonActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport { AccordionSelector } from './accordion-selector';\nimport { AccordionButtonActionee } from './accordion-button-actionee';\nimport ID from './id';\n\nclass AccordionActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'AccordionActionee';\n }\n\n init () {\n this.setDiscloseType();\n this.wrapper = this.node.closest(AccordionSelector.ACCORDION);\n this.detectLevel(this.wrapper);\n this.register(`[aria-controls=\"${this.id}\"]`, AccordionButtonActionee);\n this.listenDisclose();\n }\n\n get label () {\n if (this.wrapper) {\n const title = this.wrapper.querySelector(AccordionSelector.TITLE);\n if (title) {\n const text = this.getFirstText(title);\n if (text) return text;\n }\n }\n const instance = this.element.getInstance('Collapse');\n if (instance) {\n const button = instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const text = this.getFirstText(button);\n if (text) return text;\n }\n }\n return 'accordéon';\n }\n\n get component () {\n return ID;\n }\n\n dispose () {\n super.dispose();\n }\n}\n\nexport { AccordionActionee };\n","import api from '../../../../api';\n\nexport const AlertSelector = {\n ALERT: api.internals.ns.selector('alert'),\n TITLE: api.internals.ns.selector('alert__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { AlertSelector } from './alert-selector';\nimport ID from './id';\n\nclass AlertActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'AlertActionee';\n }\n\n get label () {\n const alertTitle = this.node.querySelector(AlertSelector.TITLE);\n if (alertTitle) {\n const text = this.getFirstText(alertTitle);\n if (text) return text;\n }\n return 'alerte';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { AlertActionee };\n","const ID = 'alert';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const BreadcrumbSelector = {\n LINK: `${api.internals.ns.selector('breadcrumb__link')}:not([aria-current])`,\n COLLAPSE: `${api.internals.ns.selector('breadcrumb')} ${api.internals.ns.selector('collapse')}`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass BreadcrumbActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'BreadcrumbActionee';\n }\n\n get label () {\n return 'fil d\\'ariane';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { BreadcrumbActionee };\n","const ID = 'breadcrumb';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\n\nclass BreadcrumbLinkActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'BreadcrumbLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n handleClick () {\n this.act();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n return 'lien fil d\\'ariane';\n }\n\n get component () {\n return null;\n }\n}\n\nexport { BreadcrumbLinkActionee };\n","import api from '../../../../api.js';\n\nexport const ButtonSelector = {\n BUTTON: `${api.internals.ns.selector('btn')}:not(${api.internals.ns.selector('btn--close')})`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\nimport { ButtonEmission } from './button-emission';\n\nclass ButtonActionee extends ComponentActionee {\n constructor () {\n super(1);\n this._data = {};\n }\n\n static get instanceClassName () {\n return 'ButtonActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n handleClick () {\n this.ascend(ButtonEmission.CLICK);\n this.act();\n }\n\n get label () {\n if (this.node.tagName === 'input') {\n switch (this.node.type) {\n case 'button':\n case 'submit':\n if (this.hasAttribute('value')) return this.getAttribute('value');\n }\n }\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n return 'bouton';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ButtonActionee };\n","const ID = 'button';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const CalloutSelector = {\n CALLOUT: api.internals.ns.selector('callout'),\n TITLE: api.internals.ns.selector('callout__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { CalloutSelector } from './callout-selector';\nimport ID from './id';\n\nclass CalloutActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'CalloutActionee';\n }\n\n get label () {\n const calloutTitle = this.node.querySelector(CalloutSelector.TITLE);\n if (calloutTitle) {\n const text = this.getFirstText(calloutTitle);\n if (text) return text;\n }\n\n return 'mise en avant';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { CalloutActionee };\n","const ID = 'callout';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const CardSelector = {\n CARD: api.internals.ns.selector('card'),\n LINK: `${api.internals.ns.selector('card__title')} a, ${api.internals.ns.selector('card__title')} button`,\n TITLE: api.internals.ns.selector('card__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { CardSelector } from './card-selector';\nimport ID from './id';\n\nclass CardActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'CardActionee';\n }\n\n init () {\n const link = this.node.querySelector(CardSelector.LINK);\n if (link) {\n this.link = link;\n this.detectInteractionType(link);\n this.listenActionClick(link);\n }\n }\n\n get label () {\n const cardTitle = this.node.querySelector(CardSelector.TITLE);\n if (cardTitle) {\n const text = this.getFirstText(cardTitle);\n if (text) return text;\n }\n\n const heading = this.getHeadingLabel();\n if (heading) return heading;\n\n return 'carte';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { CardActionee };\n","const ID = 'card';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const CheckboxSelector = {\n INPUT: api.internals.ns.selector('checkbox-group [type=\"checkbox\"]')\n};\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass CheckboxActionee extends ComponentActionee {\n constructor () {\n super(1);\n this._data = {};\n }\n\n static get instanceClassName () {\n return 'CheckboxActionee';\n }\n\n init () {\n this.detectCheckableType();\n this.listenCheckable();\n }\n\n get label () {\n const label = this.node.parentNode.querySelector(api.internals.ns.selector('label'));\n if (label) {\n const text = this.getFirstText(label);\n if (text) return text;\n }\n return 'case à cocher';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { CheckboxActionee };\n","const ID = 'checkbox';\n\nexport default ID;\n","import api from '../../../../api.js';\n\nexport const ConnectSelector = {\n CONNECT: api.internals.ns.selector('connect'),\n LINK: api.internals.ns.selector('connect + * a, connect + a')\n};\n","const ID = 'connect';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass ConnectActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'ConnectActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n if (this.node.classList.contains('fr-connect--plus')) return 'FranceConnect+';\n return 'FranceConnect';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ConnectActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass ConnectLinkActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'ConnectLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n return this.getFirstText() || 'qu\\'est-ce que FranceConnect ?';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ConnectLinkActionee };\n","import api from '../../../../api';\n\nexport const ConsentSelector = {\n BANNER: api.internals.ns.selector('consent-banner')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass ConsentActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'ConsentActionee';\n }\n\n get label () {\n return 'gestionnaire de consentement';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ConsentActionee };\n","const ID = 'consent';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const DownloadSelector = {\n LINK: api.internals.ns.selector('download__link')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass DownloadActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'DownloadActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const text = this.getFirstText();\n if (text) return text;\n return 'téléchargement';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { DownloadActionee };\n","const ID = 'download';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const FollowSelector = {\n FOLLOW: api.internals.ns.selector('follow'),\n NEWSLETTER_INPUT_GROUP: api.internals.ns.selector('follow__newsletter') + ' ' + api.internals.ns.selector('input-group')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { FollowSelector } from './follow-selector';\nimport { Type } from '../../../analytics/action/type';\nimport ID from './id';\n\nclass FollowActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'FollowActionee';\n }\n\n init () {\n this._inputGroup = this.querySelector(FollowSelector.NEWSLETTER_INPUT_GROUP);\n if (this._inputGroup) {\n this.listenInputValidation(this._inputGroup, Type.SUBSCRIBE);\n const input = this.element.getDescendantInstances('InputActionee', null, true)[0];\n if (input) input.isMuted = true;\n }\n }\n\n get label () {\n return 'lettre d\\'information et réseaux sociaux';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { FollowActionee };\n","const ID = 'follow';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const FooterSelector = {\n FOOTER: api.internals.ns.selector('footer'),\n FOOTER_LINKS: `${api.internals.ns.selector('footer')} a[href], ${api.internals.ns.selector('footer')} button`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass FooterActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'FooterActionee';\n }\n\n get label () {\n return 'pied de page';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { FooterActionee };\n","const ID = 'footer';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\n\nclass FooterLinkActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'FooterLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const label = this.getInteractionLabel();\n if (label) return label;\n\n return 'lien pied de page';\n }\n}\n\nexport { FooterLinkActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass HeaderActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'HeaderActionee';\n }\n\n get label () {\n return 'en-tête';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { HeaderActionee };\n","const ID = 'header';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\n\nclass HeaderModalButtonActionee extends ComponentActionee {\n constructor () {\n super(4);\n }\n\n static get instanceClassName () {\n return 'HeaderModalButtonActionee';\n }\n}\n\nexport { HeaderModalButtonActionee };\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport { HeaderModalButtonActionee } from './header-modal-button-actionee';\n\nclass HeaderModalActionee extends ComponentActionee {\n constructor () {\n super(0);\n }\n\n static get instanceClassName () {\n return 'HeaderModalActionee';\n }\n\n init () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) {\n this.setPriority(4);\n this.register(`[aria-controls=\"${this.id}\"]`, HeaderModalButtonActionee);\n }\n }\n}\n\nexport { HeaderModalActionee };\n","import api from '../../../../api.js';\n\nexport const HeaderSelector = {\n TOOLS_BUTTON: `${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('btns-group')} ${api.internals.ns.selector('btn')}`,\n MENU_BUTTON: `${api.internals.ns.selector('header__menu-links')} ${api.internals.ns.selector('btns-group')} ${api.internals.ns.selector('btn')}`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport api from '../../../../api';\n\nclass HeaderToolsButtonActionee extends ComponentActionee {\n constructor () {\n super(4);\n }\n\n static get instanceClassName () {\n return 'HeaderToolsButtonActionee';\n }\n\n init () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this._priority = -1;\n }\n}\n\nexport { HeaderToolsButtonActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport api from '../../../../api';\n\nclass HeaderMenuButtonActionee extends ComponentActionee {\n static get instanceClassName () {\n return 'HeaderMenuButtonActionee';\n }\n\n init () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.setPriority(4);\n }\n}\n\nexport { HeaderMenuButtonActionee };\n","import api from '../../../../api';\n\nexport const HighlightSelector = {\n HIGHLIGHT: api.internals.ns.selector('highlight')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass HighlightActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'HighlightActionee';\n }\n\n get label () {\n return 'mise en exergue';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { HighlightActionee };\n","const ID = 'highlight';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const LinkSelector = {\n LINK: api.internals.ns.selector('link')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass LinkActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'LinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n\n return 'lien';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { LinkActionee };\n","const ID = 'link';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const InputSelector = {\n INPUT: api.internals.ns.selector('input-group')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport api from '../../../../api.js';\nimport ID from './id';\n\nclass InputActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'InputActionee';\n }\n\n init () {\n this._input = this.querySelector(api.internals.ns.selector('input'));\n this._label = this.querySelector(api.internals.ns.selector('label'));\n this._inputWrap = this.querySelector(api.internals.ns.selector('input-wrap'));\n\n if (this._inputWrap) this.listenInputValidation(this._inputWrap);\n }\n\n get label () {\n if (this._label) {\n const text = this.getFirstText(this._label);\n if (text) return text;\n }\n\n return 'champ de saisie';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { InputActionee };\n","const ID = 'input';\n\nexport default ID;\n","import api from '../../../../../core/api.js';\n\nexport const ModalSelector = {\n TITLE: api.internals.ns.selector('modal__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { ModalSelector } from './modal-selector.js';\nimport ID from './id';\n\nclass ModalActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'ModalActionee';\n }\n\n init () {\n this.setDiscloseType();\n this.detectLevel();\n this.listenDisclose();\n }\n\n get label () {\n const title = this.node.querySelector(ModalSelector.TITLE);\n\n if (title) {\n const text = this.getFirstText(title);\n if (text) return text;\n }\n\n const heading = this.getHeadingLabel(2);\n if (heading) return heading;\n\n const instance = this.element.getInstance('Modal');\n if (instance) {\n const button = instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const text = this.getFirstText(button.node);\n if (text) return text;\n }\n }\n return 'modale';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ModalActionee };\n","const ID = 'modal';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\n\nclass NavigationActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'NavigationActionee';\n }\n\n get label () {\n return 'navigation';\n }\n}\n\nexport { NavigationActionee };\n","import api from '../../../../api';\n\nexport const NavigationSelector = {\n LINK: api.internals.ns.selector('nav__link'),\n BUTTON: api.internals.ns.selector('nav__btn')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass NavigationLinkActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'NavigationLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n\n return 'lien de navigation';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { NavigationLinkActionee };\n","const ID = 'navigation';\n\nexport default ID;\n","import api from '../../../../api';\nimport { ComponentActionee } from '../component-actionee';\nimport { NavigationSelector } from './navigation-selector';\n\nclass NavigationSectionActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'NavigationSectionActionee';\n }\n\n init () {\n this._wrapper = this.node.closest(api.navigation.NavigationSelector.ITEM);\n }\n\n get label () {\n if (this._wrapper) {\n const button = this._wrapper.querySelector(NavigationSelector.BUTTON);\n if (button) {\n const text = this.getFirstText(button);\n if (text) return text;\n }\n }\n\n const instance = this.element.getInstance('Collapse');\n if (instance) {\n const button = instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const text = this.getFirstText(button);\n if (text) return text;\n }\n }\n return 'section de navigation';\n }\n}\n\nexport { NavigationSectionActionee };\n","import api from '../../../../api.js';\n\nexport const PaginationSelector = {\n PAGINATION: api.internals.ns.selector('pagination'),\n LINK: api.internals.ns.selector('pagination__link'),\n NEXT_LINK: api.internals.ns.selector('pagination__link--next'),\n LAST_LINK: api.internals.ns.selector('pagination__link--last'),\n ANALYTICS_TOTAL: api.internals.ns.attr('analytics-page-total'),\n CURRENT: '[aria-current=\"page\"]'\n};\n","import api from '../../../../api';\nimport { ComponentActionee } from '../component-actionee';\nimport { PaginationSelector } from './pagination-selector';\nimport ID from './id';\n\nclass PaginationActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'PaginationActionee';\n }\n\n init () {\n this.setPagination();\n }\n\n get label () {\n return 'pagination';\n }\n\n get component () {\n return ID;\n }\n\n setPagination () {\n const currentLink = this.node.querySelector(PaginationSelector.CURRENT);\n if (!currentLink) return;\n const currentLabel = this.getFirstText(currentLink);\n if (!currentLabel) return;\n const current = this.getInt(currentLabel);\n if (isNaN(current)) return;\n api.analytics.page.current = current;\n\n const total = this.getTotalPage();\n if (isNaN(total)) return;\n api.analytics.page.total = total;\n }\n\n getTotalPage () {\n const attr = parseInt(this.node.getAttribute(PaginationSelector.ANALYTICS_TOTAL));\n if (!isNaN(attr)) return attr;\n const links = this.node.querySelectorAll(`${PaginationSelector.LINK}:not(${PaginationSelector.NEXT_LINK}):not(${PaginationSelector.LAST_LINK})`);\n if (!links) return null;\n const totalLabel = this.getFirstText(links[links.length - 1]);\n if (!totalLabel) return null;\n return this.getInt(totalLabel);\n }\n\n getInt (val) {\n const ints = val.match(/\\d+/);\n if (!ints || ints.length === 0) return null;\n return parseInt(ints[0]);\n }\n}\n\nexport { PaginationActionee };\n","const ID = 'pagination';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\n\nclass PaginationLinkActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'PaginationLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n return 'lien pagination';\n }\n\n get component () {\n return null;\n }\n}\n\nexport { PaginationLinkActionee };\n","import api from '../../../../api';\n\nexport const QuoteSelector = {\n QUOTE: api.internals.ns.selector('quote')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass QuoteActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'QuoteActionee';\n }\n\n get label () {\n const blockquote = this.node.querySelector('blockquote');\n if (blockquote) {\n const firstText = this.getFirstText(blockquote);\n if (firstText) {\n return firstText;\n }\n }\n return 'citation';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { QuoteActionee };\n","const ID = 'quote';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const RadioSelector = {\n INPUT: api.internals.ns.selector('radio-group [type=\"radio\"]')\n};\n","import api from '../../../../api';\n\nexport const FormSelector = {\n LABEL: api.internals.ns.selector('label'),\n FIELDSET: api.internals.ns.selector('fieldset'),\n LEGEND: api.internals.ns.selector('fieldset__legend')\n};\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport { FormSelector } from '../form/form-selector';\nimport ID from './id';\n\nclass RadioActionee extends ComponentActionee {\n constructor () {\n super(1);\n this._data = {};\n }\n\n static get instanceClassName () {\n return 'RadioActionee';\n }\n\n init () {\n this.setCheckType();\n this.listenCheckable();\n }\n\n get label () {\n const parts = [];\n const fieldset = this.node.closest(FormSelector.FIELDSET);\n if (fieldset) {\n const legend = fieldset.querySelector(FormSelector.LEGEND);\n if (legend) {\n const firstTextLegend = this.getFirstText(legend);\n if (firstTextLegend) parts.push(firstTextLegend);\n }\n }\n const label = this.node.parentNode.querySelector(api.internals.ns.selector('label'));\n if (label) {\n const firstTextLabel = this.getFirstText(label);\n if (firstTextLabel) parts.push(firstTextLabel);\n }\n return parts.join(' ');\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { RadioActionee };\n","const ID = 'radio';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const SearchSelector = {\n SEARCH_BAR: api.internals.ns.selector('search-bar')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { Type } from '../../../analytics/action/type';\nimport ID from './id';\n\nclass SearchActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'SearchActionee';\n }\n\n init () {\n this.listenInputValidation(this.node, Type.SEARCH, true);\n }\n\n get label () {\n return 'barre de recherche';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { SearchActionee };\n","const ID = 'search';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const SelectSelector = {\n SELECT: api.internals.ns.selector('select')\n};\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass SelectActionee extends ComponentActionee {\n constructor () {\n super(1);\n this._data = {};\n }\n\n static get instanceClassName () {\n return 'SelectActionee';\n }\n\n init () {\n this.setChangeType();\n this.listenChange();\n }\n\n setChangeValue (e) {\n if (!e.target || !e.target.selectedOptions) return;\n const value = Array.from(e.target.selectedOptions).map(option => option.text).join(' - ');\n if (value) this.value = value;\n }\n\n get label () {\n const label = this.node.parentNode.querySelector(api.internals.ns.selector('label'));\n if (label) {\n const firstText = this.getFirstText(label);\n if (firstText) return firstText;\n }\n\n return 'liste déroulante';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { SelectActionee };\n","const ID = 'select';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const ShareSelector = {\n SHARE: api.internals.ns.selector('share'),\n TITLE: api.internals.ns.selector('share__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\nimport { ShareSelector } from './share-selector';\n\nclass ShareActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'ShareActionee';\n }\n\n get label () {\n const title = this.querySelector(ShareSelector.TITLE);\n if (title) {\n const firstText = this.getFirstText(title);\n if (firstText) return firstText;\n }\n return 'boutons de partage';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ShareActionee };\n","const ID = 'share';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const SidemenuSelector = {\n SIDEMENU: api.internals.ns.selector('sidemenu'),\n ITEM: api.internals.ns.selector('sidemenu__item'),\n LINK: api.internals.ns.selector('sidemenu__link'),\n BUTTON: api.internals.ns.selector('sidemenu__btn'),\n TITLE: api.internals.ns.selector('sidemenu__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { SidemenuSelector } from './sidemenu-selector';\n\nclass SidemenuActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'SidemenuActionee';\n }\n\n get label () {\n const sidemenu = this.node.closest(SidemenuSelector.SIDEMENU);\n if (sidemenu) {\n const title = sidemenu.querySelector(SidemenuSelector.TITLE);\n if (title) {\n const firstText = this.getFirstText(title);\n if (firstText) return firstText;\n }\n }\n\n return 'menu Latéral';\n }\n}\n\nexport { SidemenuActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass SidemenuLinkActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'SidemenuLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n\n return 'lien menu latéral';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { SidemenuLinkActionee };\n","const ID = 'sidemenu';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport { SidemenuSelector } from './sidemenu-selector';\n\nclass SidemenuSectionActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'SidemenuSectionActionee';\n }\n\n init () {\n this._wrapper = this.node.closest(SidemenuSelector.ITEM);\n }\n\n get label () {\n if (this._wrapper) {\n const button = this._wrapper.querySelector(SidemenuSelector.BUTTON);\n if (button) {\n const firstText = this.getFirstText(button);\n if (firstText) return firstText;\n }\n }\n const instance = this.element.getInstance('Collapse');\n if (instance) {\n const button = instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const firstTextBtn = this.getFirstText(button);\n if (firstTextBtn) return firstTextBtn;\n }\n }\n return 'section menu latéral';\n }\n}\n\nexport { SidemenuSectionActionee };\n","import api from '../../../../api';\n\nexport const SummarySelector = {\n SUMMARY: api.internals.ns.selector('summary'),\n LINK: api.internals.ns.selector('summary__link'),\n TITLE: api.internals.ns.selector('summary__title'),\n ITEM: `${api.internals.ns.selector('summary')} li`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { SummarySelector } from './summary-selector';\n\nclass SummaryActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'SummaryActionee';\n }\n\n get label () {\n const title = this.node.querySelector(SummarySelector.TITLE);\n if (title) {\n const firstText = this.getFirstText(title);\n if (firstText) return firstText;\n }\n return 'sommaire';\n }\n}\n\nexport { SummaryActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass SummaryLinkActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'SummaryLinkActionee';\n }\n\n init () {\n this.detectInteractionType();\n this.listenActionClick();\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n return 'lien sommaire';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { SummaryLinkActionee };\n","const ID = 'summary';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport { SummarySelector } from './summary-selector';\n\nclass SummarySectionActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'SummarySectionActionee';\n }\n\n init () {\n this._link = this.querySelector(SummarySelector.LINK);\n }\n\n validate (target) {\n return this._link !== target;\n }\n\n get label () {\n if (!this._link) return null;\n const firstText = this.getFirstText(this._link);\n if (firstText) return firstText;\n return 'section sommaire';\n }\n}\n\nexport { SummarySectionActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass TabButtonActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TabButtonActionee';\n }\n\n init () {\n this.isMuted = true;\n }\n\n get label () {\n const text = this.getFirstText();\n if (text) return text;\n return 'bouton onglet';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TabButtonActionee };\n","const ID = 'tab';\n\nexport default ID;\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport { TabButtonActionee } from './tab-button-actionee';\nimport ID from './id';\n\nclass TabActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TabActionee';\n }\n\n init () {\n this.setDiscloseType();\n this.register(`[aria-controls=\"${this.id}\"]`, TabButtonActionee);\n this._instance = this.element.getInstance('TabPanel');\n this.listenDisclose();\n }\n\n get label () {\n const tabs = this.node.closest(api.tab.TabSelector.GROUP);\n if (tabs) {\n const tab = tabs.querySelector(`${api.tab.TabSelector.LIST} [aria-controls=\"${this.id}\"]${api.tab.TabSelector.TAB}`);\n if (tab) {\n const firstTextTab = this.getFirstText(tab);\n if (firstTextTab) return firstTextTab;\n }\n }\n\n const button = this._instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const firstTextBtn = this.getFirstText(button);\n if (firstTextBtn) return firstTextBtn;\n }\n return 'onglet';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TabActionee };\n","import api from '../../../../api';\n\nexport const TableSelector = {\n TABLE: api.internals.ns.selector('table')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass TableActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'TableActionee';\n }\n\n get label () {\n const caption = this.node.querySelector('caption');\n if (caption) {\n const firstText = this.getFirstText(caption);\n if (firstText) return firstText;\n }\n return 'tableau';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TableActionee };\n","const ID = 'table';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const TagSelector = {\n TAG: api.internals.ns.selector('tag'),\n PRESSABLE: '[aria-pressed]',\n DISMISSIBLE: `${api.internals.ns.selector('tag--dismiss', '')}`\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { TagSelector } from './tag-selector';\nimport ID from './id';\n\nclass TagActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TagActionee';\n }\n\n init () {\n switch (true) {\n case this.detectPressableType():\n this.listenPressable();\n break;\n\n case this.isInteractive && this.node.classList.contains(TagSelector.DISMISSIBLE):\n this.setDismissType();\n this.listenActionClick();\n break;\n\n case this.isInteractive:\n this.detectInteractionType();\n this.listenActionClick();\n break;\n }\n }\n\n get label () {\n const firstText = this.getFirstText();\n if (firstText) return firstText;\n\n return 'tag';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TagActionee };\n","const ID = 'tag';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const TileSelector = {\n TILE: api.internals.ns.selector('tile'),\n LINK: `${api.internals.ns.selector('tile__title')} a, ${api.internals.ns.selector('tile__title')} button`,\n TITLE: api.internals.ns.selector('tile__title')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport { TileSelector } from './tile-selector';\nimport ID from './id';\n\nclass TileActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'TileActionee';\n }\n\n init () {\n const link = this.node.querySelector(TileSelector.LINK);\n if (link) {\n this.link = link;\n this.detectInteractionType(link);\n this.listenActionClick(link);\n }\n }\n\n get label () {\n const tileTitle = this.node.querySelector(TileSelector.TITLE);\n if (tileTitle) return this.getFirstText(tileTitle);\n\n const heading = this.getHeadingLabel();\n if (heading) return heading;\n\n return 'tuile';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TileActionee };\n","const ID = 'tile';\n\nexport default ID;\n","import api from '../../../../api';\n\nexport const ToggleSelector = {\n INPUT: api.internals.ns.selector('toggle [type=\"checkbox\"]')\n};\n","import api from '../../../../api.js';\nimport { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass ToggleActionee extends ComponentActionee {\n constructor () {\n super(1);\n this._data = {};\n }\n\n static get instanceClassName () {\n return 'ToggleActionee';\n }\n\n init () {\n this.detectCheckableType();\n this.listenCheckable();\n }\n\n get label () {\n const label = this.node.parentNode.querySelector(api.internals.ns.selector('toggle__label'));\n if (label) {\n const firstText = this.getFirstText(label);\n if (firstText) return firstText;\n }\n\n return 'interrupteur';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { ToggleActionee };\n","const ID = 'toggle';\n\nexport default ID;\n","import api from '../../../../api';\n\nconst TRANSCRIPTION = api.internals.ns.selector('transcription');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const TranscriptionSelector = {\n TRANSCRIPTION: TRANSCRIPTION,\n COLLAPSE: `${TRANSCRIPTION} > ${COLLAPSE}, ${TRANSCRIPTION} > *:not(${TRANSCRIPTION}):not(${COLLAPSE}) > ${COLLAPSE}, ${TRANSCRIPTION} > *:not(${TRANSCRIPTION}):not(${COLLAPSE}) > *:not(${TRANSCRIPTION}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${TRANSCRIPTION} ${COLLAPSE}`,\n TITLE: `${TRANSCRIPTION}__title`\n};\n","const ID = 'transcription';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass TranscriptionButtonActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TranscriptionButtonActionee';\n }\n\n init () {\n this.isMuted = true;\n }\n\n get button () {\n return this.element.getInstance('CollapseButton');\n }\n\n get label () {\n const text = this.getFirstText();\n if (text) return text;\n return 'bouton transcription';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TranscriptionButtonActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport { TranscriptionSelector } from './transcription-selector';\nimport { TranscriptionButtonActionee } from './transcription-button-actionee';\nimport ID from './id';\n\nclass TranscriptionActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TranscriptionActionee';\n }\n\n init () {\n this.setDiscloseType();\n this.wrapper = this.node.closest(TranscriptionSelector.ACCORDION);\n this.detectLevel(this.wrapper);\n this.register(`[aria-controls=\"${this.id}\"]`, TranscriptionButtonActionee);\n this.listenDisclose();\n }\n\n get label () {\n if (this.wrapper) {\n const title = this.wrapper.querySelector(TranscriptionSelector.TITLE);\n if (title) {\n const firstTextTitle = this.getFirstText(title);\n if (firstTextTitle) return firstTextTitle;\n }\n }\n const instance = this.element.getInstance('Collapse');\n if (instance) {\n const button = instance.buttons.filter(button => button.isPrimary)[0];\n if (button) {\n const firstTextBtn = this.getFirstText(button);\n if (firstTextBtn) return firstTextBtn;\n }\n }\n return 'transcription';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TranscriptionActionee };\n","import api from '../../../../api';\n\nconst TRANSLATE = api.internals.ns.selector('translate');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const TranslateSelector = {\n BUTTON: `${TRANSLATE}__btn`,\n COLLAPSE: `${TRANSLATE} > ${COLLAPSE}, ${TRANSLATE} > *:not(${TRANSLATE}):not(${COLLAPSE}) > ${COLLAPSE}, ${TRANSLATE} > *:not(${TRANSLATE}):not(${COLLAPSE}) > *:not(${TRANSLATE}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${TRANSLATE} ${COLLAPSE}`\n};\n","const ID = 'translate';\n\nexport default ID;\n","import { ComponentActionee } from '../component-actionee';\nimport { TranslateSelector } from './translate-selector';\nimport ID from './id';\n\nclass TranslateActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TranslateActionee';\n }\n\n get label () {\n const button = this.node.querySelector(TranslateSelector.BUTTON);\n if (button) {\n const title = button.getAttribute('title');\n if (title) return title;\n }\n\n return 'sélecteur de langue';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TranslateActionee };\n","import { ComponentActionee } from '../component-actionee';\nimport ID from './id';\n\nclass TranslateButtonActionee extends ComponentActionee {\n constructor () {\n super(2);\n }\n\n static get instanceClassName () {\n return 'TranslateButtonActionee';\n }\n\n init () {\n this.isMuted = true;\n }\n\n get button () {\n return this.element.getInstance('CollapseButton');\n }\n\n get label () {\n const label = this.getInteractionLabel();\n if (label) return label;\n return 'bouton sélecteur de langue';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { TranslateButtonActionee };\n","import api from '../../../../api';\n\nexport const UploadSelector = {\n UPLOAD: api.internals.ns.selector('upload')\n};\n","import { ComponentActionee } from '../component-actionee';\nimport api from '../../../../api.js';\nimport ID from './id';\n\nclass UploadActionee extends ComponentActionee {\n constructor () {\n super(1);\n }\n\n static get instanceClassName () {\n return 'UploadActionee';\n }\n\n init () {\n this.setChangeType();\n this._label = this.node.parentNode.querySelector(api.internals.ns.selector('label'));\n this.listenChange();\n }\n\n setChangeValue (e) {\n if (!e.target || !e.target.files) return;\n const value = Array.from(e.target.files).map(file => /(?:\\.([^.]+))?$/.exec(file.name)[1]).filter((name, index, array) => array.indexOf(name) === index).join(' - ');\n if (value) this.value = value;\n }\n\n get label () {\n if (this._label) {\n const text = this.getFirstText(this._label);\n if (text) return text;\n }\n\n return 'ajout de fichier';\n }\n\n get component () {\n return ID;\n }\n}\n\nexport { UploadActionee };\n","const ID = 'upload';\n\nexport default ID;\n","import integrateAccordion from './accordion/integrate';\nimport integrateAlert from './alert/integrate';\nimport integrateBreadcrumb from './breadcrumb/integrate';\n// import integrateBadge from './badge/integrate';\nimport integrateButton from './button/integrate';\nimport integrateCallout from './callout/integrate';\nimport integrateCard from './card/integrate';\nimport integrateCheckbox from './checkbox/integrate';\nimport integrateConnect from './connect/integrate';\nimport integrateConsent from './consent/integrate';\n// import integrateContent from './content/integrate';\nimport integrateDownload from './download/integrate';\nimport integrateFollow from './follow/integrate';\nimport integrateFooter from './footer/integrate';\nimport integrateHeader from './header/integrate';\nimport integrateHighlight from './highlight/integrate';\nimport integrateLink from './link/integrate';\nimport integrateInput from './input/integrate';\nimport integrateModal from './modal/integrate';\nimport integrateNavigation from './navigation/integrate';\n// import integrateNotice from './notice/integrate';\nimport integratePagination from './pagination/integrate';\nimport integrateQuote from './quote/integrate';\nimport integrateRadio from './radio/integrate';\nimport integrateSearch from './search/integrate';\nimport integrateSelect from './select/integrate';\nimport integrateShare from './share/integrate';\nimport integrateSidemenu from './sidemenu/integrate';\n// import integrateStepper from './stepper/integrate';\nimport integrateSummary from './summary/integrate';\nimport integrateTab from './tab/integrate';\nimport integrateTable from './table/integrate';\nimport integrateTag from './tag/integrate';\nimport integrateTile from './tile/integrate';\nimport integrateToggle from './toggle/integrate';\n// import integrateTooltip from './tooltip/integrate';\nimport integrateTranscription from './transcription/integrate';\nimport integrateTranslate from './translate/integrate';\nimport integrateUpload from './upload/integrate';\n\nconst integrateComponents = () => {\n integrateAccordion();\n integrateBreadcrumb();\n integrateAlert();\n // integrateBadge();\n integrateButton();\n integrateCallout();\n integrateConnect();\n integrateConsent();\n // integrateContent();\n integrateCard();\n integrateInput();\n integrateCheckbox();\n integrateDownload();\n integrateFooter();\n integrateFollow();\n integrateHeader();\n integrateHighlight();\n integrateLink();\n integrateModal();\n integrateNavigation();\n // integrateNotice();\n integratePagination();\n integrateQuote();\n integrateRadio();\n integrateSearch();\n integrateSelect();\n integrateShare();\n integrateSidemenu();\n // integrateStepper();\n integrateSummary();\n integrateTab();\n integrateTable();\n integrateTag();\n integrateTile();\n integrateToggle();\n // integrateTooltip();\n integrateTranscription();\n integrateTranslate();\n integrateUpload();\n};\n\nexport default integrateComponents;\n","import api from '../../../../api';\nimport { AccordionActionee } from './accordion-actionee';\n\nconst integrateAccordion = () => {\n if (api.accordion) {\n api.internals.register(api.accordion.AccordionSelector.COLLAPSE, AccordionActionee);\n }\n};\n\nexport default integrateAccordion;\n","import api from '../../../../api';\nimport { BreadcrumbSelector } from './breadcrumb-selector';\nimport { BreadcrumbActionee } from './breadcrumb-actionee';\nimport { BreadcrumbLinkActionee } from './breadcrumb-link-actionee';\n\nconst integrateBreadcrumb = () => {\n if (api.breadcrumb) {\n api.internals.register(BreadcrumbSelector.COLLAPSE, BreadcrumbActionee);\n api.internals.register(BreadcrumbSelector.LINK, BreadcrumbLinkActionee);\n }\n};\n\nexport default integrateBreadcrumb;\n","import api from '../../../../api';\nimport { AlertSelector } from './alert-selector';\nimport { AlertActionee } from './alert-actionee';\n\nconst integrateAlert = () => {\n api.internals.register(AlertSelector.ALERT, AlertActionee);\n};\n\nexport default integrateAlert;\n","import api from '../../../../api';\nimport { ButtonSelector } from './button-selector';\nimport { ButtonActionee } from './button-actionee';\n\nconst integrateButton = () => {\n api.internals.register(ButtonSelector.BUTTON, ButtonActionee);\n};\n\nexport default integrateButton;\n","import api from '../../../../api';\nimport { CalloutSelector } from './callout-selector';\nimport { CalloutActionee } from './callout-actionee';\n\nconst integrateCallout = () => {\n api.internals.register(CalloutSelector.CALLOUT, CalloutActionee);\n};\n\nexport default integrateCallout;\n","import api from '../../../../api';\nimport { ConnectSelector } from './connect-selector';\nimport { ConnectActionee } from './connect-actionee';\nimport { ConnectLinkActionee } from './connect-link-actionee';\n\nconst integrateConnect = () => {\n api.internals.register(ConnectSelector.CONNECT, ConnectActionee);\n api.internals.register(ConnectSelector.LINK, ConnectLinkActionee);\n};\n\nexport default integrateConnect;\n","import api from '../../../../api';\nimport { ConsentSelector } from './consent-selector';\nimport { ConsentActionee } from './consent-actionee';\n\nconst integrateConsent = () => {\n api.internals.register(ConsentSelector.BANNER, ConsentActionee);\n};\n\nexport default integrateConsent;\n","import api from '../../../../api';\nimport { CardSelector } from './card-selector';\nimport { CardActionee } from './card-actionee';\n\nconst integrateCard = () => {\n api.internals.register(CardSelector.CARD, CardActionee);\n};\n\nexport default integrateCard;\n","import api from '../../../../api';\nimport { InputSelector } from './input-selector';\nimport { InputActionee } from './input-actionee';\n\nconst integrateInput = () => {\n api.internals.register(InputSelector.INPUT, InputActionee);\n};\n\nexport default integrateInput;\n","import api from '../../../../api';\nimport { CheckboxSelector } from './checkbox-selector';\nimport { CheckboxActionee } from './checkbox-actionee';\n\nconst integrateCheckbox = () => {\n api.internals.register(CheckboxSelector.INPUT, CheckboxActionee);\n};\n\nexport default integrateCheckbox;\n","import api from '../../../../api';\nimport { DownloadSelector } from './download-selector';\nimport { DownloadActionee } from './download-actionee';\n\nconst integrateDownload = () => {\n api.internals.register(DownloadSelector.LINK, DownloadActionee);\n};\n\nexport default integrateDownload;\n","import api from '../../../../api';\nimport { FooterSelector } from './footer-selector';\nimport { FooterActionee } from './footer-actionee';\nimport { FooterLinkActionee } from './footer-link-actionee';\n\nconst integrateFooter = () => {\n api.internals.register(FooterSelector.FOOTER, FooterActionee);\n api.internals.register(FooterSelector.FOOTER_LINKS, FooterLinkActionee);\n};\n\nexport default integrateFooter;\n","import api from '../../../../api';\nimport { FollowSelector } from './follow-selector';\nimport { FollowActionee } from './follow-actionee';\n\nconst integrateFollow = () => {\n api.internals.register(FollowSelector.FOLLOW, FollowActionee);\n};\n\nexport default integrateFollow;\n","import api from '../../../../api';\nimport { HeaderActionee } from './header-actionee';\nimport { HeaderModalActionee } from './header-modal-actionee';\nimport { HeaderSelector } from './header-selector';\nimport { HeaderToolsButtonActionee } from './header-tools-button-actionee';\nimport { HeaderMenuButtonActionee } from './header-menu-button-actionee';\n\nconst integrateHeader = () => {\n if (api.header) {\n api.internals.register(api.header.HeaderSelector.HEADER, HeaderActionee);\n api.internals.register(api.header.HeaderSelector.MODALS, HeaderModalActionee);\n api.internals.register(HeaderSelector.TOOLS_BUTTON, HeaderToolsButtonActionee);\n api.internals.register(HeaderSelector.MENU_BUTTON, HeaderMenuButtonActionee);\n }\n};\n\nexport default integrateHeader;\n","import api from '../../../../api';\nimport { HighlightSelector } from './highlight-selector';\nimport { HighlightActionee } from './highlight-actionee';\n\nconst integrateHighlight = () => {\n api.internals.register(HighlightSelector.HIGHLIGHT, HighlightActionee);\n};\n\nexport default integrateHighlight;\n","import api from '../../../../api';\nimport { LinkSelector } from './link-selector';\nimport { LinkActionee } from './link-actionee';\n\nconst integrateLink = () => {\n api.internals.register(LinkSelector.LINK, LinkActionee);\n};\n\nexport default integrateLink;\n","import api from '../../../../api';\nimport { ModalActionee } from './modal-actionee';\n\nconst integrateModal = () => {\n if (api.modal) {\n api.internals.register(api.modal.ModalSelector.MODAL, ModalActionee);\n }\n};\n\nexport default integrateModal;\n","import api from '../../../../api';\nimport { NavigationActionee } from './navigation-actionee';\nimport { NavigationSelector } from './navigation-selector';\nimport { NavigationLinkActionee } from './navigation-link-actionee';\nimport { NavigationSectionActionee } from './navigation-section-actionee';\n\nconst integrateNavigation = () => {\n if (api.navigation) {\n api.internals.register(api.navigation.NavigationSelector.NAVIGATION, NavigationActionee);\n api.internals.register(NavigationSelector.LINK, NavigationLinkActionee);\n api.internals.register(api.navigation.NavigationSelector.COLLAPSE, NavigationSectionActionee);\n }\n};\n\nexport default integrateNavigation;\n","import api from '../../../../api';\nimport { PaginationSelector } from './pagination-selector';\nimport { PaginationActionee } from './pagination-actionee';\nimport { PaginationLinkActionee } from './pagination-link-actionee';\n\nconst integratePagination = () => {\n api.internals.register(PaginationSelector.PAGINATION, PaginationActionee);\n api.internals.register(PaginationSelector.LINK, PaginationLinkActionee);\n};\n\nexport default integratePagination;\n","import api from '../../../../api';\nimport { QuoteSelector } from './quote-selector';\nimport { QuoteActionee } from './quote-actionee';\n\nconst integrateQuote = () => {\n api.internals.register(QuoteSelector.QUOTE, QuoteActionee);\n};\n\nexport default integrateQuote;\n","import api from '../../../../api';\nimport { RadioSelector } from './radio-selector';\nimport { RadioActionee } from './radio-actionee';\n\nconst integrateRadio = () => {\n api.internals.register(RadioSelector.INPUT, RadioActionee);\n};\n\nexport default integrateRadio;\n","import api from '../../../../api';\nimport { SearchSelector } from './search-selector';\nimport { SearchActionee } from './search-actionee';\n\nconst integrateSearch = () => {\n api.internals.register(SearchSelector.SEARCH_BAR, SearchActionee);\n};\n\nexport default integrateSearch;\n","import api from '../../../../api';\nimport { SelectSelector } from './select-selector';\nimport { SelectActionee } from './select-actionee';\n\nconst integrateSelect = () => {\n api.internals.register(SelectSelector.SELECT, SelectActionee);\n};\n\nexport default integrateSelect;\n","import api from '../../../../api';\nimport { ShareSelector } from './share-selector';\nimport { ShareActionee } from './share-actionee';\n\nconst integrateShare = () => {\n api.internals.register(ShareSelector.SHARE, ShareActionee);\n};\n\nexport default integrateShare;\n","import api from '../../../../api';\nimport { SidemenuSelector } from './sidemenu-selector';\nimport { SidemenuActionee } from './sidemenu-actionee';\nimport { SidemenuLinkActionee } from './sidemenu-link-actionee';\nimport { SidemenuSectionActionee } from './sidemenu-section-actionee';\n\nconst integrateSidemenu = () => {\n if (api.sidemenu) {\n api.internals.register(SidemenuSelector.SIDEMENU, SidemenuActionee);\n api.internals.register(SidemenuSelector.LINK, SidemenuLinkActionee);\n api.internals.register(api.sidemenu.SidemenuSelector.COLLAPSE, SidemenuSectionActionee);\n }\n};\n\nexport default integrateSidemenu;\n","import api from '../../../../api';\nimport { SummarySelector } from './summary-selector';\nimport { SummaryActionee } from './summary-actionee';\nimport { SummaryLinkActionee } from './summary-link-actionee';\nimport { SummarySectionActionee } from './summary-section-actionee';\n\nconst integrateSummary = () => {\n api.internals.register(SummarySelector.SUMMARY, SummaryActionee);\n api.internals.register(SummarySelector.LINK, SummaryLinkActionee);\n api.internals.register(SummarySelector.ITEM, SummarySectionActionee);\n};\n\nexport default integrateSummary;\n","import api from '../../../../api';\nimport { TabActionee } from './tab-actionee';\n\nconst integrateTab = () => {\n if (api.tab) {\n api.internals.register(api.tab.TabSelector.PANEL, TabActionee);\n }\n};\n\nexport default integrateTab;\n","import api from '../../../../api';\nimport { TableSelector } from './table-selector';\nimport { TableActionee } from './table-actionee';\n\nconst integrateTable = () => {\n api.internals.register(TableSelector.TABLE, TableActionee);\n};\n\nexport default integrateTable;\n","import api from '../../../../api';\nimport { TagSelector } from './tag-selector';\nimport { TagActionee } from './tag-actionee';\n\nconst integrateTag = () => {\n api.internals.register(TagSelector.TAG, TagActionee);\n};\n\nexport default integrateTag;\n","import api from '../../../../api';\nimport { TileSelector } from './tile-selector';\nimport { TileActionee } from './tile-actionee';\n\nconst integrateTile = () => {\n api.internals.register(TileSelector.TILE, TileActionee);\n};\n\nexport default integrateTile;\n","import api from '../../../../api';\nimport { ToggleSelector } from './toggle-selector';\nimport { ToggleActionee } from './toggle-actionee';\n\nconst integrateToggle = () => {\n api.internals.register(ToggleSelector.INPUT, ToggleActionee);\n};\n\nexport default integrateToggle;\n","import api from '../../../../api';\nimport { TranscriptionSelector } from './transcription-selector';\nimport { TranscriptionActionee } from './transcription-actionee';\n\nconst integrateTranscription = () => {\n api.internals.register(TranscriptionSelector.COLLAPSE, TranscriptionActionee);\n};\n\nexport default integrateTranscription;\n","import api from '../../../../api';\nimport { TranslateSelector } from './translate-selector';\nimport { TranslateActionee } from './translate-actionee';\nimport { TranslateButtonActionee } from './translate-button-actionee';\n\nconst integrateTranslate = () => {\n api.internals.register(TranslateSelector.COLLAPSE, TranslateActionee);\n api.internals.register(TranslateSelector.BUTTON, TranslateButtonActionee);\n};\n\nexport default integrateTranslate;\n","import api from '../../../../api';\nimport { UploadSelector } from './upload-selector';\nimport { UploadActionee } from './upload-actionee';\n\nconst integrateUpload = () => {\n api.internals.register(UploadSelector.UPLOAD, UploadActionee);\n};\n\nexport default integrateUpload;\n","// import './core/core';\nimport integrateAttributes from './attributes/attributes';\nimport integrateComponents from './component/components';\n\nconst integration = () => {\n integrateAttributes();\n integrateComponents();\n};\n\nexport default integration;\n","import api from '../../../api';\nimport Type from '../../analytics/action/type';\nimport { AttributeActionee } from './attribute-actionee';\n\nconst integrateAttributes = () => {\n Object.values(Type)\n .filter(type => type.attributed)\n .forEach(type => api.internals.register(api.internals.ns.attr.selector(`analytics-${type.id}`), AttributeActionee));\n};\n\nexport default integrateAttributes;\n","import api from './index.js';\nimport integration from './script/integration/integration';\n\napi.analytics.readiness.then(() => integration(), () => {});\n\nexport default api;\n"],"names":["const","api","window","patch","Collection","MANUAL","LOAD","FULL","HASH","key","DISABLED","TOGGLE","Opt","this","_configure","scope","isDisabled","toggle","bind","localStorage","getItem","enable","disable","removeItem","setItem","opt","PUSH","Init","domain","_domain","_isLoaded","_promise","Promise","resolve","reject","_resolve","_reject","id","_id","store","_store","configure","init","bit","i","length","charCodeAt","eah","push","args","inspector","warn","load","stamp","Date","offset","String","fromCharCode","_script","document","createElement","ea","async","addEventListener","loaded","error","src","node","getElementsByTagName","parentNode","insertBefore","State","TarteAuCitronIntegration","config","_config","_state","info","tarteaucitron","services","data","type","name","needConsent","cookies","uri","js","fallback","eulerian","job","requestAnimationFrame","__eaGenericCmpApi","integrate","update","cmpApi","_cmpApi","ConsentManagerPlatform","integrateTarteAuCitron","_tac","optin","layer","EA_push","PushType","COLLECTOR","ACTION","ACTION_PARAMETER","Renderer","_renderables","_rendering","render","add","renderable","indexOf","remove","index","splice","forEach","renderer","Queue","_startingActions","_endingActions","_handlingVisibilityChange","_handleVisibilityChange","_handlingEnd","_handleEnd","_isStarted","_isListening","reset","setCollector","collector","_collector","ending","_type","_count","_delay","_isRequested","_unlisten","start","collect","_request","appendStartingAction","action","isActionEnabled","isForced","some","queued","test","QueuedAction","log","appendEndingAction","_listen","removeEventListener","e","visibilityState","send","actionLayers","map","filter","end","slices","slice","flat","isCollecting","apply","let","_action","_data","queue","Debug","debugger","_oEa","isActive","_dbg","value","debug","Status","CONNECTED","isConnected","isDefault","ANONYMOUS","GUEST","Type","INDIVIDUAL","PROFESSIONNAL","normalize","text","char","RESTRICTED","code","toString","charCodeHex","join","replace","toLowerCase","validateString","allowNull","undefined","validateNumber","isNaN","Number","validateBoolean","validateLang","split","validateGeography","normaliseISODate","date","toISOString","User","clear","_isConnected","status","connect","uid","email","isNew","_uid","_email","_isNew","profile","language","stati","Object","values","_status","valid","_profile","_language","navigator","Environment","DEVELOPMENT","STAGE","PRODUCTION","Site","environment","entity","target","region","department","version","_api","_environment","_entity","documentElement","lang","_target","_region","_department","_version","Inventory","accordion","internals","ns","selector","alert","badge","breadcrumb","button","callout","card","checkbox","consent","content","download","follow","footer","header","highlight","input","link","modal","navigation","notice","pagination","quote","radio","search","select","share","sidemenu","stepper","summary","tab","table","tag","tile","tooltip","transcription","translate","upload","CollectionState","Page","path","referrer","title","author","_labels","labels","_tags","tags","_categories","categories","isError","template","group","segment","subtemplate","theme","subtheme","related","depth","current","total","_filters","filters","collecting","_path","location","_referrer","_title","_author","validateDate","_date","_name","_isError","_template","_segment","_group","_subtemplate","_theme","_subtheme","_related","_depth","_current","_total","components","keys","querySelector","label","category","Method","STANDARD","AUTOCOMPLETE","Search","engine","results","terms","method","_engine","_results","_terms","_category","methods","_method","Funnel","step","objective","_step","_objective","_error","ActionMode","IN","OUT","NONE","ActionStatus","getParametersLayer","entries","Action","_isMuted","_isForced","_parameters","_sentData","isMuted","isSingular","reference","_reference","parameters","mode","_mode","singularize","rewind","addParameter","removeParameter","_base","_getLayer","JSON","stringify","assign","includes","resume","Actions","_actions","getAction","hasAction","actions","instance","Location","onRouteChange","isListeningHash","_onRouteChange","_isListeningHash","_update","_pathname","pathname","_search","_hash","hash","_hasTitle","change","hasTitle","CollectorEvent","COLLECT","event","ActioneeEmission","REWIND","emission","Collector","collection","_collection","Modes","ANGULAR","REACT","VUE","_isActionEnabled","_user","user","_site","site","_page","page","_funnel","funnel","handleRouteChange","_handleRouteChange","_location","_routeChanged","CustomEvent","dispatchEvent","stage","root","descend","Analytics","_isReady","_readiness","configuration","analytics","promise","then","_build","_init","_start","reason","isReady","readiness","_cmp","cmp","isDebugging","sources","source","descriptors","reduce","getOwnPropertyDescriptor","getOwnPropertySymbols","sym","descriptor","enumerable","defineProperties","completeAssign","IMPRESSION","isBeginning","attributed","CLICK","INTERNAL","EXTERNAL","DOWNLOAD","BUTTON","DOUBLE_CLICK","OPEN","COMPLETE","FOCUS","ERROR","ADD","REMOVE","DISPLAY","CHANGE","PROGRESS","SHARE","PRESS","RELEASE","DISMISS","UPLOAD","CHECK","UNCHECK","SELECT","SUBSCRIBE","DISCLOSE","SEARCH","SHOW","HIDE","AUTOPLAY","PLAY","PAUSE","END","NODE_POSITION","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINED_BY","Heading","heading","_label","textContent","trim","_level","tagName","charAt","level","Member","_node","_component","_isValid","analyse","_parseHeadings","Array","from","v","_headings","querySelectorAll","compareDocumentPosition","reverse","_getComponent","element","actionee","isActionee","sort","a","b","priority","validate","top","hx","closest","component","_getHeading","unshift","isValid","Hierarchy","_process","member","_members","contains","_localComponent","_globalComponent","localComponent","globalComponent","ActionElement","isRating","_isRating","_hasBegun","_hierarchy","begin","prototypeAccessors","act","dispose","ActionAttributes","RATING","attr","Actionee","super","_priority","staticAccessors","instanceClassName","proxy","members","proxyAccessors","property","registration","_sort","_actionElement","getAttribute","hasAttribute","addDescent","actionees","instances","setPriority","isInteractive","detectInteractionType","href","isDownload","hostname","setClickType","listenActionClick","_clickTarget","_handlingClick","capture","listenClick","handleClick","setImpressionType","component_value","getFirstText","childNodes","nodeType","TEXT_NODE","cropText","substring","getInteractionLabel","img","alt","getHeadingLabel","headings","detectLevel","levels","Math","min","actionElement","_value","core","Instance","AttributeActionee","_attribute","pop","listen","handleEvent","handleChange","change_value","ButtonEmission","ComponentActionee","setDiscloseType","listenDisclose","DisclosureEvent","_handleDisclose","setChangeType","listenChange","_handleChange","setChangeValue","listenInputValidation","isSendingInputValue","_isSendingInputValue","addAscent","_actValidatedInput","getDescendantInstances","_validatedInput","_handlingInputValidation","_handleInputValidation","keyCode","_isActingValidatedInput","request","_actedValidatedInput","setCheckType","detectCheckableType","isChecked","checked","listenCheckable","_handleCheckable","detectPressableType","isPressable","isPressed","listenPressable","_handlePressable","setDismissType","AccordionSelector","ACCORDION","TITLE","ID","AccordionButtonActionee","getInstance","firstText","AccordionActionee","wrapper","register","buttons","isPrimary","AlertSelector","ALERT","AlertActionee","alertTitle","BreadcrumbSelector","LINK","COLLAPSE","BreadcrumbActionee","BreadcrumbLinkActionee","ButtonSelector","ButtonActionee","ascend","CalloutSelector","CALLOUT","CalloutActionee","calloutTitle","CardSelector","CARD","CardActionee","cardTitle","CheckboxSelector","INPUT","CheckboxActionee","ConnectSelector","CONNECT","ConnectActionee","classList","ConnectLinkActionee","ConsentSelector","BANNER","ConsentActionee","DownloadSelector","DownloadActionee","FollowSelector","FOLLOW","NEWSLETTER_INPUT_GROUP","FollowActionee","_inputGroup","FooterSelector","FOOTER","FOOTER_LINKS","FooterActionee","FooterLinkActionee","HeaderActionee","HeaderModalButtonActionee","HeaderModalActionee","isBreakpoint","Breakpoints","LG","HeaderSelector","TOOLS_BUTTON","MENU_BUTTON","HeaderToolsButtonActionee","HeaderMenuButtonActionee","HighlightSelector","HIGHLIGHT","HighlightActionee","LinkSelector","LinkActionee","InputSelector","InputActionee","_input","_inputWrap","ModalSelector","ModalActionee","NavigationActionee","NavigationSelector","NavigationLinkActionee","NavigationSectionActionee","_wrapper","ITEM","PaginationSelector","PAGINATION","NEXT_LINK","LAST_LINK","ANALYTICS_TOTAL","CURRENT","PaginationActionee","setPagination","currentLink","currentLabel","getInt","getTotalPage","parseInt","links","totalLabel","val","ints","match","PaginationLinkActionee","QuoteSelector","QUOTE","QuoteActionee","blockquote","RadioSelector","FormSelector","LABEL","FIELDSET","LEGEND","RadioActionee","parts","fieldset","legend","firstTextLegend","firstTextLabel","SearchSelector","SEARCH_BAR","SearchActionee","SelectSelector","SelectActionee","selectedOptions","option","ShareSelector","ShareActionee","SidemenuSelector","SIDEMENU","SidemenuActionee","SidemenuLinkActionee","SidemenuSectionActionee","firstTextBtn","SummarySelector","SUMMARY","SummaryActionee","SummaryLinkActionee","SummarySectionActionee","_link","TabButtonActionee","TabActionee","_instance","tabs","TabSelector","GROUP","firstTextTab","TableSelector","TABLE","TableActionee","caption","TagSelector","TAG","PRESSABLE","DISMISSIBLE","TagActionee","TileSelector","TILE","TileActionee","tileTitle","ToggleSelector","ToggleActionee","TRANSCRIPTION","TranscriptionSelector","COLLAPSE_LEGACY","TranscriptionButtonActionee","TranscriptionActionee","firstTextTitle","TRANSLATE","TranslateSelector","TranslateActionee","TranslateButtonActionee","UploadSelector","UploadActionee","files","file","exec","array","integrateComponents","HEADER","MODALS","MODAL","NAVIGATION","PANEL","integration"],"mappings":"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"}