@nova-design-system/nova-webcomponents 3.15.0 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/dist/cjs/{index-c56424e5.js → index-93d3b2f8.js} +9 -6
  2. package/dist/cjs/index-93d3b2f8.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +6 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/native.cjs.js +2 -2
  7. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  8. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
  10. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-alert.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-avatar.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  17. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-button.cjs.entry.js +3 -9
  20. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-buttongroup.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagrid.cjs.entry.js +177 -10
  25. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-dialog.cjs.entry.js +32 -29
  28. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
  38. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
  41. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
  43. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
  45. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
  47. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
  49. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nv-fieldtime.cjs.entry.js +25 -12
  57. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nv-menu.cjs.entry.js +24 -9
  63. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-notification.cjs.entry.js +2 -2
  66. package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  68. package/dist/cjs/nv-popover.cjs.entry.js +67 -61
  69. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  71. package/dist/cjs/nv-split.cjs.entry.js +339 -0
  72. package/dist/cjs/nv-split.cjs.entry.js.map +1 -0
  73. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  74. package/dist/cjs/nv-table.cjs.entry.js +216 -310
  75. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  77. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  78. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  79. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  80. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
  81. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  82. package/dist/collection/collection-manifest.json +1 -1
  83. package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
  84. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  85. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  86. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
  87. package/dist/collection/components/nv-alert/nv-alert.css +1 -1
  88. package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
  89. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
  90. package/dist/collection/components/nv-button/nv-button.js +1 -13
  91. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  92. package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
  93. package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
  94. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
  95. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
  96. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  97. package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
  98. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  99. package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
  100. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +3 -3
  101. package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  103. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
  104. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
  105. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  106. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
  107. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
  108. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  109. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
  110. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  111. package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  114. package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
  116. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
  117. package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
  118. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
  119. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
  120. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
  121. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
  122. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  123. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
  124. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
  125. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
  127. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  128. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
  129. package/dist/collection/components/nv-icon/nv-icons.js +6 -1
  130. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  131. package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
  132. package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
  133. package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
  134. package/dist/collection/components/nv-menu/nv-menu.js +26 -8
  135. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  136. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  137. package/dist/collection/components/nv-notification/styles/nv-notification.css +2 -2
  138. package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
  139. package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
  140. package/dist/collection/components/nv-popover/nv-popover.js +66 -60
  141. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  142. package/dist/collection/components/nv-split/nv-split.docs.js +41 -0
  143. package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -0
  144. package/dist/collection/components/nv-split/nv-split.js +549 -0
  145. package/dist/collection/components/nv-split/nv-split.js.map +1 -0
  146. package/dist/collection/components/nv-split/styles/nv-split.css +96 -0
  147. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  148. package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
  149. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  150. package/dist/collection/components/nv-table/nv-table.js +68 -496
  151. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  152. package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
  153. package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
  154. package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
  155. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
  156. package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
  157. package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
  158. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
  159. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
  160. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
  161. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
  162. package/dist/components/index.js +7 -2
  163. package/dist/components/index.js.map +1 -1
  164. package/dist/components/nv-accordion-item.js +1 -1
  165. package/dist/components/nv-accordion.js +10 -10
  166. package/dist/components/nv-accordion.js.map +1 -1
  167. package/dist/components/nv-alert.js +3 -3
  168. package/dist/components/nv-alert.js.map +1 -1
  169. package/dist/components/nv-avatar.js +3 -3
  170. package/dist/components/nv-avatar.js.map +1 -1
  171. package/dist/components/nv-badge.js +1 -1
  172. package/dist/components/nv-breadcrumb.js +4 -4
  173. package/dist/components/nv-breadcrumb.js.map +1 -1
  174. package/dist/components/nv-breadcrumbs.js +1 -1
  175. package/dist/components/nv-button.js +1 -1
  176. package/dist/components/nv-buttongroup.js +1 -1
  177. package/dist/components/nv-calendar.js +1 -1
  178. package/dist/components/nv-col.js +1 -1
  179. package/dist/components/nv-datagrid.js +174 -7
  180. package/dist/components/nv-datagrid.js.map +1 -1
  181. package/dist/components/nv-datagridcolumn.js +1 -1
  182. package/dist/components/nv-dialog.js +37 -34
  183. package/dist/components/nv-dialog.js.map +1 -1
  184. package/dist/components/nv-dialogfooter.js +1 -1
  185. package/dist/components/nv-dialogheader.js +1 -1
  186. package/dist/components/nv-fieldcheckbox.js +1 -1
  187. package/dist/components/nv-fielddate.js +57 -32
  188. package/dist/components/nv-fielddate.js.map +1 -1
  189. package/dist/components/nv-fielddaterange.js +74 -48
  190. package/dist/components/nv-fielddaterange.js.map +1 -1
  191. package/dist/components/nv-fielddropdown.js +40 -13
  192. package/dist/components/nv-fielddropdown.js.map +1 -1
  193. package/dist/components/nv-fielddropdownitem.js +1 -1
  194. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  195. package/dist/components/nv-fieldmultiselect.js +196 -164
  196. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  197. package/dist/components/nv-fieldnumber.js +1 -1
  198. package/dist/components/nv-fieldpassword.js +5 -5
  199. package/dist/components/nv-fieldpassword.js.map +1 -1
  200. package/dist/components/nv-fieldradio.js +2 -2
  201. package/dist/components/nv-fieldradio.js.map +1 -1
  202. package/dist/components/nv-fieldselect.js +5 -5
  203. package/dist/components/nv-fieldselect.js.map +1 -1
  204. package/dist/components/nv-fieldslider.js +6 -6
  205. package/dist/components/nv-fieldslider.js.map +1 -1
  206. package/dist/components/nv-fieldtext.js +1 -1
  207. package/dist/components/nv-fieldtextarea.js +2 -2
  208. package/dist/components/nv-fieldtextarea.js.map +1 -1
  209. package/dist/components/nv-fieldtime.js +31 -17
  210. package/dist/components/nv-fieldtime.js.map +1 -1
  211. package/dist/components/nv-icon.js +1 -1
  212. package/dist/components/nv-iconbutton.js +1 -1
  213. package/dist/components/nv-loader.js +1 -1
  214. package/dist/components/nv-menu.js +30 -13
  215. package/dist/components/nv-menu.js.map +1 -1
  216. package/dist/components/nv-menuitem.js +1 -1
  217. package/dist/components/nv-notification.js +3 -3
  218. package/dist/components/nv-notification.js.map +1 -1
  219. package/dist/components/nv-notificationcontainer.js +1 -1
  220. package/dist/components/nv-popover.js +1 -1
  221. package/dist/components/nv-row.js +1 -1
  222. package/dist/components/{nv-tablecolumn.d.ts → nv-split.d.ts} +4 -4
  223. package/dist/components/nv-split.js +366 -0
  224. package/dist/components/nv-split.js.map +1 -0
  225. package/dist/components/nv-stack.js +2 -2
  226. package/dist/components/nv-table.js +216 -328
  227. package/dist/components/nv-table.js.map +1 -1
  228. package/dist/components/nv-toggle.js +2 -2
  229. package/dist/components/nv-toggle.js.map +1 -1
  230. package/dist/components/nv-togglebutton.js +1 -1
  231. package/dist/components/nv-togglebuttongroup.js +2 -2
  232. package/dist/components/nv-togglebuttongroup.js.map +1 -1
  233. package/dist/components/nv-tooltip.js +1 -1
  234. package/dist/components/{p-00cbf2a1.js → p-0d5ed1d7.js} +3 -3
  235. package/dist/components/p-0d5ed1d7.js.map +1 -0
  236. package/dist/components/{p-54161bad.js → p-0e6f41c7.js} +2 -2
  237. package/dist/components/{p-54161bad.js.map → p-0e6f41c7.js.map} +1 -1
  238. package/dist/components/{p-0c42fafb.js → p-0fd23531.js} +6 -6
  239. package/dist/components/{p-0c42fafb.js.map → p-0fd23531.js.map} +1 -1
  240. package/dist/components/{p-a823b8e9.js → p-1639703f.js} +2 -2
  241. package/dist/components/{p-a823b8e9.js.map → p-1639703f.js.map} +1 -1
  242. package/dist/components/{p-e5c62ea8.js → p-2cc83e0c.js} +3 -3
  243. package/dist/components/{p-e5c62ea8.js.map → p-2cc83e0c.js.map} +1 -1
  244. package/dist/components/{p-3763c9c4.js → p-31478080.js} +3 -3
  245. package/dist/components/{p-3763c9c4.js.map → p-31478080.js.map} +1 -1
  246. package/dist/components/{p-178fa27e.js → p-378e3127.js} +6 -6
  247. package/dist/components/{p-178fa27e.js.map → p-378e3127.js.map} +1 -1
  248. package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
  249. package/dist/components/p-429e01f3.js.map +1 -0
  250. package/dist/components/p-47d499b4.js +88 -0
  251. package/dist/components/p-47d499b4.js.map +1 -0
  252. package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
  253. package/dist/components/p-5829b9f7.js.map +1 -0
  254. package/dist/components/{p-ee8944f3.js → p-63595ea1.js} +68 -62
  255. package/dist/components/p-63595ea1.js.map +1 -0
  256. package/dist/components/{p-1af3591a.js → p-6f2b257e.js} +3 -3
  257. package/dist/components/{p-1af3591a.js.map → p-6f2b257e.js.map} +1 -1
  258. package/dist/components/{p-4fc01a78.js → p-7112612c.js} +5 -5
  259. package/dist/components/p-7112612c.js.map +1 -0
  260. package/dist/components/{p-7426b20f.js → p-715e5235.js} +3 -3
  261. package/dist/components/{p-7426b20f.js.map → p-715e5235.js.map} +1 -1
  262. package/dist/components/{p-31e262bd.js → p-7b5102c8.js} +5 -5
  263. package/dist/components/{p-31e262bd.js.map → p-7b5102c8.js.map} +1 -1
  264. package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
  265. package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
  266. package/dist/components/p-9e7468e3.js +185 -0
  267. package/dist/components/p-9e7468e3.js.map +1 -0
  268. package/dist/components/{p-75200cc0.js → p-df5d76a5.js} +3 -3
  269. package/dist/components/{p-75200cc0.js.map → p-df5d76a5.js.map} +1 -1
  270. package/dist/components/{p-51459a44.js → p-f2bac2aa.js} +4 -4
  271. package/dist/components/{p-51459a44.js.map → p-f2bac2aa.js.map} +1 -1
  272. package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +9 -6
  273. package/dist/esm/index-dc2723f3.js.map +1 -0
  274. package/dist/esm/index.js +6 -1
  275. package/dist/esm/index.js.map +1 -1
  276. package/dist/esm/loader.js +3 -3
  277. package/dist/esm/native.js +3 -3
  278. package/dist/esm/nv-accordion-item.entry.js +2 -2
  279. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  280. package/dist/esm/nv-accordion.entry.js +6 -6
  281. package/dist/esm/nv-accordion.entry.js.map +1 -1
  282. package/dist/esm/nv-alert.entry.js +2 -2
  283. package/dist/esm/nv-alert.entry.js.map +1 -1
  284. package/dist/esm/nv-avatar.entry.js +2 -2
  285. package/dist/esm/nv-avatar.entry.js.map +1 -1
  286. package/dist/esm/nv-badge_2.entry.js +1 -1
  287. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  288. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  289. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  290. package/dist/esm/nv-button.entry.js +3 -9
  291. package/dist/esm/nv-button.entry.js.map +1 -1
  292. package/dist/esm/nv-buttongroup.entry.js +1 -1
  293. package/dist/esm/nv-calendar.entry.js +1 -1
  294. package/dist/esm/nv-col.entry.js +1 -1
  295. package/dist/esm/nv-datagrid.entry.js +172 -5
  296. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  297. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  298. package/dist/esm/nv-dialog.entry.js +32 -29
  299. package/dist/esm/nv-dialog.entry.js.map +1 -1
  300. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  301. package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
  302. package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
  303. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  304. package/dist/esm/nv-fielddate.entry.js +51 -26
  305. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  306. package/dist/esm/nv-fielddaterange.entry.js +68 -42
  307. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  308. package/dist/esm/nv-fielddropdown.entry.js +33 -7
  309. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  310. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  311. package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
  312. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  313. package/dist/esm/nv-fieldnumber.entry.js +2 -2
  314. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  315. package/dist/esm/nv-fieldpassword.entry.js +2 -2
  316. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  317. package/dist/esm/nv-fieldradio.entry.js +2 -2
  318. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  319. package/dist/esm/nv-fieldselect.entry.js +2 -2
  320. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  321. package/dist/esm/nv-fieldslider.entry.js +2 -2
  322. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  323. package/dist/esm/nv-fieldtext.entry.js +2 -2
  324. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  325. package/dist/esm/nv-fieldtextarea.entry.js +2 -2
  326. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  327. package/dist/esm/nv-fieldtime.entry.js +25 -12
  328. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  329. package/dist/esm/nv-icon.entry.js +2 -2
  330. package/dist/esm/nv-icon.entry.js.map +1 -1
  331. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  332. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  333. package/dist/esm/nv-menu.entry.js +24 -9
  334. package/dist/esm/nv-menu.entry.js.map +1 -1
  335. package/dist/esm/nv-menuitem.entry.js +1 -1
  336. package/dist/esm/nv-notification.entry.js +2 -2
  337. package/dist/esm/nv-notification.entry.js.map +1 -1
  338. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  339. package/dist/esm/nv-popover.entry.js +67 -61
  340. package/dist/esm/nv-popover.entry.js.map +1 -1
  341. package/dist/esm/nv-row.entry.js +1 -1
  342. package/dist/esm/nv-split.entry.js +335 -0
  343. package/dist/esm/nv-split.entry.js.map +1 -0
  344. package/dist/esm/nv-stack.entry.js +2 -2
  345. package/dist/esm/nv-table.entry.js +216 -310
  346. package/dist/esm/nv-table.entry.js.map +1 -1
  347. package/dist/esm/nv-toggle.entry.js +2 -2
  348. package/dist/esm/nv-toggle.entry.js.map +1 -1
  349. package/dist/esm/nv-togglebutton.entry.js +1 -1
  350. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  351. package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
  352. package/dist/esm/nv-tooltip.entry.js +1 -1
  353. package/dist/native/index.esm.js +1 -1
  354. package/dist/native/index.esm.js.map +1 -1
  355. package/dist/native/native.css +1 -1
  356. package/dist/native/native.esm.js +1 -1
  357. package/dist/native/native.esm.js.map +1 -1
  358. package/dist/native/p-107e80c6.entry.js +2 -0
  359. package/dist/native/p-107e80c6.entry.js.map +1 -0
  360. package/dist/native/{p-5c697133.entry.js → p-112d096c.entry.js} +2 -2
  361. package/dist/native/p-14e622e1.entry.js +2 -0
  362. package/dist/native/p-14e622e1.entry.js.map +1 -0
  363. package/dist/native/p-217de553.entry.js +2 -0
  364. package/dist/native/p-217de553.entry.js.map +1 -0
  365. package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
  366. package/dist/native/p-2364aefa.entry.js +2 -0
  367. package/dist/native/p-2364aefa.entry.js.map +1 -0
  368. package/dist/native/p-23ee0384.entry.js +2 -0
  369. package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
  370. package/dist/native/p-26513cbd.entry.js +2 -0
  371. package/dist/native/p-26513cbd.entry.js.map +1 -0
  372. package/dist/native/p-278613a3.entry.js +2 -0
  373. package/dist/native/{p-6cb6679b.entry.js.map → p-278613a3.entry.js.map} +1 -1
  374. package/dist/native/p-2dfd786f.entry.js +2 -0
  375. package/dist/native/{p-29df974e.entry.js.map → p-2dfd786f.entry.js.map} +1 -1
  376. package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
  377. package/dist/native/p-3060df80.js.map +1 -0
  378. package/dist/native/p-4dc7483d.entry.js +2 -0
  379. package/dist/native/{p-c7b7ffaf.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
  380. package/dist/native/p-4eaf417d.entry.js +13 -0
  381. package/dist/native/p-4eaf417d.entry.js.map +1 -0
  382. package/dist/native/p-5039ceb8.entry.js +2 -0
  383. package/dist/native/p-5039ceb8.entry.js.map +1 -0
  384. package/dist/native/{p-08322093.entry.js → p-52d2c0ae.entry.js} +2 -2
  385. package/dist/native/p-638967bf.entry.js +2 -0
  386. package/dist/native/p-638967bf.entry.js.map +1 -0
  387. package/dist/native/{p-19090193.entry.js → p-647a0765.entry.js} +2 -2
  388. package/dist/native/p-68dc02be.entry.js +2 -0
  389. package/dist/native/p-68dc02be.entry.js.map +1 -0
  390. package/dist/native/p-6d427897.entry.js +2 -0
  391. package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
  392. package/dist/native/{p-1504e28b.entry.js → p-701b48a4.entry.js} +2 -2
  393. package/dist/native/p-7c9bf981.entry.js +2 -0
  394. package/dist/native/p-835abdb9.entry.js +2 -0
  395. package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
  396. package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
  397. package/dist/native/p-88f9fca5.entry.js +2 -0
  398. package/dist/native/p-88f9fca5.entry.js.map +1 -0
  399. package/dist/native/{p-d2c9247b.entry.js → p-8e423742.entry.js} +3 -3
  400. package/dist/native/{p-d2c9247b.entry.js.map → p-8e423742.entry.js.map} +1 -1
  401. package/dist/native/{p-d882f417.entry.js → p-91fab6c2.entry.js} +2 -2
  402. package/dist/native/p-91fab6c2.entry.js.map +1 -0
  403. package/dist/native/p-95184ea2.entry.js +2 -0
  404. package/dist/native/p-95184ea2.entry.js.map +1 -0
  405. package/dist/native/p-9613087c.entry.js +2 -0
  406. package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
  407. package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
  408. package/dist/native/p-a6fc987a.entry.js +2 -0
  409. package/dist/native/p-a6fc987a.entry.js.map +1 -0
  410. package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
  411. package/dist/native/p-acada158.entry.js +2 -0
  412. package/dist/native/p-acada158.entry.js.map +1 -0
  413. package/dist/native/p-b06f0e61.entry.js +2 -0
  414. package/dist/native/p-b06f0e61.entry.js.map +1 -0
  415. package/dist/native/p-b4c15f25.entry.js +2 -0
  416. package/dist/native/p-b4c15f25.entry.js.map +1 -0
  417. package/dist/native/{p-74b129e9.entry.js → p-bcf41cd0.entry.js} +2 -2
  418. package/dist/native/{p-c66565f8.entry.js → p-cb0293ec.entry.js} +2 -2
  419. package/dist/native/p-ce97ce24.entry.js +2 -0
  420. package/dist/native/p-ce97ce24.entry.js.map +1 -0
  421. package/dist/native/p-d0db5e72.entry.js +2 -0
  422. package/dist/native/p-d0db5e72.entry.js.map +1 -0
  423. package/dist/native/p-d7f444fb.entry.js +2 -0
  424. package/dist/native/p-d7f444fb.entry.js.map +1 -0
  425. package/dist/native/p-d878e90a.entry.js +2 -0
  426. package/dist/native/p-d878e90a.entry.js.map +1 -0
  427. package/dist/native/{p-e2c99ce2.entry.js → p-d94bf052.entry.js} +2 -2
  428. package/dist/native/p-ddc41f1f.entry.js +2 -0
  429. package/dist/native/p-ddc41f1f.entry.js.map +1 -0
  430. package/dist/native/p-f30e0be6.entry.js +2 -0
  431. package/dist/native/p-f30e0be6.entry.js.map +1 -0
  432. package/dist/native/p-f3c73492.entry.js +2 -0
  433. package/dist/native/{p-b32d0a5a.entry.js.map → p-f3c73492.entry.js.map} +1 -1
  434. package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
  435. package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
  436. package/dist/types/components/nv-button/nv-button.d.ts +0 -1
  437. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
  438. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
  439. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
  440. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
  441. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
  442. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
  443. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  444. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
  445. package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
  446. package/dist/types/components/nv-split/nv-split.d.ts +128 -0
  447. package/dist/types/components/nv-split/nv-split.docs.d.ts +4 -0
  448. package/dist/types/components/nv-table/nv-table.d.ts +6 -87
  449. package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
  450. package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
  451. package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
  452. package/dist/types/components.d.ts +102 -200
  453. package/dist/vscode-data.json +43 -41
  454. package/hydrate/index.js +1148 -783
  455. package/hydrate/index.mjs +1148 -783
  456. package/package.json +10 -10
  457. package/dist/cjs/dom.utils-4d43f69a.js +0 -170
  458. package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
  459. package/dist/cjs/index-c56424e5.js.map +0 -1
  460. package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
  461. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
  462. package/dist/collection/components/nv-table/nv-table.css +0 -35
  463. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
  464. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
  465. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
  466. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
  467. package/dist/components/nv-tablecolumn.js +0 -38
  468. package/dist/components/nv-tablecolumn.js.map +0 -1
  469. package/dist/components/p-00cbf2a1.js.map +0 -1
  470. package/dist/components/p-4fc01a78.js.map +0 -1
  471. package/dist/components/p-51876ca1.js.map +0 -1
  472. package/dist/components/p-5d14ba3f.js +0 -88
  473. package/dist/components/p-5d14ba3f.js.map +0 -1
  474. package/dist/components/p-95857e4f.js +0 -191
  475. package/dist/components/p-95857e4f.js.map +0 -1
  476. package/dist/components/p-aff3ed68.js.map +0 -1
  477. package/dist/components/p-cb34aa4f.js +0 -167
  478. package/dist/components/p-cb34aa4f.js.map +0 -1
  479. package/dist/components/p-ee8944f3.js.map +0 -1
  480. package/dist/esm/dom.utils-ac71e0ef.js +0 -167
  481. package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
  482. package/dist/esm/index-a1936cd0.js.map +0 -1
  483. package/dist/esm/nv-tablecolumn.entry.js +0 -17
  484. package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
  485. package/dist/native/p-0a99c6fb.entry.js +0 -2
  486. package/dist/native/p-0a99c6fb.entry.js.map +0 -1
  487. package/dist/native/p-1ad1bff9.entry.js +0 -2
  488. package/dist/native/p-1ad1bff9.entry.js.map +0 -1
  489. package/dist/native/p-1c83f540.entry.js +0 -2
  490. package/dist/native/p-1c83f540.entry.js.map +0 -1
  491. package/dist/native/p-224b1a01.entry.js +0 -2
  492. package/dist/native/p-224b1a01.entry.js.map +0 -1
  493. package/dist/native/p-234cfa2e.entry.js +0 -2
  494. package/dist/native/p-2781637d.entry.js +0 -2
  495. package/dist/native/p-29df974e.entry.js +0 -2
  496. package/dist/native/p-29f68e07.entry.js +0 -2
  497. package/dist/native/p-45506c37.entry.js +0 -2
  498. package/dist/native/p-45506c37.entry.js.map +0 -1
  499. package/dist/native/p-48774d0c.entry.js +0 -13
  500. package/dist/native/p-48774d0c.entry.js.map +0 -1
  501. package/dist/native/p-4ec61dec.entry.js +0 -2
  502. package/dist/native/p-4ec61dec.entry.js.map +0 -1
  503. package/dist/native/p-5f0776cb.entry.js +0 -2
  504. package/dist/native/p-5f0776cb.entry.js.map +0 -1
  505. package/dist/native/p-6c7a9a21.entry.js +0 -2
  506. package/dist/native/p-6c7a9a21.entry.js.map +0 -1
  507. package/dist/native/p-6cb6679b.entry.js +0 -2
  508. package/dist/native/p-6d13a851.entry.js +0 -2
  509. package/dist/native/p-6d13a851.entry.js.map +0 -1
  510. package/dist/native/p-87784622.entry.js +0 -2
  511. package/dist/native/p-87784622.entry.js.map +0 -1
  512. package/dist/native/p-92931ab8.entry.js +0 -2
  513. package/dist/native/p-9a46baa9.entry.js +0 -2
  514. package/dist/native/p-9a46baa9.entry.js.map +0 -1
  515. package/dist/native/p-a34beedf.entry.js +0 -2
  516. package/dist/native/p-a34beedf.entry.js.map +0 -1
  517. package/dist/native/p-a69dbcef.entry.js +0 -2
  518. package/dist/native/p-a69dbcef.entry.js.map +0 -1
  519. package/dist/native/p-b32d0a5a.entry.js +0 -2
  520. package/dist/native/p-bc01787b.entry.js +0 -2
  521. package/dist/native/p-bc01787b.entry.js.map +0 -1
  522. package/dist/native/p-c7b7ffaf.entry.js +0 -2
  523. package/dist/native/p-cb34aa4f.js +0 -2
  524. package/dist/native/p-cb34aa4f.js.map +0 -1
  525. package/dist/native/p-cea942b9.entry.js +0 -2
  526. package/dist/native/p-cea942b9.entry.js.map +0 -1
  527. package/dist/native/p-d0a33e64.js.map +0 -1
  528. package/dist/native/p-d0ef1bbb.entry.js +0 -2
  529. package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
  530. package/dist/native/p-d882f417.entry.js.map +0 -1
  531. package/dist/native/p-dd023fd6.entry.js +0 -2
  532. package/dist/native/p-dd023fd6.entry.js.map +0 -1
  533. package/dist/native/p-e765a624.entry.js +0 -2
  534. package/dist/native/p-e765a624.entry.js.map +0 -1
  535. package/dist/native/p-f0cbfb3d.entry.js +0 -2
  536. package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
  537. package/dist/native/p-f5120223.entry.js +0 -2
  538. package/dist/native/p-fa177c39.entry.js +0 -2
  539. package/dist/native/p-fa177c39.entry.js.map +0 -1
  540. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
  541. package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
  542. /package/dist/native/{p-5c697133.entry.js.map → p-112d096c.entry.js.map} +0 -0
  543. /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
  544. /package/dist/native/{p-08322093.entry.js.map → p-52d2c0ae.entry.js.map} +0 -0
  545. /package/dist/native/{p-19090193.entry.js.map → p-647a0765.entry.js.map} +0 -0
  546. /package/dist/native/{p-1504e28b.entry.js.map → p-701b48a4.entry.js.map} +0 -0
  547. /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
  548. /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
  549. /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
  550. /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
  551. /package/dist/native/{p-74b129e9.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
  552. /package/dist/native/{p-c66565f8.entry.js.map → p-cb0293ec.entry.js.map} +0 -0
  553. /package/dist/native/{p-e2c99ce2.entry.js.map → p-d94bf052.entry.js.map} +0 -0
  554. /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
@@ -0,0 +1,549 @@
1
+ import { Host, h, } from "@stencil/core";
2
+ /**
3
+ * The `nv-split` component is an advanced layout container that enables the creation of interactively resizable panels. It provides a flexible solution for dividing available space between multiple interface sections, with precise control over dimensions and constraints for each panel.
4
+ * @slot pane - Content of each split pane. Use multiple `<div slot="pane">` elements.
5
+ * @slot gutter - Optional custom content inside every gutter handle.
6
+ */
7
+ export class NvSplit {
8
+ constructor() {
9
+ /****************************************************************************/
10
+ //#region PROPERTIES
11
+ /**
12
+ * Direction of the split layout.
13
+ * - `horizontal`: panes side by side
14
+ * - `vertical`: panes stacked
15
+ */
16
+ this.direction = 'horizontal';
17
+ /**
18
+ * Initial sizes of the panes in percentages.
19
+ * Example: `[50, 50]` means two equal panes.
20
+ * Explicitly `reflect: false` (array) for framework compatibility.
21
+ */
22
+ this.sizes = [];
23
+ /**
24
+ * Width or height of the gutter (in px) depending on the split direction.
25
+ * Default is 24px to meet WCAG 2.2 target size requirements for touch accessibility.
26
+ */
27
+ this.gutterSize = 24;
28
+ //#endregion
29
+ /****************************************************************************/
30
+ //#region STATE
31
+ this.isDragging = false;
32
+ this.dragIndex = -1;
33
+ this.startPos = 0;
34
+ this.startSizes = [];
35
+ // Handlers stored to be able to detach them
36
+ this.onDocMove = (ev) => this.handleMouseMove(ev);
37
+ this.onDocUp = () => this.stopDragging();
38
+ }
39
+ //#endregion
40
+ /****************************************************************************/
41
+ //#region WATCHERS
42
+ onSizesChanged() {
43
+ // Re-apply sizes if modified from the outside
44
+ this.applySizes();
45
+ }
46
+ onDirectionChanged() {
47
+ // Update the orientation and the cursors of the gutters
48
+ this.ensureGutters();
49
+ this.applySizes();
50
+ }
51
+ //#endregion
52
+ /****************************************************************************/
53
+ //#region LIFECYCLE
54
+ componentDidLoad() {
55
+ // Initialization (once)
56
+ this.ensureGutters();
57
+ this.applySizes();
58
+ this.positionGutters();
59
+ // Observer: reposition gutters when resized (nested or parent split changes)
60
+ this.ro = new ResizeObserver(() => this.positionGutters());
61
+ this.ro.observe(this.el);
62
+ window.addEventListener('resize', () => this.positionGutters());
63
+ }
64
+ disconnectedCallback() {
65
+ var _a;
66
+ // Security cleanup (in case a drag was in progress)
67
+ this.detachDocumentListeners();
68
+ (_a = this.ro) === null || _a === void 0 ? void 0 : _a.disconnect();
69
+ this.ro = undefined;
70
+ }
71
+ //#endregion
72
+ /****************************************************************************/
73
+ //#region PUBLIC METHODS
74
+ /**
75
+ * Programmatically set pane sizes.
76
+ * @param {Array<number>} sizes Array of pane sizes in percentages.
77
+ * @returns {Promise<void>}
78
+ */
79
+ async setSizes(sizes) {
80
+ this.sizes = [...sizes];
81
+ this.applySizes();
82
+ this.sizesChanged.emit([...this.sizes]);
83
+ this.positionGutters();
84
+ }
85
+ /**
86
+ * Returns the current pane sizes.
87
+ * @returns {Promise<number[]>} Array of pane sizes in percentages.
88
+ */
89
+ async getSizes() {
90
+ return [...this.sizes];
91
+ }
92
+ /**
93
+ * Collapse a specific pane to 0 size.
94
+ * @param {number} index Index of the pane to collapse.
95
+ * @returns {Promise<void>}
96
+ */
97
+ async collapse(index) {
98
+ const panes = this.getPanes();
99
+ if (index < 0 || index >= panes.length)
100
+ return;
101
+ // Simple strategy: 0% for the index, the rest (100%) for its nearest neighbor
102
+ const next = new Array(panes.length).fill(0);
103
+ const target = index < panes.length - 1 ? index + 1 : index - 1;
104
+ if (target >= 0)
105
+ next[target] = 100;
106
+ this.sizes = next;
107
+ this.applySizes();
108
+ this.sizesChanged.emit([...this.sizes]);
109
+ this.positionGutters();
110
+ }
111
+ /**
112
+ * Destroy the split instance: removes gutters and resets layout state.
113
+ * @returns {Promise<void>}
114
+ */
115
+ async destroy() {
116
+ var _a;
117
+ this.sizes = [];
118
+ this.isDragging = false;
119
+ this.dragIndex = -1;
120
+ this.removeOwnGutters();
121
+ this.detachDocumentListeners();
122
+ (_a = this.ro) === null || _a === void 0 ? void 0 : _a.disconnect();
123
+ }
124
+ //#endregion
125
+ /****************************************************************************/
126
+ //#region INTERNAL HELPERS
127
+ /**
128
+ * Returns the panes of the split.
129
+ * @returns {HTMLElement[]} The panes of the split.
130
+ */
131
+ getPanes() {
132
+ // Only the direct children slot="pane"
133
+ return Array.from(this.el.querySelectorAll(':scope > [slot="pane"]'));
134
+ }
135
+ /**
136
+ * Returns the own gutters of the split.
137
+ * @returns {HTMLElement[]} The own gutters of the split.
138
+ */
139
+ getOwnGutters() {
140
+ // Only the direct gutters of THIS instance
141
+ return Array.from(this.el.querySelectorAll(':scope > .nv-split-gutter[data-auto="true"]'));
142
+ }
143
+ /**
144
+ * Removes the own gutters of the split.
145
+ */
146
+ removeOwnGutters() {
147
+ this.getOwnGutters().forEach(g => g.remove());
148
+ }
149
+ /**
150
+ * Ensures the gutters of the split.
151
+ */
152
+ ensureGutters() {
153
+ const panes = this.getPanes();
154
+ // 1) Clean ONLY the old direct gutters of THIS instance
155
+ this.removeOwnGutters();
156
+ if (panes.length <= 1)
157
+ return;
158
+ // 2) Add the gutters (directs) between the panes
159
+ panes.forEach((pane, i) => {
160
+ if (i >= panes.length - 1)
161
+ return;
162
+ const g = document.createElement('div');
163
+ g.className = 'nv-split-gutter';
164
+ g.setAttribute('data-auto', 'true');
165
+ if (this.direction === 'horizontal') {
166
+ g.style.width = `${this.gutterSize}px`;
167
+ g.style.cursor = 'col-resize';
168
+ }
169
+ else {
170
+ g.style.height = `${this.gutterSize}px`;
171
+ g.style.cursor = 'row-resize';
172
+ }
173
+ // Customizable internal slot
174
+ const slotEl = document.createElement('slot');
175
+ slotEl.name = 'gutter';
176
+ g.appendChild(slotEl);
177
+ // Listener drag (index = gutter between pane i and i+1)
178
+ g.addEventListener('mousedown', (ev) => this.startDragging(ev, i));
179
+ // Insert just after the pane
180
+ pane.insertAdjacentElement('afterend', g);
181
+ });
182
+ this.positionGutters();
183
+ }
184
+ /**
185
+ * Applies the sizes to the panes.
186
+ */
187
+ applySizes() {
188
+ const panes = this.getPanes();
189
+ const n = panes.length;
190
+ if (n === 0)
191
+ return;
192
+ // Default values if inconsistent
193
+ if (!this.sizes || this.sizes.length !== n) {
194
+ this.sizes = Array(n).fill(100 / n);
195
+ }
196
+ panes.forEach((pane, i) => {
197
+ var _a;
198
+ const size = Math.max(0, (_a = this.sizes[i]) !== null && _a !== void 0 ? _a : 100 / n);
199
+ // Flex-basis via flex shorthand (https://developer.mozilla.org/en-US/docs/Web/CSS/flex)
200
+ pane.style.flex = `0 0 ${size}%`;
201
+ pane.style.minWidth = '0';
202
+ pane.style.minHeight = '0';
203
+ pane.style.overflow = 'hidden'; // let a nv-split child extend
204
+ pane.style.display = 'flex';
205
+ pane.style.flexDirection = 'column';
206
+ });
207
+ this.positionGutters();
208
+ }
209
+ /**
210
+ * Attaches the document listeners.
211
+ */
212
+ attachDocumentListeners() {
213
+ document.addEventListener('mousemove', this.onDocMove);
214
+ document.addEventListener('mouseup', this.onDocUp);
215
+ }
216
+ /**
217
+ * Detaches the document listeners.
218
+ */
219
+ detachDocumentListeners() {
220
+ document.removeEventListener('mousemove', this.onDocMove);
221
+ document.removeEventListener('mouseup', this.onDocUp);
222
+ }
223
+ /**
224
+ * Positions the gutters based on the current sizes of the panes.
225
+ */
226
+ positionGutters() {
227
+ var _a, _b;
228
+ const panes = this.getPanes();
229
+ const gutters = this.getOwnGutters();
230
+ if (panes.length <= 1 || gutters.length === 0)
231
+ return;
232
+ const horizontal = this.direction === 'horizontal';
233
+ let cumPct = 0;
234
+ for (let i = 0; i < gutters.length; i++) {
235
+ const sizePct = (_b = (_a = this.sizes) === null || _a === void 0 ? void 0 : _a[i]) !== null && _b !== void 0 ? _b : 100 / panes.length;
236
+ cumPct += sizePct;
237
+ const g = gutters[i];
238
+ g.style.position = 'absolute';
239
+ if (horizontal) {
240
+ g.style.left = `${cumPct}%`;
241
+ g.style.top = '0';
242
+ g.style.bottom = '0';
243
+ g.style.height = '100%';
244
+ }
245
+ else {
246
+ g.style.top = `${cumPct}%`;
247
+ g.style.left = '0';
248
+ g.style.right = '0';
249
+ g.style.width = '100%';
250
+ }
251
+ }
252
+ }
253
+ /**
254
+ * Starts the dragging process.
255
+ * @param {MouseEvent} ev - The mouse event.
256
+ * @param {number} index - The index of the gutter.
257
+ */
258
+ startDragging(ev, index) {
259
+ this.isDragging = true;
260
+ this.dragIndex = index;
261
+ this.startPos = this.direction === 'horizontal' ? ev.clientX : ev.clientY;
262
+ this.startSizes = [...this.sizes];
263
+ this.attachDocumentListeners();
264
+ }
265
+ /**
266
+ * Handles the mouse movement during dragging.
267
+ * @param {MouseEvent} ev - The mouse event.
268
+ */
269
+ handleMouseMove(ev) {
270
+ var _a, _b, _c, _d;
271
+ if (!this.isDragging || this.dragIndex < 0)
272
+ return;
273
+ const panes = this.getPanes();
274
+ if (panes.length < 2)
275
+ return;
276
+ const rect = this.el.getBoundingClientRect();
277
+ // Ensure we never divide by zero if the element has zero width/height
278
+ const rawSize = this.direction === 'horizontal' ? rect.width : rect.height;
279
+ const totalPx = Math.max(rawSize, 1);
280
+ const deltaPx = (this.direction === 'horizontal' ? ev.clientX : ev.clientY) -
281
+ this.startPos;
282
+ const deltaPct = (deltaPx / totalPx) * 100;
283
+ const i = this.dragIndex;
284
+ const j = i + 1;
285
+ let left = this.startSizes[i] + deltaPct;
286
+ let right = this.startSizes[j] - deltaPct;
287
+ // minSizes (px) -> %
288
+ const minLeftPct = (((_b = (_a = this.minSizes) === null || _a === void 0 ? void 0 : _a[i]) !== null && _b !== void 0 ? _b : 0) / totalPx) * 100;
289
+ const minRightPct = (((_d = (_c = this.minSizes) === null || _c === void 0 ? void 0 : _c[j]) !== null && _d !== void 0 ? _d : 0) / totalPx) * 100;
290
+ left = Math.max(left, minLeftPct);
291
+ right = Math.max(right, minRightPct);
292
+ // Keep the sum of the pair i/j constant
293
+ const pairSum = left + right;
294
+ const targetSum = this.startSizes[i] + this.startSizes[j];
295
+ if (Math.abs(pairSum - targetSum) > 0.0001) {
296
+ const k = targetSum / (pairSum || 1);
297
+ left *= k;
298
+ right *= k;
299
+ }
300
+ const next = [...this.startSizes];
301
+ next[i] = left;
302
+ next[j] = right;
303
+ this.sizes = next;
304
+ this.applySizes();
305
+ this.sizesChanged.emit([...this.sizes]);
306
+ this.positionGutters();
307
+ }
308
+ /**
309
+ * Stops the dragging process.
310
+ */
311
+ stopDragging() {
312
+ if (!this.isDragging)
313
+ return;
314
+ this.isDragging = false;
315
+ this.dragIndex = -1;
316
+ this.detachDocumentListeners();
317
+ }
318
+ //#endregion
319
+ /****************************************************************************/
320
+ //#region RENDER
321
+ render() {
322
+ return (h(Host, { key: 'e3b158ff1b4f665862079d245c219102d8b8ccda', "data-dragging": this.isDragging.toString() }, h("slot", { key: 'baa8105a05bf8446d7a31a23cd5276edb320ea2f', name: "pane" }), h("slot", { key: '44afe4f4a220aff45f802218f2618e9305141a9f', name: "gutter" })));
323
+ }
324
+ static get is() { return "nv-split"; }
325
+ static get originalStyleUrls() {
326
+ return {
327
+ "$": ["styles/nv-split.scss"]
328
+ };
329
+ }
330
+ static get styleUrls() {
331
+ return {
332
+ "$": ["styles/nv-split.css"]
333
+ };
334
+ }
335
+ static get properties() {
336
+ return {
337
+ "direction": {
338
+ "type": "string",
339
+ "mutable": false,
340
+ "complexType": {
341
+ "original": "'horizontal' | 'vertical'",
342
+ "resolved": "\"horizontal\" | \"vertical\"",
343
+ "references": {}
344
+ },
345
+ "required": false,
346
+ "optional": false,
347
+ "docs": {
348
+ "tags": [],
349
+ "text": "Direction of the split layout.\n- `horizontal`: panes side by side\n- `vertical`: panes stacked"
350
+ },
351
+ "getter": false,
352
+ "setter": false,
353
+ "attribute": "direction",
354
+ "reflect": true,
355
+ "defaultValue": "'horizontal'"
356
+ },
357
+ "sizes": {
358
+ "type": "unknown",
359
+ "mutable": true,
360
+ "complexType": {
361
+ "original": "number[]",
362
+ "resolved": "number[]",
363
+ "references": {}
364
+ },
365
+ "required": false,
366
+ "optional": false,
367
+ "docs": {
368
+ "tags": [],
369
+ "text": "Initial sizes of the panes in percentages.\nExample: `[50, 50]` means two equal panes.\nExplicitly `reflect: false` (array) for framework compatibility."
370
+ },
371
+ "getter": false,
372
+ "setter": false,
373
+ "defaultValue": "[]"
374
+ },
375
+ "minSizes": {
376
+ "type": "unknown",
377
+ "mutable": false,
378
+ "complexType": {
379
+ "original": "number[]",
380
+ "resolved": "number[]",
381
+ "references": {}
382
+ },
383
+ "required": false,
384
+ "optional": true,
385
+ "docs": {
386
+ "tags": [],
387
+ "text": "Minimum sizes (in px) for each pane.\nExample: `[100, 200]` => first pane min 100px, second min 200px.\nExplicitly `reflect: false` (array) for framework compatibility."
388
+ },
389
+ "getter": false,
390
+ "setter": false
391
+ },
392
+ "gutterSize": {
393
+ "type": "number",
394
+ "mutable": false,
395
+ "complexType": {
396
+ "original": "number",
397
+ "resolved": "number",
398
+ "references": {}
399
+ },
400
+ "required": false,
401
+ "optional": false,
402
+ "docs": {
403
+ "tags": [],
404
+ "text": "Width or height of the gutter (in px) depending on the split direction.\nDefault is 24px to meet WCAG 2.2 target size requirements for touch accessibility."
405
+ },
406
+ "getter": false,
407
+ "setter": false,
408
+ "attribute": "gutter-size",
409
+ "reflect": true,
410
+ "defaultValue": "24"
411
+ }
412
+ };
413
+ }
414
+ static get states() {
415
+ return {
416
+ "isDragging": {}
417
+ };
418
+ }
419
+ static get events() {
420
+ return [{
421
+ "method": "sizesChanged",
422
+ "name": "sizesChanged",
423
+ "bubbles": true,
424
+ "cancelable": true,
425
+ "composed": true,
426
+ "docs": {
427
+ "tags": [{
428
+ "name": "bind",
429
+ "text": "sizes"
430
+ }],
431
+ "text": "Emitted when pane sizes are updated (either via dragging or programmatically)."
432
+ },
433
+ "complexType": {
434
+ "original": "number[]",
435
+ "resolved": "number[]",
436
+ "references": {}
437
+ }
438
+ }];
439
+ }
440
+ static get methods() {
441
+ return {
442
+ "setSizes": {
443
+ "complexType": {
444
+ "signature": "(sizes: number[]) => Promise<void>",
445
+ "parameters": [{
446
+ "name": "sizes",
447
+ "type": "number[]",
448
+ "docs": "Array of pane sizes in percentages."
449
+ }],
450
+ "references": {
451
+ "Promise": {
452
+ "location": "global",
453
+ "id": "global::Promise"
454
+ }
455
+ },
456
+ "return": "Promise<void>"
457
+ },
458
+ "docs": {
459
+ "text": "Programmatically set pane sizes.",
460
+ "tags": [{
461
+ "name": "param",
462
+ "text": "sizes Array of pane sizes in percentages."
463
+ }, {
464
+ "name": "returns",
465
+ "text": undefined
466
+ }]
467
+ }
468
+ },
469
+ "getSizes": {
470
+ "complexType": {
471
+ "signature": "() => Promise<number[]>",
472
+ "parameters": [],
473
+ "references": {
474
+ "Promise": {
475
+ "location": "global",
476
+ "id": "global::Promise"
477
+ }
478
+ },
479
+ "return": "Promise<number[]>"
480
+ },
481
+ "docs": {
482
+ "text": "Returns the current pane sizes.",
483
+ "tags": [{
484
+ "name": "returns",
485
+ "text": "Array of pane sizes in percentages."
486
+ }]
487
+ }
488
+ },
489
+ "collapse": {
490
+ "complexType": {
491
+ "signature": "(index: number) => Promise<void>",
492
+ "parameters": [{
493
+ "name": "index",
494
+ "type": "number",
495
+ "docs": "Index of the pane to collapse."
496
+ }],
497
+ "references": {
498
+ "Promise": {
499
+ "location": "global",
500
+ "id": "global::Promise"
501
+ }
502
+ },
503
+ "return": "Promise<void>"
504
+ },
505
+ "docs": {
506
+ "text": "Collapse a specific pane to 0 size.",
507
+ "tags": [{
508
+ "name": "param",
509
+ "text": "index Index of the pane to collapse."
510
+ }, {
511
+ "name": "returns",
512
+ "text": undefined
513
+ }]
514
+ }
515
+ },
516
+ "destroy": {
517
+ "complexType": {
518
+ "signature": "() => Promise<void>",
519
+ "parameters": [],
520
+ "references": {
521
+ "Promise": {
522
+ "location": "global",
523
+ "id": "global::Promise"
524
+ }
525
+ },
526
+ "return": "Promise<void>"
527
+ },
528
+ "docs": {
529
+ "text": "Destroy the split instance: removes gutters and resets layout state.",
530
+ "tags": [{
531
+ "name": "returns",
532
+ "text": undefined
533
+ }]
534
+ }
535
+ }
536
+ };
537
+ }
538
+ static get elementRef() { return "el"; }
539
+ static get watchers() {
540
+ return [{
541
+ "propName": "sizes",
542
+ "methodName": "onSizesChanged"
543
+ }, {
544
+ "propName": "direction",
545
+ "methodName": "onDirectionChanged"
546
+ }];
547
+ }
548
+ }
549
+ //# sourceMappingURL=nv-split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nv-split.js","sourceRoot":"","sources":["../../../src/components/nv-split/nv-split.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n Method,\n State,\n Watch,\n} from '@stencil/core';\n\n/**\n * The `nv-split` component is an advanced layout container that enables the creation of interactively resizable panels. It provides a flexible solution for dividing available space between multiple interface sections, with precise control over dimensions and constraints for each panel.\n * @slot pane - Content of each split pane. Use multiple `<div slot=\"pane\">` elements.\n * @slot gutter - Optional custom content inside every gutter handle.\n */\n@Component({\n tag: 'nv-split',\n styleUrl: 'styles/nv-split.scss',\n shadow: false,\n})\nexport class NvSplit {\n @Element() el: HTMLNvSplitElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Direction of the split layout.\n * - `horizontal`: panes side by side\n * - `vertical`: panes stacked\n */\n @Prop({ reflect: true })\n readonly direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Initial sizes of the panes in percentages.\n * Example: `[50, 50]` means two equal panes.\n * Explicitly `reflect: false` (array) for framework compatibility.\n */\n @Prop({ mutable: true, reflect: false })\n sizes: number[] = [];\n\n /**\n * Minimum sizes (in px) for each pane.\n * Example: `[100, 200]` => first pane min 100px, second min 200px.\n * Explicitly `reflect: false` (array) for framework compatibility.\n */\n @Prop({ reflect: false })\n readonly minSizes?: number[];\n\n /**\n * Width or height of the gutter (in px) depending on the split direction.\n * Default is 24px to meet WCAG 2.2 target size requirements for touch accessibility.\n */\n @Prop({ reflect: true })\n readonly gutterSize: number = 24;\n\n //#endregion\n /****************************************************************************/\n //#region STATE\n\n @State()\n private isDragging: boolean = false;\n\n private dragIndex: number = -1;\n private startPos: number = 0;\n private startSizes: number[] = [];\n private ro?: ResizeObserver;\n\n // Handlers stored to be able to detach them\n private onDocMove = (ev: MouseEvent) => this.handleMouseMove(ev);\n private onDocUp = () => this.stopDragging();\n\n //#endregion\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when pane sizes are updated (either via dragging or programmatically).\n * @bind sizes\n */\n @Event()\n sizesChanged: EventEmitter<number[]>;\n\n //#endregion\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('sizes')\n protected onSizesChanged(): void {\n // Re-apply sizes if modified from the outside\n this.applySizes();\n }\n\n @Watch('direction')\n protected onDirectionChanged(): void {\n // Update the orientation and the cursors of the gutters\n this.ensureGutters();\n this.applySizes();\n }\n\n //#endregion\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentDidLoad(): void {\n // Initialization (once)\n this.ensureGutters();\n this.applySizes();\n this.positionGutters();\n\n // Observer: reposition gutters when resized (nested or parent split changes)\n this.ro = new ResizeObserver(() => this.positionGutters());\n this.ro.observe(this.el);\n\n window.addEventListener('resize', () => this.positionGutters());\n }\n\n disconnectedCallback(): void {\n // Security cleanup (in case a drag was in progress)\n this.detachDocumentListeners();\n this.ro?.disconnect();\n this.ro = undefined;\n }\n\n //#endregion\n /****************************************************************************/\n //#region PUBLIC METHODS\n\n /**\n * Programmatically set pane sizes.\n * @param {Array<number>} sizes Array of pane sizes in percentages.\n * @returns {Promise<void>}\n */\n @Method()\n async setSizes(sizes: number[]): Promise<void> {\n this.sizes = [...sizes];\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Returns the current pane sizes.\n * @returns {Promise<number[]>} Array of pane sizes in percentages.\n */\n @Method()\n async getSizes(): Promise<number[]> {\n return [...this.sizes];\n }\n\n /**\n * Collapse a specific pane to 0 size.\n * @param {number} index Index of the pane to collapse.\n * @returns {Promise<void>}\n */\n @Method()\n async collapse(index: number): Promise<void> {\n const panes = this.getPanes();\n if (index < 0 || index >= panes.length) return;\n\n // Simple strategy: 0% for the index, the rest (100%) for its nearest neighbor\n const next = new Array(panes.length).fill(0);\n const target = index < panes.length - 1 ? index + 1 : index - 1;\n if (target >= 0) next[target] = 100;\n\n this.sizes = next;\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Destroy the split instance: removes gutters and resets layout state.\n * @returns {Promise<void>}\n */\n @Method()\n async destroy(): Promise<void> {\n this.sizes = [];\n this.isDragging = false;\n this.dragIndex = -1;\n this.removeOwnGutters();\n this.detachDocumentListeners();\n this.ro?.disconnect();\n }\n\n //#endregion\n /****************************************************************************/\n //#region INTERNAL HELPERS\n\n /**\n * Returns the panes of the split.\n * @returns {HTMLElement[]} The panes of the split.\n */\n private getPanes(): HTMLElement[] {\n // Only the direct children slot=\"pane\"\n return Array.from(\n this.el.querySelectorAll<HTMLElement>(':scope > [slot=\"pane\"]'),\n );\n }\n\n /**\n * Returns the own gutters of the split.\n * @returns {HTMLElement[]} The own gutters of the split.\n */\n private getOwnGutters(): HTMLElement[] {\n // Only the direct gutters of THIS instance\n return Array.from(\n this.el.querySelectorAll<HTMLElement>(\n ':scope > .nv-split-gutter[data-auto=\"true\"]',\n ),\n );\n }\n\n /**\n * Removes the own gutters of the split.\n */\n private removeOwnGutters(): void {\n this.getOwnGutters().forEach(g => g.remove());\n }\n\n /**\n * Ensures the gutters of the split.\n */\n private ensureGutters(): void {\n const panes = this.getPanes();\n\n // 1) Clean ONLY the old direct gutters of THIS instance\n this.removeOwnGutters();\n\n if (panes.length <= 1) return;\n\n // 2) Add the gutters (directs) between the panes\n panes.forEach((pane, i) => {\n if (i >= panes.length - 1) return;\n\n const g = document.createElement('div');\n g.className = 'nv-split-gutter';\n g.setAttribute('data-auto', 'true');\n\n if (this.direction === 'horizontal') {\n g.style.width = `${this.gutterSize}px`;\n g.style.cursor = 'col-resize';\n } else {\n g.style.height = `${this.gutterSize}px`;\n g.style.cursor = 'row-resize';\n }\n\n // Customizable internal slot\n const slotEl = document.createElement('slot');\n slotEl.name = 'gutter';\n g.appendChild(slotEl);\n\n // Listener drag (index = gutter between pane i and i+1)\n g.addEventListener('mousedown', (ev: MouseEvent) =>\n this.startDragging(ev, i),\n );\n\n // Insert just after the pane\n pane.insertAdjacentElement('afterend', g);\n });\n\n this.positionGutters();\n }\n\n /**\n * Applies the sizes to the panes.\n */\n private applySizes(): void {\n const panes = this.getPanes();\n const n = panes.length;\n if (n === 0) return;\n\n // Default values if inconsistent\n if (!this.sizes || this.sizes.length !== n) {\n this.sizes = Array(n).fill(100 / n);\n }\n\n panes.forEach((pane, i) => {\n const size = Math.max(0, this.sizes[i] ?? 100 / n);\n // Flex-basis via flex shorthand (https://developer.mozilla.org/en-US/docs/Web/CSS/flex)\n pane.style.flex = `0 0 ${size}%`;\n pane.style.minWidth = '0';\n pane.style.minHeight = '0';\n pane.style.overflow = 'hidden'; // let a nv-split child extend\n pane.style.display = 'flex';\n pane.style.flexDirection = 'column';\n });\n\n this.positionGutters();\n }\n\n /**\n * Attaches the document listeners.\n */\n private attachDocumentListeners(): void {\n document.addEventListener('mousemove', this.onDocMove);\n document.addEventListener('mouseup', this.onDocUp);\n }\n\n /**\n * Detaches the document listeners.\n */\n private detachDocumentListeners(): void {\n document.removeEventListener('mousemove', this.onDocMove);\n document.removeEventListener('mouseup', this.onDocUp);\n }\n\n /**\n * Positions the gutters based on the current sizes of the panes.\n */\n private positionGutters(): void {\n const panes = this.getPanes();\n const gutters = this.getOwnGutters();\n if (panes.length <= 1 || gutters.length === 0) return;\n\n const horizontal = this.direction === 'horizontal';\n let cumPct = 0;\n\n for (let i = 0; i < gutters.length; i++) {\n const sizePct = this.sizes?.[i] ?? 100 / panes.length;\n cumPct += sizePct;\n\n const g = gutters[i];\n g.style.position = 'absolute';\n\n if (horizontal) {\n g.style.left = `${cumPct}%`;\n g.style.top = '0';\n g.style.bottom = '0';\n g.style.height = '100%';\n } else {\n g.style.top = `${cumPct}%`;\n g.style.left = '0';\n g.style.right = '0';\n g.style.width = '100%';\n }\n }\n }\n\n /**\n * Starts the dragging process.\n * @param {MouseEvent} ev - The mouse event.\n * @param {number} index - The index of the gutter.\n */\n private startDragging(ev: MouseEvent, index: number): void {\n this.isDragging = true;\n this.dragIndex = index;\n this.startPos = this.direction === 'horizontal' ? ev.clientX : ev.clientY;\n this.startSizes = [...this.sizes];\n this.attachDocumentListeners();\n }\n\n /**\n * Handles the mouse movement during dragging.\n * @param {MouseEvent} ev - The mouse event.\n */\n private handleMouseMove(ev: MouseEvent): void {\n if (!this.isDragging || this.dragIndex < 0) return;\n\n const panes = this.getPanes();\n if (panes.length < 2) return;\n\n const rect = this.el.getBoundingClientRect();\n\n // Ensure we never divide by zero if the element has zero width/height\n const rawSize = this.direction === 'horizontal' ? rect.width : rect.height;\n const totalPx = Math.max(rawSize, 1);\n\n const deltaPx =\n (this.direction === 'horizontal' ? ev.clientX : ev.clientY) -\n this.startPos;\n const deltaPct = (deltaPx / totalPx) * 100;\n\n const i = this.dragIndex;\n const j = i + 1;\n\n let left = this.startSizes[i] + deltaPct;\n let right = this.startSizes[j] - deltaPct;\n\n // minSizes (px) -> %\n const minLeftPct = ((this.minSizes?.[i] ?? 0) / totalPx) * 100;\n const minRightPct = ((this.minSizes?.[j] ?? 0) / totalPx) * 100;\n\n left = Math.max(left, minLeftPct);\n right = Math.max(right, minRightPct);\n\n // Keep the sum of the pair i/j constant\n const pairSum = left + right;\n const targetSum = this.startSizes[i] + this.startSizes[j];\n if (Math.abs(pairSum - targetSum) > 0.0001) {\n const k = targetSum / (pairSum || 1);\n left *= k;\n right *= k;\n }\n\n const next = [...this.startSizes];\n next[i] = left;\n next[j] = right;\n\n this.sizes = next;\n this.applySizes();\n this.sizesChanged.emit([...this.sizes]);\n this.positionGutters();\n }\n\n /**\n * Stops the dragging process.\n */\n private stopDragging(): void {\n if (!this.isDragging) return;\n this.isDragging = false;\n this.dragIndex = -1;\n this.detachDocumentListeners();\n }\n\n //#endregion\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host data-dragging={this.isDragging.toString()}>\n <slot name=\"pane\"></slot>\n <slot name=\"gutter\"></slot>\n </Host>\n );\n }\n\n //#endregion\n /****************************************************************************/\n}\n"]}