@cratis/scene.primereact 4.6.0 → 4.8.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 (388) hide show
  1. package/.storybook/preview.tsx +8 -1
  2. package/EnumerationResolution.ts +7 -0
  3. package/README.md +22 -12
  4. package/data/DataGallery.stories.tsx +6 -0
  5. package/data/DataScrollerRow.tsx +35 -0
  6. package/data/PrimeDataScroller.tsx +84 -0
  7. package/data/PrimeTreeTable.tsx +145 -0
  8. package/data/TreeTableCheckState.ts +9 -0
  9. package/data/TreeTableRow.ts +22 -0
  10. package/data/TreeTableRowView.tsx +86 -0
  11. package/data/TreeTableSelectionMode.ts +10 -0
  12. package/data/checkboxSelection.ts +92 -0
  13. package/data/index.ts +4 -0
  14. package/data/isSerializedLegacyElement.ts +30 -0
  15. package/data/readableValue.ts +32 -0
  16. package/data/selectionKeysOf.ts +40 -0
  17. package/data/treeTableRows.ts +32 -0
  18. package/data/useIncrementalLoad.ts +36 -0
  19. package/data/useLoadOnReach.ts +31 -0
  20. package/data/useTreeGridNavigation.ts +81 -0
  21. package/dist/cjs/data/DataScrollerRow.js +50 -0
  22. package/dist/cjs/data/DataScrollerRow.js.map +1 -0
  23. package/dist/cjs/data/PrimeDataScroller.js +120 -0
  24. package/dist/cjs/data/PrimeDataScroller.js.map +1 -0
  25. package/dist/cjs/data/PrimeTreeTable.js +217 -0
  26. package/dist/cjs/data/PrimeTreeTable.js.map +1 -0
  27. package/dist/cjs/data/TreeTableCheckState.js +13 -0
  28. package/dist/cjs/data/TreeTableCheckState.js.map +1 -0
  29. package/dist/cjs/data/TreeTableRowView.js +76 -0
  30. package/dist/cjs/data/TreeTableRowView.js.map +1 -0
  31. package/dist/cjs/data/TreeTableSelectionMode.js +14 -0
  32. package/dist/cjs/data/TreeTableSelectionMode.js.map +1 -0
  33. package/dist/cjs/data/checkboxSelection.js +88 -0
  34. package/dist/cjs/data/checkboxSelection.js.map +1 -0
  35. package/dist/cjs/data/isSerializedLegacyElement.js +30 -0
  36. package/dist/cjs/data/isSerializedLegacyElement.js.map +1 -0
  37. package/dist/cjs/data/readableValue.js +31 -0
  38. package/dist/cjs/data/readableValue.js.map +1 -0
  39. package/dist/cjs/data/selectionKeysOf.js +40 -0
  40. package/dist/cjs/data/selectionKeysOf.js.map +1 -0
  41. package/dist/cjs/data/treeTableRows.js +42 -0
  42. package/dist/cjs/data/treeTableRows.js.map +1 -0
  43. package/dist/cjs/data/useIncrementalLoad.js +46 -0
  44. package/dist/cjs/data/useIncrementalLoad.js.map +1 -0
  45. package/dist/cjs/data/useLoadOnReach.js +42 -0
  46. package/dist/cjs/data/useLoadOnReach.js.map +1 -0
  47. package/dist/cjs/data/useTreeGridNavigation.js +75 -0
  48. package/dist/cjs/data/useTreeGridNavigation.js.map +1 -0
  49. package/dist/cjs/editor/PrimeEditor.js +96 -0
  50. package/dist/cjs/editor/PrimeEditor.js.map +1 -0
  51. package/dist/cjs/editor/QuillLoaderContext.js +10 -0
  52. package/dist/cjs/editor/QuillLoaderContext.js.map +1 -0
  53. package/dist/cjs/editor/QuillLoaderProvider.js +21 -0
  54. package/dist/cjs/editor/QuillLoaderProvider.js.map +1 -0
  55. package/dist/cjs/editor/applyHtml.js +25 -0
  56. package/dist/cjs/editor/applyHtml.js.map +1 -0
  57. package/dist/cjs/editor/characterCount.js +10 -0
  58. package/dist/cjs/editor/characterCount.js.map +1 -0
  59. package/dist/cjs/editor/htmlToPlainText.js +101 -0
  60. package/dist/cjs/editor/htmlToPlainText.js.map +1 -0
  61. package/dist/cjs/editor/renderSafeNodes.js +35 -0
  62. package/dist/cjs/editor/renderSafeNodes.js.map +1 -0
  63. package/dist/cjs/editor/safeUrls.js +44 -0
  64. package/dist/cjs/editor/safeUrls.js.map +1 -0
  65. package/dist/cjs/editor/sanitizeHtml.js +140 -0
  66. package/dist/cjs/editor/sanitizeHtml.js.map +1 -0
  67. package/dist/cjs/editor/serializeSafeNodes.js +33 -0
  68. package/dist/cjs/editor/serializeSafeNodes.js.map +1 -0
  69. package/dist/cjs/editor/toolbarLayout.js +35 -0
  70. package/dist/cjs/editor/toolbarLayout.js.map +1 -0
  71. package/dist/cjs/editor/useQuillEditor.js +137 -0
  72. package/dist/cjs/editor/useQuillEditor.js.map +1 -0
  73. package/dist/cjs/file/FileUploadContext.js +13 -0
  74. package/dist/cjs/file/FileUploadContext.js.map +1 -0
  75. package/dist/cjs/file/FileUploadHandlerProvider.js +25 -0
  76. package/dist/cjs/file/FileUploadHandlerProvider.js.map +1 -0
  77. package/dist/cjs/file/FileUploadMode.js +13 -0
  78. package/dist/cjs/file/FileUploadMode.js.map +1 -0
  79. package/dist/cjs/file/PrimeFileUpload.js +161 -0
  80. package/dist/cjs/file/PrimeFileUpload.js.map +1 -0
  81. package/dist/cjs/file/postFiles.js +31 -0
  82. package/dist/cjs/file/postFiles.js.map +1 -0
  83. package/dist/cjs/file/resolveUploadTarget.js +68 -0
  84. package/dist/cjs/file/resolveUploadTarget.js.map +1 -0
  85. package/dist/cjs/file/useUploadSession.js +62 -0
  86. package/dist/cjs/file/useUploadSession.js.map +1 -0
  87. package/dist/cjs/index.js +32 -0
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/legacyEnumerationChoices.js +39 -0
  90. package/dist/cjs/legacyEnumerationChoices.js.map +1 -0
  91. package/dist/cjs/loadQuill/index.js +22 -0
  92. package/dist/cjs/loadQuill/index.js.map +1 -0
  93. package/dist/cjs/primeReactComponents.js +10 -0
  94. package/dist/cjs/primeReactComponents.js.map +1 -1
  95. package/dist/cjs/primeReactDescriptors.js +243 -0
  96. package/dist/cjs/primeReactDescriptors.js.map +1 -1
  97. package/dist/cjs/primeReactPackage.js +4 -0
  98. package/dist/cjs/primeReactPackage.js.map +1 -1
  99. package/dist/cjs/resolveEnumeration.js +55 -0
  100. package/dist/cjs/resolveEnumeration.js.map +1 -0
  101. package/dist/cjs/treeNodes.js +42 -7
  102. package/dist/cjs/treeNodes.js.map +1 -1
  103. package/dist/cjs/useResettingState.js +47 -0
  104. package/dist/cjs/useResettingState.js.map +1 -0
  105. package/dist/esm/EnumerationResolution.d.ts +9 -0
  106. package/dist/esm/EnumerationResolution.d.ts.map +1 -0
  107. package/dist/esm/EnumerationResolution.js +2 -0
  108. package/dist/esm/EnumerationResolution.js.map +1 -0
  109. package/dist/esm/data/DataGallery.stories.d.ts.map +1 -1
  110. package/dist/esm/data/DataGallery.stories.js +6 -0
  111. package/dist/esm/data/DataGallery.stories.js.map +1 -1
  112. package/dist/esm/data/DataScrollerRow.d.ts +4 -0
  113. package/dist/esm/data/DataScrollerRow.d.ts.map +1 -0
  114. package/dist/esm/data/DataScrollerRow.js +48 -0
  115. package/dist/esm/data/DataScrollerRow.js.map +1 -0
  116. package/dist/esm/data/PrimeDataScroller.d.ts +3 -0
  117. package/dist/esm/data/PrimeDataScroller.d.ts.map +1 -0
  118. package/dist/esm/data/PrimeDataScroller.js +118 -0
  119. package/dist/esm/data/PrimeDataScroller.js.map +1 -0
  120. package/dist/esm/data/PrimeTreeTable.d.ts +3 -0
  121. package/dist/esm/data/PrimeTreeTable.d.ts.map +1 -0
  122. package/dist/esm/data/PrimeTreeTable.js +215 -0
  123. package/dist/esm/data/PrimeTreeTable.js.map +1 -0
  124. package/dist/esm/data/TreeTableCheckState.d.ts +6 -0
  125. package/dist/esm/data/TreeTableCheckState.d.ts.map +1 -0
  126. package/dist/esm/data/TreeTableCheckState.js +11 -0
  127. package/dist/esm/data/TreeTableCheckState.js.map +1 -0
  128. package/dist/esm/data/TreeTableRow.d.ts +10 -0
  129. package/dist/esm/data/TreeTableRow.d.ts.map +1 -0
  130. package/dist/esm/data/TreeTableRow.js +2 -0
  131. package/dist/esm/data/TreeTableRow.js.map +1 -0
  132. package/dist/esm/data/TreeTableRowView.d.ts +21 -0
  133. package/dist/esm/data/TreeTableRowView.d.ts.map +1 -0
  134. package/dist/esm/data/TreeTableRowView.js +74 -0
  135. package/dist/esm/data/TreeTableRowView.js.map +1 -0
  136. package/dist/esm/data/TreeTableSelectionMode.d.ts +7 -0
  137. package/dist/esm/data/TreeTableSelectionMode.d.ts.map +1 -0
  138. package/dist/esm/data/TreeTableSelectionMode.js +12 -0
  139. package/dist/esm/data/TreeTableSelectionMode.js.map +1 -0
  140. package/dist/esm/data/checkboxSelection.d.ts +9 -0
  141. package/dist/esm/data/checkboxSelection.d.ts.map +1 -0
  142. package/dist/esm/data/checkboxSelection.js +85 -0
  143. package/dist/esm/data/checkboxSelection.js.map +1 -0
  144. package/dist/esm/data/index.d.ts +4 -0
  145. package/dist/esm/data/index.d.ts.map +1 -1
  146. package/dist/esm/data/index.js +4 -0
  147. package/dist/esm/data/index.js.map +1 -1
  148. package/dist/esm/data/isSerializedLegacyElement.d.ts +3 -0
  149. package/dist/esm/data/isSerializedLegacyElement.d.ts.map +1 -0
  150. package/dist/esm/data/isSerializedLegacyElement.js +27 -0
  151. package/dist/esm/data/isSerializedLegacyElement.js.map +1 -0
  152. package/dist/esm/data/readableValue.d.ts +2 -0
  153. package/dist/esm/data/readableValue.d.ts.map +1 -0
  154. package/dist/esm/data/readableValue.js +29 -0
  155. package/dist/esm/data/readableValue.js.map +1 -0
  156. package/dist/esm/data/selectionKeysOf.d.ts +2 -0
  157. package/dist/esm/data/selectionKeysOf.d.ts.map +1 -0
  158. package/dist/esm/data/selectionKeysOf.js +38 -0
  159. package/dist/esm/data/selectionKeysOf.js.map +1 -0
  160. package/dist/esm/data/treeTableRows.d.ts +6 -0
  161. package/dist/esm/data/treeTableRows.d.ts.map +1 -0
  162. package/dist/esm/data/treeTableRows.js +38 -0
  163. package/dist/esm/data/treeTableRows.js.map +1 -0
  164. package/dist/esm/data/useIncrementalLoad.d.ts +6 -0
  165. package/dist/esm/data/useIncrementalLoad.d.ts.map +1 -0
  166. package/dist/esm/data/useIncrementalLoad.js +44 -0
  167. package/dist/esm/data/useIncrementalLoad.js.map +1 -0
  168. package/dist/esm/data/useLoadOnReach.d.ts +3 -0
  169. package/dist/esm/data/useLoadOnReach.d.ts.map +1 -0
  170. package/dist/esm/data/useLoadOnReach.js +40 -0
  171. package/dist/esm/data/useLoadOnReach.js.map +1 -0
  172. package/dist/esm/data/useTreeGridNavigation.d.ts +17 -0
  173. package/dist/esm/data/useTreeGridNavigation.d.ts.map +1 -0
  174. package/dist/esm/data/useTreeGridNavigation.js +73 -0
  175. package/dist/esm/data/useTreeGridNavigation.js.map +1 -0
  176. package/dist/esm/editor/PrimeEditor.d.ts +3 -0
  177. package/dist/esm/editor/PrimeEditor.d.ts.map +1 -0
  178. package/dist/esm/editor/PrimeEditor.js +94 -0
  179. package/dist/esm/editor/PrimeEditor.js.map +1 -0
  180. package/dist/esm/editor/QuillConstructor.d.ts +4 -0
  181. package/dist/esm/editor/QuillConstructor.d.ts.map +1 -0
  182. package/dist/esm/editor/QuillConstructor.js +2 -0
  183. package/dist/esm/editor/QuillConstructor.js.map +1 -0
  184. package/dist/esm/editor/QuillEditorOptions.d.ts +13 -0
  185. package/dist/esm/editor/QuillEditorOptions.d.ts.map +1 -0
  186. package/dist/esm/editor/QuillEditorOptions.js +2 -0
  187. package/dist/esm/editor/QuillEditorOptions.js.map +1 -0
  188. package/dist/esm/editor/QuillEditorState.d.ts +6 -0
  189. package/dist/esm/editor/QuillEditorState.d.ts.map +1 -0
  190. package/dist/esm/editor/QuillEditorState.js +2 -0
  191. package/dist/esm/editor/QuillEditorState.js.map +1 -0
  192. package/dist/esm/editor/QuillInstance.d.ts +16 -0
  193. package/dist/esm/editor/QuillInstance.d.ts.map +1 -0
  194. package/dist/esm/editor/QuillInstance.js +2 -0
  195. package/dist/esm/editor/QuillInstance.js.map +1 -0
  196. package/dist/esm/editor/QuillLoader.d.ts +5 -0
  197. package/dist/esm/editor/QuillLoader.d.ts.map +1 -0
  198. package/dist/esm/editor/QuillLoader.js +2 -0
  199. package/dist/esm/editor/QuillLoader.js.map +1 -0
  200. package/dist/esm/editor/QuillLoaderContext.d.ts +3 -0
  201. package/dist/esm/editor/QuillLoaderContext.d.ts.map +1 -0
  202. package/dist/esm/editor/QuillLoaderContext.js +8 -0
  203. package/dist/esm/editor/QuillLoaderContext.js.map +1 -0
  204. package/dist/esm/editor/QuillLoaderProvider.d.ts +8 -0
  205. package/dist/esm/editor/QuillLoaderProvider.d.ts.map +1 -0
  206. package/dist/esm/editor/QuillLoaderProvider.js +19 -0
  207. package/dist/esm/editor/QuillLoaderProvider.js.map +1 -0
  208. package/dist/esm/editor/QuillOptions.d.ts +9 -0
  209. package/dist/esm/editor/QuillOptions.d.ts.map +1 -0
  210. package/dist/esm/editor/QuillOptions.js +2 -0
  211. package/dist/esm/editor/QuillOptions.js.map +1 -0
  212. package/dist/esm/editor/SafeElement.d.ts +7 -0
  213. package/dist/esm/editor/SafeElement.d.ts.map +1 -0
  214. package/dist/esm/editor/SafeElement.js +2 -0
  215. package/dist/esm/editor/SafeElement.js.map +1 -0
  216. package/dist/esm/editor/SafeNode.d.ts +3 -0
  217. package/dist/esm/editor/SafeNode.d.ts.map +1 -0
  218. package/dist/esm/editor/SafeNode.js +2 -0
  219. package/dist/esm/editor/SafeNode.js.map +1 -0
  220. package/dist/esm/editor/applyHtml.d.ts +3 -0
  221. package/dist/esm/editor/applyHtml.d.ts.map +1 -0
  222. package/dist/esm/editor/applyHtml.js +23 -0
  223. package/dist/esm/editor/applyHtml.js.map +1 -0
  224. package/dist/esm/editor/characterCount.d.ts +3 -0
  225. package/dist/esm/editor/characterCount.d.ts.map +1 -0
  226. package/dist/esm/editor/characterCount.js +8 -0
  227. package/dist/esm/editor/characterCount.js.map +1 -0
  228. package/dist/esm/editor/htmlToPlainText.d.ts +2 -0
  229. package/dist/esm/editor/htmlToPlainText.d.ts.map +1 -0
  230. package/dist/esm/editor/htmlToPlainText.js +99 -0
  231. package/dist/esm/editor/htmlToPlainText.js.map +1 -0
  232. package/dist/esm/editor/index.d.ts +14 -0
  233. package/dist/esm/editor/index.d.ts.map +1 -0
  234. package/dist/esm/editor/index.js +14 -0
  235. package/dist/esm/editor/index.js.map +1 -0
  236. package/dist/esm/editor/renderSafeNodes.d.ts +4 -0
  237. package/dist/esm/editor/renderSafeNodes.d.ts.map +1 -0
  238. package/dist/esm/editor/renderSafeNodes.js +33 -0
  239. package/dist/esm/editor/renderSafeNodes.js.map +1 -0
  240. package/dist/esm/editor/safeUrls.d.ts +3 -0
  241. package/dist/esm/editor/safeUrls.d.ts.map +1 -0
  242. package/dist/esm/editor/safeUrls.js +41 -0
  243. package/dist/esm/editor/safeUrls.js.map +1 -0
  244. package/dist/esm/editor/sanitizeHtml.d.ts +3 -0
  245. package/dist/esm/editor/sanitizeHtml.d.ts.map +1 -0
  246. package/dist/esm/editor/sanitizeHtml.js +138 -0
  247. package/dist/esm/editor/sanitizeHtml.js.map +1 -0
  248. package/dist/esm/editor/serializeSafeNodes.d.ts +3 -0
  249. package/dist/esm/editor/serializeSafeNodes.d.ts.map +1 -0
  250. package/dist/esm/editor/serializeSafeNodes.js +31 -0
  251. package/dist/esm/editor/serializeSafeNodes.js.map +1 -0
  252. package/dist/esm/editor/toolbarLayout.d.ts +2 -0
  253. package/dist/esm/editor/toolbarLayout.d.ts.map +1 -0
  254. package/dist/esm/editor/toolbarLayout.js +33 -0
  255. package/dist/esm/editor/toolbarLayout.js.map +1 -0
  256. package/dist/esm/editor/useQuillEditor.d.ts +4 -0
  257. package/dist/esm/editor/useQuillEditor.d.ts.map +1 -0
  258. package/dist/esm/editor/useQuillEditor.js +135 -0
  259. package/dist/esm/editor/useQuillEditor.js.map +1 -0
  260. package/dist/esm/file/FileGallery.stories.d.ts +19 -0
  261. package/dist/esm/file/FileGallery.stories.d.ts.map +1 -0
  262. package/dist/esm/file/FileGallery.stories.js +23 -0
  263. package/dist/esm/file/FileGallery.stories.js.map +1 -0
  264. package/dist/esm/file/FileUploadContext.d.ts +7 -0
  265. package/dist/esm/file/FileUploadContext.d.ts.map +1 -0
  266. package/dist/esm/file/FileUploadContext.js +11 -0
  267. package/dist/esm/file/FileUploadContext.js.map +1 -0
  268. package/dist/esm/file/FileUploadHandler.d.ts +4 -0
  269. package/dist/esm/file/FileUploadHandler.d.ts.map +1 -0
  270. package/dist/esm/file/FileUploadHandler.js +2 -0
  271. package/dist/esm/file/FileUploadHandler.js.map +1 -0
  272. package/dist/esm/file/FileUploadHandlerProvider.d.ts +9 -0
  273. package/dist/esm/file/FileUploadHandlerProvider.d.ts.map +1 -0
  274. package/dist/esm/file/FileUploadHandlerProvider.js +23 -0
  275. package/dist/esm/file/FileUploadHandlerProvider.js.map +1 -0
  276. package/dist/esm/file/FileUploadMode.d.ts +6 -0
  277. package/dist/esm/file/FileUploadMode.d.ts.map +1 -0
  278. package/dist/esm/file/FileUploadMode.js +11 -0
  279. package/dist/esm/file/FileUploadMode.js.map +1 -0
  280. package/dist/esm/file/PrimeFileUpload.d.ts +3 -0
  281. package/dist/esm/file/PrimeFileUpload.d.ts.map +1 -0
  282. package/dist/esm/file/PrimeFileUpload.js +159 -0
  283. package/dist/esm/file/PrimeFileUpload.js.map +1 -0
  284. package/dist/esm/file/UploadStatus.d.ts +5 -0
  285. package/dist/esm/file/UploadStatus.d.ts.map +1 -0
  286. package/dist/esm/file/UploadStatus.js +2 -0
  287. package/dist/esm/file/UploadStatus.js.map +1 -0
  288. package/dist/esm/file/UploadTarget.d.ts +8 -0
  289. package/dist/esm/file/UploadTarget.d.ts.map +1 -0
  290. package/dist/esm/file/UploadTarget.js +2 -0
  291. package/dist/esm/file/UploadTarget.js.map +1 -0
  292. package/dist/esm/file/index.d.ts +7 -0
  293. package/dist/esm/file/index.d.ts.map +1 -0
  294. package/dist/esm/file/index.js +7 -0
  295. package/dist/esm/file/index.js.map +1 -0
  296. package/dist/esm/file/postFiles.d.ts +2 -0
  297. package/dist/esm/file/postFiles.d.ts.map +1 -0
  298. package/dist/esm/file/postFiles.js +29 -0
  299. package/dist/esm/file/postFiles.js.map +1 -0
  300. package/dist/esm/file/resolveUploadTarget.d.ts +3 -0
  301. package/dist/esm/file/resolveUploadTarget.d.ts.map +1 -0
  302. package/dist/esm/file/resolveUploadTarget.js +66 -0
  303. package/dist/esm/file/resolveUploadTarget.js.map +1 -0
  304. package/dist/esm/file/useUploadSession.d.ts +10 -0
  305. package/dist/esm/file/useUploadSession.d.ts.map +1 -0
  306. package/dist/esm/file/useUploadSession.js +60 -0
  307. package/dist/esm/file/useUploadSession.js.map +1 -0
  308. package/dist/esm/form/FormGallery.stories.d.ts.map +1 -1
  309. package/dist/esm/form/FormGallery.stories.js +1 -0
  310. package/dist/esm/form/FormGallery.stories.js.map +1 -1
  311. package/dist/esm/index.d.ts +2 -0
  312. package/dist/esm/index.d.ts.map +1 -1
  313. package/dist/esm/index.js +16 -1
  314. package/dist/esm/index.js.map +1 -1
  315. package/dist/esm/legacyEnumerationChoices.d.ts +3 -0
  316. package/dist/esm/legacyEnumerationChoices.d.ts.map +1 -0
  317. package/dist/esm/legacyEnumerationChoices.js +37 -0
  318. package/dist/esm/legacyEnumerationChoices.js.map +1 -0
  319. package/dist/esm/loadQuill/index.d.ts +3 -0
  320. package/dist/esm/loadQuill/index.d.ts.map +1 -0
  321. package/dist/esm/loadQuill/index.js +20 -0
  322. package/dist/esm/loadQuill/index.js.map +1 -0
  323. package/dist/esm/primeReactComponents.d.ts.map +1 -1
  324. package/dist/esm/primeReactComponents.js +10 -0
  325. package/dist/esm/primeReactComponents.js.map +1 -1
  326. package/dist/esm/primeReactDescriptors.d.ts.map +1 -1
  327. package/dist/esm/primeReactDescriptors.js +243 -0
  328. package/dist/esm/primeReactDescriptors.js.map +1 -1
  329. package/dist/esm/primeReactPackage.js +4 -0
  330. package/dist/esm/primeReactPackage.js.map +1 -1
  331. package/dist/esm/resolveEnumeration.d.ts +3 -0
  332. package/dist/esm/resolveEnumeration.d.ts.map +1 -0
  333. package/dist/esm/resolveEnumeration.js +53 -0
  334. package/dist/esm/resolveEnumeration.js.map +1 -0
  335. package/dist/esm/treeNodes.d.ts +2 -1
  336. package/dist/esm/treeNodes.d.ts.map +1 -1
  337. package/dist/esm/treeNodes.js +42 -8
  338. package/dist/esm/treeNodes.js.map +1 -1
  339. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  340. package/dist/esm/useResettingState.d.ts +3 -0
  341. package/dist/esm/useResettingState.d.ts.map +1 -0
  342. package/dist/esm/useResettingState.js +45 -0
  343. package/dist/esm/useResettingState.js.map +1 -0
  344. package/editor/PrimeEditor.tsx +83 -0
  345. package/editor/QuillConstructor.ts +8 -0
  346. package/editor/QuillEditorOptions.ts +29 -0
  347. package/editor/QuillEditorState.ts +14 -0
  348. package/editor/QuillInstance.ts +27 -0
  349. package/editor/QuillLoader.ts +13 -0
  350. package/editor/QuillLoaderContext.ts +8 -0
  351. package/editor/QuillLoaderProvider.tsx +24 -0
  352. package/editor/QuillOptions.ts +10 -0
  353. package/editor/SafeElement.ts +15 -0
  354. package/editor/SafeNode.ts +7 -0
  355. package/editor/applyHtml.ts +21 -0
  356. package/editor/characterCount.ts +9 -0
  357. package/editor/htmlToPlainText.ts +74 -0
  358. package/editor/index.ts +16 -0
  359. package/editor/renderSafeNodes.tsx +26 -0
  360. package/editor/safeUrls.ts +43 -0
  361. package/editor/sanitizeHtml.ts +94 -0
  362. package/editor/serializeSafeNodes.ts +26 -0
  363. package/editor/toolbarLayout.ts +10 -0
  364. package/editor/useQuillEditor.ts +114 -0
  365. package/file/FileGallery.stories.tsx +32 -0
  366. package/file/FileUploadContext.ts +17 -0
  367. package/file/FileUploadHandler.ts +15 -0
  368. package/file/FileUploadHandlerProvider.tsx +33 -0
  369. package/file/FileUploadMode.ts +9 -0
  370. package/file/PrimeFileUpload.tsx +129 -0
  371. package/file/UploadStatus.ts +9 -0
  372. package/file/UploadTarget.ts +12 -0
  373. package/file/index.ts +9 -0
  374. package/file/postFiles.ts +23 -0
  375. package/file/resolveUploadTarget.ts +61 -0
  376. package/file/useUploadSession.ts +67 -0
  377. package/form/FormGallery.stories.tsx +1 -0
  378. package/index.ts +2 -0
  379. package/legacyEnumerationChoices.ts +35 -0
  380. package/loadQuill/index.ts +21 -0
  381. package/package.json +17 -7
  382. package/primeReactComponents.ts +8 -0
  383. package/primeReactDescriptors.ts +63 -0
  384. package/primeReactPackage.ts +2 -2
  385. package/primeReactTheme.css +69 -0
  386. package/resolveEnumeration.ts +50 -0
  387. package/treeNodes.ts +44 -6
  388. package/useResettingState.ts +34 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeTableRows.js","sources":["../../../data/treeTableRows.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 { TreeTableRow } from './TreeTableRow';\n\n/**\n * Flattens the nodes into the rows that are visible: a node's children follow it only while it is expanded.\n *\n * @param nodes The sibling nodes to flatten.\n * @param expanded The keys of the expanded nodes.\n */\nexport function visibleRows(nodes: TreeNode[], expanded: ReadonlySet<string>, depth = 0, parentKey?: string): TreeTableRow[] {\n return nodes.flatMap((node, index) => {\n const key = node.key ?? '';\n const row: TreeTableRow = { node, key, depth, parentKey, position: index + 1, siblings: nodes.length };\n return [row, ...(node.children !== undefined && expanded.has(key) ? visibleRows(node.children, expanded, depth + 1, key) : [])];\n });\n}\n\n/** The keys of the nodes authored as expanded, at any depth, in tree order. */\nexport function expandedKeysOf(nodes: TreeNode[]): string[] {\n return nodes.flatMap(node => [\n ...(node.expanded === true && node.key !== undefined ? [node.key] : []),\n ...expandedKeysOf(node.children ?? []),\n ]);\n}\n\n/** A node's own text for naming it: its label, else its key. */\nexport function nodeLabel(node: TreeNode): string {\n return node.label ?? node.key ?? '';\n}\n"],"names":["visibleRows","nodes","expanded","depth","parentKey","flatMap","node","index","key","row","position","siblings","length","children","undefined","has","expandedKeysOf","nodeLabel","label"],"mappings":"AAAA;AACA;AAKA;;;;;IAMO,SAASA,WAAAA,CAAYC,KAAiB,EAAEC,QAA6B,EAAEC,KAAAA,GAAQ,CAAC,EAAEC,SAAkB,EAAA;AACvG,IAAA,OAAOH,KAAAA,CAAMI,OAAO,CAAC,CAACC,IAAAA,EAAMC,KAAAA,GAAAA;QACxB,MAAMC,GAAAA,GAAMF,IAAAA,CAAKE,GAAG,IAAI,EAAA;AACxB,QAAA,MAAMC,GAAAA,GAAoB;AAAEH,YAAAA,IAAAA;AAAME,YAAAA,GAAAA;AAAKL,YAAAA,KAAAA;AAAOC,YAAAA,SAAAA;AAAWM,YAAAA,QAAAA,EAAUH,KAAAA,GAAQ,CAAA;AAAGI,YAAAA,QAAAA,EAAUV,MAAMW;AAAO,SAAA;QACrG,OAAO;AAACH,YAAAA,GAAAA;AAASH,YAAAA,GAAAA,IAAAA,CAAKO,QAAQ,KAAKC,SAAAA,IAAaZ,QAAAA,CAASa,GAAG,CAACP,GAAAA,CAAAA,GAAOR,WAAAA,CAAYM,IAAAA,CAAKO,QAAQ,EAAEX,QAAAA,EAAUC,KAAAA,GAAQ,CAAA,EAAGK,OAAO;AAAI,SAAA;AACnI,IAAA,CAAA,CAAA;AACJ;AAEA,gFACO,SAASQ,cAAAA,CAAef,KAAiB,EAAA;AAC5C,IAAA,OAAOA,KAAAA,CAAMI,OAAO,CAACC,CAAAA,IAAAA,GAAQ;AACrBA,YAAAA,GAAAA,IAAAA,CAAKJ,QAAQ,KAAK,IAAA,IAAQI,IAAAA,CAAKE,GAAG,KAAKM,SAAAA,GAAY;AAACR,gBAAAA,IAAAA,CAAKE;AAAI,aAAA,GAAG,EAAE;eACnEQ,cAAAA,CAAeV,IAAAA,CAAKO,QAAQ,IAAI,EAAE;AACxC,SAAA,CAAA;AACL;AAEA,iEACO,SAASI,SAAAA,CAAUX,IAAc,EAAA;AACpC,IAAA,OAAOA,IAAAA,CAAKY,KAAK,IAAIZ,IAAAA,CAAKE,GAAG,IAAI,EAAA;AACrC;;"}
@@ -0,0 +1,6 @@
1
+ export interface IncrementalLoad {
2
+ loaded: number;
3
+ loadMore(): void;
4
+ }
5
+ export declare function useIncrementalLoad(total: number, chunk: number, resetKey: unknown): IncrementalLoad;
6
+ //# sourceMappingURL=useIncrementalLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIncrementalLoad.d.ts","sourceRoot":"","sources":["../../../data/useIncrementalLoad.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAE5B,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,IAAI,IAAI,CAAC;CACpB;AAaD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,CAUnG"}
@@ -0,0 +1,44 @@
1
+ import { useState, useCallback } from 'react';
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
+ /**
6
+ * Tracks how many entries of a list are loaded, a chunk at a time.
7
+ *
8
+ * The count follows the authored properties: it starts over at one chunk when the chunk size changes or when
9
+ * `resetKey` does, so a document edit that replaces the items does not leave the old count behind. Pass a
10
+ * structurally stable `resetKey` (see `useStructuralValue`), or every render would reset it.
11
+ *
12
+ * @param total The number of entries there are.
13
+ * @param chunk The number of entries per load.
14
+ * @param resetKey Changes when the entries are replaced.
15
+ */ function useIncrementalLoad(total, chunk, resetKey) {
16
+ const [state, setState] = useState({
17
+ resetKey,
18
+ chunk,
19
+ loaded: chunk
20
+ });
21
+ let loaded = state.loaded;
22
+ if (state.resetKey !== resetKey || state.chunk !== chunk) {
23
+ setState({
24
+ resetKey,
25
+ chunk,
26
+ loaded: chunk
27
+ });
28
+ loaded = chunk;
29
+ }
30
+ const loadMore = useCallback(()=>setState((current)=>({
31
+ ...current,
32
+ loaded: Math.min(current.loaded + chunk, total)
33
+ })), [
34
+ chunk,
35
+ total
36
+ ]);
37
+ return {
38
+ loaded: Math.min(loaded, total),
39
+ loadMore
40
+ };
41
+ }
42
+
43
+ export { useIncrementalLoad };
44
+ //# sourceMappingURL=useIncrementalLoad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIncrementalLoad.js","sources":["../../../data/useIncrementalLoad.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 { useCallback, useState } from 'react';\n\n/** How much of a list is loaded and how to load more. */\nexport interface IncrementalLoad {\n /** The number of entries loaded, never more than the total. */\n loaded: number;\n\n /** Loads the next chunk. */\n loadMore(): void;\n}\n\n/**\n * Tracks how many entries of a list are loaded, a chunk at a time.\n *\n * The count follows the authored properties: it starts over at one chunk when the chunk size changes or when\n * `resetKey` does, so a document edit that replaces the items does not leave the old count behind. Pass a\n * structurally stable `resetKey` (see `useStructuralValue`), or every render would reset it.\n *\n * @param total The number of entries there are.\n * @param chunk The number of entries per load.\n * @param resetKey Changes when the entries are replaced.\n */\nexport function useIncrementalLoad(total: number, chunk: number, resetKey: unknown): IncrementalLoad {\n const [state, setState] = useState({ resetKey, chunk, loaded: chunk });\n let loaded = state.loaded;\n if (state.resetKey !== resetKey || state.chunk !== chunk) {\n setState({ resetKey, chunk, loaded: chunk });\n loaded = chunk;\n }\n\n const loadMore = useCallback(() => setState(current => ({ ...current, loaded: Math.min(current.loaded + chunk, total) })), [chunk, total]);\n return { loaded: Math.min(loaded, total), loadMore };\n}\n"],"names":["useIncrementalLoad","total","chunk","resetKey","state","setState","useState","loaded","loadMore","useCallback","current","Math","min"],"mappings":";;AAAA;AACA;AAaA;;;;;;;;;;AAUC,IACM,SAASA,kBAAAA,CAAmBC,KAAa,EAAEC,KAAa,EAAEC,QAAiB,EAAA;AAC9E,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,QAAAA,CAAS;AAAEH,QAAAA,QAAAA;AAAUD,QAAAA,KAAAA;QAAOK,MAAAA,EAAQL;AAAM,KAAA,CAAA;IACpE,IAAIK,MAAAA,GAASH,MAAMG,MAAM;AACzB,IAAA,IAAIH,MAAMD,QAAQ,KAAKA,YAAYC,KAAAA,CAAMF,KAAK,KAAKA,KAAAA,EAAO;QACtDG,QAAAA,CAAS;AAAEF,YAAAA,QAAAA;AAAUD,YAAAA,KAAAA;YAAOK,MAAAA,EAAQL;AAAM,SAAA,CAAA;QAC1CK,MAAAA,GAASL,KAAAA;AACb,IAAA;AAEA,IAAA,MAAMM,WAAWC,WAAAA,CAAY,IAAMJ,QAAAA,CAASK,CAAAA,WAAY;AAAE,gBAAA,GAAGA,OAAO;AAAEH,gBAAAA,MAAAA,EAAQI,KAAKC,GAAG,CAACF,OAAAA,CAAQH,MAAM,GAAGL,KAAAA,EAAOD,KAAAA;AAAO,aAAA,CAAA,CAAA,EAAK;AAACC,QAAAA,KAAAA;AAAOD,QAAAA;AAAM,KAAA,CAAA;IACzI,OAAO;QAAEM,MAAAA,EAAQI,IAAAA,CAAKC,GAAG,CAACL,MAAAA,EAAQN,KAAAA,CAAAA;AAAQO,QAAAA;AAAS,KAAA;AACvD;;"}
@@ -0,0 +1,3 @@
1
+ import { RefObject } from 'react';
2
+ export declare function useLoadOnReach(sentinel: RefObject<HTMLElement | null>, root: RefObject<HTMLElement | null> | null, active: boolean, revision: unknown, onReach: () => void): void;
3
+ //# sourceMappingURL=useLoadOnReach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadOnReach.d.ts","sourceRoot":"","sources":["../../../data/useLoadOnReach.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAgB7C,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAWjL"}
@@ -0,0 +1,40 @@
1
+ import { useEffect } from 'react';
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
+ /**
6
+ * Calls `onReach` while the sentinel is visible, which is what scrolling to the end of a list means.
7
+ *
8
+ * The observer is rebuilt whenever `revision` changes, so a sentinel that is still visible after a chunk was
9
+ * loaded loads the next one, until the viewport is filled or the list ends. `root` is the element that
10
+ * scrolls for an inline list; `null` observes the page's own viewport. Where there is no
11
+ * `IntersectionObserver` nothing is observed and the list's own button remains the way to load more.
12
+ *
13
+ * @param sentinel The element placed after the last loaded entry.
14
+ * @param root The scrolling container, or `null` for the page.
15
+ * @param active Whether reaching the end should load anything.
16
+ * @param revision A value that changes each time the list changed.
17
+ * @param onReach Loads the next chunk.
18
+ */ function useLoadOnReach(sentinel, root, active, revision, onReach) {
19
+ useEffect(()=>{
20
+ const target = sentinel.current;
21
+ if (!active || target === null || typeof IntersectionObserver === 'undefined') return undefined;
22
+ const observer = new IntersectionObserver((entries)=>{
23
+ if (entries.some((entry)=>entry.isIntersecting)) onReach();
24
+ }, {
25
+ root: root?.current ?? null,
26
+ rootMargin: '0px 0px 48px 0px'
27
+ });
28
+ observer.observe(target);
29
+ return ()=>observer.disconnect();
30
+ }, [
31
+ sentinel,
32
+ root,
33
+ active,
34
+ revision,
35
+ onReach
36
+ ]);
37
+ }
38
+
39
+ export { useLoadOnReach };
40
+ //# sourceMappingURL=useLoadOnReach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadOnReach.js","sources":["../../../data/useLoadOnReach.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 { RefObject, useEffect } from 'react';\n\n/**\n * Calls `onReach` while the sentinel is visible, which is what scrolling to the end of a list means.\n *\n * The observer is rebuilt whenever `revision` changes, so a sentinel that is still visible after a chunk was\n * loaded loads the next one, until the viewport is filled or the list ends. `root` is the element that\n * scrolls for an inline list; `null` observes the page's own viewport. Where there is no\n * `IntersectionObserver` nothing is observed and the list's own button remains the way to load more.\n *\n * @param sentinel The element placed after the last loaded entry.\n * @param root The scrolling container, or `null` for the page.\n * @param active Whether reaching the end should load anything.\n * @param revision A value that changes each time the list changed.\n * @param onReach Loads the next chunk.\n */\nexport function useLoadOnReach(sentinel: RefObject<HTMLElement | null>, root: RefObject<HTMLElement | null> | null, active: boolean, revision: unknown, onReach: () => void): void {\n useEffect(() => {\n const target = sentinel.current;\n if (!active || target === null || typeof IntersectionObserver === 'undefined') return undefined;\n\n const observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) onReach();\n }, { root: root?.current ?? null, rootMargin: '0px 0px 48px 0px' });\n observer.observe(target);\n return () => observer.disconnect();\n }, [sentinel, root, active, revision, onReach]);\n}\n"],"names":["useLoadOnReach","sentinel","root","active","revision","onReach","useEffect","target","current","IntersectionObserver","undefined","observer","entries","some","entry","isIntersecting","rootMargin","observe","disconnect"],"mappings":";;AAAA;AACA;AAIA;;;;;;;;;;;;;IAcO,SAASA,cAAAA,CAAeC,QAAuC,EAAEC,IAA0C,EAAEC,MAAe,EAAEC,QAAiB,EAAEC,OAAmB,EAAA;IACvKC,SAAAA,CAAU,IAAA;QACN,MAAMC,MAAAA,GAASN,SAASO,OAAO;AAC/B,QAAA,IAAI,CAACL,MAAAA,IAAUI,MAAAA,KAAW,QAAQ,OAAOE,oBAAAA,KAAyB,aAAa,OAAOC,SAAAA;QAEtF,MAAMC,QAAAA,GAAW,IAAIF,oBAAAA,CAAqBG,CAAAA,OAAAA,GAAAA;AACtC,YAAA,IAAIA,QAAQC,IAAI,CAACC,CAAAA,KAAAA,GAASA,KAAAA,CAAMC,cAAc,CAAA,EAAGV,OAAAA,EAAAA;QACrD,CAAA,EAAG;AAAEH,YAAAA,IAAAA,EAAMA,MAAMM,OAAAA,IAAW,IAAA;YAAMQ,UAAAA,EAAY;AAAmB,SAAA,CAAA;AACjEL,QAAAA,QAAAA,CAASM,OAAO,CAACV,MAAAA,CAAAA;QACjB,OAAO,IAAMI,SAASO,UAAU,EAAA;IACpC,CAAA,EAAG;AAACjB,QAAAA,QAAAA;AAAUC,QAAAA,IAAAA;AAAMC,QAAAA,MAAAA;AAAQC,QAAAA,QAAAA;AAAUC,QAAAA;AAAQ,KAAA,CAAA;AAClD;;"}
@@ -0,0 +1,17 @@
1
+ import { KeyboardEvent } from 'react';
2
+ import { TreeTableRow } from './TreeTableRow';
3
+ export interface TreeGridNavigationOptions {
4
+ rows: TreeTableRow[];
5
+ expanded: ReadonlySet<string>;
6
+ enabled: boolean;
7
+ toggle(key: string): void;
8
+ select(row: TreeTableRow): void;
9
+ }
10
+ export interface TreeGridNavigation {
11
+ tabStopKey: string | undefined;
12
+ register(key: string, element: HTMLElement | null): void;
13
+ activate(key: string): void;
14
+ onKeyDown(row: TreeTableRow, event: KeyboardEvent<HTMLElement>): void;
15
+ }
16
+ export declare function useTreeGridNavigation({ rows, expanded, enabled, toggle, select }: TreeGridNavigationOptions): TreeGridNavigation;
17
+ //# sourceMappingURL=useTreeGridNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTreeGridNavigation.d.ts","sourceRoot":"","sources":["../../../data/useTreeGridNavigation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAiC,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAGD,MAAM,WAAW,kBAAkB;IAE/B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAG/B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAGzD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CACzE;AASD,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,yBAAyB,GAAG,kBAAkB,CA2ChI"}
@@ -0,0 +1,73 @@
1
+ import { useState, useRef, useCallback } from 'react';
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
+ /**
6
+ * The keyboard model of an ARIA tree grid, with a roving tab index.
7
+ *
8
+ * Up and Down move between visible rows, Home and End to the first and last, Right expands a collapsed row or
9
+ * enters its first child, Left collapses an expanded row or goes to its parent, and Space or Enter selects.
10
+ * Keys pressed on a control inside the row (its expand button or checkbox) are left to that control.
11
+ */ function useTreeGridNavigation({ rows, expanded, enabled, toggle, select }) {
12
+ const [activeKey, setActiveKey] = useState(undefined);
13
+ const elements = useRef(new Map());
14
+ const tabStopKey = rows.some((row)=>row.key === activeKey) ? activeKey : rows[0]?.key;
15
+ const register = useCallback((key, element)=>{
16
+ if (element === null) elements.current.delete(key);
17
+ else elements.current.set(key, element);
18
+ }, []);
19
+ const moveTo = (row)=>{
20
+ if (row === undefined) return;
21
+ setActiveKey(row.key);
22
+ elements.current.get(row.key)?.focus();
23
+ };
24
+ const onKeyDown = (row, event)=>{
25
+ if (event.target !== event.currentTarget) return;
26
+ const index = rows.indexOf(row);
27
+ const hasChildren = (row.node.children?.length ?? 0) > 0;
28
+ const handled = (action)=>{
29
+ event.preventDefault();
30
+ action();
31
+ };
32
+ switch(event.key){
33
+ case 'ArrowDown':
34
+ handled(()=>moveTo(rows[index + 1]));
35
+ break;
36
+ case 'ArrowUp':
37
+ handled(()=>moveTo(rows[index - 1]));
38
+ break;
39
+ case 'Home':
40
+ handled(()=>moveTo(rows[0]));
41
+ break;
42
+ case 'End':
43
+ handled(()=>moveTo(rows[rows.length - 1]));
44
+ break;
45
+ case 'ArrowRight':
46
+ if (hasChildren) handled(()=>{
47
+ if (!expanded.has(row.key)) {
48
+ if (enabled) toggle(row.key);
49
+ } else moveTo(rows[index + 1]);
50
+ });
51
+ break;
52
+ case 'ArrowLeft':
53
+ if (hasChildren && expanded.has(row.key)) handled(()=>{
54
+ if (enabled) toggle(row.key);
55
+ });
56
+ else if (row.parentKey !== undefined) handled(()=>moveTo(rows.find((candidate)=>candidate.key === row.parentKey)));
57
+ break;
58
+ case ' ':
59
+ case 'Enter':
60
+ handled(()=>select(row));
61
+ break;
62
+ }
63
+ };
64
+ return {
65
+ tabStopKey,
66
+ register,
67
+ activate: setActiveKey,
68
+ onKeyDown
69
+ };
70
+ }
71
+
72
+ export { useTreeGridNavigation };
73
+ //# sourceMappingURL=useTreeGridNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTreeGridNavigation.js","sources":["../../../data/useTreeGridNavigation.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 { KeyboardEvent, useCallback, useRef, useState } from 'react';\nimport { TreeTableRow } from './TreeTableRow';\n\n/** What the keyboard navigation of a tree grid needs from the control. */\nexport interface TreeGridNavigationOptions {\n rows: TreeTableRow[];\n expanded: ReadonlySet<string>;\n enabled: boolean;\n toggle(key: string): void;\n select(row: TreeTableRow): void;\n}\n\n/** The wiring a tree grid applies to its rows. */\nexport interface TreeGridNavigation {\n /** The one row that is in the tab order (roving tabindex). */\n tabStopKey: string | undefined;\n\n /** Gives the navigation the element of a row, so it can move focus there. */\n register(key: string, element: HTMLElement | null): void;\n\n /** Makes a row the tab stop, as a click does. */\n activate(key: string): void;\n\n /** The key handler of a row. */\n onKeyDown(row: TreeTableRow, event: KeyboardEvent<HTMLElement>): void;\n}\n\n/**\n * The keyboard model of an ARIA tree grid, with a roving tab index.\n *\n * Up and Down move between visible rows, Home and End to the first and last, Right expands a collapsed row or\n * enters its first child, Left collapses an expanded row or goes to its parent, and Space or Enter selects.\n * Keys pressed on a control inside the row (its expand button or checkbox) are left to that control.\n */\nexport function useTreeGridNavigation({ rows, expanded, enabled, toggle, select }: TreeGridNavigationOptions): TreeGridNavigation {\n const [activeKey, setActiveKey] = useState<string | undefined>(undefined);\n const elements = useRef(new Map<string, HTMLElement>());\n const tabStopKey = rows.some(row => row.key === activeKey) ? activeKey : rows[0]?.key;\n\n const register = useCallback((key: string, element: HTMLElement | null) => {\n if (element === null) elements.current.delete(key); else elements.current.set(key, element);\n }, []);\n\n const moveTo = (row: TreeTableRow | undefined) => {\n if (row === undefined) return;\n setActiveKey(row.key);\n elements.current.get(row.key)?.focus();\n };\n\n const onKeyDown = (row: TreeTableRow, event: KeyboardEvent<HTMLElement>) => {\n if (event.target !== event.currentTarget) return;\n const index = rows.indexOf(row);\n const hasChildren = (row.node.children?.length ?? 0) > 0;\n const handled = (action: () => void) => { event.preventDefault(); action(); };\n\n switch (event.key) {\n case 'ArrowDown': handled(() => moveTo(rows[index + 1])); break;\n case 'ArrowUp': handled(() => moveTo(rows[index - 1])); break;\n case 'Home': handled(() => moveTo(rows[0])); break;\n case 'End': handled(() => moveTo(rows[rows.length - 1])); break;\n case 'ArrowRight':\n if (hasChildren) handled(() => { if (!expanded.has(row.key)) { if (enabled) toggle(row.key); } else moveTo(rows[index + 1]); });\n break;\n case 'ArrowLeft':\n if (hasChildren && expanded.has(row.key)) handled(() => { if (enabled) toggle(row.key); });\n else if (row.parentKey !== undefined) handled(() => moveTo(rows.find(candidate => candidate.key === row.parentKey)));\n break;\n case ' ':\n case 'Enter':\n handled(() => select(row));\n break;\n default:\n break;\n }\n };\n\n return { tabStopKey, register, activate: setActiveKey, onKeyDown };\n}\n"],"names":["useTreeGridNavigation","rows","expanded","enabled","toggle","select","activeKey","setActiveKey","useState","undefined","elements","useRef","Map","tabStopKey","some","row","key","register","useCallback","element","current","delete","set","moveTo","get","focus","onKeyDown","event","target","currentTarget","index","indexOf","hasChildren","node","children","length","handled","action","preventDefault","has","parentKey","find","candidate","activate"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RegisteredComponentProps } from '@cratis/scene.react';
2
+ export declare function PrimeEditor({ element, interactions }: RegisteredComponentProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=PrimeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimeEditor.d.ts","sourceRoot":"","sources":["../../../editor/PrimeEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAwB/D,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,wBAAwB,+BAsD9E"}
@@ -0,0 +1,94 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useContext, useRef, useState, useEffect, useMemo } from 'react';
3
+ import { stringProperty, booleanProperty } from '../properties.js';
4
+ import { QuillLoaderContext } from './QuillLoaderContext.js';
5
+ import { htmlToPlainText } from './htmlToPlainText.js';
6
+ import { renderSafeNodes } from './renderSafeNodes.js';
7
+ import { sanitizeHtml } from './sanitizeHtml.js';
8
+ import { useQuillEditor } from './useQuillEditor.js';
9
+
10
+ /**
11
+ * The `PrimeReact:editor` rich-text control.
12
+ *
13
+ * Authored HTML is untrusted data and is never injected as markup. Everywhere it is shown it first goes
14
+ * through an allowlist (see {@link sanitizeHtml}): into Quill as a Delta, or into the read-only view as React
15
+ * elements. Where there is no DOM - server rendering, and the first client render so hydration matches - it is
16
+ * shown as plain text. `element.properties.value` itself is never changed.
17
+ *
18
+ * Editing needs Quill, which this package does not import. A host provides it with `QuillLoaderProvider`
19
+ * (the loader `loadQuill` lives in the `@cratis/scene.primereact/quill` entry point). Without a loader, or if
20
+ * loading fails, the content stays visible read-only and a status says why; the control never pretends to be
21
+ * editable.
22
+ *
23
+ * `readOnly: true` and `isEnabled: false` both stop editing. Edits are runtime state: `interactions.onChange`
24
+ * is called when the user edits, but the new HTML is not written back to the document or a binding.
25
+ */ function PrimeEditor({ element, interactions }) {
26
+ const loader = useContext(QuillLoaderContext);
27
+ const host = useRef(null);
28
+ const interactionReference = useRef(interactions);
29
+ interactionReference.current = interactions;
30
+ const [mounted, setMounted] = useState(false);
31
+ const html = stringProperty(element, 'value', '');
32
+ const readOnly = booleanProperty(element, 'readOnly', false);
33
+ const editable = !readOnly && element.isEnabled;
34
+ const ariaLabel = stringProperty(element, 'ariaLabel', 'Rich text editor');
35
+ useEffect(()=>setMounted(true), []);
36
+ const editor = useQuillEditor({
37
+ loader,
38
+ host,
39
+ html,
40
+ showHeader: booleanProperty(element, 'showHeader', true),
41
+ editable,
42
+ placeholder: stringProperty(element, 'placeholder'),
43
+ ariaLabel,
44
+ onUserChange: ()=>interactionReference.current?.onChange?.()
45
+ });
46
+ const readOnlyView = useMemo(()=>{
47
+ if (!mounted || typeof DOMParser === 'undefined') return htmlToPlainText(html);
48
+ return renderSafeNodes(sanitizeHtml(html));
49
+ }, [
50
+ mounted,
51
+ html
52
+ ]);
53
+ const status = !editor.ready ? undefined : editable ? `${editor.characters} characters` : readOnly ? 'Read only' : 'Disabled';
54
+ return /*#__PURE__*/ jsxs("section", {
55
+ "data-scene-id": element.id,
56
+ "data-scene-component": "editor",
57
+ onClick: interactions?.onClick,
58
+ onDoubleClick: interactions?.onDoubleClick,
59
+ children: [
60
+ /*#__PURE__*/ jsx("div", {
61
+ ref: host
62
+ }),
63
+ !editor.ready && /*#__PURE__*/ jsx("div", {
64
+ role: "textbox",
65
+ tabIndex: 0,
66
+ "aria-multiline": "true",
67
+ "aria-readonly": "true",
68
+ "aria-label": ariaLabel,
69
+ "data-scene-part": "read-only-content",
70
+ style: typeof readOnlyView === 'string' ? {
71
+ whiteSpace: 'pre-wrap'
72
+ } : undefined,
73
+ children: readOnlyView
74
+ }, typeof readOnlyView),
75
+ editor.failure !== undefined && /*#__PURE__*/ jsx("p", {
76
+ role: "alert",
77
+ "data-scene-state": "unavailable",
78
+ children: `Rich-text editing could not be loaded: ${editor.failure}`
79
+ }),
80
+ !editor.ready && editor.failure === undefined && loader === undefined && /*#__PURE__*/ jsx("p", {
81
+ role: "status",
82
+ "data-scene-state": "read-only",
83
+ children: "Rich-text editing is not available in this application. The content is shown read-only."
84
+ }),
85
+ status !== undefined && /*#__PURE__*/ jsx("output", {
86
+ "aria-live": "polite",
87
+ children: status
88
+ })
89
+ ]
90
+ });
91
+ }
92
+
93
+ export { PrimeEditor };
94
+ //# sourceMappingURL=PrimeEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimeEditor.js","sources":["../../../editor/PrimeEditor.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 { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { booleanProperty, stringProperty } from '../properties';\nimport { QuillLoaderContext } from './QuillLoaderContext';\nimport { htmlToPlainText } from './htmlToPlainText';\nimport { renderSafeNodes } from './renderSafeNodes';\nimport { sanitizeHtml } from './sanitizeHtml';\nimport { useQuillEditor } from './useQuillEditor';\n\n/**\n * The `PrimeReact:editor` rich-text control.\n *\n * Authored HTML is untrusted data and is never injected as markup. Everywhere it is shown it first goes\n * through an allowlist (see {@link sanitizeHtml}): into Quill as a Delta, or into the read-only view as React\n * elements. Where there is no DOM - server rendering, and the first client render so hydration matches - it is\n * shown as plain text. `element.properties.value` itself is never changed.\n *\n * Editing needs Quill, which this package does not import. A host provides it with `QuillLoaderProvider`\n * (the loader `loadQuill` lives in the `@cratis/scene.primereact/quill` entry point). Without a loader, or if\n * loading fails, the content stays visible read-only and a status says why; the control never pretends to be\n * editable.\n *\n * `readOnly: true` and `isEnabled: false` both stop editing. Edits are runtime state: `interactions.onChange`\n * is called when the user edits, but the new HTML is not written back to the document or a binding.\n */\nexport function PrimeEditor({ element, interactions }: RegisteredComponentProps) {\n const loader = useContext(QuillLoaderContext);\n const host = useRef<HTMLDivElement>(null);\n const interactionReference = useRef(interactions);\n interactionReference.current = interactions;\n const [mounted, setMounted] = useState(false);\n const html = stringProperty(element, 'value', '');\n const readOnly = booleanProperty(element, 'readOnly', false);\n const editable = !readOnly && element.isEnabled;\n const ariaLabel = stringProperty(element, 'ariaLabel', 'Rich text editor');\n\n useEffect(() => setMounted(true), []);\n\n const editor = useQuillEditor({\n loader,\n host,\n html,\n showHeader: booleanProperty(element, 'showHeader', true),\n editable,\n placeholder: stringProperty(element, 'placeholder'),\n ariaLabel,\n onUserChange: () => interactionReference.current?.onChange?.(),\n });\n\n const readOnlyView = useMemo(() => {\n if (!mounted || typeof DOMParser === 'undefined') return htmlToPlainText(html);\n return renderSafeNodes(sanitizeHtml(html));\n }, [mounted, html]);\n\n const status = !editor.ready ? undefined : editable ? `${editor.characters} characters` : readOnly ? 'Read only' : 'Disabled';\n\n return (\n <section data-scene-id={element.id} data-scene-component='editor' onClick={interactions?.onClick} onDoubleClick={interactions?.onDoubleClick}>\n <div ref={host} />\n {!editor.ready && (\n <div\n key={typeof readOnlyView}\n role='textbox'\n tabIndex={0}\n aria-multiline='true'\n aria-readonly='true'\n aria-label={ariaLabel}\n data-scene-part='read-only-content'\n style={typeof readOnlyView === 'string' ? { whiteSpace: 'pre-wrap' } : undefined}>\n {readOnlyView}\n </div>\n )}\n {editor.failure !== undefined && <p role='alert' data-scene-state='unavailable'>{`Rich-text editing could not be loaded: ${editor.failure}`}</p>}\n {!editor.ready && editor.failure === undefined && loader === undefined && (\n <p role='status' data-scene-state='read-only'>Rich-text editing is not available in this application. The content is shown read-only.</p>\n )}\n {status !== undefined && <output aria-live='polite'>{status}</output>}\n </section>\n );\n}\n"],"names":["PrimeEditor","element","interactions","loader","useContext","QuillLoaderContext","host","useRef","interactionReference","current","mounted","setMounted","useState","html","stringProperty","readOnly","booleanProperty","editable","isEnabled","ariaLabel","useEffect","editor","useQuillEditor","showHeader","placeholder","onUserChange","onChange","readOnlyView","useMemo","DOMParser","htmlToPlainText","renderSafeNodes","sanitizeHtml","status","ready","undefined","characters","_jsxs","section","data-scene-id","id","data-scene-component","onClick","onDoubleClick","_jsx","div","ref","role","tabIndex","aria-multiline","aria-readonly","aria-label","data-scene-part","style","whiteSpace","failure","p","data-scene-state","output","aria-live"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { QuillInstance } from './QuillInstance';
2
+ import { QuillOptions } from './QuillOptions';
3
+ export type QuillConstructor = new (container: HTMLElement, options: QuillOptions) => QuillInstance;
4
+ //# sourceMappingURL=QuillConstructor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillConstructor.d.ts","sourceRoot":"","sources":["../../../editor/QuillConstructor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,MAAM,gBAAgB,GAAG,KAAK,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillConstructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillConstructor.js","sourceRoot":"","sources":["../../../editor/QuillConstructor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { RefObject } from 'react';
2
+ import { QuillLoader } from './QuillLoader';
3
+ export interface QuillEditorOptions {
4
+ loader: QuillLoader | undefined;
5
+ host: RefObject<HTMLElement | null>;
6
+ html: string;
7
+ showHeader: boolean;
8
+ editable: boolean;
9
+ placeholder: string | undefined;
10
+ ariaLabel: string;
11
+ onUserChange(): void;
12
+ }
13
+ //# sourceMappingURL=QuillEditorOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillEditorOptions.d.ts","sourceRoot":"","sources":["../../../editor/QuillEditorOptions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,kBAAkB;IAE/B,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAGhC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAGpC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,EAAE,OAAO,CAAC;IAGpB,QAAQ,EAAE,OAAO,CAAC;IAElB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAGlB,YAAY,IAAI,IAAI,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillEditorOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillEditorOptions.js","sourceRoot":"","sources":["../../../editor/QuillEditorOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface QuillEditorState {
2
+ ready: boolean;
3
+ failure: string | undefined;
4
+ characters: number;
5
+ }
6
+ //# sourceMappingURL=QuillEditorState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillEditorState.d.ts","sourceRoot":"","sources":["../../../editor/QuillEditorState.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAE7B,KAAK,EAAE,OAAO,CAAC;IAGf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAG5B,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillEditorState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillEditorState.js","sourceRoot":"","sources":["../../../editor/QuillEditorState.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export interface QuillInstance {
2
+ root: HTMLElement;
3
+ clipboard: {
4
+ convert(content: {
5
+ html?: string;
6
+ text?: string;
7
+ }): unknown;
8
+ };
9
+ setContents(delta: unknown, source?: 'user' | 'api' | 'silent'): unknown;
10
+ enable(enabled?: boolean): void;
11
+ getText(): string;
12
+ getModule(name: string): unknown;
13
+ on(event: 'text-change', handler: (delta: unknown, previous: unknown, source: string) => void): unknown;
14
+ off(event: 'text-change', handler: (delta: unknown, previous: unknown, source: string) => void): unknown;
15
+ }
16
+ //# sourceMappingURL=QuillInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillInstance.d.ts","sourceRoot":"","sources":["../../../editor/QuillInstance.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAE1B,IAAI,EAAE,WAAW,CAAC;IAElB,SAAS,EAAE;QAEP,OAAO,CAAC,OAAO,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;KAC/D,CAAC;IAGF,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEzE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,OAAO,IAAI,MAAM,CAAC;IAClB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IACxG,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CAC5G"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillInstance.js","sourceRoot":"","sources":["../../../editor/QuillInstance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { QuillConstructor } from './QuillConstructor';
2
+ export type QuillLoader = () => Promise<QuillConstructor | {
3
+ default: QuillConstructor;
4
+ }>;
5
+ //# sourceMappingURL=QuillLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoader.d.ts","sourceRoot":"","sources":["../../../editor/QuillLoader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAStD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,gBAAgB,GAAG;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoader.js","sourceRoot":"","sources":["../../../editor/QuillLoader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { QuillLoader } from './QuillLoader';
2
+ export declare const QuillLoaderContext: import("react").Context<QuillLoader | undefined>;
3
+ //# sourceMappingURL=QuillLoaderContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoaderContext.d.ts","sourceRoot":"","sources":["../../../editor/QuillLoaderContext.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,eAAO,MAAM,kBAAkB,kDAAoD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { createContext } from 'react';
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
+ /** Without a provider there is no loader, and the editor shows its content read-only. */ const QuillLoaderContext = createContext(undefined);
6
+
7
+ export { QuillLoaderContext };
8
+ //# sourceMappingURL=QuillLoaderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoaderContext.js","sources":["../../../editor/QuillLoaderContext.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 { createContext } from 'react';\nimport { QuillLoader } from './QuillLoader';\n\n/** Without a provider there is no loader, and the editor shows its content read-only. */\nexport const QuillLoaderContext = createContext<QuillLoader | undefined>(undefined);\n"],"names":["QuillLoaderContext","createContext","undefined"],"mappings":";;AAAA;AACA;AAKA,0FACO,MAAMA,kBAAAA,GAAqBC,cAAuCC,SAAAA;;"}
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ import { QuillLoader } from './QuillLoader';
3
+ export interface QuillLoaderProviderProps {
4
+ loader: QuillLoader;
5
+ children: ReactNode;
6
+ }
7
+ export declare function QuillLoaderProvider({ loader, children }: QuillLoaderProviderProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=QuillLoaderProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoaderProvider.d.ts","sourceRoot":"","sources":["../../../editor/QuillLoaderProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,wBAAwB;IAErC,MAAM,EAAE,WAAW,CAAC;IAGpB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAQD,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,wBAAwB,+BAEjF"}
@@ -0,0 +1,19 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { QuillLoaderContext } from './QuillLoaderContext.js';
3
+
4
+ // Copyright (c) Cratis. All rights reserved.
5
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
6
+ /**
7
+ * Makes editable rich text available to the `editor` controls inside it.
8
+ *
9
+ * The loader must be a stable reference - define it at module level or memoize it - because the editor
10
+ * rebuilds when it changes.
11
+ */ function QuillLoaderProvider({ loader, children }) {
12
+ return /*#__PURE__*/ jsx(QuillLoaderContext.Provider, {
13
+ value: loader,
14
+ children: children
15
+ });
16
+ }
17
+
18
+ export { QuillLoaderProvider };
19
+ //# sourceMappingURL=QuillLoaderProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillLoaderProvider.js","sources":["../../../editor/QuillLoaderProvider.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 { ReactNode } from 'react';\nimport { QuillLoader } from './QuillLoader';\nimport { QuillLoaderContext } from './QuillLoaderContext';\n\nexport interface QuillLoaderProviderProps {\n /** Loads Quill. `loadQuill` from `@cratis/scene.primereact/quill` is the ready-made one. */\n loader: QuillLoader;\n\n /** The surface whose editors the loader serves. */\n children: ReactNode;\n}\n\n/**\n * Makes editable rich text available to the `editor` controls inside it.\n *\n * The loader must be a stable reference - define it at module level or memoize it - because the editor\n * rebuilds when it changes.\n */\nexport function QuillLoaderProvider({ loader, children }: QuillLoaderProviderProps) {\n return <QuillLoaderContext.Provider value={loader}>{children}</QuillLoaderContext.Provider>;\n}\n"],"names":["QuillLoaderProvider","loader","children","_jsx","QuillLoaderContext","Provider","value"],"mappings":";;;AAAA;AACA;AAcA;;;;;AAKC,IACM,SAASA,mBAAAA,CAAoB,EAAEC,MAAM,EAAEC,QAAQ,EAA4B,EAAA;IAC9E,qBAAOC,GAAA,CAACC,mBAAmBC,QAAQ,EAAA;QAACC,KAAAA,EAAOL,MAAAA;AAASC,QAAAA,QAAAA,EAAAA;;AACxD;;"}
@@ -0,0 +1,9 @@
1
+ export interface QuillOptions {
2
+ theme: 'snow';
3
+ modules: {
4
+ toolbar: (string | Record<string, unknown>)[][] | false;
5
+ };
6
+ placeholder?: string;
7
+ readOnly: boolean;
8
+ }
9
+ //# sourceMappingURL=QuillOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillOptions.d.ts","sourceRoot":"","sources":["../../../editor/QuillOptions.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAA;KAAE,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QuillOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuillOptions.js","sourceRoot":"","sources":["../../../editor/QuillOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { SafeNode } from './SafeNode';
2
+ export interface SafeElement {
3
+ tag: string;
4
+ attributes: Record<string, string>;
5
+ children: SafeNode[];
6
+ }
7
+ //# sourceMappingURL=SafeElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeElement.d.ts","sourceRoot":"","sources":["../../../editor/SafeElement.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,WAAW;IAExB,GAAG,EAAE,MAAM,CAAC;IAGZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SafeElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeElement.js","sourceRoot":"","sources":["../../../editor/SafeElement.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { SafeElement } from './SafeElement';
2
+ export type SafeNode = string | SafeElement;
3
+ //# sourceMappingURL=SafeNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeNode.d.ts","sourceRoot":"","sources":["../../../editor/SafeNode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SafeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeNode.js","sourceRoot":"","sources":["../../../editor/SafeNode.ts"],"names":[],"mappings":""}