@lavalogic/scoria 0.36.0 → 0.37.1

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 (552) hide show
  1. package/dist/Components/AccordionGroup.svelte +6 -2
  2. package/dist/Components/AccordionGroupButton.svelte +78 -78
  3. package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
  4. package/dist/Components/AccordionGroupProps.d.ts +10 -2
  5. package/dist/Components/Action.svelte +31 -33
  6. package/dist/Components/ActionProps.d.ts +23 -3
  7. package/dist/Components/AlertModal.svelte +90 -39
  8. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
  9. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
  10. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
  11. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
  12. package/dist/Components/Base/BaseModal.svelte +172 -0
  13. package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
  14. package/dist/Components/Base/BaseModalProps.d.ts +73 -0
  15. package/dist/Components/Base/BaseModalProps.js +1 -0
  16. package/dist/Components/Base/ContextWrapper.svelte +37 -15
  17. package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
  18. package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
  19. package/dist/Components/Base/Pagination.svelte +70 -62
  20. package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
  21. package/dist/Components/Base/PaginationProps.d.ts +60 -3
  22. package/dist/Components/Base/Snippets.svelte +7 -0
  23. package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
  24. package/dist/Components/BigRadioSet.svelte +18 -9
  25. package/dist/Components/BigRadioSetProps.d.ts +17 -1
  26. package/dist/Components/Bubble.svelte +67 -34
  27. package/dist/Components/Bubble.svelte.d.ts +23 -2
  28. package/dist/Components/BubbleProps.d.ts +55 -4
  29. package/dist/Components/Button.svelte +50 -38
  30. package/dist/Components/ButtonProps.d.ts +66 -1
  31. package/dist/Components/Checkbox.svelte +57 -29
  32. package/dist/Components/Checkbox.svelte.d.ts +1 -12
  33. package/dist/Components/CheckboxProps.d.ts +27 -0
  34. package/dist/Components/CheckboxProps.js +1 -0
  35. package/dist/Components/CollapsibleCard.svelte +53 -22
  36. package/dist/Components/CollapsibleCardProps.d.ts +22 -1
  37. package/dist/Components/Contexts/ContextMenu.svelte +53 -32
  38. package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
  39. package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -7
  40. package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
  41. package/dist/Components/Contexts/ContextMenuOption.svelte +27 -18
  42. package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
  43. package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
  44. package/dist/Components/Contexts/Toast.svelte +28 -4
  45. package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
  46. package/dist/Components/Contexts/ToastContainer.svelte +30 -11
  47. package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
  48. package/dist/Components/Contexts/ToastProps.d.ts +14 -1
  49. package/dist/Components/Contexts/Tooltip.svelte +21 -10
  50. package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
  51. package/dist/Components/DataMatrixIcon.svelte +82 -11
  52. package/dist/Components/DataMatrixIconProps.d.ts +73 -1
  53. package/dist/Components/DateInput.svelte +64 -29
  54. package/dist/Components/DateInput.svelte.d.ts +1 -1
  55. package/dist/Components/DateOnlyInputProps.d.ts +31 -5
  56. package/dist/Components/DatePicker.svelte +96 -108
  57. package/dist/Components/DatePickerProps.d.ts +18 -1
  58. package/dist/Components/DateTimeInputProps.d.ts +30 -5
  59. package/dist/Components/DesktopModal.svelte +14 -43
  60. package/dist/Components/DesktopModalProps.d.ts +5 -4
  61. package/dist/Components/Dial.svelte +103 -41
  62. package/dist/Components/DialProps.d.ts +74 -2
  63. package/dist/Components/DimensionInput.svelte +50 -64
  64. package/dist/Components/DimensionInput.svelte.d.ts +1 -1
  65. package/dist/Components/DimensionInputProps.d.ts +39 -4
  66. package/dist/Components/DragMenu/DragMenuHolder.svelte +41 -29
  67. package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
  68. package/dist/Components/DragMenu/DraggableCard.svelte +44 -8
  69. package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
  70. package/dist/Components/FileCard.svelte +6 -2
  71. package/dist/Components/FileCardProps.d.ts +17 -1
  72. package/dist/Components/FileUpload.svelte +82 -42
  73. package/dist/Components/FileUploadProps.d.ts +34 -4
  74. package/dist/Components/GridInput.svelte +27 -17
  75. package/dist/Components/GridInput.svelte.d.ts +5 -5
  76. package/dist/Components/GridInputProps.d.ts +4 -1
  77. package/dist/Components/GridInputSet.svelte +12 -5
  78. package/dist/Components/GridInputSet.svelte.d.ts +5 -5
  79. package/dist/Components/GridInputSetProps.d.ts +4 -2
  80. package/dist/Components/HorizontalTabGroup.svelte +13 -11
  81. package/dist/Components/HorizontalTabGroupButton.svelte +16 -68
  82. package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
  83. package/dist/Components/Icon.svelte +62 -21
  84. package/dist/Components/IconProps.d.ts +54 -6
  85. package/dist/Components/Icons.d.ts +8 -0
  86. package/dist/Components/Icons.js +234 -215
  87. package/dist/Components/LoadingAnimation.svelte +18 -18
  88. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
  89. package/dist/Components/LoadingAnimationProps.d.ts +16 -0
  90. package/dist/Components/LoadingAnimationProps.js +1 -0
  91. package/dist/Components/LoadingModal.svelte +18 -20
  92. package/dist/Components/LoadingModal.svelte.d.ts +1 -4
  93. package/dist/Components/LoadingModalProps.d.ts +17 -0
  94. package/dist/Components/LoadingModalProps.js +1 -0
  95. package/dist/Components/LoadingOverlay.svelte +11 -13
  96. package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
  97. package/dist/Components/LoadingOverlayProps.d.ts +28 -0
  98. package/dist/Components/LoadingOverlayProps.js +1 -0
  99. package/dist/Components/Modal.svelte +77 -82
  100. package/dist/Components/Modal.svelte.d.ts +1 -25
  101. package/dist/Components/ModalProps.d.ts +65 -0
  102. package/dist/Components/ModalProps.js +1 -0
  103. package/dist/Components/MultiSelect.svelte +88 -76
  104. package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
  105. package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
  106. package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
  107. package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
  108. package/dist/Components/Nav/Nav.svelte +35 -30
  109. package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
  110. package/dist/Components/Nav/NavProps.d.ts +50 -3
  111. package/dist/Components/Nav/NavServiceMenuList.svelte +12 -3
  112. package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
  113. package/dist/Components/Nav/NavTab.svelte +19 -48
  114. package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
  115. package/dist/Components/Nav/NavTabProps.d.ts +16 -2
  116. package/dist/Components/Nav/ServiceMenuItem.svelte +29 -20
  117. package/dist/Components/Nav/ServicesNav.svelte +60 -34
  118. package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
  119. package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
  120. package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
  121. package/dist/Components/NumberInput.svelte +37 -27
  122. package/dist/Components/NumberInputProps.d.ts +37 -0
  123. package/dist/Components/PageHeading.svelte +2 -13
  124. package/dist/Components/PageHeading.svelte.d.ts +1 -6
  125. package/dist/Components/PageHeadingProps.d.ts +23 -0
  126. package/dist/Components/PageHeadingProps.js +1 -0
  127. package/dist/Components/PasswordInput.svelte +27 -15
  128. package/dist/Components/PasswordInput.svelte.d.ts +2 -2
  129. package/dist/Components/PasswordInputProps.d.ts +21 -0
  130. package/dist/Components/PasswordInputProps.js +1 -0
  131. package/dist/Components/Portal.svelte +14 -3
  132. package/dist/Components/PortalProps.d.ts +20 -1
  133. package/dist/Components/ProgressBubble.svelte +98 -53
  134. package/dist/Components/ProgressBubbleProps.d.ts +23 -2
  135. package/dist/Components/QuerySelect.svelte +103 -159
  136. package/dist/Components/QuerySelect.svelte.d.ts +2 -29
  137. package/dist/Components/QuerySelectProps.d.ts +66 -0
  138. package/dist/Components/QuerySelectProps.js +1 -0
  139. package/dist/Components/SingleSelect.svelte +86 -108
  140. package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
  141. package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
  142. package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
  143. package/dist/Components/StepButton.svelte +19 -69
  144. package/dist/Components/StepForm.svelte +52 -52
  145. package/dist/Components/StepFormProps.d.ts +16 -2
  146. package/dist/Components/Switch.svelte +68 -31
  147. package/dist/Components/Switch.svelte.d.ts +1 -1
  148. package/dist/Components/SwitchProps.d.ts +46 -0
  149. package/dist/Components/Table/Body/HeightData.d.ts +1 -6
  150. package/dist/Components/Table/Body/HeightData.js +8 -0
  151. package/dist/Components/Table/Body/QuickSearchCell.svelte +106 -50
  152. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
  153. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
  154. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +43 -9
  155. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
  156. package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
  157. package/dist/Components/Table/Body/Rows/ColumnList.svelte +15 -5
  158. package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
  159. package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
  160. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +437 -91
  161. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
  162. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
  163. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +43 -13
  164. package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
  165. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +50 -38
  166. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
  167. package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
  168. package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
  169. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +61 -26
  170. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
  171. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
  172. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
  173. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +36 -16
  174. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +133 -26
  175. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
  176. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
  177. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +54 -20
  178. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
  179. package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
  180. package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
  181. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
  182. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
  183. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +55 -40
  184. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
  185. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +38 -27
  186. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
  187. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
  188. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
  189. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +22 -7
  190. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
  191. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
  192. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
  193. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +61 -31
  194. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
  195. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
  196. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +123 -244
  197. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
  198. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
  199. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
  200. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +126 -189
  201. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
  202. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
  203. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +31 -19
  204. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
  205. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
  206. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
  207. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +125 -187
  208. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
  209. package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
  210. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +119 -270
  211. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
  212. package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
  213. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +46 -23
  214. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
  215. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
  216. package/dist/Components/Table/Body/Rows/TableRow.svelte +200 -132
  217. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  218. package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
  219. package/dist/Components/Table/Body/TableBody.svelte +170 -53
  220. package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
  221. package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
  222. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.d.ts +2 -2
  223. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
  224. package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
  225. package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
  226. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +5 -3
  227. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte +5 -3
  229. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  230. package/dist/Components/Table/Headers/TableHead.svelte +340 -200
  231. package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
  232. package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
  233. package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
  234. package/dist/Components/Table/Misc/ColumnPanel.svelte +108 -50
  235. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +20 -7
  237. package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
  238. package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
  239. package/dist/Components/Table/Misc/FilterInput.svelte +30 -41
  240. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  241. package/dist/Components/Table/Misc/FilterPanel.svelte +387 -29
  242. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte +4 -51
  244. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  245. package/dist/Components/Table/Misc/SidePanel.svelte +12 -9
  246. package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
  247. package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
  248. package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
  249. package/dist/Components/Table/Misc/TableFooter.svelte +44 -35
  250. package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
  251. package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
  252. package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
  253. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +17 -48
  254. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  255. package/dist/Components/Table/Misc/TableSidebar.svelte +28 -47
  256. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte +121 -55
  258. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +31 -24
  260. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
  261. package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
  262. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  263. package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
  264. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
  265. package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
  266. package/dist/Components/Table/NestedTable.svelte +85 -41
  267. package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
  268. package/dist/Components/Table/NestedTableProps.d.ts +25 -0
  269. package/dist/Components/Table/NestedTableProps.js +1 -0
  270. package/dist/Components/Table/SubApis.svelte.d.ts +24 -0
  271. package/dist/Components/Table/SubApis.svelte.js +380 -0
  272. package/dist/Components/Table/Table.svelte +345 -172
  273. package/dist/Components/Table/Table.svelte.d.ts +24 -1
  274. package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
  275. package/dist/Components/Table/TableHelpers.svelte.js +88 -0
  276. package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
  277. package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
  278. package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
  279. package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
  280. package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
  281. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
  282. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
  283. package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
  284. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
  285. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
  286. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
  287. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
  288. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
  289. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
  290. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
  291. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
  292. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
  293. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
  294. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
  295. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
  296. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
  297. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
  298. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
  299. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
  300. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
  301. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
  302. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
  303. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
  304. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
  305. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +30 -9
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +14 -0
  307. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
  308. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
  309. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
  310. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
  311. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
  312. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
  313. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
  314. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
  315. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
  316. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
  317. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
  318. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
  319. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
  320. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
  321. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
  322. package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
  323. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
  324. package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
  325. package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
  326. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
  327. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
  328. package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
  329. package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
  330. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
  331. package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
  332. package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
  333. package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
  334. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
  335. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
  336. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
  337. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
  338. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
  339. package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
  340. package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
  341. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
  342. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
  343. package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
  344. package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
  345. package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
  346. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
  347. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
  348. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
  349. package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
  350. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +580 -58
  351. package/dist/Components/Table/Types/Context/TableContext.svelte.js +984 -1278
  352. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
  353. package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
  354. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
  355. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
  356. package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
  357. package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
  358. package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
  359. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
  360. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
  361. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
  362. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
  363. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
  364. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
  365. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
  366. package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
  367. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
  368. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
  369. package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
  370. package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
  371. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
  372. package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
  373. package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
  374. package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
  375. package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
  376. package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
  377. package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
  378. package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
  379. package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
  380. package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
  381. package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
  382. package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
  383. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
  384. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
  385. package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
  386. package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
  387. package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
  388. package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
  389. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
  390. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
  391. package/dist/Components/Table/Types/Header.d.ts +8 -0
  392. package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
  393. package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
  394. package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
  395. package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
  396. package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
  397. package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
  398. package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
  399. package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
  400. package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
  401. package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
  402. package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
  403. package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
  404. package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
  405. package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +244 -0
  406. package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
  407. package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
  408. package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
  409. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
  410. package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
  411. package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
  412. package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
  413. package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
  414. package/dist/Components/Table/Types/Public/RowSource.js +1 -0
  415. package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
  416. package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
  417. package/dist/Components/Table/Types/Public/Table.d.ts +40 -0
  418. package/dist/Components/Table/Types/Public/Table.js +1 -0
  419. package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
  420. package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
  421. package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
  422. package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
  423. package/dist/Components/Table/Types/Public/TableSubApis.d.ts +190 -0
  424. package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
  425. package/dist/Components/Table/Types/Public/index.d.ts +20 -0
  426. package/dist/Components/Table/Types/Public/index.js +8 -0
  427. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
  428. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
  429. package/dist/Components/Table/createTable.svelte.d.ts +53 -0
  430. package/dist/Components/Table/createTable.svelte.js +270 -0
  431. package/dist/Components/TextArea.svelte +37 -18
  432. package/dist/Components/TextAreaProps.d.ts +37 -0
  433. package/dist/Components/TextInput.svelte +41 -22
  434. package/dist/Components/TextInputProps.d.ts +58 -1
  435. package/dist/Components/ThreeStateRadio.svelte +61 -64
  436. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  437. package/dist/Components/Touch/BoolCard.svelte +8 -15
  438. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  439. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  440. package/dist/Components/Touch/BoolCardProps.js +1 -0
  441. package/dist/Components/Touch/DateModal.svelte +17 -25
  442. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  443. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  444. package/dist/Components/Touch/DateModalProps.js +1 -0
  445. package/dist/Components/Touch/EditCard.svelte +10 -3
  446. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  447. package/dist/Components/Touch/InfoCard.svelte +14 -7
  448. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  449. package/dist/Components/Touch/InfoTextCard.svelte +9 -2
  450. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  451. package/dist/Components/Touch/ModalExplanation.svelte +9 -12
  452. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  453. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  454. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  455. package/dist/Components/Touch/NumberKeyboard.svelte +62 -105
  456. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  457. package/dist/Components/Touch/NumberModal.svelte +16 -6
  458. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  459. package/dist/Components/Touch/PlusMinusCard.svelte +12 -16
  460. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  461. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  462. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  463. package/dist/Components/Touch/SelectModal.svelte +33 -15
  464. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  465. package/dist/Components/Touch/SummaryCard.svelte +56 -14
  466. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  467. package/dist/Components/Touch/TextAreaModal.svelte +18 -9
  468. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  469. package/dist/Components/Touch/TextModal.svelte +15 -32
  470. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  471. package/dist/Components/Touch/TouchCard.svelte +9 -47
  472. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  473. package/dist/Components/Touch/TouchModal.svelte +105 -99
  474. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  475. package/dist/Components/Touch/UtilityButton.svelte +36 -18
  476. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  477. package/dist/Components/VerticalTabGroup.svelte +18 -40
  478. package/dist/Components/VerticalTabGroupButton.svelte +11 -50
  479. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  480. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  481. package/dist/Contexts/AlertContext.svelte.js +69 -6
  482. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  483. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  484. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  485. package/dist/Contexts/TestContext.svelte.js +29 -1
  486. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  487. package/dist/Contexts/ToastContext.svelte.js +93 -24
  488. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  489. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  490. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  491. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  492. package/dist/Delay/Delay.js +1 -1
  493. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  494. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  495. package/dist/Helpers/Datamatrix.d.ts +10 -1
  496. package/dist/Helpers/Datamatrix.js +290 -1
  497. package/dist/Helpers/Helpers.svelte.d.ts +252 -18
  498. package/dist/Helpers/Helpers.svelte.js +271 -75
  499. package/dist/Helpers/INamed.d.ts +6 -0
  500. package/dist/Helpers/Storage.d.ts +67 -0
  501. package/dist/Helpers/Storage.js +138 -0
  502. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  503. package/dist/Helpers/dropdownPortal.js +232 -0
  504. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  505. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  506. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  507. package/dist/Helpers/memoiseByRow.js +78 -0
  508. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  509. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  510. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  511. package/dist/Helpers/useTooltip.svelte.js +62 -0
  512. package/dist/Types/Examples/ExampleModal.svelte +12 -11
  513. package/dist/Types/Examples/ExampleModal.svelte.d.ts +2 -2
  514. package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
  515. package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
  516. package/dist/Types/Internal/AsyncFlag.js +1 -0
  517. package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
  518. package/dist/Types/Internal/ButtonProp.d.ts +24 -2
  519. package/dist/Types/Internal/CallbackButton.d.ts +12 -0
  520. package/dist/Types/Internal/DateChange.d.ts +8 -0
  521. package/dist/Types/Internal/DatePickerType.d.ts +5 -0
  522. package/dist/Types/Internal/DatePickerType.js +6 -1
  523. package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
  524. package/dist/Types/Internal/InputVariant.d.ts +5 -0
  525. package/dist/Types/Internal/InputVariant.js +6 -1
  526. package/dist/Types/Internal/Misc.d.ts +91 -0
  527. package/dist/Types/Internal/RefWrapper.d.ts +6 -0
  528. package/dist/Types/Internal/SelectOption.d.ts +8 -0
  529. package/dist/Types/Internal/Shape.d.ts +1 -0
  530. package/dist/Types/Internal/Shape.js +2 -1
  531. package/dist/Types/Internal/Side.d.ts +1 -0
  532. package/dist/Types/Internal/Side.js +2 -1
  533. package/dist/Types/Internal/Size.d.ts +5 -0
  534. package/dist/Types/Internal/Size.js +6 -1
  535. package/dist/Types/Internal/TabOption.d.ts +15 -5
  536. package/dist/Types/Internal/Ternary.d.ts +6 -0
  537. package/dist/Types/Internal/Ternary.js +7 -1
  538. package/dist/Types/Internal/ToastMessage.d.ts +28 -0
  539. package/dist/Types/Internal/Validity.d.ts +6 -0
  540. package/dist/Types/Internal/Validity.js +7 -1
  541. package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
  542. package/dist/Types/Internal/Variant.d.ts +5 -0
  543. package/dist/Types/Internal/Variant.js +6 -1
  544. package/dist/index.d.ts +27 -82
  545. package/dist/index.js +24 -62
  546. package/dist/scss/_mixins.scss +451 -167
  547. package/dist/scss/_motion.scss +57 -0
  548. package/dist/scss/_sizing.scss +16 -0
  549. package/dist/scss/colours.js +2 -2
  550. package/dist/scss/sizing.d.ts +9 -0
  551. package/dist/scss/sizing.js +10 -1
  552. package/package.json +35 -31
@@ -0,0 +1,613 @@
1
+ import { tick } from 'svelte';
2
+ import { SvelteMap } from 'svelte/reactivity';
3
+ import { asyncForEach, devCatch } from '../../../../Helpers/Helpers.svelte.js';
4
+ import { RowSelectionDef } from '../Columns/Definitions/RowSelection/RowSelectionDef.svelte.js';
5
+ /**
6
+ * Phase 6.5 god-object decomposition - sub-context that owns every
7
+ * selection + highlighting + key-cache concern previously held directly
8
+ * on `TableContext`:
9
+ *
10
+ * - `selectedItems` (the `SvelteMap<RowIdType, T>` of currently
11
+ * selected rows, keyed by extractor id);
12
+ * - `invalidValues` (the parallel `SvelteMap` of rows currently
13
+ * failing their per-cell validation);
14
+ * - `highlightedItems` (the visual-highlight `SvelteMap`, used for
15
+ * the copy-to-clipboard "highlighted rows" flow);
16
+ * - `_keyCache` (a `WeakMap<T, RowIdType>` that memoises the
17
+ * `selectionExtractor` result for each row reference;
18
+ * `handleItemMutation` clears the entry when the parent's
19
+ * `onEditCell` callback may have mutated the id field in place);
20
+ * - the pending-flush buffer (`_pendingSelectionChanges`) and its
21
+ * debounced flush - preserves SvelteMap per-key reactivity and
22
+ * avoids the per-toggle reactive cascade caught during Phase-5
23
+ * Group 2;
24
+ * - `toggleSelected` / `setSelected` / `resetSelectedItems` /
25
+ * `setSelectionMap` (consumer-facing writers);
26
+ * - `selectionContains` / `addInvalidValue` / `removeInvalidValue`;
27
+ * - `selectAllInCurrentPage`, `updateSelectedItems`,
28
+ * `allSelectedInCurrentPage`;
29
+ * - `toggleHighlightedRow` / `resetHighlightedRows` /
30
+ * `onHighlightAll` / `allHighlighted` / `hasHighlightedItems`;
31
+ * - `cachedKey(item)` (sync/async key memoisation);
32
+ * - `handleItemMutation` (the key-cache + selection-rebind half of
33
+ * the pre-extraction `onEditCell`; the user-supplied edit callback
34
+ * stays on `TableContext`).
35
+ *
36
+ * Effect lifecycle: the parent owns every `$effect`. The two effects
37
+ * that previously read these state slots (the post-pagination rebind
38
+ * and the `_allHighlighted` derivation) continue to live on
39
+ * `TableContext`, but they now call into this sub-context through
40
+ * `updateSelectedItems()` / `setAllHighlighted(...)` /
41
+ * `computeAllHighlightedInRange(...)` rather than mutating the state
42
+ * slots directly.
43
+ *
44
+ * `TableContext` retains delegating getters / setters / methods for
45
+ * every legacy surface so existing consumers need no migration.
46
+ */
47
+ export class SelectionState {
48
+ _deps;
49
+ /** Selected rows keyed by id. Map entries are mutated in place so
50
+ * the per-key reactivity tracking of `SvelteMap` survives every
51
+ * toggle. Replacing the slot with a cloned map would invalidate
52
+ * every `.has()` / `.get()` subscriber across all visible rows
53
+ * (regression caught during Phase-5 Group 2). */
54
+ _selectedItems = $state(new SvelteMap());
55
+ /** Parallel `SvelteMap` of rows currently failing per-cell
56
+ * validation. Public-mutable for source compatibility. */
57
+ _invalidValues = $state(new SvelteMap());
58
+ /** Visual-highlight `SvelteMap`, distinct from selection. */
59
+ _highlightedItems = $state(new SvelteMap());
60
+ /**
61
+ * Memoises the `selectionExtractor` result for each row reference.
62
+ * Cleared by `handleItemMutation` immediately before the parent's
63
+ * `onEditCell` callback may mutate the id field in place.
64
+ *
65
+ * `WeakMap` so rows that get garbage-collected do not hold the
66
+ * cache entry forever; rows replaced by remote-paged refresh see
67
+ * their entry collected automatically.
68
+ */
69
+ _keyCache = new WeakMap();
70
+ /**
71
+ * Pending selection changes - buffered and flushed as a single
72
+ * `SvelteMap` mutation pass to avoid per-toggle reactive cascades.
73
+ * Values: `null` = pending delete, `T` = pending insert.
74
+ */
75
+ // eslint-disable-next-line svelte/prefer-svelte-reactivity
76
+ _pendingSelectionChanges = new Map();
77
+ _flushScheduled = false;
78
+ /** Tracks the async `allSelectedBySelectableMethod` result so the
79
+ * `$derived` can return a synchronous value while a promise
80
+ * resolves in the background. */
81
+ _allSelectedAsync = $state(false);
82
+ /** Last computed value of `_areAllHighlightedInRange` for the
83
+ * current page. Mutated by the parent's `$effect` through
84
+ * `setAllHighlighted` (the effect lives in `TableContext`
85
+ * because it needs the parent's pagination-repo reads). */
86
+ _allHighlighted = $state(false);
87
+ /**
88
+ * @param deps thunks the sub-context reads from the parent.
89
+ * Constructor-only - no implicit setup so the parent
90
+ * remains in control of effect ownership and lifecycle.
91
+ */
92
+ constructor(deps) {
93
+ this._deps = deps;
94
+ }
95
+ // -----------------------------------------------------------------
96
+ // selectedItems / invalidValues / highlightedItems
97
+ // -----------------------------------------------------------------
98
+ /** Currently-selected rows, keyed by `selectionExtractor(item)`. */
99
+ get selectedItems() {
100
+ return this._selectedItems;
101
+ }
102
+ /** Currently-invalid rows. */
103
+ get invalidValues() {
104
+ return this._invalidValues;
105
+ }
106
+ set invalidValues(v) {
107
+ this._invalidValues = v;
108
+ }
109
+ /** Currently-highlighted rows. */
110
+ get highlightedItems() {
111
+ return this._highlightedItems;
112
+ }
113
+ /** `true` iff any row is currently highlighted. */
114
+ hasHighlightedItems = $derived(this._highlightedItems.size > 0);
115
+ /**
116
+ * `true` iff every visible row on the current page is highlighted.
117
+ * Set by the parent's `$effect` through `setAllHighlighted` (the
118
+ * effect reads `paginationRepo.pageStartIndex` /
119
+ * `paginationRepo.pageEndIndexExclusive` and delegates the range
120
+ * computation to `computeAllHighlightedInRange`).
121
+ */
122
+ get allHighlighted() {
123
+ return this._allHighlighted;
124
+ }
125
+ /** Setter for `_allHighlighted` driven by the parent's effect. */
126
+ setAllHighlighted(v) {
127
+ this._allHighlighted = v;
128
+ }
129
+ // -----------------------------------------------------------------
130
+ // _cachedKey / handleItemMutation (key-cache half of onEditCell)
131
+ // -----------------------------------------------------------------
132
+ /**
133
+ * Resolves the row identifier through the caller-supplied
134
+ * extractor, memoising the result in `_keyCache` so subsequent
135
+ * lookups on the same `T` reference avoid the extractor cost.
136
+ *
137
+ * Async extractors are supported: the returned promise is awaited
138
+ * by every call site through the `instanceof Promise` branch.
139
+ *
140
+ * Public so the parent's `originalRowIndices` / `getHighlightedRowData`
141
+ * flows can reach the cached key without piercing the boundary.
142
+ */
143
+ cachedKey(item) {
144
+ const cached = this._keyCache.get(item);
145
+ if (cached !== undefined) {
146
+ return cached;
147
+ }
148
+ const raw = this._deps.getSelectionExtractor()(item);
149
+ if (raw instanceof Promise) {
150
+ return raw.then((key) => {
151
+ this._keyCache.set(item, key);
152
+ return key;
153
+ });
154
+ }
155
+ this._keyCache.set(item, raw);
156
+ return raw;
157
+ }
158
+ /**
159
+ * Invoked by the parent's `onEditCell`. Splits cleanly:
160
+ *
161
+ * 1. Resolves the row's old key (sync or async) and snapshots
162
+ * its selection state.
163
+ * 2. If the row was selected, drops it from the selection map
164
+ * so the post-edit insert (step 4) does not duplicate.
165
+ * 3. Invalidates the key-cache entry for the row reference -
166
+ * the callback may mutate the id field in place.
167
+ * 4. Awaits the supplied callback (the user's
168
+ * `TableInitOptions.onEditCell`).
169
+ * 5. Re-inserts the row under its new extractor result if it
170
+ * was previously selected AND `isSelectable` is currently
171
+ * true.
172
+ *
173
+ * The parent's `onEditCell` becomes a thin wrapper that passes
174
+ * the user-supplied callback in as the `runUserEditCallback`
175
+ * thunk.
176
+ */
177
+ handleItemMutation = async (item, runUserEditCallback) => {
178
+ const rawOldKey = this.cachedKey(item);
179
+ const oldKey = rawOldKey instanceof Promise ? await rawOldKey : rawOldKey;
180
+ const wasSelected = this._selectedItems.has(oldKey);
181
+ if (wasSelected) {
182
+ this._selectedItems.delete(oldKey);
183
+ }
184
+ // Invalidate cache - the callback may mutate the item's key
185
+ // field in place.
186
+ this._keyCache.delete(item);
187
+ await runUserEditCallback();
188
+ if (wasSelected && this._deps.getIsSelectable()) {
189
+ const rawNewKey = this.cachedKey(item);
190
+ const newKey = rawNewKey instanceof Promise ? await rawNewKey : rawNewKey;
191
+ if (newKey) {
192
+ this._selectedItems.set(newKey, item);
193
+ }
194
+ }
195
+ };
196
+ // -----------------------------------------------------------------
197
+ // pending-flush buffer
198
+ // -----------------------------------------------------------------
199
+ _flushPendingSelectionChanges() {
200
+ if (this._pendingSelectionChanges.size === 0) {
201
+ return;
202
+ }
203
+ // Mutate in place to preserve SvelteMap's per-key reactive tracking.
204
+ // Replacing _selectedItems with a cloned map would invalidate every
205
+ // .has()/.get() subscriber across all visible rows, not just the
206
+ // changed keys.
207
+ for (const [key, item] of this._pendingSelectionChanges) {
208
+ if (item === null) {
209
+ this._selectedItems.delete(key);
210
+ }
211
+ else {
212
+ this._selectedItems.set(key, item);
213
+ }
214
+ }
215
+ this._pendingSelectionChanges.clear();
216
+ this._flushScheduled = false;
217
+ }
218
+ _schedulePendingFlush() {
219
+ if (this._flushScheduled) {
220
+ return;
221
+ }
222
+ this._flushScheduled = true;
223
+ tick()
224
+ .then(() => {
225
+ this._flushPendingSelectionChanges();
226
+ })
227
+ .catch(devCatch);
228
+ }
229
+ // -----------------------------------------------------------------
230
+ // selection writers
231
+ // -----------------------------------------------------------------
232
+ /** Whether the row's selection key is currently in the selected
233
+ * map. Returns `true` unconditionally when the table has no
234
+ * selection column (legacy semantics). */
235
+ selectionContains = (item) => {
236
+ void item;
237
+ void this._deps.getIsSelectable();
238
+ void this._selectedItems.size;
239
+ if (!this._deps.getIsSelectable()) {
240
+ return true;
241
+ }
242
+ const rawIdentity = this.cachedKey(item);
243
+ return rawIdentity instanceof Promise
244
+ ? rawIdentity.then((identity) => this._selectedItems.has(identity))
245
+ : this._selectedItems.has(rawIdentity);
246
+ };
247
+ /** Marks a row as invalid for downstream invalid-rows tracking. */
248
+ addInvalidValue = (item) => {
249
+ const raw = this.cachedKey(item);
250
+ if (raw instanceof Promise) {
251
+ return raw.then((key) => {
252
+ this._invalidValues.set(key, item);
253
+ });
254
+ }
255
+ this._invalidValues.set(raw, item);
256
+ };
257
+ /** Clears the invalid-state marker for a row. */
258
+ removeInvalidValue = (item) => {
259
+ const raw = this.cachedKey(item);
260
+ if (raw instanceof Promise) {
261
+ return raw.then((key) => {
262
+ this._invalidValues.delete(key);
263
+ });
264
+ }
265
+ this._invalidValues.delete(raw);
266
+ };
267
+ /**
268
+ * Toggles the selected state of a row. Both the selected map and
269
+ * the pending-flush buffer are consulted so a same-microtask
270
+ * double-toggle reflects the user's last action rather than the
271
+ * persisted state.
272
+ */
273
+ toggleSelected = (item) => {
274
+ const raw = this.cachedKey(item);
275
+ if (raw instanceof Promise) {
276
+ return raw.then((key) => {
277
+ const pendingValue = this._pendingSelectionChanges.get(key);
278
+ const isSelected = pendingValue !== undefined ? pendingValue !== null : this._selectedItems.has(key);
279
+ this._pendingSelectionChanges.set(key, isSelected ? null : item);
280
+ this._schedulePendingFlush();
281
+ });
282
+ }
283
+ const pendingValue = this._pendingSelectionChanges.get(raw);
284
+ const isSelected = pendingValue !== undefined ? pendingValue !== null : this._selectedItems.has(raw);
285
+ this._pendingSelectionChanges.set(raw, isSelected ? null : item);
286
+ this._schedulePendingFlush();
287
+ };
288
+ /** Sets the selected state of a row to the supplied value. */
289
+ setSelected = (item, selected) => {
290
+ const raw = this.cachedKey(item);
291
+ if (raw instanceof Promise) {
292
+ return raw.then((key) => {
293
+ this._pendingSelectionChanges.set(key, selected ? item : null);
294
+ this._schedulePendingFlush();
295
+ });
296
+ }
297
+ this._pendingSelectionChanges.set(raw, selected ? item : null);
298
+ this._schedulePendingFlush();
299
+ };
300
+ /** Replaces the entire selected-items map. */
301
+ setSelectionMap = (set) => {
302
+ this._selectedItems = set;
303
+ };
304
+ /** Clears every selected row. */
305
+ resetSelectedItems = () => {
306
+ this._selectedItems.clear();
307
+ };
308
+ // -----------------------------------------------------------------
309
+ // page-wide selection helpers
310
+ // -----------------------------------------------------------------
311
+ /**
312
+ * Resolve the page-window pair `[start, end)` from the dependency
313
+ * thunks, applying the `undefined` -> "no pagination" fallback.
314
+ * Exposed publicly so the parent's `_hasInvalidSelectedItems`
315
+ * effect can reach the same window without duplicating the
316
+ * fallback logic.
317
+ */
318
+ getPageWindow() {
319
+ const sortedDataLength = this._deps.getSortedData().length;
320
+ const pageStartIndex = this._deps.getPageStartIndex() ?? 0;
321
+ const pageEndIndexRaw = this._deps.getPageEndIndexExclusive();
322
+ const pageEndIndexExclusive = pageEndIndexRaw === undefined
323
+ ? sortedDataLength
324
+ : Math.min(pageEndIndexRaw, sortedDataLength);
325
+ return { pageStartIndex, pageEndIndexExclusive };
326
+ }
327
+ allSelectedBySelectableMethod(pageStartIndex, pageEndIndexExclusive, selectableMethod) {
328
+ const sortedData = this._deps.getSortedData();
329
+ const emptyPromise = new Promise(() => undefined);
330
+ if (selectableMethod) {
331
+ const pending = [];
332
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
333
+ const item = sortedData[i];
334
+ const relIdx = i - pageStartIndex;
335
+ const raw = this.cachedKey(item);
336
+ const checkUnselected = (key) => {
337
+ const selectable = selectableMethod(item, relIdx);
338
+ if (selectable instanceof Promise) {
339
+ return selectable.then((s) => s && !this._selectedItems.has(key));
340
+ }
341
+ return selectable && !this._selectedItems.has(key);
342
+ };
343
+ const r = raw instanceof Promise ? raw.then(checkUnselected) : checkUnselected(raw);
344
+ if (r === true) {
345
+ return false;
346
+ }
347
+ if (r instanceof Promise) {
348
+ pending.push(r);
349
+ }
350
+ }
351
+ if (pending.length === 0) {
352
+ return true;
353
+ }
354
+ return Promise.race([
355
+ Promise.race(pending.map(async (p) => ((await p) ? false : emptyPromise))),
356
+ Promise.all(pending).then((results) => {
357
+ return !results.some(Boolean);
358
+ }),
359
+ ]);
360
+ }
361
+ else {
362
+ const pending = [];
363
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
364
+ const raw = this.cachedKey(sortedData[i]);
365
+ if (raw instanceof Promise) {
366
+ pending.push(raw.then((key) => !this._selectedItems.has(key)));
367
+ }
368
+ else if (!this._selectedItems.has(raw)) {
369
+ return false;
370
+ }
371
+ }
372
+ if (pending.length === 0) {
373
+ return true;
374
+ }
375
+ return Promise.race([
376
+ Promise.race(pending.map(async (p) => ((await p) ? false : emptyPromise))),
377
+ Promise.all(pending).then((results) => !results.some(Boolean)),
378
+ ]);
379
+ }
380
+ }
381
+ /**
382
+ * `true` iff every row on the current page is currently in the
383
+ * selection map (or covered by the `RowSelectionDef.isSelectable`
384
+ * gate). The async result is parked in `_allSelectedAsync` so a
385
+ * synchronous read remains possible.
386
+ */
387
+ allSelectedInCurrentPage = $derived.by(() => {
388
+ void this._deps.getColumnDefs();
389
+ if (this._selectedItems.size === 0) {
390
+ return false;
391
+ }
392
+ // Subscribe to sortedData + pagination window so the derived
393
+ // recomputes when the page shifts (mirrors the pre-extraction
394
+ // `void this.paginationRepo?.pageStartIndex` reads).
395
+ void this._deps.getSortedData();
396
+ void this._deps.getPageStartIndex();
397
+ void this._deps.getPageEndIndexExclusive();
398
+ const { pageStartIndex, pageEndIndexExclusive } = this.getPageWindow();
399
+ const selectableMethod = this._deps
400
+ .getColumnDefs()
401
+ .find((it) => it instanceof RowSelectionDef)?.isSelectable;
402
+ const result = this.allSelectedBySelectableMethod(pageStartIndex, pageEndIndexExclusive, selectableMethod);
403
+ if (result instanceof Promise) {
404
+ result
405
+ .then((flag) => {
406
+ this._allSelectedAsync = flag;
407
+ })
408
+ .catch(devCatch);
409
+ return this._allSelectedAsync;
410
+ }
411
+ return result;
412
+ });
413
+ /**
414
+ * Toggles the selection state of every row on the current page.
415
+ * If every row is already selected, every row is deselected;
416
+ * otherwise every row that passes the optional `RowSelectionDef`
417
+ * `isSelectable` guard is added to the selection map.
418
+ */
419
+ selectAllInCurrentPage = async () => {
420
+ void this._deps.getPageStartIndex();
421
+ const sortedData = this._deps.getSortedData();
422
+ const { pageStartIndex, pageEndIndexExclusive } = this.getPageWindow();
423
+ // Mutate in place to preserve SvelteMap per-key reactivity AND
424
+ // to honour `setSelectionMap()` - if the consumer replaced the
425
+ // slot wholesale, we mutate THAT map rather than allocating a
426
+ // new one.
427
+ const sel = this._selectedItems;
428
+ const pending = [];
429
+ if (this.allSelectedInCurrentPage) {
430
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
431
+ const raw = this.cachedKey(sortedData[i]);
432
+ if (raw instanceof Promise) {
433
+ pending.push(raw.then((key) => {
434
+ sel.delete(key);
435
+ }));
436
+ }
437
+ else {
438
+ sel.delete(raw);
439
+ }
440
+ }
441
+ }
442
+ else {
443
+ const selectableMethod = this._deps
444
+ .getColumnDefs()
445
+ .find((it) => it instanceof RowSelectionDef)?.isSelectable;
446
+ if (selectableMethod) {
447
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
448
+ const item = sortedData[i];
449
+ const relIdx = i - pageStartIndex;
450
+ const s = selectableMethod(item, relIdx);
451
+ const doSet = (ok) => {
452
+ if (!ok) {
453
+ return;
454
+ }
455
+ const raw = this.cachedKey(item);
456
+ if (raw instanceof Promise) {
457
+ return raw.then((key) => {
458
+ sel.set(key, item);
459
+ });
460
+ }
461
+ sel.set(raw, item);
462
+ };
463
+ const r = s instanceof Promise ? s.then(doSet) : doSet(s);
464
+ if (r instanceof Promise) {
465
+ pending.push(r);
466
+ }
467
+ }
468
+ }
469
+ else {
470
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
471
+ const item = sortedData[i];
472
+ const raw = this.cachedKey(item);
473
+ if (raw instanceof Promise) {
474
+ pending.push(raw.then((key) => {
475
+ sel.set(key, item);
476
+ }));
477
+ }
478
+ else {
479
+ sel.set(raw, item);
480
+ }
481
+ }
482
+ }
483
+ }
484
+ if (pending.length > 0) {
485
+ await Promise.all(pending);
486
+ }
487
+ };
488
+ /**
489
+ * Rebinds every currently selected key to its row object on the
490
+ * current page. Called by the post-pagination effect so a paged
491
+ * remote refresh does not leave the selection map pointing at the
492
+ * old item references.
493
+ */
494
+ updateSelectedItems = async () => {
495
+ if (this._selectedItems.size === 0) {
496
+ return;
497
+ }
498
+ const sortedData = this._deps.getSortedData();
499
+ const { pageStartIndex, pageEndIndexExclusive } = this.getPageWindow();
500
+ // Build key -> item map for the current page (O(page_size) extractions)
501
+ // eslint-disable-next-line svelte/prefer-svelte-reactivity
502
+ const pageKeyMap = new Map();
503
+ const pending = [];
504
+ for (let i = pageStartIndex; i < pageEndIndexExclusive; i++) {
505
+ const item = sortedData[i];
506
+ const raw = this.cachedKey(item);
507
+ if (raw instanceof Promise) {
508
+ pending.push(raw.then((key) => {
509
+ pageKeyMap.set(key, item);
510
+ }));
511
+ }
512
+ else {
513
+ pageKeyMap.set(raw, item);
514
+ }
515
+ }
516
+ if (pending.length > 0) {
517
+ await Promise.all(pending);
518
+ }
519
+ // Update only selected items that appear on this page (O(selected_size))
520
+ for (const key of this._selectedItems.keys()) {
521
+ const newItem = pageKeyMap.get(key);
522
+ if (newItem !== undefined) {
523
+ this._selectedItems.set(key, newItem);
524
+ }
525
+ }
526
+ };
527
+ // -----------------------------------------------------------------
528
+ // highlighting
529
+ // -----------------------------------------------------------------
530
+ /** Toggles whether a row is highlighted (visually marked, not selected). */
531
+ toggleHighlightedRow = (item) => {
532
+ const raw = this.cachedKey(item);
533
+ if (raw instanceof Promise) {
534
+ return raw.then((key) => {
535
+ if (this._highlightedItems.has(key)) {
536
+ this._highlightedItems.delete(key);
537
+ }
538
+ else {
539
+ this._highlightedItems.set(key, item);
540
+ }
541
+ });
542
+ }
543
+ if (this._highlightedItems.has(raw)) {
544
+ this._highlightedItems.delete(raw);
545
+ }
546
+ else {
547
+ this._highlightedItems.set(raw, item);
548
+ }
549
+ };
550
+ /** Clears every highlighted row. */
551
+ resetHighlightedRows = () => {
552
+ this._highlightedItems.clear();
553
+ };
554
+ /**
555
+ * If every row on the current page is highlighted, clears the
556
+ * highlight; otherwise highlights every row on the current page.
557
+ */
558
+ onHighlightAll = () => {
559
+ if (this._allHighlighted) {
560
+ this._highlightedItems.clear();
561
+ return Promise.resolve();
562
+ }
563
+ else {
564
+ // `asyncForEach` is typed `Array<T>` (not `ReadonlyArray<T>`);
565
+ // the dependency thunk preserves immutability at the boundary
566
+ // so the cast is safe at runtime - the function only reads
567
+ // the array.
568
+ const items = this._deps.getCurrentPageData();
569
+ return asyncForEach(items, (item) => {
570
+ const raw = this.cachedKey(item);
571
+ if (raw instanceof Promise) {
572
+ return raw.then((key) => {
573
+ this._highlightedItems.set(key, item);
574
+ });
575
+ }
576
+ this._highlightedItems.set(raw, item);
577
+ return;
578
+ });
579
+ }
580
+ };
581
+ /**
582
+ * Compute whether every row in `[pageStartIndex, pageEndIndexExclusive)`
583
+ * is currently highlighted. Called by the parent's `_allHighlighted`
584
+ * `$effect` so the effect retains its `paginationRepo` reads
585
+ * directly while the row-walk logic lives here.
586
+ */
587
+ computeAllHighlightedInRange(pageStartIndex, pageEndIndexExclusive) {
588
+ const sortedData = this._deps.getSortedData();
589
+ for (let index = pageStartIndex; index < pageEndIndexExclusive; index++) {
590
+ const item = sortedData[index];
591
+ const raw = this.cachedKey(item);
592
+ if (raw instanceof Promise) {
593
+ return raw.then(async (key) => {
594
+ if (!this._highlightedItems.has(key)) {
595
+ return false;
596
+ }
597
+ for (let j = index + 1; j < pageEndIndexExclusive; j++) {
598
+ const r = this.cachedKey(sortedData[j]);
599
+ const k = r instanceof Promise ? await r : r;
600
+ if (!this._highlightedItems.has(k)) {
601
+ return false;
602
+ }
603
+ }
604
+ return true;
605
+ });
606
+ }
607
+ if (!this._highlightedItems.has(raw)) {
608
+ return false;
609
+ }
610
+ }
611
+ return true;
612
+ }
613
+ }