@cratis/scene.primereact 4.5.0 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/.storybook/preview.tsx +8 -1
  2. package/EnumerationResolution.ts +7 -0
  3. package/README.md +42 -10
  4. package/chart/ChartGallery.stories.tsx +63 -0
  5. package/chart/ChartType.ts +14 -0
  6. package/chart/ChartTypeResolution.ts +14 -0
  7. package/chart/PrimeChart.tsx +62 -0
  8. package/chart/chartHasData.ts +22 -0
  9. package/chart/chartTypeChoices.ts +32 -0
  10. package/chart/index.ts +7 -0
  11. package/chart/resolveChartType.ts +61 -0
  12. package/chart/useChart.ts +61 -0
  13. package/data/DataGallery.stories.tsx +6 -0
  14. package/data/DataScrollerRow.tsx +35 -0
  15. package/data/PrimeDataScroller.tsx +84 -0
  16. package/data/PrimeTreeTable.tsx +145 -0
  17. package/data/TreeTableCheckState.ts +9 -0
  18. package/data/TreeTableRow.ts +22 -0
  19. package/data/TreeTableRowView.tsx +86 -0
  20. package/data/TreeTableSelectionMode.ts +10 -0
  21. package/data/checkboxSelection.ts +92 -0
  22. package/data/index.ts +4 -0
  23. package/data/isSerializedLegacyElement.ts +30 -0
  24. package/data/readableValue.ts +32 -0
  25. package/data/selectionKeysOf.ts +40 -0
  26. package/data/treeTableRows.ts +32 -0
  27. package/data/useIncrementalLoad.ts +36 -0
  28. package/data/useLoadOnReach.ts +31 -0
  29. package/data/useTreeGridNavigation.ts +81 -0
  30. package/dist/cjs/chart/ChartType.js +18 -0
  31. package/dist/cjs/chart/ChartType.js.map +1 -0
  32. package/dist/cjs/chart/PrimeChart.js +92 -0
  33. package/dist/cjs/chart/PrimeChart.js.map +1 -0
  34. package/dist/cjs/chart/chartHasData.js +24 -0
  35. package/dist/cjs/chart/chartHasData.js.map +1 -0
  36. package/dist/cjs/chart/chartTypeChoices.js +43 -0
  37. package/dist/cjs/chart/chartTypeChoices.js.map +1 -0
  38. package/dist/cjs/chart/resolveChartType.js +69 -0
  39. package/dist/cjs/chart/resolveChartType.js.map +1 -0
  40. package/dist/cjs/chart/useChart.js +62 -0
  41. package/dist/cjs/chart/useChart.js.map +1 -0
  42. package/dist/cjs/data/DataScrollerRow.js +50 -0
  43. package/dist/cjs/data/DataScrollerRow.js.map +1 -0
  44. package/dist/cjs/data/PrimeDataScroller.js +120 -0
  45. package/dist/cjs/data/PrimeDataScroller.js.map +1 -0
  46. package/dist/cjs/data/PrimeTreeTable.js +217 -0
  47. package/dist/cjs/data/PrimeTreeTable.js.map +1 -0
  48. package/dist/cjs/data/TreeTableCheckState.js +13 -0
  49. package/dist/cjs/data/TreeTableCheckState.js.map +1 -0
  50. package/dist/cjs/data/TreeTableRowView.js +76 -0
  51. package/dist/cjs/data/TreeTableRowView.js.map +1 -0
  52. package/dist/cjs/data/TreeTableSelectionMode.js +14 -0
  53. package/dist/cjs/data/TreeTableSelectionMode.js.map +1 -0
  54. package/dist/cjs/data/checkboxSelection.js +88 -0
  55. package/dist/cjs/data/checkboxSelection.js.map +1 -0
  56. package/dist/cjs/data/isSerializedLegacyElement.js +30 -0
  57. package/dist/cjs/data/isSerializedLegacyElement.js.map +1 -0
  58. package/dist/cjs/data/readableValue.js +31 -0
  59. package/dist/cjs/data/readableValue.js.map +1 -0
  60. package/dist/cjs/data/selectionKeysOf.js +40 -0
  61. package/dist/cjs/data/selectionKeysOf.js.map +1 -0
  62. package/dist/cjs/data/treeTableRows.js +42 -0
  63. package/dist/cjs/data/treeTableRows.js.map +1 -0
  64. package/dist/cjs/data/useIncrementalLoad.js +46 -0
  65. package/dist/cjs/data/useIncrementalLoad.js.map +1 -0
  66. package/dist/cjs/data/useLoadOnReach.js +42 -0
  67. package/dist/cjs/data/useLoadOnReach.js.map +1 -0
  68. package/dist/cjs/data/useTreeGridNavigation.js +75 -0
  69. package/dist/cjs/data/useTreeGridNavigation.js.map +1 -0
  70. package/dist/cjs/editor/PrimeEditor.js +96 -0
  71. package/dist/cjs/editor/PrimeEditor.js.map +1 -0
  72. package/dist/cjs/editor/QuillLoaderContext.js +10 -0
  73. package/dist/cjs/editor/QuillLoaderContext.js.map +1 -0
  74. package/dist/cjs/editor/QuillLoaderProvider.js +21 -0
  75. package/dist/cjs/editor/QuillLoaderProvider.js.map +1 -0
  76. package/dist/cjs/editor/applyHtml.js +25 -0
  77. package/dist/cjs/editor/applyHtml.js.map +1 -0
  78. package/dist/cjs/editor/characterCount.js +10 -0
  79. package/dist/cjs/editor/characterCount.js.map +1 -0
  80. package/dist/cjs/editor/htmlToPlainText.js +101 -0
  81. package/dist/cjs/editor/htmlToPlainText.js.map +1 -0
  82. package/dist/cjs/editor/renderSafeNodes.js +35 -0
  83. package/dist/cjs/editor/renderSafeNodes.js.map +1 -0
  84. package/dist/cjs/editor/safeUrls.js +44 -0
  85. package/dist/cjs/editor/safeUrls.js.map +1 -0
  86. package/dist/cjs/editor/sanitizeHtml.js +140 -0
  87. package/dist/cjs/editor/sanitizeHtml.js.map +1 -0
  88. package/dist/cjs/editor/serializeSafeNodes.js +33 -0
  89. package/dist/cjs/editor/serializeSafeNodes.js.map +1 -0
  90. package/dist/cjs/editor/toolbarLayout.js +35 -0
  91. package/dist/cjs/editor/toolbarLayout.js.map +1 -0
  92. package/dist/cjs/editor/useQuillEditor.js +137 -0
  93. package/dist/cjs/editor/useQuillEditor.js.map +1 -0
  94. package/dist/cjs/file/FileUploadContext.js +13 -0
  95. package/dist/cjs/file/FileUploadContext.js.map +1 -0
  96. package/dist/cjs/file/FileUploadHandlerProvider.js +25 -0
  97. package/dist/cjs/file/FileUploadHandlerProvider.js.map +1 -0
  98. package/dist/cjs/file/FileUploadMode.js +13 -0
  99. package/dist/cjs/file/FileUploadMode.js.map +1 -0
  100. package/dist/cjs/file/PrimeFileUpload.js +161 -0
  101. package/dist/cjs/file/PrimeFileUpload.js.map +1 -0
  102. package/dist/cjs/file/postFiles.js +31 -0
  103. package/dist/cjs/file/postFiles.js.map +1 -0
  104. package/dist/cjs/file/resolveUploadTarget.js +68 -0
  105. package/dist/cjs/file/resolveUploadTarget.js.map +1 -0
  106. package/dist/cjs/file/useUploadSession.js +62 -0
  107. package/dist/cjs/file/useUploadSession.js.map +1 -0
  108. package/dist/cjs/form/MultiStateGlyph.js +59 -0
  109. package/dist/cjs/form/MultiStateGlyph.js.map +1 -0
  110. package/dist/cjs/form/PrimeMultiStateCheckbox.js +123 -0
  111. package/dist/cjs/form/PrimeMultiStateCheckbox.js.map +1 -0
  112. package/dist/cjs/form/multiStateOptions.js +77 -0
  113. package/dist/cjs/form/multiStateOptions.js.map +1 -0
  114. package/dist/cjs/form/multiStateStates.js +32 -0
  115. package/dist/cjs/form/multiStateStates.js.map +1 -0
  116. package/dist/cjs/form/useMultiStateSelection.js +51 -0
  117. package/dist/cjs/form/useMultiStateSelection.js.map +1 -0
  118. package/dist/cjs/index.js +44 -0
  119. package/dist/cjs/index.js.map +1 -1
  120. package/dist/cjs/legacyEnumerationChoices.js +39 -0
  121. package/dist/cjs/legacyEnumerationChoices.js.map +1 -0
  122. package/dist/cjs/loadQuill/index.js +22 -0
  123. package/dist/cjs/loadQuill/index.js.map +1 -0
  124. package/dist/cjs/primeReactComponents.js +15 -0
  125. package/dist/cjs/primeReactComponents.js.map +1 -1
  126. package/dist/cjs/primeReactDescriptors.js +400 -0
  127. package/dist/cjs/primeReactDescriptors.js.map +1 -0
  128. package/dist/cjs/primeReactPackage.js +8 -0
  129. package/dist/cjs/primeReactPackage.js.map +1 -1
  130. package/dist/cjs/properties.js +11 -0
  131. package/dist/cjs/properties.js.map +1 -1
  132. package/dist/cjs/resolveEnumeration.js +55 -0
  133. package/dist/cjs/resolveEnumeration.js.map +1 -0
  134. package/dist/cjs/structurallyEqual.js +27 -0
  135. package/dist/cjs/structurallyEqual.js.map +1 -0
  136. package/dist/cjs/treeNodes.js +42 -7
  137. package/dist/cjs/treeNodes.js.map +1 -1
  138. package/dist/cjs/useResettingState.js +47 -0
  139. package/dist/cjs/useResettingState.js.map +1 -0
  140. package/dist/cjs/useStructuralValue.js +20 -0
  141. package/dist/cjs/useStructuralValue.js.map +1 -0
  142. package/dist/esm/EnumerationResolution.d.ts +9 -0
  143. package/dist/esm/EnumerationResolution.d.ts.map +1 -0
  144. package/dist/esm/EnumerationResolution.js +2 -0
  145. package/dist/esm/EnumerationResolution.js.map +1 -0
  146. package/dist/esm/chart/ChartGallery.stories.d.ts +14 -0
  147. package/dist/esm/chart/ChartGallery.stories.d.ts.map +1 -0
  148. package/dist/esm/chart/ChartGallery.stories.js +47 -0
  149. package/dist/esm/chart/ChartGallery.stories.js.map +1 -0
  150. package/dist/esm/chart/ChartType.d.ts +11 -0
  151. package/dist/esm/chart/ChartType.d.ts.map +1 -0
  152. package/dist/esm/chart/ChartType.js +16 -0
  153. package/dist/esm/chart/ChartType.js.map +1 -0
  154. package/dist/esm/chart/ChartTypeResolution.d.ts +10 -0
  155. package/dist/esm/chart/ChartTypeResolution.d.ts.map +1 -0
  156. package/dist/esm/chart/ChartTypeResolution.js +2 -0
  157. package/dist/esm/chart/ChartTypeResolution.js.map +1 -0
  158. package/dist/esm/chart/PrimeChart.d.ts +3 -0
  159. package/dist/esm/chart/PrimeChart.d.ts.map +1 -0
  160. package/dist/esm/chart/PrimeChart.js +90 -0
  161. package/dist/esm/chart/PrimeChart.js.map +1 -0
  162. package/dist/esm/chart/chartHasData.d.ts +2 -0
  163. package/dist/esm/chart/chartHasData.d.ts.map +1 -0
  164. package/dist/esm/chart/chartHasData.js +22 -0
  165. package/dist/esm/chart/chartHasData.js.map +1 -0
  166. package/dist/esm/chart/chartTypeChoices.d.ts +3 -0
  167. package/dist/esm/chart/chartTypeChoices.d.ts.map +1 -0
  168. package/dist/esm/chart/chartTypeChoices.js +41 -0
  169. package/dist/esm/chart/chartTypeChoices.js.map +1 -0
  170. package/dist/esm/chart/index.d.ts +5 -0
  171. package/dist/esm/chart/index.d.ts.map +1 -0
  172. package/dist/esm/chart/index.js +5 -0
  173. package/dist/esm/chart/index.js.map +1 -0
  174. package/dist/esm/chart/resolveChartType.d.ts +6 -0
  175. package/dist/esm/chart/resolveChartType.d.ts.map +1 -0
  176. package/dist/esm/chart/resolveChartType.js +66 -0
  177. package/dist/esm/chart/resolveChartType.js.map +1 -0
  178. package/dist/esm/chart/useChart.d.ts +4 -0
  179. package/dist/esm/chart/useChart.d.ts.map +1 -0
  180. package/dist/esm/chart/useChart.js +60 -0
  181. package/dist/esm/chart/useChart.js.map +1 -0
  182. package/dist/esm/data/DataGallery.stories.d.ts.map +1 -1
  183. package/dist/esm/data/DataGallery.stories.js +6 -0
  184. package/dist/esm/data/DataGallery.stories.js.map +1 -1
  185. package/dist/esm/data/DataScrollerRow.d.ts +4 -0
  186. package/dist/esm/data/DataScrollerRow.d.ts.map +1 -0
  187. package/dist/esm/data/DataScrollerRow.js +48 -0
  188. package/dist/esm/data/DataScrollerRow.js.map +1 -0
  189. package/dist/esm/data/PrimeDataScroller.d.ts +3 -0
  190. package/dist/esm/data/PrimeDataScroller.d.ts.map +1 -0
  191. package/dist/esm/data/PrimeDataScroller.js +118 -0
  192. package/dist/esm/data/PrimeDataScroller.js.map +1 -0
  193. package/dist/esm/data/PrimeTreeTable.d.ts +3 -0
  194. package/dist/esm/data/PrimeTreeTable.d.ts.map +1 -0
  195. package/dist/esm/data/PrimeTreeTable.js +215 -0
  196. package/dist/esm/data/PrimeTreeTable.js.map +1 -0
  197. package/dist/esm/data/TreeTableCheckState.d.ts +6 -0
  198. package/dist/esm/data/TreeTableCheckState.d.ts.map +1 -0
  199. package/dist/esm/data/TreeTableCheckState.js +11 -0
  200. package/dist/esm/data/TreeTableCheckState.js.map +1 -0
  201. package/dist/esm/data/TreeTableRow.d.ts +10 -0
  202. package/dist/esm/data/TreeTableRow.d.ts.map +1 -0
  203. package/dist/esm/data/TreeTableRow.js +2 -0
  204. package/dist/esm/data/TreeTableRow.js.map +1 -0
  205. package/dist/esm/data/TreeTableRowView.d.ts +21 -0
  206. package/dist/esm/data/TreeTableRowView.d.ts.map +1 -0
  207. package/dist/esm/data/TreeTableRowView.js +74 -0
  208. package/dist/esm/data/TreeTableRowView.js.map +1 -0
  209. package/dist/esm/data/TreeTableSelectionMode.d.ts +7 -0
  210. package/dist/esm/data/TreeTableSelectionMode.d.ts.map +1 -0
  211. package/dist/esm/data/TreeTableSelectionMode.js +12 -0
  212. package/dist/esm/data/TreeTableSelectionMode.js.map +1 -0
  213. package/dist/esm/data/checkboxSelection.d.ts +9 -0
  214. package/dist/esm/data/checkboxSelection.d.ts.map +1 -0
  215. package/dist/esm/data/checkboxSelection.js +85 -0
  216. package/dist/esm/data/checkboxSelection.js.map +1 -0
  217. package/dist/esm/data/index.d.ts +4 -0
  218. package/dist/esm/data/index.d.ts.map +1 -1
  219. package/dist/esm/data/index.js +4 -0
  220. package/dist/esm/data/index.js.map +1 -1
  221. package/dist/esm/data/isSerializedLegacyElement.d.ts +3 -0
  222. package/dist/esm/data/isSerializedLegacyElement.d.ts.map +1 -0
  223. package/dist/esm/data/isSerializedLegacyElement.js +27 -0
  224. package/dist/esm/data/isSerializedLegacyElement.js.map +1 -0
  225. package/dist/esm/data/readableValue.d.ts +2 -0
  226. package/dist/esm/data/readableValue.d.ts.map +1 -0
  227. package/dist/esm/data/readableValue.js +29 -0
  228. package/dist/esm/data/readableValue.js.map +1 -0
  229. package/dist/esm/data/selectionKeysOf.d.ts +2 -0
  230. package/dist/esm/data/selectionKeysOf.d.ts.map +1 -0
  231. package/dist/esm/data/selectionKeysOf.js +38 -0
  232. package/dist/esm/data/selectionKeysOf.js.map +1 -0
  233. package/dist/esm/data/treeTableRows.d.ts +6 -0
  234. package/dist/esm/data/treeTableRows.d.ts.map +1 -0
  235. package/dist/esm/data/treeTableRows.js +38 -0
  236. package/dist/esm/data/treeTableRows.js.map +1 -0
  237. package/dist/esm/data/useIncrementalLoad.d.ts +6 -0
  238. package/dist/esm/data/useIncrementalLoad.d.ts.map +1 -0
  239. package/dist/esm/data/useIncrementalLoad.js +44 -0
  240. package/dist/esm/data/useIncrementalLoad.js.map +1 -0
  241. package/dist/esm/data/useLoadOnReach.d.ts +3 -0
  242. package/dist/esm/data/useLoadOnReach.d.ts.map +1 -0
  243. package/dist/esm/data/useLoadOnReach.js +40 -0
  244. package/dist/esm/data/useLoadOnReach.js.map +1 -0
  245. package/dist/esm/data/useTreeGridNavigation.d.ts +17 -0
  246. package/dist/esm/data/useTreeGridNavigation.d.ts.map +1 -0
  247. package/dist/esm/data/useTreeGridNavigation.js +73 -0
  248. package/dist/esm/data/useTreeGridNavigation.js.map +1 -0
  249. package/dist/esm/editor/PrimeEditor.d.ts +3 -0
  250. package/dist/esm/editor/PrimeEditor.d.ts.map +1 -0
  251. package/dist/esm/editor/PrimeEditor.js +94 -0
  252. package/dist/esm/editor/PrimeEditor.js.map +1 -0
  253. package/dist/esm/editor/QuillConstructor.d.ts +4 -0
  254. package/dist/esm/editor/QuillConstructor.d.ts.map +1 -0
  255. package/dist/esm/editor/QuillConstructor.js +2 -0
  256. package/dist/esm/editor/QuillConstructor.js.map +1 -0
  257. package/dist/esm/editor/QuillEditorOptions.d.ts +13 -0
  258. package/dist/esm/editor/QuillEditorOptions.d.ts.map +1 -0
  259. package/dist/esm/editor/QuillEditorOptions.js +2 -0
  260. package/dist/esm/editor/QuillEditorOptions.js.map +1 -0
  261. package/dist/esm/editor/QuillEditorState.d.ts +6 -0
  262. package/dist/esm/editor/QuillEditorState.d.ts.map +1 -0
  263. package/dist/esm/editor/QuillEditorState.js +2 -0
  264. package/dist/esm/editor/QuillEditorState.js.map +1 -0
  265. package/dist/esm/editor/QuillInstance.d.ts +16 -0
  266. package/dist/esm/editor/QuillInstance.d.ts.map +1 -0
  267. package/dist/esm/editor/QuillInstance.js +2 -0
  268. package/dist/esm/editor/QuillInstance.js.map +1 -0
  269. package/dist/esm/editor/QuillLoader.d.ts +5 -0
  270. package/dist/esm/editor/QuillLoader.d.ts.map +1 -0
  271. package/dist/esm/editor/QuillLoader.js +2 -0
  272. package/dist/esm/editor/QuillLoader.js.map +1 -0
  273. package/dist/esm/editor/QuillLoaderContext.d.ts +3 -0
  274. package/dist/esm/editor/QuillLoaderContext.d.ts.map +1 -0
  275. package/dist/esm/editor/QuillLoaderContext.js +8 -0
  276. package/dist/esm/editor/QuillLoaderContext.js.map +1 -0
  277. package/dist/esm/editor/QuillLoaderProvider.d.ts +8 -0
  278. package/dist/esm/editor/QuillLoaderProvider.d.ts.map +1 -0
  279. package/dist/esm/editor/QuillLoaderProvider.js +19 -0
  280. package/dist/esm/editor/QuillLoaderProvider.js.map +1 -0
  281. package/dist/esm/editor/QuillOptions.d.ts +9 -0
  282. package/dist/esm/editor/QuillOptions.d.ts.map +1 -0
  283. package/dist/esm/editor/QuillOptions.js +2 -0
  284. package/dist/esm/editor/QuillOptions.js.map +1 -0
  285. package/dist/esm/editor/SafeElement.d.ts +7 -0
  286. package/dist/esm/editor/SafeElement.d.ts.map +1 -0
  287. package/dist/esm/editor/SafeElement.js +2 -0
  288. package/dist/esm/editor/SafeElement.js.map +1 -0
  289. package/dist/esm/editor/SafeNode.d.ts +3 -0
  290. package/dist/esm/editor/SafeNode.d.ts.map +1 -0
  291. package/dist/esm/editor/SafeNode.js +2 -0
  292. package/dist/esm/editor/SafeNode.js.map +1 -0
  293. package/dist/esm/editor/applyHtml.d.ts +3 -0
  294. package/dist/esm/editor/applyHtml.d.ts.map +1 -0
  295. package/dist/esm/editor/applyHtml.js +23 -0
  296. package/dist/esm/editor/applyHtml.js.map +1 -0
  297. package/dist/esm/editor/characterCount.d.ts +3 -0
  298. package/dist/esm/editor/characterCount.d.ts.map +1 -0
  299. package/dist/esm/editor/characterCount.js +8 -0
  300. package/dist/esm/editor/characterCount.js.map +1 -0
  301. package/dist/esm/editor/htmlToPlainText.d.ts +2 -0
  302. package/dist/esm/editor/htmlToPlainText.d.ts.map +1 -0
  303. package/dist/esm/editor/htmlToPlainText.js +99 -0
  304. package/dist/esm/editor/htmlToPlainText.js.map +1 -0
  305. package/dist/esm/editor/index.d.ts +14 -0
  306. package/dist/esm/editor/index.d.ts.map +1 -0
  307. package/dist/esm/editor/index.js +14 -0
  308. package/dist/esm/editor/index.js.map +1 -0
  309. package/dist/esm/editor/renderSafeNodes.d.ts +4 -0
  310. package/dist/esm/editor/renderSafeNodes.d.ts.map +1 -0
  311. package/dist/esm/editor/renderSafeNodes.js +33 -0
  312. package/dist/esm/editor/renderSafeNodes.js.map +1 -0
  313. package/dist/esm/editor/safeUrls.d.ts +3 -0
  314. package/dist/esm/editor/safeUrls.d.ts.map +1 -0
  315. package/dist/esm/editor/safeUrls.js +41 -0
  316. package/dist/esm/editor/safeUrls.js.map +1 -0
  317. package/dist/esm/editor/sanitizeHtml.d.ts +3 -0
  318. package/dist/esm/editor/sanitizeHtml.d.ts.map +1 -0
  319. package/dist/esm/editor/sanitizeHtml.js +138 -0
  320. package/dist/esm/editor/sanitizeHtml.js.map +1 -0
  321. package/dist/esm/editor/serializeSafeNodes.d.ts +3 -0
  322. package/dist/esm/editor/serializeSafeNodes.d.ts.map +1 -0
  323. package/dist/esm/editor/serializeSafeNodes.js +31 -0
  324. package/dist/esm/editor/serializeSafeNodes.js.map +1 -0
  325. package/dist/esm/editor/toolbarLayout.d.ts +2 -0
  326. package/dist/esm/editor/toolbarLayout.d.ts.map +1 -0
  327. package/dist/esm/editor/toolbarLayout.js +33 -0
  328. package/dist/esm/editor/toolbarLayout.js.map +1 -0
  329. package/dist/esm/editor/useQuillEditor.d.ts +4 -0
  330. package/dist/esm/editor/useQuillEditor.d.ts.map +1 -0
  331. package/dist/esm/editor/useQuillEditor.js +135 -0
  332. package/dist/esm/editor/useQuillEditor.js.map +1 -0
  333. package/dist/esm/file/FileGallery.stories.d.ts +19 -0
  334. package/dist/esm/file/FileGallery.stories.d.ts.map +1 -0
  335. package/dist/esm/file/FileGallery.stories.js +23 -0
  336. package/dist/esm/file/FileGallery.stories.js.map +1 -0
  337. package/dist/esm/file/FileUploadContext.d.ts +7 -0
  338. package/dist/esm/file/FileUploadContext.d.ts.map +1 -0
  339. package/dist/esm/file/FileUploadContext.js +11 -0
  340. package/dist/esm/file/FileUploadContext.js.map +1 -0
  341. package/dist/esm/file/FileUploadHandler.d.ts +4 -0
  342. package/dist/esm/file/FileUploadHandler.d.ts.map +1 -0
  343. package/dist/esm/file/FileUploadHandler.js +2 -0
  344. package/dist/esm/file/FileUploadHandler.js.map +1 -0
  345. package/dist/esm/file/FileUploadHandlerProvider.d.ts +9 -0
  346. package/dist/esm/file/FileUploadHandlerProvider.d.ts.map +1 -0
  347. package/dist/esm/file/FileUploadHandlerProvider.js +23 -0
  348. package/dist/esm/file/FileUploadHandlerProvider.js.map +1 -0
  349. package/dist/esm/file/FileUploadMode.d.ts +6 -0
  350. package/dist/esm/file/FileUploadMode.d.ts.map +1 -0
  351. package/dist/esm/file/FileUploadMode.js +11 -0
  352. package/dist/esm/file/FileUploadMode.js.map +1 -0
  353. package/dist/esm/file/PrimeFileUpload.d.ts +3 -0
  354. package/dist/esm/file/PrimeFileUpload.d.ts.map +1 -0
  355. package/dist/esm/file/PrimeFileUpload.js +159 -0
  356. package/dist/esm/file/PrimeFileUpload.js.map +1 -0
  357. package/dist/esm/file/UploadStatus.d.ts +5 -0
  358. package/dist/esm/file/UploadStatus.d.ts.map +1 -0
  359. package/dist/esm/file/UploadStatus.js +2 -0
  360. package/dist/esm/file/UploadStatus.js.map +1 -0
  361. package/dist/esm/file/UploadTarget.d.ts +8 -0
  362. package/dist/esm/file/UploadTarget.d.ts.map +1 -0
  363. package/dist/esm/file/UploadTarget.js +2 -0
  364. package/dist/esm/file/UploadTarget.js.map +1 -0
  365. package/dist/esm/file/index.d.ts +7 -0
  366. package/dist/esm/file/index.d.ts.map +1 -0
  367. package/dist/esm/file/index.js +7 -0
  368. package/dist/esm/file/index.js.map +1 -0
  369. package/dist/esm/file/postFiles.d.ts +2 -0
  370. package/dist/esm/file/postFiles.d.ts.map +1 -0
  371. package/dist/esm/file/postFiles.js +29 -0
  372. package/dist/esm/file/postFiles.js.map +1 -0
  373. package/dist/esm/file/resolveUploadTarget.d.ts +3 -0
  374. package/dist/esm/file/resolveUploadTarget.d.ts.map +1 -0
  375. package/dist/esm/file/resolveUploadTarget.js +66 -0
  376. package/dist/esm/file/resolveUploadTarget.js.map +1 -0
  377. package/dist/esm/file/useUploadSession.d.ts +10 -0
  378. package/dist/esm/file/useUploadSession.d.ts.map +1 -0
  379. package/dist/esm/file/useUploadSession.js +60 -0
  380. package/dist/esm/file/useUploadSession.js.map +1 -0
  381. package/dist/esm/form/FormGallery.stories.d.ts.map +1 -1
  382. package/dist/esm/form/FormGallery.stories.js +9 -0
  383. package/dist/esm/form/FormGallery.stories.js.map +1 -1
  384. package/dist/esm/form/MultiStateGlyph.d.ts +8 -0
  385. package/dist/esm/form/MultiStateGlyph.d.ts.map +1 -0
  386. package/dist/esm/form/MultiStateGlyph.js +57 -0
  387. package/dist/esm/form/MultiStateGlyph.js.map +1 -0
  388. package/dist/esm/form/MultiStateOption.d.ts +7 -0
  389. package/dist/esm/form/MultiStateOption.d.ts.map +1 -0
  390. package/dist/esm/form/MultiStateOption.js +2 -0
  391. package/dist/esm/form/MultiStateOption.js.map +1 -0
  392. package/dist/esm/form/PrimeMultiStateCheckbox.d.ts +3 -0
  393. package/dist/esm/form/PrimeMultiStateCheckbox.d.ts.map +1 -0
  394. package/dist/esm/form/PrimeMultiStateCheckbox.js +121 -0
  395. package/dist/esm/form/PrimeMultiStateCheckbox.js.map +1 -0
  396. package/dist/esm/form/index.d.ts +1 -0
  397. package/dist/esm/form/index.d.ts.map +1 -1
  398. package/dist/esm/form/index.js +1 -0
  399. package/dist/esm/form/index.js.map +1 -1
  400. package/dist/esm/form/multiStateOptions.d.ts +4 -0
  401. package/dist/esm/form/multiStateOptions.d.ts.map +1 -0
  402. package/dist/esm/form/multiStateOptions.js +75 -0
  403. package/dist/esm/form/multiStateOptions.js.map +1 -0
  404. package/dist/esm/form/multiStateStates.d.ts +4 -0
  405. package/dist/esm/form/multiStateStates.d.ts.map +1 -0
  406. package/dist/esm/form/multiStateStates.js +30 -0
  407. package/dist/esm/form/multiStateStates.js.map +1 -0
  408. package/dist/esm/form/useMultiStateSelection.d.ts +6 -0
  409. package/dist/esm/form/useMultiStateSelection.d.ts.map +1 -0
  410. package/dist/esm/form/useMultiStateSelection.js +49 -0
  411. package/dist/esm/form/useMultiStateSelection.js.map +1 -0
  412. package/dist/esm/index.d.ts +4 -0
  413. package/dist/esm/index.d.ts.map +1 -1
  414. package/dist/esm/index.js +22 -2
  415. package/dist/esm/index.js.map +1 -1
  416. package/dist/esm/legacyEnumerationChoices.d.ts +3 -0
  417. package/dist/esm/legacyEnumerationChoices.d.ts.map +1 -0
  418. package/dist/esm/legacyEnumerationChoices.js +37 -0
  419. package/dist/esm/legacyEnumerationChoices.js.map +1 -0
  420. package/dist/esm/loadQuill/index.d.ts +3 -0
  421. package/dist/esm/loadQuill/index.d.ts.map +1 -0
  422. package/dist/esm/loadQuill/index.js +20 -0
  423. package/dist/esm/loadQuill/index.js.map +1 -0
  424. package/dist/esm/primeReactComponents.d.ts.map +1 -1
  425. package/dist/esm/primeReactComponents.js +15 -0
  426. package/dist/esm/primeReactComponents.js.map +1 -1
  427. package/dist/esm/primeReactDescriptors.d.ts +3 -0
  428. package/dist/esm/primeReactDescriptors.d.ts.map +1 -0
  429. package/dist/esm/primeReactDescriptors.js +398 -0
  430. package/dist/esm/primeReactDescriptors.js.map +1 -0
  431. package/dist/esm/primeReactPackage.d.ts.map +1 -1
  432. package/dist/esm/primeReactPackage.js +8 -0
  433. package/dist/esm/primeReactPackage.js.map +1 -1
  434. package/dist/esm/properties.d.ts +1 -0
  435. package/dist/esm/properties.d.ts.map +1 -1
  436. package/dist/esm/properties.js +11 -1
  437. package/dist/esm/properties.js.map +1 -1
  438. package/dist/esm/resolveEnumeration.d.ts +3 -0
  439. package/dist/esm/resolveEnumeration.d.ts.map +1 -0
  440. package/dist/esm/resolveEnumeration.js +53 -0
  441. package/dist/esm/resolveEnumeration.js.map +1 -0
  442. package/dist/esm/structurallyEqual.d.ts +2 -0
  443. package/dist/esm/structurallyEqual.d.ts.map +1 -0
  444. package/dist/esm/structurallyEqual.js +25 -0
  445. package/dist/esm/structurallyEqual.js.map +1 -0
  446. package/dist/esm/treeNodes.d.ts +2 -1
  447. package/dist/esm/treeNodes.d.ts.map +1 -1
  448. package/dist/esm/treeNodes.js +42 -8
  449. package/dist/esm/treeNodes.js.map +1 -1
  450. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  451. package/dist/esm/useResettingState.d.ts +3 -0
  452. package/dist/esm/useResettingState.d.ts.map +1 -0
  453. package/dist/esm/useResettingState.js +45 -0
  454. package/dist/esm/useResettingState.js.map +1 -0
  455. package/dist/esm/useStructuralValue.d.ts +2 -0
  456. package/dist/esm/useStructuralValue.d.ts.map +1 -0
  457. package/dist/esm/useStructuralValue.js +18 -0
  458. package/dist/esm/useStructuralValue.js.map +1 -0
  459. package/editor/PrimeEditor.tsx +83 -0
  460. package/editor/QuillConstructor.ts +8 -0
  461. package/editor/QuillEditorOptions.ts +29 -0
  462. package/editor/QuillEditorState.ts +14 -0
  463. package/editor/QuillInstance.ts +27 -0
  464. package/editor/QuillLoader.ts +13 -0
  465. package/editor/QuillLoaderContext.ts +8 -0
  466. package/editor/QuillLoaderProvider.tsx +24 -0
  467. package/editor/QuillOptions.ts +10 -0
  468. package/editor/SafeElement.ts +15 -0
  469. package/editor/SafeNode.ts +7 -0
  470. package/editor/applyHtml.ts +21 -0
  471. package/editor/characterCount.ts +9 -0
  472. package/editor/htmlToPlainText.ts +74 -0
  473. package/editor/index.ts +16 -0
  474. package/editor/renderSafeNodes.tsx +26 -0
  475. package/editor/safeUrls.ts +43 -0
  476. package/editor/sanitizeHtml.ts +94 -0
  477. package/editor/serializeSafeNodes.ts +26 -0
  478. package/editor/toolbarLayout.ts +10 -0
  479. package/editor/useQuillEditor.ts +114 -0
  480. package/file/FileGallery.stories.tsx +32 -0
  481. package/file/FileUploadContext.ts +17 -0
  482. package/file/FileUploadHandler.ts +15 -0
  483. package/file/FileUploadHandlerProvider.tsx +33 -0
  484. package/file/FileUploadMode.ts +9 -0
  485. package/file/PrimeFileUpload.tsx +129 -0
  486. package/file/UploadStatus.ts +9 -0
  487. package/file/UploadTarget.ts +12 -0
  488. package/file/index.ts +9 -0
  489. package/file/postFiles.ts +23 -0
  490. package/file/resolveUploadTarget.ts +61 -0
  491. package/file/useUploadSession.ts +67 -0
  492. package/form/FormGallery.stories.tsx +9 -0
  493. package/form/MultiStateGlyph.tsx +55 -0
  494. package/form/MultiStateOption.ts +17 -0
  495. package/form/PrimeMultiStateCheckbox.tsx +101 -0
  496. package/form/index.ts +1 -0
  497. package/form/multiStateOptions.ts +78 -0
  498. package/form/multiStateStates.ts +23 -0
  499. package/form/useMultiStateSelection.ts +48 -0
  500. package/index.ts +4 -0
  501. package/legacyEnumerationChoices.ts +35 -0
  502. package/loadQuill/index.ts +21 -0
  503. package/package.json +27 -7
  504. package/primeReactComponents.ts +12 -0
  505. package/primeReactDescriptors.ts +111 -0
  506. package/primeReactPackage.ts +5 -3
  507. package/primeReactTheme.css +69 -0
  508. package/properties.ts +14 -0
  509. package/resolveEnumeration.ts +50 -0
  510. package/structurallyEqual.ts +29 -0
  511. package/treeNodes.ts +44 -6
  512. package/useResettingState.ts +34 -0
  513. package/useStructuralValue.ts +17 -0
@@ -0,0 +1,215 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useMemo, useState, useEffect } from 'react';
3
+ import { arrayProperty, numberProperty, booleanProperty, stringProperty } from '../properties.js';
4
+ import { resolveEnumeration } from '../resolveEnumeration.js';
5
+ import { toTreeNodes, countUnreadableEntries } from '../treeNodes.js';
6
+ import { useResettingState } from '../useResettingState.js';
7
+ import { useStructuralValue } from '../useStructuralValue.js';
8
+ import { TreeTableRowView } from './TreeTableRowView.js';
9
+ import { TreeTableSelectionMode } from './TreeTableSelectionMode.js';
10
+ import { columnDefinitions } from './columnDefinitions.js';
11
+ import { settleSelection, toggleCheckbox } from './checkboxSelection.js';
12
+ import { isSerializedLegacyElement, legacyElementMessage } from './isSerializedLegacyElement.js';
13
+ import { selectionKeysOf } from './selectionKeysOf.js';
14
+ import { expandedKeysOf, visibleRows } from './treeTableRows.js';
15
+ import { useTreeGridNavigation } from './useTreeGridNavigation.js';
16
+
17
+ const labelColumn = [
18
+ {
19
+ field: 'label',
20
+ header: 'Label',
21
+ sortable: false
22
+ }
23
+ ];
24
+ /**
25
+ * The `PrimeReact:treeTable` component, an ARIA tree grid over the canonical Scene node and column properties.
26
+ *
27
+ * `items` is an array of nodes - strings, numbers, or records with `key`, `label`, `data`, `children`,
28
+ * `expanded` and `selectable` - and the columns come from nested `column` elements, a `columns` property or the
29
+ * fields of the first row's `data`, in that order (see `columnDefinitions`). Serialized legacy UI elements in
30
+ * `items` or `columns` are refused with a visible message; see the package documentation for how they map to
31
+ * canonical slots.
32
+ *
33
+ * - Selection follows the authored `selection` (keys, numbers, `{ key }` objects or PrimeReact's key map) and
34
+ * starts over when it changes; expansion starts from the authored `expanded` flags the same way. An unrelated
35
+ * property edit leaves what the user did alone.
36
+ * - In checkbox mode a parent checks and unchecks its subtree and shows a partial state when only some of it is
37
+ * checked.
38
+ * - The rows form a `treegrid` with a roving tab index and the usual arrow-key navigation.
39
+ * - Object cell values are shown readably, never as `[object Object]`.
40
+ */ function PrimeTreeTable({ element, interactions }) {
41
+ const authoredItems = useStructuralValue(arrayProperty(element, 'items'));
42
+ const items = useMemo(()=>authoredItems.filter((entry)=>!isSerializedLegacyElement(entry)), [
43
+ authoredItems
44
+ ]);
45
+ const nodes = useMemo(()=>toTreeNodes(items), [
46
+ items
47
+ ]);
48
+ const modeResolution = resolveEnumeration('selectionMode', element.properties.selectionMode, TreeTableSelectionMode, TreeTableSelectionMode.None);
49
+ const mode = modeResolution.isValid ? modeResolution.value : TreeTableSelectionMode.None;
50
+ const enabled = element.isEnabled;
51
+ const pageSize = Math.max(Math.floor(numberProperty(element, 'rows', 10)), 1);
52
+ const paginator = booleanProperty(element, 'paginator', false);
53
+ const [expanded, setExpanded] = useResettingState(expandedKeysOf(nodes), ()=>new Set(expandedKeysOf(nodes)));
54
+ const [requested, setRequested] = useResettingState(element.properties.selection, ()=>selectionKeysOf(element.properties.selection));
55
+ const [page, setPage] = useState(0);
56
+ const pageCount = Math.max(Math.ceil(nodes.length / pageSize), 1);
57
+ const currentPage = Math.min(page, pageCount - 1);
58
+ const rows = useMemo(()=>visibleRows(paginator ? nodes.slice(currentPage * pageSize, (currentPage + 1) * pageSize) : nodes, expanded), [
59
+ nodes,
60
+ paginator,
61
+ currentPage,
62
+ pageSize,
63
+ expanded
64
+ ]);
65
+ const settled = useMemo(()=>mode === TreeTableSelectionMode.Checkbox ? settleSelection(nodes, requested) : {
66
+ checked: requested,
67
+ states: new Map()
68
+ }, [
69
+ mode,
70
+ nodes,
71
+ requested
72
+ ]);
73
+ const columns = useMemo(()=>{
74
+ const first = rows.find((row)=>typeof row.node.data === 'object' && row.node.data !== null && !Array.isArray(row.node.data))?.node.data;
75
+ const defined = columnDefinitions(element, first === undefined ? [] : [
76
+ first
77
+ ]);
78
+ return defined.length > 0 ? defined : labelColumn;
79
+ }, [
80
+ element,
81
+ rows
82
+ ]);
83
+ useEffect(()=>setPage((current)=>Math.min(current, pageCount - 1)), [
84
+ pageCount
85
+ ]);
86
+ const toggle = (key)=>{
87
+ if (enabled) setExpanded((current)=>{
88
+ const next = new Set(current);
89
+ if (next.has(key)) next.delete(key);
90
+ else next.add(key);
91
+ return next;
92
+ });
93
+ };
94
+ const select = (row)=>{
95
+ if (mode === TreeTableSelectionMode.None || !enabled || row.node.selectable === false) return;
96
+ if (mode === TreeTableSelectionMode.Checkbox) {
97
+ setRequested(toggleCheckbox(nodes, settled, row.node));
98
+ } else if (mode === TreeTableSelectionMode.Single) {
99
+ setRequested(new Set([
100
+ row.key
101
+ ]));
102
+ } else {
103
+ const next = new Set(settled.checked);
104
+ if (next.has(row.key)) next.delete(row.key);
105
+ else next.add(row.key);
106
+ setRequested(next);
107
+ }
108
+ interactions?.onSelect?.();
109
+ interactions?.onChange?.();
110
+ };
111
+ const navigation = useTreeGridNavigation({
112
+ rows,
113
+ expanded,
114
+ enabled,
115
+ toggle,
116
+ select
117
+ });
118
+ const changePage = (target)=>{
119
+ if (enabled && target >= 0 && target < pageCount) setPage(target);
120
+ };
121
+ const refusals = [
122
+ modeResolution.isValid ? undefined : modeResolution.message,
123
+ legacyElementMessage(authoredItems, 'items', 'Provide items as node data: strings, numbers, or records with key, label, data and children.'),
124
+ legacyElementMessage(arrayProperty(element, 'columns'), 'columns', "Author them as child elements in the 'columns' slot, or as column definitions.")
125
+ ].filter((message)=>message !== undefined);
126
+ const skipped = countUnreadableEntries(items);
127
+ return /*#__PURE__*/ jsxs("div", {
128
+ "data-scene-id": element.id,
129
+ "data-scene-component": "treeTable",
130
+ "aria-disabled": !enabled,
131
+ onClick: interactions?.onClick,
132
+ onDoubleClick: interactions?.onDoubleClick,
133
+ children: [
134
+ /*#__PURE__*/ jsxs("table", {
135
+ role: "treegrid",
136
+ "aria-label": stringProperty(element, 'ariaLabel', 'Hierarchical data'),
137
+ "aria-multiselectable": mode === TreeTableSelectionMode.Multiple || mode === TreeTableSelectionMode.Checkbox ? true : undefined,
138
+ children: [
139
+ /*#__PURE__*/ jsx("thead", {
140
+ children: /*#__PURE__*/ jsx("tr", {
141
+ role: "row",
142
+ children: columns.map((column, index)=>/*#__PURE__*/ jsx("th", {
143
+ role: "columnheader",
144
+ children: column.header
145
+ }, index))
146
+ })
147
+ }),
148
+ /*#__PURE__*/ jsxs("tbody", {
149
+ children: [
150
+ rows.map((row)=>/*#__PURE__*/ jsx(TreeTableRowView, {
151
+ row: row,
152
+ columns: columns,
153
+ mode: mode,
154
+ enabled: enabled,
155
+ expanded: expanded.has(row.key),
156
+ selected: settled.checked.has(row.key),
157
+ checkState: settled.states.get(row.key),
158
+ tabStop: navigation.tabStopKey === row.key,
159
+ register: navigation.register,
160
+ onActivate: ()=>navigation.activate(row.key),
161
+ onToggle: ()=>toggle(row.key),
162
+ onSelect: ()=>select(row),
163
+ onKeyDown: (event)=>navigation.onKeyDown(row, event)
164
+ }, row.key)),
165
+ rows.length === 0 && /*#__PURE__*/ jsx("tr", {
166
+ role: "row",
167
+ children: /*#__PURE__*/ jsx("td", {
168
+ role: "gridcell",
169
+ colSpan: columns.length,
170
+ children: stringProperty(element, 'emptyLabel', 'No records found')
171
+ })
172
+ })
173
+ ]
174
+ })
175
+ ]
176
+ }),
177
+ paginator && /*#__PURE__*/ jsxs("nav", {
178
+ "aria-label": "Tree table pages",
179
+ children: [
180
+ /*#__PURE__*/ jsx("button", {
181
+ type: "button",
182
+ "aria-disabled": !enabled || currentPage === 0,
183
+ onClick: ()=>changePage(currentPage - 1),
184
+ children: "Previous"
185
+ }),
186
+ /*#__PURE__*/ jsxs("span", {
187
+ children: [
188
+ currentPage + 1,
189
+ " / ",
190
+ pageCount
191
+ ]
192
+ }),
193
+ /*#__PURE__*/ jsx("button", {
194
+ type: "button",
195
+ "aria-disabled": !enabled || currentPage + 1 >= pageCount,
196
+ onClick: ()=>changePage(currentPage + 1),
197
+ children: "Next"
198
+ })
199
+ ]
200
+ }),
201
+ refusals.map((message)=>/*#__PURE__*/ jsx("p", {
202
+ role: "alert",
203
+ "data-scene-state": "refused",
204
+ children: message
205
+ }, message)),
206
+ skipped > 0 && /*#__PURE__*/ jsx("p", {
207
+ role: "status",
208
+ children: `${skipped} entr${skipped === 1 ? 'y' : 'ies'} of items could not be read as a node and ${skipped === 1 ? 'was' : 'were'} skipped.`
209
+ })
210
+ ]
211
+ });
212
+ }
213
+
214
+ export { PrimeTreeTable };
215
+ //# sourceMappingURL=PrimeTreeTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimeTreeTable.js","sources":["../../../data/PrimeTreeTable.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useMemo, useState } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { arrayProperty, booleanProperty, numberProperty, stringProperty } from '../properties';\nimport { resolveEnumeration } from '../resolveEnumeration';\nimport { countUnreadableEntries, toTreeNodes } from '../treeNodes';\nimport { useResettingState } from '../useResettingState';\nimport { useStructuralValue } from '../useStructuralValue';\nimport { ColumnDefinition } from './ColumnDefinition';\nimport { TreeTableRow } from './TreeTableRow';\nimport { TreeTableRowView } from './TreeTableRowView';\nimport { TreeTableSelectionMode } from './TreeTableSelectionMode';\nimport { columnDefinitions } from './columnDefinitions';\nimport { SettledSelection, settleSelection, toggleCheckbox } from './checkboxSelection';\nimport { isSerializedLegacyElement, legacyElementMessage } from './isSerializedLegacyElement';\nimport { selectionKeysOf } from './selectionKeysOf';\nimport { expandedKeysOf, visibleRows } from './treeTableRows';\nimport { useTreeGridNavigation } from './useTreeGridNavigation';\n\nconst labelColumn: ColumnDefinition[] = [{ field: 'label', header: 'Label', sortable: false }];\n\n/**\n * The `PrimeReact:treeTable` component, an ARIA tree grid over the canonical Scene node and column properties.\n *\n * `items` is an array of nodes - strings, numbers, or records with `key`, `label`, `data`, `children`,\n * `expanded` and `selectable` - and the columns come from nested `column` elements, a `columns` property or the\n * fields of the first row's `data`, in that order (see `columnDefinitions`). Serialized legacy UI elements in\n * `items` or `columns` are refused with a visible message; see the package documentation for how they map to\n * canonical slots.\n *\n * - Selection follows the authored `selection` (keys, numbers, `{ key }` objects or PrimeReact's key map) and\n * starts over when it changes; expansion starts from the authored `expanded` flags the same way. An unrelated\n * property edit leaves what the user did alone.\n * - In checkbox mode a parent checks and unchecks its subtree and shows a partial state when only some of it is\n * checked.\n * - The rows form a `treegrid` with a roving tab index and the usual arrow-key navigation.\n * - Object cell values are shown readably, never as `[object Object]`.\n */\nexport function PrimeTreeTable({ element, interactions }: RegisteredComponentProps) {\n const authoredItems = useStructuralValue(arrayProperty(element, 'items'));\n const items = useMemo(() => authoredItems.filter(entry => !isSerializedLegacyElement(entry)), [authoredItems]);\n const nodes = useMemo(() => toTreeNodes(items), [items]);\n const modeResolution = resolveEnumeration('selectionMode', element.properties.selectionMode, TreeTableSelectionMode, TreeTableSelectionMode.None);\n const mode = modeResolution.isValid ? modeResolution.value : TreeTableSelectionMode.None;\n const enabled = element.isEnabled;\n const pageSize = Math.max(Math.floor(numberProperty(element, 'rows', 10)), 1);\n const paginator = booleanProperty(element, 'paginator', false);\n const [expanded, setExpanded] = useResettingState(expandedKeysOf(nodes), () => new Set(expandedKeysOf(nodes)));\n const [requested, setRequested] = useResettingState(element.properties.selection, () => selectionKeysOf(element.properties.selection));\n const [page, setPage] = useState(0);\n const pageCount = Math.max(Math.ceil(nodes.length / pageSize), 1);\n const currentPage = Math.min(page, pageCount - 1);\n const rows = useMemo(() => visibleRows(paginator ? nodes.slice(currentPage * pageSize, (currentPage + 1) * pageSize) : nodes, expanded), [nodes, paginator, currentPage, pageSize, expanded]);\n const settled = useMemo<SettledSelection>(\n () => mode === TreeTableSelectionMode.Checkbox ? settleSelection(nodes, requested) : { checked: requested, states: new Map() },\n [mode, nodes, requested]\n );\n const columns = useMemo(() => {\n const first = rows.find(row => typeof row.node.data === 'object' && row.node.data !== null && !Array.isArray(row.node.data))?.node.data as Record<string, unknown> | undefined;\n const defined = columnDefinitions(element, first === undefined ? [] : [first]);\n return defined.length > 0 ? defined : labelColumn;\n }, [element, rows]);\n\n useEffect(() => setPage(current => Math.min(current, pageCount - 1)), [pageCount]);\n\n const toggle = (key: string) => {\n if (enabled) setExpanded(current => {\n const next = new Set(current);\n if (next.has(key)) next.delete(key); else next.add(key);\n return next;\n });\n };\n\n const select = (row: TreeTableRow) => {\n if (mode === TreeTableSelectionMode.None || !enabled || row.node.selectable === false) return;\n if (mode === TreeTableSelectionMode.Checkbox) {\n setRequested(toggleCheckbox(nodes, settled, row.node));\n } else if (mode === TreeTableSelectionMode.Single) {\n setRequested(new Set([row.key]));\n } else {\n const next = new Set(settled.checked);\n if (next.has(row.key)) next.delete(row.key); else next.add(row.key);\n setRequested(next);\n }\n\n interactions?.onSelect?.();\n interactions?.onChange?.();\n };\n\n const navigation = useTreeGridNavigation({ rows, expanded, enabled, toggle, select });\n const changePage = (target: number) => { if (enabled && target >= 0 && target < pageCount) setPage(target); };\n const refusals = [\n modeResolution.isValid ? undefined : modeResolution.message,\n legacyElementMessage(authoredItems, 'items', 'Provide items as node data: strings, numbers, or records with key, label, data and children.'),\n legacyElementMessage(arrayProperty(element, 'columns'), 'columns', \"Author them as child elements in the 'columns' slot, or as column definitions.\"),\n ].filter((message): message is string => message !== undefined);\n const skipped = countUnreadableEntries(items);\n\n return (\n <div data-scene-id={element.id} data-scene-component='treeTable' aria-disabled={!enabled} onClick={interactions?.onClick} onDoubleClick={interactions?.onDoubleClick}>\n <table\n role='treegrid'\n aria-label={stringProperty(element, 'ariaLabel', 'Hierarchical data')}\n aria-multiselectable={mode === TreeTableSelectionMode.Multiple || mode === TreeTableSelectionMode.Checkbox ? true : undefined}>\n <thead>\n <tr role='row'>{columns.map((column, index) => <th key={index} role='columnheader'>{column.header}</th>)}</tr>\n </thead>\n <tbody>\n {rows.map(row => (\n <TreeTableRowView\n key={row.key}\n row={row}\n columns={columns}\n mode={mode}\n enabled={enabled}\n expanded={expanded.has(row.key)}\n selected={settled.checked.has(row.key)}\n checkState={settled.states.get(row.key)}\n tabStop={navigation.tabStopKey === row.key}\n register={navigation.register}\n onActivate={() => navigation.activate(row.key)}\n onToggle={() => toggle(row.key)}\n onSelect={() => select(row)}\n onKeyDown={event => navigation.onKeyDown(row, event)}\n />\n ))}\n {rows.length === 0 && (\n <tr role='row'><td role='gridcell' colSpan={columns.length}>{stringProperty(element, 'emptyLabel', 'No records found')}</td></tr>\n )}\n </tbody>\n </table>\n {paginator && (\n <nav aria-label='Tree table pages'>\n <button type='button' aria-disabled={!enabled || currentPage === 0} onClick={() => changePage(currentPage - 1)}>Previous</button>\n <span>{currentPage + 1} / {pageCount}</span>\n <button type='button' aria-disabled={!enabled || currentPage + 1 >= pageCount} onClick={() => changePage(currentPage + 1)}>Next</button>\n </nav>\n )}\n {refusals.map(message => <p key={message} role='alert' data-scene-state='refused'>{message}</p>)}\n {skipped > 0 && <p role='status'>{`${skipped} entr${skipped === 1 ? 'y' : 'ies'} of items could not be read as a node and ${skipped === 1 ? 'was' : 'were'} skipped.`}</p>}\n </div>\n );\n}\n"],"names":["labelColumn","field","header","sortable","PrimeTreeTable","element","interactions","authoredItems","useStructuralValue","arrayProperty","items","useMemo","filter","entry","isSerializedLegacyElement","nodes","toTreeNodes","modeResolution","resolveEnumeration","properties","selectionMode","TreeTableSelectionMode","None","mode","isValid","value","enabled","isEnabled","pageSize","Math","max","floor","numberProperty","paginator","booleanProperty","expanded","setExpanded","useResettingState","expandedKeysOf","Set","requested","setRequested","selection","selectionKeysOf","page","setPage","useState","pageCount","ceil","length","currentPage","min","rows","visibleRows","slice","settled","Checkbox","settleSelection","checked","states","Map","columns","first","find","row","node","data","Array","isArray","defined","columnDefinitions","undefined","useEffect","current","toggle","key","next","has","delete","add","select","selectable","toggleCheckbox","Single","onSelect","onChange","navigation","useTreeGridNavigation","changePage","target","refusals","message","legacyElementMessage","skipped","countUnreadableEntries","_jsxs","div","data-scene-id","id","data-scene-component","aria-disabled","onClick","onDoubleClick","table","role","aria-label","stringProperty","aria-multiselectable","Multiple","_jsx","thead","tr","map","column","index","th","tbody","TreeTableRowView","selected","checkState","get","tabStop","tabStopKey","register","onActivate","activate","onToggle","onKeyDown","event","td","colSpan","nav","button","type","span","p","data-scene-state"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare enum TreeTableCheckState {
2
+ Unchecked = "unchecked",
3
+ Partial = "partial",
4
+ Checked = "checked"
5
+ }
6
+ //# sourceMappingURL=TreeTableCheckState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableCheckState.d.ts","sourceRoot":"","sources":["../../../data/TreeTableCheckState.ts"],"names":[],"mappings":"AAIA,oBAAY,mBAAmB;IAC3B,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACtB"}
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** How much of a tree table row's subtree is checked, in checkbox selection mode. */ var TreeTableCheckState = /*#__PURE__*/ function(TreeTableCheckState) {
4
+ TreeTableCheckState["Unchecked"] = "unchecked";
5
+ TreeTableCheckState["Partial"] = "partial";
6
+ TreeTableCheckState["Checked"] = "checked";
7
+ return TreeTableCheckState;
8
+ }({});
9
+
10
+ export { TreeTableCheckState };
11
+ //# sourceMappingURL=TreeTableCheckState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableCheckState.js","sources":["../../../data/TreeTableCheckState.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** How much of a tree table row's subtree is checked, in checkbox selection mode. */\nexport enum TreeTableCheckState {\n Unchecked = 'unchecked',\n Partial = 'partial',\n Checked = 'checked',\n}\n"],"names":["TreeTableCheckState"],"mappings":"AAAA;AACA;AAEA,sFACO,IAAKA,mBAAAA,iBAAAA,SAAAA,mBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,mBAAAA;AAIX,CAAA,CAAA,EAAA;;"}
@@ -0,0 +1,10 @@
1
+ import { TreeNode } from '../TreeNode';
2
+ export interface TreeTableRow {
3
+ node: TreeNode;
4
+ key: string;
5
+ depth: number;
6
+ parentKey: string | undefined;
7
+ position: number;
8
+ siblings: number;
9
+ }
10
+ //# sourceMappingURL=TreeTableRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableRow.d.ts","sourceRoot":"","sources":["../../../data/TreeTableRow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAGZ,KAAK,EAAE,MAAM,CAAC;IAGd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TreeTableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableRow.js","sourceRoot":"","sources":["../../../data/TreeTableRow.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { ColumnDefinition } from './ColumnDefinition';
2
+ import { TreeTableCheckState } from './TreeTableCheckState';
3
+ import { TreeTableRow } from './TreeTableRow';
4
+ import { TreeTableSelectionMode } from './TreeTableSelectionMode';
5
+ export interface TreeTableRowViewProps {
6
+ row: TreeTableRow;
7
+ columns: ColumnDefinition[];
8
+ mode: TreeTableSelectionMode;
9
+ enabled: boolean;
10
+ expanded: boolean;
11
+ selected: boolean;
12
+ checkState: TreeTableCheckState | undefined;
13
+ tabStop: boolean;
14
+ register(key: string, element: HTMLElement | null): void;
15
+ onActivate(): void;
16
+ onToggle(): void;
17
+ onSelect(): void;
18
+ onKeyDown(event: React.KeyboardEvent<HTMLElement>): void;
19
+ }
20
+ export declare function TreeTableRowView({ row, columns, mode, enabled, expanded, selected, checkState, tabStop, register, onActivate, onToggle, onSelect, onKeyDown }: TreeTableRowViewProps): import("react").JSX.Element;
21
+ //# sourceMappingURL=TreeTableRowView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableRowView.d.ts","sourceRoot":"","sources":["../../../data/TreeTableRowView.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,qBAAqB;IAClC,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IACzD,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,IAAI,IAAI,CAAC;IACjB,QAAQ,IAAI,IAAI,CAAC;IACjB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CAC5D;AAGD,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,qBAAqB,+BAkDpL"}
@@ -0,0 +1,74 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { TreeTableCheckState } from './TreeTableCheckState.js';
3
+ import { TreeTableSelectionMode } from './TreeTableSelectionMode.js';
4
+ import { nodeLabel } from './treeTableRows.js';
5
+ import { readableValue } from './readableValue.js';
6
+
7
+ // Copyright (c) Cratis. All rights reserved.
8
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
9
+ /** One `row` of the tree grid: its cells, its expand button and, in checkbox mode, its tri-state checkbox. */ function TreeTableRowView({ row, columns, mode, enabled, expanded, selected, checkState, tabStop, register, onActivate, onToggle, onSelect, onKeyDown }) {
10
+ const { node } = row;
11
+ const label = nodeLabel(node);
12
+ const hasChildren = (node.children?.length ?? 0) > 0;
13
+ const selectionOffered = mode !== TreeTableSelectionMode.None;
14
+ const rowSelectable = selectionOffered && node.selectable !== false;
15
+ return /*#__PURE__*/ jsx("tr", {
16
+ ref: (element)=>register(row.key, element),
17
+ role: "row",
18
+ tabIndex: tabStop ? 0 : -1,
19
+ "aria-level": row.depth + 1,
20
+ "aria-posinset": row.position,
21
+ "aria-setsize": row.siblings,
22
+ "aria-expanded": hasChildren ? expanded : undefined,
23
+ "aria-selected": selectionOffered ? selected : undefined,
24
+ className: node.className,
25
+ onFocus: onActivate,
26
+ onKeyDown: onKeyDown,
27
+ onClick: (event)=>{
28
+ onActivate();
29
+ if (mode === TreeTableSelectionMode.Single || mode === TreeTableSelectionMode.Multiple) {
30
+ if (!event.target.closest('button, input')) onSelect();
31
+ }
32
+ },
33
+ children: columns.map((column, index)=>/*#__PURE__*/ jsxs("td", {
34
+ role: "gridcell",
35
+ style: index === 0 ? {
36
+ paddingInlineStart: `${row.depth * 1.25}rem`
37
+ } : undefined,
38
+ children: [
39
+ index === 0 && hasChildren && /*#__PURE__*/ jsx("button", {
40
+ type: "button",
41
+ tabIndex: -1,
42
+ disabled: !enabled,
43
+ "aria-expanded": expanded,
44
+ "aria-label": `${expanded ? 'Collapse' : 'Expand'} ${label}`,
45
+ onClick: onToggle,
46
+ children: expanded ? 'Collapse' : 'Expand'
47
+ }),
48
+ index === 0 && mode === TreeTableSelectionMode.Checkbox && checkState !== undefined && /*#__PURE__*/ jsx("input", {
49
+ type: "checkbox",
50
+ tabIndex: -1,
51
+ ref: (input)=>{
52
+ if (input !== null) input.indeterminate = checkState === TreeTableCheckState.Partial;
53
+ },
54
+ checked: checkState === TreeTableCheckState.Checked,
55
+ disabled: !enabled || !rowSelectable,
56
+ "aria-label": `Select ${label}`,
57
+ "aria-checked": checkState === TreeTableCheckState.Partial ? 'mixed' : checkState === TreeTableCheckState.Checked,
58
+ onChange: onSelect
59
+ }),
60
+ cellText(row, column.field, index === 0)
61
+ ]
62
+ }, index))
63
+ });
64
+ }
65
+ function cellText(row, field, firstColumn) {
66
+ const { data } = row.node;
67
+ const record = typeof data === 'object' && data !== null && !Array.isArray(data) ? data : undefined;
68
+ if (record !== undefined && record[field] !== undefined) return readableValue(record[field]);
69
+ if (!firstColumn) return '';
70
+ return row.node.label ?? (record === undefined ? readableValue(data) : '');
71
+ }
72
+
73
+ export { TreeTableRowView };
74
+ //# sourceMappingURL=TreeTableRowView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableRowView.js","sources":["../../../data/TreeTableRowView.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ColumnDefinition } from './ColumnDefinition';\nimport { TreeTableCheckState } from './TreeTableCheckState';\nimport { TreeTableRow } from './TreeTableRow';\nimport { TreeTableSelectionMode } from './TreeTableSelectionMode';\nimport { nodeLabel } from './treeTableRows';\nimport { readableValue } from './readableValue';\n\nexport interface TreeTableRowViewProps {\n row: TreeTableRow;\n columns: ColumnDefinition[];\n mode: TreeTableSelectionMode;\n enabled: boolean;\n expanded: boolean;\n selected: boolean;\n checkState: TreeTableCheckState | undefined;\n tabStop: boolean;\n register(key: string, element: HTMLElement | null): void;\n onActivate(): void;\n onToggle(): void;\n onSelect(): void;\n onKeyDown(event: React.KeyboardEvent<HTMLElement>): void;\n}\n\n/** One `row` of the tree grid: its cells, its expand button and, in checkbox mode, its tri-state checkbox. */\nexport function TreeTableRowView({ row, columns, mode, enabled, expanded, selected, checkState, tabStop, register, onActivate, onToggle, onSelect, onKeyDown }: TreeTableRowViewProps) {\n const { node } = row;\n const label = nodeLabel(node);\n const hasChildren = (node.children?.length ?? 0) > 0;\n const selectionOffered = mode !== TreeTableSelectionMode.None;\n const rowSelectable = selectionOffered && node.selectable !== false;\n\n return (\n <tr\n ref={element => register(row.key, element)}\n role='row'\n tabIndex={tabStop ? 0 : -1}\n aria-level={row.depth + 1}\n aria-posinset={row.position}\n aria-setsize={row.siblings}\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={selectionOffered ? selected : undefined}\n className={node.className}\n onFocus={onActivate}\n onKeyDown={onKeyDown}\n onClick={event => {\n onActivate();\n if (mode === TreeTableSelectionMode.Single || mode === TreeTableSelectionMode.Multiple) {\n if (!(event.target as HTMLElement).closest('button, input')) onSelect();\n }\n }}>\n {columns.map((column, index) => (\n <td key={index} role='gridcell' style={index === 0 ? { paddingInlineStart: `${row.depth * 1.25}rem` } : undefined}>\n {index === 0 && hasChildren && (\n <button type='button' tabIndex={-1} disabled={!enabled} aria-expanded={expanded} aria-label={`${expanded ? 'Collapse' : 'Expand'} ${label}`} onClick={onToggle}>\n {expanded ? 'Collapse' : 'Expand'}\n </button>\n )}\n {index === 0 && mode === TreeTableSelectionMode.Checkbox && checkState !== undefined && (\n <input\n type='checkbox'\n tabIndex={-1}\n ref={input => { if (input !== null) input.indeterminate = checkState === TreeTableCheckState.Partial; }}\n checked={checkState === TreeTableCheckState.Checked}\n disabled={!enabled || !rowSelectable}\n aria-label={`Select ${label}`}\n aria-checked={checkState === TreeTableCheckState.Partial ? 'mixed' : checkState === TreeTableCheckState.Checked}\n onChange={onSelect}\n />\n )}\n {cellText(row, column.field, index === 0)}\n </td>\n ))}\n </tr>\n );\n}\n\nfunction cellText(row: TreeTableRow, field: string, firstColumn: boolean): string {\n const { data } = row.node;\n const record = typeof data === 'object' && data !== null && !Array.isArray(data) ? data as Record<string, unknown> : undefined;\n if (record !== undefined && record[field] !== undefined) return readableValue(record[field]);\n if (!firstColumn) return '';\n return row.node.label ?? (record === undefined ? readableValue(data) : '');\n}\n"],"names":["TreeTableRowView","row","columns","mode","enabled","expanded","selected","checkState","tabStop","register","onActivate","onToggle","onSelect","onKeyDown","node","label","nodeLabel","hasChildren","children","length","selectionOffered","TreeTableSelectionMode","None","rowSelectable","selectable","_jsx","tr","ref","element","key","role","tabIndex","aria-level","depth","aria-posinset","position","aria-setsize","siblings","aria-expanded","undefined","aria-selected","className","onFocus","onClick","event","Single","Multiple","target","closest","map","column","index","_jsxs","td","style","paddingInlineStart","button","type","disabled","aria-label","Checkbox","input","indeterminate","TreeTableCheckState","Partial","checked","Checked","aria-checked","onChange","cellText","field","firstColumn","data","record","Array","isArray","readableValue"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare enum TreeTableSelectionMode {
2
+ None = "none",
3
+ Single = "single",
4
+ Multiple = "multiple",
5
+ Checkbox = "checkbox"
6
+ }
7
+ //# sourceMappingURL=TreeTableSelectionMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableSelectionMode.d.ts","sourceRoot":"","sources":["../../../data/TreeTableSelectionMode.ts"],"names":[],"mappings":"AAIA,oBAAY,sBAAsB;IAC9B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACxB"}
@@ -0,0 +1,12 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** The canonical selection behavior for a hierarchical table. */ var TreeTableSelectionMode = /*#__PURE__*/ function(TreeTableSelectionMode) {
4
+ TreeTableSelectionMode["None"] = "none";
5
+ TreeTableSelectionMode["Single"] = "single";
6
+ TreeTableSelectionMode["Multiple"] = "multiple";
7
+ TreeTableSelectionMode["Checkbox"] = "checkbox";
8
+ return TreeTableSelectionMode;
9
+ }({});
10
+
11
+ export { TreeTableSelectionMode };
12
+ //# sourceMappingURL=TreeTableSelectionMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeTableSelectionMode.js","sources":["../../../data/TreeTableSelectionMode.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** The canonical selection behavior for a hierarchical table. */\nexport enum TreeTableSelectionMode {\n None = 'none',\n Single = 'single',\n Multiple = 'multiple',\n Checkbox = 'checkbox',\n}\n"],"names":["TreeTableSelectionMode"],"mappings":"AAAA;AACA;AAEA,kEACO,IAAKA,sBAAAA,iBAAAA,SAAAA,sBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,sBAAAA;AAKX,CAAA,CAAA,EAAA;;"}
@@ -0,0 +1,9 @@
1
+ import { TreeNode } from '../TreeNode';
2
+ import { TreeTableCheckState } from './TreeTableCheckState';
3
+ export interface SettledSelection {
4
+ checked: Set<string>;
5
+ states: Map<string, TreeTableCheckState>;
6
+ }
7
+ export declare function settleSelection(nodes: TreeNode[], requested: ReadonlySet<string>): SettledSelection;
8
+ export declare function toggleCheckbox(nodes: TreeNode[], settled: SettledSelection, node: TreeNode): Set<string>;
9
+ //# sourceMappingURL=checkboxSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkboxSelection.d.ts","sourceRoot":"","sources":["../../../data/checkboxSelection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC5C;AAgBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,gBAAgB,CA8BnG;AAUD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAexG"}
@@ -0,0 +1,85 @@
1
+ import { TreeTableCheckState } from './TreeTableCheckState.js';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ const selectable = (node)=>node.selectable !== false;
6
+ /**
7
+ * Settles a checkbox selection against the tree, the way a checkbox tree reads:
8
+ * - a checked parent has all of its selectable descendants checked;
9
+ * - a parent is checked when all of its selectable children are, partially checked when some are, and
10
+ * unchecked otherwise;
11
+ * - a node that is not selectable, and has nothing selectable below it, takes no part.
12
+ *
13
+ * Applying this to what the user toggled, or to an authored selection, is what keeps both consistent.
14
+ *
15
+ * @param nodes The root nodes.
16
+ * @param requested The keys asked for.
17
+ */ function settleSelection(nodes, requested) {
18
+ const cascaded = new Set();
19
+ const cascade = (node, inherited)=>{
20
+ const on = inherited || requested.has(node.key ?? '');
21
+ if (on) cascaded.add(node.key ?? '');
22
+ node.children?.forEach((child)=>cascade(child, on));
23
+ };
24
+ nodes.forEach((node)=>cascade(node, false));
25
+ const checked = new Set();
26
+ const states = new Map();
27
+ const settle = (node)=>{
28
+ const key = node.key ?? '';
29
+ const childStates = (node.children ?? []).map(settle).filter((state)=>state !== undefined);
30
+ let state;
31
+ if (childStates.length === 0) {
32
+ state = selectable(node) ? cascaded.has(key) ? TreeTableCheckState.Checked : TreeTableCheckState.Unchecked : undefined;
33
+ } else if (childStates.every((child)=>child === TreeTableCheckState.Checked)) {
34
+ state = TreeTableCheckState.Checked;
35
+ } else {
36
+ state = childStates.some((child)=>child !== TreeTableCheckState.Unchecked) ? TreeTableCheckState.Partial : TreeTableCheckState.Unchecked;
37
+ }
38
+ if (state !== undefined) states.set(key, state);
39
+ if (state === TreeTableCheckState.Checked) checked.add(key);
40
+ return state;
41
+ };
42
+ nodes.forEach(settle);
43
+ return {
44
+ checked,
45
+ states
46
+ };
47
+ }
48
+ /**
49
+ * Toggles one row's checkbox: a checked row unchecks its whole subtree, any other row checks it.
50
+ *
51
+ * @param nodes The root nodes.
52
+ * @param settled The current settled selection.
53
+ * @param node The row's node.
54
+ * @returns The keys to settle again.
55
+ */ function toggleCheckbox(nodes, settled, node) {
56
+ const subtree = [];
57
+ const collect = (current)=>{
58
+ subtree.push(current.key ?? '');
59
+ current.children?.forEach(collect);
60
+ };
61
+ collect(node);
62
+ const next = new Set(settled.checked);
63
+ const checking = settled.states.get(node.key ?? '') !== TreeTableCheckState.Checked;
64
+ subtree.forEach((key)=>{
65
+ if (checking) next.add(key);
66
+ else next.delete(key);
67
+ });
68
+ // A checked ancestor would check the unchecked subtree again, so unchecking also unchecks the ancestors.
69
+ if (!checking) (ancestorKeys(nodes, node.key ?? '') ?? []).forEach((key)=>next.delete(key));
70
+ return settleSelection(nodes, next).checked;
71
+ }
72
+ function ancestorKeys(nodes, key, path = []) {
73
+ for (const node of nodes){
74
+ if (node.key === key) return path;
75
+ const found = ancestorKeys(node.children ?? [], key, [
76
+ ...path,
77
+ node.key ?? ''
78
+ ]);
79
+ if (found !== undefined) return found;
80
+ }
81
+ return undefined;
82
+ }
83
+
84
+ export { settleSelection, toggleCheckbox };
85
+ //# sourceMappingURL=checkboxSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkboxSelection.js","sources":["../../../data/checkboxSelection.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { TreeNode } from '../TreeNode';\nimport { TreeTableCheckState } from './TreeTableCheckState';\n\n/** The outcome of settling a checkbox selection: the keys that are checked, and how each row reads. */\nexport interface SettledSelection {\n checked: Set<string>;\n states: Map<string, TreeTableCheckState>;\n}\n\nconst selectable = (node: TreeNode) => node.selectable !== false;\n\n/**\n * Settles a checkbox selection against the tree, the way a checkbox tree reads:\n * - a checked parent has all of its selectable descendants checked;\n * - a parent is checked when all of its selectable children are, partially checked when some are, and\n * unchecked otherwise;\n * - a node that is not selectable, and has nothing selectable below it, takes no part.\n *\n * Applying this to what the user toggled, or to an authored selection, is what keeps both consistent.\n *\n * @param nodes The root nodes.\n * @param requested The keys asked for.\n */\nexport function settleSelection(nodes: TreeNode[], requested: ReadonlySet<string>): SettledSelection {\n const cascaded = new Set<string>();\n const cascade = (node: TreeNode, inherited: boolean) => {\n const on = inherited || requested.has(node.key ?? '');\n if (on) cascaded.add(node.key ?? '');\n node.children?.forEach(child => cascade(child, on));\n };\n nodes.forEach(node => cascade(node, false));\n\n const checked = new Set<string>();\n const states = new Map<string, TreeTableCheckState>();\n const settle = (node: TreeNode): TreeTableCheckState | undefined => {\n const key = node.key ?? '';\n const childStates = (node.children ?? []).map(settle).filter((state): state is TreeTableCheckState => state !== undefined);\n let state: TreeTableCheckState | undefined;\n if (childStates.length === 0) {\n state = selectable(node) ? (cascaded.has(key) ? TreeTableCheckState.Checked : TreeTableCheckState.Unchecked) : undefined;\n } else if (childStates.every(child => child === TreeTableCheckState.Checked)) {\n state = TreeTableCheckState.Checked;\n } else {\n state = childStates.some(child => child !== TreeTableCheckState.Unchecked) ? TreeTableCheckState.Partial : TreeTableCheckState.Unchecked;\n }\n\n if (state !== undefined) states.set(key, state);\n if (state === TreeTableCheckState.Checked) checked.add(key);\n return state;\n };\n nodes.forEach(settle);\n\n return { checked, states };\n}\n\n/**\n * Toggles one row's checkbox: a checked row unchecks its whole subtree, any other row checks it.\n *\n * @param nodes The root nodes.\n * @param settled The current settled selection.\n * @param node The row's node.\n * @returns The keys to settle again.\n */\nexport function toggleCheckbox(nodes: TreeNode[], settled: SettledSelection, node: TreeNode): Set<string> {\n const subtree: string[] = [];\n const collect = (current: TreeNode) => {\n subtree.push(current.key ?? '');\n current.children?.forEach(collect);\n };\n collect(node);\n\n const next = new Set(settled.checked);\n const checking = settled.states.get(node.key ?? '') !== TreeTableCheckState.Checked;\n subtree.forEach(key => { if (checking) next.add(key); else next.delete(key); });\n\n // A checked ancestor would check the unchecked subtree again, so unchecking also unchecks the ancestors.\n if (!checking) (ancestorKeys(nodes, node.key ?? '') ?? []).forEach(key => next.delete(key));\n return settleSelection(nodes, next).checked;\n}\n\nfunction ancestorKeys(nodes: TreeNode[], key: string, path: string[] = []): string[] | undefined {\n for (const node of nodes) {\n if (node.key === key) return path;\n const found = ancestorKeys(node.children ?? [], key, [...path, node.key ?? '']);\n if (found !== undefined) return found;\n }\n\n return undefined;\n}\n"],"names":["selectable","node","settleSelection","nodes","requested","cascaded","Set","cascade","inherited","on","has","key","add","children","forEach","child","checked","states","Map","settle","childStates","map","filter","state","undefined","length","TreeTableCheckState","Checked","Unchecked","every","some","Partial","set","toggleCheckbox","settled","subtree","collect","current","push","next","checking","get","delete","ancestorKeys","path","found"],"mappings":"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"}
@@ -10,4 +10,8 @@ export * from './PrimePaginator';
10
10
  export * from './PrimeOrderList';
11
11
  export * from './PrimePickList';
12
12
  export * from './PrimeOrganizationChart';
13
+ export * from './PrimeDataScroller';
14
+ export * from './PrimeTreeTable';
15
+ export * from './TreeTableSelectionMode';
16
+ export * from './readableValue';
13
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
@@ -10,4 +10,8 @@ export * from './PrimePaginator';
10
10
  export * from './PrimeOrderList';
11
11
  export * from './PrimePickList';
12
12
  export * from './PrimeOrganizationChart';
13
+ export * from './PrimeDataScroller';
14
+ export * from './PrimeTreeTable';
15
+ export * from './TreeTableSelectionMode';
16
+ export * from './readableValue';
13
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function isSerializedLegacyElement(entry: unknown): boolean;
2
+ export declare function legacyElementMessage(entries: unknown[], property: string, guidance: string): string | undefined;
3
+ //# sourceMappingURL=isSerializedLegacyElement.d.ts.map