1 line
No EOL
234 KiB
Text
1 line
No EOL
234 KiB
Text
{"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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"} |