@nvidia-elements/core 2.18.2 → 2.18.3

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 (292) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/accordion/define.js +3 -3
  4. package/dist/accordion/define.js.map +1 -1
  5. package/dist/alert/alert-group2.js +1 -1
  6. package/dist/alert/alert2.js +1 -1
  7. package/dist/alert/define.js +4 -4
  8. package/dist/alert/define.js.map +1 -1
  9. package/dist/avatar/avatar-group2.js +1 -1
  10. package/dist/avatar/avatar2.js +1 -1
  11. package/dist/avatar/define.js +4 -4
  12. package/dist/avatar/define.js.map +1 -1
  13. package/dist/badge/badge2.js +1 -1
  14. package/dist/badge/define.js +3 -3
  15. package/dist/badge/define.js.map +1 -1
  16. package/dist/breadcrumb/breadcrumb2.js +1 -1
  17. package/dist/breadcrumb/define.js +3 -3
  18. package/dist/breadcrumb/define.js.map +1 -1
  19. package/dist/bundles/index.d.ts +13 -13
  20. package/dist/bundles/index.js +9 -9
  21. package/dist/button/button2.js +1 -1
  22. package/dist/button/define.js +3 -3
  23. package/dist/button/define.js.map +1 -1
  24. package/dist/button-group/button-group2.js +1 -1
  25. package/dist/button-group/define.js +3 -3
  26. package/dist/button-group/define.js.map +1 -1
  27. package/dist/card/card2.js +4 -4
  28. package/dist/card/define.js +3 -3
  29. package/dist/card/define.js.map +1 -1
  30. package/dist/chat-message/chat-message2.js +1 -1
  31. package/dist/chat-message/define.js +3 -3
  32. package/dist/chat-message/define.js.map +1 -1
  33. package/dist/checkbox/checkbox-group2.js +1 -1
  34. package/dist/checkbox/checkbox2.js +1 -1
  35. package/dist/checkbox/define.js +7 -7
  36. package/dist/checkbox/define.js.map +1 -1
  37. package/dist/color/color2.js +1 -1
  38. package/dist/color/define.js +6 -6
  39. package/dist/color/define.js.map +1 -1
  40. package/dist/combobox/combobox2.js +1 -1
  41. package/dist/combobox/define.js +6 -6
  42. package/dist/combobox/define.js.map +1 -1
  43. package/dist/copy-button/copy-button2.js +1 -1
  44. package/dist/copy-button/define.js +3 -3
  45. package/dist/copy-button/define.js.map +1 -1
  46. package/dist/custom-elements.json +0 -316
  47. package/dist/date/date2.js +1 -1
  48. package/dist/date/define.js +6 -6
  49. package/dist/date/define.js.map +1 -1
  50. package/dist/datetime/datetime2.js +1 -1
  51. package/dist/datetime/define.js +6 -6
  52. package/dist/datetime/define.js.map +1 -1
  53. package/dist/dialog/define.js +5 -5
  54. package/dist/dialog/define.js.map +1 -1
  55. package/dist/dialog/dialog-footer2.js +1 -1
  56. package/dist/dialog/dialog-header2.js +1 -1
  57. package/dist/dialog/dialog2.js +1 -1
  58. package/dist/divider/define.js +3 -3
  59. package/dist/divider/define.js.map +1 -1
  60. package/dist/divider/divider2.js +1 -1
  61. package/dist/dot/define.js +3 -3
  62. package/dist/dot/define.js.map +1 -1
  63. package/dist/dot/dot2.js +1 -1
  64. package/dist/drag-handle/define.js +3 -3
  65. package/dist/drag-handle/define.js.map +1 -1
  66. package/dist/drag-handle/drag-handle2.js +1 -1
  67. package/dist/drawer/define.js +6 -6
  68. package/dist/drawer/define.js.map +1 -1
  69. package/dist/drawer/drawer-content2.js +1 -1
  70. package/dist/drawer/drawer-footer2.js +1 -1
  71. package/dist/drawer/drawer-header2.js +1 -1
  72. package/dist/drawer/drawer2.js +1 -1
  73. package/dist/dropdown/define.js +5 -5
  74. package/dist/dropdown/define.js.map +1 -1
  75. package/dist/dropdown/dropdown-footer2.js +1 -1
  76. package/dist/dropdown/dropdown-header2.js +1 -1
  77. package/dist/dropdown/dropdown2.js +1 -1
  78. package/dist/dropdown-group/define.js +3 -3
  79. package/dist/dropdown-group/define.js.map +1 -1
  80. package/dist/dropdown-group/dropdown-group.js +1 -1
  81. package/dist/dropzone/define.js +3 -3
  82. package/dist/dropzone/define.js.map +1 -1
  83. package/dist/dropzone/dropzone2.js +1 -1
  84. package/dist/file/define.js +6 -6
  85. package/dist/file/define.js.map +1 -1
  86. package/dist/file/file2.js +1 -1
  87. package/dist/format-bytes/define.js +3 -3
  88. package/dist/format-bytes/define.js.map +1 -1
  89. package/dist/format-bytes/format-bytes2.js +1 -1
  90. package/dist/format-datetime/define.js +3 -3
  91. package/dist/format-datetime/define.js.map +1 -1
  92. package/dist/format-datetime/format-datetime2.js +1 -1
  93. package/dist/format-number/define.js +3 -3
  94. package/dist/format-number/define.js.map +1 -1
  95. package/dist/format-number/format-number2.js +1 -1
  96. package/dist/format-relative-time/define.js +3 -3
  97. package/dist/format-relative-time/define.js.map +1 -1
  98. package/dist/format-relative-time/format-relative-time2.js +1 -1
  99. package/dist/format-truncate/define.js +3 -3
  100. package/dist/format-truncate/define.js.map +1 -1
  101. package/dist/format-truncate/format-truncate2.js +1 -1
  102. package/dist/forms/control/control2.js +1 -1
  103. package/dist/forms/control-group/control-group2.js +1 -1
  104. package/dist/forms/control-message/control-message2.js +1 -1
  105. package/dist/forms/define.js +5 -5
  106. package/dist/forms/define.js.map +1 -1
  107. package/dist/gauge/define.js +3 -3
  108. package/dist/gauge/define.js.map +1 -1
  109. package/dist/gauge/gauge2.js +1 -1
  110. package/dist/grid/cell/cell2.js +1 -1
  111. package/dist/grid/column/column2.js +1 -1
  112. package/dist/grid/define.js +9 -9
  113. package/dist/grid/define.js.map +1 -1
  114. package/dist/grid/footer/footer2.js +1 -1
  115. package/dist/grid/grid2.js +1 -1
  116. package/dist/grid/header/header2.js +21 -21
  117. package/dist/grid/header/header2.js.map +1 -1
  118. package/dist/grid/placeholder/placeholder2.js +1 -1
  119. package/dist/grid/row/row2.js +1 -1
  120. package/dist/icon/define.js +6 -6
  121. package/dist/icon/define.js.map +1 -1
  122. package/dist/icon/icon2.js +31 -31
  123. package/dist/icon-button/define.js +3 -3
  124. package/dist/icon-button/define.js.map +1 -1
  125. package/dist/icon-button/icon-button2.js +1 -1
  126. package/dist/iframe/define.js +3 -3
  127. package/dist/iframe/define.js.map +1 -1
  128. package/dist/iframe/iframe2.js +1 -1
  129. package/dist/index.js +1 -1
  130. package/dist/input/define.js +7 -7
  131. package/dist/input/define.js.map +1 -1
  132. package/dist/input/input-group2.js +1 -1
  133. package/dist/input/input2.js +1 -1
  134. package/dist/internal/controllers/audit.controller.js +11 -11
  135. package/dist/internal/controllers/audit.controller.js.map +1 -1
  136. package/dist/internal/controllers/keynav-grid.controller.js +34 -34
  137. package/dist/internal/controllers/keynav-grid.controller.js.map +1 -1
  138. package/dist/internal/controllers/type-native-popover.utils.js +3 -3
  139. package/dist/internal/controllers/type-ssr.controller.js +4 -4
  140. package/dist/internal/controllers/type-ssr.controller.js.map +1 -1
  141. package/dist/internal/decorators/scoped-registry.js +3 -5
  142. package/dist/internal/decorators/scoped-registry.js.map +1 -1
  143. package/dist/internal/index.d.ts +0 -1
  144. package/dist/internal/index.js +36 -37
  145. package/dist/internal/services/i18n.service.d.ts +2 -1
  146. package/dist/internal/services/i18n.service.js +1 -1
  147. package/dist/internal/services/i18n.service.js.map +1 -1
  148. package/dist/internal/services/log.service.js +1 -1
  149. package/dist/internal/services/log.service.js.map +1 -1
  150. package/dist/internal/types/index.d.ts +0 -37
  151. package/dist/internal/types/index.js.map +1 -1
  152. package/dist/internal/utils/audit-logs.d.ts +0 -2
  153. package/dist/internal/utils/audit-logs.js +1 -7
  154. package/dist/internal/utils/audit-logs.js.map +1 -1
  155. package/dist/internal/utils/dom.d.ts +0 -7
  156. package/dist/internal/utils/dom.js +55 -66
  157. package/dist/internal/utils/dom.js.map +1 -1
  158. package/dist/internal/utils/objects.d.ts +0 -2
  159. package/dist/internal/utils/objects.js +3 -22
  160. package/dist/internal/utils/objects.js.map +1 -1
  161. package/dist/logo/define.js +3 -3
  162. package/dist/logo/define.js.map +1 -1
  163. package/dist/logo/logo2.js +1 -1
  164. package/dist/menu/define.js +5 -5
  165. package/dist/menu/define.js.map +1 -1
  166. package/dist/menu/menu-group2.js +1 -1
  167. package/dist/menu/menu-item2.js +1 -1
  168. package/dist/menu/menu2.js +1 -1
  169. package/dist/month/define.js +6 -6
  170. package/dist/month/define.js.map +1 -1
  171. package/dist/month/month2.js +1 -1
  172. package/dist/notification/define.js +4 -4
  173. package/dist/notification/define.js.map +1 -1
  174. package/dist/notification/notification-group2.js +1 -1
  175. package/dist/notification/notification2.js +1 -1
  176. package/dist/page/define.js +8 -8
  177. package/dist/page/define.js.map +1 -1
  178. package/dist/page/page-panel/page-panel-content2.js +1 -1
  179. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  180. package/dist/page/page-panel/page-panel-header2.js +1 -1
  181. package/dist/page/page-panel/page-panel2.js +1 -1
  182. package/dist/page/page2.js +1 -1
  183. package/dist/page-header/define.js +3 -3
  184. package/dist/page-header/define.js.map +1 -1
  185. package/dist/page-header/page-header2.js +1 -1
  186. package/dist/page-loader/define.js +3 -3
  187. package/dist/page-loader/define.js.map +1 -1
  188. package/dist/page-loader/page-loader2.js +1 -1
  189. package/dist/pagination/define.js +3 -3
  190. package/dist/pagination/define.js.map +1 -1
  191. package/dist/pagination/pagination2.js +17 -17
  192. package/dist/panel/define.js +3 -3
  193. package/dist/panel/define.js.map +1 -1
  194. package/dist/panel/panel2.js +4 -4
  195. package/dist/password/define.js +6 -6
  196. package/dist/password/define.js.map +1 -1
  197. package/dist/password/password2.js +1 -1
  198. package/dist/preferences-input/define.js +3 -3
  199. package/dist/preferences-input/define.js.map +1 -1
  200. package/dist/preferences-input/preferences-input2.js +1 -1
  201. package/dist/progress-bar/define.js +3 -3
  202. package/dist/progress-bar/define.js.map +1 -1
  203. package/dist/progress-bar/progress-bar2.js +1 -1
  204. package/dist/progress-dot/define.js +3 -3
  205. package/dist/progress-dot/define.js.map +1 -1
  206. package/dist/progress-dot/progress-dot2.js +1 -1
  207. package/dist/progress-ring/define.js +3 -3
  208. package/dist/progress-ring/define.js.map +1 -1
  209. package/dist/progress-ring/progress-ring2.js +1 -1
  210. package/dist/progressive-filter-chip/define.js +3 -3
  211. package/dist/progressive-filter-chip/define.js.map +1 -1
  212. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  213. package/dist/pulse/define.js +3 -3
  214. package/dist/pulse/define.js.map +1 -1
  215. package/dist/pulse/pulse2.js +1 -1
  216. package/dist/radio/define.js +7 -7
  217. package/dist/radio/define.js.map +1 -1
  218. package/dist/radio/radio-group2.js +1 -1
  219. package/dist/radio/radio2.js +1 -1
  220. package/dist/range/define.js +6 -6
  221. package/dist/range/define.js.map +1 -1
  222. package/dist/range/range2.js +1 -1
  223. package/dist/resize-handle/define.js +3 -3
  224. package/dist/resize-handle/define.js.map +1 -1
  225. package/dist/resize-handle/resize-handle2.js +1 -1
  226. package/dist/search/define.js +6 -6
  227. package/dist/search/define.js.map +1 -1
  228. package/dist/search/search2.js +1 -1
  229. package/dist/select/define.js +6 -6
  230. package/dist/select/define.js.map +1 -1
  231. package/dist/select/select2.js +1 -1
  232. package/dist/skeleton/define.js +3 -3
  233. package/dist/skeleton/define.js.map +1 -1
  234. package/dist/skeleton/skeleton2.js +1 -1
  235. package/dist/sort-button/define.js +3 -3
  236. package/dist/sort-button/define.js.map +1 -1
  237. package/dist/sort-button/sort-button2.js +1 -1
  238. package/dist/sparkline/define.js +3 -3
  239. package/dist/sparkline/define.js.map +1 -1
  240. package/dist/sparkline/sparkline2.js +1 -1
  241. package/dist/star-rating/define.js +6 -6
  242. package/dist/star-rating/define.js.map +1 -1
  243. package/dist/star-rating/star-rating2.js +1 -1
  244. package/dist/steps/define.js +3 -3
  245. package/dist/steps/define.js.map +1 -1
  246. package/dist/steps/steps2.js +2 -2
  247. package/dist/switch/define.js +7 -7
  248. package/dist/switch/define.js.map +1 -1
  249. package/dist/switch/switch-group2.js +1 -1
  250. package/dist/switch/switch2.js +1 -1
  251. package/dist/tabs/define.js +5 -5
  252. package/dist/tabs/define.js.map +1 -1
  253. package/dist/tabs/tabs-group2.js +1 -1
  254. package/dist/tabs/tabs-item-group2.js +1 -1
  255. package/dist/tabs/tabs2.js +2 -2
  256. package/dist/tag/define.js +3 -3
  257. package/dist/tag/define.js.map +1 -1
  258. package/dist/tag/tag2.js +1 -1
  259. package/dist/textarea/define.js +6 -6
  260. package/dist/textarea/define.js.map +1 -1
  261. package/dist/textarea/textarea2.js +1 -1
  262. package/dist/time/define.js +6 -6
  263. package/dist/time/define.js.map +1 -1
  264. package/dist/time/time2.js +1 -1
  265. package/dist/toast/define.js +3 -3
  266. package/dist/toast/define.js.map +1 -1
  267. package/dist/toast/toast2.js +1 -1
  268. package/dist/toggletip/define.js +5 -5
  269. package/dist/toggletip/define.js.map +1 -1
  270. package/dist/toggletip/toggletip-footer2.js +1 -1
  271. package/dist/toggletip/toggletip-header2.js +1 -1
  272. package/dist/toggletip/toggletip2.js +1 -1
  273. package/dist/toolbar/define.js +3 -3
  274. package/dist/toolbar/define.js.map +1 -1
  275. package/dist/toolbar/toolbar2.js +1 -1
  276. package/dist/tooltip/define.js +3 -3
  277. package/dist/tooltip/define.js.map +1 -1
  278. package/dist/tooltip/tooltip2.js +1 -1
  279. package/dist/tree/define.js +4 -4
  280. package/dist/tree/define.js.map +1 -1
  281. package/dist/tree/tree-node2.js +1 -1
  282. package/dist/tree/tree2.js +1 -1
  283. package/dist/week/define.js +6 -6
  284. package/dist/week/define.js.map +1 -1
  285. package/dist/week/week2.js +1 -1
  286. package/package.json +8 -1
  287. package/dist/internal/services/global.service.d.ts +0 -27
  288. package/dist/internal/services/global.service.js +0 -34
  289. package/dist/internal/services/global.service.js.map +0 -1
  290. package/dist/internal/services/global.utils.d.ts +0 -12
  291. package/dist/internal/services/global.utils.js +0 -15
  292. package/dist/internal/services/global.utils.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { GlobalStateService as e } from "../services/global.service.js";
2
- import { LogService as t } from "../services/log.service.js";
3
- import { throttle as n } from "../utils/events.js";
4
- import { focusElement as r, getActiveElement as i, isSimpleFocusable as a, setActiveKeyListItem as o } from "../utils/focus.js";
5
- import { KeynavCode as s, getFlattenedDOMTree as c, getFlattenedFocusableItems as l, hasInvalidDOMGrid as u, isContextMenuClick as d, validKeyNavigationCode as f } from "../utils/dom.js";
1
+ import { LogService as e } from "../services/log.service.js";
2
+ import { throttle as t } from "../utils/events.js";
3
+ import { focusElement as n, getActiveElement as r, isSimpleFocusable as i, setActiveKeyListItem as a } from "../utils/focus.js";
4
+ import { KeynavCode as o, getFlattenedDOMTree as s, getFlattenedFocusableItems as c, hasInvalidDOMGrid as l, isContextMenuClick as u, validKeyNavigationCode as d } from "../utils/dom.js";
5
+ import { GlobalStateService as f } from "@nvidia-elements/foundations/internal/state";
6
6
  //#region src/internal/controllers/keynav-grid.controller.ts
7
7
  function p() {
8
8
  return (e) => e.addInitializer((e) => new m(e));
@@ -12,7 +12,7 @@ var m = class {
12
12
  #t;
13
13
  #n;
14
14
  #r = /* @__PURE__ */ new WeakSet();
15
- #i = n(() => this.#c(), 500, { trailing: !0 });
15
+ #i = t(() => this.#c(), 500, { trailing: !0 });
16
16
  get #a() {
17
17
  return {
18
18
  grid: this.host,
@@ -62,33 +62,33 @@ var m = class {
62
62
  this.#l(this.#e?.takeRecords() ?? []), this.#i.flush();
63
63
  }
64
64
  #d = (e) => {
65
- if (!d(e)) {
65
+ if (!u(e)) {
66
66
  this.#u();
67
67
  let t = e.composedPath()[0], n = this.#s.find((e) => e === t) ? t : null;
68
68
  n && this.#p(e, n);
69
69
  }
70
70
  };
71
- #f = (n) => {
72
- if (!f(n)) return;
71
+ #f = (t) => {
72
+ if (!d(t)) return;
73
73
  this.#u();
74
- let r = Array.from(this.#o), o = Array.from(this.#s);
75
- if (e.state.env !== "production" && u(r)) {
76
- t.warn("Invalid grid structure, all rows must have the same number of cells");
74
+ let n = Array.from(this.#o), a = Array.from(this.#s);
75
+ if (f.state.env !== "production" && l(n)) {
76
+ e.warn("Invalid grid structure, all rows must have the same number of cells");
77
77
  return;
78
78
  }
79
- if (a(i())) {
80
- let { x: e, y: t } = _(o, r, {
81
- code: n.code,
82
- ctrlKey: n.ctrlKey,
79
+ if (i(r())) {
80
+ let { x: e, y: r } = _(a, n, {
81
+ code: t.code,
82
+ ctrlKey: t.ctrlKey,
83
83
  dir: this.host.dir
84
- }), i = Array.from(c(r[t])).filter((e) => !!o.find((t) => t === e))[e];
85
- this.#p(n, i), n.preventDefault();
84
+ }), i = Array.from(s(n[r])).filter((e) => !!a.find((t) => t === e))[e];
85
+ this.#p(t, i), t.preventDefault();
86
86
  }
87
87
  };
88
88
  #p(e, t) {
89
- this.#n = t, o(this.#s, t);
90
- let n = l(t), i = n.filter((e) => a(e));
91
- i.length === 1 && n.length === 1 ? r(i[0]) : r(t);
89
+ this.#n = t, a(this.#s, t);
90
+ let r = c(t), o = r.filter((e) => i(e));
91
+ o.length === 1 && r.length === 1 ? n(o[0]) : n(t);
92
92
  let s = {
93
93
  code: e instanceof KeyboardEvent ? e.code : null,
94
94
  shiftKey: e.shiftKey,
@@ -104,15 +104,15 @@ var m = class {
104
104
  if (e.code !== "Enter" && e.code !== "Escape") return;
105
105
  this.#u();
106
106
  let t = Array.from(this.#s).find((e) => e.tabIndex === 0);
107
- e.code === "Escape" && t?.focus(), e.code === "Enter" && t === e.composedPath()[0] && l(t)[0]?.focus();
107
+ e.code === "Escape" && t?.focus(), e.code === "Enter" && t === e.composedPath()[0] && c(t)[0]?.focus();
108
108
  };
109
109
  };
110
110
  function h(e, t) {
111
- let n = t === "rtl" ? s.ArrowRight : s.ArrowLeft, r = t === "rtl" ? s.ArrowLeft : s.ArrowRight;
112
- return e === s.ArrowUp ? {
111
+ let n = t === "rtl" ? o.ArrowRight : o.ArrowLeft, r = t === "rtl" ? o.ArrowLeft : o.ArrowRight;
112
+ return e === o.ArrowUp ? {
113
113
  dx: 0,
114
114
  dy: -1
115
- } : e === s.ArrowDown ? {
115
+ } : e === o.ArrowDown ? {
116
116
  dx: 0,
117
117
  dy: 1
118
118
  } : e === n ? {
@@ -121,20 +121,20 @@ function h(e, t) {
121
121
  } : e === r ? {
122
122
  dx: 1,
123
123
  dy: 0
124
- } : e === s.PageUp ? {
124
+ } : e === o.PageUp ? {
125
125
  dx: 0,
126
126
  dy: -4
127
- } : e === s.PageDown ? {
127
+ } : e === o.PageDown ? {
128
128
  dx: 0,
129
129
  dy: 4
130
130
  } : null;
131
131
  }
132
132
  function g(e, t, n) {
133
- let { x: r, y: i } = t, { columnCount: a, rowCount: o, ctrlKey: c } = n;
134
- return e === s.End ? {
133
+ let { x: r, y: i } = t, { columnCount: a, rowCount: s, ctrlKey: c } = n;
134
+ return e === o.End ? {
135
135
  x: a,
136
- y: c ? o : i
137
- } : e === s.Home ? {
136
+ y: c ? s : i
137
+ } : e === o.Home ? {
138
138
  x: 0,
139
139
  y: c ? 0 : i
140
140
  } : {
@@ -143,12 +143,12 @@ function g(e, t, n) {
143
143
  };
144
144
  }
145
145
  function _(e, t, n) {
146
- let r = e.find((e) => e.tabIndex === 0), i = t.find((e) => c(e).find((e) => e === r)), a = Array.from(c(i)).filter((t) => !!e.find((e) => e === t)), o = t.length - 1, s = a.length - 1, l = a.indexOf(r), u = t.indexOf(i), d = h(n.code, n.dir);
147
- return d ? (l = Math.max(0, Math.min(s, l + d.dx)), u = Math.max(0, Math.min(o, u + d.dy))) : {x: l, y: u} = g(n.code, {
146
+ let r = e.find((e) => e.tabIndex === 0), i = t.find((e) => s(e).find((e) => e === r)), a = Array.from(s(i)).filter((t) => !!e.find((e) => e === t)), o = t.length - 1, c = a.length - 1, l = a.indexOf(r), u = t.indexOf(i), d = h(n.code, n.dir);
147
+ return d ? (l = Math.max(0, Math.min(c, l + d.dx)), u = Math.max(0, Math.min(o, u + d.dy))) : {x: l, y: u} = g(n.code, {
148
148
  x: l,
149
149
  y: u
150
150
  }, {
151
- columnCount: s,
151
+ columnCount: c,
152
152
  rowCount: o,
153
153
  ctrlKey: n.ctrlKey
154
154
  }), {
@@ -1 +1 @@
1
- {"version":3,"file":"keynav-grid.controller.js","names":[],"sources":["../../../src/internal/controllers/keynav-grid.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { throttle } from '../utils/events.js';\nimport { GlobalStateService } from '../services/global.service.js';\nimport { LogService } from '../services/log.service.js';\nimport {\n validKeyNavigationCode,\n isContextMenuClick,\n getFlattenedDOMTree,\n getFlattenedFocusableItems,\n KeynavCode,\n hasInvalidDOMGrid\n} from '../utils/dom.js';\nimport { focusElement, getActiveElement, setActiveKeyListItem, isSimpleFocusable } from '../utils/focus.js';\n\nexport interface KeynavGridConfig {\n grid?: HTMLElement;\n columnRow?: HTMLElement;\n columns?: NodeListOf<HTMLElement> | HTMLElement[];\n rows: NodeListOf<HTMLElement> | HTMLElement[];\n cells: NodeListOf<HTMLElement> | HTMLElement[];\n}\n\nexport interface KeynavGridElement {\n keynavGridConfig: KeynavGridConfig;\n}\n\n/**\n * https://w3c.github.io/aria-practices/#gridNav_focus\n */\nexport function keyNavigationGrid<T extends ReactiveElement & KeynavGridElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationGridController(instance));\n}\n\nexport class KeyNavigationGridController<T extends ReactiveElement & KeynavGridElement> implements ReactiveController {\n #observer?: MutationObserver;\n #grid?: HTMLElement;\n #activeCell?: HTMLElement;\n #cells = new WeakSet<HTMLElement>();\n #updateCells = throttle(() => this.#initializeCells(), 500, { trailing: true });\n\n get #config() {\n return {\n grid: this.host,\n ...this.host.keynavGridConfig\n };\n }\n\n get #hostRows() {\n const rows = Array.from(this.#config.rows);\n\n if (this.#config.columnRow) {\n rows.unshift(this.#config.columnRow);\n }\n\n return rows;\n }\n\n get #hostCells() {\n const { columns, cells } = this.#config;\n return [...Array.from(columns ?? []), ...Array.from(cells)];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.#grid = this.#config.grid;\n this.#initializeCells();\n this.#grid.addEventListener('keyup', this.#onKeyUp);\n this.#grid.addEventListener('keydown', this.#onKeyDown);\n this.#grid.addEventListener('mouseup', this.#onMouseUp);\n this.#observer?.disconnect();\n this.#observer = new MutationObserver(this.#onMutations);\n this.#observer.observe(this.#grid, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['tabindex']\n });\n }\n\n hostDisconnected() {\n this.#observer?.disconnect();\n this.#observer = undefined;\n this.#updateCells.cancel();\n this.#grid?.removeEventListener('keyup', this.#onKeyUp);\n this.#grid?.removeEventListener('keydown', this.#onKeyDown);\n this.#grid?.removeEventListener('mouseup', this.#onMouseUp);\n this.#grid = undefined;\n this.#activeCell = undefined;\n }\n\n #initializeCells() {\n const cells = this.#hostCells;\n const activeCell =\n cells.find(cell => cell.tabIndex === 0) ??\n (this.#activeCell && cells.includes(this.#activeCell) ? this.#activeCell : cells[0]);\n this.#activeCell = activeCell;\n this.#cells = new WeakSet(cells);\n for (const cell of cells) {\n const tabIndex = cell === activeCell ? '0' : '-1';\n // Avoid observing our own unchanged writes after a DOM morph or key change.\n if (cell.getAttribute('tabindex') !== tabIndex) {\n cell.setAttribute('tabindex', tabIndex);\n }\n }\n }\n\n #onMutations = (mutations: MutationRecord[]) => {\n const changed = mutations.some(mutation => {\n if (mutation.type === 'attributes') {\n const cell = mutation.target;\n // Ignore nested controls and our own tabindex writes.\n return (\n cell instanceof HTMLElement &&\n this.#cells.has(cell) &&\n cell.getAttribute('tabindex') !== (cell === this.#activeCell ? '0' : '-1')\n );\n }\n return [...mutation.addedNodes, ...mutation.removedNodes].some(node => node.nodeType === Node.ELEMENT_NODE);\n });\n if (changed) this.#updateCells();\n };\n\n #flushCellUpdates() {\n // A key event can arrive before the observer delivers a synchronous DOM update.\n this.#onMutations(this.#observer?.takeRecords() ?? []);\n this.#updateCells.flush();\n }\n\n #onMouseUp = (e: MouseEvent) => {\n if (!isContextMenuClick(e)) {\n this.#flushCellUpdates();\n const focusedElement = e.composedPath()[0] as HTMLElement;\n const activeCell = this.#hostCells.find(i => i === focusedElement) ? focusedElement : null;\n if (activeCell) {\n this.#setActiveCell(e, activeCell);\n }\n }\n };\n\n #onKeyDown = (e: KeyboardEvent) => {\n if (!validKeyNavigationCode(e)) return;\n this.#flushCellUpdates();\n const rows = Array.from(this.#hostRows);\n const cells = Array.from(this.#hostCells);\n\n if (GlobalStateService.state.env !== 'production' && hasInvalidDOMGrid(rows)) {\n LogService.warn('Invalid grid structure, all rows must have the same number of cells');\n return;\n }\n\n if (isSimpleFocusable(getActiveElement() as Element)) {\n const { x, y } = getNextKeyGridItem(cells, rows, {\n code: e.code,\n ctrlKey: e.ctrlKey,\n dir: this.host.dir\n });\n\n const nextCell = Array.from(getFlattenedDOMTree(rows[y]!)).filter(c => !!cells.find(i => i === c))[\n x\n ] as HTMLElement;\n this.#setActiveCell(e, nextCell);\n e.preventDefault();\n }\n };\n\n #setActiveCell(e: KeyboardEvent | MouseEvent, activeCell: HTMLElement) {\n this.#activeCell = activeCell;\n setActiveKeyListItem(this.#hostCells, activeCell);\n\n const items = getFlattenedFocusableItems(activeCell);\n const simpleItems = items.filter(i => isSimpleFocusable(i));\n\n if (simpleItems.length === 1 && items.length === 1) {\n focusElement(simpleItems[0]!);\n } else {\n focusElement(activeCell);\n }\n\n const detail = { code: e instanceof KeyboardEvent ? e.code : null, shiftKey: e.shiftKey, activeItem: activeCell };\n activeCell.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onKeyUp = (e: KeyboardEvent) => {\n if (e.code !== 'Enter' && e.code !== 'Escape') return;\n this.#flushCellUpdates();\n const activeCell = Array.from(this.#hostCells).find(i => i.tabIndex === 0) as HTMLElement;\n if (e.code === 'Escape') {\n activeCell?.focus();\n }\n\n if (e.code === 'Enter' && activeCell === e.composedPath()[0]) {\n getFlattenedFocusableItems(activeCell)[0]?.focus();\n }\n };\n}\n\nfunction getGridDelta(code: KeynavCode | string, dir: string): { dx: number; dy: number } | null {\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (code === KeynavCode.ArrowUp) return { dx: 0, dy: -1 };\n if (code === KeynavCode.ArrowDown) return { dx: 0, dy: 1 };\n if (code === start) return { dx: -1, dy: 0 };\n if (code === end) return { dx: 1, dy: 0 };\n if (code === KeynavCode.PageUp) return { dx: 0, dy: -4 };\n if (code === KeynavCode.PageDown) return { dx: 0, dy: 4 };\n return null;\n}\n\nfunction applyGridHomeEnd(\n code: KeynavCode | string,\n position: { x: number; y: number },\n bounds: { columnCount: number; rowCount: number; ctrlKey: boolean }\n) {\n const { x, y } = position;\n const { columnCount, rowCount, ctrlKey } = bounds;\n if (code === KeynavCode.End) {\n return { x: columnCount, y: ctrlKey ? rowCount : y };\n }\n\n if (code === KeynavCode.Home) {\n return { x: 0, y: ctrlKey ? 0 : y };\n }\n\n return { x, y };\n}\n\nexport function getNextKeyGridItem(\n cells: HTMLElement[],\n rows: HTMLElement[],\n config: { code: KeynavCode | string; ctrlKey: boolean; dir: string }\n) {\n const currentCell = cells.find(i => i.tabIndex === 0) as HTMLElement;\n const currentRow = rows.find(r => getFlattenedDOMTree(r).find(c => c === currentCell)) as HTMLElement;\n const currentRowCells = Array.from(getFlattenedDOMTree(currentRow)).filter(c => !!cells.find(i => i === c));\n const rowCount = rows.length - 1;\n const columnCount = currentRowCells.length - 1;\n\n let x = currentRowCells.indexOf(currentCell);\n let y = rows.indexOf(currentRow);\n\n const delta = getGridDelta(config.code, config.dir);\n if (delta) {\n x = Math.max(0, Math.min(columnCount, x + delta.dx));\n y = Math.max(0, Math.min(rowCount, y + delta.dy));\n } else {\n ({ x, y } = applyGridHomeEnd(config.code, { x, y }, { columnCount, rowCount, ctrlKey: config.ctrlKey }));\n }\n\n return { x, y };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keynav-grid.controller.js","names":[],"sources":["../../../src/internal/controllers/keynav-grid.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { throttle } from '../utils/events.js';\nimport { GlobalStateService } from '@nvidia-elements/foundations/internal/state';\nimport { LogService } from '../services/log.service.js';\nimport {\n validKeyNavigationCode,\n isContextMenuClick,\n getFlattenedDOMTree,\n getFlattenedFocusableItems,\n KeynavCode,\n hasInvalidDOMGrid\n} from '../utils/dom.js';\nimport { focusElement, getActiveElement, setActiveKeyListItem, isSimpleFocusable } from '../utils/focus.js';\n\nexport interface KeynavGridConfig {\n grid?: HTMLElement;\n columnRow?: HTMLElement;\n columns?: NodeListOf<HTMLElement> | HTMLElement[];\n rows: NodeListOf<HTMLElement> | HTMLElement[];\n cells: NodeListOf<HTMLElement> | HTMLElement[];\n}\n\nexport interface KeynavGridElement {\n keynavGridConfig: KeynavGridConfig;\n}\n\n/**\n * https://w3c.github.io/aria-practices/#gridNav_focus\n */\nexport function keyNavigationGrid<T extends ReactiveElement & KeynavGridElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationGridController(instance));\n}\n\nexport class KeyNavigationGridController<T extends ReactiveElement & KeynavGridElement> implements ReactiveController {\n #observer?: MutationObserver;\n #grid?: HTMLElement;\n #activeCell?: HTMLElement;\n #cells = new WeakSet<HTMLElement>();\n #updateCells = throttle(() => this.#initializeCells(), 500, { trailing: true });\n\n get #config() {\n return {\n grid: this.host,\n ...this.host.keynavGridConfig\n };\n }\n\n get #hostRows() {\n const rows = Array.from(this.#config.rows);\n\n if (this.#config.columnRow) {\n rows.unshift(this.#config.columnRow);\n }\n\n return rows;\n }\n\n get #hostCells() {\n const { columns, cells } = this.#config;\n return [...Array.from(columns ?? []), ...Array.from(cells)];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.#grid = this.#config.grid;\n this.#initializeCells();\n this.#grid.addEventListener('keyup', this.#onKeyUp);\n this.#grid.addEventListener('keydown', this.#onKeyDown);\n this.#grid.addEventListener('mouseup', this.#onMouseUp);\n this.#observer?.disconnect();\n this.#observer = new MutationObserver(this.#onMutations);\n this.#observer.observe(this.#grid, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['tabindex']\n });\n }\n\n hostDisconnected() {\n this.#observer?.disconnect();\n this.#observer = undefined;\n this.#updateCells.cancel();\n this.#grid?.removeEventListener('keyup', this.#onKeyUp);\n this.#grid?.removeEventListener('keydown', this.#onKeyDown);\n this.#grid?.removeEventListener('mouseup', this.#onMouseUp);\n this.#grid = undefined;\n this.#activeCell = undefined;\n }\n\n #initializeCells() {\n const cells = this.#hostCells;\n const activeCell =\n cells.find(cell => cell.tabIndex === 0) ??\n (this.#activeCell && cells.includes(this.#activeCell) ? this.#activeCell : cells[0]);\n this.#activeCell = activeCell;\n this.#cells = new WeakSet(cells);\n for (const cell of cells) {\n const tabIndex = cell === activeCell ? '0' : '-1';\n // Avoid observing our own unchanged writes after a DOM morph or key change.\n if (cell.getAttribute('tabindex') !== tabIndex) {\n cell.setAttribute('tabindex', tabIndex);\n }\n }\n }\n\n #onMutations = (mutations: MutationRecord[]) => {\n const changed = mutations.some(mutation => {\n if (mutation.type === 'attributes') {\n const cell = mutation.target;\n // Ignore nested controls and our own tabindex writes.\n return (\n cell instanceof HTMLElement &&\n this.#cells.has(cell) &&\n cell.getAttribute('tabindex') !== (cell === this.#activeCell ? '0' : '-1')\n );\n }\n return [...mutation.addedNodes, ...mutation.removedNodes].some(node => node.nodeType === Node.ELEMENT_NODE);\n });\n if (changed) this.#updateCells();\n };\n\n #flushCellUpdates() {\n // A key event can arrive before the observer delivers a synchronous DOM update.\n this.#onMutations(this.#observer?.takeRecords() ?? []);\n this.#updateCells.flush();\n }\n\n #onMouseUp = (e: MouseEvent) => {\n if (!isContextMenuClick(e)) {\n this.#flushCellUpdates();\n const focusedElement = e.composedPath()[0] as HTMLElement;\n const activeCell = this.#hostCells.find(i => i === focusedElement) ? focusedElement : null;\n if (activeCell) {\n this.#setActiveCell(e, activeCell);\n }\n }\n };\n\n #onKeyDown = (e: KeyboardEvent) => {\n if (!validKeyNavigationCode(e)) return;\n this.#flushCellUpdates();\n const rows = Array.from(this.#hostRows);\n const cells = Array.from(this.#hostCells);\n\n if (GlobalStateService.state.env !== 'production' && hasInvalidDOMGrid(rows)) {\n LogService.warn('Invalid grid structure, all rows must have the same number of cells');\n return;\n }\n\n if (isSimpleFocusable(getActiveElement() as Element)) {\n const { x, y } = getNextKeyGridItem(cells, rows, {\n code: e.code,\n ctrlKey: e.ctrlKey,\n dir: this.host.dir\n });\n\n const nextCell = Array.from(getFlattenedDOMTree(rows[y]!)).filter(c => !!cells.find(i => i === c))[\n x\n ] as HTMLElement;\n this.#setActiveCell(e, nextCell);\n e.preventDefault();\n }\n };\n\n #setActiveCell(e: KeyboardEvent | MouseEvent, activeCell: HTMLElement) {\n this.#activeCell = activeCell;\n setActiveKeyListItem(this.#hostCells, activeCell);\n\n const items = getFlattenedFocusableItems(activeCell);\n const simpleItems = items.filter(i => isSimpleFocusable(i));\n\n if (simpleItems.length === 1 && items.length === 1) {\n focusElement(simpleItems[0]!);\n } else {\n focusElement(activeCell);\n }\n\n const detail = { code: e instanceof KeyboardEvent ? e.code : null, shiftKey: e.shiftKey, activeItem: activeCell };\n activeCell.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onKeyUp = (e: KeyboardEvent) => {\n if (e.code !== 'Enter' && e.code !== 'Escape') return;\n this.#flushCellUpdates();\n const activeCell = Array.from(this.#hostCells).find(i => i.tabIndex === 0) as HTMLElement;\n if (e.code === 'Escape') {\n activeCell?.focus();\n }\n\n if (e.code === 'Enter' && activeCell === e.composedPath()[0]) {\n getFlattenedFocusableItems(activeCell)[0]?.focus();\n }\n };\n}\n\nfunction getGridDelta(code: KeynavCode | string, dir: string): { dx: number; dy: number } | null {\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (code === KeynavCode.ArrowUp) return { dx: 0, dy: -1 };\n if (code === KeynavCode.ArrowDown) return { dx: 0, dy: 1 };\n if (code === start) return { dx: -1, dy: 0 };\n if (code === end) return { dx: 1, dy: 0 };\n if (code === KeynavCode.PageUp) return { dx: 0, dy: -4 };\n if (code === KeynavCode.PageDown) return { dx: 0, dy: 4 };\n return null;\n}\n\nfunction applyGridHomeEnd(\n code: KeynavCode | string,\n position: { x: number; y: number },\n bounds: { columnCount: number; rowCount: number; ctrlKey: boolean }\n) {\n const { x, y } = position;\n const { columnCount, rowCount, ctrlKey } = bounds;\n if (code === KeynavCode.End) {\n return { x: columnCount, y: ctrlKey ? rowCount : y };\n }\n\n if (code === KeynavCode.Home) {\n return { x: 0, y: ctrlKey ? 0 : y };\n }\n\n return { x, y };\n}\n\nexport function getNextKeyGridItem(\n cells: HTMLElement[],\n rows: HTMLElement[],\n config: { code: KeynavCode | string; ctrlKey: boolean; dir: string }\n) {\n const currentCell = cells.find(i => i.tabIndex === 0) as HTMLElement;\n const currentRow = rows.find(r => getFlattenedDOMTree(r).find(c => c === currentCell)) as HTMLElement;\n const currentRowCells = Array.from(getFlattenedDOMTree(currentRow)).filter(c => !!cells.find(i => i === c));\n const rowCount = rows.length - 1;\n const columnCount = currentRowCells.length - 1;\n\n let x = currentRowCells.indexOf(currentCell);\n let y = rows.indexOf(currentRow);\n\n const delta = getGridDelta(config.code, config.dir);\n if (delta) {\n x = Math.max(0, Math.min(columnCount, x + delta.dx));\n y = Math.max(0, Math.min(rowCount, y + delta.dy));\n } else {\n ({ x, y } = applyGridHomeEnd(config.code, { x, y }, { columnCount, rowCount, ctrlKey: config.ctrlKey }));\n }\n\n return { x, y };\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { getIdMatchNotFoundWarning as e } from "../utils/audit-logs.js";
2
- import { LogService as t } from "../services/log.service.js";
1
+ import { LogService as e } from "../services/log.service.js";
2
+ import { getIdMatchNotFoundWarning as t } from "../utils/audit-logs.js";
3
3
  import { getFlattenedDOMTree as n } from "../utils/dom.js";
4
4
  //#region src/internal/controllers/type-native-popover.utils.ts
5
5
  function r(e, t) {
@@ -9,7 +9,7 @@ function i(r) {
9
9
  let i = r.anchor ?? r._activeTrigger;
10
10
  if (typeof i == "string" && i?.length) {
11
11
  let a = n(r.parentNode).find((e) => e.id === i);
12
- return a || t.warn(e(i)), a ?? globalThis.document.body;
12
+ return a || e.warn(t(i)), a ?? globalThis.document.body;
13
13
  }
14
14
  return i && i !== globalThis.document.body ? i : globalThis.document.body;
15
15
  }
@@ -1,6 +1,6 @@
1
- import { getSSRMismatchWarning as e } from "../utils/audit-logs.js";
2
- import { getEnv as t } from "../services/global.utils.js";
3
- import { LogService as n } from "../services/log.service.js";
1
+ import { LogService as e } from "../services/log.service.js";
2
+ import { getSSRMismatchWarning as t } from "../utils/audit-logs.js";
3
+ import { getEnv as n } from "@nvidia-elements/foundations/internal/state";
4
4
  import { render as r } from "lit";
5
5
  //#region src/internal/controllers/type-ssr.controller.ts
6
6
  function i(e = { log: !0 }) {
@@ -15,7 +15,7 @@ var a = class {
15
15
  o.call(i);
16
16
  } catch {
17
17
  let o = i.renderRoot;
18
- o.innerHTML = o.innerHTML.split("<!--lit-part ")[0], r(i.render(), o, i.renderOptions), t() !== "production" && a.log && n.warn(e(i.localName));
18
+ o.innerHTML = o.innerHTML.split("<!--lit-part ")[0], r(i.render(), o, i.renderOptions), n() !== "production" && a.log && e.warn(t(i.localName));
19
19
  }
20
20
  return o;
21
21
  } });
@@ -1 +1 @@
1
- {"version":3,"file":"type-ssr.controller.js","names":[],"sources":["../../../src/internal/controllers/type-ssr.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement, RenderOptions, TemplateResult } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { render } from 'lit';\nimport { LogService } from '../services/log.service.js';\nimport { getSSRMismatchWarning } from '../utils/audit-logs.js';\nimport { getEnv } from '../services/global.utils.js';\n\ntype UnprotectedLitElement = ReactiveElement & {\n update: () => void;\n render: () => TemplateResult;\n renderOptions: RenderOptions;\n _internals?: ElementInternals;\n};\n\n/**\n * Catch and manage hydration related fallbacks for SSR\n */\nexport function typeSSR<T extends UnprotectedLitElement>(options: { log?: boolean } = { log: true }): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!(\n (instance: T & { _internals: ElementInternals }) => new TypeSSRController(instance, options)\n );\n}\n\nexport class TypeSSRController<T extends ReactiveElement> implements ReactiveController {\n // https://www.konnorrogers.com/posts/2024/running-lit-ssr-in-web-awesome#hydration-errors\n didSSR = Boolean(this.host.shadowRoot);\n\n constructor(\n private host: T & UnprotectedLitElement,\n private options: { log?: boolean }\n ) {\n this.host.addController(this);\n\n // https://github.com/lit/lit/issues/1434#issuecomment-1598332000\n if (this.didSSR) {\n const controllerOptions = this.options;\n const updateOriginal = host.update;\n Object.defineProperty(host, 'update', {\n value: function () {\n try {\n updateOriginal.call(host);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_) {\n const renderRoot = host.renderRoot as HTMLElement;\n renderRoot.innerHTML = renderRoot.innerHTML.split('<!--lit-part ')[0]!;\n render(host.render(), renderRoot, host.renderOptions);\n\n if (getEnv() !== 'production' && controllerOptions.log) {\n LogService.warn(getSSRMismatchWarning(host.localName));\n }\n }\n return updateOriginal;\n }\n });\n }\n }\n\n #firstUpdate = true;\n hostUpdated() {\n // https://github.com/lit/lit/discussions/4697\n // https://github.com/w3c/csswg-drafts/issues/6867#issuecomment-1599444407\n if (this.didSSR && this.#firstUpdate) {\n this.#firstUpdate = false;\n this.host.shadowRoot?.querySelectorAll('slot').forEach(slotElement => {\n slotElement.dispatchEvent(new Event('slotchange', { bubbles: true, composed: false, cancelable: false }));\n });\n\n // if SSR reflect role attribute to host\n if (this.host._internals?.role) {\n this.host.setAttribute('role', this.host._internals.role);\n }\n }\n }\n}\n"],"mappings":";;;;;AAoBA,SAAgB,EAAyC,IAA6B,EAAE,KAAK,GAAK,GAAmB;CACnH,QAAQ,MACN,EAAO,gBACJ,MAAmD,IAAI,EAAkB,GAAU,CAAO,CAC7F;AACJ;AAEA,IAAa,IAAb,MAAwF;CAItF,YACE,GACA,GACA;EAIA,IANQ,KAAA,OAAA,GACA,KAAA,UAAA,GAJD,KAAA,SAAA,EAAQ,KAAK,KAAK,YAgCZ,KAAA,KAAA,IA1Bb,KAAK,KAAK,cAAc,IAAI,GAGxB,KAAK,QAAQ;GACf,IAAM,IAAoB,KAAK,SACzB,IAAiB,EAAK;GAC5B,OAAO,eAAe,GAAM,UAAU,EACpC,OAAO,WAAY;IACjB,IAAI;KACF,EAAe,KAAK,CAAI;IAE1B,QAAY;KACV,IAAM,IAAa,EAAK;KAIxB,AAHA,EAAW,YAAY,EAAW,UAAU,MAAM,eAAe,CAAC,CAAC,IACnE,EAAO,EAAK,OAAO,GAAG,GAAY,EAAK,aAAa,GAEhD,EAAO,MAAM,gBAAgB,EAAkB,OACjD,EAAW,KAAK,EAAsB,EAAK,SAAS,CAAC;IAEzD;IACA,OAAO;GACT,EACF,CAAC;EACH;CACF;CAEA;CACA,cAAc;EAGZ,AAAI,KAAK,UAAU,KAAK,OACtB,KAAK,KAAe,IACpB,KAAK,KAAK,YAAY,iBAAiB,MAAM,CAAC,CAAC,SAAQ,MAAe;GACpE,EAAY,cAAc,IAAI,MAAM,cAAc;IAAE,SAAS;IAAM,UAAU;IAAO,YAAY;GAAM,CAAC,CAAC;EAC1G,CAAC,GAGG,KAAK,KAAK,YAAY,QACxB,KAAK,KAAK,aAAa,QAAQ,KAAK,KAAK,WAAW,IAAI;CAG9D;AACF"}
1
+ {"version":3,"file":"type-ssr.controller.js","names":[],"sources":["../../../src/internal/controllers/type-ssr.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement, RenderOptions, TemplateResult } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { render } from 'lit';\nimport { LogService } from '../services/log.service.js';\nimport { getSSRMismatchWarning } from '../utils/audit-logs.js';\nimport { getEnv } from '@nvidia-elements/foundations/internal/state';\n\ntype UnprotectedLitElement = ReactiveElement & {\n update: () => void;\n render: () => TemplateResult;\n renderOptions: RenderOptions;\n _internals?: ElementInternals;\n};\n\n/**\n * Catch and manage hydration related fallbacks for SSR\n */\nexport function typeSSR<T extends UnprotectedLitElement>(options: { log?: boolean } = { log: true }): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!(\n (instance: T & { _internals: ElementInternals }) => new TypeSSRController(instance, options)\n );\n}\n\nexport class TypeSSRController<T extends ReactiveElement> implements ReactiveController {\n // https://www.konnorrogers.com/posts/2024/running-lit-ssr-in-web-awesome#hydration-errors\n didSSR = Boolean(this.host.shadowRoot);\n\n constructor(\n private host: T & UnprotectedLitElement,\n private options: { log?: boolean }\n ) {\n this.host.addController(this);\n\n // https://github.com/lit/lit/issues/1434#issuecomment-1598332000\n if (this.didSSR) {\n const controllerOptions = this.options;\n const updateOriginal = host.update;\n Object.defineProperty(host, 'update', {\n value: function () {\n try {\n updateOriginal.call(host);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_) {\n const renderRoot = host.renderRoot as HTMLElement;\n renderRoot.innerHTML = renderRoot.innerHTML.split('<!--lit-part ')[0]!;\n render(host.render(), renderRoot, host.renderOptions);\n\n if (getEnv() !== 'production' && controllerOptions.log) {\n LogService.warn(getSSRMismatchWarning(host.localName));\n }\n }\n return updateOriginal;\n }\n });\n }\n }\n\n #firstUpdate = true;\n hostUpdated() {\n // https://github.com/lit/lit/discussions/4697\n // https://github.com/w3c/csswg-drafts/issues/6867#issuecomment-1599444407\n if (this.didSSR && this.#firstUpdate) {\n this.#firstUpdate = false;\n this.host.shadowRoot?.querySelectorAll('slot').forEach(slotElement => {\n slotElement.dispatchEvent(new Event('slotchange', { bubbles: true, composed: false, cancelable: false }));\n });\n\n // if SSR reflect role attribute to host\n if (this.host._internals?.role) {\n this.host.setAttribute('role', this.host._internals.role);\n }\n }\n }\n}\n"],"mappings":";;;;;AAoBA,SAAgB,EAAyC,IAA6B,EAAE,KAAK,GAAK,GAAmB;CACnH,QAAQ,MACN,EAAO,gBACJ,MAAmD,IAAI,EAAkB,GAAU,CAAO,CAC7F;AACJ;AAEA,IAAa,IAAb,MAAwF;CAItF,YACE,GACA,GACA;EAIA,IANQ,KAAA,OAAA,GACA,KAAA,UAAA,GAJD,KAAA,SAAA,EAAQ,KAAK,KAAK,YAgCZ,KAAA,KAAA,IA1Bb,KAAK,KAAK,cAAc,IAAI,GAGxB,KAAK,QAAQ;GACf,IAAM,IAAoB,KAAK,SACzB,IAAiB,EAAK;GAC5B,OAAO,eAAe,GAAM,UAAU,EACpC,OAAO,WAAY;IACjB,IAAI;KACF,EAAe,KAAK,CAAI;IAE1B,QAAY;KACV,IAAM,IAAa,EAAK;KAIxB,AAHA,EAAW,YAAY,EAAW,UAAU,MAAM,eAAe,CAAC,CAAC,IACnE,EAAO,EAAK,OAAO,GAAG,GAAY,EAAK,aAAa,GAEhD,EAAO,MAAM,gBAAgB,EAAkB,OACjD,EAAW,KAAK,EAAsB,EAAK,SAAS,CAAC;IAEzD;IACA,OAAO;GACT,EACF,CAAC;EACH;CACF;CAEA;CACA,cAAc;EAGZ,AAAI,KAAK,UAAU,KAAK,OACtB,KAAK,KAAe,IACpB,KAAK,KAAK,YAAY,iBAAiB,MAAM,CAAC,CAAC,SAAQ,MAAe;GACpE,EAAY,cAAc,IAAI,MAAM,cAAc;IAAE,SAAS;IAAM,UAAU;IAAO,YAAY;GAAM,CAAC,CAAC;EAC1G,CAAC,GAGG,KAAK,KAAK,YAAY,QACxB,KAAK,KAAK,aAAa,QAAQ,KAAK,KAAK,WAAW,IAAI;CAG9D;AACF"}
@@ -1,5 +1,5 @@
1
- import { GlobalStateService as e } from "../services/global.service.js";
2
- import { defineElement as t, supportsScopedRegistry as n } from "../utils/dom.js";
1
+ import { GlobalStateService as e } from "@nvidia-elements/foundations/internal/state";
2
+ import { defineElement as t, supportsScopedRegistry as n } from "@nvidia-elements/foundations/internal/define";
3
3
  //#region src/internal/decorators/scoped-registry.ts
4
4
  var r = /* @__PURE__ */ new WeakSet();
5
5
  function i(e, t) {
@@ -21,9 +21,7 @@ function a(e, t) {
21
21
  }
22
22
  function o() {
23
23
  return (r) => {
24
- let i = r;
25
- e.state.scopedRegistry ??= {};
26
- let o = e.state.scopedRegistry[i.metadata.version] ?? customElements;
24
+ let i = r, o = e.getScopedRegistry(i.metadata.version);
27
25
  n && (Object.defineProperty(i, "shadowRootOptions", {
28
26
  configurable: !0,
29
27
  value: {
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-registry.js","names":[],"sources":["../../../src/internal/decorators/scoped-registry.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { RenderOptions } from 'lit';\nimport { GlobalStateService } from '../services/global.service.js';\nimport type { ElementDefinition, LegacyDecoratorTarget } from '../types/index.js';\nimport { defineElement, supportsScopedRegistry } from '../utils/dom.js';\n\ninterface ScopedRegistryHost extends HTMLElement {\n createRenderRoot?: () => HTMLElement | DocumentFragment;\n renderOptions?: RenderOptions;\n}\n\nconst litCreationScopeElements = new WeakSet<ElementDefinition>();\n\n/** Lit passes a legacy `deep` boolean, but scoped registries require `ImportNodeOptions`. https://html.spec.whatwg.org/multipage/custom-elements.html#scoped-custom-element-registries */\nfunction createScopedCreationScope(ownerDocument: Document, customElementRegistry: CustomElementRegistry) {\n return {\n importNode: (node: Node, deep = false) =>\n ownerDocument.importNode(node, {\n customElementRegistry,\n selfOnly: !deep\n })\n } satisfies NonNullable<RenderOptions['creationScope']>;\n}\n\nfunction attachLitCreationScope(element: ElementDefinition, customElementRegistry: CustomElementRegistry) {\n if (litCreationScopeElements.has(element)) return;\n\n const host = element.prototype as ScopedRegistryHost;\n const createRenderRoot = host.createRenderRoot;\n if (!createRenderRoot) return;\n\n litCreationScopeElements.add(element);\n Object.defineProperty(host, 'createRenderRoot', {\n configurable: true,\n value(this: ScopedRegistryHost) {\n const renderRoot = createRenderRoot.call(this);\n if (renderRoot instanceof ShadowRoot) {\n this.renderOptions ??= {};\n this.renderOptions.creationScope = createScopedCreationScope(renderRoot.ownerDocument, customElementRegistry);\n }\n return renderRoot;\n }\n });\n}\n\n/** decorator which registers element dependencies with the scoped custom element registry when available */\nexport function scopedRegistry(): ClassDecorator {\n return (target: LegacyDecoratorTarget) => {\n const element = target as unknown as ElementDefinition;\n GlobalStateService.state.scopedRegistry ??= {};\n const customElementRegistry = GlobalStateService.state.scopedRegistry[element.metadata.version] ?? customElements;\n if (supportsScopedRegistry) {\n Object.defineProperty(element, 'shadowRootOptions', {\n configurable: true,\n value: { ...(element.shadowRootOptions ?? { mode: 'open' }), customElementRegistry }\n });\n attachLitCreationScope(element, customElementRegistry);\n }\n defineElement(element, customElementRegistry);\n };\n}\n"],"mappings":";;;AAaA,IAAM,oBAA2B,IAAI,QAA2B;AAGhE,SAAS,EAA0B,GAAyB,GAA8C;CACxG,OAAO,EACL,aAAa,GAAY,IAAO,OAC9B,EAAc,WAAW,GAAM;EAC7B;EACA,UAAU,CAAC;CACb,CAAC,EACL;AACF;AAEA,SAAS,EAAuB,GAA4B,GAA8C;CACxG,IAAI,EAAyB,IAAI,CAAO,GAAG;CAE3C,IAAM,IAAO,EAAQ,WACf,IAAmB,EAAK;CACzB,MAEL,EAAyB,IAAI,CAAO,GACpC,OAAO,eAAe,GAAM,oBAAoB;EAC9C,cAAc;EACd,QAAgC;GAC9B,IAAM,IAAa,EAAiB,KAAK,IAAI;GAK7C,OAJI,aAAsB,eACxB,KAAK,kBAAkB,CAAC,GACxB,KAAK,cAAc,gBAAgB,EAA0B,EAAW,eAAe,CAAqB,IAEvG;EACT;CACF,CAAC;AACH;AAGA,SAAgB,IAAiC;CAC/C,QAAQ,MAAkC;EACxC,IAAM,IAAU;EAChB,EAAmB,MAAM,mBAAmB,CAAC;EAC7C,IAAM,IAAwB,EAAmB,MAAM,eAAe,EAAQ,SAAS,YAAY;EAQnG,AAPI,MACF,OAAO,eAAe,GAAS,qBAAqB;GAClD,cAAc;GACd,OAAO;IAAE,GAAI,EAAQ,qBAAqB,EAAE,MAAM,OAAO;IAAI;GAAsB;EACrF,CAAC,GACD,EAAuB,GAAS,CAAqB,IAEvD,EAAc,GAAS,CAAqB;CAC9C;AACF"}
1
+ {"version":3,"file":"scoped-registry.js","names":[],"sources":["../../../src/internal/decorators/scoped-registry.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { RenderOptions } from 'lit';\nimport { GlobalStateService } from '@nvidia-elements/foundations/internal/state';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport type { ElementDefinition } from '@nvidia-elements/foundations/internal/define';\nimport { defineElement, supportsScopedRegistry } from '@nvidia-elements/foundations/internal/define';\n\ninterface ScopedRegistryHost extends HTMLElement {\n createRenderRoot?: () => HTMLElement | DocumentFragment;\n renderOptions?: RenderOptions;\n}\n\nconst litCreationScopeElements = new WeakSet<ElementDefinition>();\n\n/** Lit passes a legacy `deep` boolean, but scoped registries require `ImportNodeOptions`. https://html.spec.whatwg.org/multipage/custom-elements.html#scoped-custom-element-registries */\nfunction createScopedCreationScope(ownerDocument: Document, customElementRegistry: CustomElementRegistry) {\n return {\n importNode: (node: Node, deep = false) =>\n ownerDocument.importNode(node, {\n customElementRegistry,\n selfOnly: !deep\n })\n } satisfies NonNullable<RenderOptions['creationScope']>;\n}\n\nfunction attachLitCreationScope(element: ElementDefinition, customElementRegistry: CustomElementRegistry) {\n if (litCreationScopeElements.has(element)) return;\n\n const host = element.prototype as ScopedRegistryHost;\n const createRenderRoot = host.createRenderRoot;\n if (!createRenderRoot) return;\n\n litCreationScopeElements.add(element);\n Object.defineProperty(host, 'createRenderRoot', {\n configurable: true,\n value(this: ScopedRegistryHost) {\n const renderRoot = createRenderRoot.call(this);\n if (renderRoot instanceof ShadowRoot) {\n this.renderOptions ??= {};\n this.renderOptions.creationScope = createScopedCreationScope(renderRoot.ownerDocument, customElementRegistry);\n }\n return renderRoot;\n }\n });\n}\n\n/** decorator which registers element dependencies with the scoped custom element registry when available */\nexport function scopedRegistry(): ClassDecorator {\n return (target: LegacyDecoratorTarget) => {\n const element = target as unknown as ElementDefinition;\n const customElementRegistry = GlobalStateService.getScopedRegistry(element.metadata.version);\n if (supportsScopedRegistry) {\n Object.defineProperty(element, 'shadowRootOptions', {\n configurable: true,\n value: { ...(element.shadowRootOptions ?? { mode: 'open' }), customElementRegistry }\n });\n attachLitCreationScope(element, customElementRegistry);\n }\n defineElement(element, customElementRegistry);\n };\n}\n"],"mappings":";;;AAcA,IAAM,oBAA2B,IAAI,QAA2B;AAGhE,SAAS,EAA0B,GAAyB,GAA8C;CACxG,OAAO,EACL,aAAa,GAAY,IAAO,OAC9B,EAAc,WAAW,GAAM;EAC7B;EACA,UAAU,CAAC;CACb,CAAC,EACL;AACF;AAEA,SAAS,EAAuB,GAA4B,GAA8C;CACxG,IAAI,EAAyB,IAAI,CAAO,GAAG;CAE3C,IAAM,IAAO,EAAQ,WACf,IAAmB,EAAK;CACzB,MAEL,EAAyB,IAAI,CAAO,GACpC,OAAO,eAAe,GAAM,oBAAoB;EAC9C,cAAc;EACd,QAAgC;GAC9B,IAAM,IAAa,EAAiB,KAAK,IAAI;GAK7C,OAJI,aAAsB,eACxB,KAAK,kBAAkB,CAAC,GACxB,KAAK,cAAc,gBAAgB,EAA0B,EAAW,eAAe,CAAqB,IAEvG;EACT;CACF,CAAC;AACH;AAGA,SAAgB,IAAiC;CAC/C,QAAQ,MAAkC;EACxC,IAAM,IAAU,GACV,IAAwB,EAAmB,kBAAkB,EAAQ,SAAS,OAAO;EAQ3F,AAPI,MACF,OAAO,eAAe,GAAS,qBAAqB;GAClD,cAAc;GACd,OAAO;IAAE,GAAI,EAAQ,qBAAqB,EAAE,MAAM,OAAO;IAAI;GAAsB;EACrF,CAAC,GACD,EAAuB,GAAS,CAAqB,IAEvD,EAAc,GAAS,CAAqB;CAC9C;AACF"}
@@ -22,7 +22,6 @@ export * from './decorators/host-attr.js';
22
22
  export * from './decorators/scoped-registry.js';
23
23
  export * from './styles/index.js';
24
24
  export * from './styles/popover.js';
25
- export * from './services/global.service.js';
26
25
  export * from './services/i18n.service.js';
27
26
  export * from './services/log.service.js';
28
27
  export * from './services/transition.service.js';
@@ -1,37 +1,36 @@
1
- import { DOCS_URL as e, formatFileSize as t, shiftLeft as n } from "./utils/strings.js";
2
- import { deepMerge as r, formatStandardNumber as i, getDifference as a, isObject as o, isObjectLiteral as s, parseVersion as c } from "./utils/objects.js";
3
- import { GlobalState as l, GlobalStateService as u } from "./services/global.service.js";
4
- import { LogService as d } from "./services/log.service.js";
5
- import { auditParentElement as f } from "./utils/audit.js";
6
- import { AuditController as p, audit as m, excessiveInstanceLimit as h } from "./controllers/audit.controller.js";
7
- import { GestureController as g } from "./controllers/gesture.controller.js";
8
- import { I18nService as _, I18nService_ as v } from "./services/i18n.service.js";
9
- import { I18nController as y, i18n as b } from "./controllers/i18n.controller.js";
10
- import { KeyStateController as x } from "./controllers/key-state.controller.js";
11
- import { debounce as S, onChildListMutation as C, stopEvent as w, throttle as T } from "./utils/events.js";
12
- import { focusElement as E, focusElementTimeout as D, getActiveElement as O, initializeKeyListItems as k, isFocusable as A, isImmediateRootActiveElement as j, isSimpleFocusable as M, onListboxActivate as N, setActiveKeyListItem as P } from "./utils/focus.js";
13
- import { KeynavCode as F, appendAnchorName as I, appendRootNodeStyle as L, applySlotContentStates as R, clickOutsideElementBounds as z, createGhostElement as B, define as V, defineElement as H, endOfScrollBox as U, generateId as W, getAnchorNames as G, getAttributeChanges as K, getAttributeListChanges as q, getChildren as J, getCustomElementRegistry as Y, getDisplayValue as X, getElementUpdate as Z, getFlattenedDOMTree as Q, getFlattenedFocusableItems as $, getPropertyChanges as ee, getThemeTokens as te, hasHorizontalScrollBar as ne, hasInvalidDOMGrid as re, hasScrollBar as ie, isContextMenuClick as ae, matchesElementName as oe, openEyeDropper as se, parseTokenNumber as ce, removeAnchorName as le, removeEmptySlotWhitespace as ue, removeEmptyTextNode as de, sameOrderedStringArray as fe, sameRenderRoot as pe, scrollBarWidth as me, slotContainsOnlyWhitespace as he, styleSheetToString as ge, supportsScopedRegistry as _e, uniqueNonEmptyStrings as ve, validKeyNavigationCode as ye } from "./utils/dom.js";
14
- import { KeyNavigationGridController as be, getNextKeyGridItem as xe, keyNavigationGrid as Se } from "./controllers/keynav-grid.controller.js";
15
- import { KeyNavigationListController as Ce, getNextKeyListItem as we, keyNavigationList as Te } from "./controllers/keynav-list.controller.js";
16
- import { KeyNavigationSpatialController as Ee } from "./controllers/keynav-spatial.controller.js";
17
- import { associateAriaDescribedBy as De, associateAriaLabel as Oe, associateControlGroup as ke, associateDataList as Ae, associateLabel as je, attachInternals as Me } from "./utils/a11y.js";
18
- import { StateExpandedController as Ne, stateExpanded as Pe } from "./controllers/state-expanded.controller.js";
19
- import { StateHighlightedController as Fe, stateHighlighted as Ie } from "./controllers/state-highlighted.controller.js";
20
- import { StateScrollController as Le, stateScroll as Re } from "./controllers/state-scroll.controller.js";
21
- import { StateSelectedController as ze, stateSelected as Be } from "./controllers/state-selected.controller.js";
22
- import { TypeAnchorController as Ve, typeAnchor as He } from "./controllers/type-anchor.controller.js";
23
- import { TypeClosableController as Ue } from "./controllers/type-closable.controller.js";
24
- import { TypeExpandableController as We } from "./controllers/type-expandable.controller.js";
25
- import { TypeSelectableController as Ge } from "./controllers/type-selectable.controller.js";
26
- import { TypeNativePopoverController as Ke } from "./controllers/type-native-popover.controller.js";
27
- import { TypeSSRController as qe, typeSSR as Je } from "./controllers/type-ssr.controller.js";
28
- import { hostAttr as Ye } from "./decorators/host-attr.js";
29
- import { scopedRegistry as Xe } from "./decorators/scoped-registry.js";
30
- import { colorStateStyles as Ze, statusStateStyles as Qe, supportStateStyles as $e, useStyles as et } from "./styles/index.js";
31
- import { supportsCSSLegacyInsetArea as tt, supportsCSSPositionArea as nt, supportsNativeCSSAnchorPosition as rt } from "./utils/supports.js";
32
- import { popoverStyles as it } from "./styles/popover2.js";
33
- import { TransitionService as at } from "./services/transition.service.js";
34
- import { statusIcons as ot } from "./types/index.js";
35
- import { createLightDismiss as st, onKeys as ct } from "./utils/keynav.js";
36
- import { finiteOr as lt, nonnegativeFiniteOr as ut, positiveFiniteOr as dt } from "./utils/numeric.js";
37
- export { p as AuditController, e as DOCS_URL, g as GestureController, l as GlobalState, u as GlobalStateService, y as I18nController, _ as I18nService, v as I18nService_, be as KeyNavigationGridController, Ce as KeyNavigationListController, Ee as KeyNavigationSpatialController, x as KeyStateController, F as KeynavCode, d as LogService, Ne as StateExpandedController, Fe as StateHighlightedController, Le as StateScrollController, ze as StateSelectedController, at as TransitionService, Ve as TypeAnchorController, Ue as TypeClosableController, We as TypeExpandableController, Ke as TypeNativePopoverController, qe as TypeSSRController, Ge as TypeSelectableController, I as appendAnchorName, L as appendRootNodeStyle, R as applySlotContentStates, De as associateAriaDescribedBy, Oe as associateAriaLabel, ke as associateControlGroup, Ae as associateDataList, je as associateLabel, Me as attachInternals, m as audit, f as auditParentElement, z as clickOutsideElementBounds, Ze as colorStateStyles, B as createGhostElement, st as createLightDismiss, S as debounce, r as deepMerge, V as define, H as defineElement, U as endOfScrollBox, h as excessiveInstanceLimit, lt as finiteOr, E as focusElement, D as focusElementTimeout, t as formatFileSize, i as formatStandardNumber, W as generateId, O as getActiveElement, G as getAnchorNames, K as getAttributeChanges, q as getAttributeListChanges, J as getChildren, Y as getCustomElementRegistry, a as getDifference, X as getDisplayValue, Z as getElementUpdate, Q as getFlattenedDOMTree, $ as getFlattenedFocusableItems, xe as getNextKeyGridItem, we as getNextKeyListItem, ee as getPropertyChanges, te as getThemeTokens, ne as hasHorizontalScrollBar, re as hasInvalidDOMGrid, ie as hasScrollBar, Ye as hostAttr, b as i18n, k as initializeKeyListItems, ae as isContextMenuClick, A as isFocusable, j as isImmediateRootActiveElement, o as isObject, s as isObjectLiteral, M as isSimpleFocusable, Se as keyNavigationGrid, Te as keyNavigationList, oe as matchesElementName, ut as nonnegativeFiniteOr, C as onChildListMutation, ct as onKeys, N as onListboxActivate, se as openEyeDropper, ce as parseTokenNumber, c as parseVersion, it as popoverStyles, dt as positiveFiniteOr, le as removeAnchorName, ue as removeEmptySlotWhitespace, de as removeEmptyTextNode, fe as sameOrderedStringArray, pe as sameRenderRoot, Xe as scopedRegistry, me as scrollBarWidth, P as setActiveKeyListItem, n as shiftLeft, he as slotContainsOnlyWhitespace, Pe as stateExpanded, Ie as stateHighlighted, Re as stateScroll, Be as stateSelected, ot as statusIcons, Qe as statusStateStyles, w as stopEvent, ge as styleSheetToString, $e as supportStateStyles, tt as supportsCSSLegacyInsetArea, nt as supportsCSSPositionArea, rt as supportsNativeCSSAnchorPosition, _e as supportsScopedRegistry, T as throttle, He as typeAnchor, Je as typeSSR, ve as uniqueNonEmptyStrings, et as useStyles, ye as validKeyNavigationCode };
1
+ import { LogService as e } from "./services/log.service.js";
2
+ import { auditParentElement as t } from "./utils/audit.js";
3
+ import { DOCS_URL as n, formatFileSize as r, shiftLeft as i } from "./utils/strings.js";
4
+ import { AuditController as a, audit as o, excessiveInstanceLimit as s } from "./controllers/audit.controller.js";
5
+ import { GestureController as c } from "./controllers/gesture.controller.js";
6
+ import { I18nService as l, I18nService_ as u } from "./services/i18n.service.js";
7
+ import { I18nController as d, i18n as f } from "./controllers/i18n.controller.js";
8
+ import { KeyStateController as p } from "./controllers/key-state.controller.js";
9
+ import { debounce as m, onChildListMutation as h, stopEvent as g, throttle as _ } from "./utils/events.js";
10
+ import { focusElement as v, focusElementTimeout as y, getActiveElement as b, initializeKeyListItems as x, isFocusable as S, isImmediateRootActiveElement as C, isSimpleFocusable as w, onListboxActivate as T, setActiveKeyListItem as E } from "./utils/focus.js";
11
+ import { KeynavCode as D, appendAnchorName as O, appendRootNodeStyle as k, applySlotContentStates as A, clickOutsideElementBounds as j, createGhostElement as M, endOfScrollBox as N, generateId as P, getAnchorNames as F, getAttributeChanges as I, getAttributeListChanges as L, getChildren as R, getCustomElementRegistry as z, getDisplayValue as B, getElementUpdate as V, getFlattenedDOMTree as H, getFlattenedFocusableItems as U, getPropertyChanges as W, getThemeTokens as G, hasHorizontalScrollBar as K, hasInvalidDOMGrid as q, hasScrollBar as J, isContextMenuClick as Y, matchesElementName as X, openEyeDropper as Z, parseTokenNumber as Q, removeAnchorName as $, removeEmptySlotWhitespace as ee, removeEmptyTextNode as te, sameOrderedStringArray as ne, sameRenderRoot as re, scrollBarWidth as ie, slotContainsOnlyWhitespace as ae, styleSheetToString as oe, uniqueNonEmptyStrings as se, validKeyNavigationCode as ce } from "./utils/dom.js";
12
+ import { KeyNavigationGridController as le, getNextKeyGridItem as ue, keyNavigationGrid as de } from "./controllers/keynav-grid.controller.js";
13
+ import { KeyNavigationListController as fe, getNextKeyListItem as pe, keyNavigationList as me } from "./controllers/keynav-list.controller.js";
14
+ import { KeyNavigationSpatialController as he } from "./controllers/keynav-spatial.controller.js";
15
+ import { associateAriaDescribedBy as ge, associateAriaLabel as _e, associateControlGroup as ve, associateDataList as ye, associateLabel as be, attachInternals as xe } from "./utils/a11y.js";
16
+ import { StateExpandedController as Se, stateExpanded as Ce } from "./controllers/state-expanded.controller.js";
17
+ import { StateHighlightedController as we, stateHighlighted as Te } from "./controllers/state-highlighted.controller.js";
18
+ import { StateScrollController as Ee, stateScroll as De } from "./controllers/state-scroll.controller.js";
19
+ import { StateSelectedController as Oe, stateSelected as ke } from "./controllers/state-selected.controller.js";
20
+ import { TypeAnchorController as Ae, typeAnchor as je } from "./controllers/type-anchor.controller.js";
21
+ import { TypeClosableController as Me } from "./controllers/type-closable.controller.js";
22
+ import { TypeExpandableController as Ne } from "./controllers/type-expandable.controller.js";
23
+ import { TypeSelectableController as Pe } from "./controllers/type-selectable.controller.js";
24
+ import { TypeNativePopoverController as Fe } from "./controllers/type-native-popover.controller.js";
25
+ import { TypeSSRController as Ie, typeSSR as Le } from "./controllers/type-ssr.controller.js";
26
+ import { hostAttr as Re } from "./decorators/host-attr.js";
27
+ import { scopedRegistry as ze } from "./decorators/scoped-registry.js";
28
+ import { colorStateStyles as Be, statusStateStyles as Ve, supportStateStyles as He, useStyles as Ue } from "./styles/index.js";
29
+ import { supportsCSSLegacyInsetArea as We, supportsCSSPositionArea as Ge, supportsNativeCSSAnchorPosition as Ke } from "./utils/supports.js";
30
+ import { popoverStyles as qe } from "./styles/popover2.js";
31
+ import { TransitionService as Je } from "./services/transition.service.js";
32
+ import { statusIcons as Ye } from "./types/index.js";
33
+ import { formatStandardNumber as Xe, getDifference as Ze, isObject as Qe, parseVersion as $e } from "./utils/objects.js";
34
+ import { createLightDismiss as et, onKeys as tt } from "./utils/keynav.js";
35
+ import { finiteOr as nt, nonnegativeFiniteOr as rt, positiveFiniteOr as it } from "./utils/numeric.js";
36
+ export { a as AuditController, n as DOCS_URL, c as GestureController, d as I18nController, l as I18nService, u as I18nService_, le as KeyNavigationGridController, fe as KeyNavigationListController, he as KeyNavigationSpatialController, p as KeyStateController, D as KeynavCode, e as LogService, Se as StateExpandedController, we as StateHighlightedController, Ee as StateScrollController, Oe as StateSelectedController, Je as TransitionService, Ae as TypeAnchorController, Me as TypeClosableController, Ne as TypeExpandableController, Fe as TypeNativePopoverController, Ie as TypeSSRController, Pe as TypeSelectableController, O as appendAnchorName, k as appendRootNodeStyle, A as applySlotContentStates, ge as associateAriaDescribedBy, _e as associateAriaLabel, ve as associateControlGroup, ye as associateDataList, be as associateLabel, xe as attachInternals, o as audit, t as auditParentElement, j as clickOutsideElementBounds, Be as colorStateStyles, M as createGhostElement, et as createLightDismiss, m as debounce, N as endOfScrollBox, s as excessiveInstanceLimit, nt as finiteOr, v as focusElement, y as focusElementTimeout, r as formatFileSize, Xe as formatStandardNumber, P as generateId, b as getActiveElement, F as getAnchorNames, I as getAttributeChanges, L as getAttributeListChanges, R as getChildren, z as getCustomElementRegistry, Ze as getDifference, B as getDisplayValue, V as getElementUpdate, H as getFlattenedDOMTree, U as getFlattenedFocusableItems, ue as getNextKeyGridItem, pe as getNextKeyListItem, W as getPropertyChanges, G as getThemeTokens, K as hasHorizontalScrollBar, q as hasInvalidDOMGrid, J as hasScrollBar, Re as hostAttr, f as i18n, x as initializeKeyListItems, Y as isContextMenuClick, S as isFocusable, C as isImmediateRootActiveElement, Qe as isObject, w as isSimpleFocusable, de as keyNavigationGrid, me as keyNavigationList, X as matchesElementName, rt as nonnegativeFiniteOr, h as onChildListMutation, tt as onKeys, T as onListboxActivate, Z as openEyeDropper, Q as parseTokenNumber, $e as parseVersion, qe as popoverStyles, it as positiveFiniteOr, $ as removeAnchorName, ee as removeEmptySlotWhitespace, te as removeEmptyTextNode, ne as sameOrderedStringArray, re as sameRenderRoot, ze as scopedRegistry, ie as scrollBarWidth, E as setActiveKeyListItem, i as shiftLeft, ae as slotContainsOnlyWhitespace, Ce as stateExpanded, Te as stateHighlighted, De as stateScroll, ke as stateSelected, Ye as statusIcons, Ve as statusStateStyles, g as stopEvent, oe as styleSheetToString, He as supportStateStyles, We as supportsCSSLegacyInsetArea, Ge as supportsCSSPositionArea, Ke as supportsNativeCSSAnchorPosition, _ as throttle, je as typeAnchor, Le as typeSSR, se as uniqueNonEmptyStrings, Ue as useStyles, ce as validKeyNavigationCode };
@@ -1,3 +1,4 @@
1
+ import type { ElementsGlobal } from '@nvidia-elements/foundations/internal/state';
1
2
  export interface I18nStrings {
2
3
  close: string;
3
4
  copy: string;
@@ -58,6 +59,6 @@ export interface I18nStrings {
58
59
  export declare class I18nService_ {
59
60
  get i18n(): Partial<I18nStrings>;
60
61
  constructor();
61
- update(registry: Partial<typeof globalThis.NVE_ELEMENTS.state.i18nRegistry>): void;
62
+ update(registry: Partial<ElementsGlobal['state']['i18nRegistry']>): void;
62
63
  }
63
64
  export declare const I18nService: I18nService_;
@@ -1,4 +1,4 @@
1
- import { GlobalStateService as e } from "./global.service.js";
1
+ import { GlobalStateService as e } from "@nvidia-elements/foundations/internal/state";
2
2
  //#region src/internal/services/i18n.service.ts
3
3
  var t = {
4
4
  close: "close",
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.service.js","names":[],"sources":["../../../src/internal/services/i18n.service.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from './global.service.js';\n\nexport interface I18nStrings {\n close: string;\n copy: string;\n copied: string;\n expand: string;\n select: string;\n selected: string;\n sort: string;\n show: string;\n hide: string;\n loading: string;\n previous: string;\n next: string;\n start: string;\n end: string;\n currentPage: string;\n noResults: string;\n status: string;\n information: string;\n warning: string;\n success: string;\n danger: string;\n trend: string;\n down: string;\n up: string;\n neutral: string;\n of: string;\n theme: string;\n scale: string;\n reducedMotion: string;\n colorScheme: string;\n resize: string;\n or: string;\n files: string;\n dragAndDrop: string;\n browseFiles: string;\n maxFileSize: string;\n create: string;\n currentTime: string;\n enableLoop: string;\n disableLoop: string;\n enterFullscreen: string;\n enterPip: string;\n exitFullscreen: string;\n exitPip: string;\n muteMedia: string;\n pauseMedia: string;\n playMedia: string;\n playbackRate: string;\n playbackRateOption: string;\n seekBackward: string;\n seekForward: string;\n seekToEnd: string;\n seekToStart: string;\n unmuteMedia: string;\n volume: string;\n}\n\nconst i18nRegistry = {\n close: 'close',\n copy: 'copy',\n copied: 'copied',\n expand: 'expand',\n select: 'select',\n selected: 'selected',\n sort: 'sort',\n show: 'show',\n hide: 'hide',\n loading: 'loading',\n previous: 'previous',\n next: 'next',\n start: 'start',\n end: 'end',\n currentPage: 'current page',\n noResults: 'no results',\n status: 'status',\n information: 'information',\n warning: 'warning',\n success: 'success',\n danger: 'danger',\n trend: 'trend',\n down: 'down',\n up: 'up',\n neutral: 'neutral',\n of: 'of',\n theme: 'theme',\n scale: 'scale',\n reducedMotion: 'reduced motion',\n colorScheme: 'color scheme',\n resize: 'resize',\n or: 'or',\n files: 'files',\n dragAndDrop: 'drag & drop',\n browseFiles: 'browse files',\n maxFileSize: 'max file size',\n create: 'create',\n currentTime: 'current time',\n enableLoop: 'enable looping',\n disableLoop: 'disable looping',\n enterFullscreen: 'enter full screen',\n enterPip: 'enter picture in picture',\n exitFullscreen: 'exit full screen',\n exitPip: 'exit picture in picture',\n muteMedia: 'mute media',\n pauseMedia: 'pause media',\n playMedia: 'play media',\n playbackRate: 'playback rate',\n playbackRateOption: '{rate}x',\n seekBackward: 'seek backward {value} seconds',\n seekForward: 'seek forward {value} seconds',\n seekToEnd: 'seek to end',\n seekToStart: 'seek to start',\n unmuteMedia: 'unmute media',\n volume: 'volume'\n};\n\nexport class I18nService_ {\n get i18n(): Partial<I18nStrings> {\n return { ...GlobalStateService.state.i18nRegistry };\n }\n\n constructor() {\n if (Object.keys(GlobalStateService.state.i18nRegistry).length === 0) {\n GlobalStateService.dispatch('NVE_ELEMENTS_I18N_UPDATE', { i18nRegistry });\n }\n }\n\n update(registry: Partial<typeof globalThis.NVE_ELEMENTS.state.i18nRegistry>) {\n GlobalStateService.dispatch('NVE_ELEMENTS_I18N_UPDATE', { i18nRegistry: registry } as Partial<\n typeof globalThis.NVE_ELEMENTS.state\n >);\n }\n}\n\nexport const I18nService = new I18nService_();\n"],"mappings":";;AA+DA,IAAM,IAAe;CACnB,OAAO;CACP,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,MAAM;CACN,MAAM;CACN,MAAM;CACN,SAAS;CACT,UAAU;CACV,MAAM;CACN,OAAO;CACP,KAAK;CACL,aAAa;CACb,WAAW;CACX,QAAQ;CACR,aAAa;CACb,SAAS;CACT,SAAS;CACT,QAAQ;CACR,OAAO;CACP,MAAM;CACN,IAAI;CACJ,SAAS;CACT,IAAI;CACJ,OAAO;CACP,OAAO;CACP,eAAe;CACf,aAAa;CACb,QAAQ;CACR,IAAI;CACJ,OAAO;CACP,aAAa;CACb,aAAa;CACb,aAAa;CACb,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,UAAU;CACV,gBAAgB;CAChB,SAAS;CACT,WAAW;CACX,YAAY;CACZ,WAAW;CACX,cAAc;CACd,oBAAoB;CACpB,cAAc;CACd,aAAa;CACb,WAAW;CACX,aAAa;CACb,aAAa;CACb,QAAQ;AACV,GAEa,IAAb,MAA0B;CACxB,IAAI,OAA6B;EAC/B,OAAO,EAAE,GAAG,EAAmB,MAAM,aAAa;CACpD;CAEA,cAAc;EACZ,AAAI,OAAO,KAAK,EAAmB,MAAM,YAAY,CAAC,CAAC,WAAW,KAChE,EAAmB,SAAS,4BAA4B,EAAE,gBAAa,CAAC;CAE5E;CAEA,OAAO,GAAsE;EAC3E,EAAmB,SAAS,4BAA4B,EAAE,cAAc,EAAS,CAEhF;CACH;AACF,GAEa,IAAc,IAAI,EAAa"}
1
+ {"version":3,"file":"i18n.service.js","names":[],"sources":["../../../src/internal/services/i18n.service.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from '@nvidia-elements/foundations/internal/state';\nimport type { ElementsGlobal } from '@nvidia-elements/foundations/internal/state';\n\nexport interface I18nStrings {\n close: string;\n copy: string;\n copied: string;\n expand: string;\n select: string;\n selected: string;\n sort: string;\n show: string;\n hide: string;\n loading: string;\n previous: string;\n next: string;\n start: string;\n end: string;\n currentPage: string;\n noResults: string;\n status: string;\n information: string;\n warning: string;\n success: string;\n danger: string;\n trend: string;\n down: string;\n up: string;\n neutral: string;\n of: string;\n theme: string;\n scale: string;\n reducedMotion: string;\n colorScheme: string;\n resize: string;\n or: string;\n files: string;\n dragAndDrop: string;\n browseFiles: string;\n maxFileSize: string;\n create: string;\n currentTime: string;\n enableLoop: string;\n disableLoop: string;\n enterFullscreen: string;\n enterPip: string;\n exitFullscreen: string;\n exitPip: string;\n muteMedia: string;\n pauseMedia: string;\n playMedia: string;\n playbackRate: string;\n playbackRateOption: string;\n seekBackward: string;\n seekForward: string;\n seekToEnd: string;\n seekToStart: string;\n unmuteMedia: string;\n volume: string;\n}\n\nconst i18nRegistry = {\n close: 'close',\n copy: 'copy',\n copied: 'copied',\n expand: 'expand',\n select: 'select',\n selected: 'selected',\n sort: 'sort',\n show: 'show',\n hide: 'hide',\n loading: 'loading',\n previous: 'previous',\n next: 'next',\n start: 'start',\n end: 'end',\n currentPage: 'current page',\n noResults: 'no results',\n status: 'status',\n information: 'information',\n warning: 'warning',\n success: 'success',\n danger: 'danger',\n trend: 'trend',\n down: 'down',\n up: 'up',\n neutral: 'neutral',\n of: 'of',\n theme: 'theme',\n scale: 'scale',\n reducedMotion: 'reduced motion',\n colorScheme: 'color scheme',\n resize: 'resize',\n or: 'or',\n files: 'files',\n dragAndDrop: 'drag & drop',\n browseFiles: 'browse files',\n maxFileSize: 'max file size',\n create: 'create',\n currentTime: 'current time',\n enableLoop: 'enable looping',\n disableLoop: 'disable looping',\n enterFullscreen: 'enter full screen',\n enterPip: 'enter picture in picture',\n exitFullscreen: 'exit full screen',\n exitPip: 'exit picture in picture',\n muteMedia: 'mute media',\n pauseMedia: 'pause media',\n playMedia: 'play media',\n playbackRate: 'playback rate',\n playbackRateOption: '{rate}x',\n seekBackward: 'seek backward {value} seconds',\n seekForward: 'seek forward {value} seconds',\n seekToEnd: 'seek to end',\n seekToStart: 'seek to start',\n unmuteMedia: 'unmute media',\n volume: 'volume'\n};\n\nexport class I18nService_ {\n get i18n(): Partial<I18nStrings> {\n return { ...GlobalStateService.state.i18nRegistry };\n }\n\n constructor() {\n if (Object.keys(GlobalStateService.state.i18nRegistry).length === 0) {\n GlobalStateService.dispatch('NVE_ELEMENTS_I18N_UPDATE', { i18nRegistry });\n }\n }\n\n update(registry: Partial<ElementsGlobal['state']['i18nRegistry']>) {\n GlobalStateService.dispatch('NVE_ELEMENTS_I18N_UPDATE', { i18nRegistry: registry } as Partial<\n typeof globalThis.NVE_ELEMENTS.state\n >);\n }\n}\n\nexport const I18nService = new I18nService_();\n"],"mappings":";;AAgEA,IAAM,IAAe;CACnB,OAAO;CACP,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,MAAM;CACN,MAAM;CACN,MAAM;CACN,SAAS;CACT,UAAU;CACV,MAAM;CACN,OAAO;CACP,KAAK;CACL,aAAa;CACb,WAAW;CACX,QAAQ;CACR,aAAa;CACb,SAAS;CACT,SAAS;CACT,QAAQ;CACR,OAAO;CACP,MAAM;CACN,IAAI;CACJ,SAAS;CACT,IAAI;CACJ,OAAO;CACP,OAAO;CACP,eAAe;CACf,aAAa;CACb,QAAQ;CACR,IAAI;CACJ,OAAO;CACP,aAAa;CACb,aAAa;CACb,aAAa;CACb,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,UAAU;CACV,gBAAgB;CAChB,SAAS;CACT,WAAW;CACX,YAAY;CACZ,WAAW;CACX,cAAc;CACd,oBAAoB;CACpB,cAAc;CACd,aAAa;CACb,WAAW;CACX,aAAa;CACb,aAAa;CACb,QAAQ;AACV,GAEa,IAAb,MAA0B;CACxB,IAAI,OAA6B;EAC/B,OAAO,EAAE,GAAG,EAAmB,MAAM,aAAa;CACpD;CAEA,cAAc;EACZ,AAAI,OAAO,KAAK,EAAmB,MAAM,YAAY,CAAC,CAAC,WAAW,KAChE,EAAmB,SAAS,4BAA4B,EAAE,gBAAa,CAAC;CAE5E;CAEA,OAAO,GAA4D;EACjE,EAAmB,SAAS,4BAA4B,EAAE,cAAc,EAAS,CAEhF;CACH;AACF,GAEa,IAAc,IAAI,EAAa"}
@@ -1,4 +1,4 @@
1
- import { GlobalStateService as e } from "./global.service.js";
1
+ import { GlobalStateService as e } from "@nvidia-elements/foundations/internal/state";
2
2
  //#region src/internal/services/log.service.ts
3
3
  var t = "@nve: ", n = class {
4
4
  static log(n, ...r) {
@@ -1 +1 @@
1
- {"version":3,"file":"log.service.js","names":[],"sources":["../../../src/internal/services/log.service.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from './global.service.js';\n\nconst prefix = '@nve: ';\n\nexport class LogService {\n static log(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.log(`${prefix}${value}`, ...args);\n }\n }\n\n static warn(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.warn(`${prefix}${value}`, ...args);\n this.#dispatch('warn', value, ...args);\n }\n }\n\n static error(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.error(`${prefix}${value}`, ...args);\n this.#dispatch('error', value, ...args);\n }\n }\n\n static #dispatch(type: 'warn' | 'error', value: string, ...args: unknown[]) {\n globalThis.document?.dispatchEvent(new CustomEvent('NVE_ELEMENTS_LOG', { detail: { type, value, args } }));\n }\n}\n"],"mappings":";;AAKA,IAAM,IAAS,UAEF,IAAb,MAAwB;CACtB,OAAO,IAAI,GAAe,GAAG,GAAiB;EAC5C,AAAI,EAAmB,MAAM,QAAQ,gBACnC,QAAQ,IAAI,GAAG,IAAS,KAAS,GAAG,CAAI;CAE5C;CAEA,OAAO,KAAK,GAAe,GAAG,GAAiB;EAC7C,AAAI,EAAmB,MAAM,QAAQ,iBACnC,QAAQ,KAAK,GAAG,IAAS,KAAS,GAAG,CAAI,GACzC,KAAK,GAAU,QAAQ,GAAO,GAAG,CAAI;CAEzC;CAEA,OAAO,MAAM,GAAe,GAAG,GAAiB;EAC9C,AAAI,EAAmB,MAAM,QAAQ,iBACnC,QAAQ,MAAM,GAAG,IAAS,KAAS,GAAG,CAAI,GAC1C,KAAK,GAAU,SAAS,GAAO,GAAG,CAAI;CAE1C;CAEA,OAAO,GAAU,GAAwB,GAAe,GAAG,GAAiB;EAC1E,WAAW,UAAU,cAAc,IAAI,YAAY,oBAAoB,EAAE,QAAQ;GAAE;GAAM;GAAO;EAAK,EAAE,CAAC,CAAC;CAC3G;AACF"}
1
+ {"version":3,"file":"log.service.js","names":[],"sources":["../../../src/internal/services/log.service.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from '@nvidia-elements/foundations/internal/state';\n\nconst prefix = '@nve: ';\n\nexport class LogService {\n static log(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.log(`${prefix}${value}`, ...args);\n }\n }\n\n static warn(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.warn(`${prefix}${value}`, ...args);\n this.#dispatch('warn', value, ...args);\n }\n }\n\n static error(value: string, ...args: unknown[]) {\n if (GlobalStateService.state.env !== 'production') {\n console.error(`${prefix}${value}`, ...args);\n this.#dispatch('error', value, ...args);\n }\n }\n\n static #dispatch(type: 'warn' | 'error', value: string, ...args: unknown[]) {\n globalThis.document?.dispatchEvent(new CustomEvent('NVE_ELEMENTS_LOG', { detail: { type, value, args } }));\n }\n}\n"],"mappings":";;AAKA,IAAM,IAAS,UAEF,IAAb,MAAwB;CACtB,OAAO,IAAI,GAAe,GAAG,GAAiB;EAC5C,AAAI,EAAmB,MAAM,QAAQ,gBACnC,QAAQ,IAAI,GAAG,IAAS,KAAS,GAAG,CAAI;CAE5C;CAEA,OAAO,KAAK,GAAe,GAAG,GAAiB;EAC7C,AAAI,EAAmB,MAAM,QAAQ,iBACnC,QAAQ,KAAK,GAAG,IAAS,KAAS,GAAG,CAAI,GACzC,KAAK,GAAU,QAAQ,GAAO,GAAG,CAAI;CAEzC;CAEA,OAAO,MAAM,GAAe,GAAG,GAAiB;EAC9C,AAAI,EAAmB,MAAM,QAAQ,iBACnC,QAAQ,MAAM,GAAG,IAAS,KAAS,GAAG,CAAI,GAC1C,KAAK,GAAU,SAAS,GAAO,GAAG,CAAI;CAE1C;CAEA,OAAO,GAAU,GAAwB,GAAe,GAAG,GAAiB;EAC1E,WAAW,UAAU,cAAc,IAAI,YAAY,oBAAoB,EAAE,QAAQ;GAAE;GAAM;GAAO;EAAK,EAAE,CAAC,CAAC;CAC3G;AACF"}
@@ -285,31 +285,6 @@ export declare const statusIcons: {
285
285
  [key: string]: IconName;
286
286
  };
287
287
  declare global {
288
- var NVE_ELEMENTS: {
289
- state: {
290
- bundle: boolean;
291
- env: 'watch' | 'production' | 'development';
292
- pageHost: string;
293
- moduleHost: string;
294
- versions: string[];
295
- scopedRegistry: {
296
- [key: string]: CustomElementRegistry;
297
- };
298
- elementRegistry: Readonly<{
299
- [key: string]: string;
300
- }>;
301
- i18nRegistry: Readonly<{
302
- [key: string]: string;
303
- }>;
304
- audit: Readonly<{
305
- [key: string]: {
306
- count?: number;
307
- excessiveInstanceLimitAudited?: boolean;
308
- };
309
- }>;
310
- };
311
- debug: (log?: (...args: unknown[]) => void) => void;
312
- };
313
288
  interface HTMLElement {
314
289
  'nve-text': string;
315
290
  'nve-layout': string;
@@ -322,18 +297,6 @@ declare global {
322
297
  prototype: CustomElementRegistry;
323
298
  };
324
299
  }
325
- export interface ElementDefinition extends CustomElementConstructor {
326
- metadata: {
327
- version: string;
328
- tag: string;
329
- };
330
- elementDefinitions?: {
331
- [key: string]: ElementDefinition;
332
- };
333
- shadowRootOptions?: {
334
- customElementRegistry?: CustomElementRegistry | null;
335
- };
336
- }
337
300
  export interface Point {
338
301
  x: number;
339
302
  y: number;