@nvidia-elements/core 2.23.4 → 2.23.6

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 (358) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/accordion/accordion2.js +49 -49
  3. package/dist/accordion/accordion2.js.map +1 -1
  4. package/dist/alert/alert-group2.js +22 -21
  5. package/dist/alert/alert-group2.js.map +1 -1
  6. package/dist/alert/alert2.js +29 -28
  7. package/dist/alert/alert2.js.map +1 -1
  8. package/dist/avatar/avatar-group2.js +9 -9
  9. package/dist/avatar/avatar-group2.js.map +1 -1
  10. package/dist/avatar/avatar2.js +12 -11
  11. package/dist/avatar/avatar2.js.map +1 -1
  12. package/dist/badge/badge2.js +27 -26
  13. package/dist/badge/badge2.js.map +1 -1
  14. package/dist/breadcrumb/breadcrumb2.js +17 -17
  15. package/dist/breadcrumb/breadcrumb2.js.map +1 -1
  16. package/dist/bundles/index.js +10 -10
  17. package/dist/button/button2.js +12 -12
  18. package/dist/button/button2.js.map +1 -1
  19. package/dist/button-group/button-group2.js +18 -18
  20. package/dist/button-group/button-group2.js.map +1 -1
  21. package/dist/card/card2.js +28 -28
  22. package/dist/card/card2.js.map +1 -1
  23. package/dist/chat-message/chat-message2.js +15 -14
  24. package/dist/chat-message/chat-message2.js.map +1 -1
  25. package/dist/checkbox/checkbox-group2.js +8 -8
  26. package/dist/checkbox/checkbox-group2.js.map +1 -1
  27. package/dist/checkbox/checkbox2.js +8 -8
  28. package/dist/checkbox/checkbox2.js.map +1 -1
  29. package/dist/color/color2.js +21 -21
  30. package/dist/color/color2.js.map +1 -1
  31. package/dist/combobox/combobox2.js +37 -37
  32. package/dist/combobox/combobox2.js.map +1 -1
  33. package/dist/copy-button/copy-button.d.ts +1 -1
  34. package/dist/copy-button/copy-button2.js +21 -21
  35. package/dist/copy-button/copy-button2.js.map +1 -1
  36. package/dist/custom-elements.json +1032 -337
  37. package/dist/date/date2.js +19 -19
  38. package/dist/date/date2.js.map +1 -1
  39. package/dist/datetime/datetime2.js +19 -19
  40. package/dist/datetime/datetime2.js.map +1 -1
  41. package/dist/dialog/dialog-footer2.js +7 -7
  42. package/dist/dialog/dialog-footer2.js.map +1 -1
  43. package/dist/dialog/dialog-header2.js +7 -7
  44. package/dist/dialog/dialog-header2.js.map +1 -1
  45. package/dist/dialog/dialog2.js +25 -25
  46. package/dist/dialog/dialog2.js.map +1 -1
  47. package/dist/divider/divider2.js +12 -12
  48. package/dist/divider/divider2.js.map +1 -1
  49. package/dist/dot/dot2.js +17 -16
  50. package/dist/dot/dot2.js.map +1 -1
  51. package/dist/drag-handle/drag-handle2.js +12 -12
  52. package/dist/drag-handle/drag-handle2.js.map +1 -1
  53. package/dist/drawer/drawer-content2.js +7 -7
  54. package/dist/drawer/drawer-content2.js.map +1 -1
  55. package/dist/drawer/drawer-footer2.js +7 -7
  56. package/dist/drawer/drawer-footer2.js.map +1 -1
  57. package/dist/drawer/drawer-header2.js +7 -7
  58. package/dist/drawer/drawer-header2.js.map +1 -1
  59. package/dist/drawer/drawer2.js +21 -21
  60. package/dist/drawer/drawer2.js.map +1 -1
  61. package/dist/dropdown/dropdown-footer2.js +7 -7
  62. package/dist/dropdown/dropdown-footer2.js.map +1 -1
  63. package/dist/dropdown/dropdown-header2.js +7 -7
  64. package/dist/dropdown/dropdown-header2.js.map +1 -1
  65. package/dist/dropdown/dropdown2.js +21 -21
  66. package/dist/dropdown/dropdown2.js.map +1 -1
  67. package/dist/dropdown-group/dropdown-group.js +10 -10
  68. package/dist/dropdown-group/dropdown-group.js.map +1 -1
  69. package/dist/dropzone/dropzone2.js +19 -19
  70. package/dist/dropzone/dropzone2.js.map +1 -1
  71. package/dist/file/file2.js +8 -8
  72. package/dist/file/file2.js.map +1 -1
  73. package/dist/format-bytes/format-bytes2.js +13 -13
  74. package/dist/format-bytes/format-bytes2.js.map +1 -1
  75. package/dist/format-datetime/format-datetime2.js +14 -14
  76. package/dist/format-datetime/format-datetime2.js.map +1 -1
  77. package/dist/format-number/format-number2.js +20 -20
  78. package/dist/format-number/format-number2.js.map +1 -1
  79. package/dist/format-relative-time/format-relative-time2.js +11 -11
  80. package/dist/format-relative-time/format-relative-time2.js.map +1 -1
  81. package/dist/format-truncate/format-truncate2.js +21 -21
  82. package/dist/format-truncate/format-truncate2.js.map +1 -1
  83. package/dist/forms/control/control2.js +30 -29
  84. package/dist/forms/control/control2.js.map +1 -1
  85. package/dist/forms/control-group/control-group2.js +19 -18
  86. package/dist/forms/control-group/control-group2.js.map +1 -1
  87. package/dist/forms/control-message/control-message2.js +15 -15
  88. package/dist/forms/control-message/control-message2.js.map +1 -1
  89. package/dist/gauge/gauge2.js +20 -20
  90. package/dist/gauge/gauge2.js.map +1 -1
  91. package/dist/ghost/ghost2.js +10 -10
  92. package/dist/ghost/ghost2.js.map +1 -1
  93. package/dist/grid/cell/cell2.js +9 -9
  94. package/dist/grid/cell/cell2.js.map +1 -1
  95. package/dist/grid/column/column2.js +16 -16
  96. package/dist/grid/column/column2.js.map +1 -1
  97. package/dist/grid/footer/footer2.js +12 -12
  98. package/dist/grid/footer/footer2.js.map +1 -1
  99. package/dist/grid/grid2.js +30 -30
  100. package/dist/grid/grid2.js.map +1 -1
  101. package/dist/grid/header/header2.js +20 -20
  102. package/dist/grid/header/header2.js.map +1 -1
  103. package/dist/grid/placeholder/placeholder2.js +9 -9
  104. package/dist/grid/placeholder/placeholder2.js.map +1 -1
  105. package/dist/grid/row/row2.js +15 -15
  106. package/dist/grid/row/row2.js.map +1 -1
  107. package/dist/icon/icon2.js +40 -40
  108. package/dist/icon/icon2.js.map +1 -1
  109. package/dist/icon-button/icon-button2.js +17 -17
  110. package/dist/icon-button/icon-button2.js.map +1 -1
  111. package/dist/iframe/iframe2.js +7 -7
  112. package/dist/iframe/iframe2.js.map +1 -1
  113. package/dist/index.js +1 -1
  114. package/dist/input/input-group2.js +8 -8
  115. package/dist/input/input-group2.js.map +1 -1
  116. package/dist/input/input2.js +10 -10
  117. package/dist/input/input2.js.map +1 -1
  118. package/dist/internal/controllers/state-expanded.controller.js +1 -1
  119. package/dist/internal/controllers/state-expanded.controller.js.map +1 -1
  120. package/dist/internal/controllers/state-highlighted.controller.js +1 -1
  121. package/dist/internal/controllers/state-highlighted.controller.js.map +1 -1
  122. package/dist/internal/controllers/state-scroll.controller.js +1 -1
  123. package/dist/internal/controllers/state-scroll.controller.js.map +1 -1
  124. package/dist/internal/controllers/state-selected.controller.js +1 -1
  125. package/dist/internal/controllers/state-selected.controller.js.map +1 -1
  126. package/dist/internal/controllers/type-anchor.controller.js +1 -1
  127. package/dist/internal/controllers/type-anchor.controller.js.map +1 -1
  128. package/dist/internal/controllers/type-closable.controller.js +1 -1
  129. package/dist/internal/controllers/type-closable.controller.js.map +1 -1
  130. package/dist/internal/controllers/type-expandable.controller.js +1 -1
  131. package/dist/internal/controllers/type-expandable.controller.js.map +1 -1
  132. package/dist/internal/controllers/type-native-popover.controller.js +6 -6
  133. package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
  134. package/dist/internal/controllers/type-popover.controller.examples.js.map +1 -1
  135. package/dist/internal/controllers/type-selectable.controller.js +1 -1
  136. package/dist/internal/controllers/type-selectable.controller.js.map +1 -1
  137. package/dist/internal/index.d.ts +0 -1
  138. package/dist/internal/index.js +57 -61
  139. package/dist/internal/index.js.map +1 -1
  140. package/dist/internal/styles/index.d.ts +0 -1
  141. package/dist/internal/styles/index.js +5 -15
  142. package/dist/internal/styles/index.js.map +1 -1
  143. package/dist/internal/utils/a11y.d.ts +0 -3
  144. package/dist/internal/utils/a11y.js +6 -9
  145. package/dist/internal/utils/a11y.js.map +1 -1
  146. package/dist/joystick/joystick2.js +19 -19
  147. package/dist/joystick/joystick2.js.map +1 -1
  148. package/dist/logo/logo2.js +14 -13
  149. package/dist/logo/logo2.js.map +1 -1
  150. package/dist/menu/menu-group2.js +20 -20
  151. package/dist/menu/menu-group2.js.map +1 -1
  152. package/dist/menu/menu-item2.js +11 -11
  153. package/dist/menu/menu-item2.js.map +1 -1
  154. package/dist/menu/menu2.js +14 -14
  155. package/dist/menu/menu2.js.map +1 -1
  156. package/dist/month/month2.js +19 -19
  157. package/dist/month/month2.js.map +1 -1
  158. package/dist/notification/notification-group2.js +13 -13
  159. package/dist/notification/notification-group2.js.map +1 -1
  160. package/dist/notification/notification2.js +31 -31
  161. package/dist/notification/notification2.js.map +1 -1
  162. package/dist/page/page-panel/page-panel-content2.js +7 -7
  163. package/dist/page/page-panel/page-panel-content2.js.map +1 -1
  164. package/dist/page/page-panel/page-panel-footer2.js +9 -9
  165. package/dist/page/page-panel/page-panel-footer2.js.map +1 -1
  166. package/dist/page/page-panel/page-panel-header2.js +9 -9
  167. package/dist/page/page-panel/page-panel-header2.js.map +1 -1
  168. package/dist/page/page-panel/page-panel2.js +15 -15
  169. package/dist/page/page-panel/page-panel2.js.map +1 -1
  170. package/dist/page/page2.js +13 -13
  171. package/dist/page/page2.js.map +1 -1
  172. package/dist/page-header/page-header2.js +10 -10
  173. package/dist/page-header/page-header2.js.map +1 -1
  174. package/dist/page-loader/page-loader2.js +13 -13
  175. package/dist/page-loader/page-loader2.js.map +1 -1
  176. package/dist/pagination/pagination2.js +34 -34
  177. package/dist/pagination/pagination2.js.map +1 -1
  178. package/dist/panel/panel2.js +36 -36
  179. package/dist/panel/panel2.js.map +1 -1
  180. package/dist/password/password2.js +19 -19
  181. package/dist/password/password2.js.map +1 -1
  182. package/dist/preferences-input/preferences-input.d.ts +1 -1
  183. package/dist/preferences-input/preferences-input2.js +25 -25
  184. package/dist/preferences-input/preferences-input2.js.map +1 -1
  185. package/dist/progress-bar/progress-bar2.js +13 -13
  186. package/dist/progress-bar/progress-bar2.js.map +1 -1
  187. package/dist/progress-dot/progress-dot2.js +15 -15
  188. package/dist/progress-dot/progress-dot2.js.map +1 -1
  189. package/dist/progress-ring/progress-ring2.js +20 -20
  190. package/dist/progress-ring/progress-ring2.js.map +1 -1
  191. package/dist/progressive-filter-chip/progressive-filter-chip2.js +28 -28
  192. package/dist/progressive-filter-chip/progressive-filter-chip2.js.map +1 -1
  193. package/dist/pulse/pulse2.js +15 -15
  194. package/dist/pulse/pulse2.js.map +1 -1
  195. package/dist/radio/radio-group2.js +8 -8
  196. package/dist/radio/radio-group2.js.map +1 -1
  197. package/dist/radio/radio2.js +8 -8
  198. package/dist/radio/radio2.js.map +1 -1
  199. package/dist/range/range2.js +16 -16
  200. package/dist/range/range2.js.map +1 -1
  201. package/dist/resize-handle/resize-handle2.js +17 -17
  202. package/dist/resize-handle/resize-handle2.js.map +1 -1
  203. package/dist/search/search2.js +20 -20
  204. package/dist/search/search2.js.map +1 -1
  205. package/dist/select/select2.js +32 -32
  206. package/dist/select/select2.js.map +1 -1
  207. package/dist/skeleton/skeleton2.js +14 -14
  208. package/dist/skeleton/skeleton2.js.map +1 -1
  209. package/dist/sort-button/sort-button.d.ts +1 -1
  210. package/dist/sort-button/sort-button2.js +16 -16
  211. package/dist/sort-button/sort-button2.js.map +1 -1
  212. package/dist/sparkline/sparkline2.js +45 -44
  213. package/dist/sparkline/sparkline2.js.map +1 -1
  214. package/dist/star-rating/star-rating2.js +14 -14
  215. package/dist/star-rating/star-rating2.js.map +1 -1
  216. package/dist/steps/steps2.js +32 -32
  217. package/dist/steps/steps2.js.map +1 -1
  218. package/dist/switch/switch-group2.js +8 -8
  219. package/dist/switch/switch-group2.js.map +1 -1
  220. package/dist/switch/switch2.js +8 -8
  221. package/dist/switch/switch2.js.map +1 -1
  222. package/dist/tabs/tabs-group2.js +18 -18
  223. package/dist/tabs/tabs-group2.js.map +1 -1
  224. package/dist/tabs/tabs-item-group2.js +9 -9
  225. package/dist/tabs/tabs-item-group2.js.map +1 -1
  226. package/dist/tabs/tabs2.js +28 -28
  227. package/dist/tabs/tabs2.js.map +1 -1
  228. package/dist/tag/tag2.js +19 -18
  229. package/dist/tag/tag2.js.map +1 -1
  230. package/dist/textarea/textarea2.js +9 -9
  231. package/dist/textarea/textarea2.js.map +1 -1
  232. package/dist/time/time2.js +19 -19
  233. package/dist/time/time2.js.map +1 -1
  234. package/dist/toast/toast2.js +28 -28
  235. package/dist/toast/toast2.js.map +1 -1
  236. package/dist/toggletip/toggletip-footer2.js +7 -7
  237. package/dist/toggletip/toggletip-footer2.js.map +1 -1
  238. package/dist/toggletip/toggletip-header2.js +7 -7
  239. package/dist/toggletip/toggletip-header2.js.map +1 -1
  240. package/dist/toggletip/toggletip2.js +23 -23
  241. package/dist/toggletip/toggletip2.js.map +1 -1
  242. package/dist/toolbar/toolbar2.js +20 -19
  243. package/dist/toolbar/toolbar2.js.map +1 -1
  244. package/dist/tooltip/tooltip2.js +20 -20
  245. package/dist/tooltip/tooltip2.js.map +1 -1
  246. package/dist/tree/tree-node2.js +39 -39
  247. package/dist/tree/tree-node2.js.map +1 -1
  248. package/dist/tree/tree2.js +20 -20
  249. package/dist/tree/tree2.js.map +1 -1
  250. package/dist/week/week2.js +19 -19
  251. package/dist/week/week2.js.map +1 -1
  252. package/dist/workspace/controllers/workspace-composition.controller.d.ts +4 -1
  253. package/dist/workspace/controllers/workspace-composition.controller.js +69 -39
  254. package/dist/workspace/controllers/workspace-composition.controller.js.map +1 -1
  255. package/dist/workspace/controllers/workspace-rearrange.controller.js +27 -27
  256. package/dist/workspace/controllers/workspace-rearrange.controller.js.map +1 -1
  257. package/dist/workspace/controllers/workspace-restoration.controller.js +2 -2
  258. package/dist/workspace/controllers/workspace-restoration.controller.js.map +1 -1
  259. package/dist/workspace/panel/panel2.js +15 -15
  260. package/dist/workspace/panel/panel2.js.map +1 -1
  261. package/dist/workspace/panel-content/panel-content2.js +7 -7
  262. package/dist/workspace/panel-content/panel-content2.js.map +1 -1
  263. package/dist/workspace/panel-footer/panel-footer2.js +9 -9
  264. package/dist/workspace/panel-footer/panel-footer2.js.map +1 -1
  265. package/dist/workspace/panel-header/panel-header2.js +16 -16
  266. package/dist/workspace/panel-header/panel-header2.js.map +1 -1
  267. package/dist/workspace/utils/comparison.utils.d.ts +3 -0
  268. package/dist/workspace/utils/comparison.utils.js +13 -0
  269. package/dist/workspace/utils/comparison.utils.js.map +1 -0
  270. package/dist/workspace/utils/evaluation.utils.d.ts +65 -6
  271. package/dist/workspace/utils/evaluation.utils.js +334 -99
  272. package/dist/workspace/utils/evaluation.utils.js.map +1 -1
  273. package/dist/workspace/utils/geometry/allocation.utils.js +15 -13
  274. package/dist/workspace/utils/geometry/allocation.utils.js.map +1 -1
  275. package/dist/workspace/utils/geometry/sizing.utils.d.ts +2 -0
  276. package/dist/workspace/utils/geometry/sizing.utils.js +37 -17
  277. package/dist/workspace/utils/geometry/sizing.utils.js.map +1 -1
  278. package/dist/workspace/utils/interaction/boundary.utils.d.ts +2 -2
  279. package/dist/workspace/utils/interaction/boundary.utils.js +2 -2
  280. package/dist/workspace/utils/interaction/boundary.utils.js.map +1 -1
  281. package/dist/workspace/utils/interaction/drag-preview.utils.d.ts +3 -3
  282. package/dist/workspace/utils/interaction/drag-preview.utils.js.map +1 -1
  283. package/dist/workspace/utils/interaction/insertion-offers.utils.d.ts +11 -9
  284. package/dist/workspace/utils/interaction/insertion-offers.utils.js +37 -43
  285. package/dist/workspace/utils/interaction/insertion-offers.utils.js.map +1 -1
  286. package/dist/workspace/utils/interaction/placement-decision.utils.d.ts +6 -1
  287. package/dist/workspace/utils/interaction/placement-decision.utils.js +94 -87
  288. package/dist/workspace/utils/interaction/placement-decision.utils.js.map +1 -1
  289. package/dist/workspace/utils/model/layout.utils.d.ts +2 -1
  290. package/dist/workspace/utils/model/layout.utils.js +12 -10
  291. package/dist/workspace/utils/model/layout.utils.js.map +1 -1
  292. package/dist/workspace/utils/model/membership.utils.d.ts +4 -0
  293. package/dist/workspace/utils/model/membership.utils.js +13 -4
  294. package/dist/workspace/utils/model/membership.utils.js.map +1 -1
  295. package/dist/workspace/utils/model/operations.utils.d.ts +1 -0
  296. package/dist/workspace/utils/model/operations.utils.js +51 -46
  297. package/dist/workspace/utils/model/operations.utils.js.map +1 -1
  298. package/dist/workspace/utils/model/projection.utils.d.ts +4 -2
  299. package/dist/workspace/utils/model/projection.utils.js +49 -40
  300. package/dist/workspace/utils/model/projection.utils.js.map +1 -1
  301. package/dist/workspace/utils/model/value.utils.d.ts +4 -3
  302. package/dist/workspace/utils/model/value.utils.js +15 -50
  303. package/dist/workspace/utils/model/value.utils.js.map +1 -1
  304. package/dist/workspace/utils/placement/acquisition-sizing.utils.d.ts +2 -0
  305. package/dist/workspace/utils/placement/acquisition-sizing.utils.js +30 -22
  306. package/dist/workspace/utils/placement/acquisition-sizing.utils.js.map +1 -1
  307. package/dist/workspace/utils/placement/group-insertion.utils.d.ts +19 -13
  308. package/dist/workspace/utils/placement/group-insertion.utils.js +50 -47
  309. package/dist/workspace/utils/placement/group-insertion.utils.js.map +1 -1
  310. package/dist/workspace/utils/placement/planner.utils.d.ts +13 -2
  311. package/dist/workspace/utils/placement/planner.utils.js +79 -73
  312. package/dist/workspace/utils/placement/planner.utils.js.map +1 -1
  313. package/dist/workspace/utils/placement/preparation.utils.d.ts +5 -2
  314. package/dist/workspace/utils/placement/preparation.utils.js +45 -41
  315. package/dist/workspace/utils/placement/preparation.utils.js.map +1 -1
  316. package/dist/workspace/utils/placement/region.utils.js +32 -32
  317. package/dist/workspace/utils/placement/region.utils.js.map +1 -1
  318. package/dist/workspace/utils/placement/scope.utils.d.ts +34 -0
  319. package/dist/workspace/utils/placement/scope.utils.js +155 -0
  320. package/dist/workspace/utils/placement/scope.utils.js.map +1 -0
  321. package/dist/workspace/utils/placement/session.utils.d.ts +11 -0
  322. package/dist/workspace/utils/placement/session.utils.js +78 -0
  323. package/dist/workspace/utils/placement/session.utils.js.map +1 -0
  324. package/dist/workspace/utils/placement/split-sizing.utils.d.ts +2 -2
  325. package/dist/workspace/utils/placement/split-sizing.utils.js +19 -19
  326. package/dist/workspace/utils/placement/split-sizing.utils.js.map +1 -1
  327. package/dist/workspace/utils/presentation/composition.utils.d.ts +1 -1
  328. package/dist/workspace/utils/presentation/composition.utils.js +4 -2
  329. package/dist/workspace/utils/presentation/composition.utils.js.map +1 -1
  330. package/dist/workspace/utils/presentation/groups.utils.d.ts +3 -3
  331. package/dist/workspace/utils/presentation/groups.utils.js +40 -30
  332. package/dist/workspace/utils/presentation/groups.utils.js.map +1 -1
  333. package/dist/workspace/utils/presentation/measurements.utils.d.ts +1 -0
  334. package/dist/workspace/utils/presentation/measurements.utils.js +6 -14
  335. package/dist/workspace/utils/presentation/measurements.utils.js.map +1 -1
  336. package/dist/workspace/utils/presentation/offers.utils.d.ts +1 -1
  337. package/dist/workspace/utils/presentation/offers.utils.js +3 -3
  338. package/dist/workspace/utils/presentation/offers.utils.js.map +1 -1
  339. package/dist/workspace/utils/presentation/preview.utils.d.ts +6 -0
  340. package/dist/workspace/utils/presentation/preview.utils.js +14 -3
  341. package/dist/workspace/utils/presentation/preview.utils.js.map +1 -1
  342. package/dist/workspace/workspace.examples.js.map +1 -1
  343. package/dist/workspace/workspace.examples.json +4 -4
  344. package/dist/workspace/workspace.js +1 -1
  345. package/dist/workspace/workspace.js.map +1 -1
  346. package/dist/workspace/workspace2.js +233 -239
  347. package/dist/workspace/workspace2.js.map +1 -1
  348. package/package.json +2 -2
  349. package/dist/internal/decorators/scoped-registry.d.ts +0 -2
  350. package/dist/internal/decorators/scoped-registry.js +0 -36
  351. package/dist/internal/decorators/scoped-registry.js.map +0 -1
  352. package/dist/internal/styles/base.js +0 -5
  353. package/dist/internal/styles/base.js.map +0 -1
  354. package/dist/internal/styles/interaction-state.js +0 -5
  355. package/dist/internal/styles/interaction-state.js.map +0 -1
  356. package/dist/workspace/utils/placement/context.utils.d.ts +0 -36
  357. package/dist/workspace/utils/placement/context.utils.js +0 -135
  358. package/dist/workspace/utils/placement/context.utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"type-native-popover.controller.js","names":["TypeNativePopoverController","#nativeTriggers","root","popoverTargetTriggers","commandForTriggers","interestForTriggers","host","showPopover","source","options","getHostAnchor","getHostTrigger","attachInternals","#updateLegacyTriggers","#setupLegacyTriggers","#setupModalLightDismiss","#onBeforeToggle","#onToggle","#onCommand","#onInterest","#onLoseInterest","#observers","observer","#onPointerDown","#onPointerUp","#removeHintTrigger","#clearInterestTimeout","#clearCloseTimeout","#closeTimeout","#interestTimeout","raw","value","#legacyHostTrigger","r","trigger","#previousLegacyTrigger","#clearLegacyTrigger","#hintTrigger","#setupHintTrigger","#setupPopoverTargetTrigger","#onHintMouseEnter","#onHintMouseLeave","generateId","open","focusElement","target","#setCloseTimeout","#toggleFocus","interestDelayStart","#parseInterestDelay","#pointerdownWithinModal","clickOutsideElementBounds","hasOpenPopover"],"sources":["../../../src/internal/controllers/type-native-popover.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 { clickOutsideElementBounds, generateId } from '../utils/dom.js';\nimport { attachInternals } from '../utils/a11y.js';\nimport { focusElement } from '../utils/focus.js';\nimport { getHostAnchor, getHostTrigger, hasOpenPopover } from './type-native-popover.utils.js';\nimport type { InterestEvent, PopoverType } from '../types/index.js';\n\nexport interface NativePopover extends ReactiveElement {\n anchor?: HTMLElement | string;\n closeTimeout?: number;\n popoverType?: PopoverType;\n modal?: boolean;\n popoverDismissible?: boolean;\n _internals?: ElementInternals;\n\n /** @deprecated */\n trigger?: HTMLElement | string;\n /** @deprecated */\n openDelay?: number;\n /** @deprecated */\n behaviorTrigger?: boolean;\n}\n\n/**\n * https://open-ui.org/components/popup.research.explainer\n */\nexport class TypeNativePopoverController<T extends NativePopover> implements ReactiveController {\n get #nativeTriggers(): HTMLElement[] {\n const root = this.host.getRootNode() as HTMLElement;\n const popoverTargetTriggers = Array.from(\n root.querySelectorAll(`[popovertarget=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const commandForTriggers = Array.from(\n root.querySelectorAll(`[commandfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const interestForTriggers = Array.from(\n root.querySelectorAll(`[interestfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n return [...popoverTargetTriggers, ...commandForTriggers, ...interestForTriggers];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n\n const showPopover = this.host.showPopover;\n this.host.showPopover = (options?: ShowPopoverOptions) => {\n if (this.host.isConnected) {\n // provide legacy fallback for source anchor or trigger if not provided, this can happen if the popover is dynamically created in the DOM without the use of the standard popover api or legacy trigger based api\n let source: HTMLElement | Element | null = options?.source ?? null;\n if (!source) {\n if (this.host.anchor) {\n source = getHostAnchor(this.host);\n } else if (this.host.trigger) {\n source = getHostTrigger(this.host, this.host.trigger);\n } else {\n source = globalThis.document.activeElement;\n }\n }\n\n showPopover.call(this.host, { source: source as HTMLElement });\n }\n };\n }\n\n async hostConnected() {\n attachInternals(this.host);\n this.host.popover = this.host.popoverType ?? null;\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.host.setAttribute('nve-popover', '');\n this.#updateLegacyTriggers();\n this.#setupLegacyTriggers(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.#setupModalLightDismiss();\n this.host.inert = this.host.matches(':not(:popover-open)') && !!this.#nativeTriggers.length;\n\n this.host.addEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.addEventListener('toggle', this.#onToggle as EventListener);\n this.host.addEventListener('command', this.#onCommand as EventListener);\n this.host.addEventListener('interest', this.#onInterest as EventListener);\n this.host.addEventListener('loseinterest', this.#onLoseInterest as EventListener);\n }\n\n #interestTimeout: ReturnType<typeof setTimeout> | null = null;\n #closeTimeout: ReturnType<typeof setTimeout> | null = null;\n #observers: MutationObserver[] = [];\n #previousLegacyTrigger: HTMLButtonElement | null = null;\n #hintTrigger: HTMLButtonElement | null = null;\n\n async hostUpdated() {\n this.host.popover = this.host.popoverType ?? null;\n this.#updateLegacyTriggers();\n }\n\n hostDisconnected() {\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.host.removeEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.removeEventListener('toggle', this.#onToggle as EventListener);\n this.host.removeEventListener('command', this.#onCommand as EventListener);\n this.host.removeEventListener('interest', this.#onInterest as EventListener);\n this.host.removeEventListener('loseinterest', this.#onLoseInterest as EventListener);\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.#removeHintTrigger();\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n #setCloseTimeout() {\n this.#clearCloseTimeout();\n if (this.host.closeTimeout) {\n this.#closeTimeout = setTimeout(() => this.host.hidePopover(), this.host.closeTimeout);\n }\n }\n\n #clearCloseTimeout() {\n if (this.#closeTimeout) {\n clearTimeout(this.#closeTimeout);\n this.#closeTimeout = null;\n }\n }\n\n #clearInterestTimeout() {\n if (this.#interestTimeout) {\n clearTimeout(this.#interestTimeout);\n this.#interestTimeout = null;\n }\n }\n\n #parseInterestDelay(): number {\n const style = getComputedStyle(this.host);\n const raw = (style as unknown as { interestDelayStart: string }).interestDelayStart;\n if (!raw) {\n return 0;\n }\n const value = parseFloat(raw);\n return raw.endsWith('ms') ? value : value * 1000;\n }\n\n #pointerdownWithinModal = false;\n\n #setupModalLightDismiss() {\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('pointerdown', this.#onPointerDown);\n this.host.addEventListener('pointerup', this.#onPointerUp);\n }\n\n get #legacyHostTrigger(): HTMLElement | null {\n return this.host.trigger ? (getHostTrigger(this.host, this.host.trigger) as HTMLButtonElement) : null;\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n async #setupLegacyTriggers() {\n await new Promise(r => requestAnimationFrame(r));\n\n // setup host hidden updates for legacy triggers\n const observer = new MutationObserver(() => {\n if (this.host.isConnected && !this.host.hidden && !this.host.matches(':popover-open')) {\n this.host.showPopover();\n }\n\n if (this.host.isConnected && this.host.hidden && this.host.matches(':popover-open')) {\n this.host.hidePopover();\n }\n });\n observer.observe(this.host, { attributes: true, attributeFilter: ['hidden'] });\n this.#observers.push(observer);\n\n // determine if popover is open by default\n if (\n this.host.isConnected &&\n !this.#nativeTriggers.length &&\n !this.host.hidden &&\n !this.host.matches(':popover-open')\n ) {\n this.host.popover = 'manual';\n this.host.showPopover();\n }\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n #updateLegacyTriggers() {\n const trigger = this.#legacyHostTrigger as HTMLButtonElement;\n\n if (this.#previousLegacyTrigger && this.#previousLegacyTrigger !== trigger) {\n this.#clearLegacyTrigger(this.#previousLegacyTrigger);\n }\n\n if (this.#hintTrigger && this.#hintTrigger !== trigger) {\n this.#removeHintTrigger();\n }\n\n if (!trigger) {\n this.#previousLegacyTrigger = null;\n return;\n }\n\n if (this.host.popoverType === 'hint') {\n this.#setupHintTrigger(trigger);\n } else {\n this.#setupPopoverTargetTrigger(trigger);\n }\n this.#previousLegacyTrigger = trigger;\n }\n\n #setupHintTrigger(trigger: HTMLButtonElement) {\n if (this.#hintTrigger === trigger) return;\n\n trigger.addEventListener('mouseenter', this.#onHintMouseEnter);\n trigger.addEventListener('mouseleave', this.#onHintMouseLeave);\n trigger.addEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = trigger;\n }\n\n #setupPopoverTargetTrigger(trigger: HTMLButtonElement) {\n this.#removeHintTrigger();\n this.host.id = this.host.id ? this.host.id : generateId();\n trigger.popoverTargetElement = this.host;\n trigger.setAttribute('popovertarget', this.host.id);\n }\n\n #toggleFocus(open: boolean, target: HTMLElement) {\n if (open) {\n // only focus popover if not the active element and not containing the active element already\n if ((this.host.getRootNode() as Document).activeElement !== this.host && !this.host.shadowRoot!.activeElement) {\n focusElement(this.host);\n }\n } else {\n focusElement(target);\n }\n }\n\n #clearLegacyTrigger(trigger: HTMLButtonElement) {\n trigger.popoverTargetElement = null;\n trigger.removeAttribute('popovertarget');\n if (this.#hintTrigger === trigger) {\n this.#removeHintTrigger();\n }\n }\n\n #removeHintTrigger() {\n this.#hintTrigger?.removeEventListener('mouseenter', this.#onHintMouseEnter);\n this.#hintTrigger?.removeEventListener('mouseleave', this.#onHintMouseLeave);\n this.#hintTrigger?.removeEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = null;\n }\n\n #onBeforeToggle = (e: ToggleEvent) => {\n if (e.newState === 'open') {\n this.host._internals!.states.add('transition-start');\n }\n };\n\n #onToggle = (e: ToggleEvent) => {\n if (this.host.behaviorTrigger) {\n this.host.hidden = e.newState === 'closed';\n }\n\n if (e.newState === 'open' && this.host.closeTimeout) {\n this.#setCloseTimeout();\n }\n\n if (e.newState === 'closed') {\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n this.host.inert = this.host.matches(':not(:popover-open)');\n\n if (this.host.modal) {\n this.#toggleFocus(e.newState === 'open', e.target as HTMLElement);\n }\n\n this.host.dispatchEvent(\n new CustomEvent(e.newState === 'open' && e.oldState !== 'open' ? 'open' : 'close', {\n bubbles: true,\n composed: true,\n detail: { trigger: e.source }\n })\n );\n };\n\n #onCommand = (e: CommandEvent) => {\n if (e.command === 'toggle-popover') {\n this.host.togglePopover({ source: e.source as HTMLElement });\n }\n\n if (e.command === 'hide-popover') {\n this.host.hidePopover();\n this.#clearInterestTimeout();\n }\n\n if (e.command === 'show-popover') {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n };\n\n #onInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n const interestDelayStart = this.host.openDelay ?? this.#parseInterestDelay();\n if (interestDelayStart) {\n this.#interestTimeout = setTimeout(() => {\n if (this.host.isConnected) {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }, interestDelayStart);\n } else {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }\n };\n\n #onLoseInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n this.host.hidePopover();\n }\n\n this.#clearInterestTimeout();\n };\n\n #onPointerDown = (e: PointerEvent) => {\n if (this.host.modal && this.host.matches(':popover-open')) {\n this.#pointerdownWithinModal = clickOutsideElementBounds(e, this.host);\n }\n };\n\n #onPointerUp = (e: PointerEvent) => {\n if (\n this.#pointerdownWithinModal &&\n this.host.popoverDismissible &&\n this.host.modal &&\n this.host.matches(':popover-open') &&\n !hasOpenPopover(this.host) &&\n clickOutsideElementBounds(e, this.host)\n ) {\n this.host.hidePopover();\n }\n };\n\n #onHintMouseEnter = (e: MouseEvent) => {\n this.host.showPopover({ source: e.currentTarget as HTMLElement });\n };\n\n #onHintMouseLeave = () => {\n this.host.hidePopover();\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"type-native-popover.controller.js","names":["TypeNativePopoverController","#nativeTriggers","root","popoverTargetTriggers","commandForTriggers","interestForTriggers","host","showPopover","source","options","getHostAnchor","getHostTrigger","attachInternals","#updateLegacyTriggers","#setupLegacyTriggers","#setupModalLightDismiss","#onBeforeToggle","#onToggle","#onCommand","#onInterest","#onLoseInterest","#observers","observer","#onPointerDown","#onPointerUp","#removeHintTrigger","#clearInterestTimeout","#clearCloseTimeout","#closeTimeout","#interestTimeout","raw","value","#legacyHostTrigger","r","trigger","#previousLegacyTrigger","#clearLegacyTrigger","#hintTrigger","#setupHintTrigger","#setupPopoverTargetTrigger","#onHintMouseEnter","#onHintMouseLeave","generateId","open","focusElement","target","#setCloseTimeout","#toggleFocus","interestDelayStart","#parseInterestDelay","#pointerdownWithinModal","clickOutsideElementBounds","hasOpenPopover"],"sources":["../../../src/internal/controllers/type-native-popover.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 { clickOutsideElementBounds, generateId } from '../utils/dom.js';\nimport { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\nimport { focusElement } from '../utils/focus.js';\nimport { getHostAnchor, getHostTrigger, hasOpenPopover } from './type-native-popover.utils.js';\nimport type { InterestEvent, PopoverType } from '../types/index.js';\n\nexport interface NativePopover extends ReactiveElement {\n anchor?: HTMLElement | string;\n closeTimeout?: number;\n popoverType?: PopoverType;\n modal?: boolean;\n popoverDismissible?: boolean;\n _internals?: ElementInternals;\n\n /** @deprecated */\n trigger?: HTMLElement | string;\n /** @deprecated */\n openDelay?: number;\n /** @deprecated */\n behaviorTrigger?: boolean;\n}\n\n/**\n * https://open-ui.org/components/popup.research.explainer\n */\nexport class TypeNativePopoverController<T extends NativePopover> implements ReactiveController {\n get #nativeTriggers(): HTMLElement[] {\n const root = this.host.getRootNode() as HTMLElement;\n const popoverTargetTriggers = Array.from(\n root.querySelectorAll(`[popovertarget=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const commandForTriggers = Array.from(\n root.querySelectorAll(`[commandfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const interestForTriggers = Array.from(\n root.querySelectorAll(`[interestfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n return [...popoverTargetTriggers, ...commandForTriggers, ...interestForTriggers];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n\n const showPopover = this.host.showPopover;\n this.host.showPopover = (options?: ShowPopoverOptions) => {\n if (this.host.isConnected) {\n // provide legacy fallback for source anchor or trigger if not provided, this can happen if the popover is dynamically created in the DOM without the use of the standard popover api or legacy trigger based api\n let source: HTMLElement | Element | null = options?.source ?? null;\n if (!source) {\n if (this.host.anchor) {\n source = getHostAnchor(this.host);\n } else if (this.host.trigger) {\n source = getHostTrigger(this.host, this.host.trigger);\n } else {\n source = globalThis.document.activeElement;\n }\n }\n\n showPopover.call(this.host, { source: source as HTMLElement });\n }\n };\n }\n\n async hostConnected() {\n attachInternals(this.host);\n this.host.popover = this.host.popoverType ?? null;\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.host.setAttribute('nve-popover', '');\n this.#updateLegacyTriggers();\n this.#setupLegacyTriggers(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.#setupModalLightDismiss();\n this.host.inert = this.host.matches(':not(:popover-open)') && !!this.#nativeTriggers.length;\n\n this.host.addEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.addEventListener('toggle', this.#onToggle as EventListener);\n this.host.addEventListener('command', this.#onCommand as EventListener);\n this.host.addEventListener('interest', this.#onInterest as EventListener);\n this.host.addEventListener('loseinterest', this.#onLoseInterest as EventListener);\n }\n\n #interestTimeout: ReturnType<typeof setTimeout> | null = null;\n #closeTimeout: ReturnType<typeof setTimeout> | null = null;\n #observers: MutationObserver[] = [];\n #previousLegacyTrigger: HTMLButtonElement | null = null;\n #hintTrigger: HTMLButtonElement | null = null;\n\n async hostUpdated() {\n this.host.popover = this.host.popoverType ?? null;\n this.#updateLegacyTriggers();\n }\n\n hostDisconnected() {\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.host.removeEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.removeEventListener('toggle', this.#onToggle as EventListener);\n this.host.removeEventListener('command', this.#onCommand as EventListener);\n this.host.removeEventListener('interest', this.#onInterest as EventListener);\n this.host.removeEventListener('loseinterest', this.#onLoseInterest as EventListener);\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.#removeHintTrigger();\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n #setCloseTimeout() {\n this.#clearCloseTimeout();\n if (this.host.closeTimeout) {\n this.#closeTimeout = setTimeout(() => this.host.hidePopover(), this.host.closeTimeout);\n }\n }\n\n #clearCloseTimeout() {\n if (this.#closeTimeout) {\n clearTimeout(this.#closeTimeout);\n this.#closeTimeout = null;\n }\n }\n\n #clearInterestTimeout() {\n if (this.#interestTimeout) {\n clearTimeout(this.#interestTimeout);\n this.#interestTimeout = null;\n }\n }\n\n #parseInterestDelay(): number {\n const style = getComputedStyle(this.host);\n const raw = (style as unknown as { interestDelayStart: string }).interestDelayStart;\n if (!raw) {\n return 0;\n }\n const value = parseFloat(raw);\n return raw.endsWith('ms') ? value : value * 1000;\n }\n\n #pointerdownWithinModal = false;\n\n #setupModalLightDismiss() {\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('pointerdown', this.#onPointerDown);\n this.host.addEventListener('pointerup', this.#onPointerUp);\n }\n\n get #legacyHostTrigger(): HTMLElement | null {\n return this.host.trigger ? (getHostTrigger(this.host, this.host.trigger) as HTMLButtonElement) : null;\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n async #setupLegacyTriggers() {\n await new Promise(r => requestAnimationFrame(r));\n\n // setup host hidden updates for legacy triggers\n const observer = new MutationObserver(() => {\n if (this.host.isConnected && !this.host.hidden && !this.host.matches(':popover-open')) {\n this.host.showPopover();\n }\n\n if (this.host.isConnected && this.host.hidden && this.host.matches(':popover-open')) {\n this.host.hidePopover();\n }\n });\n observer.observe(this.host, { attributes: true, attributeFilter: ['hidden'] });\n this.#observers.push(observer);\n\n // determine if popover is open by default\n if (\n this.host.isConnected &&\n !this.#nativeTriggers.length &&\n !this.host.hidden &&\n !this.host.matches(':popover-open')\n ) {\n this.host.popover = 'manual';\n this.host.showPopover();\n }\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n #updateLegacyTriggers() {\n const trigger = this.#legacyHostTrigger as HTMLButtonElement;\n\n if (this.#previousLegacyTrigger && this.#previousLegacyTrigger !== trigger) {\n this.#clearLegacyTrigger(this.#previousLegacyTrigger);\n }\n\n if (this.#hintTrigger && this.#hintTrigger !== trigger) {\n this.#removeHintTrigger();\n }\n\n if (!trigger) {\n this.#previousLegacyTrigger = null;\n return;\n }\n\n if (this.host.popoverType === 'hint') {\n this.#setupHintTrigger(trigger);\n } else {\n this.#setupPopoverTargetTrigger(trigger);\n }\n this.#previousLegacyTrigger = trigger;\n }\n\n #setupHintTrigger(trigger: HTMLButtonElement) {\n if (this.#hintTrigger === trigger) return;\n\n trigger.addEventListener('mouseenter', this.#onHintMouseEnter);\n trigger.addEventListener('mouseleave', this.#onHintMouseLeave);\n trigger.addEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = trigger;\n }\n\n #setupPopoverTargetTrigger(trigger: HTMLButtonElement) {\n this.#removeHintTrigger();\n this.host.id = this.host.id ? this.host.id : generateId();\n trigger.popoverTargetElement = this.host;\n trigger.setAttribute('popovertarget', this.host.id);\n }\n\n #toggleFocus(open: boolean, target: HTMLElement) {\n if (open) {\n // only focus popover if not the active element and not containing the active element already\n if ((this.host.getRootNode() as Document).activeElement !== this.host && !this.host.shadowRoot!.activeElement) {\n focusElement(this.host);\n }\n } else {\n focusElement(target);\n }\n }\n\n #clearLegacyTrigger(trigger: HTMLButtonElement) {\n trigger.popoverTargetElement = null;\n trigger.removeAttribute('popovertarget');\n if (this.#hintTrigger === trigger) {\n this.#removeHintTrigger();\n }\n }\n\n #removeHintTrigger() {\n this.#hintTrigger?.removeEventListener('mouseenter', this.#onHintMouseEnter);\n this.#hintTrigger?.removeEventListener('mouseleave', this.#onHintMouseLeave);\n this.#hintTrigger?.removeEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = null;\n }\n\n #onBeforeToggle = (e: ToggleEvent) => {\n if (e.newState === 'open') {\n this.host._internals!.states.add('transition-start');\n }\n };\n\n #onToggle = (e: ToggleEvent) => {\n if (this.host.behaviorTrigger) {\n this.host.hidden = e.newState === 'closed';\n }\n\n if (e.newState === 'open' && this.host.closeTimeout) {\n this.#setCloseTimeout();\n }\n\n if (e.newState === 'closed') {\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n this.host.inert = this.host.matches(':not(:popover-open)');\n\n if (this.host.modal) {\n this.#toggleFocus(e.newState === 'open', e.target as HTMLElement);\n }\n\n this.host.dispatchEvent(\n new CustomEvent(e.newState === 'open' && e.oldState !== 'open' ? 'open' : 'close', {\n bubbles: true,\n composed: true,\n detail: { trigger: e.source }\n })\n );\n };\n\n #onCommand = (e: CommandEvent) => {\n if (e.command === 'toggle-popover') {\n this.host.togglePopover({ source: e.source as HTMLElement });\n }\n\n if (e.command === 'hide-popover') {\n this.host.hidePopover();\n this.#clearInterestTimeout();\n }\n\n if (e.command === 'show-popover') {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n };\n\n #onInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n const interestDelayStart = this.host.openDelay ?? this.#parseInterestDelay();\n if (interestDelayStart) {\n this.#interestTimeout = setTimeout(() => {\n if (this.host.isConnected) {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }, interestDelayStart);\n } else {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }\n };\n\n #onLoseInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n this.host.hidePopover();\n }\n\n this.#clearInterestTimeout();\n };\n\n #onPointerDown = (e: PointerEvent) => {\n if (this.host.modal && this.host.matches(':popover-open')) {\n this.#pointerdownWithinModal = clickOutsideElementBounds(e, this.host);\n }\n };\n\n #onPointerUp = (e: PointerEvent) => {\n if (\n this.#pointerdownWithinModal &&\n this.host.popoverDismissible &&\n this.host.modal &&\n this.host.matches(':popover-open') &&\n !hasOpenPopover(this.host) &&\n clickOutsideElementBounds(e, this.host)\n ) {\n this.host.hidePopover();\n }\n };\n\n #onHintMouseEnter = (e: MouseEvent) => {\n this.host.showPopover({ source: e.currentTarget as HTMLElement });\n };\n\n #onHintMouseLeave = () => {\n this.host.hidePopover();\n };\n}\n"],"mappings":";;;;;AA6BA,IAAaA,IAAb,MAAgG;CAC9F,IAAIC,KAAiC;EACnC,IAAMC,IAAO,KAAK,KAAK,YAAY,GAC7BC,IAAwB,MAAM,KAClCD,EAAK,iBAAiB,mBAAmB,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,GAAG,CACnG,GAEME,IAAqB,MAAM,KAC/BF,EAAK,iBAAiB,gBAAgB,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,GAAG,CAChG,GAEMG,IAAsB,MAAM,KAChCH,EAAK,iBAAiB,iBAAiB,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,GAAG,CACjG;EAEA,OAAO;GAAC,GAAGC;GAAuB,GAAGC;GAAoB,GAAGC;EAAmB;CACjF;CAEA,YAAY,GAAiB;EAC3B,AADkB,KAAA,OAAAC,GAClB,KAAK,KAAK,cAAc,IAAI;EAE5B,IAAMC,IAAc,KAAK,KAAK;EAC9B,KAAK,KAAK,eAAe,MAAiC;GACxD,IAAI,KAAK,KAAK,aAAa;IAEzB,IAAIC,IAAuCC,GAAS,UAAU;IAW9D,AAVA,AAMID,MALE,KAAK,KAAK,SACHE,EAAc,KAAK,IAAI,IACvB,KAAK,KAAK,UACVC,EAAe,KAAK,MAAM,KAAK,KAAK,OAAO,IAE3C,WAAW,SAAS,eAIjCJ,EAAY,KAAK,KAAK,MAAM,EAAU,UAAsB,CAAC;GAC/D;EACF;CACF;CAEA,MAAM,gBAAgB;EAIpB,AAHAK,EAAgB,KAAK,IAAI,GACzB,KAAK,KAAK,UAAU,KAAK,KAAK,eAAe,MAC7C,MAAM,KAAK,KAAK,gBACX,KAAK,KAAK,gBAEf,KAAK,KAAK,aAAa,eAAe,EAAE,GACxC,KAAKC,GAAsB,GAC3B,KAAKC,GAAqB,GAC1B,KAAKC,GAAwB,GAC7B,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,qBAAqB,KAAK,CAAC,CAAC,KAAKd,GAAgB,QAErF,KAAK,KAAK,iBAAiB,gBAAgB,KAAKe,EAAe,GAC/D,KAAK,KAAK,iBAAiB,UAAU,KAAKC,EAA0B,GACpE,KAAK,KAAK,iBAAiB,WAAW,KAAKC,EAA2B,GACtE,KAAK,KAAK,iBAAiB,YAAY,KAAKC,EAA4B,GACxE,KAAK,KAAK,iBAAiB,gBAAgB,KAAKC,EAAgC;CAClF;CAEA,KAAyD;CACzD,KAAsD;CACtD,KAAiC,CAAC;CAClC,KAAmD;CACnD,KAAyC;CAEzC,MAAM,cAAc;EAElB,AADA,KAAK,KAAK,UAAU,KAAK,KAAK,eAAe,MAC7C,KAAKP,GAAsB;CAC7B;CAEA,mBAAmB;EAYjB,AAXA,KAAKQ,GAAW,SAAQ,MAAYC,EAAS,WAAW,CAAC,GACzD,KAAKD,GAAW,SAAS,GACzB,KAAK,KAAK,oBAAoB,gBAAgB,KAAKL,EAAe,GAClE,KAAK,KAAK,oBAAoB,UAAU,KAAKC,EAA0B,GACvE,KAAK,KAAK,oBAAoB,WAAW,KAAKC,EAA2B,GACzE,KAAK,KAAK,oBAAoB,YAAY,KAAKC,EAA4B,GAC3E,KAAK,KAAK,oBAAoB,gBAAgB,KAAKC,EAAgC,GACnF,KAAK,KAAK,oBAAoB,eAAe,KAAKG,EAAc,GAChE,KAAK,KAAK,oBAAoB,aAAa,KAAKC,EAAY,GAC5D,KAAKC,GAAmB,GACxB,KAAKC,GAAsB,GAC3B,KAAKC,GAAmB;CAC1B;CAEA,KAAmB;EAEjB,AADA,KAAKA,GAAmB,GACpB,KAAK,KAAK,iBACZ,KAAKC,KAAgB,iBAAiB,KAAK,KAAK,YAAY,GAAG,KAAK,KAAK,YAAY;CAEzF;CAEA,KAAqB;EACnB,AAEE,KAAKA,QADL,aAAa,KAAKA,EAAa,GACV;CAEzB;CAEA,KAAwB;EACtB,AAEE,KAAKC,QADL,aAAa,KAAKA,EAAgB,GACV;CAE5B;CAEA,KAA8B;EAE5B,IAAMC,IADQ,iBAAiB,KAAK,IACvB,CAAA,CAAoD;EACjE,IAAI,CAACA,GACH,OAAO;EAET,IAAMC,IAAQ,WAAWD,CAAG;EAC5B,OAAOA,EAAI,SAAS,IAAI,IAAIC,IAAQA,IAAQ;CAC9C;CAEA,KAA0B;CAE1B,KAA0B;EAIxB,AAHA,KAAK,KAAK,oBAAoB,eAAe,KAAKR,EAAc,GAChE,KAAK,KAAK,oBAAoB,aAAa,KAAKC,EAAY,GAC5D,KAAK,KAAK,iBAAiB,eAAe,KAAKD,EAAc,GAC7D,KAAK,KAAK,iBAAiB,aAAa,KAAKC,EAAY;CAC3D;CAEA,IAAIQ,KAAyC;EAC3C,OAAO,KAAK,KAAK,UAAWrB,EAAe,KAAK,MAAM,KAAK,KAAK,OAAO,IAA0B;CACnG;CAKA,MAAMG,KAAuB;EAC3B,MAAM,IAAI,SAAQ,MAAK,sBAAsBmB,CAAC,CAAC;EAG/C,IAAMX,IAAW,IAAI,uBAAuB;GAK1C,AAJI,KAAK,KAAK,eAAe,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,KAAK,QAAQ,eAAe,KAClF,KAAK,KAAK,YAAY,GAGpB,KAAK,KAAK,eAAe,KAAK,KAAK,UAAU,KAAK,KAAK,QAAQ,eAAe,KAChF,KAAK,KAAK,YAAY;EAE1B,CAAC;EAKD,AAJAA,EAAS,QAAQ,KAAK,MAAM;GAAE,YAAY;GAAM,iBAAiB,CAAC,QAAQ;EAAE,CAAC,GAC7E,KAAKD,GAAW,KAAKC,CAAQ,GAI3B,KAAK,KAAK,eACV,CAAC,KAAKrB,GAAgB,UACtB,CAAC,KAAK,KAAK,UACX,CAAC,KAAK,KAAK,QAAQ,eAAe,MAElC,KAAK,KAAK,UAAU,UACpB,KAAK,KAAK,YAAY;CAE1B;CAKA,KAAwB;EACtB,IAAMiC,IAAU,KAAKF;EAUrB,AARI,KAAKG,MAA0B,KAAKA,OAA2BD,KACjE,KAAKE,GAAoB,KAAKD,EAAsB,GAGlD,KAAKE,MAAgB,KAAKA,OAAiBH,KAC7C,KAAKT,GAAmB,GAGrBS,KAKD,KAAK,KAAK,gBAAgB,SAC5B,KAAKI,GAAkBJ,CAAO,IAE9B,KAAKK,GAA2BL,CAAO,GAEzC,KAAKC,KAAyBD,KAT5B,KAAKC,KAAyB;CAUlC;CAEA,GAAkB,GAA4B;EAC5C,AAAI,KAAKE,OAAiBH,MAE1BA,EAAQ,iBAAiB,cAAc,KAAKM,EAAiB,GAC7DN,EAAQ,iBAAiB,cAAc,KAAKO,EAAiB,GAC7DP,EAAQ,iBAAiB,YAAY,KAAKO,EAAiB,GAC3D,KAAKJ,KAAeH;CACtB;CAEA,GAA2B,GAA4B;EAIrD,AAHA,KAAKT,GAAmB,GACxB,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAKiB,EAAW,GACxD,EAAQ,uBAAuB,KAAK,MACpCR,EAAQ,aAAa,iBAAiB,KAAK,KAAK,EAAE;CACpD;CAEA,GAAa,GAAe,GAAqB;EAC/C,AAAIS,IAEG,KAAK,KAAK,YAAY,CAAC,CAAc,kBAAkB,KAAK,QAAQ,CAAC,KAAK,KAAK,WAAY,iBAC9FC,EAAa,KAAK,IAAI,IAGxBA,EAAaC,CAAM;CAEvB;CAEA,GAAoB,GAA4B;EAG9C,AAFA,EAAQ,uBAAuB,MAC/BX,EAAQ,gBAAgB,eAAe,GACnC,KAAKG,OAAiBH,KACxB,KAAKT,GAAmB;CAE5B;CAEA,KAAqB;EAInB,AAHA,KAAKY,IAAc,oBAAoB,cAAc,KAAKG,EAAiB,GAC3E,KAAKH,IAAc,oBAAoB,cAAc,KAAKI,EAAiB,GAC3E,KAAKJ,IAAc,oBAAoB,YAAY,KAAKI,EAAiB,GACzE,KAAKJ,KAAe;CACtB;CAEA,MAAmB,MAAmB;EACpC,AAAI,EAAE,aAAa,UACjB,KAAK,KAAK,WAAY,OAAO,IAAI,kBAAkB;CAEvD;CAEA,MAAa,MAAmB;EAoB9B,AAnBI,KAAK,KAAK,oBACZ,KAAK,KAAK,SAAS,EAAE,aAAa,WAGhC,EAAE,aAAa,UAAU,KAAK,KAAK,gBACrC,KAAKS,GAAiB,GAGpB,EAAE,aAAa,aACjB,KAAKpB,GAAsB,GAC3B,KAAKC,GAAmB,IAG1B,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,qBAAqB,GAErD,KAAK,KAAK,SACZ,KAAKoB,GAAa,EAAE,aAAa,QAAQ,EAAE,MAAqB,GAGlE,KAAK,KAAK,cACR,IAAI,YAAY,EAAE,aAAa,UAAU,EAAE,aAAa,SAAS,SAAS,SAAS;GACjF,SAAS;GACT,UAAU;GACV,QAAQ,EAAE,SAAS,EAAE,OAAO;EAC9B,CAAC,CACH;CACF;CAEA,MAAc,MAAoB;EAUhC,AATI,EAAE,YAAY,oBAChB,KAAK,KAAK,cAAc,EAAE,QAAQ,EAAE,OAAsB,CAAC,GAGzD,EAAE,YAAY,mBAChB,KAAK,KAAK,YAAY,GACtB,KAAKrB,GAAsB,IAGzB,EAAE,YAAY,kBAChB,KAAK,KAAK,YAAY,EAAE,QAAQ,EAAE,OAAsB,CAAC;CAE7D;CAEA,MAAe,MAAqB;EAElC,IADwB,EAAE,QAAQ,UAAU,SAAS,GAAG,GACnC;GACnB,IAAMsB,IAAqB,KAAK,KAAK,aAAa,KAAKC,GAAoB;GAC3E,AAAID,IACF,KAAKnB,KAAmB,iBAAiB;IACvC,AAAI,KAAK,KAAK,eACZ,KAAK,KAAK,YAAY,EAAE,QAAQ,EAAE,OAAsB,CAAC;GAE7D,GAAGmB,CAAkB,IAErB,KAAK,KAAK,YAAY,EAAE,QAAQ,EAAE,OAAsB,CAAC;EAE7D;CACF;CAEA,MAAmB,MAAqB;EAMtC,AALwB,EAAE,QAAQ,UAAU,SAAS,GAAG,KAEtD,KAAK,KAAK,YAAY,GAGxB,KAAKtB,GAAsB;CAC7B;CAEA,MAAkB,MAAoB;EACpC,AAAI,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,eAAe,MACtD,KAAKwB,KAA0BC,EAA0B,GAAG,KAAK,IAAI;CAEzE;CAEA,MAAgB,MAAoB;EAClC,AACE,KAAKD,MACL,KAAK,KAAK,sBACV,KAAK,KAAK,SACV,KAAK,KAAK,QAAQ,eAAe,KACjC,CAACE,EAAe,KAAK,IAAI,KACzBD,EAA0B,GAAG,KAAK,IAAI,KAEtC,KAAK,KAAK,YAAY;CAE1B;CAEA,MAAqB,MAAkB;EACrC,KAAK,KAAK,YAAY,EAAE,QAAQ,EAAE,cAA6B,CAAC;CAClE;CAEA,WAA0B;EACxB,KAAK,KAAK,YAAY;CACxB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"type-popover.controller.examples.js","names":["type_popover_controller_examples_default"],"sources":["../../../src/internal/controllers/type-popover.controller.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport type { PopoverPosition, PopoverAlign, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, TypeNativePopoverController, useStyles } from '@nvidia-elements/core/internal';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\n\nexport default {\n title: 'Internal/Controllers'\n}\n\nclass PopoverDemo extends LitElement {\n @property({ type: String }) anchor: string | HTMLElement;\n\n @property({ type: String }) trigger: string | HTMLElement;\n\n @property({ type: String, reflect: true }) position: PopoverPosition = 'top';\n\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'center';\n\n @property({ type: Boolean }) arrow = true;\n\n @query('.arrow') popoverArrow: HTMLElement;\n\n static styles = useStyles([popoverStyles, css`\n :host {\n --nve-sys-layer-popover-arrow-padding: 6px;\n --nve-sys-layer-popover-arrow-offset: 2px;\n --nve-sys-layer-popover-offset: 2px;\n }\n\n [internal-host] {\n padding: 18px;\n min-width: 80px;\n text-align: center;\n background: #fff;\n color: #2d2d2d;\n }\n\n :host::backdrop {\n background: none;\n }\n\n .arrow {\n width: 12px;\n height: 12px;\n background: #fff;\n position: absolute;\n }\n `]);\n\n /** @private */\n readonly popoverType: PopoverType = 'auto';\n\n protected typeNativePopoverController = new TypeNativePopoverController<PopoverDemo>(this);\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <div id=\"content\">\n <slot></slot>\n </div>\n </div>\n ${this.arrow ? html`<div class=\"arrow\"></div>` : ''}\n `;\n }\n}\ncustomElements.get('ui-popover') || customElements.define('ui-popover', PopoverDemo);\n\n/**\n * @summary Basic popover toggled by a button using the native popovertarget API.\n * @tags test-case\n */\nexport const Default = {\n render: () => html`\n <style>\n #root-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n height: 100vh;\n }\n </style>\n <ui-popover id=\"type-popover\">popover</ui-popover>\n <nve-button popovertarget=\"type-popover\">toggle</nve-button>\n `\n};\n\n/**\n * @summary Popover positioning and alignment options across all anchor and viewport placements.\n * @tags test-case\n */\nexport const Alignment = {\n render: () => html`\n <nve-card id=\"card\" style=\"width: 450px; height: 300px;\"></nve-card>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n\n <ui-popover popover-type=\"manual\" position=\"center\">center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n `\n}\n\nclass MyElement extends LitElement {\n render() {\n return html`\n <div style=\"width: 250px; height: 100px; resize: both; overflow: scroll; border: 1px solid white;\">\n <nve-dropdown id=\"my-dropdown\">dropdown content</nve-dropdown>\n <nve-icon-button id=\"my-dropdown-anchor\" popovertarget=\"my-dropdown\" icon-name=\"refresh\"></nve-icon-button>\n </div>\n `;\n }\n}\n\ncustomElements.get('my-element') || customElements.define('my-element', MyElement);"],"mappings":";AAGA,IAAAA,IAAc"}
1
+ {"version":3,"file":"type-popover.controller.examples.js","names":["type_popover_controller_examples_default"],"sources":["../../../src/internal/controllers/type-popover.controller.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport type { PopoverPosition, PopoverAlign, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, TypeNativePopoverController } from '@nvidia-elements/core/internal';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\n\nexport default {\n title: 'Internal/Controllers'\n}\n\nclass PopoverDemo extends LitElement {\n @property({ type: String }) anchor: string | HTMLElement;\n\n @property({ type: String }) trigger: string | HTMLElement;\n\n @property({ type: String, reflect: true }) position: PopoverPosition = 'top';\n\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'center';\n\n @property({ type: Boolean }) arrow = true;\n\n @query('.arrow') popoverArrow: HTMLElement;\n\n static styles = useStyles([popoverStyles, css`\n :host {\n --nve-sys-layer-popover-arrow-padding: 6px;\n --nve-sys-layer-popover-arrow-offset: 2px;\n --nve-sys-layer-popover-offset: 2px;\n }\n\n [internal-host] {\n padding: 18px;\n min-width: 80px;\n text-align: center;\n background: #fff;\n color: #2d2d2d;\n }\n\n :host::backdrop {\n background: none;\n }\n\n .arrow {\n width: 12px;\n height: 12px;\n background: #fff;\n position: absolute;\n }\n `]);\n\n /** @private */\n readonly popoverType: PopoverType = 'auto';\n\n protected typeNativePopoverController = new TypeNativePopoverController<PopoverDemo>(this);\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <div id=\"content\">\n <slot></slot>\n </div>\n </div>\n ${this.arrow ? html`<div class=\"arrow\"></div>` : ''}\n `;\n }\n}\ncustomElements.get('ui-popover') || customElements.define('ui-popover', PopoverDemo);\n\n/**\n * @summary Basic popover toggled by a button using the native popovertarget API.\n * @tags test-case\n */\nexport const Default = {\n render: () => html`\n <style>\n #root-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n height: 100vh;\n }\n </style>\n <ui-popover id=\"type-popover\">popover</ui-popover>\n <nve-button popovertarget=\"type-popover\">toggle</nve-button>\n `\n};\n\n/**\n * @summary Popover positioning and alignment options across all anchor and viewport placements.\n * @tags test-case\n */\nexport const Alignment = {\n render: () => html`\n <nve-card id=\"card\" style=\"width: 450px; height: 300px;\"></nve-card>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n\n <ui-popover popover-type=\"manual\" position=\"center\">center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n `\n}\n\nclass MyElement extends LitElement {\n render() {\n return html`\n <div style=\"width: 250px; height: 100px; resize: both; overflow: scroll; border: 1px solid white;\">\n <nve-dropdown id=\"my-dropdown\">dropdown content</nve-dropdown>\n <nve-icon-button id=\"my-dropdown-anchor\" popovertarget=\"my-dropdown\" icon-name=\"refresh\"></nve-icon-button>\n </div>\n `;\n }\n}\n\ncustomElements.get('my-element') || customElements.define('my-element', MyElement);"],"mappings":";AAGA,IAAAA,IAAc"}
@@ -1,4 +1,4 @@
1
- import { attachInternals as e } from "../utils/a11y.js";
1
+ import { attachInternals as e } from "@nvidia-elements/foundations/internal/a11y";
2
2
  // src/internal/controllers/type-selectable.controller.ts
3
3
  var t = class {
4
4
  #e = !1;
@@ -1 +1 @@
1
- {"version":3,"file":"type-selectable.controller.js","names":["TypeSelectableController","host","attachInternals","#commandTriggered"],"sources":["../../../src/internal/controllers/type-selectable.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 { attachInternals } from '../utils/a11y.js';\n\nexport type TypeSelectable = ReactiveElement & {\n selected?: boolean;\n behaviorSelect?: boolean;\n selectable?: 'single' | 'multi';\n _internals?: ElementInternals;\n};\n\n/**\n * Controller for enabling selectable behavior for elements.\n * @event select - Dispatched when the selectable element selects.\n * @property selected - selected state\n * @property behaviorSelect - determines if stateful auto behavior should enable\n */\nexport class TypeSelectableController<T extends TypeSelectable> implements ReactiveController {\n #commandTriggered = false;\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n hostConnected() {\n attachInternals(this.host);\n\n this.host.addEventListener('command', ((e: CommandEvent) => {\n this.#commandTriggered = true;\n if (e.command === '--toggle-select') {\n this.toggle();\n }\n\n if (e.command === '--select') {\n this.select();\n }\n\n if (e.command === '--deselect') {\n this.host.selected = false;\n }\n this.#commandTriggered = false;\n }) as EventListener);\n }\n\n hostUpdated() {\n this.host.selectable === 'single'\n ? this.host._internals!.states.add('selectable-single')\n : this.host._internals!.states.delete('selectable-single');\n this.host.selectable === 'multi'\n ? this.host._internals!.states.add('selectable-multi')\n : this.host._internals!.states.delete('selectable-multi');\n }\n\n select() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = true;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n deselect() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = false;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n toggle() {\n if (this.host.selected) {\n this.deselect();\n } else {\n this.select();\n }\n }\n}\n"],"mappings":";;AAmBA,IAAaA,IAAb,MAA8F;CAC5F,KAAoB;CACpB,YAAY,GAAiB;EAC3B,AADkB,KAAA,OAAAC,GAClB,KAAK,KAAK,cAAc,IAAI;CAC9B;CAEA,gBAAgB;EAGd,AAFAC,EAAgB,KAAK,IAAI,GAEzB,KAAK,KAAK,iBAAiB,aAAa,MAAoB;GAa1D,AAZA,KAAKC,KAAoB,IACrB,EAAE,YAAY,qBAChB,KAAK,OAAO,GAGV,EAAE,YAAY,cAChB,KAAK,OAAO,GAGV,EAAE,YAAY,iBAChB,KAAK,KAAK,WAAW,KAEvB,KAAKA,KAAoB;EAC3B,EAAmB;CACrB;CAEA,cAAc;EAIZ,AAHA,KAAK,KAAK,eAAe,WACrB,KAAK,KAAK,WAAY,OAAO,IAAI,mBAAmB,IACpD,KAAK,KAAK,WAAY,OAAO,OAAO,mBAAmB,GAC3D,KAAK,KAAK,eAAe,UACrB,KAAK,KAAK,WAAY,OAAO,IAAI,kBAAkB,IACnD,KAAK,KAAK,WAAY,OAAO,OAAO,kBAAkB;CAC5D;CAEA,SAAS;EAKP,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,WAAW;EAKT,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,SAAS;EACP,AAAI,KAAK,KAAK,WACZ,KAAK,SAAS,IAEd,KAAK,OAAO;CAEhB;AACF"}
1
+ {"version":3,"file":"type-selectable.controller.js","names":["TypeSelectableController","host","attachInternals","#commandTriggered"],"sources":["../../../src/internal/controllers/type-selectable.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 { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\n\nexport type TypeSelectable = ReactiveElement & {\n selected?: boolean;\n behaviorSelect?: boolean;\n selectable?: 'single' | 'multi';\n _internals?: ElementInternals;\n};\n\n/**\n * Controller for enabling selectable behavior for elements.\n * @event select - Dispatched when the selectable element selects.\n * @property selected - selected state\n * @property behaviorSelect - determines if stateful auto behavior should enable\n */\nexport class TypeSelectableController<T extends TypeSelectable> implements ReactiveController {\n #commandTriggered = false;\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n hostConnected() {\n attachInternals(this.host);\n\n this.host.addEventListener('command', ((e: CommandEvent) => {\n this.#commandTriggered = true;\n if (e.command === '--toggle-select') {\n this.toggle();\n }\n\n if (e.command === '--select') {\n this.select();\n }\n\n if (e.command === '--deselect') {\n this.host.selected = false;\n }\n this.#commandTriggered = false;\n }) as EventListener);\n }\n\n hostUpdated() {\n this.host.selectable === 'single'\n ? this.host._internals!.states.add('selectable-single')\n : this.host._internals!.states.delete('selectable-single');\n this.host.selectable === 'multi'\n ? this.host._internals!.states.add('selectable-multi')\n : this.host._internals!.states.delete('selectable-multi');\n }\n\n select() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = true;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n deselect() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = false;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n toggle() {\n if (this.host.selected) {\n this.deselect();\n } else {\n this.select();\n }\n }\n}\n"],"mappings":";;AAmBA,IAAaA,IAAb,MAA8F;CAC5F,KAAoB;CACpB,YAAY,GAAiB;EAC3B,AADkB,KAAA,OAAAC,GAClB,KAAK,KAAK,cAAc,IAAI;CAC9B;CAEA,gBAAgB;EAGd,AAFAC,EAAgB,KAAK,IAAI,GAEzB,KAAK,KAAK,iBAAiB,aAAa,MAAoB;GAa1D,AAZA,KAAKC,KAAoB,IACrB,EAAE,YAAY,qBAChB,KAAK,OAAO,GAGV,EAAE,YAAY,cAChB,KAAK,OAAO,GAGV,EAAE,YAAY,iBAChB,KAAK,KAAK,WAAW,KAEvB,KAAKA,KAAoB;EAC3B,EAAmB;CACrB;CAEA,cAAc;EAIZ,AAHA,KAAK,KAAK,eAAe,WACrB,KAAK,KAAK,WAAY,OAAO,IAAI,mBAAmB,IACpD,KAAK,KAAK,WAAY,OAAO,OAAO,mBAAmB,GAC3D,KAAK,KAAK,eAAe,UACrB,KAAK,KAAK,WAAY,OAAO,IAAI,kBAAkB,IACnD,KAAK,KAAK,WAAY,OAAO,OAAO,kBAAkB;CAC5D;CAEA,SAAS;EAKP,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,WAAW;EAKT,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,SAAS;EACP,AAAI,KAAK,KAAK,WACZ,KAAK,SAAS,IAEd,KAAK,OAAO;CAEhB;AACF"}
@@ -18,7 +18,6 @@ export * from './controllers/type-selectable.controller.js';
18
18
  export * from './controllers/type-native-popover.controller.js';
19
19
  export * from './controllers/type-ssr.controller.js';
20
20
  export * from './decorators/host-attr.js';
21
- export * from './decorators/scoped-registry.js';
22
21
  export * from './styles/index.js';
23
22
  export * from './styles/popover.js';
24
23
  export * from '@nvidia-elements/foundations/internal/i18n';
@@ -11,29 +11,28 @@ import { KeynavCode as x, appendAnchorName as S, appendRootNodeStyle as C, apply
11
11
  import { KeyNavigationGridController as Q, getNextKeyGridItem as $, keyNavigationGrid as ie } from "./controllers/keynav-grid.controller.js";
12
12
  import { KeyNavigationListController as ae, getNextKeyListItem as oe, keyNavigationList as se } from "./controllers/keynav-list.controller.js";
13
13
  import { KeyNavigationSpatialController as ce } from "./controllers/keynav-spatial.controller.js";
14
- import { associateAriaDescribedBy as le, associateAriaLabel as ue, associateControlGroup as de, associateDataList as fe, associateLabel as pe, attachInternals as me } from "./utils/a11y.js";
15
- import { StateExpandedController as he, stateExpanded as ge } from "./controllers/state-expanded.controller.js";
16
- import { StateHighlightedController as _e, stateHighlighted as ve } from "./controllers/state-highlighted.controller.js";
17
- import { StateScrollController as ye, stateScroll as be } from "./controllers/state-scroll.controller.js";
18
- import { StateSelectedController as xe, stateSelected as Se } from "./controllers/state-selected.controller.js";
19
- import { TypeAnchorController as Ce, typeAnchor as we } from "./controllers/type-anchor.controller.js";
20
- import { TypeClosableController as Te } from "./controllers/type-closable.controller.js";
21
- import { TypeExpandableController as Ee } from "./controllers/type-expandable.controller.js";
22
- import { TypeSelectableController as De } from "./controllers/type-selectable.controller.js";
23
- import { TypeNativePopoverController as Oe } from "./controllers/type-native-popover.controller.js";
24
- import { TypeSSRController as ke, typeSSR as Ae } from "./controllers/type-ssr.controller.js";
25
- import { hostAttr as je } from "./decorators/host-attr.js";
26
- import { scopedRegistry as Me } from "./decorators/scoped-registry.js";
27
- import { colorStateStyles as Ne, statusStateStyles as Pe, supportStateStyles as Fe, useStyles as Ie } from "./styles/index.js";
28
- import { popoverStyles as Le } from "./styles/popover2.js";
29
- import { TransitionService as Re } from "./services/transition.service.js";
30
- import { statusIcons as ze } from "./types/index.js";
31
- import { formatStandardNumber as Be, parseVersion as Ve } from "./utils/objects.js";
32
- import { createLightDismiss as He } from "./utils/keynav.js";
33
- import { finiteOr as Ue, nonnegativeFiniteOr as We, positiveFiniteOr as Ge } from "./utils/numeric.js";
14
+ import { StateExpandedController as le, stateExpanded as ue } from "./controllers/state-expanded.controller.js";
15
+ import { StateHighlightedController as de, stateHighlighted as fe } from "./controllers/state-highlighted.controller.js";
16
+ import { StateScrollController as pe, stateScroll as me } from "./controllers/state-scroll.controller.js";
17
+ import { StateSelectedController as he, stateSelected as ge } from "./controllers/state-selected.controller.js";
18
+ import { TypeAnchorController as _e, typeAnchor as ve } from "./controllers/type-anchor.controller.js";
19
+ import { TypeClosableController as ye } from "./controllers/type-closable.controller.js";
20
+ import { TypeExpandableController as be } from "./controllers/type-expandable.controller.js";
21
+ import { TypeSelectableController as xe } from "./controllers/type-selectable.controller.js";
22
+ import { TypeNativePopoverController as Se } from "./controllers/type-native-popover.controller.js";
23
+ import { TypeSSRController as Ce, typeSSR as we } from "./controllers/type-ssr.controller.js";
24
+ import { hostAttr as Te } from "./decorators/host-attr.js";
25
+ import { colorStateStyles as Ee, statusStateStyles as De, supportStateStyles as Oe } from "./styles/index.js";
26
+ import { popoverStyles as ke } from "./styles/popover2.js";
27
+ import { TransitionService as Ae } from "./services/transition.service.js";
28
+ import { statusIcons as je } from "./types/index.js";
29
+ import { associateAriaDescribedBy as Me, associateAriaLabel as Ne, associateControlGroup as Pe, associateDataList as Fe, associateLabel as Ie } from "./utils/a11y.js";
30
+ import { formatStandardNumber as Le, parseVersion as Re } from "./utils/objects.js";
31
+ import { createLightDismiss as ze } from "./utils/keynav.js";
32
+ import { finiteOr as Be, nonnegativeFiniteOr as Ve, positiveFiniteOr as He } from "./utils/numeric.js";
34
33
  export * from "@nvidia-elements/foundations/internal/i18n";
35
34
  // src/internal/index.ts
36
- var Ke = /* @__PURE__ */ ee({
35
+ var Ue = /* @__PURE__ */ ee({
37
36
  AuditController: () => a,
38
37
  DOCS_URL: () => n,
39
38
  GestureController: () => s,
@@ -43,40 +42,39 @@ var Ke = /* @__PURE__ */ ee({
43
42
  KeyStateController: () => c,
44
43
  KeynavCode: () => x,
45
44
  LogService: () => e,
46
- StateExpandedController: () => he,
47
- StateHighlightedController: () => _e,
48
- StateScrollController: () => ye,
49
- StateSelectedController: () => xe,
50
- TransitionService: () => Re,
51
- TypeAnchorController: () => Ce,
52
- TypeClosableController: () => Te,
53
- TypeExpandableController: () => Ee,
54
- TypeNativePopoverController: () => Oe,
55
- TypeSSRController: () => ke,
56
- TypeSelectableController: () => De,
45
+ StateExpandedController: () => le,
46
+ StateHighlightedController: () => de,
47
+ StateScrollController: () => pe,
48
+ StateSelectedController: () => he,
49
+ TransitionService: () => Ae,
50
+ TypeAnchorController: () => _e,
51
+ TypeClosableController: () => ye,
52
+ TypeExpandableController: () => be,
53
+ TypeNativePopoverController: () => Se,
54
+ TypeSSRController: () => Ce,
55
+ TypeSelectableController: () => xe,
57
56
  appendAnchorName: () => S,
58
57
  appendRootNodeStyle: () => C,
59
58
  applySlotContentStates: () => w,
60
- associateAriaDescribedBy: () => le,
61
- associateAriaLabel: () => ue,
62
- associateControlGroup: () => de,
63
- associateDataList: () => fe,
64
- associateLabel: () => pe,
65
- attachInternals: () => me,
59
+ associateAriaDescribedBy: () => Me,
60
+ associateAriaLabel: () => Ne,
61
+ associateControlGroup: () => Pe,
62
+ associateDataList: () => Fe,
63
+ associateLabel: () => Ie,
66
64
  audit: () => o,
67
65
  auditParentElement: () => t,
68
66
  clickOutsideElementBounds: () => T,
69
- colorStateStyles: () => Ne,
67
+ colorStateStyles: () => Ee,
70
68
  createGhostElement: () => E,
71
- createLightDismiss: () => He,
69
+ createLightDismiss: () => ze,
72
70
  debounce: () => l,
73
71
  endOfScrollBox: () => D,
74
72
  excessiveInstanceLimit: () => 50,
75
- finiteOr: () => Ue,
73
+ finiteOr: () => Be,
76
74
  focusElement: () => f,
77
75
  focusElementTimeout: () => p,
78
76
  formatFileSize: () => r,
79
- formatStandardNumber: () => Be,
77
+ formatStandardNumber: () => Le,
80
78
  generateId: () => O,
81
79
  getActiveElement: () => m,
82
80
  getAnchorNames: () => k,
@@ -94,7 +92,7 @@ var Ke = /* @__PURE__ */ ee({
94
92
  getThemeTokens: () => z,
95
93
  hasHorizontalScrollBar: () => B,
96
94
  hasInvalidDOMGrid: () => V,
97
- hostAttr: () => je,
95
+ hostAttr: () => Te,
98
96
  initializeKeyListItems: () => h,
99
97
  isContextMenuClick: () => H,
100
98
  isFocusable: () => g,
@@ -103,38 +101,36 @@ var Ke = /* @__PURE__ */ ee({
103
101
  keyNavigationGrid: () => ie,
104
102
  keyNavigationList: () => se,
105
103
  matchesElementName: () => U,
106
- nonnegativeFiniteOr: () => We,
104
+ nonnegativeFiniteOr: () => Ve,
107
105
  onChildListMutation: () => u,
108
106
  onListboxActivate: () => y,
109
107
  openEyeDropper: () => W,
110
- parseVersion: () => Ve,
111
- popoverStyles: () => Le,
112
- positiveFiniteOr: () => Ge,
108
+ parseVersion: () => Re,
109
+ popoverStyles: () => ke,
110
+ positiveFiniteOr: () => He,
113
111
  removeAnchorName: () => G,
114
112
  removeEmptySlotWhitespace: () => K,
115
113
  removeEmptyTextNode: () => q,
116
114
  sameOrderedStringArray: () => J,
117
- scopedRegistry: () => Me,
118
115
  setActiveKeyListItem: () => b,
119
116
  shiftLeft: () => i,
120
117
  slotContainsOnlyWhitespace: () => Y,
121
- stateExpanded: () => ge,
122
- stateHighlighted: () => ve,
123
- stateScroll: () => be,
124
- stateSelected: () => Se,
125
- statusIcons: () => ze,
126
- statusStateStyles: () => Pe,
118
+ stateExpanded: () => ue,
119
+ stateHighlighted: () => fe,
120
+ stateScroll: () => me,
121
+ stateSelected: () => ge,
122
+ statusIcons: () => je,
123
+ statusStateStyles: () => De,
127
124
  styleSheetToString: () => re,
128
- supportStateStyles: () => Fe,
125
+ supportStateStyles: () => Oe,
129
126
  throttle: () => d,
130
- typeAnchor: () => we,
131
- typeSSR: () => Ae,
127
+ typeAnchor: () => ve,
128
+ typeSSR: () => we,
132
129
  uniqueNonEmptyStrings: () => X,
133
- useStyles: () => Ie,
134
130
  validKeyNavigationCode: () => Z
135
131
  });
136
- import * as qe from "@nvidia-elements/foundations/internal/i18n";
137
- te(Ke, qe);
138
- export { a as AuditController, n as DOCS_URL, s as GestureController, Q as KeyNavigationGridController, ae as KeyNavigationListController, ce as KeyNavigationSpatialController, c as KeyStateController, x as KeynavCode, e as LogService, he as StateExpandedController, _e as StateHighlightedController, ye as StateScrollController, xe as StateSelectedController, Re as TransitionService, Ce as TypeAnchorController, Te as TypeClosableController, Ee as TypeExpandableController, Oe as TypeNativePopoverController, ke as TypeSSRController, De as TypeSelectableController, S as appendAnchorName, C as appendRootNodeStyle, w as applySlotContentStates, le as associateAriaDescribedBy, ue as associateAriaLabel, de as associateControlGroup, fe as associateDataList, pe as associateLabel, me as attachInternals, o as audit, t as auditParentElement, T as clickOutsideElementBounds, Ne as colorStateStyles, E as createGhostElement, He as createLightDismiss, l as debounce, D as endOfScrollBox, ne as excessiveInstanceLimit, Ue as finiteOr, f as focusElement, p as focusElementTimeout, r as formatFileSize, Be as formatStandardNumber, O as generateId, m as getActiveElement, k as getAnchorNames, A as getAttributeChanges, j as getAttributeListChanges, M as getChildren, N as getCustomElementRegistry, P as getDisplayValue, F as getElementUpdate, I as getFlattenedDOMTree, L as getFlattenedFocusableItems, $ as getNextKeyGridItem, oe as getNextKeyListItem, R as getPropertyChanges, z as getThemeTokens, B as hasHorizontalScrollBar, V as hasInvalidDOMGrid, je as hostAttr, h as initializeKeyListItems, Ke as internal_exports, H as isContextMenuClick, g as isFocusable, _ as isImmediateRootActiveElement, v as isSimpleFocusable, ie as keyNavigationGrid, se as keyNavigationList, U as matchesElementName, We as nonnegativeFiniteOr, u as onChildListMutation, y as onListboxActivate, W as openEyeDropper, Ve as parseVersion, Le as popoverStyles, Ge as positiveFiniteOr, G as removeAnchorName, K as removeEmptySlotWhitespace, q as removeEmptyTextNode, J as sameOrderedStringArray, Me as scopedRegistry, b as setActiveKeyListItem, i as shiftLeft, Y as slotContainsOnlyWhitespace, ge as stateExpanded, ve as stateHighlighted, be as stateScroll, Se as stateSelected, ze as statusIcons, Pe as statusStateStyles, re as styleSheetToString, Fe as supportStateStyles, d as throttle, we as typeAnchor, Ae as typeSSR, X as uniqueNonEmptyStrings, Ie as useStyles, Z as validKeyNavigationCode };
132
+ import * as We from "@nvidia-elements/foundations/internal/i18n";
133
+ te(Ue, We);
134
+ export { a as AuditController, n as DOCS_URL, s as GestureController, Q as KeyNavigationGridController, ae as KeyNavigationListController, ce as KeyNavigationSpatialController, c as KeyStateController, x as KeynavCode, e as LogService, le as StateExpandedController, de as StateHighlightedController, pe as StateScrollController, he as StateSelectedController, Ae as TransitionService, _e as TypeAnchorController, ye as TypeClosableController, be as TypeExpandableController, Se as TypeNativePopoverController, Ce as TypeSSRController, xe as TypeSelectableController, S as appendAnchorName, C as appendRootNodeStyle, w as applySlotContentStates, Me as associateAriaDescribedBy, Ne as associateAriaLabel, Pe as associateControlGroup, Fe as associateDataList, Ie as associateLabel, o as audit, t as auditParentElement, T as clickOutsideElementBounds, Ee as colorStateStyles, E as createGhostElement, ze as createLightDismiss, l as debounce, D as endOfScrollBox, ne as excessiveInstanceLimit, Be as finiteOr, f as focusElement, p as focusElementTimeout, r as formatFileSize, Le as formatStandardNumber, O as generateId, m as getActiveElement, k as getAnchorNames, A as getAttributeChanges, j as getAttributeListChanges, M as getChildren, N as getCustomElementRegistry, P as getDisplayValue, F as getElementUpdate, I as getFlattenedDOMTree, L as getFlattenedFocusableItems, $ as getNextKeyGridItem, oe as getNextKeyListItem, R as getPropertyChanges, z as getThemeTokens, B as hasHorizontalScrollBar, V as hasInvalidDOMGrid, Te as hostAttr, h as initializeKeyListItems, Ue as internal_exports, H as isContextMenuClick, g as isFocusable, _ as isImmediateRootActiveElement, v as isSimpleFocusable, ie as keyNavigationGrid, se as keyNavigationList, U as matchesElementName, Ve as nonnegativeFiniteOr, u as onChildListMutation, y as onListboxActivate, W as openEyeDropper, Re as parseVersion, ke as popoverStyles, He as positiveFiniteOr, G as removeAnchorName, K as removeEmptySlotWhitespace, q as removeEmptyTextNode, J as sameOrderedStringArray, b as setActiveKeyListItem, i as shiftLeft, Y as slotContainsOnlyWhitespace, ue as stateExpanded, fe as stateHighlighted, me as stateScroll, ge as stateSelected, je as statusIcons, De as statusStateStyles, re as styleSheetToString, Oe as supportStateStyles, d as throttle, ve as typeAnchor, we as typeSSR, X as uniqueNonEmptyStrings, Z as validKeyNavigationCode };
139
135
 
140
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["internal_exports","AuditController","DOCS_URL","GestureController","KeyNavigationGridController","KeyNavigationListController","KeyNavigationSpatialController","KeyStateController","KeynavCode","LogService","StateExpandedController","StateHighlightedController","StateScrollController","StateSelectedController","TransitionService","TypeAnchorController","TypeClosableController","TypeExpandableController","TypeNativePopoverController","TypeSSRController","TypeSelectableController","appendAnchorName","appendRootNodeStyle","applySlotContentStates","associateAriaDescribedBy","associateAriaLabel","associateControlGroup","associateDataList","associateLabel","attachInternals","audit","auditParentElement","clickOutsideElementBounds","colorStateStyles","createGhostElement","createLightDismiss","debounce","endOfScrollBox","finiteOr","focusElement","focusElementTimeout","formatFileSize","formatStandardNumber","generateId","getActiveElement","getAnchorNames","getAttributeChanges","getAttributeListChanges","getChildren","getCustomElementRegistry","getDisplayValue","getElementUpdate","getFlattenedDOMTree","getFlattenedFocusableItems","getNextKeyGridItem","getNextKeyListItem","getPropertyChanges","getThemeTokens","hasHorizontalScrollBar","hasInvalidDOMGrid","hostAttr","initializeKeyListItems","isContextMenuClick","isFocusable","isImmediateRootActiveElement","isSimpleFocusable","keyNavigationGrid","keyNavigationList","matchesElementName","nonnegativeFiniteOr","onChildListMutation","onListboxActivate","openEyeDropper","parseVersion","popoverStyles","positiveFiniteOr","removeAnchorName","removeEmptySlotWhitespace","removeEmptyTextNode","sameOrderedStringArray","scopedRegistry","setActiveKeyListItem","shiftLeft","slotContainsOnlyWhitespace","stateExpanded","stateHighlighted","stateScroll","stateSelected","statusIcons","statusStateStyles","styleSheetToString","supportStateStyles","throttle","typeAnchor","typeSSR","uniqueNonEmptyStrings","useStyles","validKeyNavigationCode","import__nvidia_elements_foundations_internal_i18n","__reExport","excessiveInstanceLimit"],"sources":["../../src/internal/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @internal private common utilities for Elements\n */\nexport * from './controllers/audit.controller.js';\nexport * from './controllers/gesture.controller.js';\nexport * from './controllers/key-state.controller.js';\nexport * from './controllers/keynav-grid.controller.js';\nexport * from './controllers/keynav-list.controller.js';\nexport * from './controllers/keynav-spatial.controller.js';\nexport * from './controllers/state-expanded.controller.js';\nexport * from './controllers/state-highlighted.controller.js';\nexport * from './controllers/state-scroll.controller.js';\nexport * from './controllers/state-selected.controller.js';\nexport * from './controllers/type-anchor.controller.js';\nexport * from './controllers/type-closable.controller.js';\nexport * from './controllers/type-expandable.controller.js';\nexport * from './controllers/type-selectable.controller.js';\nexport * from './controllers/type-native-popover.controller.js';\nexport * from './controllers/type-ssr.controller.js';\nexport * from './decorators/host-attr.js';\nexport * from './decorators/scoped-registry.js';\nexport * from './styles/index.js';\nexport * from './styles/popover.js';\nexport * from '@nvidia-elements/foundations/internal/i18n';\nexport * from './services/log.service.js';\nexport * from './services/transition.service.js';\nexport * from './types/index.js';\nexport * from './utils/a11y.js';\nexport * from './utils/audit.js';\nexport * from './utils/dom.js';\nexport * from './utils/events.js';\nexport * from './utils/objects.js';\nexport * from './utils/strings.js';\nexport * from './utils/focus.js';\nexport * from './utils/keynav.js';\nexport * from './utils/numeric.js';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":["internal_exports","AuditController","DOCS_URL","GestureController","KeyNavigationGridController","KeyNavigationListController","KeyNavigationSpatialController","KeyStateController","KeynavCode","LogService","StateExpandedController","StateHighlightedController","StateScrollController","StateSelectedController","TransitionService","TypeAnchorController","TypeClosableController","TypeExpandableController","TypeNativePopoverController","TypeSSRController","TypeSelectableController","appendAnchorName","appendRootNodeStyle","applySlotContentStates","associateAriaDescribedBy","associateAriaLabel","associateControlGroup","associateDataList","associateLabel","audit","auditParentElement","clickOutsideElementBounds","colorStateStyles","createGhostElement","createLightDismiss","debounce","endOfScrollBox","finiteOr","focusElement","focusElementTimeout","formatFileSize","formatStandardNumber","generateId","getActiveElement","getAnchorNames","getAttributeChanges","getAttributeListChanges","getChildren","getCustomElementRegistry","getDisplayValue","getElementUpdate","getFlattenedDOMTree","getFlattenedFocusableItems","getNextKeyGridItem","getNextKeyListItem","getPropertyChanges","getThemeTokens","hasHorizontalScrollBar","hasInvalidDOMGrid","hostAttr","initializeKeyListItems","isContextMenuClick","isFocusable","isImmediateRootActiveElement","isSimpleFocusable","keyNavigationGrid","keyNavigationList","matchesElementName","nonnegativeFiniteOr","onChildListMutation","onListboxActivate","openEyeDropper","parseVersion","popoverStyles","positiveFiniteOr","removeAnchorName","removeEmptySlotWhitespace","removeEmptyTextNode","sameOrderedStringArray","setActiveKeyListItem","shiftLeft","slotContainsOnlyWhitespace","stateExpanded","stateHighlighted","stateScroll","stateSelected","statusIcons","statusStateStyles","styleSheetToString","supportStateStyles","throttle","typeAnchor","typeSSR","uniqueNonEmptyStrings","validKeyNavigationCode","import__nvidia_elements_foundations_internal_i18n","__reExport","excessiveInstanceLimit"],"sources":["../../src/internal/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @internal private common utilities for Elements\n */\nexport * from './controllers/audit.controller.js';\nexport * from './controllers/gesture.controller.js';\nexport * from './controllers/key-state.controller.js';\nexport * from './controllers/keynav-grid.controller.js';\nexport * from './controllers/keynav-list.controller.js';\nexport * from './controllers/keynav-spatial.controller.js';\nexport * from './controllers/state-expanded.controller.js';\nexport * from './controllers/state-highlighted.controller.js';\nexport * from './controllers/state-scroll.controller.js';\nexport * from './controllers/state-selected.controller.js';\nexport * from './controllers/type-anchor.controller.js';\nexport * from './controllers/type-closable.controller.js';\nexport * from './controllers/type-expandable.controller.js';\nexport * from './controllers/type-selectable.controller.js';\nexport * from './controllers/type-native-popover.controller.js';\nexport * from './controllers/type-ssr.controller.js';\nexport * from './decorators/host-attr.js';\nexport * from './styles/index.js';\nexport * from './styles/popover.js';\nexport * from '@nvidia-elements/foundations/internal/i18n';\nexport * from './services/log.service.js';\nexport * from './services/transition.service.js';\nexport * from './types/index.js';\nexport * from './utils/a11y.js';\nexport * from './utils/audit.js';\nexport * from './utils/dom.js';\nexport * from './utils/events.js';\nexport * from './utils/objects.js';\nexport * from './utils/strings.js';\nexport * from './utils/focus.js';\nexport * from './utils/keynav.js';\nexport * from './utils/numeric.js';\n"],"mappings":""}
@@ -1,4 +1,3 @@
1
1
  export declare const colorStateStyles: string;
2
2
  export declare const statusStateStyles: string;
3
3
  export declare const supportStateStyles: string;
4
- export declare function useStyles(styles: unknown[]): import("lit").CSSResult[];
@@ -1,18 +1,8 @@
1
- import e from "./base.js";
2
- import t from "./interaction-state.js";
3
- import n from "./color.state.js";
4
- import r from "./status.state.js";
5
- import i from "./support.state.js";
6
- import { unsafeCSS as a } from "lit";
1
+ import e from "./color.state.js";
2
+ import t from "./status.state.js";
3
+ import n from "./support.state.js";
7
4
  // src/internal/styles/index.ts
8
- var o = n, s = r, c = i;
9
- function l(n) {
10
- return [
11
- a(e),
12
- a(t),
13
- ...n.map((e) => a(e))
14
- ];
15
- }
16
- export { o as colorStateStyles, s as statusStateStyles, c as supportStateStyles, l as useStyles };
5
+ var r = e, i = t, a = n;
6
+ export { r as colorStateStyles, i as statusStateStyles, a as supportStateStyles };
17
7
 
18
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_colorStateStyles","_statusStateStyles","_supportStateStyles","base","state","base_default","interaction_state_default","color_state_default","status_state_default","support_state_default","colorStateStyles","statusStateStyles","supportStateStyles","useStyles","unsafeCSS","styles","s"],"sources":["../../../src/internal/styles/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { unsafeCSS } from 'lit';\nimport base from './base.css?inline';\nimport state from './interaction-state.css?inline';\nimport _colorStateStyles from './color.state.css?inline';\nimport _statusStateStyles from './status.state.css?inline';\nimport _supportStateStyles from './support.state.css?inline';\n\nexport const colorStateStyles = _colorStateStyles;\n\nexport const statusStateStyles = _statusStateStyles;\n\nexport const supportStateStyles = _supportStateStyles;\n\nexport function useStyles(styles: unknown[]) {\n return [unsafeCSS(base), unsafeCSS(state), ...styles.map(s => unsafeCSS(s))];\n}\n"],"mappings":";;;;;;;AAUA,IAAaU,IAAmBV,GAEnBW,IAAoBV,GAEpBW,IAAqBV;AAElC,SAAgBW,EAAU,GAAmB;CAC3C,OAAO;EAACC,EAAUX,CAAI;EAAGW,EAAUV,CAAK;EAAG,GAAGW,EAAO,KAAI,MAAKD,EAAUE,CAAC,CAAC;CAAC;AAC7E"}
1
+ {"version":3,"file":"index.js","names":["_colorStateStyles","_statusStateStyles","_supportStateStyles","color_state_default","status_state_default","support_state_default","colorStateStyles","statusStateStyles","supportStateStyles"],"sources":["../../../src/internal/styles/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport _colorStateStyles from './color.state.css?inline';\nimport _statusStateStyles from './status.state.css?inline';\nimport _supportStateStyles from './support.state.css?inline';\n\nexport const colorStateStyles = _colorStateStyles;\n\nexport const statusStateStyles = _statusStateStyles;\n\nexport const supportStateStyles = _supportStateStyles;\n"],"mappings":";;;;AAOA,IAAaM,IAAmBN,GAEnBO,IAAoBN,GAEpBO,IAAqBN"}
@@ -1,6 +1,3 @@
1
- export declare function attachInternals(element: HTMLElement & {
2
- _internals?: ElementInternals;
3
- }): void;
4
1
  export declare function associateLabel(label: HTMLLabelElement, input: HTMLInputElement): void;
5
2
  export declare function associateAriaLabel(label: HTMLElement, element: HTMLElement): void;
6
3
  export declare function associateAriaDescribedBy(messages: HTMLElement[], element: HTMLElement): void;
@@ -1,29 +1,26 @@
1
1
  import { generateId as e } from "./dom.js";
2
2
  // src/internal/utils/a11y.ts
3
- function t(e) {
4
- e._internals === void 0 && (e._internals = e.attachInternals());
5
- }
6
- function n(t, n) {
3
+ function t(t, n) {
7
4
  t && n && (n.id = n.id ? n.id : e(), t.htmlFor = n.id);
8
5
  }
9
- function r(t, n) {
6
+ function n(t, n) {
10
7
  t && n && (t.id = t.id ? t.id : e(), n.setAttribute("aria-labelledby", t.id));
11
8
  }
12
- function i(t, n) {
9
+ function r(t, n) {
13
10
  if (t.length && n) {
14
11
  let r = t.map((t) => t.id = e()).join(" ");
15
12
  n.setAttribute("aria-describedby", r);
16
13
  }
17
14
  }
18
- function a(t, n) {
15
+ function i(t, n) {
19
16
  t && (t.id = t.id?.length ? t.id : e(), n.setAttribute("list", t.id));
20
17
  }
21
- function o(t) {
18
+ function a(t) {
22
19
  if (!t.find((e) => e?.name?.length)) {
23
20
  let n = e();
24
21
  t.forEach((e) => e.name = n);
25
22
  }
26
23
  }
27
- export { i as associateAriaDescribedBy, r as associateAriaLabel, o as associateControlGroup, a as associateDataList, n as associateLabel, t as attachInternals };
24
+ export { r as associateAriaDescribedBy, n as associateAriaLabel, a as associateControlGroup, i as associateDataList, t as associateLabel };
28
25
 
29
26
  //# sourceMappingURL=a11y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a11y.js","names":["attachInternals","element","associateLabel","label","input","generateId","associateAriaLabel","associateAriaDescribedBy","messages","ids","associateDataList","datalist","associateControlGroup","elements","name"],"sources":["../../../src/internal/utils/a11y.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { generateId } from './dom.js';\n\nexport function attachInternals(element: HTMLElement & { _internals?: ElementInternals }) {\n if (element._internals === undefined) {\n element._internals = element.attachInternals();\n }\n}\n\nexport function associateLabel(label: HTMLLabelElement, input: HTMLInputElement) {\n if (label && input) {\n input.id = input.id ? input.id : generateId();\n label.htmlFor = input.id;\n }\n}\n\nexport function associateAriaLabel(label: HTMLElement, element: HTMLElement) {\n if (label && element) {\n label.id = label.id ? label.id : generateId();\n element.setAttribute('aria-labelledby', label.id);\n }\n}\n\nexport function associateAriaDescribedBy(messages: HTMLElement[], element: HTMLElement) {\n if (messages.length && element) {\n const ids = messages.map(m => (m.id = generateId())).join(' ');\n element.setAttribute('aria-describedby', ids);\n }\n}\n\nexport function associateDataList(datalist: HTMLDataListElement, element: HTMLInputElement) {\n if (datalist) {\n datalist.id = datalist.id?.length ? datalist.id : generateId();\n element.setAttribute('list', datalist.id);\n }\n}\n\nexport function associateControlGroup(elements: HTMLInputElement[]) {\n if (!elements.find(e => e?.name?.length)) {\n const name = generateId();\n elements.forEach(e => (e.name = name));\n }\n}\n"],"mappings":";;AAKA,SAAgBA,EAAgB,GAA0D;CACxF,AAAIC,EAAQ,eAAe,KAAA,MACzB,EAAQ,aAAaA,EAAQ,gBAAgB;AAEjD;AAEA,SAAgBC,EAAe,GAAyB,GAAyB;CAC/E,AAAIC,KAASC,MACX,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKC,EAAW,GAC5C,EAAM,UAAUD,EAAM;AAE1B;AAEA,SAAgBE,EAAmB,GAAoB,GAAsB;CAC3E,AAAIH,KAASF,MACX,EAAM,KAAKE,EAAM,KAAKA,EAAM,KAAKE,EAAW,GAC5CJ,EAAQ,aAAa,mBAAmBE,EAAM,EAAE;AAEpD;AAEA,SAAgBI,EAAyB,GAAyB,GAAsB;CACtF,IAAIC,EAAS,UAAUP,GAAS;EAC9B,IAAMQ,IAAMD,EAAS,KAAI,MAAM,EAAE,KAAKH,EAAW,CAAE,CAAC,CAAC,KAAK,GAAG;EAC7D,EAAQ,aAAa,oBAAoBI,CAAG;CAC9C;AACF;AAEA,SAAgBC,EAAkB,GAA+B,GAA2B;CAC1F,AAAIC,MACF,EAAS,KAAKA,EAAS,IAAI,SAASA,EAAS,KAAKN,EAAW,GAC7DJ,EAAQ,aAAa,QAAQU,EAAS,EAAE;AAE5C;AAEA,SAAgBC,EAAsB,GAA8B;CAClE,IAAI,CAACC,EAAS,MAAK,MAAK,GAAG,MAAM,MAAM,GAAG;EACxC,IAAMC,IAAOT,EAAW;EACxB,EAAS,SAAQ,MAAM,EAAE,OAAOS,CAAK;CACvC;AACF"}
1
+ {"version":3,"file":"a11y.js","names":["associateLabel","label","input","generateId","associateAriaLabel","element","associateAriaDescribedBy","messages","ids","associateDataList","datalist","associateControlGroup","elements","name"],"sources":["../../../src/internal/utils/a11y.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { generateId } from './dom.js';\n\nexport function associateLabel(label: HTMLLabelElement, input: HTMLInputElement) {\n if (label && input) {\n input.id = input.id ? input.id : generateId();\n label.htmlFor = input.id;\n }\n}\n\nexport function associateAriaLabel(label: HTMLElement, element: HTMLElement) {\n if (label && element) {\n label.id = label.id ? label.id : generateId();\n element.setAttribute('aria-labelledby', label.id);\n }\n}\n\nexport function associateAriaDescribedBy(messages: HTMLElement[], element: HTMLElement) {\n if (messages.length && element) {\n const ids = messages.map(m => (m.id = generateId())).join(' ');\n element.setAttribute('aria-describedby', ids);\n }\n}\n\nexport function associateDataList(datalist: HTMLDataListElement, element: HTMLInputElement) {\n if (datalist) {\n datalist.id = datalist.id?.length ? datalist.id : generateId();\n element.setAttribute('list', datalist.id);\n }\n}\n\nexport function associateControlGroup(elements: HTMLInputElement[]) {\n if (!elements.find(e => e?.name?.length)) {\n const name = generateId();\n elements.forEach(e => (e.name = name));\n }\n}\n"],"mappings":";;AAKA,SAAgBA,EAAe,GAAyB,GAAyB;CAC/E,AAAIC,KAASC,MACX,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKC,EAAW,GAC5C,EAAM,UAAUD,EAAM;AAE1B;AAEA,SAAgBE,EAAmB,GAAoB,GAAsB;CAC3E,AAAIH,KAASI,MACX,EAAM,KAAKJ,EAAM,KAAKA,EAAM,KAAKE,EAAW,GAC5CE,EAAQ,aAAa,mBAAmBJ,EAAM,EAAE;AAEpD;AAEA,SAAgBK,EAAyB,GAAyB,GAAsB;CACtF,IAAIC,EAAS,UAAUF,GAAS;EAC9B,IAAMG,IAAMD,EAAS,KAAI,MAAM,EAAE,KAAKJ,EAAW,CAAE,CAAC,CAAC,KAAK,GAAG;EAC7D,EAAQ,aAAa,oBAAoBK,CAAG;CAC9C;AACF;AAEA,SAAgBC,EAAkB,GAA+B,GAA2B;CAC1F,AAAIC,MACF,EAAS,KAAKA,EAAS,IAAI,SAASA,EAAS,KAAKP,EAAW,GAC7DE,EAAQ,aAAa,QAAQK,EAAS,EAAE;AAE5C;AAEA,SAAgBC,EAAsB,GAA8B;CAClE,IAAI,CAACC,EAAS,MAAK,MAAK,GAAG,MAAM,MAAM,GAAG;EACxC,IAAMC,IAAOV,EAAW;EACxB,EAAS,SAAQ,MAAM,EAAE,OAAOU,CAAK;CACvC;AACF"}
@@ -1,11 +1,11 @@
1
1
  import { GestureController as e } from "../internal/controllers/gesture.controller.js";
2
- import { useStyles as t } from "../internal/styles/index.js";
3
- import n from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
- import r from "./joystick.js";
5
- import { LitElement as i, html as a, isServer as o } from "lit";
6
- import { property as s } from "lit/decorators/property.js";
7
- import { I18nController as c } from "@nvidia-elements/foundations/internal/i18n";
8
- import { styleMap as l } from "lit/directives/style-map.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
+ import n from "./joystick.js";
4
+ import { LitElement as r, html as i, isServer as a } from "lit";
5
+ import { property as o } from "lit/decorators/property.js";
6
+ import { I18nController as s } from "@nvidia-elements/foundations/internal/i18n";
7
+ import { styleMap as c } from "lit/directives/style-map.js";
8
+ import { useStyles as l } from "@nvidia-elements/foundations/internal/styles";
9
9
  import { FormControlMixin as u } from "@nvidia-elements/forms/mixins";
10
10
  // src/joystick/joystick.ts
11
11
  var d = {
@@ -31,14 +31,14 @@ var d = {
31
31
  x: 0,
32
32
  y: 1
33
33
  }
34
- }, p = class extends u(i) {
34
+ }, p = class extends u(r) {
35
35
  static {
36
- this.styles = t([r]);
36
+ this.styles = l([n]);
37
37
  }
38
38
  static {
39
39
  this.metadata = {
40
40
  tag: "nve-joystick",
41
- version: "2.23.4",
41
+ version: "2.23.6",
42
42
  valueSchema: {
43
43
  type: "object",
44
44
  properties: {
@@ -88,7 +88,7 @@ var d = {
88
88
  super.readOnly = !!e, this.#S();
89
89
  }
90
90
  constructor() {
91
- super(), this.constraint = "circle", this.size = "md", this.opacity = !1, this.release = "center", this.keyboardStep = .1, this.announce = "polite", this.#e = new c(this, d), this.i18n = this.#e.i18n, this.#t = "", this.#a = !1, this.#o = new e(this, {
91
+ super(), this.constraint = "circle", this.size = "md", this.opacity = !1, this.release = "center", this.keyboardStep = .1, this.announce = "polite", this.#e = new s(this, d), this.i18n = this.#e.i18n, this.#t = "", this.#a = !1, this.#o = new e(this, {
92
92
  touchAction: () => this.disabled || this.readOnly ? void 0 : "none",
93
93
  suppressNativeDrag: !0
94
94
  }), this.#s = /* @__PURE__ */ new Set(), this.#l = !1, this.#u = !1, this.#w = (e) => {
@@ -131,7 +131,7 @@ var d = {
131
131
  this.#o.target = this;
132
132
  }
133
133
  willUpdate(e) {
134
- if (o && this.hasAttribute("value") && this._handleAttributeChange("value", this.getAttribute("value")), this.#S(), this.announce === "off" && this.#b(), (e.has("constraint") || e.has("release") || e.has("keyboardStep")) && (this.#h("configuration-change"), this.#b(), this.value)) {
134
+ if (a && this.hasAttribute("value") && this._handleAttributeChange("value", this.getAttribute("value")), this.#S(), this.announce === "off" && this.#b(), (e.has("constraint") || e.has("release") || e.has("keyboardStep")) && (this.#h("configuration-change"), this.#b(), this.value)) {
135
135
  let e = this.#f(this.value);
136
136
  h(this.value, e) || (this.value = e);
137
137
  }
@@ -148,7 +148,7 @@ var d = {
148
148
  x: 0,
149
149
  y: 0
150
150
  };
151
- return a`<div internal-host aria-hidden="true"><div class="background"></div><div class="travel"><div class="thumb" ?hidden="${!this.value}" style="${l({
151
+ return i`<div internal-host aria-hidden="true"><div class="background"></div><div class="travel"><div class="thumb" ?hidden="${!this.value}" style="${c({
152
152
  left: `${(e.x + 1) * 50}%`,
153
153
  top: `${(e.y + 1) * 50}%`
154
154
  })}"></div></div></div><span class="announcement" role="status" aria-live="${this.announce === "off" ? "off" : "polite"}" aria-atomic="true">${this.#t}</span>`;
@@ -319,22 +319,22 @@ var d = {
319
319
  #M;
320
320
  #N;
321
321
  };
322
- n([s({
322
+ t([o({
323
323
  type: String,
324
324
  reflect: !0
325
- })], p.prototype, "constraint", void 0), n([s({
325
+ })], p.prototype, "constraint", void 0), t([o({
326
326
  type: String,
327
327
  reflect: !0
328
- })], p.prototype, "size", void 0), n([s({
328
+ })], p.prototype, "size", void 0), t([o({
329
329
  type: Boolean,
330
330
  reflect: !0
331
- })], p.prototype, "opacity", void 0), n([s({
331
+ })], p.prototype, "opacity", void 0), t([o({
332
332
  type: String,
333
333
  reflect: !0
334
- })], p.prototype, "release", void 0), n([s({
334
+ })], p.prototype, "release", void 0), t([o({
335
335
  type: Number,
336
336
  attribute: "keyboard-step"
337
- })], p.prototype, "keyboardStep", void 0), n([s({ type: String })], p.prototype, "announce", void 0), n([s({ type: Object })], p.prototype, "i18n", void 0);
337
+ })], p.prototype, "keyboardStep", void 0), t([o({ type: String })], p.prototype, "announce", void 0), t([o({ type: Object })], p.prototype, "i18n", void 0);
338
338
  function m(e) {
339
339
  return typeof e == "object" && !!e && "x" in e && "y" in e && typeof e.x == "number" && typeof e.y == "number" && Number.isFinite(e.x) && Number.isFinite(e.y) && Object.keys(e).length === 2;
340
340
  }