{"version":3,"file":"analytics.module.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/attributes/attributes.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/accordion/integrate.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/alert/integrate.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/breadcrumb/integrate.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/button/integrate.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/callout/integrate.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/card/integrate.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/checkbox/integrate.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/connect/integrate.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/consent/integrate.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/download/integrate.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/follow/integrate.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/header/integrate.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/highlight/integrate.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/link/integrate.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/input/integrate.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/navigation/integrate.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/pagination/integrate.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/quote/integrate.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/radio/integrate.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/search/integrate.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/select/integrate.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/share/integrate.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/sidemenu/integrate.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/tab/integrate.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/table/integrate.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/tag/integrate.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/tile/integrate.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/toggle/integrate.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/transcription/integrate.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/translate/integrate.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/upload/integrate.js","../../src/analytics/script/integration/component/components.js","../../src/analytics/script/integration/component/footer/integrate.js","../../src/analytics/script/integration/component/modal/integrate.js","../../src/analytics/script/integration/component/summary/integrate.js","../../src/analytics/script/integration/integration.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';\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 '../../../../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';\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';\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';\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';\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';\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.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';\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';\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';\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';\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';\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';\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';\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.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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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 '../../../../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 '../../../../../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';\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.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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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';\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 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 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 { 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 { 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 { 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 './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 './index.js';\nimport integration from './script/integration/integration';\n\napi.analytics.readiness.then(() => integration(), () => {});\n\nexport default api;\n"],"names":["api","window","patch","Collection","MANUAL","LOAD","FULL","HASH","key","DISABLED","TOGGLE","opt","constructor","this","_configure","scope","isDisabled","toggle","bind","localStorage","getItem","enable","disable","removeItem","setItem","PUSH","Init","domain","_domain","_isLoaded","_promise","Promise","resolve","reject","_resolve","_reject","id","_id","store","_store","configure","init","bit","i","length","charCodeAt","eah","args","push","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","requestAnimationFrame","data","type","name","needConsent","cookies","uri","js","fallback","eulerian","job","__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","QueuedAction","action","_action","_data","test","start","end","queue","_startingActions","_endingActions","_handlingVisibilityChange","_handleVisibilityChange","_handlingEnd","_handleEnd","_isStarted","_isListening","reset","setCollector","collector","_collector","ending","_type","_count","_delay","_isRequested","_unlisten","collect","_request","appendStartingAction","isActionEnabled","isForced","some","queued","log","appendEndingAction","_listen","removeEventListener","e","visibilityState","send","actionLayers","map","filter","slices","slice","flat","isCollecting","apply","debug","debugger","_oEa","isActive","_dbg","value","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","pathname","_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","_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","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","outerHTML","begin","act","dispose","ActionAttributes","RATING","attr","Actionee","core","Instance","super","_priority","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","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","LIST","TAB","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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"}