@ds-mo/ui 15.6.0 → 15.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +327 -5
- package/dist/angular/ds-navigation-tab-group.d.ts +15 -0
- package/dist/angular/ds-navigation-tab-group.js +42 -0
- package/dist/angular/ds-select-toggle.d.ts +15 -0
- package/dist/angular/ds-select-toggle.js +42 -0
- package/dist/angular/ds-table.d.ts +1 -1
- package/dist/angular/ds-table.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -0
- package/dist/angular/proxies.d.ts +2 -0
- package/dist/angular/proxies.js +2 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.js +1 -1
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox-group.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-data-customize.js +1 -1
- package/dist/components/ds-data-filter.js +1 -1
- package/dist/components/ds-data-group.js +1 -1
- package/dist/components/ds-data-preferences.js +1 -1
- package/dist/components/ds-data-saved-views.js +1 -1
- package/dist/components/ds-data-search.js +1 -1
- package/dist/components/ds-data-sort.js +1 -1
- package/dist/components/ds-data-toolbar.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-inline-banner-settings.js +1 -1
- package/dist/components/ds-input-date.js +1 -1
- package/dist/components/ds-input-time.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-map-cluster-marker.js +1 -1
- package/dist/components/ds-map-entity-marker.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-navigation-tab-group.d.ts +11 -0
- package/dist/components/ds-navigation-tab-group.js +2 -0
- package/dist/components/ds-navigation-tab-group.js.map +1 -0
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio-tile.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-select-toggle.d.ts +11 -0
- package/dist/components/ds-select-toggle.js +2 -0
- package/dist/components/ds-select-toggle.js.map +1 -0
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-setting-row-checkbox.js +1 -1
- package/dist/components/ds-setting-row-radio.js +1 -1
- package/dist/components/ds-setting-row-radio.js.map +1 -1
- package/dist/components/ds-setting-row-toggle.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-time-picker.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p--pJyciTI.js → p--_bPiNCd.js} +2 -2
- package/dist/components/{p-UJMEz8_O.js → p-3SCy1PHa.js} +2 -2
- package/dist/components/{p-7MwoWtTJ.js → p-4sBUSsqs.js} +2 -2
- package/dist/components/p-4sBUSsqs.js.map +1 -0
- package/dist/components/{p-kwS-vkau.js → p-5aZVNYQz.js} +2 -2
- package/dist/components/{p-DKGW3gRa.js → p-AGqUGzNZ.js} +2 -2
- package/dist/components/{p-DbW8S5qe.js → p-BJf49edB.js} +2 -2
- package/dist/components/{p-BNarCFJZ.js → p-BKyE025p.js} +2 -2
- package/dist/components/{p-S1Ct3FJV.js → p-BNN9KkXe.js} +2 -2
- package/dist/components/p-BPDo1eQV.js +2 -0
- package/dist/components/{p-xMBaOeKa.js.map → p-BPDo1eQV.js.map} +1 -1
- package/dist/components/{p-CwdRaJER.js → p-BWJb2rih.js} +2 -2
- package/dist/components/{p-D8OWhnID.js → p-BbvAWFJA.js} +2 -2
- package/dist/components/{p-HfZ1gI2q.js → p-Bdp2V6-c.js} +2 -2
- package/dist/components/{p-CIMyD_6H.js → p-BjBFJ2dd.js} +2 -2
- package/dist/components/{p-BmIllmq2.js → p-BwNW5nqj.js} +2 -2
- package/dist/components/p-C0L-VnSr.js +2 -0
- package/dist/components/{p-CElsKlxj.js.map → p-C0L-VnSr.js.map} +1 -1
- package/dist/components/p-C2e7BkNn.js +2 -0
- package/dist/components/p-C2e7BkNn.js.map +1 -0
- package/dist/components/{p-BnuNaXR2.js → p-C4t7HnfZ.js} +2 -2
- package/dist/components/{p-C1ZfBbJ_.js → p-C7_awFtr.js} +2 -2
- package/dist/components/{p-leZFu-cd.js → p-CCsxoztj.js} +2 -2
- package/dist/components/{p-DYtVsnDS.js → p-CHyxUWqL.js} +2 -2
- package/dist/components/{p-d76Ry5nh.js → p-CKSJwSWd.js} +2 -2
- package/dist/components/p-CLqqb0Jp.js +2 -0
- package/dist/components/{p-BZY40-pE.js.map → p-CLqqb0Jp.js.map} +1 -1
- package/dist/components/{p-DdFeWC-e.js → p-CRhoeCC8.js} +2 -2
- package/dist/components/p-CWc6Blcp.js +2 -0
- package/dist/components/{p-B95UP66y.js.map → p-CWc6Blcp.js.map} +1 -1
- package/dist/components/{p-DYGllrVT.js → p-CXB_T13u.js} +2 -2
- package/dist/components/{p-DObhRLBa.js → p-CgC4SM5b.js} +2 -2
- package/dist/components/p-CqAC2IQO.js +2 -0
- package/dist/components/{p-5-gQbIIz.js.map → p-CqAC2IQO.js.map} +1 -1
- package/dist/components/{p-KA8srEed.js → p-Cs8Gq-PZ.js} +2 -2
- package/dist/components/{p-DcxY_pdJ.js → p-Ct2KQHF4.js} +2 -2
- package/dist/components/{p-B3o9zn3Y.js → p-CvIHBa8S.js} +2 -2
- package/dist/components/{p-YC7UM4jH.js → p-D1tmszmN.js} +2 -2
- package/dist/components/{p-CaFXrn_8.js → p-D62yUMhr.js} +2 -2
- package/dist/components/{p-CgQB8Ct5.js → p-D9l0QBgN.js} +2 -2
- package/dist/components/{p-Dr5rkAhe.js → p-DGrSro-o.js} +2 -2
- package/dist/components/{p-BVxK8ce0.js → p-DKvHBXwn.js} +2 -2
- package/dist/components/p-D_xZ5SFL.js +2 -0
- package/dist/components/{p-DP07JCed.js.map → p-D_xZ5SFL.js.map} +1 -1
- package/dist/components/{p-Ouk6FCxc.js → p-DdNJPBCS.js} +2 -2
- package/dist/components/p-DiPqdcD4.js +2 -0
- package/dist/components/{p-wXKIVUTn.js.map → p-DiPqdcD4.js.map} +1 -1
- package/dist/components/p-Dkh_40bl.js +2 -0
- package/dist/components/p-Dkh_40bl.js.map +1 -0
- package/dist/components/p-DmgDVoDb.js +2 -0
- package/dist/components/{p-BR9Pjp15.js.map → p-DmgDVoDb.js.map} +1 -1
- package/dist/components/{p-DXL5D30P.js → p-Du8LT8JS.js} +2 -2
- package/dist/components/{p-C6kUn-vb.js → p-Dyjs8_Cl.js} +2 -2
- package/dist/components/{p-CUYLGe5d.js → p-LJXiEPw1.js} +2 -2
- package/dist/components/{p-CbCN9ew9.js → p-QGtBlTMt.js} +2 -2
- package/dist/components/{p-CSxwWcwW.js → p-UBQ5O7B-.js} +2 -2
- package/dist/components/{p-DVsGfz7J.js → p-dSNHIJz6.js} +2 -2
- package/dist/components/{p-B9y6azEw.js → p-eKnJNQtL.js} +2 -2
- package/dist/components/{p-B-pkoIX9.js → p-g2OUK8Z0.js} +2 -2
- package/dist/components/{p-DSmDyI2o.js → p-n_OBbh94.js} +2 -2
- package/dist/components/{p-OJ5WeR05.js → p-oBpjD9OA.js} +2 -2
- package/dist/components/p-pJ6gbwSa.js +2 -0
- package/dist/components/p-pJ6gbwSa.js.map +1 -0
- package/dist/components/{p-DfMTDFcE.js → p-v9Nhw5yM.js} +2 -2
- package/dist/docs/components.json +683 -7
- package/dist/lint/index.js +1 -1
- package/dist/mcp-data/registry/navigation-tab-group.json +279 -0
- package/dist/mcp-data/registry/registry.json +332 -4
- package/dist/mcp-data/registry/select-toggle.json +351 -0
- package/dist/mcp-data/registry/slider.json +6 -5
- package/dist/mcp-data/registry/switch.json +2 -2
- package/dist/mcp-data/registry/tab-group.json +14 -8
- package/dist/mcp-data/registry/table.json +22 -3
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-navigation-tab-group.d.ts +12 -0
- package/dist/react/ds-navigation-tab-group.js +12 -0
- package/dist/react/ds-select-toggle.d.ts +12 -0
- package/dist/react/ds-select-toggle.js +12 -0
- package/dist/types/components/NavigationTabGroup/NavigationTabGroup.d.ts +16 -0
- package/dist/types/components/SelectToggle/SelectToggle.d.ts +46 -0
- package/dist/types/components/Slider/Slider.d.ts +1 -1
- package/dist/types/components/TabGroup/TabGroup.d.ts +2 -2
- package/dist/types/components/Table/Table.d.ts +3 -0
- package/dist/types/components.d.ts +237 -15
- package/dist/vue/components.d.ts +2 -0
- package/dist/vue/components.js +2 -0
- package/dist/vue/ds-navigation-tab-group.d.ts +3 -0
- package/dist/vue/ds-navigation-tab-group.js +16 -0
- package/dist/vue/ds-select-toggle.d.ts +3 -0
- package/dist/vue/ds-select-toggle.js +19 -0
- package/dist/vue/ds-table.js +1 -0
- package/package.json +1 -1
- package/dist/components/p-5-gQbIIz.js +0 -2
- package/dist/components/p-7MwoWtTJ.js.map +0 -1
- package/dist/components/p-B95UP66y.js +0 -2
- package/dist/components/p-BR9Pjp15.js +0 -2
- package/dist/components/p-BZY40-pE.js +0 -2
- package/dist/components/p-Bf-BphXP.js +0 -2
- package/dist/components/p-Bf-BphXP.js.map +0 -1
- package/dist/components/p-BqipGGua.js +0 -2
- package/dist/components/p-BqipGGua.js.map +0 -1
- package/dist/components/p-CElsKlxj.js +0 -2
- package/dist/components/p-DP07JCed.js +0 -2
- package/dist/components/p-wXKIVUTn.js +0 -2
- package/dist/components/p-xMBaOeKa.js +0 -2
- /package/dist/components/{p--pJyciTI.js.map → p--_bPiNCd.js.map} +0 -0
- /package/dist/components/{p-UJMEz8_O.js.map → p-3SCy1PHa.js.map} +0 -0
- /package/dist/components/{p-kwS-vkau.js.map → p-5aZVNYQz.js.map} +0 -0
- /package/dist/components/{p-DKGW3gRa.js.map → p-AGqUGzNZ.js.map} +0 -0
- /package/dist/components/{p-DbW8S5qe.js.map → p-BJf49edB.js.map} +0 -0
- /package/dist/components/{p-BNarCFJZ.js.map → p-BKyE025p.js.map} +0 -0
- /package/dist/components/{p-S1Ct3FJV.js.map → p-BNN9KkXe.js.map} +0 -0
- /package/dist/components/{p-CwdRaJER.js.map → p-BWJb2rih.js.map} +0 -0
- /package/dist/components/{p-D8OWhnID.js.map → p-BbvAWFJA.js.map} +0 -0
- /package/dist/components/{p-HfZ1gI2q.js.map → p-Bdp2V6-c.js.map} +0 -0
- /package/dist/components/{p-CIMyD_6H.js.map → p-BjBFJ2dd.js.map} +0 -0
- /package/dist/components/{p-BmIllmq2.js.map → p-BwNW5nqj.js.map} +0 -0
- /package/dist/components/{p-BnuNaXR2.js.map → p-C4t7HnfZ.js.map} +0 -0
- /package/dist/components/{p-C1ZfBbJ_.js.map → p-C7_awFtr.js.map} +0 -0
- /package/dist/components/{p-leZFu-cd.js.map → p-CCsxoztj.js.map} +0 -0
- /package/dist/components/{p-DYtVsnDS.js.map → p-CHyxUWqL.js.map} +0 -0
- /package/dist/components/{p-d76Ry5nh.js.map → p-CKSJwSWd.js.map} +0 -0
- /package/dist/components/{p-DdFeWC-e.js.map → p-CRhoeCC8.js.map} +0 -0
- /package/dist/components/{p-DYGllrVT.js.map → p-CXB_T13u.js.map} +0 -0
- /package/dist/components/{p-DObhRLBa.js.map → p-CgC4SM5b.js.map} +0 -0
- /package/dist/components/{p-KA8srEed.js.map → p-Cs8Gq-PZ.js.map} +0 -0
- /package/dist/components/{p-DcxY_pdJ.js.map → p-Ct2KQHF4.js.map} +0 -0
- /package/dist/components/{p-B3o9zn3Y.js.map → p-CvIHBa8S.js.map} +0 -0
- /package/dist/components/{p-YC7UM4jH.js.map → p-D1tmszmN.js.map} +0 -0
- /package/dist/components/{p-CaFXrn_8.js.map → p-D62yUMhr.js.map} +0 -0
- /package/dist/components/{p-CgQB8Ct5.js.map → p-D9l0QBgN.js.map} +0 -0
- /package/dist/components/{p-Dr5rkAhe.js.map → p-DGrSro-o.js.map} +0 -0
- /package/dist/components/{p-BVxK8ce0.js.map → p-DKvHBXwn.js.map} +0 -0
- /package/dist/components/{p-Ouk6FCxc.js.map → p-DdNJPBCS.js.map} +0 -0
- /package/dist/components/{p-DXL5D30P.js.map → p-Du8LT8JS.js.map} +0 -0
- /package/dist/components/{p-C6kUn-vb.js.map → p-Dyjs8_Cl.js.map} +0 -0
- /package/dist/components/{p-CUYLGe5d.js.map → p-LJXiEPw1.js.map} +0 -0
- /package/dist/components/{p-CbCN9ew9.js.map → p-QGtBlTMt.js.map} +0 -0
- /package/dist/components/{p-CSxwWcwW.js.map → p-UBQ5O7B-.js.map} +0 -0
- /package/dist/components/{p-DVsGfz7J.js.map → p-dSNHIJz6.js.map} +0 -0
- /package/dist/components/{p-B9y6azEw.js.map → p-eKnJNQtL.js.map} +0 -0
- /package/dist/components/{p-B-pkoIX9.js.map → p-g2OUK8Z0.js.map} +0 -0
- /package/dist/components/{p-DSmDyI2o.js.map → p-n_OBbh94.js.map} +0 -0
- /package/dist/components/{p-OJ5WeR05.js.map → p-oBpjD9OA.js.map} +0 -0
- /package/dist/components/{p-DfMTDFcE.js.map → p-v9Nhw5yM.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sliderCss","sliderId","sliderExternalLabelId","Slider","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","min","max","step","ticks","minStepsBetweenValues","showValue","size","orientation","thumbAlignment","disabled","readOnly","isInactive","ariaLabel","startLabel","endLabel","valueTexts","valuePrefix","valueSuffix","rangeSeparator","formDisabled","dragging","focused","touched","activeThumbIndex","generatedId","labelId","initialValue","lastCommittedValue","pointerId","pointerStartValue","controlEl","handleNativeInput","event","index","input","target","isDisabled","String","resolvedValues","setValueAt","Number","handleNativeChange","commitIfChanged","handleKeyDown","keys","resolvedTicks","length","includes","key","preventDefault","filter","tick","allowedMin","allowedMax","current","forward","next","find","reverse","handleFocus","handleBlur","relatedTarget","Node","el","contains","handleHostClick","inputs","querySelectorAll","Math","focus","handlePointerDown","button","valueFromPointer","closestThumbIndex","cloneValue","publicValue","setPointerCapture","requestAnimationFrame","preventScroll","handlePointerMove","componentWillLoad","syncFormValue","componentDidLoad","syncNativeLabels","values","isRange","setRepeatedFormControlValue","internals","name","inactive","setFormControlValue","state","formDisabledCallback","formResetCallback","formStateRestoreCallback","restored","restoreNumberArrayFormState","restoreStringFormState","isFinite","setFocus","Array","isArray","safeStep","unique","Map","safeMin","safeMax","set","sort","a","b","minimum","minimumGap","steps","floor","span","maximum","snap","raw","lower","upper","gap","valuesEqual","every","decimalPlaces","text","toLowerCase","split","reduce","nearest","abs","candidate","stepped","round","precision","toFixed","percent","previous","constrained","nextValue","dsChange","emit","dsCommit","label","ariaLabelledby","ids","from","labels","map","id","externalLabelledby","join","formattedValue","authored","valueText","number","numberFormatter","locale","formatOptions","format","ariaValueText","some","undefined","pointerPercent","control","rect","getBoundingClientRect","thumb","querySelector","thumbSize","offsetWidth","offsetHeight","inset","travel","height","bottom","clientY","width","clientX","left","targetElement","closest","dataset","lowerDistance","upperDistance","endPointerInteraction","canceled","hasPointerCapture","releasePointerCapture","renderThumb","inputId","rangeLabel","labelledby","directLabel","h","class","slider__thumb","style","type","ariaDescribedby","onInput","onChange","onKeyDown","onFocus","onBlur","render","first","last","firstInputId","dirty","valueDisplay","Host","slider","Boolean","onClick","as","variant","color","emphasis","for","textId","fontFeature","ref","element","onPointerDown","onPointerMove","onPointerUp","onPointerCancel"],"sources":["src/wc/components/Slider/Slider.css?tag=ds-slider&encapsulation=scoped","src/wc/components/Slider/Slider.tsx"],"sourcesContent":["@import '../../utils/control-inactive.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n --ds-slider-control-size: var(--dimension-size-400);\n --ds-slider-thumb-size: var(--dimension-size-200);\n --ds-slider-track-size: var(--dimension-size-100);\n --ds-slider-track-stroke: var(--dimension-stroke-width-012);\n --ds-slider-vertical-length: calc(var(--dimension-size-800) * 3);\n box-sizing: border-box;\n width: 100%;\n color: var(--color-foreground-primary);\n}\n\n:host(.slider--sm) {\n --ds-slider-control-size: var(--dimension-size-300);\n --ds-slider-thumb-size: var(--dimension-size-150);\n --ds-slider-track-size: var(--dimension-size-075);\n}\n\n:host(.slider--xs) {\n --ds-slider-control-size: var(--dimension-size-200);\n --ds-slider-thumb-size: var(--dimension-size-100);\n --ds-slider-track-size: var(--dimension-size-050);\n}\n\n:host(.slider--vertical) {\n width: fit-content;\n min-width: var(--dimension-form-width-xs);\n}\n\n.slider__label-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.slider__label {\n min-width: 0;\n}\n\n.slider__value {\n flex-shrink: 0;\n}\n\n.slider__control {\n position: relative;\n width: 100%;\n height: var(--ds-slider-control-size);\n border-radius: var(--dimension-radius-half);\n cursor: default;\n touch-action: none;\n user-select: none;\n}\n\n:host(.slider--vertical) .slider__control {\n align-self: center;\n width: var(--ds-slider-control-size);\n height: var(--ds-slider-vertical-length);\n}\n\n:host(.slider--readonly) .slider__control {\n cursor: default;\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity) on the host. */\n:host(.ds-control-inactive) .slider__control {\n cursor: not-allowed;\n}\n\n.slider__rail {\n position: absolute;\n top: 50%;\n right: 0;\n left: 0;\n height: var(--ds-slider-track-size);\n overflow: hidden;\n border-radius: var(--dimension-radius-025);\n background-color: transparent;\n box-shadow: inset 0 0 0 var(--ds-slider-track-stroke) var(--color-border-secondary);\n transform: translateY(-50%);\n pointer-events: none;\n}\n\n:host(.slider--thumb-center) .slider__rail {\n right: calc(var(--ds-slider-thumb-size) / 2);\n left: calc(var(--ds-slider-thumb-size) / 2);\n}\n\n.slider__indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-end-pct, 0) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n border-radius: inherit;\n background-color: var(--color-background-bold-brand);\n}\n\n:host(.slider--range) .slider__indicator {\n left: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-start-pct, 0) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n width: calc(\n ((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n}\n\n:host(.slider--thumb-center) .slider__indicator {\n left: calc(var(--ds-slider-start-pct, 0) * 1%);\n width: calc((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) * 1%);\n}\n\n.slider__thumb {\n position: absolute;\n top: 50%;\n left: calc((var(--ds-slider-thumb-pct, 0) / 100) * (100% - var(--ds-slider-thumb-size)));\n width: var(--ds-slider-thumb-size);\n height: var(--ds-slider-thumb-size);\n transform: translateY(-50%);\n z-index: 1;\n}\n\n.slider__thumb--active {\n z-index: 2;\n}\n\n.slider__input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n opacity: 0;\n appearance: none;\n pointer-events: none;\n z-index: 2;\n}\n\n.slider__thumb-visual {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n overflow: visible;\n border-radius: var(--dimension-radius-025);\n background-color: var(--color-background-primary);\n box-shadow: var(--effect-elevation-elevated-sm);\n pointer-events: none;\n transition:\n background-color var(--effect-motion-short-2),\n box-shadow var(--effect-motion-short-2);\n}\n\n.slider__thumb-wash {\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background-color: transparent;\n transition: background-color var(--effect-motion-short-2);\n}\n\n@media (hover: hover) and (pointer: fine) {\n :host(:not(.slider--readonly):not(.ds-control-inactive))\n .slider__thumb:hover\n .slider__thumb-wash {\n background-color: var(--color-interaction-hover);\n }\n}\n\n:host([data-dragging]:not(.slider--readonly):not(.ds-control-inactive))\n .slider__thumb--active\n .slider__thumb-wash {\n background-color: var(--color-interaction-pressed);\n}\n\n.slider__input:focus-visible + .slider__thumb-visual,\n:host([data-review-focus]) .slider__thumb[data-index='0'] .slider__thumb-visual {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n:host(.slider--vertical) .slider__rail {\n top: 0;\n right: auto;\n bottom: 0;\n left: 50%;\n width: var(--ds-slider-track-size);\n height: auto;\n transform: translateX(-50%);\n}\n\n:host(.slider--vertical.slider--thumb-center) .slider__rail {\n top: calc(var(--ds-slider-thumb-size) / 2);\n bottom: calc(var(--ds-slider-thumb-size) / 2);\n}\n\n:host(.slider--vertical) .slider__indicator {\n top: auto;\n right: 0;\n bottom: 0;\n left: 0;\n width: auto;\n height: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-end-pct, 0) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n}\n\n:host(.slider--vertical.slider--range) .slider__indicator {\n bottom: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-start-pct, 0) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n height: calc(\n ((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n}\n\n:host(.slider--vertical.slider--thumb-center) .slider__indicator {\n bottom: calc(var(--ds-slider-start-pct, 0) * 1%);\n height: calc((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) * 1%);\n}\n\n:host(.slider--vertical) .slider__thumb {\n top: auto;\n bottom: calc((var(--ds-slider-thumb-pct, 0) / 100) * (100% - var(--ds-slider-thumb-size)));\n left: 50%;\n transform: translateX(-50%);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .slider__thumb-visual,\n .slider__thumb-wash {\n transition: none;\n }\n}\n\n@media (forced-colors: active) {\n .slider__rail {\n border: var(--ds-slider-track-stroke) solid var(--ds-forced-color-content);\n box-shadow: none;\n }\n\n .slider__indicator {\n background-color: var(--ds-forced-color-selected);\n }\n\n .slider__thumb-visual {\n border: var(--dimension-stroke-width-012) solid var(--ds-forced-color-control-boundary);\n background-color: var(--ds-forced-color-surface);\n box-shadow: none;\n }\n\n .slider__input:focus-visible + .slider__thumb-visual,\n :host([data-review-focus]) .slider__thumb[data-index='0'] .slider__thumb-visual {\n outline-color: var(--ds-forced-color-selected);\n }\n}\n\n.slider__tick {\n position: absolute;\n top: calc(\n 50% + var(--ds-slider-track-size) / 2 + var(--dimension-space-050) + var(--dimension-space-012)\n );\n left: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n transform: translateX(-50%);\n pointer-events: none;\n}\n.slider__tick-mark {\n display: block;\n width: var(--dimension-stroke-width-025);\n height: var(--dimension-stroke-width-025);\n border-radius: var(--dimension-radius-half);\n background: var(--color-foreground-tertiary);\n}\n.slider__tick-label {\n width: max-content;\n max-width: none;\n position: absolute;\n top: calc(100% + var(--dimension-space-050));\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n:host(:not(.slider--vertical)) .slider__control {\n container-type: inline-size;\n}\n:host(:not(.slider--vertical)) .slider__tick-label {\n /* Center on the tick, clamping only when the text reaches the control edges. */\n --ds-slider-label-anchor: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100cqw - var(--ds-slider-thumb-size))\n );\n transform: translateX(\n clamp(\n calc(-1 * var(--ds-slider-label-anchor)),\n -50%,\n calc(100cqw - var(--ds-slider-label-anchor) - 100%)\n )\n );\n}\n:host(.slider--tick-labels:not(.slider--vertical)) .slider__control {\n margin-bottom: var(--dimension-space-200);\n}\n:host(.slider--vertical) .slider__tick {\n top: auto;\n bottom: calc(\n var(--ds-slider-thumb-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100% - var(--ds-slider-thumb-size))\n );\n left: calc(50% + var(--ds-slider-track-size) / 2 + var(--dimension-space-050));\n transform: translateY(50%);\n}\n:host(.slider--vertical) .slider__tick-label {\n top: 50%;\n left: calc(100% + var(--dimension-space-050));\n transform: translateY(-50%);\n}\n","import { numberFormatter } from '../../utils/intl-formatters';\nimport {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n restoreNumberArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n} from '../../utils';\n\nexport interface SliderTick {\n value: number;\n label?: string;\n}\n\nexport type SliderValue = number | number[];\nexport type SliderSize = 'md' | 'sm' | 'xs';\nexport type SliderOrientation = 'horizontal' | 'vertical';\nexport type SliderThumbAlignment = 'edge' | 'center';\n\nlet sliderId = 0;\nlet sliderExternalLabelId = 0;\n\n@Component({\n tag: 'ds-slider',\n styleUrl: 'Slider.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Slider {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Current value. Assign a two-number array through the JavaScript property for a range slider. */\n @Prop({ mutable: true }) value: SliderValue = 0;\n @Prop() min: number = 0;\n @Prop() max: number = 100;\n @Prop() step: number | 'any' = 1;\n /** Explicit ticks are the selectable snap points. Empty ticks with step='any' allow smooth adjustment. */\n @Prop() ticks: SliderTick[] = [];\n /** Minimum number of steps kept between two range thumbs. */\n @Prop() minStepsBetweenValues: number = 0;\n /** Visible field label. Supply aria-label when the label is intentionally hidden. */\n @Prop() label: string | undefined;\n /** Show the formatted current value beside the visible label. */\n @Prop() showValue: boolean = true;\n @Prop() size: SliderSize = 'md';\n @Prop() orientation: SliderOrientation = 'horizontal';\n /** Align the thumb edge with full-width rail endpoints, or its center with inset rail endpoints. */\n @Prop() thumbAlignment: SliderThumbAlignment = 'edge';\n @Prop({ reflect: true }) name: string | undefined;\n @Prop({ reflect: true }) form: string | undefined;\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Keep the value focusable and submittable while preventing changes. */\n @Prop({ reflect: true }) readOnly: boolean = false;\n @Prop() isInactive: boolean = false;\n /** Direct accessible name for a single-thumb slider without a visible label. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Id references for a visible single-thumb slider label. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Id references for supporting guidance or error text. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n /** Accessible label for the lower thumb in a range slider. */\n @Prop() startLabel: string = 'Minimum value';\n /** Accessible label for the upper thumb in a range slider. */\n @Prop() endLabel: string = 'Maximum value';\n /** Human-readable value text for a single slider or both range thumbs. */\n @Prop() valueText: string | undefined;\n /** Per-thumb human-readable value text for a range slider. Assign through the JavaScript property. */\n @Prop() valueTexts: string[] = [];\n /** Locale used for the visible value. Defaults to English (en-US). */\n @Prop() locale: string | undefined;\n /** Intl.NumberFormat options. Assign objects through the JavaScript property. */\n @Prop() formatOptions: Intl.NumberFormatOptions | undefined;\n @Prop() valuePrefix: string = '';\n @Prop() valueSuffix: string = '';\n @Prop() rangeSeparator: string = '–';\n /** Id applied to the first native range input. */\n @Prop() inputId: string | undefined;\n\n /** Emitted continuously while the value changes. */\n @Event() dsChange!: EventEmitter<SliderValue>;\n /** Emitted when a pointer or keyboard value change is committed. */\n @Event() dsCommit!: EventEmitter<SliderValue>;\n\n @State() private formDisabled = false;\n @State() private dragging = false;\n @State() private focused = false;\n @State() private touched = false;\n @State() private activeThumbIndex = 0;\n @State() private externalLabelledby: string | undefined;\n\n private readonly generatedId = `ds-slider-${++sliderId}`;\n private readonly labelId = `${this.generatedId}-label`;\n private initialValue: SliderValue = 0;\n private lastCommittedValue: SliderValue = 0;\n private pointerId: number | null = null;\n private pointerStartValue: SliderValue = 0;\n private controlEl: HTMLDivElement | null = null;\n\n componentWillLoad() {\n this.initialValue = this.cloneValue(this.publicValue);\n this.lastCommittedValue = this.cloneValue(this.publicValue);\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.syncNativeLabels();\n }\n\n @Watch('value')\n @Watch('min')\n @Watch('max')\n @Watch('step')\n @Watch('ticks')\n @Watch('minStepsBetweenValues')\n @Watch('name')\n @Watch('disabled')\n @Watch('isInactive')\n syncFormValue() {\n const values = this.resolvedValues;\n if (this.isRange) {\n setRepeatedFormControlValue(this.internals, this.name, values, {\n inactive: this.isDisabled,\n });\n } else {\n const value = String(values[0]);\n setFormControlValue(this.internals, this.name ? value : null, {\n inactive: this.isDisabled,\n state: value,\n });\n }\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.cloneValue(this.initialValue);\n this.lastCommittedValue = this.cloneValue(this.initialValue);\n this.dragging = false;\n this.focused = false;\n this.touched = false;\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (this.isRange) {\n const restored = restoreNumberArrayFormState(state, 2);\n this.value = restored.length ? restored : this.cloneValue(this.initialValue);\n } else {\n const restored = Number(restoreStringFormState(state, 'NaN'));\n if (Number.isFinite(restored)) this.value = restored;\n }\n this.lastCommittedValue = this.cloneValue(this.publicValue);\n }\n\n @Method()\n async setFocus(index: number = 0) {\n const inputs = this.el.querySelectorAll<HTMLInputElement>('.slider__input');\n inputs[Math.max(0, Math.min(index, inputs.length - 1))]?.focus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get isRange(): boolean {\n return Array.isArray(this.value);\n }\n\n private get safeStep(): number {\n const step = Number(this.step);\n return Number.isFinite(step) && step > 0 ? step : 1;\n }\n\n private get resolvedTicks(): SliderTick[] {\n const unique = new Map<number, SliderTick>();\n for (const tick of this.ticks) {\n if (Number.isFinite(tick.value) && tick.value >= this.safeMin && tick.value <= this.safeMax)\n unique.set(tick.value, tick);\n }\n return [...unique.values()].sort((a, b) => a.value - b.value);\n }\n\n private get safeMin(): number {\n return Number.isFinite(this.min) ? this.min : 0;\n }\n\n private get safeMax(): number {\n const minimum = this.safeMin;\n return Number.isFinite(this.max) && this.max > minimum ? this.max : minimum + this.safeStep;\n }\n\n private get minimumGap(): number {\n const steps = Number.isFinite(this.minStepsBetweenValues)\n ? Math.max(0, Math.floor(this.minStepsBetweenValues))\n : 0;\n const ticks = this.resolvedTicks;\n const span = ticks.length\n ? ticks[ticks.length - 1].value - ticks[0].value\n : this.safeMax - this.safeMin;\n return Math.min(span, steps * this.safeStep);\n }\n\n private get resolvedValues(): number[] {\n const minimum = this.safeMin;\n const maximum = this.safeMax;\n if (!this.isRange) return [this.snap(Number(this.value))];\n\n const raw = this.value as number[];\n let lower = this.snap(Number(raw[0] ?? minimum));\n let upper = this.snap(Number(raw[1] ?? maximum));\n if (lower > upper) [lower, upper] = [upper, lower];\n\n const gap = Math.min(this.minimumGap, maximum - minimum);\n if (upper - lower < gap) {\n upper = Math.min(maximum, this.snap(lower + gap));\n lower = Math.max(minimum, this.snap(upper - gap));\n const ticks = this.resolvedTicks;\n if (ticks.length && upper - lower < gap) {\n upper =\n ticks.find(tick => tick.value >= lower + gap)?.value ?? ticks[ticks.length - 1].value;\n lower =\n [...ticks].reverse().find(tick => tick.value <= upper - gap)?.value ?? ticks[0].value;\n }\n }\n return [lower, upper];\n }\n\n private get publicValue(): SliderValue {\n const values = this.resolvedValues;\n return this.isRange ? [...values] : values[0];\n }\n\n private cloneValue(value: SliderValue): SliderValue {\n return Array.isArray(value) ? [...value] : value;\n }\n\n private valuesEqual(a: SliderValue, b: SliderValue): boolean {\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n }\n return !Array.isArray(a) && !Array.isArray(b) && a === b;\n }\n\n private decimalPlaces(value: number): number {\n const text = String(value).toLowerCase();\n if (text.includes('e-')) return Number(text.split('e-')[1]) || 0;\n return text.includes('.') ? text.split('.')[1].length : 0;\n }\n\n private snap(value: number, minimum = this.safeMin, maximum = this.safeMax): number {\n const ticks = this.resolvedTicks.filter(tick => tick.value >= minimum && tick.value <= maximum);\n if (ticks.length)\n return ticks.reduce((nearest, tick) =>\n Math.abs(tick.value - value) < Math.abs(nearest.value - value) ? tick : nearest\n ).value;\n if (this.step === 'any')\n return Math.min(maximum, Math.max(minimum, Number.isFinite(value) ? value : minimum));\n const candidate = Number.isFinite(value) ? value : minimum;\n const stepped = minimum + Math.round((candidate - minimum) / this.safeStep) * this.safeStep;\n const precision = Math.min(\n 10,\n Math.max(\n this.decimalPlaces(minimum),\n this.decimalPlaces(maximum),\n this.decimalPlaces(this.safeStep)\n )\n );\n return Number(Math.min(maximum, Math.max(minimum, stepped)).toFixed(precision));\n }\n\n private percent(value: number): number {\n return ((value - this.safeMin) / (this.safeMax - this.safeMin)) * 100;\n }\n\n private allowedMin(index: number, values = this.resolvedValues): number {\n return this.isRange && index === 1\n ? Math.min(this.safeMax, values[0] + this.minimumGap)\n : this.safeMin;\n }\n\n private allowedMax(index: number, values = this.resolvedValues): number {\n return this.isRange && index === 0\n ? Math.max(this.safeMin, values[1] - this.minimumGap)\n : this.safeMax;\n }\n\n private setValueAt(index: number, next: number): boolean {\n const previous = this.publicValue;\n const values = this.resolvedValues;\n const constrained = Math.min(\n this.allowedMax(index, values),\n Math.max(\n this.allowedMin(index, values),\n this.snap(next, this.allowedMin(index, values), this.allowedMax(index, values))\n )\n );\n values[index] = constrained;\n const nextValue: SliderValue = this.isRange ? [...values] : values[0];\n if (this.valuesEqual(previous, nextValue)) return false;\n\n this.value = nextValue;\n this.dsChange.emit(this.cloneValue(nextValue));\n return true;\n }\n\n private commitIfChanged() {\n const current = this.publicValue;\n if (this.valuesEqual(current, this.lastCommittedValue)) return;\n this.lastCommittedValue = this.cloneValue(current);\n this.dsCommit.emit(this.cloneValue(current));\n }\n\n private syncNativeLabels() {\n if (this.label || this.ariaLabel || this.ariaLabelledby || this.isRange) return;\n const ids = (Array.from(this.internals.labels) as HTMLLabelElement[]).map(label => {\n if (!label.id) label.id = `ds-slider-label-${++sliderExternalLabelId}`;\n return label.id;\n });\n if (ids.length) this.externalLabelledby = ids.join(' ');\n }\n\n private formattedValue(value: number, index: number): string {\n const authored =\n this.valueTexts[index] ??\n this.valueText ??\n this.resolvedTicks.find(tick => tick.value === value)?.label;\n if (authored) return authored;\n let number: string;\n try {\n number = numberFormatter(this.locale, this.formatOptions).format(value);\n } catch {\n number = String(value);\n }\n return `${this.valuePrefix}${number}${this.valueSuffix}`;\n }\n\n private ariaValueText(value: number, index: number): string | undefined {\n if (\n this.resolvedTicks.some(tick => tick.value === value && tick.label) ||\n this.valueTexts[index] ||\n this.valueText ||\n this.valuePrefix ||\n this.valueSuffix ||\n this.formatOptions\n ) {\n return this.formattedValue(value, index);\n }\n return undefined;\n }\n\n private handleNativeInput = (event: Event, index: number) => {\n const input = event.target as HTMLInputElement;\n this.activeThumbIndex = index;\n if (this.readOnly || this.isDisabled) {\n input.value = String(this.resolvedValues[index]);\n return;\n }\n this.setValueAt(index, Number(input.value));\n };\n\n private handleNativeChange = () => {\n if (!this.readOnly && !this.isDisabled) this.commitIfChanged();\n };\n\n private handleKeyDown = (event: KeyboardEvent, index: number) => {\n const keys = [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ];\n if (!this.readOnly && this.resolvedTicks.length && keys.includes(event.key)) {\n event.preventDefault();\n if (this.isDisabled) return;\n const ticks = this.resolvedTicks.filter(\n tick => tick.value >= this.allowedMin(index) && tick.value <= this.allowedMax(index)\n );\n const current = this.resolvedValues[index];\n const forward = ['ArrowRight', 'ArrowUp', 'PageUp'].includes(event.key);\n const next =\n event.key === 'Home'\n ? ticks[0]\n : event.key === 'End'\n ? ticks[ticks.length - 1]\n : forward\n ? ticks.find(tick => tick.value > current)\n : [...ticks].reverse().find(tick => tick.value < current);\n if (next && this.setValueAt(index, next.value)) this.commitIfChanged();\n return;\n }\n if (!this.readOnly) return;\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ].includes(event.key)\n ) {\n event.preventDefault();\n }\n };\n\n private handleFocus = (index: number) => {\n this.activeThumbIndex = index;\n this.focused = true;\n };\n\n private handleBlur = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n this.focused = false;\n this.touched = true;\n };\n\n private handleHostClick = (event: MouseEvent) => {\n if (event.target !== this.el || this.isDisabled) return;\n const inputs = this.el.querySelectorAll<HTMLInputElement>('.slider__input');\n inputs[Math.min(this.activeThumbIndex, inputs.length - 1)]?.focus();\n };\n\n private pointerPercent(event: PointerEvent): number {\n const control = this.controlEl;\n if (!control) return 0;\n const rect = control.getBoundingClientRect();\n const thumb = this.el.querySelector<HTMLElement>('.slider__thumb');\n const thumbSize = thumb\n ? this.orientation === 'horizontal'\n ? thumb.offsetWidth\n : thumb.offsetHeight\n : 0;\n // Both alignment modes keep the complete thumb inside the control. Edge\n // alignment lets the rail span the control while center alignment insets\n // the rail to the same thumb-center travel.\n const inset = thumbSize / 2;\n\n if (this.orientation === 'vertical') {\n const travel = Math.max(1, rect.height - inset * 2);\n return Math.min(1, Math.max(0, (rect.bottom - inset - event.clientY) / travel));\n }\n\n const travel = Math.max(1, rect.width - inset * 2);\n const percent = (event.clientX - rect.left - inset) / travel;\n return Math.min(1, Math.max(0, percent));\n }\n\n private valueFromPointer(event: PointerEvent): number {\n return this.snap(this.safeMin + this.pointerPercent(event) * (this.safeMax - this.safeMin));\n }\n\n private closestThumbIndex(value: number, target: EventTarget | null): number {\n const targetElement =\n target instanceof HTMLElement ? target.closest<HTMLElement>('.slider__thumb') : null;\n if (targetElement?.dataset['index']) return Number(targetElement.dataset['index']);\n if (!this.isRange) return 0;\n\n const values = this.resolvedValues;\n const lowerDistance = Math.abs(value - values[0]);\n const upperDistance = Math.abs(value - values[1]);\n if (lowerDistance === upperDistance) return value >= values[0] ? 1 : 0;\n return lowerDistance < upperDistance ? 0 : 1;\n }\n\n private handlePointerDown = (event: PointerEvent) => {\n if (event.button !== 0 || this.isDisabled || this.readOnly) return;\n event.preventDefault();\n const value = this.valueFromPointer(event);\n const index = this.closestThumbIndex(value, event.target);\n this.activeThumbIndex = index;\n this.pointerId = event.pointerId;\n this.pointerStartValue = this.cloneValue(this.publicValue);\n this.dragging = true;\n this.setValueAt(index, value);\n this.controlEl?.setPointerCapture(event.pointerId);\n requestAnimationFrame(() => {\n const input = this.el.querySelectorAll<HTMLInputElement>('.slider__input')[index];\n input?.focus({ preventScroll: true });\n });\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (this.pointerId !== event.pointerId || !this.dragging) return;\n event.preventDefault();\n this.setValueAt(this.activeThumbIndex, this.valueFromPointer(event));\n };\n\n private endPointerInteraction(event: PointerEvent, canceled: boolean) {\n if (this.pointerId !== event.pointerId) return;\n if (this.controlEl?.hasPointerCapture(event.pointerId))\n this.controlEl.releasePointerCapture(event.pointerId);\n this.pointerId = null;\n this.dragging = false;\n this.touched = true;\n if (!canceled && !this.valuesEqual(this.pointerStartValue, this.publicValue))\n this.commitIfChanged();\n }\n\n private renderThumb(value: number, index: number) {\n const inputId =\n index === 0\n ? (this.inputId ?? `${this.generatedId}-input`)\n : `${this.inputId ?? `${this.generatedId}-input`}-end`;\n const rangeLabel = index === 0 ? this.startLabel : this.endLabel;\n const labelledby = this.isRange\n ? undefined\n : (this.ariaLabelledby ?? (this.label ? this.labelId : this.externalLabelledby));\n const directLabel = this.isRange ? rangeLabel : labelledby ? undefined : this.ariaLabel;\n\n return (\n <div\n class={{\n slider__thumb: true,\n 'slider__thumb--active': index === this.activeThumbIndex,\n }}\n data-index={String(index)}\n style={{ '--ds-slider-thumb-pct': String(this.percent(value)) } as Record<string, string>}\n >\n <input\n class=\"slider__input\"\n type=\"range\"\n id={inputId}\n min={this.allowedMin(index)}\n max={this.allowedMax(index)}\n step={this.resolvedTicks.length || this.step === 'any' ? 'any' : this.safeStep}\n value={value}\n disabled={this.isDisabled}\n aria-label={directLabel}\n aria-labelledby={labelledby}\n aria-describedby={this.ariaDescribedby}\n aria-valuetext={this.ariaValueText(value, index)}\n aria-orientation={this.orientation === 'vertical' ? 'vertical' : undefined}\n aria-readonly={this.readOnly ? 'true' : undefined}\n onInput={(event: Event) => this.handleNativeInput(event, index)}\n onChange={this.handleNativeChange}\n onKeyDown={event => this.handleKeyDown(event, index)}\n onFocus={() => this.handleFocus(index)}\n onBlur={this.handleBlur}\n />\n <span class=\"slider__thumb-visual\" aria-hidden=\"true\">\n <span class=\"slider__thumb-wash\" />\n </span>\n </div>\n );\n }\n\n render() {\n const values = this.resolvedValues;\n const first = values[0];\n const last = values[values.length - 1];\n const firstInputId = this.inputId ?? `${this.generatedId}-input`;\n const dirty = !this.valuesEqual(this.publicValue, this.initialValue);\n const valueDisplay = values\n .map((value, index) => this.formattedValue(value, index))\n .join(` ${this.rangeSeparator} `);\n\n return (\n <Host\n aria-disabled={this.isDisabled ? 'true' : undefined}\n class={{\n slider: true,\n 'ds-field-stack': true,\n [`slider--${this.size}`]: true,\n [`slider--${this.orientation}`]: true,\n [`slider--thumb-${this.thumbAlignment}`]: true,\n 'slider--range': this.isRange,\n 'slider--ticks': this.resolvedTicks.length > 0,\n 'slider--tick-labels': this.resolvedTicks.some(tick => Boolean(tick.label)),\n 'slider--readonly': this.readOnly,\n 'ds-control-inactive': this.isDisabled,\n }}\n data-orientation={this.orientation}\n data-disabled={this.isDisabled ? '' : undefined}\n data-readonly={this.readOnly ? '' : undefined}\n data-dragging={this.dragging ? '' : undefined}\n data-focused={this.focused ? '' : undefined}\n data-filled=\"\"\n data-dirty={dirty ? '' : undefined}\n data-touched={this.touched ? '' : undefined}\n data-valid={!this.isDisabled ? '' : undefined}\n onClick={this.handleHostClick}\n >\n {(this.label || this.showValue) && (\n <div class=\"slider__label-row\">\n {this.label && (\n <ds-text\n class=\"slider__label\"\n as=\"label\"\n variant=\"text-body-small\"\n color=\"primary\"\n emphasis\n for={firstInputId}\n textId={this.labelId}\n >\n {this.label}\n </ds-text>\n )}\n {this.showValue && (\n <ds-text\n class=\"slider__value\"\n as=\"span\"\n variant=\"text-body-small\"\n color=\"primary\"\n fontFeature=\"tabular-nums\"\n >\n {valueDisplay}\n </ds-text>\n )}\n </div>\n )}\n <div\n class=\"slider__control\"\n ref={element => {\n this.controlEl = element ?? null;\n }}\n style={\n {\n '--ds-slider-start-pct': String(this.isRange ? this.percent(first) : 0),\n '--ds-slider-end-pct': String(this.percent(last)),\n } as Record<string, string>\n }\n onPointerDown={this.handlePointerDown}\n onPointerMove={this.handlePointerMove}\n onPointerUp={(event: PointerEvent) => this.endPointerInteraction(event, false)}\n onPointerCancel={(event: PointerEvent) => this.endPointerInteraction(event, true)}\n >\n <div class=\"slider__rail\" aria-hidden=\"true\">\n <div class=\"slider__indicator\" />\n </div>\n {this.resolvedTicks.map(tick => (\n <span\n class=\"slider__tick\"\n data-edge={\n tick.value === this.safeMin\n ? 'start'\n : tick.value === this.safeMax\n ? 'end'\n : undefined\n }\n aria-hidden=\"true\"\n style={{ '--ds-slider-tick-pct': String(this.percent(tick.value)) }}\n >\n <span class=\"slider__tick-mark\" />\n {tick.label && (\n <ds-text\n class=\"slider__tick-label\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"secondary\"\n >\n {tick.label}\n </ds-text>\n )}\n </span>\n ))}\n {values.map((value, index) => this.renderThumb(value, index))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"8LAAA,MAAMA,EAAY,IAAM,k1TC+BxB,IAAIC,EAAW,EACf,IAAIC,EAAwB,E,MAQfC,EAAMC,EAAA,MAAAD,UAAAE,EANnB,WAAAC,CAAAC,G,wJAW2BC,KAAAC,MAAqB,EACtCD,KAAAE,IAAc,EACdF,KAAAG,IAAc,IACdH,KAAAI,KAAuB,EAEvBJ,KAAAK,MAAsB,GAEtBL,KAAAM,sBAAgC,EAIhCN,KAAAO,UAAqB,KACrBP,KAAAQ,KAAmB,KACnBR,KAAAS,YAAiC,aAEjCT,KAAAU,eAAuC,OAGtBV,KAAAW,SAAoB,MAEpBX,KAAAY,SAAoB,MACrCZ,KAAAa,WAAsB,MAEKb,KAAAc,UAA2B,KAMtDd,KAAAe,WAAqB,gBAErBf,KAAAgB,SAAmB,gBAInBhB,KAAAiB,WAAuB,GAKvBjB,KAAAkB,YAAsB,GACtBlB,KAAAmB,YAAsB,GACtBnB,KAAAoB,eAAyB,IAShBpB,KAAAqB,aAAe,MACfrB,KAAAsB,SAAW,MACXtB,KAAAuB,QAAU,MACVvB,KAAAwB,QAAU,MACVxB,KAAAyB,iBAAmB,EAGnBzB,KAAA0B,YAAc,eAAejC,IAC7BO,KAAA2B,QAAU,GAAG3B,KAAK0B,oBAC3B1B,KAAA4B,aAA4B,EAC5B5B,KAAA6B,mBAAkC,EAClC7B,KAAA8B,UAA2B,KAC3B9B,KAAA+B,kBAAiC,EACjC/B,KAAAgC,UAAmC,KAgQnChC,KAAAiC,kBAAoB,CAACC,EAAcC,KACzC,MAAMC,EAAQF,EAAMG,OACpBrC,KAAKyB,iBAAmBU,EACxB,GAAInC,KAAKY,UAAYZ,KAAKsC,WAAY,CACpCF,EAAMnC,MAAQsC,OAAOvC,KAAKwC,eAAeL,IACzC,M,CAEFnC,KAAKyC,WAAWN,EAAOO,OAAON,EAAMnC,OAAO,EAGrCD,KAAA2C,mBAAqB,KAC3B,IAAK3C,KAAKY,WAAaZ,KAAKsC,WAAYtC,KAAK4C,iBAAiB,EAGxD5C,KAAA6C,cAAgB,CAACX,EAAsBC,KAC7C,MAAMW,EAAO,CACX,YACA,aACA,UACA,YACA,OACA,MACA,SACA,YAEF,IAAK9C,KAAKY,UAAYZ,KAAK+C,cAAcC,QAAUF,EAAKG,SAASf,EAAMgB,KAAM,CAC3EhB,EAAMiB,iBACN,GAAInD,KAAKsC,WAAY,OACrB,MAAMjC,EAAQL,KAAK+C,cAAcK,QAC/BC,GAAQA,EAAKpD,OAASD,KAAKsD,WAAWnB,IAAUkB,EAAKpD,OAASD,KAAKuD,WAAWpB,KAEhF,MAAMqB,EAAUxD,KAAKwC,eAAeL,GACpC,MAAMsB,EAAU,CAAC,aAAc,UAAW,UAAUR,SAASf,EAAMgB,KACnE,MAAMQ,EACJxB,EAAMgB,MAAQ,OACV7C,EAAM,GACN6B,EAAMgB,MAAQ,MACZ7C,EAAMA,EAAM2C,OAAS,GACrBS,EACEpD,EAAMsD,MAAKN,GAAQA,EAAKpD,MAAQuD,IAChC,IAAInD,GAAOuD,UAAUD,MAAKN,GAAQA,EAAKpD,MAAQuD,IACzD,GAAIE,GAAQ1D,KAAKyC,WAAWN,EAAOuB,EAAKzD,OAAQD,KAAK4C,kBACrD,M,CAEF,IAAK5C,KAAKY,SAAU,OACpB,GACE,CACE,YACA,aACA,UACA,YACA,OACA,MACA,SACA,YACAqC,SAASf,EAAMgB,KACjB,CACAhB,EAAMiB,gB,GAIFnD,KAAA6D,YAAe1B,IACrBnC,KAAKyB,iBAAmBU,EACxBnC,KAAKuB,QAAU,IAAI,EAGbvB,KAAA8D,WAAc5B,IACpB,MAAMwB,EAAOxB,EAAM6B,cACnB,GAAIL,aAAgBM,MAAQhE,KAAKiE,GAAGC,SAASR,GAAO,OACpD1D,KAAKuB,QAAU,MACfvB,KAAKwB,QAAU,IAAI,EAGbxB,KAAAmE,gBAAmBjC,IACzB,GAAIA,EAAMG,SAAWrC,KAAKiE,IAAMjE,KAAKsC,WAAY,OACjD,MAAM8B,EAASpE,KAAKiE,GAAGI,iBAAmC,kBAC1DD,EAAOE,KAAKpE,IAAIF,KAAKyB,iBAAkB2C,EAAOpB,OAAS,KAAKuB,OAAO,EA6C7DvE,KAAAwE,kBAAqBtC,IAC3B,GAAIA,EAAMuC,SAAW,GAAKzE,KAAKsC,YAActC,KAAKY,SAAU,OAC5DsB,EAAMiB,iBACN,MAAMlD,EAAQD,KAAK0E,iBAAiBxC,GACpC,MAAMC,EAAQnC,KAAK2E,kBAAkB1E,EAAOiC,EAAMG,QAClDrC,KAAKyB,iBAAmBU,EACxBnC,KAAK8B,UAAYI,EAAMJ,UACvB9B,KAAK+B,kBAAoB/B,KAAK4E,WAAW5E,KAAK6E,aAC9C7E,KAAKsB,SAAW,KAChBtB,KAAKyC,WAAWN,EAAOlC,GACvBD,KAAKgC,WAAW8C,kBAAkB5C,EAAMJ,WACxCiD,uBAAsB,KACpB,MAAM3C,EAAQpC,KAAKiE,GAAGI,iBAAmC,kBAAkBlC,GAC3EC,GAAOmC,MAAM,CAAES,cAAe,MAAO,GACrC,EAGIhF,KAAAiF,kBAAqB/C,IAC3B,GAAIlC,KAAK8B,YAAcI,EAAMJ,YAAc9B,KAAKsB,SAAU,OAC1DY,EAAMiB,iBACNnD,KAAKyC,WAAWzC,KAAKyB,iBAAkBzB,KAAK0E,iBAAiBxC,GAAO,CAgLvE,CA3jBC,iBAAAgD,GACElF,KAAK4B,aAAe5B,KAAK4E,WAAW5E,KAAK6E,aACzC7E,KAAK6B,mBAAqB7B,KAAK4E,WAAW5E,KAAK6E,aAC/C7E,KAAKmF,e,CAGP,gBAAAC,GACEpF,KAAKqF,kB,CAYP,aAAAF,GACE,MAAMG,EAAStF,KAAKwC,eACpB,GAAIxC,KAAKuF,QAAS,CAChBC,EAA4BxF,KAAKyF,UAAWzF,KAAK0F,KAAMJ,EAAQ,CAC7DK,SAAU3F,KAAKsC,Y,KAEZ,CACL,MAAMrC,EAAQsC,OAAO+C,EAAO,IAC5BM,EAAoB5F,KAAKyF,UAAWzF,KAAK0F,KAAOzF,EAAQ,KAAM,CAC5D0F,SAAU3F,KAAKsC,WACfuD,MAAO5F,G,EAKb,oBAAA6F,CAAqBnF,GACnBX,KAAKqB,aAAeV,EACpBX,KAAKmF,e,CAGP,iBAAAY,GACE/F,KAAKC,MAAQD,KAAK4E,WAAW5E,KAAK4B,cAClC5B,KAAK6B,mBAAqB7B,KAAK4E,WAAW5E,KAAK4B,cAC/C5B,KAAKsB,SAAW,MAChBtB,KAAKuB,QAAU,MACfvB,KAAKwB,QAAU,K,CAGjB,wBAAAwE,CAAyBH,GACvB,GAAI7F,KAAKuF,QAAS,CAChB,MAAMU,EAAWC,EAA4BL,EAAO,GACpD7F,KAAKC,MAAQgG,EAASjD,OAASiD,EAAWjG,KAAK4E,WAAW5E,KAAK4B,a,KAC1D,CACL,MAAMqE,EAAWvD,OAAOyD,EAAuBN,EAAO,QACtD,GAAInD,OAAO0D,SAASH,GAAWjG,KAAKC,MAAQgG,C,CAE9CjG,KAAK6B,mBAAqB7B,KAAK4E,WAAW5E,KAAK6E,Y,CAIjD,cAAMwB,CAASlE,EAAgB,GAC7B,MAAMiC,EAASpE,KAAKiE,GAAGI,iBAAmC,kBAC1DD,EAAOE,KAAKnE,IAAI,EAAGmE,KAAKpE,IAAIiC,EAAOiC,EAAOpB,OAAS,MAAMuB,O,CAG3D,cAAYjC,GACV,OAAOtC,KAAKW,UAAYX,KAAKa,YAAcb,KAAKqB,Y,CAGlD,WAAYkE,GACV,OAAOe,MAAMC,QAAQvG,KAAKC,M,CAG5B,YAAYuG,GACV,MAAMpG,EAAOsC,OAAO1C,KAAKI,MACzB,OAAOsC,OAAO0D,SAAShG,IAASA,EAAO,EAAIA,EAAO,C,CAGpD,iBAAY2C,GACV,MAAM0D,EAAS,IAAIC,IACnB,IAAK,MAAMrD,KAAQrD,KAAKK,MAAO,CAC7B,GAAIqC,OAAO0D,SAAS/C,EAAKpD,QAAUoD,EAAKpD,OAASD,KAAK2G,SAAWtD,EAAKpD,OAASD,KAAK4G,QAClFH,EAAOI,IAAIxD,EAAKpD,MAAOoD,E,CAE3B,MAAO,IAAIoD,EAAOnB,UAAUwB,MAAK,CAACC,EAAGC,IAAMD,EAAE9G,MAAQ+G,EAAE/G,O,CAGzD,WAAY0G,GACV,OAAOjE,OAAO0D,SAASpG,KAAKE,KAAOF,KAAKE,IAAM,C,CAGhD,WAAY0G,GACV,MAAMK,EAAUjH,KAAK2G,QACrB,OAAOjE,OAAO0D,SAASpG,KAAKG,MAAQH,KAAKG,IAAM8G,EAAUjH,KAAKG,IAAM8G,EAAUjH,KAAKwG,Q,CAGrF,cAAYU,GACV,MAAMC,EAAQzE,OAAO0D,SAASpG,KAAKM,uBAC/BgE,KAAKnE,IAAI,EAAGmE,KAAK8C,MAAMpH,KAAKM,wBAC5B,EACJ,MAAMD,EAAQL,KAAK+C,cACnB,MAAMsE,EAAOhH,EAAM2C,OACf3C,EAAMA,EAAM2C,OAAS,GAAG/C,MAAQI,EAAM,GAAGJ,MACzCD,KAAK4G,QAAU5G,KAAK2G,QACxB,OAAOrC,KAAKpE,IAAImH,EAAMF,EAAQnH,KAAKwG,S,CAGrC,kBAAYhE,GACV,MAAMyE,EAAUjH,KAAK2G,QACrB,MAAMW,EAAUtH,KAAK4G,QACrB,IAAK5G,KAAKuF,QAAS,MAAO,CAACvF,KAAKuH,KAAK7E,OAAO1C,KAAKC,SAEjD,MAAMuH,EAAMxH,KAAKC,MACjB,IAAIwH,EAAQzH,KAAKuH,KAAK7E,OAAO8E,EAAI,IAAMP,IACvC,IAAIS,EAAQ1H,KAAKuH,KAAK7E,OAAO8E,EAAI,IAAMF,IACvC,GAAIG,EAAQC,GAAQD,EAAOC,GAAS,CAACA,EAAOD,GAE5C,MAAME,EAAMrD,KAAKpE,IAAIF,KAAKkH,WAAYI,EAAUL,GAChD,GAAIS,EAAQD,EAAQE,EAAK,CACvBD,EAAQpD,KAAKpE,IAAIoH,EAAStH,KAAKuH,KAAKE,EAAQE,IAC5CF,EAAQnD,KAAKnE,IAAI8G,EAASjH,KAAKuH,KAAKG,EAAQC,IAC5C,MAAMtH,EAAQL,KAAK+C,cACnB,GAAI1C,EAAM2C,QAAU0E,EAAQD,EAAQE,EAAK,CACvCD,EACErH,EAAMsD,MAAKN,GAAQA,EAAKpD,OAASwH,EAAQE,KAAM1H,OAASI,EAAMA,EAAM2C,OAAS,GAAG/C,MAClFwH,EACE,IAAIpH,GAAOuD,UAAUD,MAAKN,GAAQA,EAAKpD,OAASyH,EAAQC,KAAM1H,OAASI,EAAM,GAAGJ,K,EAGtF,MAAO,CAACwH,EAAOC,E,CAGjB,eAAY7C,GACV,MAAMS,EAAStF,KAAKwC,eACpB,OAAOxC,KAAKuF,QAAU,IAAID,GAAUA,EAAO,E,CAGrC,UAAAV,CAAW3E,GACjB,OAAOqG,MAAMC,QAAQtG,GAAS,IAAIA,GAASA,C,CAGrC,WAAA2H,CAAYb,EAAgBC,GAClC,GAAIV,MAAMC,QAAQQ,IAAMT,MAAMC,QAAQS,GAAI,CACxC,OAAOD,EAAE/D,SAAWgE,EAAEhE,QAAU+D,EAAEc,OAAM,CAAC5H,EAAOkC,IAAUlC,IAAU+G,EAAE7E,I,CAExE,OAAQmE,MAAMC,QAAQQ,KAAOT,MAAMC,QAAQS,IAAMD,IAAMC,C,CAGjD,aAAAc,CAAc7H,GACpB,MAAM8H,EAAOxF,OAAOtC,GAAO+H,cAC3B,GAAID,EAAK9E,SAAS,MAAO,OAAOP,OAAOqF,EAAKE,MAAM,MAAM,KAAO,EAC/D,OAAOF,EAAK9E,SAAS,KAAO8E,EAAKE,MAAM,KAAK,GAAGjF,OAAS,C,CAGlD,IAAAuE,CAAKtH,EAAegH,EAAUjH,KAAK2G,QAASW,EAAUtH,KAAK4G,SACjE,MAAMvG,EAAQL,KAAK+C,cAAcK,QAAOC,GAAQA,EAAKpD,OAASgH,GAAW5D,EAAKpD,OAASqH,IACvF,GAAIjH,EAAM2C,OACR,OAAO3C,EAAM6H,QAAO,CAACC,EAAS9E,IAC5BiB,KAAK8D,IAAI/E,EAAKpD,MAAQA,GAASqE,KAAK8D,IAAID,EAAQlI,MAAQA,GAASoD,EAAO8E,IACxElI,MACJ,GAAID,KAAKI,OAAS,MAChB,OAAOkE,KAAKpE,IAAIoH,EAAShD,KAAKnE,IAAI8G,EAASvE,OAAO0D,SAASnG,GAASA,EAAQgH,IAC9E,MAAMoB,EAAY3F,OAAO0D,SAASnG,GAASA,EAAQgH,EACnD,MAAMqB,EAAUrB,EAAU3C,KAAKiE,OAAOF,EAAYpB,GAAWjH,KAAKwG,UAAYxG,KAAKwG,SACnF,MAAMgC,EAAYlE,KAAKpE,IACrB,GACAoE,KAAKnE,IACHH,KAAK8H,cAAcb,GACnBjH,KAAK8H,cAAcR,GACnBtH,KAAK8H,cAAc9H,KAAKwG,YAG5B,OAAO9D,OAAO4B,KAAKpE,IAAIoH,EAAShD,KAAKnE,IAAI8G,EAASqB,IAAUG,QAAQD,G,CAG9D,OAAAE,CAAQzI,GACd,OAASA,EAAQD,KAAK2G,UAAY3G,KAAK4G,QAAU5G,KAAK2G,SAAY,G,CAG5D,UAAArD,CAAWnB,EAAemD,EAAStF,KAAKwC,gBAC9C,OAAOxC,KAAKuF,SAAWpD,IAAU,EAC7BmC,KAAKpE,IAAIF,KAAK4G,QAAStB,EAAO,GAAKtF,KAAKkH,YACxClH,KAAK2G,O,CAGH,UAAApD,CAAWpB,EAAemD,EAAStF,KAAKwC,gBAC9C,OAAOxC,KAAKuF,SAAWpD,IAAU,EAC7BmC,KAAKnE,IAAIH,KAAK2G,QAASrB,EAAO,GAAKtF,KAAKkH,YACxClH,KAAK4G,O,CAGH,UAAAnE,CAAWN,EAAeuB,GAChC,MAAMiF,EAAW3I,KAAK6E,YACtB,MAAMS,EAAStF,KAAKwC,eACpB,MAAMoG,EAActE,KAAKpE,IACvBF,KAAKuD,WAAWpB,EAAOmD,GACvBhB,KAAKnE,IACHH,KAAKsD,WAAWnB,EAAOmD,GACvBtF,KAAKuH,KAAK7D,EAAM1D,KAAKsD,WAAWnB,EAAOmD,GAAStF,KAAKuD,WAAWpB,EAAOmD,MAG3EA,EAAOnD,GAASyG,EAChB,MAAMC,EAAyB7I,KAAKuF,QAAU,IAAID,GAAUA,EAAO,GACnE,GAAItF,KAAK4H,YAAYe,EAAUE,GAAY,OAAO,MAElD7I,KAAKC,MAAQ4I,EACb7I,KAAK8I,SAASC,KAAK/I,KAAK4E,WAAWiE,IACnC,OAAO,I,CAGD,eAAAjG,GACN,MAAMY,EAAUxD,KAAK6E,YACrB,GAAI7E,KAAK4H,YAAYpE,EAASxD,KAAK6B,oBAAqB,OACxD7B,KAAK6B,mBAAqB7B,KAAK4E,WAAWpB,GAC1CxD,KAAKgJ,SAASD,KAAK/I,KAAK4E,WAAWpB,G,CAG7B,gBAAA6B,GACN,GAAIrF,KAAKiJ,OAASjJ,KAAKc,WAAad,KAAKkJ,gBAAkBlJ,KAAKuF,QAAS,OACzE,MAAM4D,EAAO7C,MAAM8C,KAAKpJ,KAAKyF,UAAU4D,QAA+BC,KAAIL,IACxE,IAAKA,EAAMM,GAAIN,EAAMM,GAAK,qBAAqB7J,IAC/C,OAAOuJ,EAAMM,EAAE,IAEjB,GAAIJ,EAAInG,OAAQhD,KAAKwJ,mBAAqBL,EAAIM,KAAK,I,CAG7C,cAAAC,CAAezJ,EAAekC,GACpC,MAAMwH,EACJ3J,KAAKiB,WAAWkB,IAChBnC,KAAK4J,WACL5J,KAAK+C,cAAcY,MAAKN,GAAQA,EAAKpD,QAAUA,KAAQgJ,MACzD,GAAIU,EAAU,OAAOA,EACrB,IAAIE,EACJ,IACEA,EAASC,EAAgB9J,KAAK+J,OAAQ/J,KAAKgK,eAAeC,OAAOhK,E,CACjE,MACA4J,EAAStH,OAAOtC,E,CAElB,MAAO,GAAGD,KAAKkB,cAAc2I,IAAS7J,KAAKmB,a,CAGrC,aAAA+I,CAAcjK,EAAekC,GACnC,GACEnC,KAAK+C,cAAcoH,MAAK9G,GAAQA,EAAKpD,QAAUA,GAASoD,EAAK4F,SAC7DjJ,KAAKiB,WAAWkB,IAChBnC,KAAK4J,WACL5J,KAAKkB,aACLlB,KAAKmB,aACLnB,KAAKgK,cACL,CACA,OAAOhK,KAAK0J,eAAezJ,EAAOkC,E,CAEpC,OAAOiI,S,CAkFD,cAAAC,CAAenI,GACrB,MAAMoI,EAAUtK,KAAKgC,UACrB,IAAKsI,EAAS,OAAO,EACrB,MAAMC,EAAOD,EAAQE,wBACrB,MAAMC,EAAQzK,KAAKiE,GAAGyG,cAA2B,kBACjD,MAAMC,EAAYF,EACdzK,KAAKS,cAAgB,aACnBgK,EAAMG,YACNH,EAAMI,aACR,EAIJ,MAAMC,EAAQH,EAAY,EAE1B,GAAI3K,KAAKS,cAAgB,WAAY,CACnC,MAAMsK,EAASzG,KAAKnE,IAAI,EAAGoK,EAAKS,OAASF,EAAQ,GACjD,OAAOxG,KAAKpE,IAAI,EAAGoE,KAAKnE,IAAI,GAAIoK,EAAKU,OAASH,EAAQ5I,EAAMgJ,SAAWH,G,CAGzE,MAAMA,EAASzG,KAAKnE,IAAI,EAAGoK,EAAKY,MAAQL,EAAQ,GAChD,MAAMpC,GAAWxG,EAAMkJ,QAAUb,EAAKc,KAAOP,GAASC,EACtD,OAAOzG,KAAKpE,IAAI,EAAGoE,KAAKnE,IAAI,EAAGuI,G,CAGzB,gBAAAhE,CAAiBxC,GACvB,OAAOlC,KAAKuH,KAAKvH,KAAK2G,QAAU3G,KAAKqK,eAAenI,IAAUlC,KAAK4G,QAAU5G,KAAK2G,S,CAG5E,iBAAAhC,CAAkB1E,EAAeoC,GACvC,MAAMiJ,EACJjJ,aAAkBxC,EAAcwC,EAAOkJ,QAAqB,kBAAoB,KAClF,GAAID,GAAeE,QAAQ,SAAU,OAAO9I,OAAO4I,EAAcE,QAAQ,UACzE,IAAKxL,KAAKuF,QAAS,OAAO,EAE1B,MAAMD,EAAStF,KAAKwC,eACpB,MAAMiJ,EAAgBnH,KAAK8D,IAAInI,EAAQqF,EAAO,IAC9C,MAAMoG,EAAgBpH,KAAK8D,IAAInI,EAAQqF,EAAO,IAC9C,GAAImG,IAAkBC,EAAe,OAAOzL,GAASqF,EAAO,GAAK,EAAI,EACrE,OAAOmG,EAAgBC,EAAgB,EAAI,C,CA0BrC,qBAAAC,CAAsBzJ,EAAqB0J,GACjD,GAAI5L,KAAK8B,YAAcI,EAAMJ,UAAW,OACxC,GAAI9B,KAAKgC,WAAW6J,kBAAkB3J,EAAMJ,WAC1C9B,KAAKgC,UAAU8J,sBAAsB5J,EAAMJ,WAC7C9B,KAAK8B,UAAY,KACjB9B,KAAKsB,SAAW,MAChBtB,KAAKwB,QAAU,KACf,IAAKoK,IAAa5L,KAAK4H,YAAY5H,KAAK+B,kBAAmB/B,KAAK6E,aAC9D7E,KAAK4C,iB,CAGD,WAAAmJ,CAAY9L,EAAekC,GACjC,MAAM6J,EACJ7J,IAAU,EACLnC,KAAKgM,SAAW,GAAGhM,KAAK0B,oBACzB,GAAG1B,KAAKgM,SAAW,GAAGhM,KAAK0B,0BACjC,MAAMuK,EAAa9J,IAAU,EAAInC,KAAKe,WAAaf,KAAKgB,SACxD,MAAMkL,EAAalM,KAAKuF,QACpB6E,UACCpK,KAAKkJ,iBAAmBlJ,KAAKiJ,MAAQjJ,KAAK2B,QAAU3B,KAAKwJ,oBAC9D,MAAM2C,EAAcnM,KAAKuF,QAAU0G,EAAaC,EAAa9B,UAAYpK,KAAKc,UAE9E,OACEsL,EAAA,OACEC,MAAO,CACLC,cAAe,KACf,wBAAyBnK,IAAUnC,KAAKyB,kBACzC,aACWc,OAAOJ,GACnBoK,MAAO,CAAE,wBAAyBhK,OAAOvC,KAAK0I,QAAQzI,MAEtDmM,EAAA,SACEC,MAAM,gBACNG,KAAK,QACLjD,GAAIyC,EACJ9L,IAAKF,KAAKsD,WAAWnB,GACrBhC,IAAKH,KAAKuD,WAAWpB,GACrB/B,KAAMJ,KAAK+C,cAAcC,QAAUhD,KAAKI,OAAS,MAAQ,MAAQJ,KAAKwG,SACtEvG,MAAOA,EACPU,SAAUX,KAAKsC,WAAU,aACb6J,EAAW,kBACND,EAAU,mBACTlM,KAAKyM,gBAAe,iBACtBzM,KAAKkK,cAAcjK,EAAOkC,GAAM,mBAC9BnC,KAAKS,cAAgB,WAAa,WAAa2J,UAAS,gBAC3DpK,KAAKY,SAAW,OAASwJ,UACxCsC,QAAUxK,GAAiBlC,KAAKiC,kBAAkBC,EAAOC,GACzDwK,SAAU3M,KAAK2C,mBACfiK,UAAW1K,GAASlC,KAAK6C,cAAcX,EAAOC,GAC9C0K,QAAS,IAAM7M,KAAK6D,YAAY1B,GAChC2K,OAAQ9M,KAAK8D,aAEfsI,EAAA,QAAMC,MAAM,uBAAsB,cAAa,QAC7CD,EAAA,QAAMC,MAAM,wB,CAMpB,MAAAU,GACE,MAAMzH,EAAStF,KAAKwC,eACpB,MAAMwK,EAAQ1H,EAAO,GACrB,MAAM2H,EAAO3H,EAAOA,EAAOtC,OAAS,GACpC,MAAMkK,EAAelN,KAAKgM,SAAW,GAAGhM,KAAK0B,oBAC7C,MAAMyL,GAASnN,KAAK4H,YAAY5H,KAAK6E,YAAa7E,KAAK4B,cACvD,MAAMwL,EAAe9H,EAClBgE,KAAI,CAACrJ,EAAOkC,IAAUnC,KAAK0J,eAAezJ,EAAOkC,KACjDsH,KAAK,IAAIzJ,KAAKoB,mBAEjB,OACEgL,EAACiB,EAAI,CAAAnK,IAAA,2DACYlD,KAAKsC,WAAa,OAAS8H,UAC1CiC,MAAO,CACLiB,OAAQ,KACR,iBAAkB,KAClB,CAAC,WAAWtN,KAAKQ,QAAS,KAC1B,CAAC,WAAWR,KAAKS,eAAgB,KACjC,CAAC,iBAAiBT,KAAKU,kBAAmB,KAC1C,gBAAiBV,KAAKuF,QACtB,gBAAiBvF,KAAK+C,cAAcC,OAAS,EAC7C,sBAAuBhD,KAAK+C,cAAcoH,MAAK9G,GAAQkK,QAAQlK,EAAK4F,SACpE,mBAAoBjJ,KAAKY,SACzB,sBAAuBZ,KAAKsC,YAC7B,mBACiBtC,KAAKS,YAAW,gBACnBT,KAAKsC,WAAa,GAAK8H,UAAS,gBAChCpK,KAAKY,SAAW,GAAKwJ,UAAS,gBAC9BpK,KAAKsB,SAAW,GAAK8I,UAAS,eAC/BpK,KAAKuB,QAAU,GAAK6I,UAAS,cAC/B,GAAE,aACF+C,EAAQ,GAAK/C,UAAS,eACpBpK,KAAKwB,QAAU,GAAK4I,UAAS,cAC9BpK,KAAKsC,WAAa,GAAK8H,UACpCoD,QAASxN,KAAKmE,kBAEZnE,KAAKiJ,OAASjJ,KAAKO,YACnB6L,EAAA,OAAAlJ,IAAA,2CAAKmJ,MAAM,qBACRrM,KAAKiJ,OACJmD,EAAA,WAAAlJ,IAAA,2CACEmJ,MAAM,gBACNoB,GAAG,QACHC,QAAQ,kBACRC,MAAM,UACNC,SAAQ,KACRC,IAAKX,EACLY,OAAQ9N,KAAK2B,SAEZ3B,KAAKiJ,OAGTjJ,KAAKO,WACJ6L,EAAA,WAAAlJ,IAAA,2CACEmJ,MAAM,gBACNoB,GAAG,OACHC,QAAQ,kBACRC,MAAM,UACNI,YAAY,gBAEXX,IAKThB,EAAA,OAAAlJ,IAAA,2CACEmJ,MAAM,kBACN2B,IAAKC,IACHjO,KAAKgC,UAAYiM,GAAW,IAAI,EAElC1B,MACE,CACE,wBAAyBhK,OAAOvC,KAAKuF,QAAUvF,KAAK0I,QAAQsE,GAAS,GACrE,sBAAuBzK,OAAOvC,KAAK0I,QAAQuE,KAG/CiB,cAAelO,KAAKwE,kBACpB2J,cAAenO,KAAKiF,kBACpBmJ,YAAclM,GAAwBlC,KAAK2L,sBAAsBzJ,EAAO,OACxEmM,gBAAkBnM,GAAwBlC,KAAK2L,sBAAsBzJ,EAAO,OAE5EkK,EAAA,OAAAlJ,IAAA,2CAAKmJ,MAAM,eAAc,cAAa,QACpCD,EAAA,OAAAlJ,IAAA,2CAAKmJ,MAAM,uBAEZrM,KAAK+C,cAAcuG,KAAIjG,GACtB+I,EAAA,QACEC,MAAM,eAAc,YAElBhJ,EAAKpD,QAAUD,KAAK2G,QAChB,QACAtD,EAAKpD,QAAUD,KAAK4G,QAClB,MACAwD,UAAS,cAEL,OACZmC,MAAO,CAAE,uBAAwBhK,OAAOvC,KAAK0I,QAAQrF,EAAKpD,UAE1DmM,EAAA,QAAMC,MAAM,sBACXhJ,EAAK4F,OACJmD,EAAA,WACEC,MAAM,qBACNoB,GAAG,OACHC,QAAQ,eACRC,MAAM,aAELtK,EAAK4F,UAKb3D,EAAOgE,KAAI,CAACrJ,EAAOkC,IAAUnC,KAAK+L,YAAY9L,EAAOkC,M","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["sliderCss","sliderId","sliderExternalLabelId","Slider","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","min","max","step","ticks","minStepsBetweenValues","showValue","size","orientation","thumbAlignment","disabled","readOnly","isInactive","ariaLabel","startLabel","endLabel","valueTexts","valuePrefix","valueSuffix","rangeSeparator","formDisabled","dragging","focused","touched","activeThumbIndex","generatedId","labelId","initialValue","lastCommittedValue","pointerId","pointerStartValue","controlEl","handleNativeInput","event","index","input","target","isDisabled","String","resolvedValues","setValueAt","Number","handleNativeChange","commitIfChanged","handleKeyDown","keys","resolvedTicks","length","includes","key","preventDefault","filter","tick","allowedMin","allowedMax","current","forward","next","find","reverse","handleFocus","handleBlur","relatedTarget","Node","el","contains","handleHostClick","inputs","querySelectorAll","Math","focus","handlePointerDown","button","valueFromPointer","closestThumbIndex","cloneValue","publicValue","setPointerCapture","requestAnimationFrame","preventScroll","handlePointerMove","componentWillLoad","syncFormValue","componentDidLoad","syncNativeLabels","values","isRange","setRepeatedFormControlValue","internals","name","inactive","setFormControlValue","state","formDisabledCallback","formResetCallback","formStateRestoreCallback","restored","restoreNumberArrayFormState","restoreStringFormState","isFinite","setFocus","Array","isArray","safeStep","unique","Map","safeMin","safeMax","set","sort","a","b","minimum","minimumGap","steps","floor","span","maximum","snap","raw","lower","upper","gap","valuesEqual","every","decimalPlaces","text","toLowerCase","split","reduce","nearest","abs","candidate","stepped","round","precision","toFixed","percent","previous","constrained","nextValue","dsChange","emit","dsCommit","label","ariaLabelledby","ids","from","labels","map","id","externalLabelledby","join","formattedValue","authored","valueText","number","numberFormatter","locale","formatOptions","format","ariaValueText","some","undefined","pointerPercent","control","rect","getBoundingClientRect","endpoint","querySelector","endpointSize","offsetWidth","offsetHeight","inset","travel","height","bottom","clientY","width","clientX","left","targetElement","closest","dataset","lowerDistance","upperDistance","endPointerInteraction","canceled","hasPointerCapture","releasePointerCapture","renderThumb","inputId","rangeLabel","labelledby","directLabel","h","class","slider__thumb","style","type","ariaDescribedby","onInput","onChange","onKeyDown","onFocus","onBlur","render","first","last","firstInputId","dirty","valueDisplay","Host","slider","Boolean","onClick","as","variant","color","emphasis","for","textId","fontFeature","ref","element","onPointerDown","onPointerMove","onPointerUp","onPointerCancel"],"sources":["src/wc/components/Slider/Slider.css?tag=ds-slider&encapsulation=scoped","src/wc/components/Slider/Slider.tsx"],"sourcesContent":["@import '../../utils/control-inactive.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n --ds-slider-control-size: var(--dimension-size-400);\n --ds-slider-track-size: var(--dimension-size-100);\n --ds-slider-thumb-size: calc(\n var(--ds-slider-track-size) + var(--dimension-space-050) + var(--dimension-space-050)\n );\n --ds-slider-endpoint-size: var(--ds-slider-track-size);\n --ds-slider-thumb-overhang: calc(\n (var(--ds-slider-thumb-size) - var(--ds-slider-endpoint-size)) / 2\n );\n --ds-slider-track-stroke: var(--dimension-stroke-width-012);\n --ds-slider-vertical-length: calc(var(--dimension-size-800) * 3);\n box-sizing: border-box;\n width: 100%;\n color: var(--color-foreground-primary);\n}\n\n:host(.slider--sm) {\n --ds-slider-control-size: var(--dimension-size-300);\n --ds-slider-track-size: var(--dimension-size-075);\n}\n\n:host(.slider--xs) {\n --ds-slider-control-size: var(--dimension-size-200);\n --ds-slider-track-size: var(--dimension-size-050);\n}\n\n:host(.slider--thumb-center) {\n --ds-slider-endpoint-size: var(--ds-slider-thumb-size);\n}\n\n:host(.slider--vertical) {\n width: fit-content;\n min-width: var(--dimension-form-width-xs);\n}\n\n.slider__label-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.slider__label {\n min-width: 0;\n}\n\n.slider__value {\n flex-shrink: 0;\n}\n\n.slider__control {\n position: relative;\n width: 100%;\n height: var(--ds-slider-control-size);\n border-radius: var(--dimension-radius-half);\n cursor: default;\n touch-action: none;\n user-select: none;\n}\n\n:host(.slider--vertical) .slider__control {\n align-self: center;\n width: var(--ds-slider-control-size);\n height: var(--ds-slider-vertical-length);\n}\n\n:host(.slider--readonly) .slider__control {\n cursor: default;\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity) on the host. */\n:host(.ds-control-inactive) .slider__control {\n cursor: not-allowed;\n}\n\n.slider__rail {\n position: absolute;\n top: 50%;\n right: 0;\n left: 0;\n height: var(--ds-slider-track-size);\n overflow: hidden;\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-background-faint-neutral);\n box-shadow: inset 0 0 0 var(--ds-slider-track-stroke) var(--color-border-tertiary);\n transform: translateY(-50%);\n pointer-events: none;\n}\n\n:host(.slider--thumb-center) .slider__rail {\n right: calc(var(--ds-slider-thumb-size) / 2);\n left: calc(var(--ds-slider-thumb-size) / 2);\n}\n\n.slider__indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-end-pct, 0) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n border-radius: inherit;\n background-color: var(--color-background-bold-brand);\n}\n\n:host(.slider--range) .slider__indicator {\n left: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-start-pct, 0) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n width: calc(\n ((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n}\n\n:host(.slider--thumb-center) .slider__indicator {\n left: calc(var(--ds-slider-start-pct, 0) * 1%);\n width: calc((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) * 1%);\n}\n\n.slider__thumb {\n position: absolute;\n top: 50%;\n left: calc(\n (var(--ds-slider-thumb-pct, 0) / 100) * (100% - var(--ds-slider-endpoint-size)) -\n var(--ds-slider-thumb-overhang)\n );\n width: var(--ds-slider-thumb-size);\n height: var(--ds-slider-thumb-size);\n transform: translateY(-50%);\n z-index: 1;\n}\n\n.slider__thumb--active {\n z-index: 2;\n}\n\n.slider__input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n opacity: 0;\n appearance: none;\n pointer-events: none;\n z-index: 2;\n}\n\n.slider__thumb-visual {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n overflow: visible;\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n box-shadow: var(--effect-elevation-elevated-md);\n pointer-events: none;\n transition:\n background-color var(--effect-motion-short-2),\n box-shadow var(--effect-motion-short-2);\n}\n\n.slider__thumb-wash {\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background-color: transparent;\n transition: background-color var(--effect-motion-short-2);\n}\n\n.slider__thumb-orb {\n position: absolute;\n top: 50%;\n left: 50%;\n box-sizing: border-box;\n width: var(--ds-slider-track-size);\n height: var(--ds-slider-track-size);\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-background-bold-brand);\n box-shadow: inset 0 0 0 var(--ds-slider-track-stroke) var(--color-border-tertiary);\n transform: translate(-50%, -50%);\n}\n\n@media (hover: hover) and (pointer: fine) {\n :host(:not(.slider--readonly):not(.ds-control-inactive))\n .slider__thumb:hover\n .slider__thumb-wash {\n background-color: var(--color-interaction-hover);\n }\n}\n\n:host([data-dragging]:not(.slider--readonly):not(.ds-control-inactive))\n .slider__thumb--active\n .slider__thumb-wash {\n background-color: var(--color-interaction-pressed);\n}\n\n.slider__input:focus-visible + .slider__thumb-visual,\n:host([data-review-focus]) .slider__thumb[data-index='0'] .slider__thumb-visual {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n:host(.slider--vertical) .slider__rail {\n top: 0;\n right: auto;\n bottom: 0;\n left: 50%;\n width: var(--ds-slider-track-size);\n height: auto;\n transform: translateX(-50%);\n}\n\n:host(.slider--vertical.slider--thumb-center) .slider__rail {\n top: calc(var(--ds-slider-thumb-size) / 2);\n bottom: calc(var(--ds-slider-thumb-size) / 2);\n}\n\n:host(.slider--vertical) .slider__indicator {\n top: auto;\n right: 0;\n bottom: 0;\n left: 0;\n width: auto;\n height: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-end-pct, 0) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n}\n\n:host(.slider--vertical.slider--range) .slider__indicator {\n bottom: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-start-pct, 0) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n height: calc(\n ((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n}\n\n:host(.slider--vertical.slider--thumb-center) .slider__indicator {\n bottom: calc(var(--ds-slider-start-pct, 0) * 1%);\n height: calc((var(--ds-slider-end-pct, 0) - var(--ds-slider-start-pct, 0)) * 1%);\n}\n\n:host(.slider--vertical) .slider__thumb {\n top: auto;\n bottom: calc(\n (var(--ds-slider-thumb-pct, 0) / 100) * (100% - var(--ds-slider-endpoint-size)) -\n var(--ds-slider-thumb-overhang)\n );\n left: 50%;\n transform: translateX(-50%);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .slider__thumb-visual,\n .slider__thumb-wash {\n transition: none;\n }\n}\n\n@media (forced-colors: active) {\n .slider__rail {\n border: var(--ds-slider-track-stroke) solid var(--ds-forced-color-content);\n box-shadow: none;\n }\n\n .slider__indicator {\n background-color: var(--ds-forced-color-selected);\n }\n\n .slider__thumb-visual {\n border: var(--dimension-stroke-width-012) solid var(--ds-forced-color-control-boundary);\n background-color: var(--ds-forced-color-surface);\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n .slider__thumb-orb {\n border: var(--ds-slider-track-stroke) solid var(--ds-forced-color-on-selected);\n background-color: var(--ds-forced-color-selected);\n box-shadow: none;\n }\n\n .slider__input:focus-visible + .slider__thumb-visual,\n :host([data-review-focus]) .slider__thumb[data-index='0'] .slider__thumb-visual {\n outline-color: var(--ds-forced-color-selected);\n }\n}\n\n.slider__tick {\n position: absolute;\n top: calc(\n 50% + var(--ds-slider-track-size) / 2 + var(--dimension-space-050) + var(--dimension-space-012)\n );\n left: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n transform: translateX(-50%);\n pointer-events: none;\n}\n.slider__tick-mark {\n display: block;\n width: var(--dimension-stroke-width-025);\n height: var(--dimension-stroke-width-025);\n border-radius: var(--dimension-radius-half);\n background: var(--color-foreground-tertiary);\n}\n.slider__tick-label {\n width: max-content;\n max-width: none;\n position: absolute;\n top: calc(100% + var(--dimension-space-050));\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n:host(:not(.slider--vertical)) .slider__control {\n container-type: inline-size;\n}\n:host(:not(.slider--vertical)) .slider__tick-label {\n /* Center on the tick, clamping only when the text reaches the control edges. */\n --ds-slider-label-anchor: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100cqw - var(--ds-slider-endpoint-size))\n );\n transform: translateX(\n clamp(\n calc(-1 * var(--ds-slider-label-anchor)),\n -50%,\n calc(100cqw - var(--ds-slider-label-anchor) - 100%)\n )\n );\n}\n:host(.slider--tick-labels:not(.slider--vertical)) .slider__control {\n margin-bottom: var(--dimension-space-200);\n}\n:host(.slider--vertical) .slider__tick {\n top: auto;\n bottom: calc(\n var(--ds-slider-endpoint-size) / 2 + (var(--ds-slider-tick-pct) / 100) *\n (100% - var(--ds-slider-endpoint-size))\n );\n left: calc(50% + var(--ds-slider-track-size) / 2 + var(--dimension-space-050));\n transform: translateY(50%);\n}\n:host(.slider--vertical) .slider__tick-label {\n top: 50%;\n left: calc(100% + var(--dimension-space-050));\n transform: translateY(-50%);\n}\n","import { numberFormatter } from '../../utils/intl-formatters';\nimport {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n restoreNumberArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n} from '../../utils';\n\nexport interface SliderTick {\n value: number;\n label?: string;\n}\n\nexport type SliderValue = number | number[];\nexport type SliderSize = 'md' | 'sm' | 'xs';\nexport type SliderOrientation = 'horizontal' | 'vertical';\nexport type SliderThumbAlignment = 'edge' | 'center';\n\nlet sliderId = 0;\nlet sliderExternalLabelId = 0;\n\n@Component({\n tag: 'ds-slider',\n styleUrl: 'Slider.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Slider {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Current value. Assign a two-number array through the JavaScript property for a range slider. */\n @Prop({ mutable: true }) value: SliderValue = 0;\n @Prop() min: number = 0;\n @Prop() max: number = 100;\n @Prop() step: number | 'any' = 1;\n /** Explicit ticks are the selectable snap points. Empty ticks with step='any' allow smooth adjustment. */\n @Prop() ticks: SliderTick[] = [];\n /** Minimum number of steps kept between two range thumbs. */\n @Prop() minStepsBetweenValues: number = 0;\n /** Visible field label. Supply aria-label when the label is intentionally hidden. */\n @Prop() label: string | undefined;\n /** Show the formatted current value beside the visible label. */\n @Prop() showValue: boolean = true;\n @Prop() size: SliderSize = 'md';\n @Prop() orientation: SliderOrientation = 'horizontal';\n /** Align the inner orb edge with full-width rail endpoints, or its center with inset rail endpoints. */\n @Prop() thumbAlignment: SliderThumbAlignment = 'edge';\n @Prop({ reflect: true }) name: string | undefined;\n @Prop({ reflect: true }) form: string | undefined;\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Keep the value focusable and submittable while preventing changes. */\n @Prop({ reflect: true }) readOnly: boolean = false;\n @Prop() isInactive: boolean = false;\n /** Direct accessible name for a single-thumb slider without a visible label. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Id references for a visible single-thumb slider label. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Id references for supporting guidance or error text. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n /** Accessible label for the lower thumb in a range slider. */\n @Prop() startLabel: string = 'Minimum value';\n /** Accessible label for the upper thumb in a range slider. */\n @Prop() endLabel: string = 'Maximum value';\n /** Human-readable value text for a single slider or both range thumbs. */\n @Prop() valueText: string | undefined;\n /** Per-thumb human-readable value text for a range slider. Assign through the JavaScript property. */\n @Prop() valueTexts: string[] = [];\n /** Locale used for the visible value. Defaults to English (en-US). */\n @Prop() locale: string | undefined;\n /** Intl.NumberFormat options. Assign objects through the JavaScript property. */\n @Prop() formatOptions: Intl.NumberFormatOptions | undefined;\n @Prop() valuePrefix: string = '';\n @Prop() valueSuffix: string = '';\n @Prop() rangeSeparator: string = '–';\n /** Id applied to the first native range input. */\n @Prop() inputId: string | undefined;\n\n /** Emitted continuously while the value changes. */\n @Event() dsChange!: EventEmitter<SliderValue>;\n /** Emitted when a pointer or keyboard value change is committed. */\n @Event() dsCommit!: EventEmitter<SliderValue>;\n\n @State() private formDisabled = false;\n @State() private dragging = false;\n @State() private focused = false;\n @State() private touched = false;\n @State() private activeThumbIndex = 0;\n @State() private externalLabelledby: string | undefined;\n\n private readonly generatedId = `ds-slider-${++sliderId}`;\n private readonly labelId = `${this.generatedId}-label`;\n private initialValue: SliderValue = 0;\n private lastCommittedValue: SliderValue = 0;\n private pointerId: number | null = null;\n private pointerStartValue: SliderValue = 0;\n private controlEl: HTMLDivElement | null = null;\n\n componentWillLoad() {\n this.initialValue = this.cloneValue(this.publicValue);\n this.lastCommittedValue = this.cloneValue(this.publicValue);\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.syncNativeLabels();\n }\n\n @Watch('value')\n @Watch('min')\n @Watch('max')\n @Watch('step')\n @Watch('ticks')\n @Watch('minStepsBetweenValues')\n @Watch('name')\n @Watch('disabled')\n @Watch('isInactive')\n syncFormValue() {\n const values = this.resolvedValues;\n if (this.isRange) {\n setRepeatedFormControlValue(this.internals, this.name, values, {\n inactive: this.isDisabled,\n });\n } else {\n const value = String(values[0]);\n setFormControlValue(this.internals, this.name ? value : null, {\n inactive: this.isDisabled,\n state: value,\n });\n }\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.cloneValue(this.initialValue);\n this.lastCommittedValue = this.cloneValue(this.initialValue);\n this.dragging = false;\n this.focused = false;\n this.touched = false;\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (this.isRange) {\n const restored = restoreNumberArrayFormState(state, 2);\n this.value = restored.length ? restored : this.cloneValue(this.initialValue);\n } else {\n const restored = Number(restoreStringFormState(state, 'NaN'));\n if (Number.isFinite(restored)) this.value = restored;\n }\n this.lastCommittedValue = this.cloneValue(this.publicValue);\n }\n\n @Method()\n async setFocus(index: number = 0) {\n const inputs = this.el.querySelectorAll<HTMLInputElement>('.slider__input');\n inputs[Math.max(0, Math.min(index, inputs.length - 1))]?.focus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get isRange(): boolean {\n return Array.isArray(this.value);\n }\n\n private get safeStep(): number {\n const step = Number(this.step);\n return Number.isFinite(step) && step > 0 ? step : 1;\n }\n\n private get resolvedTicks(): SliderTick[] {\n const unique = new Map<number, SliderTick>();\n for (const tick of this.ticks) {\n if (Number.isFinite(tick.value) && tick.value >= this.safeMin && tick.value <= this.safeMax)\n unique.set(tick.value, tick);\n }\n return [...unique.values()].sort((a, b) => a.value - b.value);\n }\n\n private get safeMin(): number {\n return Number.isFinite(this.min) ? this.min : 0;\n }\n\n private get safeMax(): number {\n const minimum = this.safeMin;\n return Number.isFinite(this.max) && this.max > minimum ? this.max : minimum + this.safeStep;\n }\n\n private get minimumGap(): number {\n const steps = Number.isFinite(this.minStepsBetweenValues)\n ? Math.max(0, Math.floor(this.minStepsBetweenValues))\n : 0;\n const ticks = this.resolvedTicks;\n const span = ticks.length\n ? ticks[ticks.length - 1].value - ticks[0].value\n : this.safeMax - this.safeMin;\n return Math.min(span, steps * this.safeStep);\n }\n\n private get resolvedValues(): number[] {\n const minimum = this.safeMin;\n const maximum = this.safeMax;\n if (!this.isRange) return [this.snap(Number(this.value))];\n\n const raw = this.value as number[];\n let lower = this.snap(Number(raw[0] ?? minimum));\n let upper = this.snap(Number(raw[1] ?? maximum));\n if (lower > upper) [lower, upper] = [upper, lower];\n\n const gap = Math.min(this.minimumGap, maximum - minimum);\n if (upper - lower < gap) {\n upper = Math.min(maximum, this.snap(lower + gap));\n lower = Math.max(minimum, this.snap(upper - gap));\n const ticks = this.resolvedTicks;\n if (ticks.length && upper - lower < gap) {\n upper =\n ticks.find(tick => tick.value >= lower + gap)?.value ?? ticks[ticks.length - 1].value;\n lower =\n [...ticks].reverse().find(tick => tick.value <= upper - gap)?.value ?? ticks[0].value;\n }\n }\n return [lower, upper];\n }\n\n private get publicValue(): SliderValue {\n const values = this.resolvedValues;\n return this.isRange ? [...values] : values[0];\n }\n\n private cloneValue(value: SliderValue): SliderValue {\n return Array.isArray(value) ? [...value] : value;\n }\n\n private valuesEqual(a: SliderValue, b: SliderValue): boolean {\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n }\n return !Array.isArray(a) && !Array.isArray(b) && a === b;\n }\n\n private decimalPlaces(value: number): number {\n const text = String(value).toLowerCase();\n if (text.includes('e-')) return Number(text.split('e-')[1]) || 0;\n return text.includes('.') ? text.split('.')[1].length : 0;\n }\n\n private snap(value: number, minimum = this.safeMin, maximum = this.safeMax): number {\n const ticks = this.resolvedTicks.filter(tick => tick.value >= minimum && tick.value <= maximum);\n if (ticks.length)\n return ticks.reduce((nearest, tick) =>\n Math.abs(tick.value - value) < Math.abs(nearest.value - value) ? tick : nearest\n ).value;\n if (this.step === 'any')\n return Math.min(maximum, Math.max(minimum, Number.isFinite(value) ? value : minimum));\n const candidate = Number.isFinite(value) ? value : minimum;\n const stepped = minimum + Math.round((candidate - minimum) / this.safeStep) * this.safeStep;\n const precision = Math.min(\n 10,\n Math.max(\n this.decimalPlaces(minimum),\n this.decimalPlaces(maximum),\n this.decimalPlaces(this.safeStep)\n )\n );\n return Number(Math.min(maximum, Math.max(minimum, stepped)).toFixed(precision));\n }\n\n private percent(value: number): number {\n return ((value - this.safeMin) / (this.safeMax - this.safeMin)) * 100;\n }\n\n private allowedMin(index: number, values = this.resolvedValues): number {\n return this.isRange && index === 1\n ? Math.min(this.safeMax, values[0] + this.minimumGap)\n : this.safeMin;\n }\n\n private allowedMax(index: number, values = this.resolvedValues): number {\n return this.isRange && index === 0\n ? Math.max(this.safeMin, values[1] - this.minimumGap)\n : this.safeMax;\n }\n\n private setValueAt(index: number, next: number): boolean {\n const previous = this.publicValue;\n const values = this.resolvedValues;\n const constrained = Math.min(\n this.allowedMax(index, values),\n Math.max(\n this.allowedMin(index, values),\n this.snap(next, this.allowedMin(index, values), this.allowedMax(index, values))\n )\n );\n values[index] = constrained;\n const nextValue: SliderValue = this.isRange ? [...values] : values[0];\n if (this.valuesEqual(previous, nextValue)) return false;\n\n this.value = nextValue;\n this.dsChange.emit(this.cloneValue(nextValue));\n return true;\n }\n\n private commitIfChanged() {\n const current = this.publicValue;\n if (this.valuesEqual(current, this.lastCommittedValue)) return;\n this.lastCommittedValue = this.cloneValue(current);\n this.dsCommit.emit(this.cloneValue(current));\n }\n\n private syncNativeLabels() {\n if (this.label || this.ariaLabel || this.ariaLabelledby || this.isRange) return;\n const ids = (Array.from(this.internals.labels) as HTMLLabelElement[]).map(label => {\n if (!label.id) label.id = `ds-slider-label-${++sliderExternalLabelId}`;\n return label.id;\n });\n if (ids.length) this.externalLabelledby = ids.join(' ');\n }\n\n private formattedValue(value: number, index: number): string {\n const authored =\n this.valueTexts[index] ??\n this.valueText ??\n this.resolvedTicks.find(tick => tick.value === value)?.label;\n if (authored) return authored;\n let number: string;\n try {\n number = numberFormatter(this.locale, this.formatOptions).format(value);\n } catch {\n number = String(value);\n }\n return `${this.valuePrefix}${number}${this.valueSuffix}`;\n }\n\n private ariaValueText(value: number, index: number): string | undefined {\n if (\n this.resolvedTicks.some(tick => tick.value === value && tick.label) ||\n this.valueTexts[index] ||\n this.valueText ||\n this.valuePrefix ||\n this.valueSuffix ||\n this.formatOptions\n ) {\n return this.formattedValue(value, index);\n }\n return undefined;\n }\n\n private handleNativeInput = (event: Event, index: number) => {\n const input = event.target as HTMLInputElement;\n this.activeThumbIndex = index;\n if (this.readOnly || this.isDisabled) {\n input.value = String(this.resolvedValues[index]);\n return;\n }\n this.setValueAt(index, Number(input.value));\n };\n\n private handleNativeChange = () => {\n if (!this.readOnly && !this.isDisabled) this.commitIfChanged();\n };\n\n private handleKeyDown = (event: KeyboardEvent, index: number) => {\n const keys = [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ];\n if (!this.readOnly && this.resolvedTicks.length && keys.includes(event.key)) {\n event.preventDefault();\n if (this.isDisabled) return;\n const ticks = this.resolvedTicks.filter(\n tick => tick.value >= this.allowedMin(index) && tick.value <= this.allowedMax(index)\n );\n const current = this.resolvedValues[index];\n const forward = ['ArrowRight', 'ArrowUp', 'PageUp'].includes(event.key);\n const next =\n event.key === 'Home'\n ? ticks[0]\n : event.key === 'End'\n ? ticks[ticks.length - 1]\n : forward\n ? ticks.find(tick => tick.value > current)\n : [...ticks].reverse().find(tick => tick.value < current);\n if (next && this.setValueAt(index, next.value)) this.commitIfChanged();\n return;\n }\n if (!this.readOnly) return;\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ].includes(event.key)\n ) {\n event.preventDefault();\n }\n };\n\n private handleFocus = (index: number) => {\n this.activeThumbIndex = index;\n this.focused = true;\n };\n\n private handleBlur = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n this.focused = false;\n this.touched = true;\n };\n\n private handleHostClick = (event: MouseEvent) => {\n if (event.target !== this.el || this.isDisabled) return;\n const inputs = this.el.querySelectorAll<HTMLInputElement>('.slider__input');\n inputs[Math.min(this.activeThumbIndex, inputs.length - 1)]?.focus();\n };\n\n private pointerPercent(event: PointerEvent): number {\n const control = this.controlEl;\n if (!control) return 0;\n const rect = control.getBoundingClientRect();\n const endpoint = this.el.querySelector<HTMLElement>(\n this.thumbAlignment === 'edge' ? '.slider__thumb-orb' : '.slider__thumb'\n );\n const endpointSize = endpoint\n ? this.orientation === 'horizontal'\n ? endpoint.offsetWidth\n : endpoint.offsetHeight\n : 0;\n // Edge alignment positions the inner orb at the rail ends; the outer halo\n // may overhang. Center alignment uses the complete thumb at inset rail ends.\n const inset = endpointSize / 2;\n\n if (this.orientation === 'vertical') {\n const travel = Math.max(1, rect.height - inset * 2);\n return Math.min(1, Math.max(0, (rect.bottom - inset - event.clientY) / travel));\n }\n\n const travel = Math.max(1, rect.width - inset * 2);\n const percent = (event.clientX - rect.left - inset) / travel;\n return Math.min(1, Math.max(0, percent));\n }\n\n private valueFromPointer(event: PointerEvent): number {\n return this.snap(this.safeMin + this.pointerPercent(event) * (this.safeMax - this.safeMin));\n }\n\n private closestThumbIndex(value: number, target: EventTarget | null): number {\n const targetElement =\n target instanceof HTMLElement ? target.closest<HTMLElement>('.slider__thumb') : null;\n if (targetElement?.dataset['index']) return Number(targetElement.dataset['index']);\n if (!this.isRange) return 0;\n\n const values = this.resolvedValues;\n const lowerDistance = Math.abs(value - values[0]);\n const upperDistance = Math.abs(value - values[1]);\n if (lowerDistance === upperDistance) return value >= values[0] ? 1 : 0;\n return lowerDistance < upperDistance ? 0 : 1;\n }\n\n private handlePointerDown = (event: PointerEvent) => {\n if (event.button !== 0 || this.isDisabled || this.readOnly) return;\n event.preventDefault();\n const value = this.valueFromPointer(event);\n const index = this.closestThumbIndex(value, event.target);\n this.activeThumbIndex = index;\n this.pointerId = event.pointerId;\n this.pointerStartValue = this.cloneValue(this.publicValue);\n this.dragging = true;\n this.setValueAt(index, value);\n this.controlEl?.setPointerCapture(event.pointerId);\n requestAnimationFrame(() => {\n const input = this.el.querySelectorAll<HTMLInputElement>('.slider__input')[index];\n input?.focus({ preventScroll: true });\n });\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (this.pointerId !== event.pointerId || !this.dragging) return;\n event.preventDefault();\n this.setValueAt(this.activeThumbIndex, this.valueFromPointer(event));\n };\n\n private endPointerInteraction(event: PointerEvent, canceled: boolean) {\n if (this.pointerId !== event.pointerId) return;\n if (this.controlEl?.hasPointerCapture(event.pointerId))\n this.controlEl.releasePointerCapture(event.pointerId);\n this.pointerId = null;\n this.dragging = false;\n this.touched = true;\n if (!canceled && !this.valuesEqual(this.pointerStartValue, this.publicValue))\n this.commitIfChanged();\n }\n\n private renderThumb(value: number, index: number) {\n const inputId =\n index === 0\n ? (this.inputId ?? `${this.generatedId}-input`)\n : `${this.inputId ?? `${this.generatedId}-input`}-end`;\n const rangeLabel = index === 0 ? this.startLabel : this.endLabel;\n const labelledby = this.isRange\n ? undefined\n : (this.ariaLabelledby ?? (this.label ? this.labelId : this.externalLabelledby));\n const directLabel = this.isRange ? rangeLabel : labelledby ? undefined : this.ariaLabel;\n\n return (\n <div\n class={{\n slider__thumb: true,\n 'slider__thumb--active': index === this.activeThumbIndex,\n }}\n data-index={String(index)}\n style={{ '--ds-slider-thumb-pct': String(this.percent(value)) } as Record<string, string>}\n >\n <input\n class=\"slider__input\"\n type=\"range\"\n id={inputId}\n min={this.allowedMin(index)}\n max={this.allowedMax(index)}\n step={this.resolvedTicks.length || this.step === 'any' ? 'any' : this.safeStep}\n value={value}\n disabled={this.isDisabled}\n aria-label={directLabel}\n aria-labelledby={labelledby}\n aria-describedby={this.ariaDescribedby}\n aria-valuetext={this.ariaValueText(value, index)}\n aria-orientation={this.orientation === 'vertical' ? 'vertical' : undefined}\n aria-readonly={this.readOnly ? 'true' : undefined}\n onInput={(event: Event) => this.handleNativeInput(event, index)}\n onChange={this.handleNativeChange}\n onKeyDown={event => this.handleKeyDown(event, index)}\n onFocus={() => this.handleFocus(index)}\n onBlur={this.handleBlur}\n />\n <span class=\"slider__thumb-visual\" aria-hidden=\"true\">\n <span class=\"slider__thumb-wash\" />\n <span class=\"slider__thumb-orb\" />\n </span>\n </div>\n );\n }\n\n render() {\n const values = this.resolvedValues;\n const first = values[0];\n const last = values[values.length - 1];\n const firstInputId = this.inputId ?? `${this.generatedId}-input`;\n const dirty = !this.valuesEqual(this.publicValue, this.initialValue);\n const valueDisplay = values\n .map((value, index) => this.formattedValue(value, index))\n .join(` ${this.rangeSeparator} `);\n\n return (\n <Host\n aria-disabled={this.isDisabled ? 'true' : undefined}\n class={{\n slider: true,\n 'ds-field-stack': true,\n [`slider--${this.size}`]: true,\n [`slider--${this.orientation}`]: true,\n [`slider--thumb-${this.thumbAlignment}`]: true,\n 'slider--range': this.isRange,\n 'slider--ticks': this.resolvedTicks.length > 0,\n 'slider--tick-labels': this.resolvedTicks.some(tick => Boolean(tick.label)),\n 'slider--readonly': this.readOnly,\n 'ds-control-inactive': this.isDisabled,\n }}\n data-orientation={this.orientation}\n data-disabled={this.isDisabled ? '' : undefined}\n data-readonly={this.readOnly ? '' : undefined}\n data-dragging={this.dragging ? '' : undefined}\n data-focused={this.focused ? '' : undefined}\n data-filled=\"\"\n data-dirty={dirty ? '' : undefined}\n data-touched={this.touched ? '' : undefined}\n data-valid={!this.isDisabled ? '' : undefined}\n onClick={this.handleHostClick}\n >\n {(this.label || this.showValue) && (\n <div class=\"slider__label-row\">\n {this.label && (\n <ds-text\n class=\"slider__label\"\n as=\"label\"\n variant=\"text-body-small\"\n color=\"primary\"\n emphasis\n for={firstInputId}\n textId={this.labelId}\n >\n {this.label}\n </ds-text>\n )}\n {this.showValue && (\n <ds-text\n class=\"slider__value\"\n as=\"span\"\n variant=\"text-body-small\"\n color=\"primary\"\n fontFeature=\"tabular-nums\"\n >\n {valueDisplay}\n </ds-text>\n )}\n </div>\n )}\n <div\n class=\"slider__control\"\n ref={element => {\n this.controlEl = element ?? null;\n }}\n style={\n {\n '--ds-slider-start-pct': String(this.isRange ? this.percent(first) : 0),\n '--ds-slider-end-pct': String(this.percent(last)),\n } as Record<string, string>\n }\n onPointerDown={this.handlePointerDown}\n onPointerMove={this.handlePointerMove}\n onPointerUp={(event: PointerEvent) => this.endPointerInteraction(event, false)}\n onPointerCancel={(event: PointerEvent) => this.endPointerInteraction(event, true)}\n >\n <div class=\"slider__rail\" aria-hidden=\"true\">\n <div class=\"slider__indicator\" />\n </div>\n {this.resolvedTicks.map(tick => (\n <span\n class=\"slider__tick\"\n data-edge={\n tick.value === this.safeMin\n ? 'start'\n : tick.value === this.safeMax\n ? 'end'\n : undefined\n }\n aria-hidden=\"true\"\n style={{ '--ds-slider-tick-pct': String(this.percent(tick.value)) }}\n >\n <span class=\"slider__tick-mark\" />\n {tick.label && (\n <ds-text\n class=\"slider__tick-label\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"secondary\"\n >\n {tick.label}\n </ds-text>\n )}\n </span>\n ))}\n {values.map((value, index) => this.renderThumb(value, index))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{S as o,d as s}from"./p-
|
|
1
|
+
import{S as o,d as s}from"./p-eKnJNQtL.js";const t=o;const n=s;export{t as DsSwatchPicker,n as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-swatch-picker.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{S as o,d as s}from"./p-
|
|
1
|
+
import{S as o,d as s}from"./p-C2e7BkNn.js";const t=o;const n=s;export{t as DsSwitch,n as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-switch.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{T as
|
|
1
|
+
import{T as s,d as o}from"./p-4sBUSsqs.js";const t=s;const p=o;export{t as DsTabGroup,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-tab-group.js.map
|