@luzmo/lucero 2.5.2 → 2.6.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.
Files changed (71) hide show
  1. package/components/color-area/color-area.d.ts +15 -0
  2. package/components/color-area/index.cjs +1 -1
  3. package/components/color-area/index.d.ts +1 -0
  4. package/components/color-area/index.js +1 -1
  5. package/components/color-area-CFBE-rG3.cjs +80 -0
  6. package/components/{color-area-qlEAp8ZN.js → color-area-GGa8KJyd.js} +85 -44
  7. package/components/color-handle/index.cjs +1 -1
  8. package/components/color-handle/index.js +1 -1
  9. package/components/{color-handle-Dc0uLgkf.js → color-handle-Ya92rdpA.js} +5 -2
  10. package/components/{color-handle-BE0Z1gTU.cjs → color-handle-hJ7Kblh4.cjs} +1 -1
  11. package/components/color-menu/color-menu.d.ts +11 -0
  12. package/components/color-menu/index.cjs +1 -1
  13. package/components/color-menu/index.d.ts +1 -0
  14. package/components/color-menu/index.js +1 -1
  15. package/components/{color-menu-Cus3S-Re.cjs → color-menu-COhe5VUB.cjs} +1 -1
  16. package/components/{color-menu-BxFQnH79.js → color-menu-Ct3f01bI.js} +6 -3
  17. package/components/color-picker/color-picker.d.ts +13 -0
  18. package/components/color-picker/index.cjs +1 -1
  19. package/components/color-picker/index.d.ts +1 -0
  20. package/components/color-picker/index.js +1 -1
  21. package/components/{color-picker-orFSIqoZ.js → color-picker-DWERcNZi.js} +5 -2
  22. package/components/{color-picker-BTT1O-76.cjs → color-picker-ELa0yF2F.cjs} +1 -1
  23. package/components/color-slider/color-slider.d.ts +17 -0
  24. package/components/color-slider/index.cjs +1 -1
  25. package/components/color-slider/index.d.ts +1 -0
  26. package/components/color-slider/index.js +1 -1
  27. package/components/{color-slider-X1EArAnx.js → color-slider-DNd_ZrD6.js} +95 -56
  28. package/components/color-slider-IYBn2DL7.cjs +58 -0
  29. package/components/index.cjs +1 -1
  30. package/components/index.js +8 -8
  31. package/components/interaction-BjXWVy_C.cjs +18 -0
  32. package/components/interaction-BpCLJ1OV.js +83 -0
  33. package/components/number-field/index.cjs +1 -1
  34. package/components/number-field/index.js +1 -1
  35. package/components/number-field/number-field.d.ts +4 -0
  36. package/components/{number-field-Ceeli_mh.cjs → number-field-CV7g2Q20.cjs} +2 -2
  37. package/components/{number-field-D9UqpqpW.js → number-field-Crol6vc9.js} +15 -9
  38. package/components/slider/index.cjs +1 -1
  39. package/components/slider/index.d.ts +1 -0
  40. package/components/slider/index.js +1 -1
  41. package/components/slider/slider.d.ts +18 -0
  42. package/components/{slider-Ch7OgTdj.js → slider-BFTuAXK1.js} +167 -151
  43. package/components/slider-Ce6qgPZ4.cjs +136 -0
  44. package/components/{streaming-listener-Bfyk6Fsx.cjs → streaming-listener-BzGZUHkj.cjs} +1 -1
  45. package/components/{streaming-listener-B6mDl4pZ.js → streaming-listener-DyS3scAi.js} +1 -1
  46. package/components/utils.cjs +1 -1
  47. package/components/utils.js +1 -1
  48. package/custom-elements.json +1 -1
  49. package/package.json +1 -1
  50. package/standalone/chunks/color-area-D-AVcZza.js +66 -0
  51. package/standalone/chunks/{color-handle-BLQiuRSS.js → color-handle-DO7dxFGx.js} +1 -1
  52. package/standalone/chunks/{color-menu-BDZh85nX.js → color-menu-DIX2y9m_.js} +1 -1
  53. package/standalone/chunks/color-slider-MSADvkPC.js +50 -0
  54. package/standalone/chunks/interaction-BQyflxg-.js +2 -0
  55. package/standalone/chunks/{number-field-Dc4nBa6l.js → number-field-BoIKbmIv.js} +2 -2
  56. package/standalone/chunks/{streaming-listener-DbMoHlSj.js → streaming-listener-0FSzb9QY.js} +1 -1
  57. package/standalone/color-area.js +1 -1
  58. package/standalone/color-handle.js +1 -1
  59. package/standalone/color-menu.js +1 -1
  60. package/standalone/color-picker.js +1 -1
  61. package/standalone/color-slider.js +1 -1
  62. package/standalone/manifest.json +7 -6
  63. package/standalone/number-field.js +1 -1
  64. package/standalone/slider.js +11 -10
  65. package/standalone/utils.js +1 -1
  66. package/utils/reactive-controllers/interaction.d.ts +85 -0
  67. package/components/color-area-D1fRozE0.cjs +0 -80
  68. package/components/color-slider-9Ck28Qdk.cjs +0 -57
  69. package/components/slider-C1AdDTfB.cjs +0 -135
  70. package/standalone/chunks/color-area-BCI2oMGd.js +0 -66
  71. package/standalone/chunks/color-slider-Bipcekrc.js +0 -49
@@ -0,0 +1,136 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2026 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs"),n=require("./focusable-BIHTrJd6.cjs"),r=require("./language-resolution-B7D3hQ6_.cjs"),i=require("./interaction-BjXWVy_C.cjs"),a=require("./manage-help-text-DtFJsl0k.cjs");require("./number-field-CV7g2Q20.cjs");let o=require("lit"),s=require("lit/decorators.js"),c=require("lit/directives/if-defined.js"),l=require("lit/directives/class-map.js"),u=require("lit/directives/style-map.js"),d=require("@internationalized/number"),f=require("lit/directives/repeat.js");var p={toNormalized(e,t,n){return n===t?0:(e-t)/(n-t)},fromNormalized(e,t,n){return e*(n-t)+t}},m=(e,t)=>{let n=e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{${e}}`,r);return n},h=e=>{if(!Number.isFinite(e))return 0;let t=Math.abs(e).toString(),n=t.match(/^\d+(?:\.(?<fraction>\d+))?e(?<exponent>[+-]\d+)$/);if(n?.groups){let{fraction:e=``,exponent:t}=n.groups;return Math.min(Math.max(e.length-Number(t),0),20)}let[,r=``]=t.split(`.`);return Math.min(r.length,20)},g=(e,t)=>{let n;try{n=e()}catch{n=void 0}if(typeof n==`number`&&!Number.isNaN(n))return n;let r=t();return Number.isNaN(r)?0:r},_=(e,t)=>Number.isFinite(e)?e:t,v=(e,t,n)=>Math.min(Math.max(e,Math.min(t,n)),Math.max(t,n)),y=(e,t,n,r)=>{let i=_(t,0),a=_(n,i),o=Number.isFinite(r)&&r>0?r:1,s=Number.isNaN(e)?i:e,c=Math.max(h(o),h(i),h(a)),l=i+Math.round((v(s,i,a)-i)/o)*o;return v(Number(l.toFixed(c)),i,a)},b=(e,t,n,r=p)=>v(g(()=>r.toNormalized(e,t,n),()=>p.toNormalized(e,t,n)),0,1),x=(e,t,n,r,i=p)=>{let a=v(e,0,1);return y(g(()=>i.fromNormalized(a,t,n),()=>p.fromNormalized(a,t,n)),t,n,r)},S=(e,t,n)=>{if(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(n)||n<=0||t<=e)return[];let r=Math.floor((t-e)/n)+1;if(r>250)return[];let i=Math.max(h(e),h(n));return Array.from({length:r},(t,r)=>Number((e+r*n).toFixed(i)))},C=(e,t,n,r,i=p)=>{let a=t+(n-t)/2,o=r===!0?a:r===void 0?t:r,s=b(Number.isNaN(o)?t:o,t,n,i),c=b(e,t,n,i);return[Math.min(s,c),Math.max(s,c)]},w=(e,t)=>e+(t-e)/2,T=class{constructor(e,t,n,r){this._applySingleValue=t,this._formatHandleValue=n,this._formatHandleLabel=r,this._attachedHandles=new Set,this._inputMap=new WeakMap,this.activeIndex=0,this.draggingIndex=-1,this._host=e,this._host.addController(this)}hostConnected(){this.invalidate(),this._syncAttachments()}hostDisconnected(){this.draggingIndex=-1,this._detachHandles(),this._inputMap=new WeakMap,this._cachedModels=void 0}hostUpdate(){this._syncAttachments(),this._cachedModels=this._resolveModels()}hostUpdated(){this._syncInputReferences(),this._commitClampedValues()}get handles(){let e=this._host.shadowRoot?.querySelector(`slot[name="handle"]`);return(e?e.assignedElements():[...this._host.children]).filter(e=>e.localName===`luzmo-slider-handle`&&e.slot===`handle`)}get models(){return this._cachedModels??this._resolveModels()}get values(){return Object.fromEntries(this.models.map(({name:e,value:t})=>[e,t]))}invalidate(){this._cachedModels=void 0}requestHostUpdate(){this.invalidate(),this._host.requestUpdate()}inputForHandle(e){return this._inputMap.get(e)}setValue(e,t){let n=this.models[e];if(!n)return!1;this.activeIndex=e;let r=y(t,n.effectiveMin,n.effectiveMax,n.step);return r!==n.value&&(n.handle?n.handle.value=r:this._applySingleValue(r),this._cachedModels=this._resolveModels(),!0)}setNormalizedValue(e,t){let n=this.models[e];return n?this.setValue(e,x(t,n.min,n.max,n.step,n.normalization)):!1}nearestIndex(e){let t=this.models;return t.reduce((n,r,i)=>Math.abs(r.normalizedValue-e)<Math.abs(t[n].normalizedValue-e)?i:n,Math.min(Math.max(this.activeIndex,0),t.length-1))}reset(e){let t=this.models[e];return!t||t.defaultValue===void 0||!this.setValue(e,t.defaultValue)?!1:(this.dispatchInput(e),this.dispatchChange(e),!0)}dispatchInput(e){this._eventTarget(e).dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0}))}dispatchChange(e){this._eventTarget(e).dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0}))}formatValue(e){let t=this.models[e];return t?this._formatHandleValue(t):``}_eventTarget(e){return this.models[e]?.handle??this._host}_syncInputReferences(){this._inputMap=new WeakMap;let e=this._host.shadowRoot?.querySelectorAll(`input[type="range"]`)??[];this.models.forEach((t,n)=>{t.handle&&e[n]&&this._inputMap.set(t.handle,e[n])})}_commitClampedValues(){for(let e of this.models)e.handle&&e.handle.value!==e.value&&(e.handle.value=e.value)}_syncAttachments(){let e=new Set(this._host.isConnected?this.handles:[]);for(let t of this._attachedHandles)e.has(t)||t.detachController(this);for(let t of e)t.attachController(this);this._attachedHandles=e}_detachHandles(){for(let e of this._attachedHandles)e.detachController(this);this._attachedHandles.clear()}_resolveModels(){let e=this.handles;if(e.length===0)return[this._resolveSingleModel()];let t=e.map(e=>{let t=typeof e.min==`number`&&Number.isFinite(e.min)?e.min:this._host.min,n=typeof e.max==`number`&&Number.isFinite(e.max)?e.max:this._host.max;return{min:t,max:Math.max(t,n)}}),n=e.map((e,n)=>{let{min:r,max:i}=t[n],a=this._resolveStep(e.step);return y(Number.isFinite(e.value)?e.value:w(r,i),r,i,a)}),r=new Set;return e.map((i,a)=>{let{min:o,max:s}=t[a],c=this._resolveStep(i.step),l=i.min===`previous`&&a>0?Math.max(o,n[a-1]):o,u=Math.max(l,i.max===`next`&&a<e.length-1?Math.min(s,n[a+1]):s),d=y(n[a],l,u,c),f=i.normalization;return{handle:i,name:this._uniqueName(i.name,a,r),label:this._formatHandleLabel(i,a),value:d,min:o,max:s,effectiveMin:l,effectiveMax:u,step:c,defaultValue:i.defaultValue,normalizedValue:b(d,o,s,f),normalization:f}})}_resolveSingleModel(){let{min:e,max:t,step:n,normalization:r}=this._host,i=y(this._host.value,e,t,n);return{name:`value`,label:this._host.label,value:i,min:e,max:t,effectiveMin:e,effectiveMax:t,step:n,defaultValue:this._host.defaultValue,normalizedValue:b(i,e,t,r),normalization:r}}_resolveStep(e){return e!==void 0&&Number.isFinite(e)&&e>0?e:this._host.step}_uniqueName(e,t,n){let r=e||`handle${t+1}`;if(!n.has(r))return n.add(r),r;let i=t+1;for(;n.has(`${r}${i}`);)i+=1;let a=`${r}${i}`;return n.add(a),a}};function E({model:e,index:t,total:n,grouped:r,label:i,appliedLabel:a,helpTextId:s,labelVisibility:d,formattedValue:f,activeIndex:p,draggingIndex:m,focusedIndex:h,invalid:g,readonly:_,disabled:v}){let y=n>1?e.label:i||a||e.label;return o.html`
19
+ <span
20
+ class=${(0,l.classMap)({handle:!0,"tooltip-open":m===t||h===t})}
21
+ data-handle-index=${t}
22
+ style=${(0,u.styleMap)({"inset-inline-start":`${e.normalizedValue*100}%`,"--slider-handle-color":e.handle?.color||void 0,"z-index":String(p===t?3:t+2)})}
23
+ >
24
+ ${d===`none`?o.html`<span class="value-tooltip" aria-hidden="true"
25
+ >${f}</span
26
+ >`:o.nothing}
27
+ <input
28
+ data-handle-index=${t}
29
+ type="range"
30
+ min=${e.effectiveMin}
31
+ max=${e.effectiveMax}
32
+ step=${e.step}
33
+ .value=${String(e.value)}
34
+ aria-label=${(0,c.ifDefined)(y||void 0)}
35
+ aria-valuetext=${f}
36
+ aria-describedby=${(0,c.ifDefined)(r?void 0:s)}
37
+ aria-invalid=${(0,c.ifDefined)(g||void 0)}
38
+ aria-readonly=${(0,c.ifDefined)(_||void 0)}
39
+ ?disabled=${v}
40
+ />
41
+ </span>
42
+ `}function D({model:e,label:t,formatOptions:n,size:r,disabled:i,invalid:a,readonly:s,hideStepper:c,quiet:l,indeterminate:u,onInput:d,onChange:f}){return o.html`
43
+ <luzmo-number-field
44
+ id="number-field"
45
+ label=${t}
46
+ .value=${e.value}
47
+ .min=${e.effectiveMin}
48
+ .max=${e.effectiveMax}
49
+ .step=${e.step}
50
+ .formatOptions=${e.handle?.formatOptions??n}
51
+ size=${r}
52
+ ?disabled=${i}
53
+ ?invalid=${a}
54
+ ?readonly=${s}
55
+ ?hide-stepper=${c}
56
+ ?quiet=${l}
57
+ ?indeterminate=${u}
58
+ @input=${d}
59
+ @change=${f}
60
+ ></luzmo-number-field>
61
+ `}function O(e,t,n,r,i){return e.length===0?o.nothing:o.html`
62
+ <div class="ticks" aria-hidden="true">
63
+ ${(0,f.repeat)(e,e=>e,e=>{let a=`${b(e,t,n)*100}%`;return o.html`
64
+ <span
65
+ class="tick"
66
+ style=${(0,u.styleMap)({"inset-inline-start":a})}
67
+ ></span>
68
+ ${i?o.html`<span
69
+ class="tick-label"
70
+ style=${(0,u.styleMap)({"inset-inline-start":a})}
71
+ >${r.format(e)}</span
72
+ >`:o.nothing}
73
+ `})}
74
+ </div>
75
+ `}function k(e,t){if(e.length===0)return;if(e.length>1){let t=e.map(({normalizedValue:e})=>e).sort((e,t)=>e-t);return[t[0],t.at(-1)]}let n=e[0];return C(n.value,n.min,n.max,t,n.normalization)}function A(e,t){let n=k(e,t);if(!n)return o.nothing;let[r,i]=n;return o.html`
76
+ <span
77
+ class="fill"
78
+ style=${(0,u.styleMap)({"--slider-fill-start":`${r*100}%`,"--slider-fill-end":`${i*100}%`})}
79
+ ></span>
80
+ `}function j(e,t,n){let[r,i]=k(e,t)??[0,0];return o.html`
81
+ <span class="ramp" aria-hidden="true">
82
+ <svg viewBox="0 0 240 16" preserveAspectRatio="none" focusable="false">
83
+ <path
84
+ class="ramp-track"
85
+ d="M240,4v8c0,2.3-1.9,4.1-4.2,4L1,9C0.4,9,0,8.5,0,8c0-0.5,0.4-1,1-1l234.8-7C238.1-0.1,240,1.7,240,4z"
86
+ ></path>
87
+ </svg>
88
+ ${n?o.html`
89
+ <span
90
+ class="ramp-fill"
91
+ style=${(0,u.styleMap)({"--slider-ramp-fill-start":`${r*100}%`,"--slider-ramp-fill-end":`${(1-i)*100}%`})}
92
+ ></span>
93
+ `:o.nothing}
94
+ </span>
95
+ `}var M=`:host{min-inline-size:var(--luzmo-slider-min-inline-size,var(--slider-min-inline-size));min-block-size:var(--luzmo-slider-item-height,var(--slider-item-height));color:var(--slider-label-color);font-family:var(--luzmo-slider-font-family,var(--slider-font-family));flex-grow:1;display:block}:host([disabled]){cursor:not-allowed}.handle-slot{display:none}.control-row{align-items:center;gap:var(--slider-label-gap);inline-size:100%;display:flex}.track{min-inline-size:0;block-size:var(--luzmo-slider-item-height,var(--slider-item-height));cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;position:relative}.rail,.fill,.ramp{display:block;position:absolute;inset-block-start:calc(50% + var(--luzmo-slider-top-to-track,var(--slider-top-to-track)));transform:translateY(-50%)}.rail{block-size:var(--luzmo-slider-track-height,var(--slider-track-height));background:var(--highcontrast-slider-track-color,var(--slider-track-color));border-radius:var(--slider-track-radius);inset-inline:0}.fill{z-index:1;block-size:var(--luzmo-slider-track-height,var(--slider-track-height));background:var(--highcontrast-slider-fill-color,var(--luzmo-slider-fill-background,var(--slider-fill-background)));border-radius:var(--slider-track-radius);-webkit-mask-image:linear-gradient(to right, transparent 0, transparent var(--slider-fill-start), currentColor var(--slider-fill-start), currentColor var(--slider-fill-end), transparent var(--slider-fill-end), transparent 100%);mask-image:linear-gradient(to right, transparent 0, transparent var(--slider-fill-start), currentColor var(--slider-fill-start), currentColor var(--slider-fill-end), transparent var(--slider-fill-end), transparent 100%);inset-inline:0}.ramp{block-size:var(--slider-ramp-height);inset-inline:0}:host([ramp]) .rail{display:none}.ramp svg,.ramp-fill{block-size:100%;inline-size:100%;display:block;position:absolute;inset:0}.ramp-track{fill:var(--highcontrast-slider-track-color,var(--slider-track-color))}.ramp-fill{z-index:1;background:var(--highcontrast-slider-fill-color,var(--luzmo-slider-fill-background,var(--slider-fill-background)));clip-path:polygon(0 44%,100% 0,100% 100%,0 56%);-webkit-mask-image:linear-gradient(to right, transparent 0, transparent var(--slider-ramp-fill-start), currentColor var(--slider-ramp-fill-start), currentColor calc(100% - var(--slider-ramp-fill-end)), transparent calc(100% - var(--slider-ramp-fill-end)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, transparent var(--slider-ramp-fill-start), currentColor var(--slider-ramp-fill-start), currentColor calc(100% - var(--slider-ramp-fill-end)), transparent calc(100% - var(--slider-ramp-fill-end)), transparent 100%)}:host(:dir(rtl)) .ramp svg{transform:scaleX(-1)}:host(:dir(rtl)) .fill{-webkit-mask-image:linear-gradient(to left, transparent 0, transparent var(--slider-fill-start), currentColor var(--slider-fill-start), currentColor var(--slider-fill-end), transparent var(--slider-fill-end), transparent 100%);mask-image:linear-gradient(to left, transparent 0, transparent var(--slider-fill-start), currentColor var(--slider-fill-start), currentColor var(--slider-fill-end), transparent var(--slider-fill-end), transparent 100%)}:host(:dir(rtl)) .ramp-fill{clip-path:polygon(0 0,100% 44%,100% 56%,0 100%);-webkit-mask-image:linear-gradient(to left, transparent 0, transparent var(--slider-ramp-fill-start), currentColor var(--slider-ramp-fill-start), currentColor calc(100% - var(--slider-ramp-fill-end)), transparent calc(100% - var(--slider-ramp-fill-end)), transparent 100%);mask-image:linear-gradient(to left, transparent 0, transparent var(--slider-ramp-fill-start), currentColor var(--slider-ramp-fill-start), currentColor calc(100% - var(--slider-ramp-fill-end)), transparent calc(100% - var(--slider-ramp-fill-end)), transparent 100%)}.handle{box-sizing:border-box;inline-size:var(--slider-hit-size);block-size:var(--slider-hit-size);cursor:grab;place-items:center;margin-inline-start:var(--luzmo-slider-edge-to-handle,var(--slider-edge-to-handle));display:grid;position:absolute;inset-block-start:calc(50% + var(--luzmo-slider-top-to-handle,var(--slider-top-to-handle)));transform:translate(-50%,-50%)}:host(:dir(rtl)) .handle{transform:translate(50%,-50%)}.handle:before{box-sizing:border-box;inline-size:var(--slider-handle-visual-size);block-size:var(--slider-handle-visual-size);background:var(--highcontrast-slider-handle-background,var(--slider-handle-color,var(--slider-handle-background)));border:var(--slider-handle-border-width) solid var(--highcontrast-slider-handle-border-color,var(--slider-handle-color,var(--slider-handle-border-color)));box-shadow:var(--slider-handle-shadow);content:"";transition:background-color var(--luzmo-animation-duration), border-color var(--luzmo-animation-duration);border-radius:50%}:host([ramp]) .handle:before,:host([variant=unfilled]) .handle:before{border-color:var(--highcontrast-slider-handle-border-color,var(--slider-handle-color,var(--slider-handle-border-color-unfilled)))}.handle:hover:before,:host([dragging]) .handle:before{background:var(--highcontrast-slider-handle-background,var(--slider-handle-color,var(--luzmo-slider-background-color-hover,var(--slider-handle-background-hover))))}:host([dragging]) .handle:before{border-color:var(--highcontrast-slider-focus-color,var(--slider-handle-color,var(--slider-handle-border-color-active)))}:host([dragging]) .handle{cursor:grabbing}.handle:has(input:focus-visible):before{border-color:var(--highcontrast-slider-focus-color,var(--slider-focus-color));outline:var(--slider-focus-width) solid var(--highcontrast-slider-focus-color,var(--slider-focus-color));outline-offset:var(--slider-focus-offset)}.handle input{block-size:100%;inline-size:100%;cursor:inherit;opacity:0;pointer-events:none;margin:0;position:absolute;inset:0}.ticks{z-index:1;pointer-events:none;position:absolute;inset:0}.tick{inline-size:var(--slider-tick-width);block-size:var(--slider-tick-height);background:var(--highcontrast-slider-tick-color,var(--slider-tick-color));position:absolute;inset-block-start:calc(50% + var(--luzmo-slider-top-to-track,var(--slider-top-to-track)) + var(--slider-tick-offset));transform:translate(-50%)}:host(:dir(rtl)) .tick{transform:translate(50%)}.tick-label{color:var(--slider-label-color);font-size:var(--slider-tick-label-font-size);white-space:nowrap;position:absolute;inset-block-start:calc(50% + var(--luzmo-slider-top-to-handle,var(--slider-top-to-handle)) + var(--slider-handle-visual-size) / 2 + var(--slider-tick-label-gap));transform:translate(-50%)}:host(:dir(rtl)) .tick-label{transform:translate(50%)}.value-label{min-inline-size:max-content;color:var(--slider-label-color);font-size:var(--slider-label-font-size);flex:none}.value-tooltip{z-index:1;box-sizing:border-box;padding:var(--slider-tooltip-padding);color:var(--highcontrast-slider-tooltip-color,var(--slider-tooltip-color));background:var(--highcontrast-slider-tooltip-background,var(--slider-tooltip-background));border:var(--slider-tooltip-border-width) solid var(--highcontrast-slider-tooltip-border-color,var(--slider-tooltip-border-color));border-radius:var(--slider-tooltip-border-radius);font-size:var(--luzmo-slider-tooltip-font-size,var(--slider-tooltip-font-size));white-space:nowrap;visibility:hidden;opacity:0;transition:opacity var(--luzmo-animation-duration), visibility 0s linear var(--luzmo-animation-duration);pointer-events:none;line-height:1;position:absolute;inset-block-end:calc(50% + var(--slider-handle-visual-size) / 2 + var(--slider-tooltip-gap));inset-inline-start:50%;transform:translate(-50%)}:host(:dir(rtl)) .value-tooltip{transform:translate(50%)}.handle:hover .value-tooltip,.handle.tooltip-open .value-tooltip{visibility:visible;opacity:1;transition-delay:0s}:host([disabled]) .value-tooltip{visibility:hidden;opacity:0}luzmo-number-field{inline-size:var(--slider-editable-width);flex:none}.visually-hidden{inline-size:calc(var(--luzmo-spacing-1) / 2);block-size:calc(var(--luzmo-spacing-1) / 2);clip-path:inset(50%);white-space:nowrap;position:absolute;overflow:hidden}:host([readonly]:not([disabled])) .track,:host([readonly]:not([disabled])) .handle{cursor:default}:host([disabled]) .track,:host([disabled]) .handle{cursor:not-allowed}:host([disabled]) .rail{background:var(--highcontrast-slider-track-color,var(--luzmo-slider-background-color-disabled,var(--slider-track-color-disabled)))}:host([disabled]) .ramp-track{fill:var(--highcontrast-slider-track-color,var(--luzmo-slider-background-color-disabled,var(--slider-track-color-disabled)))}:host([disabled]) .ramp-fill,:host([disabled]) .fill{background:var(--highcontrast-slider-fill-color,var(--slider-fill-color-disabled))}:host([disabled]) .handle:before,:host([disabled]) .handle:hover:before{background:var(--highcontrast-slider-handle-background,var(--luzmo-slider-background-color-disabled-hover,var(--slider-handle-background-disabled)));border-color:var(--highcontrast-slider-handle-border-color,var(--slider-handle-border-color-disabled));box-shadow:none}@media (forced-colors:active){.rail{--highcontrast-slider-track-color:ButtonFace;--highcontrast-slider-track-border-color:ButtonText;border:var(--slider-handle-border-width) solid var(--highcontrast-slider-track-border-color);forced-color-adjust:none}.ramp{--highcontrast-slider-track-color:ButtonText;--highcontrast-slider-fill-color:Highlight;forced-color-adjust:none}.fill{--highcontrast-slider-fill-color:Highlight;forced-color-adjust:none}.tick{--highcontrast-slider-tick-color:ButtonText;forced-color-adjust:none}.handle:before{--highcontrast-slider-handle-background:Canvas;--highcontrast-slider-handle-border-color:ButtonText;forced-color-adjust:none}:host([dragging]) .handle:before{--highcontrast-slider-focus-color:Highlight}.handle:has(input:focus-visible):before{--highcontrast-slider-focus-color:Highlight}.value-tooltip{--highcontrast-slider-tooltip-background:Canvas;--highcontrast-slider-tooltip-border-color:CanvasText;--highcontrast-slider-tooltip-color:CanvasText;forced-color-adjust:none}:host([disabled]) .rail,:host([disabled]) .ramp-track,:host([disabled]) .ramp-fill,:host([disabled]) .tick,:host([disabled]) .fill,:host([disabled]) .handle:before{--highcontrast-slider-disabled-color:GrayText;--highcontrast-slider-track-color:var(--highcontrast-slider-disabled-color);--highcontrast-slider-track-border-color:var(--highcontrast-slider-disabled-color);--highcontrast-slider-fill-color:var(--highcontrast-slider-disabled-color);--highcontrast-slider-tick-color:var(--highcontrast-slider-disabled-color);--highcontrast-slider-handle-background:Canvas;--highcontrast-slider-handle-border-color:var(--highcontrast-slider-disabled-color)}}@media (prefers-reduced-motion:reduce){.handle:before,.value-tooltip{transition:none}}:host{--slider-font-family:var(--luzmo-font-family);--slider-min-inline-size:calc(3 * var(--luzmo-component-height-l));--slider-item-height:var(--luzmo-component-height);--slider-track-height:var(--luzmo-spacing-2);--slider-handle-base-size:calc(var(--luzmo-component-height) + var(--luzmo-spacing-2));--slider-hit-size:var(--luzmo-component-height);--slider-top-to-track:0px;--slider-top-to-handle:0px;--slider-edge-to-handle:0px;--slider-handle-scale:.5;--slider-handle-visual-size:calc(var(--luzmo-slider-handle-size,var(--slider-handle-base-size)) * var(--luzmo-slider-handle-scale,var(--slider-handle-scale)));--slider-track-radius:var(--luzmo-border-radius-full);--slider-track-color:var(--luzmo-border-color);--slider-track-color-disabled:var(--luzmo-background-color-disabled);--slider-fill-color:var(--luzmo-primary);--slider-fill-background:var(--slider-fill-color);--slider-fill-color-disabled:var(--luzmo-disabled-color);--slider-handle-background:var(--luzmo-background-color);--slider-handle-background-hover:var(--luzmo-background-color-hover);--slider-handle-background-disabled:var(--luzmo-background-color);--slider-handle-border-color:var(--luzmo-border-color);--slider-handle-border-color-unfilled:var(--luzmo-primary);--slider-handle-border-color-active:var(--luzmo-primary);--slider-handle-border-color-disabled:var(--luzmo-border-color-disabled);--slider-handle-border-width:var(--luzmo-border-width);--slider-handle-shadow:0 var(--luzmo-spacing-1) var(--luzmo-spacing-2) var(--luzmo-shadow-color);--slider-focus-color:var(--luzmo-primary);--slider-focus-width:var(--luzmo-border-width);--slider-focus-offset:var(--luzmo-border-width);--slider-label-color:var(--luzmo-font-color);--slider-label-font-size:var(--luzmo-font-size-s);--slider-label-gap:var(--luzmo-spacing-3);--slider-ramp-height:var(--luzmo-spacing-4);--slider-tick-color:var(--luzmo-border-color-full);--slider-tick-width:var(--luzmo-border-width);--slider-tick-height:var(--luzmo-spacing-3);--slider-tick-offset:calc(-1 * var(--slider-tick-height) / 2);--slider-tick-label-gap:var(--luzmo-spacing-2);--slider-tick-label-font-size:var(--luzmo-font-size-xs);--slider-tooltip-padding:var(--luzmo-spacing-2);--slider-tooltip-border-radius:calc(var(--luzmo-spacing-2) - var(--luzmo-border-width));--slider-tooltip-background:var(--luzmo-background-color);--slider-tooltip-border-color:var(--luzmo-border-color);--slider-tooltip-border-width:var(--luzmo-border-width);--slider-tooltip-color:var(--luzmo-font-color);--slider-tooltip-font-size:var(--slider-label-font-size);--slider-tooltip-gap:var(--luzmo-spacing-2);--slider-editable-width:calc(3 * var(--luzmo-component-height))}:host([ramp]){--slider-tick-height:calc(var(--slider-ramp-height) + 2 * var(--luzmo-spacing-1))}:host([size=s]){--slider-item-height:var(--luzmo-component-height-s);--slider-track-height:calc(var(--luzmo-spacing-2) - var(--luzmo-border-width));--slider-handle-base-size:var(--luzmo-component-height-s);--slider-hit-size:var(--luzmo-component-height-s);--slider-label-font-size:var(--luzmo-font-size-xs);--slider-ramp-height:var(--luzmo-spacing-3)}:host([size=l]){--slider-item-height:var(--luzmo-component-height-l);--slider-track-height:calc(var(--luzmo-spacing-3) - var(--luzmo-spacing-1));--slider-handle-base-size:var(--luzmo-component-height-l);--slider-hit-size:var(--luzmo-component-height-l);--slider-label-font-size:var(--luzmo-font-size-m);--slider-ramp-height:var(--luzmo-spacing-5)}:host([size=xl]){--slider-item-height:var(--luzmo-component-height-xl);--slider-track-height:calc(var(--luzmo-spacing-3) - var(--luzmo-border-width));--slider-handle-base-size:calc(var(--luzmo-component-height-l) + var(--luzmo-spacing-2));--slider-hit-size:var(--luzmo-component-height-xl);--slider-label-font-size:var(--luzmo-font-size-m);--slider-ramp-height:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2))}`,N={handleName:`{label} {position}`},P=16,F=new Set([`filled`,`unfilled`]),I=new Set([`none`,`value`]),L={fromAttribute(e){if(e===null)return;if(e===``||e===`true`)return!0;let t=Number(e);return Number.isFinite(t)?t:void 0},toAttribute(e){return e===void 0?null:e===!0?``:String(e)}},R=class extends a.t(t.n(n.t),{mode:`internal`,live:`polite`}){constructor(...e){super(...e),this.label=``,this.labels={},this._appliedLabel=``,this.applyFocusElementLabel=e=>{this._appliedLabel=e},this.ramp=!1,this.ticks=!1,this.tickLabels=!1,this.editable=!1,this.hideStepper=!1,this.quiet=!1,this.indeterminate=!1,this.invalid=!1,this.readonly=!1,this.formatOptions={},this._languageResolver=new r.t(this),this._handleController=new T(this,e=>this._applySingleValue(e),e=>this._formatHandleValue(e),(e,t)=>this._formatHandleLabel(e,t)),this._interaction=new i.t(this,{value:e=>e?this.values[e]:void 0}),this._rawValue=NaN,this._rawMin=0,this._rawMax=100,this._rawStep=1,this._rawTickStep=0,this._rawVariant=`filled`,this._rawLabelVisibility=`none`,this._focusedIndex=-1,this._formatterCache=new Map,this._pendingCommits=new Set,this._defaultAriaHandleText=(e,t)=>t.format(e),this._defaultAriaValueText=e=>this._formatValueList([...e.values()])}static get styles(){let e=super.styles;return[...Array.isArray(e)?e:e?[e]:[],(0,o.unsafeCSS)(M)]}set value(e){let t=Number.isFinite(e)?e:NaN;if(Object.is(t,this._rawValue))return;let n=this.value;this._rawValue=t,this.requestUpdate(`value`,n)}get value(){return Number.isFinite(this._rawValue)?this._rawValue:this.min+(this.max-this.min)/2}set min(e){let t=Number.isFinite(e)?e:0;if(t===this._rawMin)return;let n=this._rawMin;this._rawMin=t,this.requestUpdate(`min`,n)}get min(){return this._rawMin}set max(e){let t=Number.isFinite(e)?e:NaN;if(Object.is(t,this._rawMax))return;let n=this.max;this._rawMax=t,this.requestUpdate(`max`,n)}get max(){return this._rawMax>this._rawMin?this._rawMax:this._rawMin+100}set step(e){let t=Number.isFinite(e)&&e>0?e:1;if(t===this._rawStep)return;let n=this._rawStep;this._rawStep=t,this.requestUpdate(`step`,n)}get step(){return this._rawStep}set variant(e){let t=F.has(e)?e:`filled`;if(t===this._rawVariant)return;let n=this._rawVariant;this._rawVariant=t,this.requestUpdate(`variant`,n)}get variant(){return this._rawVariant}set labelVisibility(e){let t=I.has(e)?e:`none`;if(t===this._rawLabelVisibility)return;let n=this._rawLabelVisibility;this._rawLabelVisibility=t,this.requestUpdate(`labelVisibility`,n)}get labelVisibility(){return this._rawLabelVisibility}set tickStep(e){let t=Number.isFinite(e)&&e>0?e:0;if(t===this._rawTickStep)return;let n=this._rawTickStep;this._rawTickStep=t,this.requestUpdate(`tickStep`,n)}get tickStep(){return this._rawTickStep}set normalization(e){let t=this.normalization;this._normalization=e,this.requestUpdate(`normalization`,t)}get normalization(){return this._normalization??p}set getAriaHandleText(e){let t=this.getAriaHandleText;this._getAriaHandleText=e,this.requestUpdate(`getAriaHandleText`,t)}get getAriaHandleText(){return this._getAriaHandleText??this._defaultAriaHandleText}set getAriaValueText(e){let t=this.getAriaValueText;this._getAriaValueText=e,this.requestUpdate(`getAriaValueText`,t)}get getAriaValueText(){return this._getAriaValueText??this._defaultAriaValueText}get values(){return this._handleController.values}get focusElement(){return this.rangeInputs?.[Math.min(Math.max(this._handleController.activeIndex,0),this.rangeInputs.length-1)]??this}_applySingleValue(e){this.value=e}_normalizeRawValue(){if(!Number.isFinite(this._rawValue))return;let e=this._rawValue,t=y(this._rawValue,this.min,this.max,this.step);Object.is(t,this._rawValue)||(this._rawValue=t,this.requestUpdate(`value`,e))}_formatHandleValue(e){let t=e.handle?.formatOptions??this.formatOptions;return(e.handle?.getAriaHandleText??this.getAriaHandleText)(e.value,this._numberFormatter(this._withDefaultPrecision(t,e.step,e.min,e.max)))}_formatHandleLabel(e,t){if(e.label)return e.label;if(e.name)return e.name;let n=this.label||this._appliedLabel,r=this._numberFormatter({useGrouping:!1}).format(t+1);return n?m(this.labels.handleName??N.handleName,{label:n,position:r}):r}disconnectedCallback(){this._endDrag(),this._focusedIndex=-1,this._pendingCommits.clear(),super.disconnectedCallback()}_numberFormatter(e=this.formatOptions){let t=this._languageResolver.language;this._formatterCacheLanguage!==t&&(this._formatterCache.clear(),this._formatterCacheLanguage=t);let n=JSON.stringify(e??{}),r=this._formatterCache.get(n);if(r)return r;let i=this._createNumberFormatter(t,e??{});return this._formatterCache.size>=P&&this._formatterCache.clear(),this._formatterCache.set(n,i),i}_withDefaultPrecision(e,...t){return e.style!==void 0||e.minimumFractionDigits!==void 0||e.maximumFractionDigits!==void 0||e.minimumSignificantDigits!==void 0||e.maximumSignificantDigits!==void 0?e:{...e,maximumFractionDigits:Math.min(20,Math.max(...t.map(e=>h(e))))}}_createNumberFormatter(e,t){try{let n=new d.NumberFormatter(e,t);return n.format(1),n}catch{let{style:n,unit:r,...i}=t;return new d.NumberFormatter(e,i)}}_clearNumberFormatterCache(){this._formatterCache.clear(),this._formatterCacheLanguage=void 0}_formatValueList(e){if(e.length<2)return e[0]??``;try{return new Intl.ListFormat(this._languageResolver.language,{style:`short`,type:`unit`}).format(e)}catch{return e.join(`, `)}}get _formattedValues(){return new Map(this._handleController.models.map((e,t)=>[e.name,this._handleController.formatValue(t)]))}get _combinedValueText(){return this.getAriaValueText(this._formattedValues)}handleSlotChange(){this._handleController.draggingIndex>=0&&this._endDrag(),this._interaction.end(),this._handleController.activeIndex=0,this._focusedIndex=-1,this._handleController.invalidate(),this.requestUpdate()}_normalizedPointerValue(e){let t=e.currentTarget.getBoundingClientRect(),n=t.width?(e.clientX-t.left)/t.width:0,r=this.isLTR?n:1-n;return Math.min(1,Math.max(0,r))}_capturePointer(e,t){try{e.setPointerCapture(t),this._capturedPointer={target:e,pointerId:t}}catch{this._capturedPointer=void 0}}_releaseCapturedPointer(){let e=this._capturedPointer;this._capturedPointer=void 0,e&&e.target.hasPointerCapture(e.pointerId)&&e.target.releasePointerCapture(e.pointerId)}_endDrag(){let e=this._handleController.draggingIndex;return this._releaseCapturedPointer(),this._handleController.draggingIndex=-1,this._dragPointerId=void 0,this._dragStartValue=void 0,this.toggleAttribute(`dragging`,!1),e}handlePointerDown(e){if(this.disabled||this.readonly||e.button!==0)return;this._finishDrag(!1);let t=e.currentTarget,n=e.target.closest(`[data-handle-index]`),r=this._normalizedPointerValue(e),a=n?Number(n.dataset.handleIndex):this._handleController.nearestIndex(r);this._interaction.start(i.n(e),this._handleController.models[a]?.name)&&(this.disabled||this.readonly?this._interaction.end():(this._handleController.activeIndex=a,this._handleController.draggingIndex=a,this._dragPointerId=e.pointerId,this._dragStartValue=this._handleController.models[a]?.value,this.toggleAttribute(`dragging`,!0),this._capturePointer(t,e.pointerId),this.indeterminate=!1,this._handleController.setNormalizedValue(a,r)&&this._handleController.dispatchInput(a),this.requestUpdate()))}_isDragPointer(e){return this._handleController.draggingIndex>=0&&e.pointerId===this._dragPointerId}handlePointerMove(e){let t=this._handleController.draggingIndex;!this._isDragPointer(e)||this.disabled||this.readonly||this._handleController.setNormalizedValue(t,this._normalizedPointerValue(e))&&(this._handleController.dispatchInput(t),this.requestUpdate())}handlePointerUp(e){this._isDragPointer(e)&&this._finishDrag(!0)}_finishDrag(e){if(this._handleController.draggingIndex<0)return;let t=this._dragStartValue,n=this._endDrag();!this.disabled&&!this.readonly&&(this._handleController.models[n]?.value!==t&&this._handleController.dispatchChange(n),e&&this.rangeInputs[n]?.focus({preventScroll:!0})),this.requestUpdate(),this._interaction.end()}endInteraction(){this._finishDrag(!1),this._interaction.end()}handleLostPointerCapture(e){this.handlePointerCancel(e)}handlePointerCancel(e){if(!this._isDragPointer(e))return;let t=this._dragStartValue,n=this._endDrag();t!==void 0&&this._handleController.setValue(n,t)&&this._handleController.dispatchInput(n),this.requestUpdate(),this._interaction.cancel()}_applyInputValue(e,t){Number.isFinite(t)&&(this.indeterminate=!1,this._handleController.setValue(e,t)&&(this._pendingCommits.add(e),this._handleController.dispatchInput(e)))}_commitValue(e,t){let n=Number.isFinite(t)&&this._handleController.setValue(e,t),r=this._pendingCommits.delete(e);(n||r)&&(this.indeterminate=!1,this._handleController.dispatchChange(e))}handleNativeInput(e,t){e.stopPropagation();let n=e.target;this.readonly?n.value=String(this._handleController.models[t]?.value):this._applyInputValue(t,n.valueAsNumber)}handleNativeChange(e,t){e.stopPropagation();let n=e.target;this.readonly?n.value=String(this._handleController.models[t]?.value):this._commitValue(t,n.valueAsNumber)}handleKeyDown(e,t){let n=this._handleController.models[t];if(!n||this.disabled)return;if(this.readonly){[`ArrowUp`,`ArrowDown`,`ArrowRight`,`ArrowLeft`,`Home`,`End`,`PageUp`,`PageDown`].includes(e.key)&&e.preventDefault();return}if(e.key===`Escape`){this._interaction.endKeyboard(),this._handleController.reset(t)&&(e.preventDefault(),e.stopPropagation(),this.requestUpdate());return}let r=e=>n.value+n.step*e,i=this.isLTR?1:-1,a;switch(e.key){case`ArrowUp`:a=r(1);break;case`ArrowDown`:a=r(-1);break;case`ArrowRight`:a=r(i);break;case`ArrowLeft`:a=r(-i);break;case`Home`:a=n.effectiveMin;break;case`End`:a=n.effectiveMax;break;case`PageUp`:a=r(5);break;case`PageDown`:a=r(-5);break;default:return}e.preventDefault(),e.stopPropagation(),this._interaction.keyDown(e.key,n.name)&&(this.disabled||this.readonly?this._interaction.end():(this.indeterminate=!1,this._handleController.setValue(t,a)&&(this._interaction.commit(()=>this._handleController.dispatchInput(t),()=>this._handleController.dispatchChange(t)),this.requestUpdate())))}handleTrackInput(e){let t=e.target;this.handleNativeInput(e,Number(t.dataset.handleIndex))}handleTrackChange(e){let t=e.target;this.handleNativeChange(e,Number(t.dataset.handleIndex))}handleTrackKeyDown(e){let t=e.target;this.handleKeyDown(e,Number(t.dataset.handleIndex))}handleTrackKeyUp(e){this._interaction.keyUp(e.key)}handleTrackFocusIn(e){let t=e.target,n=Number(t.dataset.handleIndex);this._handleController.activeIndex=n,this._focusedIndex=n}handleTrackFocusOut(e){this._interaction.endKeyboard();let t=e.target;this._focusedIndex===Number(t.dataset.handleIndex)&&(this._focusedIndex=-1)}handleTrackDoubleClick(e){let t=e.target.closest(`[data-handle-index]`);!t||this.disabled||this.readonly||(e.preventDefault(),this._handleController.reset(Number(t.dataset.handleIndex)))}handleNumberInput(e){if(e.stopPropagation(),this.readonly)return;let t=e.currentTarget;this._applyInputValue(0,t.value)}handleNumberChange(e){if(e.stopPropagation(),this.readonly)return;let t=e.currentTarget;this._commitValue(0,t.value)}get _hasFill(){return this.variant!==`unfilled`}_renderTicks(){if(!this.ticks)return o.nothing;let e=this.tickStep||this.step,t=S(this.min,this.max,e),n=this._numberFormatter(this._withDefaultPrecision(this.formatOptions,e,this.min,this.max));return O(t,this.min,this.max,n,this.tickLabels)}_renderFill(e){return!this._hasFill||this.ramp?o.nothing:A(e,this.fillStart)}render(){let e=this._handleController.models,t=this.labelVisibility===`value`,n=this.editable&&e.length===1?e[0]:void 0,r=e.length>1||n!==void 0,i=(0,f.repeat)(e,({name:e})=>e,(t,n)=>E({model:t,index:n,total:e.length,grouped:r,label:this.label,appliedLabel:this._appliedLabel,helpTextId:this.helpTextId,labelVisibility:this.labelVisibility,formattedValue:this._handleController.formatValue(n),activeIndex:this._handleController.activeIndex,draggingIndex:this._handleController.draggingIndex,focusedIndex:this._focusedIndex,invalid:this.invalid,readonly:this.readonly,disabled:this.disabled}));return o.html`
96
+ <slot
97
+ name="handle"
98
+ class="handle-slot"
99
+ @slotchange=${this.handleSlotChange}
100
+ ></slot>
101
+ ${r?o.html`<span id="slider-label" class="visually-hidden"
102
+ >${this.label||this._appliedLabel}</span
103
+ >`:o.nothing}
104
+ <div
105
+ class="control-row"
106
+ role=${(0,c.ifDefined)(r?`group`:void 0)}
107
+ aria-labelledby=${(0,c.ifDefined)(r?`slider-label`:void 0)}
108
+ aria-describedby=${(0,c.ifDefined)(r?this.helpTextId:void 0)}
109
+ >
110
+ <div
111
+ id="track"
112
+ class="track"
113
+ @pointerdown=${this.handlePointerDown}
114
+ @pointermove=${this.handlePointerMove}
115
+ @pointerup=${this.handlePointerUp}
116
+ @pointercancel=${this.handlePointerCancel}
117
+ @lostpointercapture=${this.handleLostPointerCapture}
118
+ @input=${this.handleTrackInput}
119
+ @change=${this.handleTrackChange}
120
+ @keydown=${this.handleTrackKeyDown}
121
+ @keyup=${this.handleTrackKeyUp}
122
+ @focusin=${this.handleTrackFocusIn}
123
+ @focusout=${this.handleTrackFocusOut}
124
+ @dblclick=${this.handleTrackDoubleClick}
125
+ >
126
+ <span class="rail"></span>
127
+ ${this.ramp?j(e,this.fillStart,this._hasFill):o.nothing}
128
+ ${this._renderFill(e)} ${this._renderTicks()} ${i}
129
+ </div>
130
+ ${t?o.html`<output class="value-label"
131
+ >${this._combinedValueText}</output
132
+ >`:o.nothing}
133
+ ${n?D({model:n,label:this.label||this._appliedLabel,formatOptions:this.formatOptions,size:this.size,disabled:this.disabled,invalid:this.invalid,readonly:this.readonly,hideStepper:this.hideStepper,quiet:this.quiet,indeterminate:this.indeterminate,onInput:this.handleNumberInput,onChange:this.handleNumberChange}):o.nothing}
134
+ </div>
135
+ ${this.renderHelpText(this.invalid)}
136
+ `}willUpdate(e){super.willUpdate(e),(e.has(`value`)||e.has(`min`)||e.has(`max`)||e.has(`step`))&&this._normalizeRawValue(),(e.has(r.r)||e.has(`formatOptions`))&&this._clearNumberFormatterCache()}updated(e){super.updated(e),(e.has(`disabled`)&&this.disabled||e.has(`readonly`)&&this.readonly)&&(this._endDrag(),this._pendingCommits.clear(),this._interaction.end())}};e.t([(0,s.property)({type:String})],R.prototype,`label`,void 0),e.t([(0,s.property)({attribute:!1})],R.prototype,`labels`,void 0),e.t([(0,s.state)()],R.prototype,`_appliedLabel`,void 0),e.t([(0,s.property)({type:Number,reflect:!0})],R.prototype,`value`,null),e.t([(0,s.property)({type:Number,reflect:!0})],R.prototype,`min`,null),e.t([(0,s.property)({type:Number,reflect:!0})],R.prototype,`max`,null),e.t([(0,s.property)({type:Number,reflect:!0})],R.prototype,`step`,null),e.t([(0,s.property)({type:Number,reflect:!0,attribute:`default-value`})],R.prototype,`defaultValue`,void 0),e.t([(0,s.property)({type:String,reflect:!0})],R.prototype,`variant`,null),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`ramp`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`ticks`,void 0),e.t([(0,s.property)({type:String,reflect:!0,attribute:`label-visibility`})],R.prototype,`labelVisibility`,null),e.t([(0,s.property)({reflect:!0,attribute:`fill-start`,converter:L})],R.prototype,`fillStart`,void 0),e.t([(0,s.property)({type:Number,reflect:!0,attribute:`tick-step`})],R.prototype,`tickStep`,null),e.t([(0,s.property)({type:Boolean,reflect:!0,attribute:`tick-labels`})],R.prototype,`tickLabels`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`editable`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0,attribute:`hide-stepper`})],R.prototype,`hideStepper`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`quiet`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`indeterminate`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`invalid`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0})],R.prototype,`readonly`,void 0),e.t([(0,s.property)({attribute:!1})],R.prototype,`formatOptions`,void 0),e.t([(0,s.property)({attribute:!1})],R.prototype,`normalization`,null),e.t([(0,s.property)({attribute:!1})],R.prototype,`getAriaHandleText`,null),e.t([(0,s.property)({attribute:!1})],R.prototype,`getAriaValueText`,null),e.t([(0,s.queryAll)(`input[type="range"]`)],R.prototype,`rangeInputs`,void 0),e.t([(0,s.state)()],R.prototype,`_focusedIndex`,void 0);var z={fromAttribute(e){if(e===null)return;if(e===`previous`)return e;let t=Number(e);return Number.isFinite(t)?t:void 0},toAttribute(e){return e===void 0?null:String(e)}},B={fromAttribute(e){if(e===null)return;if(e===`next`)return e;let t=Number(e);return Number.isFinite(t)?t:void 0},toAttribute(e){return e===void 0?null:String(e)}},V=class extends e.n{constructor(...e){super(...e),this.name=``,this.label=``,this.value=NaN,this.color=``}set normalization(e){let t=this.normalization;this._normalization=e,this.requestUpdate(`normalization`,t)}get normalization(){return this._normalization??p}#e;attachController(e){this.#e=e}detachController(e){this.#e===e&&(this.#e=void 0)}get hasController(){return this.#e!==void 0}focus(e){this.#e?.inputForHandle(this)?.focus(e)}render(){return o.nothing}updated(e){super.updated(e),(e.has(`value`)||e.has(`min`)||e.has(`max`)||e.has(`step`)||e.has(`color`)||e.has(`name`)||e.has(`label`)||e.has(`defaultValue`)||e.has(`formatOptions`)||e.has(`normalization`)||e.has(`getAriaHandleText`))&&this.#e?.requestHostUpdate()}};e.t([(0,s.property)({type:String,reflect:!0})],V.prototype,`name`,void 0),e.t([(0,s.property)({type:String})],V.prototype,`label`,void 0),e.t([(0,s.property)({type:Number,reflect:!0})],V.prototype,`value`,void 0),e.t([(0,s.property)({type:Number,reflect:!0,attribute:`default-value`})],V.prototype,`defaultValue`,void 0),e.t([(0,s.property)({reflect:!0,converter:z})],V.prototype,`min`,void 0),e.t([(0,s.property)({reflect:!0,converter:B})],V.prototype,`max`,void 0),e.t([(0,s.property)({type:Number,reflect:!0})],V.prototype,`step`,void 0),e.t([(0,s.property)({type:String,reflect:!0})],V.prototype,`color`,void 0),e.t([(0,s.property)({attribute:!1})],V.prototype,`formatOptions`,void 0),e.t([(0,s.property)({attribute:!1})],V.prototype,`normalization`,null),e.t([(0,s.property)({attribute:!1})],V.prototype,`getAriaHandleText`,void 0),typeof customElements<`u`&&!customElements.get(`luzmo-slider-handle`)&&customElements.define(`luzmo-slider-handle`,V),typeof customElements<`u`&&!customElements.get(`luzmo-slider`)&&customElements.define(`luzmo-slider`,R),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return V}});
@@ -15,4 +15,4 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- let e=require("lit"),t=require("lit/async-directive.js");var n=[``,()=>{}],r=class extends t.AsyncDirective{constructor(...e){super(...e),this.start=n,this.streamInside=n,this.end=n,this.streamOutside=n,this.state=`off`,this.handleStart=e=>{this.clearStream(),this.callHandler(this.start[1],e),!e.defaultPrevented&&(this.removeListeners(),this.addListeners(`on`))},this.handleInside=e=>{this.handleStream(this.streamInside[1],e)},this.handleEnd=e=>{this.clearStream(),this.callHandler(this.end[1],e),this.removeListeners(),this.addListeners(`off`)},this.handleOutside=e=>{this.handleStream(this.streamOutside[1],e)}}render(t){return e.nothing}update(e,[{start:t,end:r,streamInside:i=n,streamOutside:a=n}]){this.element!==e.element&&(this.element=e.element,this.removeListeners()),this.host=e.options?.host||this.element,this.start=t,this.end=r,this.streamInside=i,this.streamOutside=a,this.addListeners()}addListeners(e){this.state=e||this.state,this.state===`off`?(this.addListener(this.streamOutside[0],this.handleOutside),this.addListener(this.start[0],this.handleStart)):this.state===`on`&&(this.addListener(this.streamInside[0],this.handleInside),this.addListener(this.end[0],this.handleEnd))}callHandler(e,t){typeof e==`function`?e.call(this.host,t):e.handleEvent(t)}handleStream(e,t){this.stream||=(this.callHandler(e,t),requestAnimationFrame(()=>{this.stream=void 0}))}clearStream(){this.stream!=null&&(cancelAnimationFrame(this.stream),this.stream=void 0)}addListener(e,t){Array.isArray(e)?e.map(e=>{this.element.addEventListener(e,t)}):this.element.addEventListener(e,t)}removeListener(e,t){Array.isArray(e)?e.map(e=>{this.element.removeEventListener(e,t)}):this.element.removeEventListener(e,t)}removeListeners(){this.removeListener(this.start[0],this.handleStart),this.removeListener(this.streamInside[0],this.handleInside),this.removeListener(this.end[0],this.handleEnd),this.removeListener(this.streamOutside[0],this.handleOutside)}disconnected(){this.removeListeners()}reconnected(){this.addListeners()}},i=(0,t.directive)(r);Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
18
+ let e=require("lit"),t=require("lit/async-directive.js");var n=[``,()=>{}],r=class extends t.AsyncDirective{constructor(...e){super(...e),this.start=n,this.streamInside=n,this.end=n,this.streamOutside=n,this.state=`off`,this.handleStart=e=>{this.clearStream(),this.callHandler(this.start[1],e),!e.defaultPrevented&&(this.removeListeners(),this.addListeners(`on`))},this.handleInside=e=>{this.handleStream(this.streamInside[1],e)},this.handleEnd=e=>{this.clearStream(),this.callHandler(this.end[1],e),this.removeListeners(),this.addListeners(`off`)},this.handleOutside=e=>{this.handleStream(this.streamOutside[1],e)}}render(t){return e.nothing}update(e,[{start:t,end:r,streamInside:i=n,streamOutside:a=n}]){this.element!==e.element&&(this.element=e.element,this.removeListeners()),this.host=e.options?.host||this.element,this.start=t,this.end=r,this.streamInside=i,this.streamOutside=a,this.addListeners()}addListeners(e){this.state=e||this.state,this.state===`off`?(this.addListener(this.streamOutside[0],this.handleOutside),this.addListener(this.start[0],this.handleStart)):this.state===`on`&&(this.addListener(this.streamInside[0],this.handleInside),this.addListener(this.end[0],this.handleEnd))}callHandler(e,t){typeof e==`function`?e.call(this.host,t):e.handleEvent(t)}handleStream(e,t){this.stream||=(this.callHandler(e,t),requestAnimationFrame(()=>{this.stream=void 0}))}clearStream(){this.stream!=null&&(cancelAnimationFrame(this.stream),this.stream=void 0)}addListener(e,t){Array.isArray(e)?e.map(e=>{this.element.addEventListener(e,t)}):this.element.addEventListener(e,t)}removeListener(e,t){Array.isArray(e)?e.map(e=>{this.element.removeEventListener(e,t)}):this.element.removeEventListener(e,t)}removeListeners(){this.removeListener(this.start[0],this.handleStart),this.removeListener(this.streamInside[0],this.handleInside),this.removeListener(this.end[0],this.handleEnd),this.removeListener(this.streamOutside[0],this.handleOutside)}disconnected(){this.removeListeners(),this.clearStream(),this.state=`off`}reconnected(){this.addListeners()}},i=(0,t.directive)(r);Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
@@ -66,7 +66,7 @@ var r = ["", () => {}], i = n(class extends t {
66
66
  this.removeListener(this.start[0], this.handleStart), this.removeListener(this.streamInside[0], this.handleInside), this.removeListener(this.end[0], this.handleEnd), this.removeListener(this.streamOutside[0], this.handleOutside);
67
67
  }
68
68
  disconnected() {
69
- this.removeListeners();
69
+ this.removeListeners(), this.clearStream(), this.state = "off";
70
70
  }
71
71
  /* c8 ignore next 3 */
72
72
  reconnected() {
@@ -15,4 +15,4 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs"),n=require("./focus-visible-BQAhwoxi.cjs"),r=require("./focusable-BIHTrJd6.cjs"),i=require("./platform-BAjeJp2W.cjs"),a=require("./streaming-listener-Bfyk6Fsx.cjs"),o=require("./voice-recorder-B1tBrGTV.cjs"),s=require("./template-property-yhcAmPXk.cjs");exports.ElementSizes=t.t,exports.FocusVisiblePolyfillMixin=n.t,exports.Focusable=r.t,exports.LuzmoElement=e.n,exports.LuzmoMixin=e.r,exports.SizedMixin=t.n,exports.VoiceRecorder=o.t,exports.createTemplateRenderer=s.t,exports.isAndroid=i.t,exports.isAppleDevice=i.n,exports.isChrome=i.r,exports.isFirefox=i.i,exports.isIOS=i.a,exports.isIPad=i.o,exports.isIPhone=i.s,exports.isMac=i.c,exports.isSeamonkey=i.l,exports.isWebKit=i.u,exports.streamingListener=a.t,exports.templateProperty=s.n;
18
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs"),n=require("./focus-visible-BQAhwoxi.cjs"),r=require("./focusable-BIHTrJd6.cjs"),i=require("./platform-BAjeJp2W.cjs"),a=require("./streaming-listener-BzGZUHkj.cjs"),o=require("./voice-recorder-B1tBrGTV.cjs"),s=require("./template-property-yhcAmPXk.cjs");exports.ElementSizes=t.t,exports.FocusVisiblePolyfillMixin=n.t,exports.Focusable=r.t,exports.LuzmoElement=e.n,exports.LuzmoMixin=e.r,exports.SizedMixin=t.n,exports.VoiceRecorder=o.t,exports.createTemplateRenderer=s.t,exports.isAndroid=i.t,exports.isAppleDevice=i.n,exports.isChrome=i.r,exports.isFirefox=i.i,exports.isIOS=i.a,exports.isIPad=i.o,exports.isIPhone=i.s,exports.isMac=i.c,exports.isSeamonkey=i.l,exports.isWebKit=i.u,exports.streamingListener=a.t,exports.templateProperty=s.n;
@@ -20,7 +20,7 @@ import { n, t as r } from "./sized-mixin-BmxIAuoH.js";
20
20
  import { t as i } from "./focus-visible-D6TRtUd7.js";
21
21
  import { t as a } from "./focusable-xjv79E40.js";
22
22
  import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m, u as h } from "./platform-CDW-WdXN.js";
23
- import { t as g } from "./streaming-listener-B6mDl4pZ.js";
23
+ import { t as g } from "./streaming-listener-DyS3scAi.js";
24
24
  import { t as _ } from "./voice-recorder-BXY_l_78.js";
25
25
  import { n as v, t as y } from "./template-property-Bks4Db5C.js";
26
26
  export { r as ElementSizes, i as FocusVisiblePolyfillMixin, a as Focusable, e as LuzmoElement, t as LuzmoMixin, n as SizedMixin, _ as VoiceRecorder, y as createTemplateRenderer, m as isAndroid, u as isAppleDevice, f as isChrome, c as isFirefox, o as isIOS, d as isIPad, p as isIPhone, s as isMac, l as isSeamonkey, h as isWebKit, g as streamingListener, v as templateProperty };