@vonage/vivid 4.2.0 → 4.4.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 (155) hide show
  1. package/appearance-ui/index.cjs +1 -2
  2. package/appearance-ui/index.js +1 -2
  3. package/custom-elements.json +435 -41
  4. package/index.cjs +1 -0
  5. package/index.js +1 -1
  6. package/lib/button/button.d.ts +1 -0
  7. package/lib/dialog/dialog.d.ts +1 -0
  8. package/lib/empty-state/definition.d.ts +1 -0
  9. package/lib/empty-state/empty-state.d.ts +5 -0
  10. package/lib/enums.d.ts +4 -0
  11. package/lib/popup/popup.d.ts +5 -0
  12. package/lib/range-slider/range-slider.d.ts +2 -0
  13. package/lib/slider/slider.d.ts +5 -0
  14. package/lib/slider/slider.template.d.ts +2 -2
  15. package/lib/switch/switch.d.ts +1 -1
  16. package/package.json +1 -1
  17. package/shared/affix.cjs +1 -2
  18. package/shared/affix.js +1 -2
  19. package/shared/anchored.cjs +1 -2
  20. package/shared/anchored.js +1 -2
  21. package/shared/calendar-event.cjs +1 -2
  22. package/shared/calendar-event.js +1 -2
  23. package/shared/definition.cjs +2 -3
  24. package/shared/definition.js +2 -3
  25. package/shared/definition11.cjs +29 -13
  26. package/shared/definition11.js +29 -14
  27. package/shared/definition12.cjs +1 -1
  28. package/shared/definition12.js +1 -1
  29. package/shared/definition13.cjs +1 -2
  30. package/shared/definition13.js +1 -2
  31. package/shared/definition14.cjs +1 -2
  32. package/shared/definition14.js +1 -2
  33. package/shared/definition15.cjs +1 -2
  34. package/shared/definition15.js +1 -2
  35. package/shared/definition16.cjs +1 -2
  36. package/shared/definition16.js +1 -2
  37. package/shared/definition17.cjs +4 -8
  38. package/shared/definition17.js +4 -8
  39. package/shared/definition18.cjs +14 -22
  40. package/shared/definition18.js +14 -22
  41. package/shared/definition19.cjs +29 -50
  42. package/shared/definition19.js +29 -50
  43. package/shared/definition20.cjs +1 -2
  44. package/shared/definition20.js +1 -2
  45. package/shared/definition21.cjs +68 -32
  46. package/shared/definition21.js +68 -32
  47. package/shared/definition23.cjs +19 -5
  48. package/shared/definition23.js +20 -6
  49. package/shared/definition24.cjs +2 -3
  50. package/shared/definition24.js +2 -3
  51. package/shared/definition25.cjs +23 -48
  52. package/shared/definition25.js +23 -48
  53. package/shared/definition26.cjs +1 -2
  54. package/shared/definition26.js +1 -2
  55. package/shared/definition28.cjs +1 -2
  56. package/shared/definition28.js +1 -2
  57. package/shared/definition29.cjs +19 -39
  58. package/shared/definition29.js +19 -39
  59. package/shared/definition3.cjs +1 -2
  60. package/shared/definition3.js +1 -2
  61. package/shared/definition30.cjs +1 -1
  62. package/shared/definition30.js +1 -1
  63. package/shared/definition31.cjs +1 -2
  64. package/shared/definition31.js +1 -2
  65. package/shared/definition34.cjs +1 -2
  66. package/shared/definition34.js +1 -2
  67. package/shared/definition35.cjs +14 -26
  68. package/shared/definition35.js +14 -26
  69. package/shared/definition36.cjs +1 -2
  70. package/shared/definition36.js +1 -2
  71. package/shared/definition37.cjs +8 -16
  72. package/shared/definition37.js +8 -16
  73. package/shared/definition38.cjs +1 -2
  74. package/shared/definition38.js +1 -2
  75. package/shared/definition39.cjs +1 -2
  76. package/shared/definition39.js +1 -2
  77. package/shared/definition4.cjs +7 -13
  78. package/shared/definition4.js +7 -13
  79. package/shared/definition40.cjs +1 -2
  80. package/shared/definition40.js +1 -2
  81. package/shared/definition42.cjs +172 -106
  82. package/shared/definition42.js +172 -106
  83. package/shared/definition43.cjs +7 -6
  84. package/shared/definition43.js +5 -4
  85. package/shared/definition44.cjs +4 -8
  86. package/shared/definition44.js +4 -8
  87. package/shared/definition45.cjs +1 -2
  88. package/shared/definition45.js +1 -2
  89. package/shared/definition46.cjs +96 -12
  90. package/shared/definition46.js +97 -13
  91. package/shared/definition47.cjs +1 -2
  92. package/shared/definition47.js +1 -2
  93. package/shared/definition48.cjs +2 -3
  94. package/shared/definition48.js +2 -3
  95. package/shared/definition5.cjs +1 -2
  96. package/shared/definition5.js +1 -2
  97. package/shared/definition50.cjs +1 -2
  98. package/shared/definition50.js +1 -2
  99. package/shared/definition51.cjs +5 -10
  100. package/shared/definition51.js +5 -10
  101. package/shared/definition52.cjs +1 -2
  102. package/shared/definition52.js +1 -2
  103. package/shared/definition53.cjs +1 -2
  104. package/shared/definition53.js +1 -2
  105. package/shared/definition54.cjs +9 -21
  106. package/shared/definition54.js +9 -21
  107. package/shared/definition55.cjs +24 -43
  108. package/shared/definition55.js +24 -43
  109. package/shared/definition56.cjs +24 -39
  110. package/shared/definition56.js +24 -39
  111. package/shared/definition57.cjs +22 -45
  112. package/shared/definition57.js +22 -45
  113. package/shared/definition58.cjs +18 -37
  114. package/shared/definition58.js +18 -37
  115. package/shared/definition59.cjs +1 -2
  116. package/shared/definition59.js +1 -2
  117. package/shared/definition6.cjs +1 -2
  118. package/shared/definition6.js +1 -2
  119. package/shared/definition62.cjs +1 -2
  120. package/shared/definition62.js +1 -2
  121. package/shared/definition63.cjs +156 -4
  122. package/shared/definition63.js +157 -6
  123. package/shared/definition7.cjs +1 -2
  124. package/shared/definition7.js +1 -2
  125. package/shared/definition8.cjs +1 -2
  126. package/shared/definition8.js +1 -2
  127. package/shared/definition9.cjs +1 -2
  128. package/shared/definition9.js +1 -2
  129. package/shared/enums.cjs +6 -0
  130. package/shared/enums.js +6 -1
  131. package/shared/icon.cjs +2 -3
  132. package/shared/icon.js +2 -3
  133. package/shared/index2.cjs +3 -6
  134. package/shared/index2.js +3 -6
  135. package/shared/listbox.cjs +1 -2
  136. package/shared/listbox.js +1 -2
  137. package/shared/patterns/anchored.d.ts +4 -4
  138. package/shared/patterns/chevron.d.ts +2 -0
  139. package/shared/presentationDate.cjs +2 -3
  140. package/shared/presentationDate.js +2 -3
  141. package/shared/radio.cjs +1 -2
  142. package/shared/radio.js +1 -2
  143. package/shared/slider.template.cjs +27 -4
  144. package/shared/slider.template.js +27 -4
  145. package/shared/text-anchor.cjs +1 -2
  146. package/shared/text-anchor.js +1 -2
  147. package/shared/video-player.cjs +4 -8
  148. package/shared/video-player.js +4 -8
  149. package/styles/core/all.css +1 -1
  150. package/styles/core/theme.css +1 -1
  151. package/styles/core/typography.css +1 -1
  152. package/styles/tokens/theme-dark.css +4 -4
  153. package/styles/tokens/theme-light.css +4 -4
  154. package/styles/tokens/vivid-2-compat.css +1 -1
  155. package/vivid.api.json +3228 -1108
@@ -1,4 +1,5 @@
1
1
  import { F as FoundationElement, a as attr, o as observable, n as nullableNumberConverter, h as html, r as registerFactory } from './index.js';
2
+ import { P as Popup, a as PlacementStrategy, p as popupRegistries } from './definition63.js';
2
3
  import { e as keyHome, f as keyEnd, d as keyArrowUp, k as keyArrowLeft, c as keyArrowDown, a as keyArrowRight } from './key-codes2.js';
3
4
  import './affix.js';
4
5
  import { f as formElements } from './index2.js';
@@ -11,7 +12,7 @@ import { r as ref } from './ref.js';
11
12
  import { w as when } from './when.js';
12
13
  import { c as classNames } from './class-names.js';
13
14
 
14
- const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;--_track-start-inset-inline-start: 0;--_track-start-inset-block-start: 0;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;border-radius:4px;background:var(--_track-background-color)}.control .track-start{position:absolute;border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}:host([markers]) .control.horizontal .track-start{--_track-start-inset-inline-start: 1px;border-bottom-left-radius:0;border-top-left-radius:0}.control.horizontal .track .mark{position:absolute;block-size:6px;inline-size:100%;inset-block-start:-2px;inset-inline-start:0}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{position:absolute;block-size:100%;inline-size:6px;inset-block-start:0;inset-inline-start:-2px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}:host([markers]) .control.vertical .track-start{--_track-start-inset-block-start: 1px;border-radius:0}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.control:not(.disabled) .mark{color:var(--vvd-color-neutral-950)}.control.disabled .mark{color:var(--_track-start-background-color)}.thumb-container{position:absolute;border-radius:50%;block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline-color:transparent;touch-action:none}:focus-visible .thumb-container,.thumb-container:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;--_thumb-interaction-indicator-alpha: .05;border-radius:50%}.control.horizontal .thumb-container{transform:translate(calc(var(--_thumb-interaction-indicator-size) / 2))}.control.vertical .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha: .12}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha: .25}.thumb-container:before{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha, 0);transition:opacity .2s ease-out 0s}.thumb-container:after{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2)}.control{--_track-start-inset-inline-start: auto;--_track-start-inset-block-start: auto}:host([markers]) .control.horizontal .track-start,:host([markers]) .control.vertical .track-start{--_track-start-inset-inline-start: auto;--_track-start-inset-block-start: auto}";
15
+ const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;--_track-start-inset-inline-start: 0;--_track-start-inset-block-start: 0;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;border-radius:4px;background:var(--_track-background-color)}.control .track-start{position:absolute;border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}:host([markers]) .control.horizontal .track-start{--_track-start-inset-inline-start: 1px;border-bottom-left-radius:0;border-top-left-radius:0}.control.horizontal .track .mark{position:absolute;block-size:6px;inline-size:100%;inset-block-start:-2px;inset-inline-start:0}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{position:absolute;block-size:100%;inline-size:6px;inset-block-start:0;inset-inline-start:-2px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}:host([markers]) .control.vertical .track-start{--_track-start-inset-block-start: 1px;border-radius:0}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.control:not(.disabled) .mark{color:var(--vvd-color-neutral-950)}.control.disabled .mark{color:var(--_track-start-background-color)}.thumb-container{position:absolute;border-radius:50%;block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline:none;touch-action:none}.thumb-container.focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;--_thumb-interaction-indicator-alpha: .05;border-radius:50%}.control.horizontal .thumb-container{transform:translate(calc(var(--_thumb-interaction-indicator-size) / 2))}.control.vertical .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha: .12}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha: .25}.thumb-container:before{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha, 0);transition:opacity .2s ease-out 0s}.thumb-container:after{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2)}.popup{pointer-events:none}.tooltip{width:auto;padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}.control{--_track-start-inset-inline-start: auto;--_track-start-inset-block-start: auto}:host([markers]) .control.horizontal .track-start,:host([markers]) .control.vertical .track-start{--_track-start-inset-inline-start: auto;--_track-start-inset-block-start: auto}";
15
16
 
16
17
  class _RangeSlider extends FoundationElement {
17
18
  }
@@ -43,38 +44,23 @@ const inverseLerp = (a, b, value) => limit(0, 1, (value - a) / (b - a));
43
44
 
44
45
  var __defProp = Object.defineProperty;
45
46
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
47
+ var __typeError = (msg) => {
48
+ throw TypeError(msg);
49
+ };
46
50
  var __decorateClass = (decorators, target, key, kind) => {
47
51
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
48
52
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
49
53
  if (decorator = decorators[i])
50
54
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
51
- if (kind && result)
52
- __defProp(target, key, result);
55
+ if (kind && result) __defProp(target, key, result);
53
56
  return result;
54
57
  };
55
- var __accessCheck = (obj, member, msg) => {
56
- if (!member.has(obj))
57
- throw TypeError("Cannot " + msg);
58
- };
59
- var __privateGet = (obj, member, getter) => {
60
- __accessCheck(obj, member, "read from private field");
61
- return getter ? getter.call(obj) : member.get(obj);
62
- };
63
- var __privateAdd = (obj, member, value) => {
64
- if (member.has(obj))
65
- throw TypeError("Cannot add the same private member more than once");
66
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
67
- };
68
- var __privateSet = (obj, member, value, setter) => {
69
- __accessCheck(obj, member, "write to private field");
70
- member.set(obj, value);
71
- return value;
72
- };
73
- var __privateMethod = (obj, member, method) => {
74
- __accessCheck(obj, member, "access private method");
75
- return method;
76
- };
77
- var _isInternalValueUpdate, _updateValues, updateValues_fn, _applyStep, applyStep_fn, _updateFormValue, updateFormValue_fn, _thumbs, thumbs_get, _thumbConstraints, thumbConstraints_get, _draggingThumb, _updateThumbPositions, updateThumbPositions_fn, _thumbTrackEndOffset, thumbTrackEndOffset_fn, _calculateValueFromMouseEvent, calculateValueFromMouseEvent_fn, _roundToNearestStep, roundToNearestStep_fn, _registerThumbListeners, registerThumbListeners_fn, _unregisterThumbListeners, unregisterThumbListeners_fn, _onThumbMousedown, _onThumbKeydown, _registerDragHandlers, registerDragHandlers_fn, _unregisterDragListeners, unregisterDragListeners_fn, _onDragMove, _onDragEnd;
58
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
59
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
60
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
61
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
62
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
63
+ var _isInternalValueUpdate, _RangeSlider_instances, updateValues_fn, applyStep_fn, updateFormValue_fn, thumbs_get, thumbConstraints_get, getThumbId_fn, getThumbIdFromEvent_fn, updateThumbPositions_fn, thumbTrackEndOffset_fn, calculateValueFromMouseEvent_fn, roundToNearestStep_fn, _isNonVisibleFocus, focusThumbNonVisibly_fn, registerThumbListeners_fn, unregisterThumbListeners_fn, _onThumbFocus, _onThumbBlur, _onMouseOver, _onMouseOut, _onThumbMousedown, _onThumbKeydown, registerDragHandlers_fn, unregisterDragListeners_fn, _onDragMove, _onDragEnd;
78
64
  const Direction = {
79
65
  Increment: 1,
80
66
  Decrement: -1
@@ -82,20 +68,7 @@ const Direction = {
82
68
  let RangeSlider = class extends FormAssociatedRangeSlider {
83
69
  constructor() {
84
70
  super(...arguments);
85
- __privateAdd(this, _updateValues);
86
- __privateAdd(this, _applyStep);
87
- __privateAdd(this, _updateFormValue);
88
- __privateAdd(this, _thumbs);
89
- __privateAdd(this, _thumbConstraints);
90
- __privateAdd(this, _updateThumbPositions);
91
- __privateAdd(this, _thumbTrackEndOffset);
92
- __privateAdd(this, _calculateValueFromMouseEvent);
93
- __privateAdd(this, _roundToNearestStep);
94
- // --- Event handling ---
95
- __privateAdd(this, _registerThumbListeners);
96
- __privateAdd(this, _unregisterThumbListeners);
97
- __privateAdd(this, _registerDragHandlers);
98
- __privateAdd(this, _unregisterDragListeners);
71
+ __privateAdd(this, _RangeSlider_instances);
99
72
  // --- Start & end values ---
100
73
  __privateAdd(this, _isInternalValueUpdate, false);
101
74
  this.start = "";
@@ -107,6 +80,7 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
107
80
  this.ariaStartLabel = null;
108
81
  this.ariaEndLabel = null;
109
82
  this.markers = false;
83
+ this.pin = false;
110
84
  this.valueTextFormatter = (value) => parseFloat(value).toLocaleString(this.locale.lang);
111
85
  // --- Thumbs ---
112
86
  /**
@@ -121,10 +95,27 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
121
95
  * @internal
122
96
  */
123
97
  this._endThumbEl = null;
124
- __privateAdd(this, _draggingThumb, false);
98
+ this._draggingThumb = false;
99
+ this._visiblyFocusedThumb = null;
100
+ this._hoveredThumb = null;
125
101
  this._startThumbCss = "";
126
102
  this._endThumbCss = "";
127
103
  this._selectedRangeCss = "";
104
+ __privateAdd(this, _isNonVisibleFocus, false);
105
+ __privateAdd(this, _onThumbFocus, (e) => {
106
+ if (!__privateGet(this, _isNonVisibleFocus)) {
107
+ this._visiblyFocusedThumb = __privateMethod(this, _RangeSlider_instances, getThumbIdFromEvent_fn).call(this, e);
108
+ }
109
+ });
110
+ __privateAdd(this, _onThumbBlur, () => {
111
+ this._visiblyFocusedThumb = null;
112
+ });
113
+ __privateAdd(this, _onMouseOver, (e) => {
114
+ this._hoveredThumb = __privateMethod(this, _RangeSlider_instances, getThumbIdFromEvent_fn).call(this, e);
115
+ });
116
+ __privateAdd(this, _onMouseOut, () => {
117
+ this._hoveredThumb = null;
118
+ });
128
119
  __privateAdd(this, _onThumbMousedown, (event) => {
129
120
  if (this.disabled || event.defaultPrevented) {
130
121
  return;
@@ -133,46 +124,47 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
133
124
  if (target === this._endThumbEl && this.startAsNumber === this.max && this.endAsNumber === this.max) {
134
125
  target = this._startThumbEl;
135
126
  }
136
- target.focus();
137
- __privateSet(this, _draggingThumb, target === this._startThumbEl ? "start" : "end");
138
- __privateMethod(this, _registerDragHandlers, registerDragHandlers_fn).call(this);
127
+ __privateMethod(this, _RangeSlider_instances, focusThumbNonVisibly_fn).call(this, target);
128
+ this._draggingThumb = __privateMethod(this, _RangeSlider_instances, getThumbId_fn).call(this, target);
129
+ __privateMethod(this, _RangeSlider_instances, registerDragHandlers_fn).call(this);
139
130
  });
140
131
  __privateAdd(this, _onThumbKeydown, (e) => {
141
- const thumb = e.target === this._startThumbEl ? "start" : "end";
132
+ const thumb = __privateMethod(this, _RangeSlider_instances, getThumbIdFromEvent_fn).call(this, e);
133
+ this._visiblyFocusedThumb = thumb;
142
134
  if (e.key === keyHome) {
143
135
  e.preventDefault();
144
- __privateMethod(this, _updateValues, updateValues_fn).call(this, { [thumb]: `${__privateGet(this, _thumbConstraints, thumbConstraints_get)[thumb].min}` });
136
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, { [thumb]: `${__privateGet(this, _RangeSlider_instances, thumbConstraints_get)[thumb].min}` });
145
137
  } else if (e.key === keyEnd) {
146
138
  e.preventDefault();
147
- __privateMethod(this, _updateValues, updateValues_fn).call(this, { [thumb]: `${__privateGet(this, _thumbConstraints, thumbConstraints_get)[thumb].max}` });
139
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, { [thumb]: `${__privateGet(this, _RangeSlider_instances, thumbConstraints_get)[thumb].max}` });
148
140
  } else if (!e.shiftKey) {
149
141
  switch (e.key) {
150
142
  case keyArrowRight:
151
143
  case keyArrowDown:
152
144
  e.preventDefault();
153
- __privateMethod(this, _applyStep, applyStep_fn).call(this, thumb, Direction.Increment);
145
+ __privateMethod(this, _RangeSlider_instances, applyStep_fn).call(this, thumb, Direction.Increment);
154
146
  break;
155
147
  case keyArrowLeft:
156
148
  case keyArrowUp:
157
149
  e.preventDefault();
158
- __privateMethod(this, _applyStep, applyStep_fn).call(this, thumb, Direction.Decrement);
150
+ __privateMethod(this, _RangeSlider_instances, applyStep_fn).call(this, thumb, Direction.Decrement);
159
151
  break;
160
152
  }
161
153
  }
162
154
  });
163
155
  __privateAdd(this, _onDragMove, (e) => {
164
- if (this.disabled || e.defaultPrevented || !__privateGet(this, _draggingThumb)) {
156
+ if (this.disabled || e.defaultPrevented || !this._draggingThumb) {
165
157
  return;
166
158
  }
167
159
  const sourceEvent = "TouchEvent" in window && e instanceof TouchEvent ? e.touches[0] : e;
168
- const value = __privateMethod(this, _calculateValueFromMouseEvent, calculateValueFromMouseEvent_fn).call(this, sourceEvent);
169
- __privateMethod(this, _updateValues, updateValues_fn).call(this, {
170
- [__privateGet(this, _draggingThumb)]: `${__privateMethod(this, _roundToNearestStep, roundToNearestStep_fn).call(this, __privateGet(this, _draggingThumb), value)}`
160
+ const value = __privateMethod(this, _RangeSlider_instances, calculateValueFromMouseEvent_fn).call(this, sourceEvent);
161
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, {
162
+ [this._draggingThumb]: `${__privateMethod(this, _RangeSlider_instances, roundToNearestStep_fn).call(this, this._draggingThumb, value)}`
171
163
  });
172
164
  });
173
165
  __privateAdd(this, _onDragEnd, () => {
174
- __privateSet(this, _draggingThumb, false);
175
- __privateMethod(this, _unregisterDragListeners, unregisterDragListeners_fn).call(this);
166
+ this._draggingThumb = false;
167
+ __privateMethod(this, _RangeSlider_instances, unregisterDragListeners_fn).call(this);
176
168
  });
177
169
  }
178
170
  /**
@@ -182,10 +174,10 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
182
174
  this.currentStart = this.start;
183
175
  if (!__privateGet(this, _isInternalValueUpdate)) {
184
176
  this.dirtyValue = true;
185
- __privateMethod(this, _updateFormValue, updateFormValue_fn).call(this);
177
+ __privateMethod(this, _RangeSlider_instances, updateFormValue_fn).call(this);
186
178
  }
187
179
  if (this.$fastController.isConnected) {
188
- __privateMethod(this, _updateThumbPositions, updateThumbPositions_fn).call(this);
180
+ __privateMethod(this, _RangeSlider_instances, updateThumbPositions_fn).call(this);
189
181
  }
190
182
  }
191
183
  /**
@@ -221,10 +213,10 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
221
213
  this.currentEnd = this.end;
222
214
  if (!__privateGet(this, _isInternalValueUpdate)) {
223
215
  this.dirtyValue = true;
224
- __privateMethod(this, _updateFormValue, updateFormValue_fn).call(this);
216
+ __privateMethod(this, _RangeSlider_instances, updateFormValue_fn).call(this);
225
217
  }
226
218
  if (this.$fastController.isConnected) {
227
- __privateMethod(this, _updateThumbPositions, updateThumbPositions_fn).call(this);
219
+ __privateMethod(this, _RangeSlider_instances, updateThumbPositions_fn).call(this);
228
220
  }
229
221
  }
230
222
  /**
@@ -258,7 +250,7 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
258
250
  */
259
251
  orientationChanged() {
260
252
  if (this.$fastController.isConnected) {
261
- __privateMethod(this, _updateThumbPositions, updateThumbPositions_fn).call(this);
253
+ __privateMethod(this, _RangeSlider_instances, updateThumbPositions_fn).call(this);
262
254
  }
263
255
  }
264
256
  // --- Form handling ---
@@ -267,51 +259,57 @@ let RangeSlider = class extends FormAssociatedRangeSlider {
267
259
  */
268
260
  nameChanged(previous, next) {
269
261
  super.nameChanged(previous, next);
270
- __privateMethod(this, _updateFormValue, updateFormValue_fn).call(this);
262
+ __privateMethod(this, _RangeSlider_instances, updateFormValue_fn).call(this);
271
263
  }
272
264
  formResetCallback() {
273
- __privateMethod(this, _updateValues, updateValues_fn).call(this, {
265
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, {
274
266
  start: this.initialStart ?? this.min.toString(),
275
267
  end: this.initialEnd ?? this.max.toString()
276
268
  });
277
269
  super.formResetCallback();
278
270
  }
271
+ /**
272
+ * @internal
273
+ */
274
+ _isThumbPopupOpen(thumb) {
275
+ return this._visiblyFocusedThumb === thumb || this._hoveredThumb === thumb || this._draggingThumb === thumb;
276
+ }
279
277
  // --- Lifecycle ---
280
278
  connectedCallback() {
281
279
  super.connectedCallback();
282
- __privateMethod(this, _updateValues, updateValues_fn).call(this, {
280
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, {
283
281
  start: this.start || this.initialStart || this.min.toString(),
284
282
  end: this.end || this.initialEnd || this.max.toString()
285
283
  }, false);
286
- __privateMethod(this, _registerThumbListeners, registerThumbListeners_fn).call(this);
287
- __privateMethod(this, _updateThumbPositions, updateThumbPositions_fn).call(this);
284
+ __privateMethod(this, _RangeSlider_instances, registerThumbListeners_fn).call(this);
285
+ __privateMethod(this, _RangeSlider_instances, updateThumbPositions_fn).call(this);
288
286
  }
289
287
  disconnectedCallback() {
290
288
  super.disconnectedCallback();
291
- __privateMethod(this, _unregisterThumbListeners, unregisterThumbListeners_fn).call(this);
292
- __privateMethod(this, _unregisterDragListeners, unregisterDragListeners_fn).call(this);
289
+ __privateMethod(this, _RangeSlider_instances, unregisterThumbListeners_fn).call(this);
290
+ __privateMethod(this, _RangeSlider_instances, unregisterDragListeners_fn).call(this);
293
291
  }
294
292
  /**
295
293
  * @internal
296
294
  */
297
295
  _onMouseDown(e) {
298
- if (this.disabled || __privateGet(this, _draggingThumb)) {
296
+ if (this.disabled || this._draggingThumb) {
299
297
  return;
300
298
  }
301
- const value = __privateMethod(this, _calculateValueFromMouseEvent, calculateValueFromMouseEvent_fn).call(this, e);
299
+ const value = __privateMethod(this, _RangeSlider_instances, calculateValueFromMouseEvent_fn).call(this, e);
302
300
  const startDistance = Math.abs(value - Number(this.start));
303
301
  const endDistance = Math.abs(value - Number(this.end));
304
302
  const thumb = startDistance < endDistance || startDistance === endDistance && value < Number(this.start) ? "start" : "end";
305
- __privateMethod(this, _updateValues, updateValues_fn).call(this, {
306
- [thumb]: `${__privateMethod(this, _roundToNearestStep, roundToNearestStep_fn).call(this, thumb, value)}`
303
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, {
304
+ [thumb]: `${__privateMethod(this, _RangeSlider_instances, roundToNearestStep_fn).call(this, thumb, value)}`
307
305
  });
308
- __privateSet(this, _draggingThumb, thumb);
309
- __privateGet(this, _thumbs, thumbs_get)[thumb].focus();
310
- __privateMethod(this, _registerDragHandlers, registerDragHandlers_fn).call(this);
306
+ this._draggingThumb = thumb;
307
+ __privateMethod(this, _RangeSlider_instances, focusThumbNonVisibly_fn).call(this, __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb]);
308
+ __privateMethod(this, _RangeSlider_instances, registerDragHandlers_fn).call(this);
311
309
  }
312
310
  };
313
311
  _isInternalValueUpdate = new WeakMap();
314
- _updateValues = new WeakSet();
312
+ _RangeSlider_instances = new WeakSet();
315
313
  updateValues_fn = function({ start, end }, emitEvents = true) {
316
314
  if (start === this.start) {
317
315
  start = void 0;
@@ -341,15 +339,13 @@ updateValues_fn = function({ start, end }, emitEvents = true) {
341
339
  this.$emit("change");
342
340
  this.dirtyValue = true;
343
341
  }
344
- __privateMethod(this, _updateFormValue, updateFormValue_fn).call(this);
342
+ __privateMethod(this, _RangeSlider_instances, updateFormValue_fn).call(this);
345
343
  };
346
- _applyStep = new WeakSet();
347
344
  applyStep_fn = function(thumb, direction) {
348
- __privateMethod(this, _updateValues, updateValues_fn).call(this, {
349
- [thumb]: __privateMethod(this, _roundToNearestStep, roundToNearestStep_fn).call(this, thumb, Number(this[thumb]) + direction * this.step).toString()
345
+ __privateMethod(this, _RangeSlider_instances, updateValues_fn).call(this, {
346
+ [thumb]: __privateMethod(this, _RangeSlider_instances, roundToNearestStep_fn).call(this, thumb, Number(this[thumb]) + direction * this.step).toString()
350
347
  });
351
348
  };
352
- _updateFormValue = new WeakSet();
353
349
  updateFormValue_fn = function() {
354
350
  if (!this.name) {
355
351
  this.setFormValue(null);
@@ -360,36 +356,36 @@ updateFormValue_fn = function() {
360
356
  this.setFormValue(formData);
361
357
  }
362
358
  };
363
- _thumbs = new WeakSet();
364
359
  thumbs_get = function() {
365
360
  return {
366
361
  start: this._startThumbEl,
367
362
  end: this._endThumbEl
368
363
  };
369
364
  };
370
- _thumbConstraints = new WeakSet();
371
365
  thumbConstraints_get = function() {
372
366
  return {
373
367
  start: { min: this.min, max: this.endAsNumber },
374
368
  end: { min: this.startAsNumber, max: this.max }
375
369
  };
376
370
  };
377
- _draggingThumb = new WeakMap();
378
- _updateThumbPositions = new WeakSet();
371
+ getThumbId_fn = function(thumb) {
372
+ return thumb === this._startThumbEl ? "start" : "end";
373
+ };
374
+ getThumbIdFromEvent_fn = function(e) {
375
+ return __privateMethod(this, _RangeSlider_instances, getThumbId_fn).call(this, e.target);
376
+ };
379
377
  updateThumbPositions_fn = function() {
380
- const startOffsetPct = __privateMethod(this, _thumbTrackEndOffset, thumbTrackEndOffset_fn).call(this, this.startAsNumber);
381
- const endOffsetPct = __privateMethod(this, _thumbTrackEndOffset, thumbTrackEndOffset_fn).call(this, this.endAsNumber);
378
+ const startOffsetPct = __privateMethod(this, _RangeSlider_instances, thumbTrackEndOffset_fn).call(this, this.startAsNumber);
379
+ const endOffsetPct = __privateMethod(this, _RangeSlider_instances, thumbTrackEndOffset_fn).call(this, this.endAsNumber);
382
380
  const [dirProp, dimProp] = this.orientation === Orientation.horizontal ? ["right", "width"] : ["bottom", "height"];
383
- const transition = `transition: ${__privateGet(this, _draggingThumb) ? "none" : "all 0.2s ease"};`;
381
+ const transition = `transition: ${this._draggingThumb ? "none" : "all 0.2s ease"};`;
384
382
  this._startThumbCss = `${dirProp}: ${startOffsetPct}%; ${transition}`;
385
383
  this._endThumbCss = `${dirProp}: ${endOffsetPct}%; ${transition}`;
386
384
  this._selectedRangeCss = `${dirProp}: ${endOffsetPct}%; ${dimProp}: ${startOffsetPct - endOffsetPct}%; ${transition}`;
387
385
  };
388
- _thumbTrackEndOffset = new WeakSet();
389
386
  thumbTrackEndOffset_fn = function(value) {
390
387
  return (1 - inverseLerp(this.min, this.max, value)) * 100;
391
388
  };
392
- _calculateValueFromMouseEvent = new WeakSet();
393
389
  calculateValueFromMouseEvent_fn = function(e) {
394
390
  const trackClientRect = this._trackEl.getBoundingClientRect();
395
391
  const [minPos, maxPos, valuePos] = this.orientation === Orientation.horizontal ? [
@@ -403,47 +399,66 @@ calculateValueFromMouseEvent_fn = function(e) {
403
399
  ];
404
400
  return lerp(this.min, this.max, inverseLerp(minPos, maxPos, valuePos));
405
401
  };
406
- _roundToNearestStep = new WeakSet();
407
402
  roundToNearestStep_fn = function(thumb, value) {
408
403
  return limit(
409
- __privateGet(this, _thumbConstraints, thumbConstraints_get)[thumb].min,
410
- __privateGet(this, _thumbConstraints, thumbConstraints_get)[thumb].max,
404
+ __privateGet(this, _RangeSlider_instances, thumbConstraints_get)[thumb].min,
405
+ __privateGet(this, _RangeSlider_instances, thumbConstraints_get)[thumb].max,
411
406
  roundToStepValue(value - this.min, this.step) + this.min
412
407
  );
413
408
  };
414
- _registerThumbListeners = new WeakSet();
409
+ _isNonVisibleFocus = new WeakMap();
410
+ focusThumbNonVisibly_fn = function(thumb) {
411
+ __privateSet(this, _isNonVisibleFocus, true);
412
+ thumb.focus();
413
+ __privateSet(this, _isNonVisibleFocus, false);
414
+ };
415
+ // --- Event handling ---
415
416
  registerThumbListeners_fn = function() {
416
417
  for (const thumb of ["start", "end"]) {
417
- __privateGet(this, _thumbs, thumbs_get)[thumb].addEventListener("keydown", __privateGet(this, _onThumbKeydown));
418
- __privateGet(this, _thumbs, thumbs_get)[thumb].addEventListener(
418
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener("keydown", __privateGet(this, _onThumbKeydown));
419
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener(
419
420
  "mousedown",
420
421
  __privateGet(this, _onThumbMousedown),
421
422
  { passive: true }
422
423
  );
423
- __privateGet(this, _thumbs, thumbs_get)[thumb].addEventListener(
424
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener(
424
425
  "touchstart",
425
426
  __privateGet(this, _onThumbMousedown),
426
427
  { passive: true }
427
428
  );
429
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener("mouseover", __privateGet(this, _onMouseOver), {
430
+ passive: true
431
+ });
432
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener("mouseout", __privateGet(this, _onMouseOut), {
433
+ passive: true
434
+ });
435
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener("focus", __privateGet(this, _onThumbFocus));
436
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].addEventListener("blur", __privateGet(this, _onThumbBlur));
428
437
  }
429
438
  };
430
- _unregisterThumbListeners = new WeakSet();
431
439
  unregisterThumbListeners_fn = function() {
432
440
  for (const thumb of ["start", "end"]) {
433
- __privateGet(this, _thumbs, thumbs_get)[thumb].removeEventListener("keydown", __privateGet(this, _onThumbKeydown));
434
- __privateGet(this, _thumbs, thumbs_get)[thumb].removeEventListener(
441
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener("keydown", __privateGet(this, _onThumbKeydown));
442
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener(
435
443
  "mousedown",
436
444
  __privateGet(this, _onThumbMousedown)
437
445
  );
438
- __privateGet(this, _thumbs, thumbs_get)[thumb].removeEventListener(
446
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener(
439
447
  "touchstart",
440
448
  __privateGet(this, _onThumbMousedown)
441
449
  );
450
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener("mouseover", __privateGet(this, _onMouseOver));
451
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener("mouseout", __privateGet(this, _onMouseOut));
452
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener("focus", __privateGet(this, _onThumbFocus));
453
+ __privateGet(this, _RangeSlider_instances, thumbs_get)[thumb].removeEventListener("blur", __privateGet(this, _onThumbBlur));
442
454
  }
443
455
  };
456
+ _onThumbFocus = new WeakMap();
457
+ _onThumbBlur = new WeakMap();
458
+ _onMouseOver = new WeakMap();
459
+ _onMouseOut = new WeakMap();
444
460
  _onThumbMousedown = new WeakMap();
445
461
  _onThumbKeydown = new WeakMap();
446
- _registerDragHandlers = new WeakSet();
447
462
  registerDragHandlers_fn = function() {
448
463
  window.addEventListener("mousemove", __privateGet(this, _onDragMove), { passive: true });
449
464
  window.addEventListener("touchmove", __privateGet(this, _onDragMove), { passive: true });
@@ -451,7 +466,6 @@ registerDragHandlers_fn = function() {
451
466
  window.addEventListener("touchend", __privateGet(this, _onDragEnd));
452
467
  window.document.addEventListener("mouseleave", __privateGet(this, _onDragEnd));
453
468
  };
454
- _unregisterDragListeners = new WeakSet();
455
469
  unregisterDragListeners_fn = function() {
456
470
  window.removeEventListener("mouseup", __privateGet(this, _onDragEnd));
457
471
  window.document.removeEventListener("mouseleave", __privateGet(this, _onDragEnd));
@@ -503,9 +517,21 @@ __decorateClass([
503
517
  __decorateClass([
504
518
  attr
505
519
  ], RangeSlider.prototype, "connotation", 2);
520
+ __decorateClass([
521
+ attr({ mode: "boolean" })
522
+ ], RangeSlider.prototype, "pin", 2);
506
523
  __decorateClass([
507
524
  observable
508
525
  ], RangeSlider.prototype, "valueTextFormatter", 2);
526
+ __decorateClass([
527
+ observable
528
+ ], RangeSlider.prototype, "_draggingThumb", 2);
529
+ __decorateClass([
530
+ observable
531
+ ], RangeSlider.prototype, "_visiblyFocusedThumb", 2);
532
+ __decorateClass([
533
+ observable
534
+ ], RangeSlider.prototype, "_hoveredThumb", 2);
509
535
  __decorateClass([
510
536
  observable
511
537
  ], RangeSlider.prototype, "_startThumbCss", 2);
@@ -525,7 +551,12 @@ const getClasses = ({ disabled, connotation }) => classNames(
525
551
  ["disabled", Boolean(disabled)],
526
552
  [`connotation-${connotation}`, Boolean(connotation)]
527
553
  );
528
- const RangeSliderTemplate = () => {
554
+ const getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => classNames("thumb-container", [
555
+ "focus-visible",
556
+ _visiblyFocusedThumb === thumb
557
+ ]);
558
+ const RangeSliderTemplate = (context) => {
559
+ const popupTag = context.tagFor(Popup);
529
560
  return html` <template
530
561
  @mousedown="${(x, c) => x._onMouseDown(c.event)}"
531
562
  >
@@ -543,7 +574,7 @@ const RangeSliderTemplate = () => {
543
574
  </div>
544
575
  <div
545
576
  ${ref("_startThumbEl")}
546
- class="thumb-container"
577
+ class="${getThumbClassesFor("start")}"
547
578
  style="${(x) => x._startThumbCss}"
548
579
  role="slider"
549
580
  tabindex="${(x) => x.disabled ? null : 0}"
@@ -555,9 +586,25 @@ const RangeSliderTemplate = () => {
555
586
  aria-disabled="${(x) => x.disabled}"
556
587
  aria-orientation="${(x) => x.orientation}"
557
588
  ></div>
589
+ ${when(
590
+ (x) => x.pin,
591
+ html`<${popupTag}
592
+ class="popup"
593
+ arrow
594
+ alternate
595
+ :anchor="${(x) => x._startThumbEl}"
596
+ :open=${(x) => x._isThumbPopupOpen("start")}
597
+ :placementStrategy=${(x) => x.orientation === Orientation.horizontal ? PlacementStrategy.AutoPlacementHorizontal : PlacementStrategy.AutoPlacementVertical}
598
+ animation-frame
599
+ exportparts="vvd-theme-alternate"
600
+ aria-hidden="true"
601
+ >
602
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.start)}</div>
603
+ </${popupTag}>`
604
+ )}
558
605
  <div
559
606
  ${ref("_endThumbEl")}
560
- class="thumb-container"
607
+ class="${getThumbClassesFor("end")}"
561
608
  style="${(x) => x._endThumbCss}"
562
609
  role="slider"
563
610
  tabindex="${(x) => x.disabled ? null : 0}"
@@ -569,6 +616,22 @@ const RangeSliderTemplate = () => {
569
616
  aria-disabled="${(x) => x.disabled}"
570
617
  aria-orientation="${(x) => x.orientation}"
571
618
  ></div>
619
+ ${when(
620
+ (x) => x.pin,
621
+ html`<${popupTag}
622
+ class="popup"
623
+ arrow
624
+ alternate
625
+ :anchor="${(x) => x._endThumbEl}"
626
+ :open=${(x) => x._isThumbPopupOpen("end")}
627
+ :placementStrategy=${(x) => x.orientation === Orientation.horizontal ? PlacementStrategy.AutoPlacementHorizontal : PlacementStrategy.AutoPlacementVertical}
628
+ animation-frame
629
+ exportparts="vvd-theme-alternate"
630
+ aria-hidden="true"
631
+ >
632
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.end)}</div>
633
+ </${popupTag}>`
634
+ )}
572
635
  </div>
573
636
  </div>
574
637
  </template>`;
@@ -582,7 +645,10 @@ const rangeSliderDefinition = RangeSlider.compose({
582
645
  delegatesFocus: true
583
646
  }
584
647
  });
585
- const rangeSliderRegistries = [rangeSliderDefinition()];
648
+ const rangeSliderRegistries = [
649
+ ...popupRegistries,
650
+ rangeSliderDefinition()
651
+ ];
586
652
  const registerRangeSlider = registerFactory(rangeSliderRegistries);
587
653
 
588
654
  export { rangeSliderRegistries as a, registerRangeSlider as b, rangeSliderDefinition as r };
@@ -2,7 +2,7 @@
2
2
 
3
3
  const index = require('./index.cjs');
4
4
  const definition = require('./definition63.cjs');
5
- const definition$2 = require('./definition27.cjs');
5
+ const definition$3 = require('./definition27.cjs');
6
6
  const definition$1 = require('./definition36.cjs');
7
7
  const affix = require('./affix.cjs');
8
8
  const index$1 = require('./index2.cjs');
@@ -14,6 +14,7 @@ const formAssociated = require('./form-associated.cjs');
14
14
  const select_options = require('./select.options.cjs');
15
15
  const strings = require('./strings.cjs');
16
16
  const keyCodes = require('./key-codes.cjs');
17
+ const definition$2 = require('./definition11.cjs');
17
18
  const ref = require('./ref.cjs');
18
19
  const when = require('./when.cjs');
19
20
  const slotted = require('./slotted.cjs');
@@ -516,7 +517,7 @@ index.__decorate([
516
517
  applyMixins.applyMixins(DelegatesARIASelect, listbox.DelegatesARIAListbox);
517
518
  applyMixins.applyMixins(Select$1, startEnd.StartEnd, DelegatesARIASelect);
518
519
 
519
- const styles = ":host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{display:flex;align-items:center;justify-content:space-between;border-radius:var(--_select-control-border-radius);background-color:var(--_appearance-color-fill);block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));border-radius:8px}.chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron{transform:rotate(180deg)}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 20px;font-size:20px;line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
520
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{display:flex;align-items:center;justify-content:space-between;border-radius:var(--_select-control-border-radius);background-color:var(--_appearance-color-fill);block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));border-radius:8px}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 20px;font-size:20px;line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
520
521
 
521
522
  var __defProp = Object.defineProperty;
522
523
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -525,8 +526,7 @@ var __decorateClass = (decorators, target, key, kind) => {
525
526
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
526
527
  if (decorator = decorators[i])
527
528
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
528
- if (kind && result)
529
- __defProp(target, key, result);
529
+ if (kind && result) __defProp(target, key, result);
530
530
  return result;
531
531
  };
532
532
  let Select = class extends Select$1 {
@@ -642,6 +642,7 @@ function renderPlaceholder(context) {
642
642
  }
643
643
  function selectValue(context) {
644
644
  const affixIconTemplate = affix.affixIconTemplateFactory(context);
645
+ const chevronTemplate = definition$2.chevronTemplateFactory(context);
645
646
  return index.html` <div
646
647
  class="control ${getStateClasses}"
647
648
  ${ref.ref("_anchor")}
@@ -653,7 +654,7 @@ function selectValue(context) {
653
654
  <span class="text">${(x) => x.displayValue}</span>
654
655
  <slot name="meta" ${slotted.slotted("metaSlottedContent")}></slot>
655
656
  </div>
656
- <span class="chevron">${() => affixIconTemplate("chevron-down-line")}</span>
657
+ ${chevronTemplate}
657
658
  </div>`;
658
659
  }
659
660
  function setFixedDropdownVarWidth(x) {
@@ -739,7 +740,7 @@ const selectDefinition = Select.compose({
739
740
  const selectRegistries = [
740
741
  selectDefinition(),
741
742
  ...definition.popupRegistries,
742
- ...definition$2.iconRegistries,
743
+ ...definition$3.iconRegistries,
743
744
  ...definition$1.listboxOptionRegistries
744
745
  ];
745
746
  const registerSelect = index.registerFactory(selectRegistries);