@nvidia-elements/core 2.8.1 → 2.9.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 (177) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/alert/alert-group2.js +1 -1
  4. package/dist/alert/alert2.js +1 -1
  5. package/dist/avatar/avatar-group2.js +1 -1
  6. package/dist/avatar/avatar2.js +1 -1
  7. package/dist/badge/badge2.js +1 -1
  8. package/dist/breadcrumb/breadcrumb2.js +1 -1
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundles/index.d.ts +205 -0
  11. package/dist/bundles/index.js +6 -6
  12. package/dist/button/button2.js +1 -1
  13. package/dist/button-group/button-group2.js +1 -1
  14. package/dist/card/card2.js +4 -4
  15. package/dist/chat-message/chat-message2.js +1 -1
  16. package/dist/checkbox/checkbox-group2.js +1 -1
  17. package/dist/checkbox/checkbox2.js +1 -1
  18. package/dist/color/color2.js +1 -1
  19. package/dist/combobox/combobox2.js +1 -1
  20. package/dist/copy-button/copy-button2.js +1 -1
  21. package/dist/custom-elements-jsx.d.ts +109 -0
  22. package/dist/custom-elements-vue.d.ts +107 -0
  23. package/dist/custom-elements.json +3321 -66
  24. package/dist/data.html.json +94 -0
  25. package/dist/data.snippets.json +45 -45
  26. package/dist/date/date2.js +1 -1
  27. package/dist/datetime/datetime2.js +1 -1
  28. package/dist/dialog/dialog-footer2.js +1 -1
  29. package/dist/dialog/dialog-header2.js +1 -1
  30. package/dist/dialog/dialog2.js +1 -1
  31. package/dist/divider/divider2.js +1 -1
  32. package/dist/dot/dot2.js +1 -1
  33. package/dist/drawer/drawer-content2.js +1 -1
  34. package/dist/drawer/drawer-footer2.js +1 -1
  35. package/dist/drawer/drawer-header2.js +1 -1
  36. package/dist/drawer/drawer2.js +1 -1
  37. package/dist/dropdown/dropdown-footer2.js +1 -1
  38. package/dist/dropdown/dropdown-header2.js +1 -1
  39. package/dist/dropdown/dropdown2.js +1 -1
  40. package/dist/dropdown-group/dropdown-group.js +1 -1
  41. package/dist/dropzone/dropzone2.js +1 -1
  42. package/dist/file/file2.js +1 -1
  43. package/dist/format-bytes/format-bytes2.js +1 -1
  44. package/dist/format-datetime/format-datetime2.js +1 -1
  45. package/dist/format-number/format-number2.js +1 -1
  46. package/dist/format-relative-time/format-relative-time2.js +1 -1
  47. package/dist/format-truncate/format-truncate2.js +1 -1
  48. package/dist/forms/control/control2.js +1 -1
  49. package/dist/forms/control-group/control-group2.js +1 -1
  50. package/dist/forms/control-message/control-message2.js +1 -1
  51. package/dist/gauge/gauge2.js +1 -1
  52. package/dist/grid/cell/cell2.js +1 -1
  53. package/dist/grid/column/column2.js +1 -1
  54. package/dist/grid/footer/footer2.js +1 -1
  55. package/dist/grid/grid2.js +1 -1
  56. package/dist/grid/header/header2.js +1 -1
  57. package/dist/grid/placeholder/placeholder2.js +1 -1
  58. package/dist/grid/row/row2.js +1 -1
  59. package/dist/icon/icon2.js +2 -2
  60. package/dist/icon-button/icon-button2.js +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/input/input-group2.js +1 -1
  63. package/dist/input/input2.js +1 -1
  64. package/dist/internal/controllers/gesture.controller.d.ts +122 -42
  65. package/dist/internal/controllers/gesture.controller.examples.js.map +1 -1
  66. package/dist/internal/controllers/gesture.controller.examples.json +2 -2
  67. package/dist/internal/controllers/gesture.controller.js +300 -159
  68. package/dist/internal/controllers/gesture.controller.js.map +1 -1
  69. package/dist/internal/controllers/key-state.controller.d.ts +18 -0
  70. package/dist/internal/controllers/key-state.controller.js +84 -0
  71. package/dist/internal/controllers/key-state.controller.js.map +1 -0
  72. package/dist/internal/controllers/keynav-spatial.controller.d.ts +4 -1
  73. package/dist/internal/controllers/keynav-spatial.controller.js +7 -6
  74. package/dist/internal/controllers/keynav-spatial.controller.js.map +1 -1
  75. package/dist/internal/index.d.ts +2 -0
  76. package/dist/internal/index.js +29 -27
  77. package/dist/internal/services/global.service.js +1 -1
  78. package/dist/internal/utils/dom.d.ts +1 -0
  79. package/dist/internal/utils/dom.js +42 -38
  80. package/dist/internal/utils/dom.js.map +1 -1
  81. package/dist/internal/utils/focus.d.ts +2 -0
  82. package/dist/internal/utils/focus.js +14 -7
  83. package/dist/internal/utils/focus.js.map +1 -1
  84. package/dist/internal/utils/numeric.d.ts +3 -0
  85. package/dist/internal/utils/numeric.js +14 -0
  86. package/dist/internal/utils/numeric.js.map +1 -0
  87. package/dist/logo/logo2.js +1 -1
  88. package/dist/menu/menu-item2.js +1 -1
  89. package/dist/menu/menu2.js +1 -1
  90. package/dist/month/month2.js +1 -1
  91. package/dist/notification/notification-group2.js +1 -1
  92. package/dist/notification/notification2.js +1 -1
  93. package/dist/page/page-panel/page-panel-content2.js +1 -1
  94. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  95. package/dist/page/page-panel/page-panel-header2.js +1 -1
  96. package/dist/page/page-panel/page-panel2.js +1 -1
  97. package/dist/page/page2.js +1 -1
  98. package/dist/page-header/page-header2.js +1 -1
  99. package/dist/page-loader/page-loader2.js +1 -1
  100. package/dist/pagination/pagination2.js +1 -1
  101. package/dist/panel/panel2.js +4 -4
  102. package/dist/password/password2.js +1 -1
  103. package/dist/preferences-input/preferences-input2.js +1 -1
  104. package/dist/progress-bar/progress-bar2.js +1 -1
  105. package/dist/progress-ring/progress-ring2.js +1 -1
  106. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  107. package/dist/pulse/pulse2.js +1 -1
  108. package/dist/radio/radio-group2.js +1 -1
  109. package/dist/radio/radio2.js +1 -1
  110. package/dist/range/range2.js +1 -1
  111. package/dist/resize-handle/resize-handle2.js +6 -10
  112. package/dist/resize-handle/resize-handle2.js.map +1 -1
  113. package/dist/search/search2.js +1 -1
  114. package/dist/select/select2.js +1 -1
  115. package/dist/skeleton/skeleton2.js +1 -1
  116. package/dist/sort-button/sort-button2.js +1 -1
  117. package/dist/sparkline/sparkline2.js +1 -1
  118. package/dist/star-rating/star-rating2.js +1 -1
  119. package/dist/steps/steps2.js +2 -2
  120. package/dist/switch/switch-group2.js +1 -1
  121. package/dist/switch/switch2.js +1 -1
  122. package/dist/tabs/tabs-group2.js +1 -1
  123. package/dist/tabs/tabs2.js +2 -2
  124. package/dist/tag/tag2.js +1 -1
  125. package/dist/textarea/textarea2.js +1 -1
  126. package/dist/time/time2.js +1 -1
  127. package/dist/toast/toast2.js +1 -1
  128. package/dist/toggletip/toggletip-footer2.js +1 -1
  129. package/dist/toggletip/toggletip-header2.js +1 -1
  130. package/dist/toggletip/toggletip2.js +1 -1
  131. package/dist/toolbar/toolbar2.js +1 -1
  132. package/dist/tooltip/tooltip2.js +1 -1
  133. package/dist/tree/tree-node2.js +1 -1
  134. package/dist/tree/tree2.js +1 -1
  135. package/dist/viewport/define.d.ts +7 -0
  136. package/dist/viewport/define.js +7 -0
  137. package/dist/viewport/define.js.map +1 -0
  138. package/dist/viewport/index.d.ts +3 -0
  139. package/dist/viewport/index.js +3 -0
  140. package/dist/viewport/viewport-animation.controller.d.ts +21 -0
  141. package/dist/viewport/viewport-animation.controller.js +93 -0
  142. package/dist/viewport/viewport-animation.controller.js.map +1 -0
  143. package/dist/viewport/viewport-autofit.controller.d.ts +18 -0
  144. package/dist/viewport/viewport-autofit.controller.js +105 -0
  145. package/dist/viewport/viewport-autofit.controller.js.map +1 -0
  146. package/dist/viewport/viewport-fitting.utils.d.ts +36 -0
  147. package/dist/viewport/viewport-fitting.utils.js +35 -0
  148. package/dist/viewport/viewport-fitting.utils.js.map +1 -0
  149. package/dist/viewport/viewport-gesture-navigation.controller.d.ts +29 -0
  150. package/dist/viewport/viewport-gesture-navigation.controller.js +311 -0
  151. package/dist/viewport/viewport-gesture-navigation.controller.js.map +1 -0
  152. package/dist/viewport/viewport-gridlines.d.ts +38 -0
  153. package/dist/viewport/viewport-gridlines.js +6 -0
  154. package/dist/viewport/viewport-gridlines.js.map +1 -0
  155. package/dist/viewport/viewport-gridlines.utils.d.ts +11 -0
  156. package/dist/viewport/viewport-gridlines.utils.js +54 -0
  157. package/dist/viewport/viewport-gridlines.utils.js.map +1 -0
  158. package/dist/viewport/viewport-gridlines2.js +154 -0
  159. package/dist/viewport/viewport-gridlines2.js.map +1 -0
  160. package/dist/viewport/viewport-navigation.controller.d.ts +27 -0
  161. package/dist/viewport/viewport-navigation.controller.js +142 -0
  162. package/dist/viewport/viewport-navigation.controller.js.map +1 -0
  163. package/dist/viewport/viewport-navigation.types.d.ts +9 -0
  164. package/dist/viewport/viewport-projection.utils.d.ts +7 -0
  165. package/dist/viewport/viewport-projection.utils.js +25 -0
  166. package/dist/viewport/viewport-projection.utils.js.map +1 -0
  167. package/dist/viewport/viewport.d.ts +92 -0
  168. package/dist/viewport/viewport.examples.js +6 -0
  169. package/dist/viewport/viewport.examples.js.map +1 -0
  170. package/dist/viewport/viewport.examples.json +60 -0
  171. package/dist/viewport/viewport.js +6 -0
  172. package/dist/viewport/viewport.js.map +1 -0
  173. package/dist/viewport/viewport.types.d.ts +66 -0
  174. package/dist/viewport/viewport2.js +375 -0
  175. package/dist/viewport/viewport2.js.map +1 -0
  176. package/dist/week/week2.js +1 -1
  177. package/package.json +13 -1
@@ -30,19 +30,26 @@ function t(e) {
30
30
  function n(e = globalThis.document) {
31
31
  return e.activeElement && e.activeElement.shadowRoot ? n(e.activeElement.shadowRoot) ?? e.activeElement : e.activeElement;
32
32
  }
33
- function r(t) {
34
- t && !e(t) ? (t.setAttribute("tabindex", "-1"), t.focus(), t.addEventListener("blur", () => t.removeAttribute("tabindex"), { once: !0 })) : t?.focus();
33
+ function r(e) {
34
+ let t = e.getRootNode();
35
+ return i(t) && t.activeElement === e;
35
36
  }
36
37
  function i(e) {
37
- setTimeout(() => r(e));
38
+ return "activeElement" in e;
38
39
  }
39
- function a(e, t) {
40
- e.forEach((e) => e.tabIndex = -1), t.tabIndex = 0;
40
+ function a(t) {
41
+ t && !e(t) ? (t.setAttribute("tabindex", "-1"), t.focus(), t.addEventListener("blur", () => t.removeAttribute("tabindex"), { once: !0 })) : t?.focus();
41
42
  }
42
43
  function o(e) {
43
- e.forEach((e) => e.tabIndex = -1), e[0] && (e[0].tabIndex = 0);
44
+ setTimeout(() => a(e));
44
45
  }
45
46
  function s(e, t) {
47
+ e.forEach((e) => e.tabIndex = -1), t.tabIndex = 0;
48
+ }
49
+ function c(e) {
50
+ e.forEach((e) => e.tabIndex = -1), e[0] && (e[0].tabIndex = 0);
51
+ }
52
+ function l(e, t) {
46
53
  let n = (e) => e.code === "Space" || e.code === "ArrowUp" || e.code === "ArrowDown";
47
54
  e.addEventListener("pointerdown", (e) => {
48
55
  e.preventDefault();
@@ -55,6 +62,6 @@ function s(e, t) {
55
62
  });
56
63
  }
57
64
  //#endregion
58
- export { r as focusElement, i as focusElementTimeout, n as getActiveElement, o as initializeKeyListItems, e as isFocusable, t as isSimpleFocusable, s as onListboxActivate, a as setActiveKeyListItem };
65
+ export { a as focusElement, o as focusElementTimeout, n as getActiveElement, c as initializeKeyListItems, e as isFocusable, r as isImmediateRootActiveElement, t as isSimpleFocusable, l as onListboxActivate, s as setActiveKeyListItem };
59
66
 
60
67
  //# sourceMappingURL=focus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus.js","names":[],"sources":["../../../src/internal/utils/focus.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function isFocusable(element: Element) {\n return (\n element.matches(\n [\n 'a[href]',\n 'area[href]',\n 'input',\n 'button',\n 'select',\n 'textarea',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable=true]',\n '[role=button]'\n ].join(',')\n ) &&\n element.matches(':not([disabled], [inert])') &&\n !element.closest(`[inert]`) &&\n !element.closest('[popover]')?.matches(':not(:popover-open)')\n );\n}\n\n/** returns interactive elements that does not require advanced keyboard interactions like arrow/navigation */\nexport function isSimpleFocusable(element: Element) {\n return element.matches(\n [\n 'a[href]',\n 'button:not([disabled])',\n 'input[type=checkbox]',\n 'input[type=radio]',\n 'object',\n 'embed',\n '*[tabindex]',\n '[role=button]:not([disabled])'\n ].join(',')\n );\n}\n\nexport function getActiveElement(root: Document | ShadowRoot = globalThis.document): Element | null {\n if (root.activeElement && root.activeElement.shadowRoot) {\n return getActiveElement(root.activeElement.shadowRoot) ?? root.activeElement;\n } else {\n return root.activeElement;\n }\n}\n\nexport function focusElement(element: HTMLElement) {\n if (element && !isFocusable(element)) {\n element.setAttribute('tabindex', '-1');\n element.focus();\n element.addEventListener('blur', () => element.removeAttribute('tabindex'), { once: true });\n } else {\n element?.focus();\n }\n}\n\nexport function focusElementTimeout(element: HTMLElement) {\n setTimeout(() => focusElement(element));\n}\n\nexport function setActiveKeyListItem(items: NodeListOf<HTMLElement> | HTMLElement[], item: HTMLElement) {\n items.forEach(i => (i.tabIndex = -1));\n item.tabIndex = 0;\n}\n\nexport function initializeKeyListItems(items: NodeListOf<HTMLElement> | HTMLElement[]) {\n items.forEach(i => (i.tabIndex = -1));\n items[0] && (items[0].tabIndex = 0);\n}\n\n/** determines if user interaction is a valid interaction for activating a listbox type */\nexport function onListboxActivate(\n element: HTMLElement & { disabled?: boolean },\n fn: (event: KeyboardEvent | PointerEvent) => void\n) {\n const validKey = (e: KeyboardEvent) => e.code === 'Space' || e.code === 'ArrowUp' || e.code === 'ArrowDown';\n\n element.addEventListener('pointerdown', (e: PointerEvent) => {\n e.preventDefault();\n });\n\n // Chrome's LightDismissFromClick runs auto-popover light dismiss from click;\n // opening on pointerup can close immediately in the same gesture.\n // https://issues.chromium.org/issues/408010435\n element.addEventListener('click', (e: PointerEvent) => {\n e.preventDefault();\n\n if (!element.disabled) {\n fn(e);\n }\n });\n\n element.addEventListener('keyup', (e: KeyboardEvent) => {\n if (validKey(e) && !element.disabled) {\n fn(e);\n }\n });\n\n element.addEventListener('keydown', (e: KeyboardEvent) => {\n if (validKey(e) && !element.disabled) {\n e.preventDefault();\n }\n });\n}\n"],"mappings":";AAGA,SAAgB,EAAY,GAAkB;CAC5C,OACE,EAAQ,QACN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG,CACZ,KACA,EAAQ,QAAQ,2BAA2B,KAC3C,CAAC,EAAQ,QAAQ,SAAS,KAC1B,CAAC,EAAQ,QAAQ,WAAW,CAAC,EAAE,QAAQ,qBAAqB;AAEhE;AAGA,SAAgB,EAAkB,GAAkB;CAClD,OAAO,EAAQ,QACb;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG,CACZ;AACF;AAEA,SAAgB,EAAiB,IAA8B,WAAW,UAA0B;CAIhG,OAHE,EAAK,iBAAiB,EAAK,cAAc,aACpC,EAAiB,EAAK,cAAc,UAAU,KAAK,EAAK,gBAExD,EAAK;AAEhB;AAEA,SAAgB,EAAa,GAAsB;CACjD,AAAI,KAAW,CAAC,EAAY,CAAO,KACjC,EAAQ,aAAa,YAAY,IAAI,GACrC,EAAQ,MAAM,GACd,EAAQ,iBAAiB,cAAc,EAAQ,gBAAgB,UAAU,GAAG,EAAE,MAAM,GAAK,CAAC,KAE1F,GAAS,MAAM;AAEnB;AAEA,SAAgB,EAAoB,GAAsB;CACxD,iBAAiB,EAAa,CAAO,CAAC;AACxC;AAEA,SAAgB,EAAqB,GAAgD,GAAmB;CAEtG,AADA,EAAM,SAAQ,MAAM,EAAE,WAAW,EAAG,GACpC,EAAK,WAAW;AAClB;AAEA,SAAgB,EAAuB,GAAgD;CAErF,AADA,EAAM,SAAQ,MAAM,EAAE,WAAW,EAAG,GACpC,EAAM,OAAO,EAAM,EAAE,CAAC,WAAW;AACnC;AAGA,SAAgB,EACd,GACA,GACA;CACA,IAAM,KAAY,MAAqB,EAAE,SAAS,WAAW,EAAE,SAAS,aAAa,EAAE,SAAS;CAuBhG,AArBA,EAAQ,iBAAiB,gBAAgB,MAAoB;EAC3D,EAAE,eAAe;CACnB,CAAC,GAKD,EAAQ,iBAAiB,UAAU,MAAoB;EAGrD,AAFA,EAAE,eAAe,GAEZ,EAAQ,YACX,EAAG,CAAC;CAER,CAAC,GAED,EAAQ,iBAAiB,UAAU,MAAqB;EACtD,AAAI,EAAS,CAAC,KAAK,CAAC,EAAQ,YAC1B,EAAG,CAAC;CAER,CAAC,GAED,EAAQ,iBAAiB,YAAY,MAAqB;EACxD,AAAI,EAAS,CAAC,KAAK,CAAC,EAAQ,YAC1B,EAAE,eAAe;CAErB,CAAC;AACH"}
1
+ {"version":3,"file":"focus.js","names":[],"sources":["../../../src/internal/utils/focus.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function isFocusable(element: Element) {\n return (\n element.matches(\n [\n 'a[href]',\n 'area[href]',\n 'input',\n 'button',\n 'select',\n 'textarea',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable=true]',\n '[role=button]'\n ].join(',')\n ) &&\n element.matches(':not([disabled], [inert])') &&\n !element.closest(`[inert]`) &&\n !element.closest('[popover]')?.matches(':not(:popover-open)')\n );\n}\n\n/** returns interactive elements that does not require advanced keyboard interactions like arrow/navigation */\nexport function isSimpleFocusable(element: Element) {\n return element.matches(\n [\n 'a[href]',\n 'button:not([disabled])',\n 'input[type=checkbox]',\n 'input[type=radio]',\n 'object',\n 'embed',\n '*[tabindex]',\n '[role=button]:not([disabled])'\n ].join(',')\n );\n}\n\nexport function getActiveElement(root: Document | ShadowRoot = globalThis.document): Element | null {\n if (root.activeElement && root.activeElement.shadowRoot) {\n return getActiveElement(root.activeElement.shadowRoot) ?? root.activeElement;\n } else {\n return root.activeElement;\n }\n}\n\n/** Returns whether an element itself owns focus in its immediate document or shadow root. */\nexport function isImmediateRootActiveElement(element: Element): boolean {\n const root = element.getRootNode();\n return hasActiveElement(root) && root.activeElement === element;\n}\n\nfunction hasActiveElement(root: Node): root is Node & { readonly activeElement: Element | null } {\n return 'activeElement' in root;\n}\n\nexport function focusElement(element: HTMLElement) {\n if (element && !isFocusable(element)) {\n element.setAttribute('tabindex', '-1');\n element.focus();\n element.addEventListener('blur', () => element.removeAttribute('tabindex'), { once: true });\n } else {\n element?.focus();\n }\n}\n\nexport function focusElementTimeout(element: HTMLElement) {\n setTimeout(() => focusElement(element));\n}\n\nexport function setActiveKeyListItem(items: NodeListOf<HTMLElement> | HTMLElement[], item: HTMLElement) {\n items.forEach(i => (i.tabIndex = -1));\n item.tabIndex = 0;\n}\n\nexport function initializeKeyListItems(items: NodeListOf<HTMLElement> | HTMLElement[]) {\n items.forEach(i => (i.tabIndex = -1));\n items[0] && (items[0].tabIndex = 0);\n}\n\n/** determines if user interaction is a valid interaction for activating a listbox type */\nexport function onListboxActivate(\n element: HTMLElement & { disabled?: boolean },\n fn: (event: KeyboardEvent | PointerEvent) => void\n) {\n const validKey = (e: KeyboardEvent) => e.code === 'Space' || e.code === 'ArrowUp' || e.code === 'ArrowDown';\n\n element.addEventListener('pointerdown', (e: PointerEvent) => {\n e.preventDefault();\n });\n\n // Chrome's LightDismissFromClick runs auto-popover light dismiss from click;\n // opening on pointerup can close immediately in the same gesture.\n // https://issues.chromium.org/issues/408010435\n element.addEventListener('click', (e: PointerEvent) => {\n e.preventDefault();\n\n if (!element.disabled) {\n fn(e);\n }\n });\n\n element.addEventListener('keyup', (e: KeyboardEvent) => {\n if (validKey(e) && !element.disabled) {\n fn(e);\n }\n });\n\n element.addEventListener('keydown', (e: KeyboardEvent) => {\n if (validKey(e) && !element.disabled) {\n e.preventDefault();\n }\n });\n}\n"],"mappings":";AAGA,SAAgB,EAAY,GAAkB;CAC5C,OACE,EAAQ,QACN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG,CACZ,KACA,EAAQ,QAAQ,2BAA2B,KAC3C,CAAC,EAAQ,QAAQ,SAAS,KAC1B,CAAC,EAAQ,QAAQ,WAAW,CAAC,EAAE,QAAQ,qBAAqB;AAEhE;AAGA,SAAgB,EAAkB,GAAkB;CAClD,OAAO,EAAQ,QACb;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG,CACZ;AACF;AAEA,SAAgB,EAAiB,IAA8B,WAAW,UAA0B;CAIhG,OAHE,EAAK,iBAAiB,EAAK,cAAc,aACpC,EAAiB,EAAK,cAAc,UAAU,KAAK,EAAK,gBAExD,EAAK;AAEhB;AAGA,SAAgB,EAA6B,GAA2B;CACtE,IAAM,IAAO,EAAQ,YAAY;CACjC,OAAO,EAAiB,CAAI,KAAK,EAAK,kBAAkB;AAC1D;AAEA,SAAS,EAAiB,GAAuE;CAC/F,OAAO,mBAAmB;AAC5B;AAEA,SAAgB,EAAa,GAAsB;CACjD,AAAI,KAAW,CAAC,EAAY,CAAO,KACjC,EAAQ,aAAa,YAAY,IAAI,GACrC,EAAQ,MAAM,GACd,EAAQ,iBAAiB,cAAc,EAAQ,gBAAgB,UAAU,GAAG,EAAE,MAAM,GAAK,CAAC,KAE1F,GAAS,MAAM;AAEnB;AAEA,SAAgB,EAAoB,GAAsB;CACxD,iBAAiB,EAAa,CAAO,CAAC;AACxC;AAEA,SAAgB,EAAqB,GAAgD,GAAmB;CAEtG,AADA,EAAM,SAAQ,MAAM,EAAE,WAAW,EAAG,GACpC,EAAK,WAAW;AAClB;AAEA,SAAgB,EAAuB,GAAgD;CAErF,AADA,EAAM,SAAQ,MAAM,EAAE,WAAW,EAAG,GACpC,EAAM,OAAO,EAAM,EAAE,CAAC,WAAW;AACnC;AAGA,SAAgB,EACd,GACA,GACA;CACA,IAAM,KAAY,MAAqB,EAAE,SAAS,WAAW,EAAE,SAAS,aAAa,EAAE,SAAS;CAuBhG,AArBA,EAAQ,iBAAiB,gBAAgB,MAAoB;EAC3D,EAAE,eAAe;CACnB,CAAC,GAKD,EAAQ,iBAAiB,UAAU,MAAoB;EAGrD,AAFA,EAAE,eAAe,GAEZ,EAAQ,YACX,EAAG,CAAC;CAER,CAAC,GAED,EAAQ,iBAAiB,UAAU,MAAqB;EACtD,AAAI,EAAS,CAAC,KAAK,CAAC,EAAQ,YAC1B,EAAG,CAAC;CAER,CAAC,GAED,EAAQ,iBAAiB,YAAY,MAAqB;EACxD,AAAI,EAAS,CAAC,KAAK,CAAC,EAAQ,YAC1B,EAAE,eAAe;CAErB,CAAC;AACH"}
@@ -0,0 +1,3 @@
1
+ export declare function finiteOr(value: number | undefined, fallback: number): number;
2
+ export declare function nonnegativeFiniteOr(value: number | undefined, fallback: number): number;
3
+ export declare function positiveFiniteOr(value: number | undefined, fallback: number): number;
@@ -0,0 +1,14 @@
1
+ //#region src/internal/utils/numeric.ts
2
+ function e(e, t) {
3
+ return e !== void 0 && Number.isFinite(e) ? e : t;
4
+ }
5
+ function t(e, t) {
6
+ return e !== void 0 && Number.isFinite(e) && e >= 0 ? e : t;
7
+ }
8
+ function n(e, t) {
9
+ return e !== void 0 && Number.isFinite(e) && e > 0 ? e : t;
10
+ }
11
+ //#endregion
12
+ export { e as finiteOr, t as nonnegativeFiniteOr, n as positiveFiniteOr };
13
+
14
+ //# sourceMappingURL=numeric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric.js","names":[],"sources":["../../../src/internal/utils/numeric.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function finiteOr(value: number | undefined, fallback: number): number {\n return value !== undefined && Number.isFinite(value) ? value : fallback;\n}\n\nexport function nonnegativeFiniteOr(value: number | undefined, fallback: number): number {\n return value !== undefined && Number.isFinite(value) && value >= 0 ? value : fallback;\n}\n\nexport function positiveFiniteOr(value: number | undefined, fallback: number): number {\n return value !== undefined && Number.isFinite(value) && value > 0 ? value : fallback;\n}\n"],"mappings":";AAGA,SAAgB,EAAS,GAA2B,GAA0B;CAC5E,OAAO,MAAU,KAAA,KAAa,OAAO,SAAS,CAAK,IAAI,IAAQ;AACjE;AAEA,SAAgB,EAAoB,GAA2B,GAA0B;CACvF,OAAO,MAAU,KAAA,KAAa,OAAO,SAAS,CAAK,KAAK,KAAS,IAAI,IAAQ;AAC/E;AAEA,SAAgB,EAAiB,GAA2B,GAA0B;CACpF,OAAO,MAAU,KAAA,KAAa,OAAO,SAAS,CAAK,KAAK,IAAQ,IAAI,IAAQ;AAC9E"}
@@ -12,7 +12,7 @@ var c = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-logo",
15
- version: "2.8.1"
15
+ version: "2.9.0"
16
16
  };
17
17
  }
18
18
  render() {
@@ -13,7 +13,7 @@ var c = class extends s(i) {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-menu-item",
16
- version: "2.8.1",
16
+ version: "2.9.0",
17
17
  parents: ["nve-menu"]
18
18
  };
19
19
  }
@@ -16,7 +16,7 @@ var d = class extends c {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-menu",
19
- version: "2.8.1",
19
+ version: "2.9.0",
20
20
  children: ["nve-menu-item", "nve-divider"]
21
21
  };
22
22
  }
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-month",
22
- version: "2.8.1"
22
+ version: "2.9.0"
23
23
  };
24
24
  }
25
25
  static {
@@ -20,7 +20,7 @@ var l = class extends o {
20
20
  static {
21
21
  this.metadata = {
22
22
  tag: "nve-notification-group",
23
- version: "2.8.1",
23
+ version: "2.9.0",
24
24
  children: ["nve-notification"]
25
25
  };
26
26
  }
@@ -34,7 +34,7 @@ var m = class extends d {
34
34
  static {
35
35
  this.metadata = {
36
36
  tag: "nve-notification",
37
- version: "2.8.1"
37
+ version: "2.9.0"
38
38
  };
39
39
  }
40
40
  static {
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-page-panel-content",
12
- version: "2.8.1"
12
+ version: "2.9.0"
13
13
  };
14
14
  }
15
15
  render() {
@@ -14,7 +14,7 @@ var o = class extends i {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-page-panel-footer",
17
- version: "2.8.1"
17
+ version: "2.9.0"
18
18
  };
19
19
  }
20
20
  render() {
@@ -14,7 +14,7 @@ var o = class extends i {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-page-panel-header",
17
- version: "2.8.1"
17
+ version: "2.9.0"
18
18
  };
19
19
  }
20
20
  render() {
@@ -18,7 +18,7 @@ var f = class extends l {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-page-panel",
21
- version: "2.8.1",
21
+ version: "2.9.0",
22
22
  parents: ["nve-page"]
23
23
  };
24
24
  }
@@ -16,7 +16,7 @@ var c = class extends a {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-page",
19
- version: "2.8.1"
19
+ version: "2.9.0"
20
20
  };
21
21
  }
22
22
  static {
@@ -12,7 +12,7 @@ var s = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-page-header",
15
- version: "2.8.1"
15
+ version: "2.9.0"
16
16
  };
17
17
  }
18
18
  render() {
@@ -18,7 +18,7 @@ var u = class extends s {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-page-loader",
21
- version: "2.8.1"
21
+ version: "2.9.0"
22
22
  };
23
23
  }
24
24
  static {
@@ -21,7 +21,7 @@ var g = class extends h(d) {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-pagination",
24
- version: "2.8.1",
24
+ version: "2.9.0",
25
25
  valueSchema: { type: "number" }
26
26
  };
27
27
  }
@@ -21,7 +21,7 @@ var g = class extends f {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-panel-header",
24
- version: "2.8.1"
24
+ version: "2.9.0"
25
25
  };
26
26
  }
27
27
  render() {
@@ -37,7 +37,7 @@ var g = class extends f {
37
37
  static {
38
38
  this.metadata = {
39
39
  tag: "nve-panel-content",
40
- version: "2.8.1"
40
+ version: "2.9.0"
41
41
  };
42
42
  }
43
43
  render() {
@@ -50,7 +50,7 @@ var g = class extends f {
50
50
  static {
51
51
  this.metadata = {
52
52
  tag: "nve-panel-footer",
53
- version: "2.8.1"
53
+ version: "2.9.0"
54
54
  };
55
55
  }
56
56
  render() {
@@ -69,7 +69,7 @@ var g = class extends f {
69
69
  static {
70
70
  this.metadata = {
71
71
  tag: "nve-panel",
72
- version: "2.8.1"
72
+ version: "2.9.0"
73
73
  };
74
74
  }
75
75
  static {
@@ -23,7 +23,7 @@ var u = class extends r {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-password",
26
- version: "2.8.1"
26
+ version: "2.9.0"
27
27
  };
28
28
  }
29
29
  static {
@@ -43,7 +43,7 @@ var x = class extends g(d) {
43
43
  static {
44
44
  this.metadata = {
45
45
  tag: "nve-preferences-input",
46
- version: "2.8.1",
46
+ version: "2.9.0",
47
47
  valueSchema: {
48
48
  type: "object",
49
49
  properties: {
@@ -16,7 +16,7 @@ var c = class extends i {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-progress-bar",
19
- version: "2.8.1"
19
+ version: "2.9.0"
20
20
  };
21
21
  }
22
22
  render() {
@@ -19,7 +19,7 @@ var d = class extends c {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-progress-ring",
22
- version: "2.8.1"
22
+ version: "2.9.0"
23
23
  };
24
24
  }
25
25
  static {
@@ -23,7 +23,7 @@ var b = class extends h {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-progressive-filter-chip",
26
- version: "2.8.1"
26
+ version: "2.9.0"
27
27
  };
28
28
  }
29
29
  static {
@@ -13,7 +13,7 @@ var c = class extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-pulse",
16
- version: "2.8.1"
16
+ version: "2.9.0"
17
17
  };
18
18
  }
19
19
  static {
@@ -12,7 +12,7 @@ var o = class extends i {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-radio-group",
15
- version: "2.8.1",
15
+ version: "2.9.0",
16
16
  children: [
17
17
  "label",
18
18
  "nve-control-message",
@@ -15,7 +15,7 @@ var o = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-radio",
18
- version: "2.8.1",
18
+ version: "2.9.0",
19
19
  children: [
20
20
  "label",
21
21
  "input",
@@ -17,7 +17,7 @@ var d = class extends i {
17
17
  static {
18
18
  this.metadata = {
19
19
  tag: "nve-range",
20
- version: "2.8.1"
20
+ version: "2.9.0"
21
21
  };
22
22
  }
23
23
  connectedCallback() {
@@ -18,7 +18,7 @@ var u = class extends c(a) {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-resize-handle",
21
- version: "2.8.1",
21
+ version: "2.9.0",
22
22
  valueSchema: { type: "number" }
23
23
  };
24
24
  }
@@ -31,21 +31,17 @@ var u = class extends c(a) {
31
31
  }
32
32
  constructor() {
33
33
  super(), this.orientation = "horizontal", this.min = 0, this.max = 100, this.step = 10, this.#t = new t(this), this.i18n = this.#t.i18n, this.#i = 0, this.#o = (e) => {
34
- e.detail.kind === "pointerdown" && e.detail.event.button === 0 && e.detail.event.isPrimary && this.#r === void 0 && this.#c(e.detail.event.pointerId), e.detail.event.pointerId === this.#r && (e.detail.kind === "pointerup" && this.#u(), e.detail.kind === "pointercancel" && this.#d());
34
+ let t = e.detail;
35
+ t.kind === "pointerdown" ? t.event.button === 0 && t.event.isPrimary && this.#r === void 0 && t.claim({ kind: "drag" }) && this.#c(t.event.pointerId) : t.kind === "pointerend" && t.event.pointerId === this.#r && (t.interrupted ? this.#d() : this.#u());
35
36
  }, this.#s = (e) => {
36
37
  e.detail.kind === "drag" && e.detail.event.pointerId === this.#r && this.#l(e.detail);
37
- }, this.value = this.value ?? 50, this.#i = this.valueAsNumber, this.#n = new e(this, { getCapabilities: () => ({
38
- drag: !0,
39
- pan: !1,
40
- pinch: !1,
41
- wheel: !1
42
- }) });
38
+ }, this.value = this.value ?? 50, this.#i = this.valueAsNumber, this.#n = new e(this, { touchAction: "none" });
43
39
  }
44
40
  connectedCallback() {
45
- super.connectedCallback(), this._internals.role = "none", this.addEventListener("nve-gesture", this.#s), this.addEventListener("nve-pointer-input", this.#o);
41
+ super.connectedCallback(), this._internals.role = "none", this.addEventListener("nve-gesture", this.#s), this.addEventListener("nve-gesture-input", this.#o);
46
42
  }
47
43
  disconnectedCallback() {
48
- this.removeEventListener("nve-gesture", this.#s), this.removeEventListener("nve-pointer-input", this.#o), this.#d(), super.disconnectedCallback();
44
+ this.removeEventListener("nve-gesture", this.#s), this.removeEventListener("nve-gesture-input", this.#o), this.#d(), super.disconnectedCallback();
49
45
  }
50
46
  firstUpdated(e) {
51
47
  super.firstUpdated(e), this.#n.target = this, this.addEventListener("dblclick", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"resize-handle2.js","names":[],"sources":["../../src/resize-handle/resize-handle.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property } from 'lit/decorators/property.js';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport {\n GestureController,\n I18nController,\n useStyles,\n type Gesture,\n type UnhandledPointerInput\n} from '@nvidia-elements/core/internal';\nimport styles from './resize-handle.css?inline';\n\n/**\n * @element nve-resize-handle\n * @description A resize-handle slider is a control that enables users to resize views or panels vertically or horizontally.\n * @documentation https://nvidia.github.io/elements/docs/elements/resize-handle/\n * @since 1.27.0\n * @entrypoint \\@nvidia-elements/core/resize-handle\n * @event toggle - Dispatched when the resize handle is double clicked.\n * @cssprop --background\n * @cssprop --line-width\n * @cssprop --target-size\n * @cssprop --cursor\n\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/slider/\n *\n */\nexport class ResizeHandle extends FormControlMixin<typeof LitElement, number>(LitElement) {\n /**\n * Determines the orientation direction of the resize handle.\n */\n @property({ type: String, reflect: true }) orientation?: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Determines the min resize value.\n */\n @property({ type: Number, reflect: true }) min = 0;\n\n /**\n * Determines the max resize value.\n */\n @property({ type: Number, reflect: true }) max = 100;\n\n /**\n * Determines the value step change.\n */\n @property({ type: Number, reflect: true }) step = 10;\n\n static styles = useStyles([styles]);\n\n get #range() {\n return this.shadowRoot!.querySelector('input')!;\n }\n\n static readonly metadata = {\n tag: 'nve-resize-handle',\n version: '0.0.0',\n valueSchema: {\n type: 'number' as const\n }\n };\n\n readonly #i18nController: I18nController<this> = new I18nController<this>(this);\n\n readonly #gestureController: GestureController;\n\n #dragPointerId?: number;\n\n /**\n * Updates internal string values for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n #offset = 0;\n\n render() {\n return html`\n <div internal-host>\n <div class=\"line\" part=\"_line\"></div>\n <input aria-label=${ifDefined(this.ariaLabel ?? this.i18n.resize)} type=\"range\" min=${this.min} max=${this.max} .valueAsNumber=${this.valueAsNumber} @input=${(e: Event) => this.#setInput((e.target as HTMLInputElement).valueAsNumber)} @change=${(e: Event) => this.#setChange((e.target as HTMLInputElement).valueAsNumber)} step=${this.step} />\n </div>\n `;\n }\n\n constructor() {\n super();\n this.value = this.value ?? 50;\n this.#offset = this.valueAsNumber;\n this.#gestureController = new GestureController(this, {\n getCapabilities: () => ({ drag: true, pan: false, pinch: false, wheel: false })\n });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._internals.role = 'none';\n this.addEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.addEventListener('nve-pointer-input', this.#handlePointerInput as EventListener);\n }\n\n disconnectedCallback() {\n this.removeEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.removeEventListener('nve-pointer-input', this.#handlePointerInput as EventListener);\n this.#cancelDrag();\n super.disconnectedCallback();\n }\n\n firstUpdated(props: PropertyValues) {\n super.firstUpdated(props);\n this.#gestureController.target = this;\n this.addEventListener('dblclick', () => {\n if (!this.dispatchEvent(new CustomEvent('toggle', { cancelable: true, bubbles: true, composed: true }))) {\n return;\n }\n this.#toggle();\n });\n }\n\n #toggle() {\n const value = this.valueAsNumber <= this.max && this.valueAsNumber !== this.min ? this.min : this.max;\n this.#setInput(value);\n this.#setChange(value);\n }\n\n #handlePointerInput = (event: CustomEvent<UnhandledPointerInput>): void => {\n if (\n event.detail.kind === 'pointerdown' &&\n event.detail.event.button === 0 &&\n event.detail.event.isPrimary &&\n this.#dragPointerId === undefined\n ) {\n this.#dragStart(event.detail.event.pointerId);\n }\n if (event.detail.event.pointerId !== this.#dragPointerId) return;\n if (event.detail.kind === 'pointerup') this.#dragEnd();\n if (event.detail.kind === 'pointercancel') this.#cancelDrag();\n };\n\n #handleGesture = (event: CustomEvent<Gesture<undefined>>): void => {\n if (event.detail.kind === 'drag' && event.detail.event.pointerId === this.#dragPointerId) {\n this.#dragMove(event.detail);\n }\n };\n\n #dragStart(pointerId: number) {\n this.#dragPointerId = pointerId;\n this.#range.step = '1';\n this._internals.states.add('active');\n this.#offset = this.valueAsNumber;\n }\n\n #dragMove(gesture: Extract<Gesture<undefined>, { kind: 'drag' }>) {\n const offset =\n (this.orientation === 'vertical' ? gesture.movementX : -gesture.movementY) * (this.dir === 'rtl' ? -1 : 1);\n this.#offset = Math.max(this.min, Math.min(this.max, this.#offset + offset));\n this.#setInput(this.#offset);\n }\n\n #dragEnd() {\n this.#offset = this.valueAsNumber;\n this.#range.step = `${this.step}`;\n this.#dragPointerId = undefined;\n this._internals.states.delete('active');\n this.#setChange(this.#offset);\n }\n\n #cancelDrag() {\n if (this.#dragPointerId === undefined) return;\n this.#dragPointerId = undefined;\n this.#range.step = `${this.step}`;\n this._internals.states.delete('active');\n }\n\n #setInput(value: number) {\n this.#updateValue(value);\n this.dispatchInputEvent();\n }\n\n #setChange(value: number) {\n this.#updateValue(value);\n this.dispatchChangeEvent();\n }\n\n #updateValue(value: number) {\n if (value <= this.max && value >= this.min) {\n this.valueAsNumber = value;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resize-handle2.js","names":[],"sources":["../../src/resize-handle/resize-handle.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property } from 'lit/decorators/property.js';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport {\n GestureController,\n I18nController,\n useStyles,\n type Gesture,\n type GestureInput\n} from '@nvidia-elements/core/internal';\nimport styles from './resize-handle.css?inline';\n\n/**\n * @element nve-resize-handle\n * @description A resize-handle slider is a control that enables users to resize views or panels vertically or horizontally.\n * @documentation https://nvidia.github.io/elements/docs/elements/resize-handle/\n * @since 1.27.0\n * @entrypoint \\@nvidia-elements/core/resize-handle\n * @event toggle - Dispatched when the resize handle is double clicked.\n * @cssprop --background\n * @cssprop --line-width\n * @cssprop --target-size\n * @cssprop --cursor\n\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/slider/\n *\n */\nexport class ResizeHandle extends FormControlMixin<typeof LitElement, number>(LitElement) {\n /**\n * Determines the orientation direction of the resize handle.\n */\n @property({ type: String, reflect: true }) orientation?: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Determines the min resize value.\n */\n @property({ type: Number, reflect: true }) min = 0;\n\n /**\n * Determines the max resize value.\n */\n @property({ type: Number, reflect: true }) max = 100;\n\n /**\n * Determines the value step change.\n */\n @property({ type: Number, reflect: true }) step = 10;\n\n static styles = useStyles([styles]);\n\n get #range() {\n return this.shadowRoot!.querySelector('input')!;\n }\n\n static readonly metadata = {\n tag: 'nve-resize-handle',\n version: '0.0.0',\n valueSchema: {\n type: 'number' as const\n }\n };\n\n readonly #i18nController: I18nController<this> = new I18nController<this>(this);\n\n readonly #gestureController: GestureController;\n\n #dragPointerId?: number;\n\n /**\n * Updates internal string values for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n #offset = 0;\n\n render() {\n return html`\n <div internal-host>\n <div class=\"line\" part=\"_line\"></div>\n <input aria-label=${ifDefined(this.ariaLabel ?? this.i18n.resize)} type=\"range\" min=${this.min} max=${this.max} .valueAsNumber=${this.valueAsNumber} @input=${(e: Event) => this.#setInput((e.target as HTMLInputElement).valueAsNumber)} @change=${(e: Event) => this.#setChange((e.target as HTMLInputElement).valueAsNumber)} step=${this.step} />\n </div>\n `;\n }\n\n constructor() {\n super();\n this.value = this.value ?? 50;\n this.#offset = this.valueAsNumber;\n this.#gestureController = new GestureController(this, { touchAction: 'none' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._internals.role = 'none';\n this.addEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.addEventListener('nve-gesture-input', this.#handleGestureInput as EventListener);\n }\n\n disconnectedCallback() {\n this.removeEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.removeEventListener('nve-gesture-input', this.#handleGestureInput as EventListener);\n this.#cancelDrag();\n super.disconnectedCallback();\n }\n\n firstUpdated(props: PropertyValues) {\n super.firstUpdated(props);\n this.#gestureController.target = this;\n this.addEventListener('dblclick', () => {\n if (!this.dispatchEvent(new CustomEvent('toggle', { cancelable: true, bubbles: true, composed: true }))) {\n return;\n }\n this.#toggle();\n });\n }\n\n #toggle() {\n const value = this.valueAsNumber <= this.max && this.valueAsNumber !== this.min ? this.min : this.max;\n this.#setInput(value);\n this.#setChange(value);\n }\n\n #handleGestureInput = (event: CustomEvent<GestureInput>): void => {\n const input = event.detail;\n if (input.kind === 'pointerdown') {\n const canStartDrag = input.event.button === 0 && input.event.isPrimary && this.#dragPointerId === undefined;\n if (canStartDrag && input.claim({ kind: 'drag' })) this.#dragStart(input.event.pointerId);\n } else if (input.kind === 'pointerend' && input.event.pointerId === this.#dragPointerId) {\n if (input.interrupted) this.#cancelDrag();\n else this.#dragEnd();\n }\n };\n\n #handleGesture = (event: CustomEvent<Gesture<undefined>>): void => {\n if (event.detail.kind === 'drag' && event.detail.event.pointerId === this.#dragPointerId) {\n this.#dragMove(event.detail);\n }\n };\n\n #dragStart(pointerId: number) {\n this.#dragPointerId = pointerId;\n this.#range.step = '1';\n this._internals.states.add('active');\n this.#offset = this.valueAsNumber;\n }\n\n #dragMove(gesture: Extract<Gesture<undefined>, { kind: 'drag' }>) {\n const offset =\n (this.orientation === 'vertical' ? gesture.movementX : -gesture.movementY) * (this.dir === 'rtl' ? -1 : 1);\n this.#offset = Math.max(this.min, Math.min(this.max, this.#offset + offset));\n this.#setInput(this.#offset);\n }\n\n #dragEnd() {\n this.#offset = this.valueAsNumber;\n this.#range.step = `${this.step}`;\n this.#dragPointerId = undefined;\n this._internals.states.delete('active');\n this.#setChange(this.#offset);\n }\n\n #cancelDrag() {\n if (this.#dragPointerId === undefined) return;\n this.#dragPointerId = undefined;\n this.#range.step = `${this.step}`;\n this._internals.states.delete('active');\n }\n\n #setInput(value: number) {\n this.#updateValue(value);\n this.dispatchInputEvent();\n }\n\n #setChange(value: number) {\n this.#updateValue(value);\n this.dispatchChangeEvent();\n }\n\n #updateValue(value: number) {\n if (value <= this.max && value >= this.min) {\n this.valueAsNumber = value;\n }\n }\n}\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ var l = class extends r {
22
22
  static {
23
23
  this.metadata = {
24
24
  tag: "nve-search",
25
- version: "2.8.1"
25
+ version: "2.9.0"
26
26
  };
27
27
  }
28
28
  static {
@@ -27,7 +27,7 @@ var S = class extends d {
27
27
  static {
28
28
  this.metadata = {
29
29
  tag: "nve-select",
30
- version: "2.8.1"
30
+ version: "2.9.0"
31
31
  };
32
32
  }
33
33
  static {
@@ -15,7 +15,7 @@ var s = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-skeleton",
18
- version: "2.8.1"
18
+ version: "2.9.0"
19
19
  };
20
20
  }
21
21
  render() {
@@ -19,7 +19,7 @@ var u = {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-sort-button",
22
- version: "2.8.1"
22
+ version: "2.9.0"
23
23
  };
24
24
  }
25
25
  static {
@@ -21,7 +21,7 @@ var C = class extends _ {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-sparkline",
24
- version: "2.8.1"
24
+ version: "2.9.0"
25
25
  };
26
26
  }
27
27
  render() {
@@ -18,7 +18,7 @@ var l = class extends a {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-star-rating",
21
- version: "2.8.1"
21
+ version: "2.9.0"
22
22
  };
23
23
  }
24
24
  static {
@@ -23,7 +23,7 @@ var v = class extends h(d) {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-steps-item",
26
- version: "2.8.1",
26
+ version: "2.9.0",
27
27
  parents: ["nve-steps"]
28
28
  };
29
29
  }
@@ -69,7 +69,7 @@ var y = class extends d {
69
69
  static {
70
70
  this.metadata = {
71
71
  tag: "nve-steps",
72
- version: "2.8.1",
72
+ version: "2.9.0",
73
73
  children: ["nve-steps-item"]
74
74
  };
75
75
  }
@@ -11,7 +11,7 @@ var a = class extends r {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-switch-group",
14
- version: "2.8.1",
14
+ version: "2.9.0",
15
15
  children: [
16
16
  "label",
17
17
  "nve-control-message",
@@ -15,7 +15,7 @@ var o = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-switch",
18
- version: "2.8.1",
18
+ version: "2.9.0",
19
19
  children: [
20
20
  "label",
21
21
  "input",
@@ -33,7 +33,7 @@ var m, h = class extends l {
33
33
  static {
34
34
  this.metadata = {
35
35
  tag: "nve-tabs-group",
36
- version: "2.8.1",
36
+ version: "2.9.0",
37
37
  children: ["nve-tabs"]
38
38
  };
39
39
  }
@@ -20,7 +20,7 @@ var _ = class extends h(f) {
20
20
  static {
21
21
  this.metadata = {
22
22
  tag: "nve-tabs-item",
23
- version: "2.8.1",
23
+ version: "2.9.0",
24
24
  parents: ["nve-tabs"]
25
25
  };
26
26
  }
@@ -53,7 +53,7 @@ var v = class extends f {
53
53
  static {
54
54
  this.metadata = {
55
55
  tag: "nve-tabs",
56
- version: "2.8.1",
56
+ version: "2.9.0",
57
57
  children: ["nve-tabs-item"]
58
58
  };
59
59
  }
package/dist/tag/tag2.js CHANGED
@@ -17,7 +17,7 @@ var p = class extends d(c) {
17
17
  static {
18
18
  this.metadata = {
19
19
  tag: "nve-tag",
20
- version: "2.8.1"
20
+ version: "2.9.0"
21
21
  };
22
22
  }
23
23
  static {
@@ -16,7 +16,7 @@ var i = class extends t {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-textarea",
19
- version: "2.8.1"
19
+ version: "2.9.0"
20
20
  };
21
21
  }
22
22
  };
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-time",
22
- version: "2.8.1"
22
+ version: "2.9.0"
23
23
  };
24
24
  }
25
25
  static {
@@ -23,7 +23,7 @@ var g = class extends f {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-toast",
26
- version: "2.8.1"
26
+ version: "2.9.0"
27
27
  };
28
28
  }
29
29
  static {
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-toggletip-footer",
14
- version: "2.8.1",
14
+ version: "2.9.0",
15
15
  parents: ["nve-toggletip"]
16
16
  };
17
17
  }