@aquera/nile-elements 1.5.2 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +239 -195
  5. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  6. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  7. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
  8. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -1
  9. package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +1 -1
  10. package/dist/nile-auto-complete/nile-auto-complete.esm.js +1 -1
  11. package/dist/nile-file-preview/nile-file-preview.cjs.js +1 -1
  12. package/dist/nile-file-preview/nile-file-preview.cjs.js.map +1 -1
  13. package/dist/nile-file-preview/nile-file-preview.css.cjs.js +1 -1
  14. package/dist/nile-file-preview/nile-file-preview.css.cjs.js.map +1 -1
  15. package/dist/nile-file-preview/nile-file-preview.css.esm.js +2 -2
  16. package/dist/nile-file-preview/nile-file-preview.esm.js +1 -1
  17. package/dist/nile-file-preview/nile-file-preview.template.cjs.js +1 -1
  18. package/dist/nile-file-preview/nile-file-preview.template.cjs.js.map +1 -1
  19. package/dist/nile-file-preview/nile-file-preview.template.esm.js +55 -25
  20. package/dist/nile-file-preview/utils/index.cjs.js +1 -1
  21. package/dist/nile-file-preview/utils/index.esm.js +1 -1
  22. package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js +1 -1
  23. package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js.map +1 -1
  24. package/dist/nile-file-preview/utils/nile-file-preview.util.esm.js +1 -1
  25. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  26. package/dist/nile-file-upload/nile-file-upload.cjs.js.map +1 -1
  27. package/dist/nile-file-upload/nile-file-upload.css.cjs.js +1 -1
  28. package/dist/nile-file-upload/nile-file-upload.css.cjs.js.map +1 -1
  29. package/dist/nile-file-upload/nile-file-upload.css.esm.js +15 -5
  30. package/dist/nile-file-upload/nile-file-upload.esm.js +2 -2
  31. package/dist/nile-file-upload/nile-file-upload.template.cjs.js +2 -2
  32. package/dist/nile-file-upload/nile-file-upload.template.cjs.js.map +1 -1
  33. package/dist/nile-file-upload/nile-file-upload.template.esm.js +36 -32
  34. package/dist/nile-file-upload/types/file-upload.enums.cjs.js +1 -1
  35. package/dist/nile-file-upload/types/file-upload.enums.cjs.js.map +1 -1
  36. package/dist/nile-file-upload/types/file-upload.enums.esm.js +1 -1
  37. package/dist/nile-file-upload/types/index.cjs.js +1 -1
  38. package/dist/nile-file-upload/types/index.esm.js +1 -1
  39. package/dist/nile-file-upload/utils/drag-drop.util.cjs.js +1 -1
  40. package/dist/nile-file-upload/utils/drag-drop.util.cjs.js.map +1 -1
  41. package/dist/nile-file-upload/utils/drag-drop.util.esm.js +1 -1
  42. package/dist/nile-file-upload/utils/file-validation.util.cjs.js +4 -2
  43. package/dist/nile-file-upload/utils/file-validation.util.cjs.js.map +1 -1
  44. package/dist/nile-file-upload/utils/file-validation.util.esm.js +1 -1
  45. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
  46. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
  47. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.esm.js +3 -3
  48. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +1 -1
  49. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -1
  50. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -1
  51. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  52. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  53. package/dist/nile-grid/nile-grid.esm.js +2 -2
  54. package/dist/nile-grid/nile-grid.layout.cjs.js +1 -1
  55. package/dist/nile-grid/nile-grid.layout.esm.js +1 -1
  56. package/dist/nile-grid/nile-grid.resize.cjs.js +1 -1
  57. package/dist/nile-grid/nile-grid.resize.esm.js +1 -1
  58. package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
  59. package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
  60. package/dist/nile-grid/nile-grid.width.cjs.js +1 -1
  61. package/dist/nile-grid/nile-grid.width.cjs.js.map +1 -1
  62. package/dist/nile-grid/nile-grid.width.esm.js +1 -1
  63. package/dist/nile-input/nile-input.cjs.js +1 -1
  64. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  65. package/dist/nile-input/nile-input.esm.js +1 -1
  66. package/dist/nile-popover/index.cjs.js +1 -1
  67. package/dist/nile-popover/index.esm.js +1 -1
  68. package/dist/nile-popover/nile-popover.cjs.js +4 -4
  69. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  70. package/dist/nile-popover/nile-popover.esm.js +11 -6
  71. package/dist/src/nile-accordion/nile-accordian.test.js +101 -99
  72. package/dist/src/nile-accordion/nile-accordian.test.js.map +1 -1
  73. package/dist/src/nile-auto-complete/nile-auto-complete.css.js +1 -1
  74. package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -1
  75. package/dist/src/nile-auto-complete/nile-auto-complete.js +1 -1
  76. package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
  77. package/dist/src/nile-auto-complete/nile-auto-complete.test.js +104 -112
  78. package/dist/src/nile-auto-complete/nile-auto-complete.test.js.map +1 -1
  79. package/dist/src/nile-avatar/nile-avatar.test.d.ts +0 -1
  80. package/dist/src/nile-avatar/nile-avatar.test.js +103 -87
  81. package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -1
  82. package/dist/src/nile-badge/nile-badge.test.js +554 -35
  83. package/dist/src/nile-badge/nile-badge.test.js.map +1 -1
  84. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.d.ts +2 -0
  85. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +106 -0
  86. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -0
  87. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.d.ts +1 -0
  88. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js +108 -0
  89. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js.map +1 -0
  90. package/dist/src/nile-button/nile-button.test.js +499 -39
  91. package/dist/src/nile-button/nile-button.test.js.map +1 -1
  92. package/dist/src/nile-button-filter/nile-button-filter.test.d.ts +1 -0
  93. package/dist/src/nile-button-filter/nile-button-filter.test.js +108 -0
  94. package/dist/src/nile-button-filter/nile-button-filter.test.js.map +1 -0
  95. package/dist/src/nile-button-toggle/nile-button-toggle.test.d.ts +1 -0
  96. package/dist/src/nile-button-toggle/nile-button-toggle.test.js +108 -0
  97. package/dist/src/nile-button-toggle/nile-button-toggle.test.js.map +1 -0
  98. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +1 -1
  99. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +105 -104
  100. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -1
  101. package/dist/src/nile-calendar/nile-calendar.test.d.ts +0 -6
  102. package/dist/src/nile-calendar/nile-calendar.test.js +103 -318
  103. package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
  104. package/dist/src/nile-card/nile-card.test.js +102 -66
  105. package/dist/src/nile-card/nile-card.test.js.map +1 -1
  106. package/dist/src/nile-checkbox/nile-checkbox.test.js +547 -108
  107. package/dist/src/nile-checkbox/nile-checkbox.test.js.map +1 -1
  108. package/dist/src/nile-chip/nile-chip.test.d.ts +0 -2
  109. package/dist/src/nile-chip/nile-chip.test.js +101 -102
  110. package/dist/src/nile-chip/nile-chip.test.js.map +1 -1
  111. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.d.ts +1 -0
  112. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js +108 -0
  113. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js.map +1 -0
  114. package/dist/src/nile-date-picker/nile-date-picker.test.d.ts +1 -0
  115. package/dist/src/nile-date-picker/nile-date-picker.test.js +108 -0
  116. package/dist/src/nile-date-picker/nile-date-picker.test.js.map +1 -0
  117. package/dist/src/nile-dialog/nile-dialog.test.d.ts +0 -1
  118. package/dist/src/nile-dialog/nile-dialog.test.js +104 -126
  119. package/dist/src/nile-dialog/nile-dialog.test.js.map +1 -1
  120. package/dist/src/nile-divider/nile-divider.test.d.ts +1 -0
  121. package/dist/src/nile-divider/nile-divider.test.js +560 -0
  122. package/dist/src/nile-divider/nile-divider.test.js.map +1 -0
  123. package/dist/src/nile-drawer/nile-drawer.test.js +106 -86
  124. package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -1
  125. package/dist/src/nile-dropdown/nile-dropdown.test.js +104 -148
  126. package/dist/src/nile-dropdown/nile-dropdown.test.js.map +1 -1
  127. package/dist/src/nile-empty-state/nile-empty-state.test.js +107 -59
  128. package/dist/src/nile-empty-state/nile-empty-state.test.js.map +1 -1
  129. package/dist/src/nile-error-message/nile-error-message.test.js +105 -55
  130. package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -1
  131. package/dist/src/nile-error-notification/nile-error-notification.test.d.ts +1 -0
  132. package/dist/src/nile-error-notification/nile-error-notification.test.js +108 -0
  133. package/dist/src/nile-error-notification/nile-error-notification.test.js.map +1 -0
  134. package/dist/src/nile-file-preview/nile-file-preview.css.js +2 -2
  135. package/dist/src/nile-file-preview/nile-file-preview.css.js.map +1 -1
  136. package/dist/src/nile-file-preview/nile-file-preview.d.ts +1 -4
  137. package/dist/src/nile-file-preview/nile-file-preview.js +21 -47
  138. package/dist/src/nile-file-preview/nile-file-preview.js.map +1 -1
  139. package/dist/src/nile-file-preview/nile-file-preview.template.d.ts +6 -6
  140. package/dist/src/nile-file-preview/nile-file-preview.template.js +53 -23
  141. package/dist/src/nile-file-preview/nile-file-preview.template.js.map +1 -1
  142. package/dist/src/nile-file-preview/nile-file-preview.test.d.ts +0 -6
  143. package/dist/src/nile-file-preview/nile-file-preview.test.js +106 -28
  144. package/dist/src/nile-file-preview/nile-file-preview.test.js.map +1 -1
  145. package/dist/src/nile-file-preview/utils/nile-file-preview.util.d.ts +3 -2
  146. package/dist/src/nile-file-preview/utils/nile-file-preview.util.js +32 -7
  147. package/dist/src/nile-file-preview/utils/nile-file-preview.util.js.map +1 -1
  148. package/dist/src/nile-file-upload/nile-file-upload.css.js +15 -5
  149. package/dist/src/nile-file-upload/nile-file-upload.css.js.map +1 -1
  150. package/dist/src/nile-file-upload/nile-file-upload.d.ts +4 -1
  151. package/dist/src/nile-file-upload/nile-file-upload.js +13 -1
  152. package/dist/src/nile-file-upload/nile-file-upload.js.map +1 -1
  153. package/dist/src/nile-file-upload/nile-file-upload.template.js +19 -15
  154. package/dist/src/nile-file-upload/nile-file-upload.template.js.map +1 -1
  155. package/dist/src/nile-file-upload/nile-file-upload.test.d.ts +0 -6
  156. package/dist/src/nile-file-upload/nile-file-upload.test.js +106 -28
  157. package/dist/src/nile-file-upload/nile-file-upload.test.js.map +1 -1
  158. package/dist/src/nile-file-upload/types/file-upload.enums.d.ts +17 -3
  159. package/dist/src/nile-file-upload/types/file-upload.enums.js +17 -1
  160. package/dist/src/nile-file-upload/types/file-upload.enums.js.map +1 -1
  161. package/dist/src/nile-file-upload/utils/drag-drop.util.d.ts +2 -0
  162. package/dist/src/nile-file-upload/utils/drag-drop.util.js +14 -8
  163. package/dist/src/nile-file-upload/utils/drag-drop.util.js.map +1 -1
  164. package/dist/src/nile-file-upload/utils/file-validation.util.js +89 -10
  165. package/dist/src/nile-file-upload/utils/file-validation.util.js.map +1 -1
  166. package/dist/src/nile-filter-chip/nile-filter-chip.test.js +102 -77
  167. package/dist/src/nile-filter-chip/nile-filter-chip.test.js.map +1 -1
  168. package/dist/src/nile-form-error-message/nile-form-error-message.test.d.ts +1 -0
  169. package/dist/src/nile-form-error-message/nile-form-error-message.test.js +108 -0
  170. package/dist/src/nile-form-error-message/nile-form-error-message.test.js.map +1 -0
  171. package/dist/src/nile-form-group/nile-form-group.test.js +104 -51
  172. package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -1
  173. package/dist/src/nile-form-help-text/nile-form-help-text.test.js +104 -84
  174. package/dist/src/nile-form-help-text/nile-form-help-text.test.js.map +1 -1
  175. package/dist/src/nile-format-date/nile-format-date.test.d.ts +1 -0
  176. package/dist/src/nile-format-date/nile-format-date.test.js +108 -0
  177. package/dist/src/nile-format-date/nile-format-date.test.js.map +1 -0
  178. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js +6 -5
  179. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
  180. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.d.ts +14 -0
  181. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js +24 -0
  182. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -1
  183. package/dist/src/nile-grid/nile-grid.d.ts +1 -0
  184. package/dist/src/nile-grid/nile-grid.js +5 -1
  185. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  186. package/dist/src/nile-grid/nile-grid.utils.d.ts +6 -0
  187. package/dist/src/nile-grid/nile-grid.utils.js +13 -0
  188. package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
  189. package/dist/src/nile-heading/nile-heading.test.d.ts +1 -0
  190. package/dist/src/nile-heading/nile-heading.test.js +108 -0
  191. package/dist/src/nile-heading/nile-heading.test.js.map +1 -0
  192. package/dist/src/nile-hero/nile-hero.test.js +101 -38
  193. package/dist/src/nile-hero/nile-hero.test.js.map +1 -1
  194. package/dist/src/nile-icon/nile-icon.test.js +103 -40
  195. package/dist/src/nile-icon/nile-icon.test.js.map +1 -1
  196. package/dist/src/nile-icon-button/nile-icon-button.test.d.ts +1 -0
  197. package/dist/src/nile-icon-button/nile-icon-button.test.js +568 -0
  198. package/dist/src/nile-icon-button/nile-icon-button.test.js.map +1 -0
  199. package/dist/src/nile-inline-edit/nile-inline-edit.test.d.ts +1 -0
  200. package/dist/src/nile-inline-edit/nile-inline-edit.test.js +108 -0
  201. package/dist/src/nile-inline-edit/nile-inline-edit.test.js.map +1 -0
  202. package/dist/src/nile-input/nile-input.js +1 -1
  203. package/dist/src/nile-input/nile-input.js.map +1 -1
  204. package/dist/src/nile-input/nile-input.test.js +109 -139
  205. package/dist/src/nile-input/nile-input.test.js.map +1 -1
  206. package/dist/src/nile-link/nile-link.test.js +103 -67
  207. package/dist/src/nile-link/nile-link.test.js.map +1 -1
  208. package/dist/src/nile-list/nile-list.test.d.ts +1 -0
  209. package/dist/src/nile-list/nile-list.test.js +108 -0
  210. package/dist/src/nile-list/nile-list.test.js.map +1 -0
  211. package/dist/src/nile-list-item/nile-list-item.test.d.ts +1 -0
  212. package/dist/src/nile-list-item/nile-list-item.test.js +108 -0
  213. package/dist/src/nile-list-item/nile-list-item.test.js.map +1 -0
  214. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.d.ts +2 -0
  215. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js +109 -0
  216. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js.map +1 -0
  217. package/dist/src/nile-loader/nile-loader.test.js +107 -40
  218. package/dist/src/nile-loader/nile-loader.test.js.map +1 -1
  219. package/dist/src/nile-menu/nile-menu.test.d.ts +1 -0
  220. package/dist/src/nile-menu/nile-menu.test.js +113 -0
  221. package/dist/src/nile-menu/nile-menu.test.js.map +1 -0
  222. package/dist/src/nile-menu-item/nile-menu-item.test.d.ts +1 -0
  223. package/dist/src/nile-menu-item/nile-menu-item.test.js +113 -0
  224. package/dist/src/nile-menu-item/nile-menu-item.test.js.map +1 -0
  225. package/dist/src/nile-option/nile-option.test.d.ts +1 -0
  226. package/dist/src/nile-option/nile-option.test.js +108 -0
  227. package/dist/src/nile-option/nile-option.test.js.map +1 -0
  228. package/dist/src/nile-option-group/nile-option-group.test.d.ts +1 -0
  229. package/dist/src/nile-option-group/nile-option-group.test.js +108 -0
  230. package/dist/src/nile-option-group/nile-option-group.test.js.map +1 -0
  231. package/dist/src/nile-page-header/nile-page-header.test.d.ts +1 -0
  232. package/dist/src/nile-page-header/nile-page-header.test.js +108 -0
  233. package/dist/src/nile-page-header/nile-page-header.test.js.map +1 -0
  234. package/dist/src/nile-pagination/nile-pagination.test.d.ts +1 -0
  235. package/dist/src/nile-pagination/nile-pagination.test.js +108 -0
  236. package/dist/src/nile-pagination/nile-pagination.test.js.map +1 -0
  237. package/dist/src/nile-popover/nile-popover.test.js +103 -68
  238. package/dist/src/nile-popover/nile-popover.test.js.map +1 -1
  239. package/dist/src/nile-popup/nile-popup.test.js +104 -65
  240. package/dist/src/nile-popup/nile-popup.test.js.map +1 -1
  241. package/dist/src/nile-progress-bar/nile-progress-bar.test.js +104 -44
  242. package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -1
  243. package/dist/src/nile-radio/nile-radio.test.js +103 -66
  244. package/dist/src/nile-radio/nile-radio.test.js.map +1 -1
  245. package/dist/src/nile-radio-group/nile-radio-group.test.d.ts +0 -1
  246. package/dist/src/nile-radio-group/nile-radio-group.test.js +105 -171
  247. package/dist/src/nile-radio-group/nile-radio-group.test.js.map +1 -1
  248. package/dist/src/nile-section-message/nile-section-message.test.d.ts +1 -0
  249. package/dist/src/nile-section-message/nile-section-message.test.js +108 -0
  250. package/dist/src/nile-section-message/nile-section-message.test.js.map +1 -0
  251. package/dist/src/nile-select/nile-select.test.d.ts +0 -5
  252. package/dist/src/nile-select/nile-select.test.js +105 -244
  253. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  254. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.d.ts +1 -0
  255. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js +108 -0
  256. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js.map +1 -0
  257. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +104 -50
  258. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -1
  259. package/dist/src/nile-slider/nile-slider.test.d.ts +1 -0
  260. package/dist/src/nile-slider/nile-slider.test.js +108 -0
  261. package/dist/src/nile-slider/nile-slider.test.js.map +1 -0
  262. package/dist/src/nile-spinner/nile-spinner.test.d.ts +1 -0
  263. package/dist/src/nile-spinner/nile-spinner.test.js +569 -0
  264. package/dist/src/nile-spinner/nile-spinner.test.js.map +1 -0
  265. package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +1 -0
  266. package/dist/src/nile-split-panel/nile-split-panel.test.js +108 -0
  267. package/dist/src/nile-split-panel/nile-split-panel.test.js.map +1 -0
  268. package/dist/src/nile-stepper/nile-stepper.test.d.ts +2 -0
  269. package/dist/src/nile-stepper/nile-stepper.test.js +109 -0
  270. package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -0
  271. package/dist/src/nile-stepper-item/nile-stepper-item.test.d.ts +1 -0
  272. package/dist/src/nile-stepper-item/nile-stepper-item.test.js +108 -0
  273. package/dist/src/nile-stepper-item/nile-stepper-item.test.js.map +1 -0
  274. package/dist/src/nile-tab/nile-tab.test.d.ts +1 -0
  275. package/dist/src/nile-tab/nile-tab.test.js +108 -0
  276. package/dist/src/nile-tab/nile-tab.test.js.map +1 -0
  277. package/dist/src/nile-tab-group/nile-tab-group.test.js +105 -172
  278. package/dist/src/nile-tab-group/nile-tab-group.test.js.map +1 -1
  279. package/dist/src/nile-tab-panel/nile-tab-panel.test.d.ts +1 -0
  280. package/dist/src/nile-tab-panel/nile-tab-panel.test.js +108 -0
  281. package/dist/src/nile-tab-panel/nile-tab-panel.test.js.map +1 -0
  282. package/dist/src/nile-tag/nile-tag.test.d.ts +1 -0
  283. package/dist/src/nile-tag/nile-tag.test.js +574 -0
  284. package/dist/src/nile-tag/nile-tag.test.js.map +1 -0
  285. package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -1
  286. package/dist/src/nile-textarea/nile-textarea.test.js +105 -84
  287. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -1
  288. package/dist/src/nile-title/nile-title.test.d.ts +1 -0
  289. package/dist/src/nile-title/nile-title.test.js +108 -0
  290. package/dist/src/nile-title/nile-title.test.js.map +1 -0
  291. package/dist/src/nile-toast/nile-toast.test.d.ts +1 -0
  292. package/dist/src/nile-toast/nile-toast.test.js +526 -0
  293. package/dist/src/nile-toast/nile-toast.test.js.map +1 -0
  294. package/dist/src/nile-toolbar/nile-toolbar.test.d.ts +1 -0
  295. package/dist/src/nile-toolbar/nile-toolbar.test.js +108 -0
  296. package/dist/src/nile-toolbar/nile-toolbar.test.js.map +1 -0
  297. package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +1 -0
  298. package/dist/src/nile-tooltip/nile-tooltip.test.js +546 -0
  299. package/dist/src/nile-tooltip/nile-tooltip.test.js.map +1 -0
  300. package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +1 -7
  301. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +105 -628
  302. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  303. package/dist/src/version.js +1 -1
  304. package/dist/src/version.js.map +1 -1
  305. package/dist/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +1 -1
  307. package/rollup.config.js +7 -1
  308. package/src/nile-accordion/nile-accordian.test.ts +102 -116
  309. package/src/nile-auto-complete/nile-auto-complete.css.ts +1 -1
  310. package/src/nile-auto-complete/nile-auto-complete.test.ts +102 -145
  311. package/src/nile-auto-complete/nile-auto-complete.ts +1 -1
  312. package/src/nile-avatar/nile-avatar.test.ts +102 -112
  313. package/src/nile-badge/nile-badge.test.ts +642 -30
  314. package/src/nile-breadcrumb/nile-breadcrumb.test.ts +107 -0
  315. package/src/nile-breadcrumb-item/nile-breadcrumb-item.test.ts +106 -0
  316. package/src/nile-button/nile-button.test.ts +593 -61
  317. package/src/nile-button-filter/nile-button-filter.test.ts +106 -0
  318. package/src/nile-button-toggle/nile-button-toggle.test.ts +106 -0
  319. package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +104 -126
  320. package/src/nile-calendar/nile-calendar.test.ts +102 -406
  321. package/src/nile-card/nile-card.test.ts +103 -71
  322. package/src/nile-checkbox/nile-checkbox.test.ts +614 -108
  323. package/src/nile-chip/nile-chip.test.ts +102 -136
  324. package/src/nile-circular-progressbar/nile-circular-progressbar.test.ts +106 -0
  325. package/src/nile-date-picker/nile-date-picker.test.ts +106 -0
  326. package/src/nile-dialog/nile-dialog.test.ts +102 -164
  327. package/src/nile-divider/nile-divider.test.ts +659 -0
  328. package/src/nile-drawer/nile-drawer.test.ts +105 -105
  329. package/src/nile-dropdown/nile-dropdown.test.ts +102 -190
  330. package/src/nile-empty-state/nile-empty-state.test.ts +104 -67
  331. package/src/nile-error-message/nile-error-message.test.ts +104 -67
  332. package/src/nile-error-notification/nile-error-notification.test.ts +106 -0
  333. package/src/nile-file-preview/nile-file-preview.css.ts +2 -2
  334. package/src/nile-file-preview/nile-file-preview.template.ts +59 -23
  335. package/src/nile-file-preview/nile-file-preview.test.ts +105 -37
  336. package/src/nile-file-preview/nile-file-preview.ts +23 -56
  337. package/src/nile-file-preview/utils/nile-file-preview.util.ts +37 -8
  338. package/src/nile-file-upload/nile-file-upload.css.ts +15 -5
  339. package/src/nile-file-upload/nile-file-upload.template.ts +22 -18
  340. package/src/nile-file-upload/nile-file-upload.test.ts +105 -37
  341. package/src/nile-file-upload/nile-file-upload.ts +11 -3
  342. package/src/nile-file-upload/types/file-upload.enums.ts +20 -4
  343. package/src/nile-file-upload/utils/drag-drop.util.ts +20 -11
  344. package/src/nile-file-upload/utils/file-validation.util.ts +104 -22
  345. package/src/nile-filter-chip/nile-filter-chip.test.ts +103 -89
  346. package/src/nile-form-error-message/nile-form-error-message.test.ts +106 -0
  347. package/src/nile-form-group/nile-form-group.test.ts +103 -60
  348. package/src/nile-form-help-text/nile-form-help-text.test.ts +102 -106
  349. package/src/nile-format-date/nile-format-date.test.ts +106 -0
  350. package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.ts +7 -5
  351. package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.ts +28 -0
  352. package/src/nile-grid/nile-grid.ts +6 -1
  353. package/src/nile-grid/nile-grid.utils.ts +18 -1
  354. package/src/nile-heading/nile-heading.test.ts +106 -0
  355. package/src/nile-hero/nile-hero.test.ts +103 -42
  356. package/src/nile-icon/nile-icon.test.ts +103 -50
  357. package/src/nile-icon-button/nile-icon-button.test.ts +667 -0
  358. package/src/nile-inline-edit/nile-inline-edit.test.ts +106 -0
  359. package/src/nile-input/nile-input.test.ts +105 -164
  360. package/src/nile-input/nile-input.ts +1 -1
  361. package/src/nile-link/nile-link.test.ts +104 -81
  362. package/src/nile-list/nile-list.test.ts +106 -0
  363. package/src/nile-list-item/nile-list-item.test.ts +106 -0
  364. package/src/nile-lite-tooltip/nile-lite-tooltip.test.ts +107 -0
  365. package/src/nile-loader/nile-loader.test.ts +103 -48
  366. package/src/nile-menu/nile-menu.test.ts +106 -0
  367. package/src/nile-menu-item/nile-menu-item.test.ts +106 -0
  368. package/src/nile-option/nile-option.test.ts +106 -0
  369. package/src/nile-option-group/nile-option-group.test.ts +106 -0
  370. package/src/nile-page-header/nile-page-header.test.ts +106 -0
  371. package/src/nile-pagination/nile-pagination.test.ts +106 -0
  372. package/src/nile-popover/nile-popover.test.ts +103 -83
  373. package/src/nile-popup/nile-popup.test.ts +102 -82
  374. package/src/nile-progress-bar/nile-progress-bar.test.ts +103 -52
  375. package/src/nile-radio/nile-radio.test.ts +103 -78
  376. package/src/nile-radio-group/nile-radio-group.test.ts +104 -213
  377. package/src/nile-section-message/nile-section-message.test.ts +106 -0
  378. package/src/nile-select/nile-select.test.ts +105 -308
  379. package/src/nile-skeleton-loader/nile-skeleton-loader.test.ts +106 -0
  380. package/src/nile-slide-toggle/nile-slide-toggle.test.ts +103 -58
  381. package/src/nile-slider/nile-slider.test.ts +106 -0
  382. package/src/nile-spinner/nile-spinner.test.ts +668 -0
  383. package/src/nile-split-panel/nile-split-panel.test.ts +106 -0
  384. package/src/nile-stepper/nile-stepper.test.ts +107 -0
  385. package/src/nile-stepper-item/nile-stepper-item.test.ts +106 -0
  386. package/src/nile-tab/nile-tab.test.ts +106 -0
  387. package/src/nile-tab-group/nile-tab-group.test.ts +104 -211
  388. package/src/nile-tab-panel/nile-tab-panel.test.ts +106 -0
  389. package/src/nile-tag/nile-tag.test.ts +675 -0
  390. package/src/nile-textarea/nile-textarea.test.ts +104 -100
  391. package/src/nile-title/nile-title.test.ts +106 -0
  392. package/src/nile-toast/nile-toast.test.ts +625 -0
  393. package/src/nile-toolbar/nile-toolbar.test.ts +106 -0
  394. package/src/nile-tooltip/nile-tooltip.test.ts +645 -0
  395. package/src/nile-virtual-select/nile-virtual-select.test.ts +104 -772
  396. package/vscode-html-custom-data.json +8 -3
  397. package/web-test-runner.config.mjs +4 -2
  398. package/dist/axe.min-2720cd56.esm.js +0 -1
  399. package/dist/axe.min-69d47269.cjs.js +0 -2
  400. package/dist/axe.min-69d47269.cjs.js.map +0 -1
  401. package/dist/css-tag-bb10c0fa.cjs.js +0 -6
  402. package/dist/css-tag-bb10c0fa.cjs.js.map +0 -1
  403. package/dist/css-tag-dc564feb.esm.js +0 -6
  404. package/dist/fixture-958445f8.cjs.js +0 -395
  405. package/dist/fixture-958445f8.cjs.js.map +0 -1
  406. package/dist/fixture-985bba12.esm.js +0 -569
  407. package/dist/nile-accordion/nile-accordian.test.cjs.js +0 -2
  408. package/dist/nile-accordion/nile-accordian.test.cjs.js.map +0 -1
  409. package/dist/nile-accordion/nile-accordian.test.esm.js +0 -1
  410. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +0 -2
  411. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +0 -1
  412. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +0 -9
  413. package/dist/nile-avatar/nile-avatar.test.cjs.js +0 -2
  414. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +0 -1
  415. package/dist/nile-avatar/nile-avatar.test.esm.js +0 -11
  416. package/dist/nile-badge/nile-badge.test.cjs.js +0 -2
  417. package/dist/nile-badge/nile-badge.test.cjs.js.map +0 -1
  418. package/dist/nile-badge/nile-badge.test.esm.js +0 -1
  419. package/dist/nile-button/nile-button.test.cjs.js +0 -2
  420. package/dist/nile-button/nile-button.test.cjs.js.map +0 -1
  421. package/dist/nile-button/nile-button.test.esm.js +0 -4
  422. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +0 -2
  423. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +0 -1
  424. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +0 -49
  425. package/dist/nile-calendar/nile-calendar.test.cjs.js +0 -2
  426. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +0 -1
  427. package/dist/nile-calendar/nile-calendar.test.esm.js +0 -11
  428. package/dist/nile-card/nile-card.test.cjs.js +0 -2
  429. package/dist/nile-card/nile-card.test.cjs.js.map +0 -1
  430. package/dist/nile-card/nile-card.test.esm.js +0 -51
  431. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +0 -2
  432. package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +0 -1
  433. package/dist/nile-checkbox/nile-checkbox.test.esm.js +0 -17
  434. package/dist/nile-chip/nile-chip.test.cjs.js +0 -2
  435. package/dist/nile-chip/nile-chip.test.cjs.js.map +0 -1
  436. package/dist/nile-chip/nile-chip.test.esm.js +0 -1
  437. package/dist/nile-dialog/nile-dialog.test.cjs.js +0 -2
  438. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +0 -1
  439. package/dist/nile-dialog/nile-dialog.test.esm.js +0 -7
  440. package/dist/nile-drawer/nile-drawer.test.cjs.js +0 -2
  441. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +0 -1
  442. package/dist/nile-drawer/nile-drawer.test.esm.js +0 -17
  443. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +0 -2
  444. package/dist/nile-dropdown/nile-dropdown.test.cjs.js.map +0 -1
  445. package/dist/nile-dropdown/nile-dropdown.test.esm.js +0 -28
  446. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +0 -2
  447. package/dist/nile-empty-state/nile-empty-state.test.cjs.js.map +0 -1
  448. package/dist/nile-empty-state/nile-empty-state.test.esm.js +0 -9
  449. package/dist/nile-error-message/nile-error-message.test.cjs.js +0 -2
  450. package/dist/nile-error-message/nile-error-message.test.cjs.js.map +0 -1
  451. package/dist/nile-error-message/nile-error-message.test.esm.js +0 -1
  452. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +0 -2
  453. package/dist/nile-file-preview/nile-file-preview.test.cjs.js.map +0 -1
  454. package/dist/nile-file-preview/nile-file-preview.test.esm.js +0 -1
  455. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +0 -2
  456. package/dist/nile-file-upload/nile-file-upload.test.cjs.js.map +0 -1
  457. package/dist/nile-file-upload/nile-file-upload.test.esm.js +0 -1
  458. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +0 -2
  459. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js.map +0 -1
  460. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +0 -20
  461. package/dist/nile-form-group/nile-form-group.test.cjs.js +0 -2
  462. package/dist/nile-form-group/nile-form-group.test.cjs.js.map +0 -1
  463. package/dist/nile-form-group/nile-form-group.test.esm.js +0 -1
  464. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +0 -2
  465. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js.map +0 -1
  466. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +0 -1
  467. package/dist/nile-hero/nile-hero.test.cjs.js +0 -2
  468. package/dist/nile-hero/nile-hero.test.cjs.js.map +0 -1
  469. package/dist/nile-hero/nile-hero.test.esm.js +0 -14
  470. package/dist/nile-icon/nile-icon.test.cjs.js +0 -2
  471. package/dist/nile-icon/nile-icon.test.cjs.js.map +0 -1
  472. package/dist/nile-icon/nile-icon.test.esm.js +0 -1
  473. package/dist/nile-input/nile-input.test.cjs.js +0 -2
  474. package/dist/nile-input/nile-input.test.cjs.js.map +0 -1
  475. package/dist/nile-input/nile-input.test.esm.js +0 -17
  476. package/dist/nile-link/nile-link.test.cjs.js +0 -2
  477. package/dist/nile-link/nile-link.test.cjs.js.map +0 -1
  478. package/dist/nile-link/nile-link.test.esm.js +0 -1
  479. package/dist/nile-loader/nile-loader.test.cjs.js +0 -2
  480. package/dist/nile-loader/nile-loader.test.cjs.js.map +0 -1
  481. package/dist/nile-loader/nile-loader.test.esm.js +0 -1
  482. package/dist/nile-popover/nile-popover.test.cjs.js +0 -2
  483. package/dist/nile-popover/nile-popover.test.cjs.js.map +0 -1
  484. package/dist/nile-popover/nile-popover.test.esm.js +0 -21
  485. package/dist/nile-popup/nile-popup.test.cjs.js +0 -2
  486. package/dist/nile-popup/nile-popup.test.cjs.js.map +0 -1
  487. package/dist/nile-popup/nile-popup.test.esm.js +0 -1
  488. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +0 -2
  489. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +0 -1
  490. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +0 -1
  491. package/dist/nile-radio/nile-radio.test.cjs.js +0 -2
  492. package/dist/nile-radio/nile-radio.test.cjs.js.map +0 -1
  493. package/dist/nile-radio/nile-radio.test.esm.js +0 -1
  494. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +0 -2
  495. package/dist/nile-radio-group/nile-radio-group.test.cjs.js.map +0 -1
  496. package/dist/nile-radio-group/nile-radio-group.test.esm.js +0 -57
  497. package/dist/nile-select/nile-select.test.cjs.js +0 -2
  498. package/dist/nile-select/nile-select.test.cjs.js.map +0 -1
  499. package/dist/nile-select/nile-select.test.esm.js +0 -55
  500. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +0 -2
  501. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +0 -1
  502. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +0 -1
  503. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +0 -2
  504. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +0 -1
  505. package/dist/nile-tab-group/nile-tab-group.test.esm.js +0 -65
  506. package/dist/nile-textarea/nile-textarea.test.cjs.js +0 -2
  507. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +0 -1
  508. package/dist/nile-textarea/nile-textarea.test.esm.js +0 -1
  509. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
  510. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
  511. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -93
  512. package/dist/scopedElementsWrapper-31107e48.esm.js +0 -1
  513. package/dist/scopedElementsWrapper-9b188ea6.cjs.js +0 -2
  514. package/dist/scopedElementsWrapper-9b188ea6.cjs.js.map +0 -1
  515. package/dist/sinon-esm-68c8e378.esm.js +0 -1
  516. package/dist/sinon-esm-97570c13.cjs.js +0 -2
  517. package/dist/sinon-esm-97570c13.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.width.cjs.js","sources":["../../../src/nile-grid/nile-grid.width.ts","../../../src/nile-grid/nile-grid.resize.ts","../../../src/nile-grid/nile-grid.layout.ts","../../../src/nile-grid/nile-grid.utils.ts"],"sourcesContent":["import { NileGrid } from './nile-grid';\nimport { applyColumnsTemplate } from './nile-grid.layout';\nimport { getHead } from './nile-grid.utils';\nimport { PrefixColumn } from './types/nile-grid.types';\n\n/** computeColumnWidths\n * @param nileGrid Grid instance (reads minColumnWidth, columnWidths)\n * @param colCount Total columns\n * @param columnWidths Mutable widths array to fill/update\n * @param slotEl Slot element (to read head for desired widths)\n * @returns void\n */\nexport function computeColumnWidths(\n nileGrid: NileGrid,\n colCount: number,\n columnWidths: number[],\n slotEl: any,\n lockedWidthColumns: boolean[],\n headerChanged: boolean\n): void {\n const minCol = nileGrid.minColumnWidth;\n const containerWidth = getContainerWidth(nileGrid);\n const desired = readDesiredFromHead(slotEl, colCount, containerWidth, nileGrid, lockedWidthColumns, headerChanged, columnWidths);\n const isSeeded = seedWidthsFromDesired(desired, columnWidths, minCol);\n\n distributeFlex(columnWidths, isSeeded, containerWidth, minCol);\n if(!nileGrid.enableScroll) {\n normalizeToContainer(columnWidths, containerWidth, minCol);\n }\n clampAndRound(columnWidths, minCol);\n applyColumnsTemplate(nileGrid, columnWidths);\n}\n\n/** getContainerWidth\n * @param nileGrid Grid root element\n * @returns Numeric container width in pixels (accounting for padding/offset)\n */\nfunction getContainerWidth(nileGrid: NileGrid): number {\n return Math.max(0, (nileGrid.getBoundingClientRect().width || 0) - 4);\n}\n\n/**\n * @param slotEl The slot element containing head rows\n * @param colCount Number of columns\n * @param containerWidth Width of the parent container\n * @param prevWidths Previously computed column widths\n * @returns Array of desired column widths\n */\nfunction readDesiredFromHead(\n slotEl: any,\n colCount: number,\n containerWidth: number,\n nileGrid: NileGrid,\n lockedWidthColumns: boolean[],\n headerChanged: boolean,\n prevWidths?: number[]\n): (number | null)[] {\n const desired = Array(colCount).fill(null);\n if (headerChanged) {\n const head = getHead(slotEl) as HTMLElement | null;\n if (head) fillDesiredFromHeadRows(head, desired, colCount, containerWidth, lockedWidthColumns);\n }\n const hasPrevWidths = !!prevWidths?.length && prevWidths.some(w => w > 0);\n if (hasPrevWidths && prevWidths?.length === colCount) {\n fillFromPrevWidths(desired, prevWidths, nileGrid);\n }\n return desired;\n}\n\n/**\n * @param head Head element containing grid header rows\n * @param desired Desired widths array to fill\n * @param colCount Column count\n * @param containerWidth Grid container width\n * @param fixedWidthColumns Fixed width columns\n */\nfunction fillDesiredFromHeadRows(\n head: HTMLElement,\n desired: (number | null)[],\n colCount: number,\n containerWidth: number,\n lockedWidthColumns: boolean[]\n) {\n const headRows = [...head.children].filter(\n el => el.tagName.toLowerCase() === 'nile-grid-row'\n ) as HTMLElement[];\n for (const row of headRows) {\n fillFromHeadRow(row, desired, colCount, containerWidth, lockedWidthColumns);\n }\n}\n\n/**\n * @param row A single header row element\n * @param desired Desired widths array\n * @param colCount Total number of columns\n * @param containerWidth Container width\n * @param lockedWidthColumns Locked width columns\n * @returns void\n */\nfunction fillFromHeadRow(\n row: HTMLElement,\n desired: (number | null)[],\n colCount: number,\n containerWidth: number,\n lockedWidthColumns: boolean[]\n) {\n const items = [...row.children].filter(\n el => el.tagName.toLowerCase() === 'nile-grid-head-item'\n ) as HTMLElement[];\n const parsed = items\n .map(h => parseHeadItemWidth(h, containerWidth, lockedWidthColumns))\n .filter(x => x.cw != null);\n parsed.sort((a, b) => a.colspan - b.colspan);\n parsed.forEach(({ cStart, colspan, cw }) => {\n assignWidth(desired, cStart, colspan, cw!, colCount);\n });\n}\n\n/**\n * @param h Header item element\n * @param containerWidth Width of parent container\n * @param lockedWidthColumns Locked width columns\n * @returns Parsed object containing start, colspan, and computed width\n */\nfunction parseHeadItemWidth(h: HTMLElement, containerWidth: number, lockedWidthColumns: boolean[]) {\n const cStart = Number((h as any).dataset?.cStart) || 1;\n const colspan = Math.max(1, Number(h.getAttribute('colspan')) || 1);\n const raw = (h as any).width ?? h.getAttribute('width') ?? null;\n if (h.hasAttribute('lockWidth')) {\n lockedWidthColumns[cStart - 1] = true;\n }\n const cw = parseCustomWidth(raw, containerWidth);\n return { cStart, colspan, cw };\n}\n\n/**\n * @param desired Array of desired widths\n * @param cStart Start column index\n * @param colspan Column span value\n * @param cw Computed width value\n * @param colCount Total column count\n */\nfunction assignWidth(\n desired: (number | null)[],\n cStart: number,\n colspan: number,\n cw: number,\n colCount: number\n) {\n const perCol = Math.round(cw / colspan);\n for (let k = 0; k < colspan; k++) {\n const idx = cStart - 1 + k;\n if (idx >= 0 && idx < colCount && desired[idx] == null) {\n desired[idx] = perCol;\n }\n }\n}\n\n/**\n * @param desired Desired widths array\n * @param prevWidths Previous column widths\n */\nfunction fillFromPrevWidths(desired: (number | null)[], prevWidths: number[], nileGrid: NileGrid) {\n for (let i = 0; i < prevWidths.length; i++) {\n if (desired[i] == null && Number.isFinite(prevWidths[i]!)) {\n desired[i] = Math.max(nileGrid.minColumnWidth, Math.round(prevWidths[i]!));\n }\n }\n}\n\n/** parseCustomWidth\n * @param raw User-specified width (number | string like \"120px\" or \"20%\")\n * @param containerWidth Container width for % resolution\n * @returns Width in pixels or null if invalid\n */\nfunction parseCustomWidth(raw: any, containerWidth: number): number | null {\n if (raw == null) return null;\n if (typeof raw === 'number' && Number.isFinite(raw)) return raw;\n const s = String(raw).trim().toLowerCase();\n if (!s) return null;\n\n if (s.endsWith('px')) {\n const v = parseFloat(s);\n return Number.isFinite(v) ? v : null;\n }\n if (s.endsWith('%')) {\n const v = parseFloat(s);\n return Number.isFinite(v) ? (v / 100) * containerWidth : null;\n }\n const v = parseFloat(s);\n return Number.isFinite(v) ? v : null;\n}\n\n/** seedWidthsFromDesired\n * @param desired Array of desired widths (px) or nulls\n * @param columnWidths Output array to seed (mutated)\n * @param minCol Minimum per-column width\n * @returns Boolean[] flags indicating which columns were seeded\n */\nfunction seedWidthsFromDesired(\n desired: (number | null)[],\n columnWidths: number[],\n minCol: number\n): boolean[] {\n const isSeeded = Array(desired.length).fill(false);\n\n for (let i = 0; i < desired.length; i++) {\n const w = desired[i] ?? null;\n columnWidths[i] =\n w != null && !Number.isNaN(w) ? Math.max(minCol, Number(w)) : 0;\n isSeeded[i] = w != null && !Number.isNaN(w);\n }\n return isSeeded;\n}\n\n/** distributeFlex\n * @param columnWidths Mutable widths array\n * @param isSeeded Boolean[] indicating fixed/seeded columns\n * @param containerWidth Total width to fill\n * @param minCol Minimum width per flexible column\n * @returns void\n */\nfunction distributeFlex(\n columnWidths: number[],\n isSeeded: boolean[],\n containerWidth: number,\n minCol: number\n) {\n const sumSeed = columnWidths.reduce((a, b) => a + b, 0);\n const remaining = containerWidth - sumSeed;\n const flexIdxs = Array.from(\n { length: columnWidths.length },\n (_, i) => i\n ).filter(i => !isSeeded[i]);\n if (flexIdxs.length === 0) return;\n\n const each = remaining / flexIdxs.length;\n for (const i of flexIdxs) columnWidths[i] = Math.max(minCol, each);\n}\n\n\n// Normalization (container fitting): adjust total column widths to match the container width proportionally.\n/**\n * @param columnWidths Array of current column widths\n * @param containerWidth Total grid container width\n * @param minCol Minimum allowed column width\n */\nfunction normalizeToContainer(\n columnWidths: number[],\n containerWidth: number,\n minCol: number\n) {\n let total = sumWidths(columnWidths);\n if (total < containerWidth) {\n expandWidths(columnWidths, containerWidth, total);\n } else if (total > containerWidth) {\n shrinkWidths(columnWidths, containerWidth, total, minCol);\n }\n}\n\n/**\n * @param widths Array of column widths\n * @returns Sum of all column widths\n */\nfunction sumWidths(widths: number[]) {\n return widths.reduce((a, b) => a + b, 0);\n}\n\n\n/**\n * @param columnWidths Current column widths\n * @param containerWidth Container total width\n * @param total Current total width\n */\nfunction expandWidths(\n columnWidths: number[],\n containerWidth: number,\n total: number\n) {\n if (!columnWidths.length) return;\n const add = containerWidth - total;\n const weight = total || 1;\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] += add * (columnWidths[i] / weight);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n * @param total Current total\n * @param minCol Minimum width constraint\n */\nfunction shrinkWidths(\n columnWidths: number[],\n containerWidth: number,\n total: number,\n minCol: number\n) {\n let need = total - containerWidth;\n for (let iter = 0; iter < 8 && need > 0.5; iter++) {\n const { candidates, weightSum } = collectReducible(columnWidths, minCol);\n if (!candidates.length || weightSum <= 0) break;\n const reduced = reduceWidths(\n columnWidths,\n candidates,\n weightSum,\n need,\n minCol\n );\n need -= reduced;\n if (reduced < 0.5) break;\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param minCol Minimum column width\n * @returns Reducible column indexes and weight sum\n */\nfunction collectReducible(columnWidths: number[], minCol: number) {\n const candidates: number[] = [];\n let weightSum = 0;\n for (let i = 0; i < columnWidths.length; i++) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n if (reducible > 0) {\n candidates.push(i);\n weightSum += columnWidths[i];\n }\n }\n return { candidates, weightSum };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param candidates Reducible column indexes\n * @param weightSum Sum of reducible widths\n * @param need Total amount to reduce\n * @param minCol Minimum width\n * @returns Total reduced width\n */\nfunction reduceWidths(\n columnWidths: number[],\n candidates: number[],\n weightSum: number,\n need: number,\n minCol: number\n) {\n let reduced = 0;\n for (const i of candidates) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n const share = columnWidths[i] / weightSum;\n const cut = Math.min(reducible, need * share);\n columnWidths[i] -= cut;\n reduced += cut;\n }\n return reduced;\n}\n\nfunction clampAndRound(columnWidths: number[], minCol: number) {\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] = Math.max(minCol, Math.round(columnWidths[i]));\n }\n}\n\n/**\n * @param columnWidths Current widths array\n * @param minCol Minimum column width\n * @returns Total reducible pixels\n */\nexport function totalReducibleRight(w: number[], start: number, floor: number, fixed?: boolean[]) {\n let sum = 0;\n for (let i = start; i < w.length; i++) {\n if (fixed?.[i]) continue;\n sum += Math.max(0, w[i] - floor);\n }\n return sum;\n}\n\n/**\n * @param columnWidths Current widths\n * @param amount Pixels to remove from rightmost columns\n */\nexport function takeFromRight(\n widths: number[],\n start: number,\n needInit: number,\n floor: number,\n fixed?: boolean[]\n) {\n let need = needInit;\n for (let i = start; i < widths.length && need > 0; i++) {\n if (fixed?.[i]) continue;\n const room = widths[i] - floor;\n if (room <= 0) continue;\n const cut = Math.min(room, need);\n widths[i] -= cut;\n need -= cut;\n }\n return need;\n}\n\n/**\n * @param columnWidths Current widths\n * @param amount Pixels to add to rightmost columns\n */\nexport function giveToRight(widths: number[], start: number, giveInit: number) {\n let give = giveInit;\n if (start < widths.length && give > 0) {\n widths[start] += give;\n give = 0;\n }\n return give;\n}\n\n\nexport function addVariablesValue(nileGrid: NileGrid) {\n const columnWidths = nileGrid.columnWidths;\n const leftStickyColumns = nileGrid.stickyLeftIndexes;\n const rightStickyColumns = nileGrid.stickyRightIndexes;\n const prefixColumns: PrefixColumn[] = [];\n const root = nileGrid as HTMLElement;\n\n // --- LEFT STICKY ---\n let totalLeft = 0;\n for (let i = 0; i < leftStickyColumns.length; i++) {\n const colIndex = leftStickyColumns[i];\n prefixColumns.push({ colNumber: colIndex, left: totalLeft, right: 0 });\n root.style.setProperty(`--sticky-left-${colIndex}`, `${totalLeft}px`);\n totalLeft += columnWidths[colIndex];\n }\n\n // --- RIGHT STICKY ---\n let totalRight = 0;\n for (let i = rightStickyColumns.length - 1; i >= 0; i--) {\n const colIndex = rightStickyColumns[i];\n prefixColumns.push({ colNumber: colIndex, left: 0, right: totalRight });\n root.style.setProperty(`--sticky-right-${colIndex}`, `${totalRight}px`);\n totalRight += columnWidths[colIndex];\n }\n nileGrid.prefixSumColumnsWidth = prefixColumns;\n}\n","import { NileGrid } from './nile-grid';\nimport { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';\nimport { applyColumnsTemplate } from './nile-grid.layout';\n\n/**\n * @param minColumnWidth Minimum allowed column width\n * @param resizeStart Guide line element (start)\n * @param resizeEnd Guide line element (end)\n * @param col Active column index\n * @param scrollHeight Height to apply to guides\n * @param columnWidths Current column widths\n * @returns void\n */\nexport const resizeLinesHandler = (\n minColumnWidth: number,\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = minColumnWidth;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n const sum = (arr: number[], endExclusive: number) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n handleLeft = Math.max(handleLeft, 20);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n/**\n * @param targetWidth New computed width in pixels\n * @param min Minimum allowed width\n * @param max Maximum allowed width\n * @returns Adjusted column width\n */\nexport function computeNewWidth(opts: {\n target: HTMLElement;\n col: number;\n widthPx: number;\n floor: number;\n columnWidths: number[];\n}) {\n const { target, col, widthPx, floor, columnWidths } = opts;\n\n // move this outside - getAttribute\n const hasSpan =\n !!target.getAttribute('colspan') &&\n parseInt(target.getAttribute('colspan')!, 10) > 1;\n const prevW = columnWidths[col] ?? floor;\n const newWraw = hasSpan ? widthPx - (columnWidths[col - 1] ?? 0) : widthPx;\n const newW = Math.max(floor, Math.round(Number.isFinite(newWraw) ? newWraw : prevW));\n return { prevW, newW, delta0: newW - prevW };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param containerWidth Container total width\n */\nexport function resizeNoScroll({ grid, col, prevW, newW, floor }: {\n grid: NileGrid;\n col: number;\n prevW: number;\n newW: number;\n floor: number;\n}) {\n if (grid.lockedWidthColumns?.[col]) return;\n let delta = newW - prevW;\n if (delta > 0) {\n const rightReducible = totalReducibleRight(grid.columnWidths, col + 1, floor, grid.lockedWidthColumns);\n if (rightReducible <= 0) return;\n delta = Math.min(delta, rightReducible);\n grid.columnWidths[col] = prevW + delta;\n takeFromRight(grid.columnWidths, col + 1, delta, floor, grid.lockedWidthColumns);\n } else {\n const newColW = Math.max(floor, newW);\n const actualShrink = prevW - newColW;\n grid.columnWidths[col] = newColW;\n giveToRight(grid.columnWidths, col + 1, actualShrink);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n */\nexport function resizeWithScroll(opts: {\n grid: NileGrid;\n col: number;\n newW: number;\n}) {\n const { grid, col, newW } = opts;\n if (grid.lockedWidthColumns?.[col]) return;\n grid.columnWidths[col] = newW;\n}\n\n/**\n * @param el Target element within grid\n * @returns Scrollbar width compensation value\n */\nexport function getScrollbarComp(el: HTMLElement) {\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n return scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param columnWidths New column width array\n */\nexport function applyAfterResize(grid: any, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n applyColumnsTemplate(grid, grid.columnWidths);\n}\n\nexport function updateResizeGuides(grid: NileGrid, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n}","import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { addVariablesValue, computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!head && !body) return;\n\n let colCount = nileGrid.colCount || 0;\n let headerChanged = false;\n\n if (nileGrid.needsStructureLayout) {\n headerChanged = true;\n \n nileGrid.headRows = head ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[]) : [];\n colCount = 0;\n if (nileGrid.headRows.length) {\n colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n\n if (body) {\n nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row')) as HTMLElement[];\n if (colCount) {\n computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n } else {\n colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n }\n\n if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {\n cacheStickyEls(nileGrid);\n } else {\n nileGrid.stickyLeftHeadEls = [];\n nileGrid.stickyRightHeadEls = [];\n nileGrid.stickyLeftBodyEls = [];\n nileGrid.stickyRightBodyEls = [];\n nileGrid.shadowLeftVisibleSticky = false;\n nileGrid.shadowRightVisibleSticky = false;\n }\n\n nileGrid.colCount = colCount;\n nileGrid.needsStructureLayout = false;\n nileGrid.needsSpanLayout = false;\n nileGrid.needsWidthLayout = true;\n } else if (nileGrid.needsSpanLayout && body) {\n const bodyRows = nileGrid.bodyRows;\n colCount = nileGrid.colCount || 0;\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n nileGrid.needsSpanLayout = false;\n }\n\n if (nileGrid.needsWidthLayout) {\n colCount = nileGrid.colCount || colCount;\n if (!colCount) return;\n\n ensureWidths(colCount);\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);\n addVariablesValue(nileGrid);\n applyColumnsTemplate(nileGrid, nileGrid.columnWidths);\n nileGrid.needsWidthLayout = false;\n }\n};\n\nexport function cacheStickyEls(nileGrid: NileGrid) {\n const { head, body } = getHeadAndBody(nileGrid);\n\n nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"right\"]')) : [];\n nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"right\"]')) : [];\n}\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const tag = opts.itemSelector.toLowerCase();\n const items = Array.from(row.children).filter(\n (child): child is HTMLElement =>\n child.tagName.toLowerCase() === tag\n );\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {\n handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);\n }\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex);\n } else {\n applyRightSticky(el, colIndex);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'left');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.left = `var(--sticky-left-${colIndex})`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'right');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.right = `var(--sticky-right-${colIndex})`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {\n return;\n }\n\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n\n if (\n nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&\n nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies\n ) {\n return;\n }\n\n nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;\n nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;\n \n\n for (const el of nileGrid.stickyLeftHeadEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyLeftBodyEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyRightHeadEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n for (const el of nileGrid.stickyRightBodyEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n}\n\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}","import { NileGrid } from './nile-grid';\nimport { applyAfterResize } from './nile-grid.resize'\n\n/** listenToEventListeners\n * @param nileGrid Grid element to attach listeners on\n * @param onResize Handler for 'nile-column-resize'\n * @param slotEl Slot element to watch for 'slotchange'\n * @param _attachObserverAndLayout Callback to reattach observer + layout\n * @returns void\n */\nexport const listenToEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.addEventListener('nile-column-resize', onResize);\n nileGrid.addEventListener('nile-resize-start', (e) => {\n e.stopPropagation();\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.addEventListener('nile-resize-end', (e: CustomEvent) => {\n e.stopPropagation();\n applyAfterResize(nileGrid, (e as CustomEvent).detail!.col);\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());\n nileGrid.addEventListener('scroll', () => scrollEventHandler(nileGrid));\n};\n\n/** removeEventListeners\n * @param nileGrid Grid element to detach listeners from\n * @param onResize Handler previously attached to 'nile-column-resize'\n * @param slotEl Slot element to remove 'slotchange' from\n * @param _attachObserverAndLayout Callback reference used during attach\n * @returns void\n */\nexport const removeEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.removeEventListener('nile-column-resize', onResize);\n nileGrid.removeEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.removeEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());\n nileGrid.removeEventListener('scroll', () => scrollEventHandler(nileGrid));\n};\n\n/** getHead\n * @param slotEl Slot element containing assigned nodes\n * @returns <nile-grid-head> element or null\n */\nexport const getHead = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-head'\n ) as HTMLElement) || null\n );\n};\n\n/** getBody\n * @param slotEl Slot element containing assigned nodes\n * @returns <nile-grid-body> element or null\n */\nexport const getBody = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-body'\n ) as HTMLElement) || null\n );\n};\n\nexport const scrollEventHandler = (el: NileGrid) => {\n const maxY = Math.max(1, el.scrollHeight - el.clientHeight);\n const maxX = Math.max(1, el.scrollWidth - el.clientWidth);\n\n const percentageY = Math.round((el.scrollTop / maxY) * 100);\n const percentageX = Math.round((el.scrollLeft / maxX) * 100);\n\n el.emit('nile-scroll', {\n bubbles: true,\n composed: true,\n detail: {\n horizontalScroll: percentageX,\n verticalScroll: percentageY,\n left: el.scrollLeft,\n top: el.scrollTop\n }\n });\n};"],"names":["computeColumnWidths","nileGrid","colCount","columnWidths","slotEl","lockedWidthColumns","headerChanged","minCol","minColumnWidth","containerWidth","Math","max","getBoundingClientRect","width","getContainerWidth","desired","prevWidths","Array","fill","head","getHead","headRows","_toConsumableArray","children","filter","el","tagName","toLowerCase","_iterator","_createForOfIteratorHelper","s","_step","n","done","fillFromHeadRow","row","err","e","f","fillDesiredFromHeadRows","length","some","w","i","Number","isFinite","round","fillFromPrevWidths","readDesiredFromHead","isSeeded","_t$_e","isNaN","seedWidthsFromDesired","sumSeed","reduce","a","b","remaining","flexIdxs","from","_","each","_iterator2","_step2","distributeFlex","enableScroll","total","widths","add","weight","expandWidths","need","iter","_r2","collectReducible","candidates","weightSum","reduced","reduceWidths","shrinkWidths","normalizeToContainer","clampAndRound","applyColumnsTemplate","parsed","map","h","_t$dataset","_ref","_t$width","cStart","dataset","colspan","getAttribute","raw","hasAttribute","cw","String","trim","endsWith","v","parseFloat","parseCustomWidth","parseHeadItemWidth","x","sort","forEach","_ref2","perCol","k","idx","assignWidth","push","_iterator3","_step3","reducible","share","cut","min","computeNewWidth","opts","_i$o","_i3","target","col","widthPx","floor","hasSpan","parseInt","prevW","newWraw","newW","delta0","resizeNoScroll","grid","_t$lockedWidthColumns","delta","rightReducible","start","fixed","sum","totalReducibleRight","needInit","room","takeFromRight","newColW","actualShrink","giveInit","give","giveToRight","resizeWithScroll","applyAfterResize","resizeLinesHandler","resizeStart","resizeEnd","scrollHeight","updateResizeGuides","cacheStickyEls","_ref4","shadowRoot","undefined","body","assigned","assignedElements","find","tag","getHeadAndBody","stickyLeftHeadEls","querySelectorAll","stickyRightHeadEls","stickyLeftBodyEls","stickyRightBodyEls","layoutRows","rows","carry","stickyLeftIndexes","stickyRightIndexes","rIdx","hoverable","setAttribute","c","rStart","itemSelector","items","child","_iterator4","_step4","layoutCell","decrementCarry","layoutSingleRow","rowspan","style","position","zIndex","NILE_GRID_HEAD_ITEM","headHeight","height","backgroundColor","cellHeight","handleRowspan","cEnd","rEnd","gridColumn","gridRow","concat","setGridPosition","useStickyAttr","includes","colIndex","onLeft","onRight","left","right","removeAttribute","applyLeftSticky","applyRightSticky","applySticky","handleSticky","syncStickyShadows","_ref5","scrollWidth","clientWidth","showRightOnLeftStickies","scrollLeft","showLeftOnRightStickies","getShadowStates","shadowLeftVisibleSticky","shadowRightVisibleSticky","_iterator5","_step5","classList","toggle","_iterator6","_step6","_iterator7","_step7","_iterator8","_step8","computeBodyLayout","bodyRows","carryBody","handleRowBg","cols","join","setProperty","display","safe","totalGridWidth","baseLeft","endExclusive","slice","handleLeft","minEdge","maxEdge","_export","listenToEventListeners","onResize","_attachObserverAndLayout","addEventListener","stopPropagation","detail","scrollEventHandler","removeEventListeners","removeEventListener","_t$assignedElements","getBody","_t$assignedElements2","maxY","clientHeight","maxX","percentageY","scrollTop","percentageX","emit","bubbles","composed","horizontalScroll","verticalScroll","top","layout","ensureWidths","needsStructureLayout","carryHead","computeHeadLayout","needsSpanLayout","needsWidthLayout","leftStickyColumns","rightStickyColumns","prefixColumns","root","totalLeft","colNumber","totalRight","prefixSumColumnsWidth","addVariablesValue"],"mappings":"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"}
1
+ {"version":3,"file":"nile-grid.width.cjs.js","sources":["../../../src/nile-grid/nile-grid.width.ts","../../../src/nile-grid/nile-grid.resize.ts","../../../src/nile-grid/nile-grid.utils.ts","../../../src/nile-grid/nile-grid.layout.ts"],"sourcesContent":["import { NileGrid } from './nile-grid';\nimport { applyColumnsTemplate } from './nile-grid.layout';\nimport { getHead } from './nile-grid.utils';\nimport { PrefixColumn } from './types/nile-grid.types';\n\n/** computeColumnWidths\n * @param nileGrid Grid instance (reads minColumnWidth, columnWidths)\n * @param colCount Total columns\n * @param columnWidths Mutable widths array to fill/update\n * @param slotEl Slot element (to read head for desired widths)\n * @returns void\n */\nexport function computeColumnWidths(\n nileGrid: NileGrid,\n colCount: number,\n columnWidths: number[],\n slotEl: any,\n lockedWidthColumns: boolean[],\n headerChanged: boolean\n): void {\n const minCol = nileGrid.minColumnWidth;\n const containerWidth = getContainerWidth(nileGrid);\n const desired = readDesiredFromHead(slotEl, colCount, containerWidth, nileGrid, lockedWidthColumns, headerChanged, columnWidths);\n const isSeeded = seedWidthsFromDesired(desired, columnWidths, minCol);\n\n distributeFlex(columnWidths, isSeeded, containerWidth, minCol);\n if(!nileGrid.enableScroll) {\n normalizeToContainer(columnWidths, containerWidth, minCol);\n }\n clampAndRound(columnWidths, minCol);\n applyColumnsTemplate(nileGrid, columnWidths);\n}\n\n/** getContainerWidth\n * @param nileGrid Grid root element\n * @returns Numeric container width in pixels (accounting for padding/offset)\n */\nfunction getContainerWidth(nileGrid: NileGrid): number {\n return Math.max(0, (nileGrid.getBoundingClientRect().width || 0) - 4);\n}\n\n/**\n * @param slotEl The slot element containing head rows\n * @param colCount Number of columns\n * @param containerWidth Width of the parent container\n * @param prevWidths Previously computed column widths\n * @returns Array of desired column widths\n */\nfunction readDesiredFromHead(\n slotEl: any,\n colCount: number,\n containerWidth: number,\n nileGrid: NileGrid,\n lockedWidthColumns: boolean[],\n headerChanged: boolean,\n prevWidths?: number[]\n): (number | null)[] {\n const desired = Array(colCount).fill(null);\n if (headerChanged) {\n const head = getHead(slotEl) as HTMLElement | null;\n if (head) fillDesiredFromHeadRows(head, desired, colCount, containerWidth, lockedWidthColumns);\n }\n const hasPrevWidths = !!prevWidths?.length && prevWidths.some(w => w > 0);\n if (hasPrevWidths && prevWidths?.length === colCount) {\n fillFromPrevWidths(desired, prevWidths, nileGrid);\n }\n return desired;\n}\n\n/**\n * @param head Head element containing grid header rows\n * @param desired Desired widths array to fill\n * @param colCount Column count\n * @param containerWidth Grid container width\n * @param fixedWidthColumns Fixed width columns\n */\nfunction fillDesiredFromHeadRows(\n head: HTMLElement,\n desired: (number | null)[],\n colCount: number,\n containerWidth: number,\n lockedWidthColumns: boolean[]\n) {\n const headRows = [...head.children].filter(\n el => el.tagName.toLowerCase() === 'nile-grid-row'\n ) as HTMLElement[];\n for (const row of headRows) {\n fillFromHeadRow(row, desired, colCount, containerWidth, lockedWidthColumns);\n }\n}\n\n/**\n * @param row A single header row element\n * @param desired Desired widths array\n * @param colCount Total number of columns\n * @param containerWidth Container width\n * @param lockedWidthColumns Locked width columns\n * @returns void\n */\nfunction fillFromHeadRow(\n row: HTMLElement,\n desired: (number | null)[],\n colCount: number,\n containerWidth: number,\n lockedWidthColumns: boolean[]\n) {\n const items = [...row.children].filter(\n el => el.tagName.toLowerCase() === 'nile-grid-head-item'\n ) as HTMLElement[];\n const parsed = items\n .map(h => parseHeadItemWidth(h, containerWidth, lockedWidthColumns))\n .filter(x => x.cw != null);\n parsed.sort((a, b) => a.colspan - b.colspan);\n parsed.forEach(({ cStart, colspan, cw }) => {\n assignWidth(desired, cStart, colspan, cw!, colCount);\n });\n}\n\n/**\n * @param h Header item element\n * @param containerWidth Width of parent container\n * @param lockedWidthColumns Locked width columns\n * @returns Parsed object containing start, colspan, and computed width\n */\nfunction parseHeadItemWidth(h: HTMLElement, containerWidth: number, lockedWidthColumns: boolean[]) {\n const cStart = Number((h as any).dataset?.cStart) || 1;\n const colspan = Math.max(1, Number(h.getAttribute('colspan')) || 1);\n const raw = (h as any).width ?? h.getAttribute('width') ?? null;\n if (h.hasAttribute('lockWidth')) {\n lockedWidthColumns[cStart - 1] = true;\n }\n const cw = parseCustomWidth(raw, containerWidth);\n return { cStart, colspan, cw };\n}\n\n/**\n * @param desired Array of desired widths\n * @param cStart Start column index\n * @param colspan Column span value\n * @param cw Computed width value\n * @param colCount Total column count\n */\nfunction assignWidth(\n desired: (number | null)[],\n cStart: number,\n colspan: number,\n cw: number,\n colCount: number\n) {\n const perCol = Math.round(cw / colspan);\n for (let k = 0; k < colspan; k++) {\n const idx = cStart - 1 + k;\n if (idx >= 0 && idx < colCount && desired[idx] == null) {\n desired[idx] = perCol;\n }\n }\n}\n\n/**\n * @param desired Desired widths array\n * @param prevWidths Previous column widths\n */\nfunction fillFromPrevWidths(desired: (number | null)[], prevWidths: number[], nileGrid: NileGrid) {\n for (let i = 0; i < prevWidths.length; i++) {\n if (desired[i] == null && Number.isFinite(prevWidths[i]!)) {\n desired[i] = Math.max(nileGrid.minColumnWidth, Math.round(prevWidths[i]!));\n }\n }\n}\n\n/** parseCustomWidth\n * @param raw User-specified width (number | string like \"120px\" or \"20%\")\n * @param containerWidth Container width for % resolution\n * @returns Width in pixels or null if invalid\n */\nfunction parseCustomWidth(raw: any, containerWidth: number): number | null {\n if (raw == null) return null;\n if (typeof raw === 'number' && Number.isFinite(raw)) return raw;\n const s = String(raw).trim().toLowerCase();\n if (!s) return null;\n\n if (s.endsWith('px')) {\n const v = parseFloat(s);\n return Number.isFinite(v) ? v : null;\n }\n if (s.endsWith('%')) {\n const v = parseFloat(s);\n return Number.isFinite(v) ? (v / 100) * containerWidth : null;\n }\n const v = parseFloat(s);\n return Number.isFinite(v) ? v : null;\n}\n\n/** seedWidthsFromDesired\n * @param desired Array of desired widths (px) or nulls\n * @param columnWidths Output array to seed (mutated)\n * @param minCol Minimum per-column width\n * @returns Boolean[] flags indicating which columns were seeded\n */\nfunction seedWidthsFromDesired(\n desired: (number | null)[],\n columnWidths: number[],\n minCol: number\n): boolean[] {\n const isSeeded = Array(desired.length).fill(false);\n\n for (let i = 0; i < desired.length; i++) {\n const w = desired[i] ?? null;\n columnWidths[i] =\n w != null && !Number.isNaN(w) ? Math.max(minCol, Number(w)) : 0;\n isSeeded[i] = w != null && !Number.isNaN(w);\n }\n return isSeeded;\n}\n\n/** distributeFlex\n * @param columnWidths Mutable widths array\n * @param isSeeded Boolean[] indicating fixed/seeded columns\n * @param containerWidth Total width to fill\n * @param minCol Minimum width per flexible column\n * @returns void\n */\nfunction distributeFlex(\n columnWidths: number[],\n isSeeded: boolean[],\n containerWidth: number,\n minCol: number\n) {\n const sumSeed = columnWidths.reduce((a, b) => a + b, 0);\n const remaining = containerWidth - sumSeed;\n const flexIdxs = Array.from(\n { length: columnWidths.length },\n (_, i) => i\n ).filter(i => !isSeeded[i]);\n if (flexIdxs.length === 0) return;\n\n const each = remaining / flexIdxs.length;\n for (const i of flexIdxs) columnWidths[i] = Math.max(minCol, each);\n}\n\n\n// Normalization (container fitting): adjust total column widths to match the container width proportionally.\n/**\n * @param columnWidths Array of current column widths\n * @param containerWidth Total grid container width\n * @param minCol Minimum allowed column width\n */\nfunction normalizeToContainer(\n columnWidths: number[],\n containerWidth: number,\n minCol: number\n) {\n let total = sumWidths(columnWidths);\n if (total < containerWidth) {\n expandWidths(columnWidths, containerWidth, total);\n } else if (total > containerWidth) {\n shrinkWidths(columnWidths, containerWidth, total, minCol);\n }\n}\n\n/**\n * @param widths Array of column widths\n * @returns Sum of all column widths\n */\nfunction sumWidths(widths: number[]) {\n return widths.reduce((a, b) => a + b, 0);\n}\n\n\n/**\n * @param columnWidths Current column widths\n * @param containerWidth Container total width\n * @param total Current total width\n */\nfunction expandWidths(\n columnWidths: number[],\n containerWidth: number,\n total: number\n) {\n if (!columnWidths.length) return;\n const add = containerWidth - total;\n const weight = total || 1;\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] += add * (columnWidths[i] / weight);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n * @param total Current total\n * @param minCol Minimum width constraint\n */\nfunction shrinkWidths(\n columnWidths: number[],\n containerWidth: number,\n total: number,\n minCol: number\n) {\n let need = total - containerWidth;\n for (let iter = 0; iter < 8 && need > 0.5; iter++) {\n const { candidates, weightSum } = collectReducible(columnWidths, minCol);\n if (!candidates.length || weightSum <= 0) break;\n const reduced = reduceWidths(\n columnWidths,\n candidates,\n weightSum,\n need,\n minCol\n );\n need -= reduced;\n if (reduced < 0.5) break;\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param minCol Minimum column width\n * @returns Reducible column indexes and weight sum\n */\nfunction collectReducible(columnWidths: number[], minCol: number) {\n const candidates: number[] = [];\n let weightSum = 0;\n for (let i = 0; i < columnWidths.length; i++) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n if (reducible > 0) {\n candidates.push(i);\n weightSum += columnWidths[i];\n }\n }\n return { candidates, weightSum };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param candidates Reducible column indexes\n * @param weightSum Sum of reducible widths\n * @param need Total amount to reduce\n * @param minCol Minimum width\n * @returns Total reduced width\n */\nfunction reduceWidths(\n columnWidths: number[],\n candidates: number[],\n weightSum: number,\n need: number,\n minCol: number\n) {\n let reduced = 0;\n for (const i of candidates) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n const share = columnWidths[i] / weightSum;\n const cut = Math.min(reducible, need * share);\n columnWidths[i] -= cut;\n reduced += cut;\n }\n return reduced;\n}\n\nfunction clampAndRound(columnWidths: number[], minCol: number) {\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] = Math.max(minCol, Math.round(columnWidths[i]));\n }\n}\n\n/**\n * @param columnWidths Current widths array\n * @param minCol Minimum column width\n * @returns Total reducible pixels\n */\nexport function totalReducibleRight(w: number[], start: number, floor: number, fixed?: boolean[]) {\n let sum = 0;\n for (let i = start; i < w.length; i++) {\n if (fixed?.[i]) continue;\n sum += Math.max(0, w[i] - floor);\n }\n return sum;\n}\n\n/**\n * @param columnWidths Current widths\n * @param amount Pixels to remove from rightmost columns\n */\nexport function takeFromRight(\n widths: number[],\n start: number,\n needInit: number,\n floor: number,\n fixed?: boolean[]\n) {\n let need = needInit;\n for (let i = start; i < widths.length && need > 0; i++) {\n if (fixed?.[i]) continue;\n const room = widths[i] - floor;\n if (room <= 0) continue;\n const cut = Math.min(room, need);\n widths[i] -= cut;\n need -= cut;\n }\n return need;\n}\n\n/**\n * @param columnWidths Current widths\n * @param amount Pixels to add to rightmost columns\n */\nexport function giveToRight(widths: number[], start: number, giveInit: number) {\n let give = giveInit;\n if (start < widths.length && give > 0) {\n widths[start] += give;\n give = 0;\n }\n return give;\n}\n\n\nexport function addVariablesValue(nileGrid: NileGrid) {\n const columnWidths = nileGrid.columnWidths;\n const leftStickyColumns = nileGrid.stickyLeftIndexes;\n const rightStickyColumns = nileGrid.stickyRightIndexes;\n const prefixColumns: PrefixColumn[] = [];\n const root = nileGrid as HTMLElement;\n\n // --- LEFT STICKY ---\n let totalLeft = 0;\n for (let i = 0; i < leftStickyColumns.length; i++) {\n const colIndex = leftStickyColumns[i];\n prefixColumns.push({ colNumber: colIndex, left: totalLeft, right: 0 });\n root.style.setProperty(`--sticky-left-${colIndex}`, `${totalLeft}px`);\n totalLeft += columnWidths[colIndex];\n }\n\n // --- RIGHT STICKY ---\n let totalRight = 0;\n for (let i = rightStickyColumns.length - 1; i >= 0; i--) {\n const colIndex = rightStickyColumns[i];\n prefixColumns.push({ colNumber: colIndex, left: 0, right: totalRight });\n root.style.setProperty(`--sticky-right-${colIndex}`, `${totalRight}px`);\n totalRight += columnWidths[colIndex];\n }\n nileGrid.prefixSumColumnsWidth = prefixColumns;\n}\n","import { NileGrid } from './nile-grid';\nimport { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';\nimport { applyColumnsTemplate } from './nile-grid.layout';\n\n/**\n * @param minColumnWidth Minimum allowed column width\n * @param resizeStart Guide line element (start)\n * @param resizeEnd Guide line element (end)\n * @param col Active column index\n * @param scrollHeight Height to apply to guides\n * @param columnWidths Current column widths\n * @returns void\n */\nexport const resizeLinesHandler = (\n minColumnWidth: number,\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = minColumnWidth;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n const sum = (arr: number[], endExclusive: number) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n handleLeft = Math.max(handleLeft, 20);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n/**\n * @param targetWidth New computed width in pixels\n * @param min Minimum allowed width\n * @param max Maximum allowed width\n * @returns Adjusted column width\n */\nexport function computeNewWidth(opts: {\n target: HTMLElement;\n col: number;\n widthPx: number;\n floor: number;\n columnWidths: number[];\n}) {\n const { target, col, widthPx, floor, columnWidths } = opts;\n\n // move this outside - getAttribute\n const hasSpan =\n !!target.getAttribute('colspan') &&\n parseInt(target.getAttribute('colspan')!, 10) > 1;\n const prevW = columnWidths[col] ?? floor;\n const newWraw = hasSpan ? widthPx - (columnWidths[col - 1] ?? 0) : widthPx;\n const newW = Math.max(floor, Math.round(Number.isFinite(newWraw) ? newWraw : prevW));\n return { prevW, newW, delta0: newW - prevW };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param containerWidth Container total width\n */\nexport function resizeNoScroll({ grid, col, prevW, newW, floor }: {\n grid: NileGrid;\n col: number;\n prevW: number;\n newW: number;\n floor: number;\n}) {\n if (grid.lockedWidthColumns?.[col]) return;\n let delta = newW - prevW;\n if (delta > 0) {\n const rightReducible = totalReducibleRight(grid.columnWidths, col + 1, floor, grid.lockedWidthColumns);\n if (rightReducible <= 0) return;\n delta = Math.min(delta, rightReducible);\n grid.columnWidths[col] = prevW + delta;\n takeFromRight(grid.columnWidths, col + 1, delta, floor, grid.lockedWidthColumns);\n } else {\n const newColW = Math.max(floor, newW);\n const actualShrink = prevW - newColW;\n grid.columnWidths[col] = newColW;\n giveToRight(grid.columnWidths, col + 1, actualShrink);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n */\nexport function resizeWithScroll(opts: {\n grid: NileGrid;\n col: number;\n newW: number;\n}) {\n const { grid, col, newW } = opts;\n if (grid.lockedWidthColumns?.[col]) return;\n grid.columnWidths[col] = newW;\n}\n\n/**\n * @param el Target element within grid\n * @returns Scrollbar width compensation value\n */\nexport function getScrollbarComp(el: HTMLElement) {\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n return scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param columnWidths New column width array\n */\nexport function applyAfterResize(grid: any, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n applyColumnsTemplate(grid, grid.columnWidths);\n}\n\nexport function updateResizeGuides(grid: NileGrid, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n}","import { NileGrid } from './nile-grid';\nimport { applyAfterResize } from './nile-grid.resize'\n\n/** listenToEventListeners\n * @param nileGrid Grid element to attach listeners on\n * @param onResize Handler for 'nile-column-resize'\n * @param slotEl Slot element to watch for 'slotchange'\n * @param _attachObserverAndLayout Callback to reattach observer + layout\n * @returns void\n */\nexport const listenToEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.addEventListener('nile-column-resize', onResize);\n nileGrid.addEventListener('nile-resize-start', (e) => {\n e.stopPropagation();\n nileGrid.resizeBaseColumnWidths = [...nileGrid.columnWidths];\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.addEventListener('nile-resize-end', (e: CustomEvent) => {\n e.stopPropagation();\n applyAfterResize(nileGrid, (e as CustomEvent).detail!.col);\n nileGrid.resizeBaseColumnWidths = [];\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());\n nileGrid.addEventListener('scroll', () => scrollEventHandler(nileGrid));\n};\n\n/** removeEventListeners\n * @param nileGrid Grid element to detach listeners from\n * @param onResize Handler previously attached to 'nile-column-resize'\n * @param slotEl Slot element to remove 'slotchange' from\n * @param _attachObserverAndLayout Callback reference used during attach\n * @returns void\n */\nexport const removeEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.removeEventListener('nile-column-resize', onResize);\n nileGrid.removeEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.removeEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());\n nileGrid.removeEventListener('scroll', () => scrollEventHandler(nileGrid));\n};\n\n/** getHead\n * @param slotEl Slot element containing assigned nodes\n * @returns <nile-grid-head> element or null\n */\nexport const getHead = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-head'\n ) as HTMLElement) || null\n );\n};\n\n/** getBody\n * @param slotEl Slot element containing assigned nodes\n * @returns <nile-grid-body> element or null\n */\nexport const getBody = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-body'\n ) as HTMLElement) || null\n );\n};\n\nexport const scrollEventHandler = (el: NileGrid) => {\n const maxY = Math.max(1, el.scrollHeight - el.clientHeight);\n const maxX = Math.max(1, el.scrollWidth - el.clientWidth);\n\n const percentageY = Math.round((el.scrollTop / maxY) * 100);\n const percentageX = Math.round((el.scrollLeft / maxX) * 100);\n\n el.emit('nile-scroll', {\n bubbles: true,\n composed: true,\n detail: {\n horizontalScroll: percentageX,\n verticalScroll: percentageY,\n left: el.scrollLeft,\n top: el.scrollTop\n }\n });\n};\n\n/** copyArrayValuesInPlace\n * @param target Target array\n * @param source Source array\n * @returns void\n */\nexport function copyArrayValuesInPlace(\n target: number[],\n source: number[]\n) {\n const count = Math.min(target.length, source.length);\n for (let i = 0; i < count; i++) {\n target[i] = source[i];\n }\n}","import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { addVariablesValue, computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!head && !body) return;\n\n let colCount = nileGrid.colCount || 0;\n let headerChanged = false;\n\n if (nileGrid.needsStructureLayout) {\n headerChanged = true;\n \n nileGrid.headRows = head ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[]) : [];\n colCount = 0;\n if (nileGrid.headRows.length) {\n colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n\n if (body) {\n nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row')) as HTMLElement[];\n if (colCount) {\n computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n } else {\n colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n }\n\n if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {\n cacheStickyEls(nileGrid);\n } else {\n nileGrid.stickyLeftHeadEls = [];\n nileGrid.stickyRightHeadEls = [];\n nileGrid.stickyLeftBodyEls = [];\n nileGrid.stickyRightBodyEls = [];\n nileGrid.shadowLeftVisibleSticky = false;\n nileGrid.shadowRightVisibleSticky = false;\n }\n\n nileGrid.colCount = colCount;\n nileGrid.needsStructureLayout = false;\n nileGrid.needsSpanLayout = false;\n nileGrid.needsWidthLayout = true;\n } else if (nileGrid.needsSpanLayout && body) {\n const bodyRows = nileGrid.bodyRows;\n colCount = nileGrid.colCount || 0;\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n nileGrid.needsSpanLayout = false;\n }\n\n if (nileGrid.needsWidthLayout) {\n colCount = nileGrid.colCount || colCount;\n if (!colCount) return;\n\n ensureWidths(colCount);\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);\n addVariablesValue(nileGrid);\n applyColumnsTemplate(nileGrid, nileGrid.columnWidths);\n nileGrid.needsWidthLayout = false;\n }\n};\n\nexport function cacheStickyEls(nileGrid: NileGrid) {\n const { head, body } = getHeadAndBody(nileGrid);\n\n nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"right\"]')) : [];\n nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"right\"]')) : [];\n}\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const tag = opts.itemSelector.toLowerCase();\n const items = Array.from(row.children).filter(\n (child): child is HTMLElement =>\n child.tagName.toLowerCase() === tag\n );\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {\n handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);\n }\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex);\n } else {\n applyRightSticky(el, colIndex);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'left');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.left = `var(--sticky-left-${colIndex})`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'right');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.right = `var(--sticky-right-${colIndex})`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {\n return;\n }\n\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n\n if (\n nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&\n nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies\n ) {\n return;\n }\n\n nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;\n nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;\n \n\n for (const el of nileGrid.stickyLeftHeadEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyLeftBodyEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyRightHeadEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n for (const el of nileGrid.stickyRightBodyEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n}\n\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}"],"names":["computeColumnWidths","nileGrid","colCount","columnWidths","slotEl","lockedWidthColumns","headerChanged","minCol","minColumnWidth","containerWidth","Math","max","getBoundingClientRect","width","getContainerWidth","desired","prevWidths","Array","fill","head","getHead","headRows","_toConsumableArray","children","filter","el","tagName","toLowerCase","_iterator","_createForOfIteratorHelper","fillFromHeadRow","s","_step","n","done","row","err","e","f","fillDesiredFromHeadRows","length","some","w","i","Number","isFinite","round","fillFromPrevWidths","readDesiredFromHead","isSeeded","_t$_e","isNaN","seedWidthsFromDesired","sumSeed","reduce","a","b","remaining","flexIdxs","from","_","each","_iterator2","_step2","distributeFlex","enableScroll","total","widths","add","weight","expandWidths","need","iter","_r2","collectReducible","candidates","weightSum","reduced","reduceWidths","shrinkWidths","normalizeToContainer","clampAndRound","applyColumnsTemplate","parsed","map","h","_t$dataset","_ref","_t$width","cStart","dataset","colspan","getAttribute","raw","hasAttribute","cw","String","trim","endsWith","v","parseFloat","parseCustomWidth","c","parseHeadItemWidth","x","sort","forEach","_ref2","perCol","k","idx","assignWidth","push","r","_iterator3","_step3","reducible","share","cut","min","computeNewWidth","opts","target","col","hasSpan","widthPx","floor","parseInt","prevW","newWraw","newW","delta0","resizeNoScroll","grid","_t$lockedWidthColumns","_ref3","delta","rightReducible","start","fixed","sum","totalReducibleRight","needInit","room","takeFromRight","newColW","actualShrink","giveInit","give","giveToRight","resizeWithScroll","applyAfterResize","resizeLinesHandler","resizeStart","resizeEnd","scrollHeight","updateResizeGuides","copyArrayValuesInPlace","source","count","cacheStickyEls","_ref4","shadowRoot","undefined","body","assigned","assignedElements","find","tag","getHeadAndBody","stickyLeftHeadEls","querySelectorAll","stickyRightHeadEls","stickyLeftBodyEls","stickyRightBodyEls","layoutRows","rows","carry","stickyLeftIndexes","stickyRightIndexes","rIdx","hoverable","setAttribute","rStart","itemSelector","items","child","_iterator4","_step4","layoutCell","decrementCarry","layoutSingleRow","rowspan","style","position","zIndex","NILE_GRID_HEAD_ITEM","headHeight","height","backgroundColor","cellHeight","handleRowspan","cEnd","rEnd","gridColumn","gridRow","setGridPosition","useStickyAttr","includes","colIndex","onLeft","onRight","left","right","removeAttribute","prepareStickyElement","concat","applyLeftSticky","applyRightSticky","applySticky","handleSticky","syncStickyShadows","_ref5","scrollWidth","clientWidth","showRightOnLeftStickies","scrollLeft","showLeftOnRightStickies","getShadowStates","shadowLeftVisibleSticky","shadowRightVisibleSticky","_iterator5","_step5","classList","toggle","_iterator6","_step6","_iterator7","_step7","_iterator8","_step8","computeBodyLayout","bodyRows","carryBody","handleRowBg","cols","join","setProperty","_export","display","safe","totalGridWidth","baseLeft","endExclusive","slice","handleLeft","minEdge","maxEdge","listenToEventListeners","onResize","_attachObserverAndLayout","addEventListener","stopPropagation","resizeBaseColumnWidths","detail","scrollEventHandler","removeEventListeners","removeEventListener","getBody","_t$assignedElements2","maxY","clientHeight","maxX","percentageY","scrollTop","percentageX","emit","bubbles","composed","horizontalScroll","verticalScroll","top","layout","m","ensureWidths","needsStructureLayout","carryHead","computeHeadLayout","needsSpanLayout","needsWidthLayout","leftStickyColumns","rightStickyColumns","prefixColumns","root","totalLeft","colNumber","totalRight","prefixSumColumnsWidth","addVariablesValue"],"mappings":"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"}
@@ -1 +1 @@
1
- import{N as t}from"./types/nile-grid.enums.esm.js";function n(t,n,i,c,l,a){const s=t.minColumnWidth,u=function(t){return Math.max(0,(t.getBoundingClientRect().width||0)-4)}(t),f=function(t,n,r,e,i,c,l){const a=Array(n).fill(null);if(c){const e=d(t);e&&function(t,n,r,e,i){const c=[...t.children].filter((t=>"nile-grid-row"===t.tagName.toLowerCase()));for(const t of c)o(t,n,r,e,i)}(e,a,n,r,i)}l?.length&&l.some((t=>t>0))&&l?.length===n&&function(t,n,o){for(let r=0;r<n.length;r++)null==t[r]&&Number.isFinite(n[r])&&(t[r]=Math.max(o.minColumnWidth,Math.round(n[r])))}(a,l,e);return a}(c,n,u,t,l,a,i),h=function(t,n,o){const r=Array(t.length).fill(!1);for(let e=0;e<t.length;e++){const i=t[e]??null;n[e]=null==i||Number.isNaN(i)?0:Math.max(o,Number(i)),r[e]=null!=i&&!Number.isNaN(i)}return r}(f,i,s);!function(t,n,o,r){const e=t.reduce(((t,n)=>t+n),0),i=o-e,c=Array.from({length:t.length},((t,n)=>n)).filter((t=>!n[t]));if(0===c.length)return;const l=i/c.length;for(const n of c)t[n]=Math.max(r,l)}(i,h,u,s),t.enableScroll||function(t,n,o){let i=(c=t,c.reduce(((t,n)=>t+n),0));var c;i<n?function(t,n,o){if(!t.length)return;const r=n-o,e=o||1;for(let n=0;n<t.length;n++)t[n]+=r*(t[n]/e)}(t,n,i):i>n&&function(t,n,o,i){let c=o-n;for(let n=0;n<8&&c>.5;n++){const{candidates:n,weightSum:o}=r(t,i);if(!n.length||o<=0)break;const l=e(t,n,o,c,i);if(c-=l,l<.5)break}}(t,n,i,o)}(i,u,s),function(t,n){for(let o=0;o<t.length;o++)t[o]=Math.max(n,Math.round(t[o]))}(i,s),v(t,i)}function o(t,n,o,r,e){const i=[...t.children].filter((t=>"nile-grid-head-item"===t.tagName.toLowerCase())).map((t=>function(t,n,o){const r=Number(t.dataset?.cStart)||1,e=Math.max(1,Number(t.getAttribute("colspan"))||1),i=t.width??t.getAttribute("width")??null;t.hasAttribute("lockWidth")&&(o[r-1]=!0);const c=function(t,n){if(null==t)return null;if("number"==typeof t&&Number.isFinite(t))return t;const o=String(t).trim().toLowerCase();if(!o)return null;if(o.endsWith("px")){const t=parseFloat(o);return Number.isFinite(t)?t:null}if(o.endsWith("%")){const t=parseFloat(o);return Number.isFinite(t)?t/100*n:null}const r=parseFloat(o);return Number.isFinite(r)?r:null}(i,n);return{cStart:r,colspan:e,cw:c}}(t,r,e))).filter((t=>null!=t.cw));i.sort(((t,n)=>t.colspan-n.colspan)),i.forEach((({cStart:t,colspan:r,cw:e})=>{!function(t,n,o,r,e){const i=Math.round(r/o);for(let r=0;r<o;r++){const o=n-1+r;o>=0&&o<e&&null==t[o]&&(t[o]=i)}}(n,t,r,e,o)}))}function r(t,n){const o=[];let r=0;for(let e=0;e<t.length;e++){Math.max(0,t[e]-n)>0&&(o.push(e),r+=t[e])}return{candidates:o,weightSum:r}}function e(t,n,o,r,e){let i=0;for(const c of n){const n=Math.max(0,t[c]-e),l=t[c]/o,a=Math.min(n,r*l);t[c]-=a,i+=a}return i}const i=(t,n,o,r,e,i)=>{n.style.display="block",o.style.display="block",n.style.height=e+"px",o.style.height=e+"px";const c=t,l=t=>Math.max(0,Math.round(t||0)),a=l(i.reduce(((t,n)=>t+(n||0)),0)),s=(u=r,l(i.slice(0,Math.max(0,u)).reduce(((t,n)=>t+(n||0)),0)));var u;let f=s+l(Math.max(c,i[r]??c));const h=s+c,d=a;f=Math.min(Math.max(f,h),d),f=Math.max(f,20),n.style.left=f-6+"px",o.style.left=f-2+"px"};function c(t){const{target:n,col:o,widthPx:r,floor:e,columnWidths:i}=t,c=!!n.getAttribute("colspan")&&parseInt(n.getAttribute("colspan"),10)>1,l=i[o]??e,a=c?r-(i[o-1]??0):r,s=Math.max(e,Math.round(Number.isFinite(a)?a:l));return{prevW:l,newW:s,delta0:s-l}}function l({grid:t,col:n,prevW:o,newW:r,floor:e}){if(t.lockedWidthColumns?.[n])return;let i=r-o;if(i>0){const r=function(t,n,o,r){let e=0;for(let i=n;i<t.length;i++)r?.[i]||(e+=Math.max(0,t[i]-o));return e}(t.columnWidths,n+1,e,t.lockedWidthColumns);if(r<=0)return;i=Math.min(i,r),t.columnWidths[n]=o+i,function(t,n,o,r,e){let i=o;for(let o=n;o<t.length&&i>0;o++){if(e?.[o])continue;const n=t[o]-r;if(n<=0)continue;const c=Math.min(n,i);t[o]-=c,i-=c}}(t.columnWidths,n+1,i,e,t.lockedWidthColumns)}else{const i=Math.max(e,r),c=o-i;t.columnWidths[n]=i,function(t,n,o){let r=o;n<t.length&&r>0&&(t[n]+=r,r=0)}(t.columnWidths,n+1,c)}}function a(t){const{grid:n,col:o,newW:r}=t;n.lockedWidthColumns?.[o]||(n.columnWidths[o]=r)}function s(t,n){i(t.minColumnWidth,t.resizeStart,t.resizeEnd,n,t.scrollHeight,t.columnWidths),v(t,t.columnWidths)}function u(t,n){i(t.minColumnWidth,t.resizeStart,t.resizeEnd,n,t.scrollHeight,t.columnWidths)}const f=(t,n,o,r)=>{t.addEventListener("nile-column-resize",n),t.addEventListener("nile-resize-start",(n=>{n.stopPropagation(),t.resizeStart.style.display="block"})),t.addEventListener("nile-resize-end",(n=>{n.stopPropagation(),s(t,n.detail.col),t.resizeStart.style.display="none",t.resizeEnd.style.display="none"})),o.addEventListener("slotchange",(()=>r())),t.addEventListener("scroll",(()=>b(t)))},h=(t,n,o,r)=>{t.removeEventListener("nile-column-resize",n),t.removeEventListener("nile-resize-start",(()=>{t.resizeStart.style.display="block"})),t.removeEventListener("nile-resize-end",(()=>{t.resizeStart.style.display="none",t.resizeEnd.style.display="none"})),o.removeEventListener("slotchange",(()=>r())),t.removeEventListener("scroll",(()=>b(t)))},d=t=>(t?.assignedElements()??[]).find((t=>"nile-grid-head"===t.tagName.toLowerCase()))||null,g=t=>(t?.assignedElements()??[]).find((t=>"nile-grid-body"===t.tagName.toLowerCase()))||null,b=t=>{const n=Math.max(1,t.scrollHeight-t.clientHeight),o=Math.max(1,t.scrollWidth-t.clientWidth),r=Math.round(t.scrollTop/n*100),e=Math.round(t.scrollLeft/o*100);t.emit("nile-scroll",{bubbles:!0,composed:!0,detail:{horizontalScroll:e,verticalScroll:r,left:t.scrollLeft,top:t.scrollTop}})},y=(t,o,r,e,i)=>{const c=d(o),l=g(o);if(!c&&!l)return;let a=t.colCount||0,s=!1;if(t.needsStructureLayout)s=!0,t.headRows=c?Array.from(c.querySelectorAll("nile-grid-row")):[],a=0,t.headRows.length&&(a=function(t,n,o,r,e,i){return M(t,n,o,r,e,i,{itemSelector:"nile-grid-head-item",useStickyAttr:!0,handleRowBg:!1})}(t,t.headRows,[],a,e,i)),l&&(t.bodyRows=Array.from(l.querySelectorAll("nile-grid-row")),a?w(t,t.bodyRows,[],a,e,i):a=w(t,t.bodyRows,[],a,e,i)),t.stickyLeftIndexes.length||t.stickyRightIndexes.length?m(t):(t.stickyLeftHeadEls=[],t.stickyRightHeadEls=[],t.stickyLeftBodyEls=[],t.stickyRightBodyEls=[],t.shadowLeftVisibleSticky=!1,t.shadowRightVisibleSticky=!1),t.colCount=a,t.needsStructureLayout=!1,t.needsSpanLayout=!1,t.needsWidthLayout=!0;else if(t.needsSpanLayout&&l){const n=t.bodyRows;a=t.colCount||0,a&&w(t,n,[],a,e,i),t.needsSpanLayout=!1}if(t.needsWidthLayout){if(a=t.colCount||a,!a)return;r(a),n(t,a,t.columnWidths,o,t.lockedWidthColumns,s),function(t){const n=t.columnWidths,o=t.stickyLeftIndexes,r=t.stickyRightIndexes,e=[],i=t;let c=0;for(let t=0;t<o.length;t++){const r=o[t];e.push({colNumber:r,left:c,right:0}),i.style.setProperty(`--sticky-left-${r}`,`${c}px`),c+=n[r]}let l=0;for(let t=r.length-1;t>=0;t--){const o=r[t];e.push({colNumber:o,left:0,right:l}),i.style.setProperty(`--sticky-right-${o}`,`${l}px`),l+=n[o]}t.prefixSumColumnsWidth=e}(t),v(t,t.columnWidths),t.needsWidthLayout=!1}};function m(t){const{head:n,body:o}=function(t){if(!t.shadowRoot)return{head:void 0,body:void 0};const n=t.slotEl.assignedElements(),o=t=>n.find((n=>n.tagName.toLowerCase()===t));return{head:o("nile-grid-head"),body:o("nile-grid-body")}}(t);t.stickyLeftHeadEls=n?Array.from(n.querySelectorAll('nile-grid-head-item[data-sticky="left"]')):[],t.stickyRightHeadEls=n?Array.from(n.querySelectorAll('nile-grid-head-item[data-sticky="right"]')):[],t.stickyLeftBodyEls=o?Array.from(o.querySelectorAll('nile-grid-cell-item[data-sticky="left"]')):[],t.stickyRightBodyEls=o?Array.from(o.querySelectorAll('nile-grid-cell-item[data-sticky="right"]')):[]}function M(t,n,o,r,e,i,c){return n.forEach(((n,l)=>{t.hoverable&&n.setAttribute("hover","true"),r=function(t,n,o,r,e,i,c,l){let a=1;const s=o+1,u=l.itemSelector.toLowerCase(),f=Array.from(n.children).filter((t=>t.tagName.toLowerCase()===u));for(const n of f){for(;(r[a-1]||0)>0;)a++;({c:a,colCount:e}=p(t,n,a,s,r,e,i,c,l))}return function(t){for(let n=0;n<t.length;n++)t[n]>0&&t[n]--}(r),e}(t,n,l,o,r,e,i,c)})),r}function p(n,o,r,e,i,c,l,a,s){const u=Math.max(1,+o.getAttribute("colspan")||1),f=Math.max(1,+o.getAttribute("rowspan")||1);!function(n,o,r){if(r<=1)return;o.style.position="absolute",o.style.zIndex="1",o.tagName===t?(n.headHeight||(n.headHeight=o.getBoundingClientRect().height),o.style.height=n.headHeight*r+(r-1)+"px",o.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))",o.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))"):(n.cellHeight||(n.cellHeight=o.getBoundingClientRect().height),o.style.height=n.cellHeight*r+(r-1)+"px",o.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))",o.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))")}(n,o,f);const h=r,d=r+u;!function(t,n,o,r,e){const i=r+e;t.style.gridColumn=`${n} / ${o}`,t.style.gridRow=`${r} / ${i}`,t.dataset.cStart=String(n)}(o,h,d,e,f),(s.useStickyAttr||l.length||a.length)&&function(n,o,r,e,i){r.useStickyAttr&&"left"===n.getAttribute("sticky")&&!e.includes(o-1)&&e.push(o-1);r.useStickyAttr&&"right"===n.getAttribute("sticky")&&!i.includes(o-1)&&i.push(o-1);!function(n,o,r,e){const i=r.includes(o),c=e.includes(o);if(!i&&!c)return;(function(t){t.style.position="sticky",t.style.left="",t.style.right="",t.removeAttribute("data-sticky")})(n),i&&!c?function(n,o){n.setAttribute("data-sticky","left"),n.tagName===t?n.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))":n.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))";n.style.zIndex="1",n.style.left=`var(--sticky-left-${o})`}(n,o):function(n,o){n.setAttribute("data-sticky","right"),n.tagName===t?n.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))":n.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))";n.style.zIndex="1",n.style.right=`var(--sticky-right-${o})`}(n,o)}(n,o-1,e,i)}(o,h,s,l,a);for(let t=0;t<u;t++)i[r-1+t]=Math.max(i[r-1+t]||0,f);return{c:d,colCount:Math.max(c,d-1)}}function k(t){if(!t.stickyLeftIndexes.length&&!t.stickyRightIndexes.length)return;const{showRightOnLeftStickies:n,showLeftOnRightStickies:o}=function(t){const n=Math.max(0,t.scrollWidth-t.clientWidth);return{showRightOnLeftStickies:t.scrollLeft>0,showLeftOnRightStickies:t.scrollLeft<n}}(t);if(t.shadowLeftVisibleSticky!==n||t.shadowRightVisibleSticky!==o){t.shadowLeftVisibleSticky=n,t.shadowRightVisibleSticky=o;for(const o of t.stickyLeftHeadEls)o.classList.toggle("shadow-left",n);for(const o of t.stickyLeftBodyEls)o.classList.toggle("shadow-left",n);for(const n of t.stickyRightHeadEls)n.classList.toggle("shadow-right",o);for(const n of t.stickyRightBodyEls)n.classList.toggle("shadow-right",o)}}function w(t,n,o,r,e,i){return M(t,n,o,r,e,i,{itemSelector:"nile-grid-cell-item",useStickyAttr:!1,handleRowBg:!0})}function v(t,n){const o=n.map(((t,o)=>o===n.length-1?`minmax(${Math.round(t)}px, auto)`:`${Math.max(0,Math.round(t))}px`)).join(" ");t.style.setProperty("--nile-grid-columns",o)}export{a,f as b,c,g as d,h as e,i as f,d as g,s as h,b as i,m as j,v as k,y as l,l as r,k as s,u};
1
+ import{N as t}from"./types/nile-grid.enums.esm.js";function n(t,n,i,c,l,a){const s=t.minColumnWidth,u=function(t){return Math.max(0,(t.getBoundingClientRect().width||0)-4)}(t),f=function(t,n,r,e,i,c,l){const a=Array(n).fill(null);if(c){const e=d(t);e&&function(t,n,r,e,i){const c=[...t.children].filter((t=>"nile-grid-row"===t.tagName.toLowerCase()));for(const t of c)o(t,n,r,e,i)}(e,a,n,r,i)}l?.length&&l.some((t=>t>0))&&l?.length===n&&function(t,n,o){for(let r=0;r<n.length;r++)null==t[r]&&Number.isFinite(n[r])&&(t[r]=Math.max(o.minColumnWidth,Math.round(n[r])))}(a,l,e);return a}(c,n,u,t,l,a,i),h=function(t,n,o){const r=Array(t.length).fill(!1);for(let e=0;e<t.length;e++){const i=t[e]??null;n[e]=null==i||Number.isNaN(i)?0:Math.max(o,Number(i)),r[e]=null!=i&&!Number.isNaN(i)}return r}(f,i,s);!function(t,n,o,r){const e=t.reduce(((t,n)=>t+n),0),i=o-e,c=Array.from({length:t.length},((t,n)=>n)).filter((t=>!n[t]));if(0===c.length)return;const l=i/c.length;for(const n of c)t[n]=Math.max(r,l)}(i,h,u,s),t.enableScroll||function(t,n,o){let i=(c=t,c.reduce(((t,n)=>t+n),0));var c;i<n?function(t,n,o){if(!t.length)return;const r=n-o,e=o||1;for(let n=0;n<t.length;n++)t[n]+=r*(t[n]/e)}(t,n,i):i>n&&function(t,n,o,i){let c=o-n;for(let n=0;n<8&&c>.5;n++){const{candidates:n,weightSum:o}=r(t,i);if(!n.length||o<=0)break;const l=e(t,n,o,c,i);if(c-=l,l<.5)break}}(t,n,i,o)}(i,u,s),function(t,n){for(let o=0;o<t.length;o++)t[o]=Math.max(n,Math.round(t[o]))}(i,s),S(t,i)}function o(t,n,o,r,e){const i=[...t.children].filter((t=>"nile-grid-head-item"===t.tagName.toLowerCase())).map((t=>function(t,n,o){const r=Number(t.dataset?.cStart)||1,e=Math.max(1,Number(t.getAttribute("colspan"))||1),i=t.width??t.getAttribute("width")??null;t.hasAttribute("lockWidth")&&(o[r-1]=!0);const c=function(t,n){if(null==t)return null;if("number"==typeof t&&Number.isFinite(t))return t;const o=String(t).trim().toLowerCase();if(!o)return null;if(o.endsWith("px")){const t=parseFloat(o);return Number.isFinite(t)?t:null}if(o.endsWith("%")){const t=parseFloat(o);return Number.isFinite(t)?t/100*n:null}const r=parseFloat(o);return Number.isFinite(r)?r:null}(i,n);return{cStart:r,colspan:e,cw:c}}(t,r,e))).filter((t=>null!=t.cw));i.sort(((t,n)=>t.colspan-n.colspan)),i.forEach((({cStart:t,colspan:r,cw:e})=>{!function(t,n,o,r,e){const i=Math.round(r/o);for(let r=0;r<o;r++){const o=n-1+r;o>=0&&o<e&&null==t[o]&&(t[o]=i)}}(n,t,r,e,o)}))}function r(t,n){const o=[];let r=0;for(let e=0;e<t.length;e++){Math.max(0,t[e]-n)>0&&(o.push(e),r+=t[e])}return{candidates:o,weightSum:r}}function e(t,n,o,r,e){let i=0;for(const c of n){const n=Math.max(0,t[c]-e),l=t[c]/o,a=Math.min(n,r*l);t[c]-=a,i+=a}return i}const i=(t,n,o,r,e,i)=>{n.style.display="block",o.style.display="block",n.style.height=e+"px",o.style.height=e+"px";const c=t,l=t=>Math.max(0,Math.round(t||0)),a=l(i.reduce(((t,n)=>t+(n||0)),0)),s=(u=r,l(i.slice(0,Math.max(0,u)).reduce(((t,n)=>t+(n||0)),0)));var u;let f=s+l(Math.max(c,i[r]??c));const h=s+c,d=a;f=Math.min(Math.max(f,h),d),f=Math.max(f,20),n.style.left=f-6+"px",o.style.left=f-2+"px"};function c(t){const{target:n,col:o,widthPx:r,floor:e,columnWidths:i}=t,c=!!n.getAttribute("colspan")&&parseInt(n.getAttribute("colspan"),10)>1,l=i[o]??e,a=c?r-(i[o-1]??0):r,s=Math.max(e,Math.round(Number.isFinite(a)?a:l));return{prevW:l,newW:s,delta0:s-l}}function l({grid:t,col:n,prevW:o,newW:r,floor:e}){if(t.lockedWidthColumns?.[n])return;let i=r-o;if(i>0){const r=function(t,n,o,r){let e=0;for(let i=n;i<t.length;i++)r?.[i]||(e+=Math.max(0,t[i]-o));return e}(t.columnWidths,n+1,e,t.lockedWidthColumns);if(r<=0)return;i=Math.min(i,r),t.columnWidths[n]=o+i,function(t,n,o,r,e){let i=o;for(let o=n;o<t.length&&i>0;o++){if(e?.[o])continue;const n=t[o]-r;if(n<=0)continue;const c=Math.min(n,i);t[o]-=c,i-=c}}(t.columnWidths,n+1,i,e,t.lockedWidthColumns)}else{const i=Math.max(e,r),c=o-i;t.columnWidths[n]=i,function(t,n,o){let r=o;n<t.length&&r>0&&(t[n]+=r,r=0)}(t.columnWidths,n+1,c)}}function a(t){const{grid:n,col:o,newW:r}=t;n.lockedWidthColumns?.[o]||(n.columnWidths[o]=r)}function s(t,n){i(t.minColumnWidth,t.resizeStart,t.resizeEnd,n,t.scrollHeight,t.columnWidths),S(t,t.columnWidths)}function u(t,n){i(t.minColumnWidth,t.resizeStart,t.resizeEnd,n,t.scrollHeight,t.columnWidths)}const f=(t,n,o,r)=>{t.addEventListener("nile-column-resize",n),t.addEventListener("nile-resize-start",(n=>{n.stopPropagation(),t.resizeBaseColumnWidths=[...t.columnWidths],t.resizeStart.style.display="block"})),t.addEventListener("nile-resize-end",(n=>{n.stopPropagation(),s(t,n.detail.col),t.resizeBaseColumnWidths=[],t.resizeStart.style.display="none",t.resizeEnd.style.display="none"})),o.addEventListener("slotchange",(()=>r())),t.addEventListener("scroll",(()=>b(t)))},h=(t,n,o,r)=>{t.removeEventListener("nile-column-resize",n),t.removeEventListener("nile-resize-start",(()=>{t.resizeStart.style.display="block"})),t.removeEventListener("nile-resize-end",(()=>{t.resizeStart.style.display="none",t.resizeEnd.style.display="none"})),o.removeEventListener("slotchange",(()=>r())),t.removeEventListener("scroll",(()=>b(t)))},d=t=>(t?.assignedElements()??[]).find((t=>"nile-grid-head"===t.tagName.toLowerCase()))||null,g=t=>(t?.assignedElements()??[]).find((t=>"nile-grid-body"===t.tagName.toLowerCase()))||null,b=t=>{const n=Math.max(1,t.scrollHeight-t.clientHeight),o=Math.max(1,t.scrollWidth-t.clientWidth),r=Math.round(t.scrollTop/n*100),e=Math.round(t.scrollLeft/o*100);t.emit("nile-scroll",{bubbles:!0,composed:!0,detail:{horizontalScroll:e,verticalScroll:r,left:t.scrollLeft,top:t.scrollTop}})};function m(t,n){const o=Math.min(t.length,n.length);for(let r=0;r<o;r++)t[r]=n[r]}const y=(t,o,r,e,i)=>{const c=d(o),l=g(o);if(!c&&!l)return;let a=t.colCount||0,s=!1;if(t.needsStructureLayout)s=!0,t.headRows=c?Array.from(c.querySelectorAll("nile-grid-row")):[],a=0,t.headRows.length&&(a=function(t,n,o,r,e,i){return p(t,n,o,r,e,i,{itemSelector:"nile-grid-head-item",useStickyAttr:!0,handleRowBg:!1})}(t,t.headRows,[],a,e,i)),l&&(t.bodyRows=Array.from(l.querySelectorAll("nile-grid-row")),a?v(t,t.bodyRows,[],a,e,i):a=v(t,t.bodyRows,[],a,e,i)),t.stickyLeftIndexes.length||t.stickyRightIndexes.length?M(t):(t.stickyLeftHeadEls=[],t.stickyRightHeadEls=[],t.stickyLeftBodyEls=[],t.stickyRightBodyEls=[],t.shadowLeftVisibleSticky=!1,t.shadowRightVisibleSticky=!1),t.colCount=a,t.needsStructureLayout=!1,t.needsSpanLayout=!1,t.needsWidthLayout=!0;else if(t.needsSpanLayout&&l){const n=t.bodyRows;a=t.colCount||0,a&&v(t,n,[],a,e,i),t.needsSpanLayout=!1}if(t.needsWidthLayout){if(a=t.colCount||a,!a)return;r(a),n(t,a,t.columnWidths,o,t.lockedWidthColumns,s),function(t){const n=t.columnWidths,o=t.stickyLeftIndexes,r=t.stickyRightIndexes,e=[],i=t;let c=0;for(let t=0;t<o.length;t++){const r=o[t];e.push({colNumber:r,left:c,right:0}),i.style.setProperty(`--sticky-left-${r}`,`${c}px`),c+=n[r]}let l=0;for(let t=r.length-1;t>=0;t--){const o=r[t];e.push({colNumber:o,left:0,right:l}),i.style.setProperty(`--sticky-right-${o}`,`${l}px`),l+=n[o]}t.prefixSumColumnsWidth=e}(t),S(t,t.columnWidths),t.needsWidthLayout=!1}};function M(t){const{head:n,body:o}=function(t){if(!t.shadowRoot)return{head:void 0,body:void 0};const n=t.slotEl.assignedElements(),o=t=>n.find((n=>n.tagName.toLowerCase()===t));return{head:o("nile-grid-head"),body:o("nile-grid-body")}}(t);t.stickyLeftHeadEls=n?Array.from(n.querySelectorAll('nile-grid-head-item[data-sticky="left"]')):[],t.stickyRightHeadEls=n?Array.from(n.querySelectorAll('nile-grid-head-item[data-sticky="right"]')):[],t.stickyLeftBodyEls=o?Array.from(o.querySelectorAll('nile-grid-cell-item[data-sticky="left"]')):[],t.stickyRightBodyEls=o?Array.from(o.querySelectorAll('nile-grid-cell-item[data-sticky="right"]')):[]}function p(t,n,o,r,e,i,c){return n.forEach(((n,l)=>{t.hoverable&&n.setAttribute("hover","true"),r=function(t,n,o,r,e,i,c,l){let a=1;const s=o+1,u=l.itemSelector.toLowerCase(),f=Array.from(n.children).filter((t=>t.tagName.toLowerCase()===u));for(const n of f){for(;(r[a-1]||0)>0;)a++;({c:a,colCount:e}=k(t,n,a,s,r,e,i,c,l))}return function(t){for(let n=0;n<t.length;n++)t[n]>0&&t[n]--}(r),e}(t,n,l,o,r,e,i,c)})),r}function k(n,o,r,e,i,c,l,a,s){const u=Math.max(1,+o.getAttribute("colspan")||1),f=Math.max(1,+o.getAttribute("rowspan")||1);!function(n,o,r){if(r<=1)return;o.style.position="absolute",o.style.zIndex="1",o.tagName===t?(n.headHeight||(n.headHeight=o.getBoundingClientRect().height),o.style.height=n.headHeight*r+(r-1)+"px",o.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))",o.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))"):(n.cellHeight||(n.cellHeight=o.getBoundingClientRect().height),o.style.height=n.cellHeight*r+(r-1)+"px",o.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))",o.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))")}(n,o,f);const h=r,d=r+u;!function(t,n,o,r,e){const i=r+e;t.style.gridColumn=`${n} / ${o}`,t.style.gridRow=`${r} / ${i}`,t.dataset.cStart=String(n)}(o,h,d,e,f),(s.useStickyAttr||l.length||a.length)&&function(n,o,r,e,i){r.useStickyAttr&&"left"===n.getAttribute("sticky")&&!e.includes(o-1)&&e.push(o-1);r.useStickyAttr&&"right"===n.getAttribute("sticky")&&!i.includes(o-1)&&i.push(o-1);!function(n,o,r,e){const i=r.includes(o),c=e.includes(o);if(!i&&!c)return;(function(t){t.style.position="sticky",t.style.left="",t.style.right="",t.removeAttribute("data-sticky")})(n),i&&!c?function(n,o){n.setAttribute("data-sticky","left"),n.tagName===t?n.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))":n.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))";n.style.zIndex="1",n.style.left=`var(--sticky-left-${o})`}(n,o):function(n,o){n.setAttribute("data-sticky","right"),n.tagName===t?n.style.backgroundColor="var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))":n.style.backgroundColor="var(--nile-colors-white-base, var(--ng-colors-bg-primary))";n.style.zIndex="1",n.style.right=`var(--sticky-right-${o})`}(n,o)}(n,o-1,e,i)}(o,h,s,l,a);for(let t=0;t<u;t++)i[r-1+t]=Math.max(i[r-1+t]||0,f);return{c:d,colCount:Math.max(c,d-1)}}function w(t){if(!t.stickyLeftIndexes.length&&!t.stickyRightIndexes.length)return;const{showRightOnLeftStickies:n,showLeftOnRightStickies:o}=function(t){const n=Math.max(0,t.scrollWidth-t.clientWidth);return{showRightOnLeftStickies:t.scrollLeft>0,showLeftOnRightStickies:t.scrollLeft<n}}(t);if(t.shadowLeftVisibleSticky!==n||t.shadowRightVisibleSticky!==o){t.shadowLeftVisibleSticky=n,t.shadowRightVisibleSticky=o;for(const o of t.stickyLeftHeadEls)o.classList.toggle("shadow-left",n);for(const o of t.stickyLeftBodyEls)o.classList.toggle("shadow-left",n);for(const n of t.stickyRightHeadEls)n.classList.toggle("shadow-right",o);for(const n of t.stickyRightBodyEls)n.classList.toggle("shadow-right",o)}}function v(t,n,o,r,e,i){return p(t,n,o,r,e,i,{itemSelector:"nile-grid-cell-item",useStickyAttr:!1,handleRowBg:!0})}function S(t,n){const o=n.map(((t,o)=>o===n.length-1?`minmax(${Math.round(t)}px, auto)`:`${Math.max(0,Math.round(t))}px`)).join(" ");t.style.setProperty("--nile-grid-columns",o)}export{c as a,a as b,m as c,f as d,g as e,h as f,d as g,i as h,s as i,b as j,M as k,y as l,S as m,l as r,w as s,u};