@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
5 lines (4 loc) • 27.4 kB
JavaScript
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details.
v3.2.1 */
import{a as te,b as H}from"./5VPUXQOI.js";import{a as j,k as R}from"./XDKVBD6O.js";import{a as ee}from"./FN45KTPK.js";import{c as J,e as Q,f as Y,h as Z}from"./ZAT242GT.js";import{c as G,d as K,e as W}from"./JSDTVKI3.js";import{a as X,b as U}from"./BVJFCLMH.js";import{a as E}from"./YXZ62PQO.js";import{a as N}from"./3FSOG4LN.js";import{d as q}from"./CKRTMNFR.js";import{b as w}from"./5RDOSP2E.js";import{q as T,x as _}from"./3ADX47DD.js";import{d as I}from"./HPN2C7M6.js";import"./JOSABGK6.js";import{a as A}from"./NNVH7JUI.js";import{E as C,F as g,G as $,I as B,J as F,R as O,c as P,d as k,h as z,q as L}from"./BJZTU5BQ.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"},ae={validationMessage:"validationMessage"},ie=250,se=P` "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:"\u2014";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:2px solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(2px*(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))} (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)}.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 p(D){return Array.isArray(D)}var S=class extends C{constructor(){super(),this.activeProp="value",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&&(e.preventDefault(),this.dragProp)){let t=this.mapToRange(e.clientX||e.pageX);if(p(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 this.setValue({[this.dragProp]:this.clamp(t,this.dragProp)})}},this.formatValue=e=>(R.numberFormatOptions={locale:this.messages._lang,numberingSystem:this.numberingSystem,useGrouping:this.groupSeparator},R.localize(e.toString())),this.guid=`calcite-slider-${A()}`,this.messages=q({name:null}),this.pointerUpDragEnd=e=>{this.disabled||!_(e)||this.dragEnd(e)},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.value=0,this.calciteSliderChange=L({cancelable:!1}),this.calciteSliderInput=L({cancelable:!1}),this.listen("pointerdown",this.pointerDownHandler),this.listen("keydown",this.handleKeyDown),this.listen("touchstart",this.handleTouchStart)}static{this.properties={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,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:F},{reflect:!0}],validationMessage:1,validity:[0,{},{attribute:!1}],value:[11,{},{type:Number,reflect:!0}]}}static{this.shadowRootOptions={mode:"open",delegatesFocus:!0}}static{this.styles=se}async setFocus(){await I(this),(this.minHandle?this.minHandle:this.maxHandle)?.focus()}connectedCallback(){super.connectedCallback(),this.setMinMaxFromValue(),this.setValueFromMinMax(),G(this),J(this)}load(){p(this.value)||(this.value=this.snap?this.getClosestStep(this.value):this.clamp(this.value)),Y(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"),p(this.value)&&(this.adjustHostObscuredHandleLabel("minValue"),this.precise&&!this.hasHistogram||this.hyphenateCollidingRangeHandleLabels())),this.hideObscuredBoundingTickLabels(),X(this)}disconnectedCallback(){super.disconnectedCallback(),K(this),Q(this),this.removeDragListeners()}handleKeyDown(e){let t=this.shouldMirror(),{activeProp:i,max:a,min:s,pageStep:n,step:o}=this,r=this[i],{key:c}=e;if(N(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||!_(e))return;let t=e.clientX||e.pageX,i=this.mapToRange(t),a="value";p(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;p(e)&&(this.minValue=e[0],this.maxValue=e[1])}onLabelClick(){this.setFocus()}shouldMirror(){return this.mirrored&&!this.hasHistogram}shouldUseMinValue(){return p(this.value)?this.hasHistogram&&this.maxValue===0||!this.hasHistogram&&this.minValue===0:!1}getTickDensity(){let e=(this.max-this.min)/this.ticks/ie;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){_(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()}emitInput(){this.calciteSliderInput.emit()}emitChange(){this.calciteSliderChange.emit()}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;this.dragProp||this.emitChange(),this.emitInput()}storeTrackRef(e){this.trackEl=e}storeThumbRef(e){if(!e)return;e.getAttribute("data-value-prop")==="minValue"?this.minHandle=e:this.maxHandle=e}clamp(e,t){return e=te(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.trackEl.getBoundingClientRect(),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 j(`${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,b=v/2;if(f>0){if(x.classList.add(l.hyphen,l.hyphenWrap),m===0&&r===0){let h=f/2-b;h=Math.sign(h)===-1?Math.abs(h):-h;let V=this.getHostOffset(o.getBoundingClientRect().left+h-b,o.getBoundingClientRect().right+h-b),y=f/2,M=this.getHostOffset(u.getBoundingClientRect().left+y,u.getBoundingClientRect().right+y);V!==0&&(h+=V,y+=V),M!==0&&(h+=M,y+=M),s.style.transform=`translateX(${h}px)`,o.style.transform=`translateX(${h-b}px)`,c.style.transform=`translateX(${y}px)`,u.style.transform=`translateX(${y}px)`}else if(r>0||m>0)s.style.transform=`translateX(${r+b}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-b;h=Math.sign(h)===-1?Math.abs(h):-h,s.style.transform=`translateX(${h}px)`,o.style.transform=`translateX(${h-b}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=p(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 T(i,a)}isMaxTickLabelObscured(e,t){let i=e.getBoundingClientRect(),a=t.getBoundingClientRect();return T(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=p(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=p(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 B(this.el,"id",e),U({disabled:this.disabled,children:k`<div aria-errormessage=${ae.validationMessage} .ariaInvalid=${this.status==="invalid"} .ariaLabel=${W(this)} class=${g({[l.container]:!0,[l.containerRange]:r,[`scale--${this.scale}`]:!0})}>${this.renderGraph()}<div class=${g(l.track)} ${w(this.storeTrackRef)}><div class=${g(l.trackRange)} =${this.onTrackPointerDown} style=${$(f)}></div><div class=${g(l.ticks)}>${this.tickValues.map(x=>{let b=`${this.getUnitInterval(x)*100}%`,h=!1;if(v==="start"||v==="end")if(a)h=x>=this.minValue&&x<=this.maxValue;else{let V=v==="start"?i:t,y=v==="start"?t:this.max;h=x>=V&&x<=y}return k`<span class=${g({[l.tick]:!0,[l.tickActive]:h})} style=${$({left:o?"":b,right:o?b:""})}>${this.renderTickLabel(x)}</span>`})}</div></div><div class=${g(l.thumbContainer)}>${m}${d}${Z({component:this})}</div></div>${this.validationMessage&&this.status==="invalid"?ee({icon:this.validationIcon,id:ae.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=p(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}%`},b=`${l.handleLabel} ${r?l.handleLabelMinValue:l.handleLabelValue}`,V=[...n?[k`<span aria-hidden=true class=${g(b)}>${f}</span>`,k`<span aria-hidden=true class=${`${b} ${l.static}`}>${f}</span>`,k`<span aria-hidden=true class=${`${b} ${l.transformed}`}>${f}</span>`]:[],k`<div class=${g(l.handle)}></div>`,o&&k`<div class=${g(l.handleExtension)}></div>`||""];return i==="below"&&V.reverse(),E(e,k`<div .ariaLabel=${m} aria-orientation=horizontal .ariaValueMax=${this.max} .ariaValueMin=${this.min} .ariaValueNow=${v} class=${g({[l.thumb]:!0,[l.thumbValue]:!r,[l.thumbActive]:this.lastDragProp!=="minMaxValue"&&this.dragProp===u,[l.thumbPrecise]:o,[l.thumbMinValue]:r})} data-value-prop=${u??z} =${this.onThumbBlur} =${this.onThumbFocus} =${this.onThumbPointerDown} role=slider style=${$(x)} tabindex=0 ${w(this.storeThumbRef)}>${V}</div>`)}renderGraph(){return this.histogram?k`<calcite-graph class=${g(l.graph)} .colorStops=${this.histogramStops} .data=${this.histogram} .highlightMax=${p(this.value)?this.maxValue:this.value} .highlightMin=${p(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=p(r),d=e===n,u=e===s,m=d||u;return a&&(!t&&(m||!o||!c)||t&&(m||!o&&!i))?k`<span class=${g({[l.tickLabel]:!0,[l.tickMin]:d,[l.tickMax]:u})}>${this.internalLabelFormatter(e,"tick")}</span>`:null}};O("calcite-slider",S);export{S as Slider};