UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 29.9 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */ import{a as ie,b as H}from"./53QSHFZE.js";import{a as Q,j as S}from"./4PBM4ZLG.js";import{a as ae}from"./VO26MCLG.js";import{a as te}from"./MN4PER7E.js";import{c as Y,d as Z,e as ee}from"./LCVNP3EO.js";import{c as N,e as j,f as G,h as K}from"./GTD2HZYS.js";import{a as W}from"./77EQHO2G.js";import{a as q}from"./HXIMHC6U.js";import{a as J}from"./K7LRDT5O.js";import{a as U}from"./SQ6RHDDF.js";import{a as X}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{p as R,w as M}from"./ZQBZ5QPB.js";import{a as I}from"./CIYXQ5G6.js";import{C as F,D as T,E as B,F as p,G as _,I as O,J as E,Q as A,g as z,h as V,l as C,p as w}from"./G7AHLVJ5.js";var l={container:"container",containerRange:"container--range",graph:"graph",handle:"handle",handleExtension:"handle-extension",handleLabel:"handle__label",handleLabelMinValue:"handle__label--minValue",handleLabelValue:"handle__label--value",hyphen:"hyphen",hyphenWrap:"hyphen--wrap",static:"static",thumb:"thumb",thumbActive:"thumb--active",thumbContainer:"thumb-container",thumbMinValue:"thumb--minValue",thumbPrecise:"thumb--precise",thumbValue:"thumb--value",tick:"tick",tickActive:"tick--active",tickLabel:"tick__label",tickMax:"tick__label--max",tickMin:"tick__label--min",ticks:"ticks",track:"track",trackRange:"track__range",transformed:"transformed",scale:$=>`scale--${$}`},le="calcite-slider",D={validationMessage:"validationMessage",host:$=>`${le}-${$}`},ne=250,re=z`@charset "UTF-8";:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}.scale--s{--calcite-slider-handle-size: .625rem;--calcite-slider-handle-extension-height: .4rem;--calcite-slider-container-font-size: var(--calcite-font-size--3)}.scale--s .handle__label,.scale--s .tick__label{line-height:.75rem}.scale--m{--calcite-slider-handle-size: .875rem;--calcite-slider-handle-extension-height: .5rem;--calcite-slider-container-font-size: var(--calcite-font-size--2)}.scale--m .handle__label,.scale--m .tick__label{line-height:1rem}.scale--l{--calcite-slider-handle-size: 1rem;--calcite-slider-handle-extension-height: .65rem;--calcite-slider-container-font-size: var(--calcite-font-size--1)}.scale--l .handle__label,.scale--l .tick__label{line-height:1rem}.handle__label,.tick__label{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-slider-text-color, var(--calcite-color-text-2));font-size:var(--calcite-slider-container-font-size)}:host{display:block}:host .validation-container{padding-block-start:0!important}.container{position:relative;display:block;overflow-wrap:normal;word-break:normal;padding-inline:calc(var(--calcite-slider-handle-size) * .5);padding-block:calc(var(--calcite-slider-handle-size) * .5);margin-block:calc(var(--calcite-slider-handle-size) * .5);margin-inline:0;--calcite-slider-full-handle-height: calc( var(--calcite-slider-handle-size) + var(--calcite-slider-handle-extension-height) );touch-action:none;-webkit-user-select:none;user-select:none}:host([disabled]) .track__range,:host([disabled]) .tick--active{background-color:var(--calcite-color-text-3)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}.scale--s .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -.375rem}.scale--m .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -.5rem}.scale--l .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -.55rem}:host([precise]:not([has-histogram])) .container .thumb--value{--calcite-slider-thumb-y-offset: calc(var(--calcite-slider-full-handle-height) * -1)}.thumb-container{position:relative;max-inline-size:100%}.thumb{--calcite-slider-thumb-x-offset: calc(var(--calcite-slider-handle-size) * .5);position:absolute;margin:0;display:flex;cursor:pointer;flex-direction:column;align-items:center;border-style:none;background-color:transparent;padding:0;font-family:inherit;outline:2px solid transparent;outline-offset:2px;transform:translate(var(--calcite-slider-thumb-x-offset),var(--calcite-slider-thumb-y-offset))}.thumb .handle__label{white-space:nowrap}.thumb .handle__label.static,.thumb .handle__label.transformed{position:absolute;inset-block:0px;opacity:0}.thumb .handle__label.hyphen:after{content:"—";display:inline-block;inline-size:1em}.thumb .handle__label.hyphen--wrap{display:flex}.thumb .handle{box-sizing:border-box;border-radius:9999px;outline-color:transparent;background-color:var(--calcite-slider-handle-fill-color, var(--calcite-color-foreground-1));block-size:var(--calcite-slider-handle-size);inline-size:var(--calcite-slider-handle-size);box-shadow:0 0 0 2px var(--calcite-color-text-3) inset;transition:border var(--calcite-internal-animation-timing-medium) ease,background-color var(--calcite-internal-animation-timing-medium) ease,box-shadow var(--calcite-animation-timing) ease}.thumb .handle-extension{inline-size:.125rem;block-size:var(--calcite-slider-handle-extension-height);background-color:var(--calcite-slider-handle-extension-color, var(--calcite-color-text-3))}.thumb:hover .handle{box-shadow:0 0 0 3px var(--calcite-color-brand) inset}.thumb:hover .handle-extension{background-color:var(--calcite-slider-accent-color, var(--calcite-color-brand))}.thumb:focus .handle{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(var(--calcite-spacing-base) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}.thumb:focus .handle-extension{background-color:var(--calcite-slider-accent-color, var(--calcite-color-brand))}.thumb.thumb--minValue{transform:translate(calc(var(--calcite-slider-thumb-x-offset) * -1),var(--calcite-slider-thumb-y-offset))}.thumb.thumb--precise{--calcite-slider-thumb-y-offset: -.125rem}:host([label-handles]) .thumb{--calcite-slider-thumb-x-offset: 50%}:host([label-handles]):host(:not([has-histogram])) .scale--s .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -1.4375rem}:host([label-handles]):host(:not([has-histogram])) .scale--m .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -1.875rem}:host([label-handles]):host(:not([has-histogram])) .scale--l .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset: -2rem}:host([has-histogram][label-handles]) .handle__label,:host([label-handles]:not([has-histogram])) .thumb--minValue.thumb--precise .handle__label{margin-block-start:.5em}:host(:not([has-histogram]):not([precise])) .handle__label,:host([label-handles]:not([has-histogram])) .thumb--value .handle__label{margin-block-end:.5em}:host([label-handles][precise]):host(:not([has-histogram])) .scale--s .thumb--value{--calcite-slider-thumb-y-offset: -2.075rem}:host([label-handles][precise]):host(:not([has-histogram])) .scale--m .thumb--value{--calcite-slider-thumb-y-offset: -2.75rem}:host([label-handles][precise]):host(:not([has-histogram])) .scale--l .thumb--value{--calcite-slider-thumb-y-offset: -3.0625rem}.thumb:focus .handle,.thumb--active .handle{background-color:var(--calcite-slider-accent-color, var(--calcite-color-brand));box-shadow:0 0 8px #00000029}.thumb:hover.thumb--precise:after,.thumb:focus.thumb--precise:after,.thumb--active.thumb--precise:after{background-color:var(--calcite-slider-accent-color, var(--calcite-color-brand))}.track{position:relative;block-size:.125rem;border-radius:0;background-color:var(--calcite-slider-track-color, var(--calcite-color-border-2));transition:all var(--calcite-internal-animation-timing-medium) ease-in}.track__range{position:absolute;inset-block-start:0px;block-size:.125rem;background-color:var(--calcite-slider-track-fill-color, var(--calcite-color-brand))}.container--range .track__range:hover{cursor:ew-resize}.container--range .track__range:after{position:absolute;inline-size:100%;content:"";inset-block-start:calc(var(--calcite-slider-full-handle-height) * .5 * -1);block-size:calc(var(--calcite-slider-handle-size) + var(--calcite-slider-handle-extension-height))}@media(forced-colors:active){.thumb{outline-width:0;outline-offset:0}.handle{outline:2px solid transparent;outline-offset:2px}.thumb:focus .handle,.thumb .handle-extension,.thumb:hover .handle-extension,.thumb:focus .handle-extension,.thumb:active .handle-extension{background-color:canvasText}.track{background-color:canvasText}.track__range{background-color:highlight}}.tick{position:absolute;block-size:.25rem;inline-size:.125rem;border-width:1px;border-style:solid;background-color:var(--calcite-slider-tick-color, var(--calcite-color-border-input));border-color:var(--calcite-slider-tick-border-color, var(--calcite-color-foreground-1));inset-block-start:-2px;pointer-events:none;margin-inline-start:-.125rem}.tick--active{background-color:var(--calcite-slider-tick-selected-color, var(--calcite-color-brand))}.tick__label{pointer-events:none;margin-block-start:.875rem;display:flex;justify-content:center}.tick__label--min{transition:opacity var(--calcite-animation-timing)}.tick__label--max{transition:opacity var(--calcite-internal-animation-timing-fast)}:host([has-histogram][label-handles]) .tick__label--min,:host([has-histogram][label-handles]) .tick__label--max,:host([has-histogram][precise]) .tick__label--min,:host([has-histogram][precise]) .tick__label--max{font-weight:var(--calcite-font-weight-normal);color:var(--calcite-color-text-3)}.graph{color:var(--calcite-slider-graph-color, var(--calcite-color-foreground-3));block-size:48px}:host([label-ticks][ticks]) .container{padding-block-end:calc(.875rem + var(--calcite-slider-container-font-size))}:host([has-histogram]):host([precise][label-handles]) .container{padding-block-end:calc(var(--calcite-slider-full-handle-height) + 1em)}:host([has-histogram]):host([label-handles]:not([precise])) .container{padding-block-end:calc(var(--calcite-slider-handle-size) * .5 + 1em)}:host([has-histogram]):host([precise]:not([label-handles])) .container{padding-block-end:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([precise]:not([label-handles])) .container{padding-block-start:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([precise]:not([label-handles])) .container--range{padding-block-end:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([label-handles]:not([precise])) .container{padding-block-start:calc(var(--calcite-slider-full-handle-height) + 4px)}:host(:not([has-histogram])):host([label-handles][precise]) .container{padding-block-start:calc(var(--calcite-slider-full-handle-height) + var(--calcite-slider-container-font-size) + 4px)}:host(:not([has-histogram])):host([label-handles][precise]) .container--range{padding-block-end:calc(var(--calcite-slider-full-handle-height) + var(--calcite-slider-container-font-size) + 4px)}.internal-label-alignment--center{align-items:center}.internal-label-alignment--end{align-items:end}.internal-label--container{display:flex;justify-content:space-between;color:var(--calcite-color-text-1)}.internal-label-required--indicator{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-color-status-danger);padding-inline:var(--calcite-spacing-base)}.internal-label-required--indicator:hover{cursor:help}.internal-label--text{line-height:1}:host([scale=s]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-xxs)}:host([scale=s]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-sm)}:host([scale=s]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-sm)}:host([scale=s]) .internal-label--text{font-size:var(--calcite-font-size--2)}:host([scale=m]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label--text{font-size:var(--calcite-font-size--1)}:host([scale=l]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-sm)}:host([scale=l]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-md)}:host([scale=l]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-md)}:host([scale=l]) .internal-label--text{font-size:var(--calcite-font-size-0)}.validation-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch}:host([scale=m]) .validation-container,:host([scale=l]) .validation-container{padding-block-start:.5rem}:host([scale=s]) .validation-container{padding-block-start:.25rem}::slotted(input[slot=hidden-form-input]){margin:0!important;opacity:0!important;outline:none!important;padding:0!important;position:absolute!important;inset:0!important;transform:none!important;-webkit-appearance:none!important;z-index:-1!important}:host([hidden]){display:none}[hidden]{display:none}`;function b($){return Array.isArray($)}var se=0,P=class extends B{constructor(){super(),this.dragEnd=e=>{this.disabled||(this.removeDragListeners(),this.focusActiveHandle(e.clientX),this.lastDragPropValue!=this[this.dragProp]&&this.emitChange(),this.dragProp=null,this.lastDragPropValue=null,this.minValueDragRange=null,this.maxValueDragRange=null,this.minMaxValueRange=null)},this.dragUpdate=e=>{if(!(this.disabled||!this.trackRef.value)&&(e.preventDefault(),this.dragProp)){let t=this.mapToRange(e.clientX||e.pageX);if(b(this.value)&&this.dragProp==="minMaxValue")if(this.minValueDragRange&&this.maxValueDragRange&&this.minMaxValueRange){let i=t-this.minValueDragRange,a=t+this.maxValueDragRange;a<=this.max&&i>=this.min&&a-i===this.minMaxValueRange&&this.setValue({minValue:this.clamp(i,"minValue"),maxValue:this.clamp(a,"maxValue")})}else this.minValueDragRange=t-this.minValue,this.maxValueDragRange=this.maxValue-t,this.minMaxValueRange=this.maxValue-this.minValue;else if(b(this.value)&&b(this.previousEmittedValue)&&this.dragProp==="maxValue"){let[i,a]=this.previousEmittedValue;i===a&&t<i?(this.dragProp="minValue",this.minHandle.focus()):this.setValue({[this.dragProp]:this.clamp(t,this.dragProp)})}else this.setValue({[this.dragProp]:this.clamp(t,this.dragProp)})}},this.formatValue=e=>(S.numberFormatOptions={locale:this.messages._lang,numberingSystem:this.numberingSystem,useGrouping:this.groupSeparator},S.localize(e.toString())),this.guid=D.host(I()),this.messages=U(),this.pointerUpDragEnd=e=>{this.disabled||!M(e)||this.dragEnd(e)},this.trackRef=F(),this.focusSetter=X()(this),this.interactiveContainer=W(this),this._value=se,this.activeProp="value",this.maxValueDragRange=null,this.minMaxValueRange=null,this.minValueDragRange=null,this.tickValues=[],this.disabled=!1,this.fillPlacement="start",this.groupSeparator=!1,this.hasHistogram=!1,this.labelHandles=!1,this.labelTicks=!1,this.max=100,this.min=0,this.mirrored=!1,this.precise=!1,this.required=!1,this.scale="m",this.snap=!1,this.status="idle",this.step=1,this.validity={valid:!1,badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valueMissing:!1},this.calciteSliderChange=w({cancelable:!1}),this.calciteSliderInput=w({cancelable:!1}),this.listen("pointerdown",this.pointerDownHandler),this.listen("keydown",this.handleKeyDown),this.listen("touchstart",this.handleTouchStart)}static{this.properties={activeProp:[16,{},{state:!0}],maxValueDragRange:[16,{},{state:!0}],minMaxValueRange:[16,{},{state:!0}],minValueDragRange:[16,{},{state:!0}],tickValues:[16,{},{state:!0}],disabled:[7,{},{reflect:!0,type:Boolean}],fillPlacement:[3,{},{reflect:!0}],form:[3,{},{reflect:!0}],groupSeparator:[7,{},{reflect:!0,type:Boolean}],hasHistogram:[7,{},{reflect:!0,type:Boolean}],histogram:[0,{},{attribute:!1}],histogramStops:[0,{},{attribute:!1}],labelFormatter:[0,{},{attribute:!1}],labelHandles:[7,{},{reflect:!0,type:Boolean}],labelTicks:[7,{},{reflect:!0,type:Boolean}],max:[11,{},{reflect:!0,type:Number}],maxLabel:1,maxValue:[9,{},{type:Number}],min:[11,{},{reflect:!0,type:Number}],minLabel:1,labelText:1,messageOverrides:[0,{},{attribute:!1}],minValue:[9,{},{type:Number}],mirrored:[7,{},{reflect:!0,type:Boolean}],name:[3,{},{reflect:!0}],numberingSystem:1,pageStep:[11,{},{reflect:!0,type:Number}],precise:[7,{},{reflect:!0,type:Boolean}],required:[7,{},{reflect:!0,type:Boolean}],scale:[3,{},{reflect:!0}],snap:[7,{},{reflect:!0,type:Boolean}],status:[3,{},{reflect:!0}],step:[11,{},{reflect:!0,type:Number}],ticks:[11,{},{reflect:!0,type:Number}],validationIcon:[3,{converter:E,type:String},{reflect:!0}],validationMessage:1,validity:[0,{},{attribute:!1}],value:[11,{},{reflect:!0,type:Number}]}}static{this.shadowRootOptions={mode:"open",delegatesFocus:!0}}static{this.styles=re}get value(){return this._value}set value(e){if(Array.isArray(e)){this._value=e;return}if(e!=null){this._value=Number(e);return}this._value=Array.isArray(this._value)?[this.minValue,this.maxValue]:se}async setFocus(e){return this.focusSetter(()=>this.minHandle||this.maxHandle,e)}connectedCallback(){super.connectedCallback(),this.setMinMaxFromValue(),this.setValueFromMinMax(),Y(this),N(this),this.previousEmittedValue=this.value}load(){this.setInitialValue(),G(this,this.value)}willUpdate(e){e.has("histogram")&&(this.hasHistogram=!!this.histogram),e.has("ticks")&&(this.tickValues=this.generateTickValues()),e.has("value")&&(this.hasUpdated||this.value!==0)&&this.setMinMaxFromValue(),(e.has("minValue")||e.has("maxValue"))&&this.setValueFromMinMax()}updated(){this.labelHandles&&(this.adjustHostObscuredHandleLabel("value"),b(this.value)&&(this.adjustHostObscuredHandleLabel("minValue"),this.precise&&!this.hasHistogram||this.hyphenateCollidingRangeHandleLabels())),this.hideObscuredBoundingTickLabels()}disconnectedCallback(){super.disconnectedCallback(),Z(this),j(this),this.removeDragListeners()}setInitialValue(){b(this.value)||(this.value=this.snap?this.getClosestStep(this.value):this.clamp(this.value))}handleKeyDown(e){let t=this.shouldMirror(),{activeProp:i,max:a,min:s,pageStep:n,step:o}=this,r=this[i],{key:c}=e;if(J(c)){e.preventDefault();return}let d;if(c==="ArrowUp"||c==="ArrowRight"?d=r+o*(t&&c==="ArrowRight"?-1:1):c==="ArrowDown"||c==="ArrowLeft"?d=r-o*(t&&c==="ArrowLeft"?-1:1):c==="PageUp"?n&&(d=r+n):c==="PageDown"?n&&(d=r-n):c==="Home"?d=s:c==="End"&&(d=a),isNaN(d))return;e.preventDefault();let u=Number(d.toFixed(H(o)));this.setValue({[i]:this.clamp(u,i)})}pointerDownHandler(e){if(this.disabled||!M(e))return;let t=e.clientX||e.pageX,i=this.mapToRange(t),a="value";b(this.value)&&(i>=this.minValue&&i<=this.maxValue&&this.lastDragProp==="minMaxValue"?a="minMaxValue":a=Math.abs(this.maxValue-i)<Math.abs(this.minValue-i)||i>=this.maxValue?"maxValue":"minValue"),this.lastDragPropValue=this[a],this.dragStart(a),this.el.shadowRoot.querySelector(`.${l.thumb}:active`)||this.setValue({[a]:this.clamp(i,a)}),this.focusActiveHandle(t)}handleTouchStart(e){e.preventDefault()}buildThumbType(e){let t=[e];return this.labelHandles&&t.push("labeled"),this.precise&&t.push("precise"),this.hasHistogram&&t.push("histogram"),t.join("-")}setValueFromMinMax(){let{minValue:e,maxValue:t}=this;typeof e=="number"&&typeof t=="number"&&(this.value=[e,t])}setMinMaxFromValue(){let{value:e}=this;b(e)&&(this.minValue=e[0],this.maxValue=e[1])}onLabelClick(){this.setFocus()}shouldMirror(){return this.mirrored&&!this.hasHistogram}shouldUseMinValue(){return b(this.value)?this.hasHistogram&&this.maxValue===0||!this.hasHistogram&&this.minValue===0:!1}getTickDensity(){let e=(this.max-this.min)/this.ticks/ne;return e<1?1:e}generateTickValues(){let e=this.ticks??0;if(e<=0)return[];let t=[this.min],i=this.getTickDensity(),a=e*i,s=this.min;for(;s<this.max;)s+=a,t.push(Math.min(s,this.max));return t.includes(this.max)||t.push(this.max),t}onThumbBlur(){this.activeProp=null}onThumbFocus(e){let t=e.currentTarget;this.activeProp=t.getAttribute("data-value-prop")}onThumbPointerDown(e){let t=e.currentTarget;this.pointerDownDragStart(e,t.getAttribute("data-value-prop"))}onTrackPointerDown(e){this.pointerDownDragStart(e,"minMaxValue")}pointerDownDragStart(e,t){M(e)&&this.dragStart(t)}dragStart(e){this.dragProp=e,this.lastDragProp=this.dragProp,this.activeProp=e,window.addEventListener("pointermove",this.dragUpdate),window.addEventListener("pointerup",this.pointerUpDragEnd),window.addEventListener("pointercancel",this.dragEnd)}focusActiveHandle(e){this.dragProp==="minValue"?this.minHandle.focus():this.dragProp==="maxValue"||this.dragProp==="value"?this.maxHandle.focus():this.dragProp==="minMaxValue"&&this.getClosestHandle(e).focus()}emitChange(){this.calciteSliderChange.emit(),this.previousEmittedValue=this.value}removeDragListeners(){window.removeEventListener("pointermove",this.dragUpdate),window.removeEventListener("pointerup",this.pointerUpDragEnd),window.removeEventListener("pointercancel",this.dragEnd)}setValue(e){let t;if(Object.keys(e).forEach(a=>{let s=e[a];t||(t=this[a]!==s),this[a]=s}),!t)return;(e.minValue||e.maxValue)&&this.setValueFromMinMax(),this.dragProp||this.emitChange(),this.calciteSliderInput.emit()}setThumbEl(e){if(!e)return;e.getAttribute("data-value-prop")==="minValue"?this.minHandle=e:this.maxHandle=e}clamp(e,t){return e=ie(e,this.min,this.max),t==="maxValue"&&(e=Math.max(e,this.minValue)),t==="minValue"&&(e=Math.min(e,this.maxValue)),e}mapToRange(e){let t=this.max-this.min,{left:i,width:a}=this.trackRef.value.getBoundingClientRect()||{left:0,width:0},s=(e-i)/a,n=this.shouldMirror(),o=this.clamp(this.min+t*(n?1-s:s)),r=Number(o.toFixed(H(this.step)));return this.snap&&this.step?this.getClosestStep(r):r}getClosestStep(e){let{max:t,min:i,step:a}=this,s=new Q(`${Math.floor((e-i)/a)}`).multiply(`${a}`).add(`${i}`).toString(),n=this.clamp(Number(s));return n>t&&(n-=a),n}getClosestHandle(e){return this.getDistanceX(this.maxHandle,e)>this.getDistanceX(this.minHandle,e)?this.minHandle:this.maxHandle}getDistanceX(e,t){return Math.abs(e.getBoundingClientRect().left-t)}getFontSizeForElement(e){return Number(window.getComputedStyle(e).getPropertyValue("font-size").match(/\d+/)[0])}getUnitInterval(e){e=this.clamp(e);let t=this.max-this.min;return(e-this.min)/t}adjustHostObscuredHandleLabel(e){let t=this.el.shadowRoot.querySelector(`.handle__label--${e}`),i=this.el.shadowRoot.querySelector(`.handle__label--${e}.static`),a=this.el.shadowRoot.querySelector(`.handle__label--${e}.transformed`),s=i.getBoundingClientRect(),n=this.getHostOffset(s.left,s.right);t.style.transform=`translateX(${n}px)`,a.style.transform=`translateX(${n}px)`}hyphenateCollidingRangeHandleLabels(){let{shadowRoot:e}=this.el,t=this.shouldMirror(),i=t?"value":"minValue",a=t?"minValue":"value",s=e.querySelector(`.handle__label--${i}`),n=e.querySelector(`.handle__label--${i}.static`),o=e.querySelector(`.handle__label--${i}.transformed`),r=this.getHostOffset(n.getBoundingClientRect().left,n.getBoundingClientRect().right),c=e.querySelector(`.handle__label--${a}`),d=e.querySelector(`.handle__label--${a}.static`),u=e.querySelector(`.handle__label--${a}.transformed`),m=this.getHostOffset(d.getBoundingClientRect().left,d.getBoundingClientRect().right),v=this.getFontSizeForElement(s),f=this.getRangeLabelOverlap(o,u),x=s,g=v/2;if(f>0){if(x.classList.add(l.hyphen,l.hyphenWrap),m===0&&r===0){let h=f/2-g;h=Math.sign(h)===-1?Math.abs(h):-h;let k=this.getHostOffset(o.getBoundingClientRect().left+h-g,o.getBoundingClientRect().right+h-g),y=f/2,L=this.getHostOffset(u.getBoundingClientRect().left+y,u.getBoundingClientRect().right+y);k!==0&&(h+=k,y+=k),L!==0&&(h+=L,y+=L),s.style.transform=`translateX(${h}px)`,o.style.transform=`translateX(${h-g}px)`,c.style.transform=`translateX(${y}px)`,u.style.transform=`translateX(${y}px)`}else if(r>0||m>0)s.style.transform=`translateX(${r+g}px)`,c.style.transform=`translateX(${f+m}px)`,u.style.transform=`translateX(${f+m}px)`;else if(r<0||m<0){let h=Math.abs(r)+f-g;h=Math.sign(h)===-1?Math.abs(h):-h,s.style.transform=`translateX(${h}px)`,o.style.transform=`translateX(${h-g}px)`}}else x.classList.remove(l.hyphen,l.hyphenWrap),s.style.transform=`translateX(${r}px)`,o.style.transform=`translateX(${r}px)`,c.style.transform=`translateX(${m}px)`,u.style.transform=`translateX(${m}px)`}hideObscuredBoundingTickLabels(){let e=b(this.value);if(!this.hasHistogram&&!e&&!this.labelHandles&&!this.precise||!this.hasHistogram&&!e&&this.labelHandles&&!this.precise||!this.hasHistogram&&!e&&!this.labelHandles&&this.precise||!this.hasHistogram&&!e&&this.labelHandles&&this.precise||!this.hasHistogram&&e&&!this.precise||this.hasHistogram&&!this.precise&&!this.labelHandles)return;let t=this.el.shadowRoot.querySelector(`.${l.thumbMinValue}`),i=this.el.shadowRoot.querySelector(`.${l.thumbValue}`),a=this.el.shadowRoot.querySelector(`.${l.tickMin}`),s=this.el.shadowRoot.querySelector(`.${l.tickMax}`);!t&&i&&a&&s&&(a.style.opacity=this.isMinTickLabelObscured(a,i)?"0":"1",s.style.opacity=this.isMaxTickLabelObscured(s,i)?"0":"1"),t&&i&&a&&s&&(a.style.opacity=this.isMinTickLabelObscured(a,t)||this.isMinTickLabelObscured(a,i)?"0":"1",s.style.opacity=this.isMaxTickLabelObscured(s,t)||this.isMaxTickLabelObscured(s,i)&&this.hasHistogram?"0":"1")}getHostOffset(e,t){let{left:i,right:a}=this.el.getBoundingClientRect();return e<i?i-e:t>a?-(t-a):0}getRangeLabelOverlap(e,t){let i=e.getBoundingClientRect(),a=t.getBoundingClientRect(),s=this.getFontSizeForElement(e),n=i.right+s-a.left;return Math.max(n,0)}isMinTickLabelObscured(e,t){let i=e.getBoundingClientRect(),a=t.getBoundingClientRect();return R(i,a)}isMaxTickLabelObscured(e,t){let i=e.getBoundingClientRect(),a=t.getBoundingClientRect();return R(i,a)}internalLabelFormatter(e,t){let i=this.labelFormatter;if(!i)return this.formatValue(e);let a=i(e,t,this.formatValue);return a??this.formatValue(e)}render(){let e=this.el.id||this.guid,t=b(this.value)?this.maxValue:this.value,i=this.minValue||this.min,a=this.shouldUseMinValue(),s=this.getUnitInterval(a?this.minValue:i)*100,n=this.getUnitInterval(t)*100,o=this.shouldMirror(),r=b(this.value),c=this.buildThumbType("max"),d=this.renderThumb({type:c,thumbPlacement:c.includes("histogram")?"below":"above",maxInterval:n,minInterval:s,mirror:o}),u=this.buildThumbType("min"),m=r?this.renderThumb({type:u,thumbPlacement:u.includes("histogram")||u.includes("precise")?"below":"above",maxInterval:n,minInterval:s,mirror:o}):null,v=r?"start":this.fillPlacement,f=v==="none"?{left:"unset",right:"unset"}:v==="end"?{left:`${o?s:n}%`,right:`${o?n:s}%`}:{left:`${o?100-n:s}%`,right:`${o?s:100-n}%`};return O(this.el,"id",e),this.interactiveContainer({disabled:this.disabled,children:V`${this.labelText&&te({labelText:this.labelText,onClick:this.onLabelClick,required:this.required,tooltipText:this.messages.required})||""}<div aria-errormessage=${D.validationMessage} .ariaInvalid=${this.status==="invalid"} .ariaLabel=${ee(this)} .ariaRequired=${this.required} class=${p({[l.container]:!0,[l.containerRange]:r,[l.scale(this.scale)]:!0})}>${this.renderGraph()}<div class=${p(l.track)} ${T(this.trackRef)}><div class=${p(l.trackRange)} @pointerdown=${this.onTrackPointerDown} style=${_(f)}></div><div class=${p(l.ticks)}>${this.tickValues.map(x=>{let g=`${this.getUnitInterval(x)*100}%`,h=!1;if(v==="start"||v==="end")if(a)h=x>=this.minValue&&x<=this.maxValue;else{let k=v==="start"?i:t,y=v==="start"?t:this.max;h=x>=k&&x<=y}return V`<span class=${p({[l.tick]:!0,[l.tickActive]:h})} style=${_({left:o?"":g,right:o?g:""})}>${this.renderTickLabel(x)}</span>`})}</div></div><div class=${p(l.thumbContainer)}>${m}${d}${K({component:this})}</div></div>${this.validationMessage&&this.status==="invalid"?ae({icon:this.validationIcon,id:D.validationMessage,message:this.validationMessage,scale:this.scale,status:this.status}):null}`})}renderThumb({type:e,mirror:t,thumbPlacement:i,minInterval:a,maxInterval:s}){let n=e.includes("labeled"),o=e.includes("precise"),r=e.includes("min"),c=b(this.value),d=r?this.minValue:c?this.maxValue:this.value,u=r?"minValue":c?"maxValue":"value",m=r?this.minLabel:c?this.maxLabel:this.minLabel,v=r?this.minValue:d,f=u==="minValue"?this.internalLabelFormatter(this.minValue,"min"):u==="maxValue"?this.internalLabelFormatter(this.maxValue,"max"):this.internalLabelFormatter(d,"value"),x=r?{left:`${t?100-a:a}%`}:{right:`${t?s:100-s}%`},g=`${l.handleLabel} ${r?l.handleLabelMinValue:l.handleLabelValue}`,k=[...n?[V`<span aria-hidden=true class=${p(g)}>${f}</span>`,V`<span aria-hidden=true class=${`${g} ${l.static}`}>${f}</span>`,V`<span aria-hidden=true class=${`${g} ${l.transformed}`}>${f}</span>`]:[],V`<div class=${p(l.handle)}></div>`,o&&V`<div class=${p(l.handleExtension)}></div>`||""];return i==="below"&&k.reverse(),q(e,V`<div .ariaLabel=${m} aria-orientation=horizontal .ariaValueMax=${this.max} .ariaValueMin=${this.min} .ariaValueNow=${v} class=${p({[l.thumb]:!0,[l.thumbValue]:!r,[l.thumbActive]:this.lastDragProp!=="minMaxValue"&&this.dragProp===u,[l.thumbPrecise]:o,[l.thumbMinValue]:r})} data-value-prop=${u??C} @blur=${this.onThumbBlur} @focus=${this.onThumbFocus} @pointerdown=${this.onThumbPointerDown} role=slider style=${_(x)} tabindex=0 ${T(this.setThumbEl)}>${k}</div>`)}renderGraph(){return this.histogram?V`<calcite-graph class=${p(l.graph)} .colorStops=${this.histogramStops} .data=${this.histogram} .highlightMax=${b(this.value)?this.maxValue:this.value} .highlightMin=${b(this.value)?this.minValue:this.min} .max=${this.max} .min=${this.min}></calcite-graph>`:null}renderTickLabel(e){let{hasHistogram:t,labelHandles:i,labelTicks:a,max:s,min:n,precise:o,value:r}=this,c=b(r),d=e===n,u=e===s,m=d||u;return a&&(!t&&(m||!o||!c)||t&&(m||!o&&!i))?V`<span class=${p({[l.tickLabel]:!0,[l.tickMin]:d,[l.tickMax]:u})}>${this.internalLabelFormatter(e,"tick")}</span>`:null}};A("calcite-slider",P);export{P as Slider};