{"version":3,"file":"range.nomodule.min.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/range/script/range/range-selector.js","../../../src/component/range/script/range/range-emission.js","../../../src/component/range/script/range/range-model.js","../../../src/component/range/script/range/range.js","../../../src/component/range/script/range/range-constraints.js","../../../src/component/range/script/range/range-input.js","../../../src/component/range/script/range/range-input2.js","../../../src/component/range/script/range/range-output.js","../../../src/component/range/script/range/range-limit.js","../../../src/component/range/index.js","../../../src/component/range/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","import api from '../../api.js';\n\nexport const RangeSelector = {\n RANGE: api.internals.ns.selector('range'),\n RANGE_SM: api.internals.ns.selector('range--sm'),\n RANGE_STEP: api.internals.ns.selector('range--step'),\n RANGE_DOUBLE: api.internals.ns.selector('range--double'),\n RANGE_DOUBLE_STEP: api.internals.ns.selector('range--double') + api.internals.ns.selector('range--step'),\n RANGE_INPUT: api.internals.ns.selector('range input[type=range]:nth-of-type(1)'),\n RANGE_INPUT2: `${api.internals.ns.selector('range--double')} input[type=range]:nth-of-type(2)`,\n RANGE_OUTPUT: api.internals.ns.selector('range__output'),\n RANGE_MIN: api.internals.ns.selector('range__min'),\n RANGE_MAX: api.internals.ns.selector('range__max'),\n RANGE_PREFIX: api.internals.ns.attr('prefix'),\n RANGE_SUFFIX: api.internals.ns.attr('suffix')\n};\n","import api from '../../api.js';\n\nexport const RangeEmission = {\n VALUE: api.internals.ns.emission('range', 'value'),\n VALUE2: api.internals.ns.emission('range', 'value2'),\n OUTPUT: api.internals.ns.emission('range', 'output'),\n CONSTRAINTS: api.internals.ns.emission('range', 'constraints'),\n MIN: api.internals.ns.emission('range', 'min'),\n MAX: api.internals.ns.emission('range', 'max'),\n STEP: api.internals.ns.emission('range', 'step'),\n PREFIX: api.internals.ns.emission('range', 'prefix'),\n SUFFIX: api.internals.ns.emission('range', 'suffix'),\n DISABLED: api.internals.ns.emission('range', 'disabled'),\n ENABLE_POINTER: api.internals.ns.emission('range', 'enable_pointer')\n};\n","class RangeModel {\n constructor () {\n this._width = 0;\n this._min = 0;\n this._max = 0;\n this._value = 0;\n this._thumbSize = 24;\n this._innerWidth = 0;\n this._prefix = '';\n this._suffix = '';\n this._background = {};\n }\n\n configure (model) {\n if (!model) return;\n this._prefix = model._prefix;\n this._suffix = model._suffix;\n this._width = model.width;\n this.setConstraints(model._constraints);\n this.value = model.value;\n this.update();\n }\n\n setPrefix (value) {\n this._prefix = value !== null ? value : '';\n }\n\n setSuffix (value) {\n this._suffix = value !== null ? value : '';\n }\n\n _decorate (value) {\n return `${this._prefix}${value}${this._suffix}`;\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get isSm () {\n return this._isSm;\n }\n\n set isSm (value) {\n if (this._isSm === value) return;\n this._isSm = value;\n this.setThumbSize(value ? 16 : 24);\n this.update();\n }\n\n setThumbSize (value, mult = 1) {\n this._thumbSize = value;\n this._innerPadding = value * mult;\n }\n\n get textValue () {\n return this._decorate(this._value);\n }\n\n get value () {\n return this._value;\n }\n\n set value (value) {\n this._value = value;\n }\n\n get outputX () {\n return this._outputX;\n }\n\n setConstraints (constraints) {\n this._constraints = constraints;\n this._min = constraints.min;\n this._max = constraints.max;\n this._step = constraints.step;\n this._rangeWidth = constraints.rangeWidth;\n }\n\n get min () {\n return this._min;\n }\n\n get textMin () {\n return this._decorate(this._min);\n }\n\n get max () {\n return this._max;\n }\n\n get textMax () {\n return this._decorate(this._max);\n }\n\n get step () {\n return this._step;\n }\n\n get output () {\n return {\n text: this.textValue,\n transform: `translateX(${this._translateX}px) translateX(-${this._centerPercent}%)`\n };\n }\n\n _getRatio (value) {\n return (value - this._min) / this._rangeWidth;\n }\n\n get progress () {\n return this._progress;\n }\n\n update () {\n this._update();\n }\n\n _update () {\n this._innerWidth = this._width - this._innerPadding;\n const ratio = this._getRatio(this._value);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n this._progress = {\n right: `${(this._innerWidth * ratio + this._innerPadding * 0.5).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelStep extends RangeModel {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n while (this._stepWidth < 4) this._stepWidth *= 2;\n }\n}\n\nclass RangeModelDouble extends RangeModel {\n get value2 () {\n return this._value;\n }\n\n set value2 (value) {\n if (this._value2 === value) return;\n this._value2 = value;\n this.update();\n }\n\n get textValue () {\n return `${this._decorate(this._value)} - ${this._decorate(this._value2)}`;\n }\n\n setThumbSize (value) {\n super.setThumbSize(value, 2);\n }\n\n _update () {\n super._update();\n const ratio = this._getRatio((this._value + this._value2) * 0.5);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n const ratio1 = this._getRatio(this._value);\n const ratio2 = this._getRatio(this._value2);\n this._progress = {\n left: `${(this._innerWidth * ratio1 + this._innerPadding * 0.25).toFixed(2)}px`,\n right: `${(this._innerWidth * ratio2 + this._innerPadding * 0.75).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelDoubleStep extends RangeModelDouble {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n if (this._stepWidth < 4) this._stepWidth *= Math.ceil(4 / this._stepWidth);\n }\n}\n\nexport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\nimport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep } from './range-model';\n\nconst RangeTypes = {\n STEP: 'step',\n DOUBLE: 'double',\n DOUBLE_STEP: 'double-step',\n DEFAULT: 'default'\n};\n\nclass Range extends api.core.Instance {\n static get instanceClassName () {\n return 'Range';\n }\n\n init () {\n this._retrieveType();\n this._retrieveSize();\n if (this.isLegacy) {\n this.isResizing = true;\n this.isMouseMoving = true;\n } else {\n this._observer = new ResizeObserver(this.resize.bind(this));\n this._observer.observe(this.node);\n }\n\n this.addAscent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addAscent(RangeEmission.VALUE, this.setValue.bind(this));\n this.addAscent(RangeEmission.VALUE2, this.setValue2.bind(this));\n if (this.getAttribute(RangeSelector.RANGE_PREFIX)) this.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n if (this.getAttribute(RangeSelector.RANGE_SUFFIX)) this.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n }\n\n _retrieveType () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_DOUBLE_STEP):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_DOUBLE):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_STEP):\n this.type = RangeTypes.STEP;\n break;\n\n default:\n this.type = RangeTypes.DEFAULT;\n }\n }\n\n set type (value) {\n if (this._type === value) return;\n this._type = value;\n\n const oldModel = this._model;\n\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n this._model = new RangeModelDoubleStep();\n break;\n\n case RangeTypes.DOUBLE:\n this._model = new RangeModelDouble();\n break;\n\n case RangeTypes.STEP:\n this._model = new RangeModelStep();\n break;\n\n default:\n this._model = new RangeModel();\n }\n\n this._model.configure(oldModel);\n }\n\n get type () {\n return this._type;\n }\n\n _retrieveSize () {\n this._model.isSm = this.matches(RangeSelector.RANGE_SM);\n }\n\n resize () {\n this._retrieveWidth();\n this.update();\n }\n\n _retrieveWidth () {\n this._model.width = this.getRect().width;\n }\n\n setValue (value) {\n this._model.value = value;\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n case RangeTypes.DOUBLE:\n this.descend(RangeEmission.VALUE, value);\n break;\n }\n this.update();\n }\n\n setValue2 (value) {\n this._model.value2 = value;\n this.descend(RangeEmission.VALUE2, value);\n this.update();\n }\n\n setConstraints (constraints) {\n this._model.setConstraints(constraints);\n this.update();\n this.descend(RangeEmission.CONSTRAINTS, constraints);\n }\n\n setPrefix (value) {\n this._model.setPrefix(value);\n this.update();\n }\n\n setSuffix (value) {\n this._model.setSuffix(value);\n this.update();\n }\n\n mutate (attributesNames) {\n switch (true) {\n case attributesNames.includes('class'):\n this._retrieveType();\n this._retrieveSize();\n break;\n\n case attributesNames.includes(RangeSelector.RANGE_PREFIX):\n case attributesNames.includes(RangeSelector.RANGE_SUFFIX):\n this._model.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n this._model.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n break;\n }\n }\n\n update () {\n this._model.update();\n this.descend(RangeEmission.OUTPUT, this._model.output);\n this.descend(RangeEmission.MIN, this._model.textMin);\n this.descend(RangeEmission.MAX, this._model.textMax);\n const progress = this._model.progress;\n if (progress.left) {\n this.style.setProperty('--progress-left', progress.left);\n } else {\n this.style.removeProperty('--progress-left');\n }\n if (progress.right) {\n this.style.setProperty('--progress-right', progress.right);\n if (this.isLegacy) {\n if (progress.left) {\n this.style.setProperty('background-position-x', progress.left);\n this.style.setProperty('background-size', `${parseFloat(progress.right) - parseFloat(progress.left)}px ${this._model.isSm ? '8px' : '12px'}`);\n }\n }\n } else {\n this.style.removeProperty('--progress-right');\n if (this.isLegacy) {\n this.style.removeProperty('background-size');\n this.style.removeProperty('background-position-x');\n }\n }\n if (this._model.stepWidth) this.style.setProperty('--step-width', this._model.stepWidth);\n else this.style.removeProperty('--step-width');\n }\n\n mouseMove (point) {\n if (this._type !== RangeTypes.DOUBLE && this._type !== RangeTypes.DOUBLE_STEP) return;\n const x = point.x - this.getRect().left;\n this.descend(RangeEmission.ENABLE_POINTER, (parseFloat(this._model.progress.right) - parseFloat(this._model.progress.left)) / 2 + parseFloat(this._model.progress.left) < x ? 2 : 1);\n }\n\n dispose () {\n this._observer.disconnect();\n }\n}\n\nexport { Range };\n","class RangeConstraints {\n constructor (node) {\n this._min = isNaN(node.min) ? 0 : node.min;\n this._max = isNaN(node.max) ? 100 : node.max;\n this._step = isNaN(node.step) ? 1 : node.step;\n this._rangeWidth = this._max - this._min;\n }\n\n get min () {\n return this._min;\n }\n\n get max () {\n return this._max;\n }\n\n get step () {\n return this._step;\n }\n\n get rangeWidth () {\n return this._rangeWidth;\n }\n\n test (min, max, step) {\n return this._min === min && this._max === max && this._step === step;\n }\n}\n\nexport { RangeConstraints };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeConstraints } from './range-constraints';\n\nclass RangeInput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeInput';\n }\n\n init () {\n this._init();\n this.node.value = this.getAttribute('value');\n this._changing = this.change.bind(this);\n this._listenerType = this.isLegacy ? 'change' : 'input';\n this.listen(this._listenerType, this._changing);\n if (this.isLegacy) this.addDescent(RangeEmission.ENABLE_POINTER, this._enablePointer.bind(this));\n this.change();\n }\n\n _init () {\n this._pointerId = 1;\n this.request(() => {\n if (!this.hasAttribute('min')) this.setAttribute('min', 0);\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.ascend(RangeEmission.DISABLED, this.node.disabled);\n });\n\n this.addDescent(RangeEmission.VALUE2, this.setValue.bind(this));\n }\n\n _enablePointer (pointerId) {\n const isEnabled = pointerId === this._pointerId;\n if (this._isPointerEnabled === isEnabled) return;\n this._isPointerEnabled = isEnabled;\n if (isEnabled) this.style.removeProperty('pointer-events');\n else this.style.setProperty('pointer-events', 'none');\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) > value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE, parseFloat(this.node.value));\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes('disabled')) this.ascend(RangeEmission.DISABLED, this.node.disabled);\n if (attributesNames.includes('min') || attributesNames.includes('max') || attributesNames.includes('step')) {\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.change();\n }\n }\n\n dispose () {\n if (this._listenerType) this.unlisten(this._listenerType, this._changing);\n }\n}\n\nexport { RangeInput };\n","import { RangeInput } from './range-input.js';\nimport { RangeEmission } from './range-emission';\n\nclass RangeInput2 extends RangeInput {\n static get instanceClassName () {\n return 'RangeInput2';\n }\n\n _init () {\n this._pointerId = 2;\n this.addDescent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addDescent(RangeEmission.VALUE, this.setValue.bind(this));\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) < value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE2, parseFloat(this.node.value));\n }\n\n setConstraints (constraints) {\n this.node.min = constraints.min;\n this.node.max = constraints.max;\n this.node.step = constraints.step;\n this.change();\n }\n\n mutate (attributesNames) {}\n}\n\nexport { RangeInput2 };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\n\nclass RangeOutput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeOutput';\n }\n\n init () {\n this.addDescent(RangeEmission.OUTPUT, this.change.bind(this));\n }\n\n change (data) {\n this.node.innerText = data.text;\n this.node.style.transform = data.transform;\n }\n}\n\nexport { RangeOutput };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\n\nclass RangeLimit extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeLimit';\n }\n\n init () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_MIN):\n this.addDescent(RangeEmission.MIN, this.change.bind(this));\n break;\n\n case this.matches(RangeSelector.RANGE_MAX):\n this.addDescent(RangeEmission.MAX, this.change.bind(this));\n break;\n }\n }\n\n change (text) {\n this.node.innerText = text;\n }\n}\n\nexport { RangeLimit };\n","import api from './api.js';\nimport { RangeSelector } from './script/range/range-selector.js';\nimport { RangeEmission } from './script/range/range-emission.js';\nimport { Range } from './script/range/range.js';\nimport { RangeInput } from './script/range/range-input.js';\nimport { RangeInput2 } from './script/range/range-input2.js';\nimport { RangeOutput } from './script/range/range-output.js';\nimport { RangeLimit } from './script/range/range-limit.js';\n\napi.range = {\n Range: Range,\n RangeInput: RangeInput,\n RangeInput2: RangeInput2,\n RangeOutput: RangeOutput,\n RangeLimit: RangeLimit,\n RangeEmission: RangeEmission,\n RangeSelector: RangeSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.range.RangeSelector.RANGE, api.range.Range);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT, api.range.RangeInput);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT2, api.range.RangeInput2);\napi.internals.register(api.range.RangeSelector.RANGE_OUTPUT, api.range.RangeOutput);\napi.internals.register(api.range.RangeSelector.RANGE_MIN, api.range.RangeLimit);\napi.internals.register(api.range.RangeSelector.RANGE_MAX, api.range.RangeLimit);\n\nexport default api;\n"],"names":["const","api","window","RangeSelector","RANGE","internals","ns","selector","RANGE_SM","RANGE_STEP","RANGE_DOUBLE","RANGE_DOUBLE_STEP","RANGE_INPUT","RANGE_INPUT2","RANGE_OUTPUT","RANGE_MIN","RANGE_MAX","RANGE_PREFIX","attr","RANGE_SUFFIX","RangeEmission","VALUE","emission","VALUE2","OUTPUT","CONSTRAINTS","MIN","MAX","STEP","PREFIX","SUFFIX","DISABLED","ENABLE_POINTER","RangeModel","this","_width","_min","_max","_value","_thumbSize","_innerWidth","_prefix","_suffix","_background","configure","model","width","setConstraints","_constraints","value","update","setPrefix","setSuffix","_decorate","isSm","_isSm","setThumbSize","mult","_innerPadding","textValue","outputX","_outputX","constraints","min","max","_step","step","_rangeWidth","rangeWidth","textMin","textMax","output","text","transform","_getRatio","progress","_progress","_update","ratio","_translateX","_centerPercent","right","toFixed","RangeModelStep","prototypeAccessors$1","stepWidth","_stepWidth","super","steps","RangeModelDouble","prototypeAccessors$2","value2","_value2","ratio1","ratio2","left","RangeModelDoubleStep","prototypeAccessors$3","Math","ceil","RangeTypes","Range","staticAccessors","instanceClassName","init","_retrieveType","_retrieveSize","isLegacy","isResizing","isMouseMoving","_observer","ResizeObserver","resize","bind","observe","node","addAscent","setValue","setValue2","getAttribute","matches","type","prototypeAccessors","_type","oldModel","_model","_retrieveWidth","getRect","descend","mutate","attributesNames","includes","style","setProperty","removeProperty","parseFloat","mouseMove","point","x","dispose","disconnect","core","Instance","RangeConstraints","isNaN","test","RangeInput","_init","_changing","change","_listenerType","listen","addDescent","_enablePointer","_pointerId","request","hasAttribute","setAttribute","ascend","disabled","pointerId","isEnabled","_isPointerEnabled","unlisten","RangeInput2","RangeOutput","data","innerText","RangeLimit","range","register"],"mappings":"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"}