@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.
- package/.storybook/preview.tsx +8 -1
- package/EnumerationResolution.ts +7 -0
- package/README.md +22 -12
- package/data/DataGallery.stories.tsx +6 -0
- package/data/DataScrollerRow.tsx +35 -0
- package/data/PrimeDataScroller.tsx +84 -0
- package/data/PrimeTreeTable.tsx +145 -0
- package/data/TreeTableCheckState.ts +9 -0
- package/data/TreeTableRow.ts +22 -0
- package/data/TreeTableRowView.tsx +86 -0
- package/data/TreeTableSelectionMode.ts +10 -0
- package/data/checkboxSelection.ts +92 -0
- package/data/index.ts +4 -0
- package/data/isSerializedLegacyElement.ts +30 -0
- package/data/readableValue.ts +32 -0
- package/data/selectionKeysOf.ts +40 -0
- package/data/treeTableRows.ts +32 -0
- package/data/useIncrementalLoad.ts +36 -0
- package/data/useLoadOnReach.ts +31 -0
- package/data/useTreeGridNavigation.ts +81 -0
- package/dist/cjs/data/DataScrollerRow.js +50 -0
- package/dist/cjs/data/DataScrollerRow.js.map +1 -0
- package/dist/cjs/data/PrimeDataScroller.js +120 -0
- package/dist/cjs/data/PrimeDataScroller.js.map +1 -0
- package/dist/cjs/data/PrimeTreeTable.js +217 -0
- package/dist/cjs/data/PrimeTreeTable.js.map +1 -0
- package/dist/cjs/data/TreeTableCheckState.js +13 -0
- package/dist/cjs/data/TreeTableCheckState.js.map +1 -0
- package/dist/cjs/data/TreeTableRowView.js +76 -0
- package/dist/cjs/data/TreeTableRowView.js.map +1 -0
- package/dist/cjs/data/TreeTableSelectionMode.js +14 -0
- package/dist/cjs/data/TreeTableSelectionMode.js.map +1 -0
- package/dist/cjs/data/checkboxSelection.js +88 -0
- package/dist/cjs/data/checkboxSelection.js.map +1 -0
- package/dist/cjs/data/isSerializedLegacyElement.js +30 -0
- package/dist/cjs/data/isSerializedLegacyElement.js.map +1 -0
- package/dist/cjs/data/readableValue.js +31 -0
- package/dist/cjs/data/readableValue.js.map +1 -0
- package/dist/cjs/data/selectionKeysOf.js +40 -0
- package/dist/cjs/data/selectionKeysOf.js.map +1 -0
- package/dist/cjs/data/treeTableRows.js +42 -0
- package/dist/cjs/data/treeTableRows.js.map +1 -0
- package/dist/cjs/data/useIncrementalLoad.js +46 -0
- package/dist/cjs/data/useIncrementalLoad.js.map +1 -0
- package/dist/cjs/data/useLoadOnReach.js +42 -0
- package/dist/cjs/data/useLoadOnReach.js.map +1 -0
- package/dist/cjs/data/useTreeGridNavigation.js +75 -0
- package/dist/cjs/data/useTreeGridNavigation.js.map +1 -0
- package/dist/cjs/editor/PrimeEditor.js +96 -0
- package/dist/cjs/editor/PrimeEditor.js.map +1 -0
- package/dist/cjs/editor/QuillLoaderContext.js +10 -0
- package/dist/cjs/editor/QuillLoaderContext.js.map +1 -0
- package/dist/cjs/editor/QuillLoaderProvider.js +21 -0
- package/dist/cjs/editor/QuillLoaderProvider.js.map +1 -0
- package/dist/cjs/editor/applyHtml.js +25 -0
- package/dist/cjs/editor/applyHtml.js.map +1 -0
- package/dist/cjs/editor/characterCount.js +10 -0
- package/dist/cjs/editor/characterCount.js.map +1 -0
- package/dist/cjs/editor/htmlToPlainText.js +101 -0
- package/dist/cjs/editor/htmlToPlainText.js.map +1 -0
- package/dist/cjs/editor/renderSafeNodes.js +35 -0
- package/dist/cjs/editor/renderSafeNodes.js.map +1 -0
- package/dist/cjs/editor/safeUrls.js +44 -0
- package/dist/cjs/editor/safeUrls.js.map +1 -0
- package/dist/cjs/editor/sanitizeHtml.js +140 -0
- package/dist/cjs/editor/sanitizeHtml.js.map +1 -0
- package/dist/cjs/editor/serializeSafeNodes.js +33 -0
- package/dist/cjs/editor/serializeSafeNodes.js.map +1 -0
- package/dist/cjs/editor/toolbarLayout.js +35 -0
- package/dist/cjs/editor/toolbarLayout.js.map +1 -0
- package/dist/cjs/editor/useQuillEditor.js +137 -0
- package/dist/cjs/editor/useQuillEditor.js.map +1 -0
- package/dist/cjs/file/FileUploadContext.js +13 -0
- package/dist/cjs/file/FileUploadContext.js.map +1 -0
- package/dist/cjs/file/FileUploadHandlerProvider.js +25 -0
- package/dist/cjs/file/FileUploadHandlerProvider.js.map +1 -0
- package/dist/cjs/file/FileUploadMode.js +13 -0
- package/dist/cjs/file/FileUploadMode.js.map +1 -0
- package/dist/cjs/file/PrimeFileUpload.js +161 -0
- package/dist/cjs/file/PrimeFileUpload.js.map +1 -0
- package/dist/cjs/file/postFiles.js +31 -0
- package/dist/cjs/file/postFiles.js.map +1 -0
- package/dist/cjs/file/resolveUploadTarget.js +68 -0
- package/dist/cjs/file/resolveUploadTarget.js.map +1 -0
- package/dist/cjs/file/useUploadSession.js +62 -0
- package/dist/cjs/file/useUploadSession.js.map +1 -0
- package/dist/cjs/index.js +32 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legacyEnumerationChoices.js +39 -0
- package/dist/cjs/legacyEnumerationChoices.js.map +1 -0
- package/dist/cjs/loadQuill/index.js +22 -0
- package/dist/cjs/loadQuill/index.js.map +1 -0
- package/dist/cjs/primeReactComponents.js +10 -0
- package/dist/cjs/primeReactComponents.js.map +1 -1
- package/dist/cjs/primeReactDescriptors.js +243 -0
- package/dist/cjs/primeReactDescriptors.js.map +1 -1
- package/dist/cjs/primeReactPackage.js +4 -0
- package/dist/cjs/primeReactPackage.js.map +1 -1
- package/dist/cjs/resolveEnumeration.js +55 -0
- package/dist/cjs/resolveEnumeration.js.map +1 -0
- package/dist/cjs/treeNodes.js +42 -7
- package/dist/cjs/treeNodes.js.map +1 -1
- package/dist/cjs/useResettingState.js +47 -0
- package/dist/cjs/useResettingState.js.map +1 -0
- package/dist/esm/EnumerationResolution.d.ts +9 -0
- package/dist/esm/EnumerationResolution.d.ts.map +1 -0
- package/dist/esm/EnumerationResolution.js +2 -0
- package/dist/esm/EnumerationResolution.js.map +1 -0
- package/dist/esm/data/DataGallery.stories.d.ts.map +1 -1
- package/dist/esm/data/DataGallery.stories.js +6 -0
- package/dist/esm/data/DataGallery.stories.js.map +1 -1
- package/dist/esm/data/DataScrollerRow.d.ts +4 -0
- package/dist/esm/data/DataScrollerRow.d.ts.map +1 -0
- package/dist/esm/data/DataScrollerRow.js +48 -0
- package/dist/esm/data/DataScrollerRow.js.map +1 -0
- package/dist/esm/data/PrimeDataScroller.d.ts +3 -0
- package/dist/esm/data/PrimeDataScroller.d.ts.map +1 -0
- package/dist/esm/data/PrimeDataScroller.js +118 -0
- package/dist/esm/data/PrimeDataScroller.js.map +1 -0
- package/dist/esm/data/PrimeTreeTable.d.ts +3 -0
- package/dist/esm/data/PrimeTreeTable.d.ts.map +1 -0
- package/dist/esm/data/PrimeTreeTable.js +215 -0
- package/dist/esm/data/PrimeTreeTable.js.map +1 -0
- package/dist/esm/data/TreeTableCheckState.d.ts +6 -0
- package/dist/esm/data/TreeTableCheckState.d.ts.map +1 -0
- package/dist/esm/data/TreeTableCheckState.js +11 -0
- package/dist/esm/data/TreeTableCheckState.js.map +1 -0
- package/dist/esm/data/TreeTableRow.d.ts +10 -0
- package/dist/esm/data/TreeTableRow.d.ts.map +1 -0
- package/dist/esm/data/TreeTableRow.js +2 -0
- package/dist/esm/data/TreeTableRow.js.map +1 -0
- package/dist/esm/data/TreeTableRowView.d.ts +21 -0
- package/dist/esm/data/TreeTableRowView.d.ts.map +1 -0
- package/dist/esm/data/TreeTableRowView.js +74 -0
- package/dist/esm/data/TreeTableRowView.js.map +1 -0
- package/dist/esm/data/TreeTableSelectionMode.d.ts +7 -0
- package/dist/esm/data/TreeTableSelectionMode.d.ts.map +1 -0
- package/dist/esm/data/TreeTableSelectionMode.js +12 -0
- package/dist/esm/data/TreeTableSelectionMode.js.map +1 -0
- package/dist/esm/data/checkboxSelection.d.ts +9 -0
- package/dist/esm/data/checkboxSelection.d.ts.map +1 -0
- package/dist/esm/data/checkboxSelection.js +85 -0
- package/dist/esm/data/checkboxSelection.js.map +1 -0
- package/dist/esm/data/index.d.ts +4 -0
- package/dist/esm/data/index.d.ts.map +1 -1
- package/dist/esm/data/index.js +4 -0
- package/dist/esm/data/index.js.map +1 -1
- package/dist/esm/data/isSerializedLegacyElement.d.ts +3 -0
- package/dist/esm/data/isSerializedLegacyElement.d.ts.map +1 -0
- package/dist/esm/data/isSerializedLegacyElement.js +27 -0
- package/dist/esm/data/isSerializedLegacyElement.js.map +1 -0
- package/dist/esm/data/readableValue.d.ts +2 -0
- package/dist/esm/data/readableValue.d.ts.map +1 -0
- package/dist/esm/data/readableValue.js +29 -0
- package/dist/esm/data/readableValue.js.map +1 -0
- package/dist/esm/data/selectionKeysOf.d.ts +2 -0
- package/dist/esm/data/selectionKeysOf.d.ts.map +1 -0
- package/dist/esm/data/selectionKeysOf.js +38 -0
- package/dist/esm/data/selectionKeysOf.js.map +1 -0
- package/dist/esm/data/treeTableRows.d.ts +6 -0
- package/dist/esm/data/treeTableRows.d.ts.map +1 -0
- package/dist/esm/data/treeTableRows.js +38 -0
- package/dist/esm/data/treeTableRows.js.map +1 -0
- package/dist/esm/data/useIncrementalLoad.d.ts +6 -0
- package/dist/esm/data/useIncrementalLoad.d.ts.map +1 -0
- package/dist/esm/data/useIncrementalLoad.js +44 -0
- package/dist/esm/data/useIncrementalLoad.js.map +1 -0
- package/dist/esm/data/useLoadOnReach.d.ts +3 -0
- package/dist/esm/data/useLoadOnReach.d.ts.map +1 -0
- package/dist/esm/data/useLoadOnReach.js +40 -0
- package/dist/esm/data/useLoadOnReach.js.map +1 -0
- package/dist/esm/data/useTreeGridNavigation.d.ts +17 -0
- package/dist/esm/data/useTreeGridNavigation.d.ts.map +1 -0
- package/dist/esm/data/useTreeGridNavigation.js +73 -0
- package/dist/esm/data/useTreeGridNavigation.js.map +1 -0
- package/dist/esm/editor/PrimeEditor.d.ts +3 -0
- package/dist/esm/editor/PrimeEditor.d.ts.map +1 -0
- package/dist/esm/editor/PrimeEditor.js +94 -0
- package/dist/esm/editor/PrimeEditor.js.map +1 -0
- package/dist/esm/editor/QuillConstructor.d.ts +4 -0
- package/dist/esm/editor/QuillConstructor.d.ts.map +1 -0
- package/dist/esm/editor/QuillConstructor.js +2 -0
- package/dist/esm/editor/QuillConstructor.js.map +1 -0
- package/dist/esm/editor/QuillEditorOptions.d.ts +13 -0
- package/dist/esm/editor/QuillEditorOptions.d.ts.map +1 -0
- package/dist/esm/editor/QuillEditorOptions.js +2 -0
- package/dist/esm/editor/QuillEditorOptions.js.map +1 -0
- package/dist/esm/editor/QuillEditorState.d.ts +6 -0
- package/dist/esm/editor/QuillEditorState.d.ts.map +1 -0
- package/dist/esm/editor/QuillEditorState.js +2 -0
- package/dist/esm/editor/QuillEditorState.js.map +1 -0
- package/dist/esm/editor/QuillInstance.d.ts +16 -0
- package/dist/esm/editor/QuillInstance.d.ts.map +1 -0
- package/dist/esm/editor/QuillInstance.js +2 -0
- package/dist/esm/editor/QuillInstance.js.map +1 -0
- package/dist/esm/editor/QuillLoader.d.ts +5 -0
- package/dist/esm/editor/QuillLoader.d.ts.map +1 -0
- package/dist/esm/editor/QuillLoader.js +2 -0
- package/dist/esm/editor/QuillLoader.js.map +1 -0
- package/dist/esm/editor/QuillLoaderContext.d.ts +3 -0
- package/dist/esm/editor/QuillLoaderContext.d.ts.map +1 -0
- package/dist/esm/editor/QuillLoaderContext.js +8 -0
- package/dist/esm/editor/QuillLoaderContext.js.map +1 -0
- package/dist/esm/editor/QuillLoaderProvider.d.ts +8 -0
- package/dist/esm/editor/QuillLoaderProvider.d.ts.map +1 -0
- package/dist/esm/editor/QuillLoaderProvider.js +19 -0
- package/dist/esm/editor/QuillLoaderProvider.js.map +1 -0
- package/dist/esm/editor/QuillOptions.d.ts +9 -0
- package/dist/esm/editor/QuillOptions.d.ts.map +1 -0
- package/dist/esm/editor/QuillOptions.js +2 -0
- package/dist/esm/editor/QuillOptions.js.map +1 -0
- package/dist/esm/editor/SafeElement.d.ts +7 -0
- package/dist/esm/editor/SafeElement.d.ts.map +1 -0
- package/dist/esm/editor/SafeElement.js +2 -0
- package/dist/esm/editor/SafeElement.js.map +1 -0
- package/dist/esm/editor/SafeNode.d.ts +3 -0
- package/dist/esm/editor/SafeNode.d.ts.map +1 -0
- package/dist/esm/editor/SafeNode.js +2 -0
- package/dist/esm/editor/SafeNode.js.map +1 -0
- package/dist/esm/editor/applyHtml.d.ts +3 -0
- package/dist/esm/editor/applyHtml.d.ts.map +1 -0
- package/dist/esm/editor/applyHtml.js +23 -0
- package/dist/esm/editor/applyHtml.js.map +1 -0
- package/dist/esm/editor/characterCount.d.ts +3 -0
- package/dist/esm/editor/characterCount.d.ts.map +1 -0
- package/dist/esm/editor/characterCount.js +8 -0
- package/dist/esm/editor/characterCount.js.map +1 -0
- package/dist/esm/editor/htmlToPlainText.d.ts +2 -0
- package/dist/esm/editor/htmlToPlainText.d.ts.map +1 -0
- package/dist/esm/editor/htmlToPlainText.js +99 -0
- package/dist/esm/editor/htmlToPlainText.js.map +1 -0
- package/dist/esm/editor/index.d.ts +14 -0
- package/dist/esm/editor/index.d.ts.map +1 -0
- package/dist/esm/editor/index.js +14 -0
- package/dist/esm/editor/index.js.map +1 -0
- package/dist/esm/editor/renderSafeNodes.d.ts +4 -0
- package/dist/esm/editor/renderSafeNodes.d.ts.map +1 -0
- package/dist/esm/editor/renderSafeNodes.js +33 -0
- package/dist/esm/editor/renderSafeNodes.js.map +1 -0
- package/dist/esm/editor/safeUrls.d.ts +3 -0
- package/dist/esm/editor/safeUrls.d.ts.map +1 -0
- package/dist/esm/editor/safeUrls.js +41 -0
- package/dist/esm/editor/safeUrls.js.map +1 -0
- package/dist/esm/editor/sanitizeHtml.d.ts +3 -0
- package/dist/esm/editor/sanitizeHtml.d.ts.map +1 -0
- package/dist/esm/editor/sanitizeHtml.js +138 -0
- package/dist/esm/editor/sanitizeHtml.js.map +1 -0
- package/dist/esm/editor/serializeSafeNodes.d.ts +3 -0
- package/dist/esm/editor/serializeSafeNodes.d.ts.map +1 -0
- package/dist/esm/editor/serializeSafeNodes.js +31 -0
- package/dist/esm/editor/serializeSafeNodes.js.map +1 -0
- package/dist/esm/editor/toolbarLayout.d.ts +2 -0
- package/dist/esm/editor/toolbarLayout.d.ts.map +1 -0
- package/dist/esm/editor/toolbarLayout.js +33 -0
- package/dist/esm/editor/toolbarLayout.js.map +1 -0
- package/dist/esm/editor/useQuillEditor.d.ts +4 -0
- package/dist/esm/editor/useQuillEditor.d.ts.map +1 -0
- package/dist/esm/editor/useQuillEditor.js +135 -0
- package/dist/esm/editor/useQuillEditor.js.map +1 -0
- package/dist/esm/file/FileGallery.stories.d.ts +19 -0
- package/dist/esm/file/FileGallery.stories.d.ts.map +1 -0
- package/dist/esm/file/FileGallery.stories.js +23 -0
- package/dist/esm/file/FileGallery.stories.js.map +1 -0
- package/dist/esm/file/FileUploadContext.d.ts +7 -0
- package/dist/esm/file/FileUploadContext.d.ts.map +1 -0
- package/dist/esm/file/FileUploadContext.js +11 -0
- package/dist/esm/file/FileUploadContext.js.map +1 -0
- package/dist/esm/file/FileUploadHandler.d.ts +4 -0
- package/dist/esm/file/FileUploadHandler.d.ts.map +1 -0
- package/dist/esm/file/FileUploadHandler.js +2 -0
- package/dist/esm/file/FileUploadHandler.js.map +1 -0
- package/dist/esm/file/FileUploadHandlerProvider.d.ts +9 -0
- package/dist/esm/file/FileUploadHandlerProvider.d.ts.map +1 -0
- package/dist/esm/file/FileUploadHandlerProvider.js +23 -0
- package/dist/esm/file/FileUploadHandlerProvider.js.map +1 -0
- package/dist/esm/file/FileUploadMode.d.ts +6 -0
- package/dist/esm/file/FileUploadMode.d.ts.map +1 -0
- package/dist/esm/file/FileUploadMode.js +11 -0
- package/dist/esm/file/FileUploadMode.js.map +1 -0
- package/dist/esm/file/PrimeFileUpload.d.ts +3 -0
- package/dist/esm/file/PrimeFileUpload.d.ts.map +1 -0
- package/dist/esm/file/PrimeFileUpload.js +159 -0
- package/dist/esm/file/PrimeFileUpload.js.map +1 -0
- package/dist/esm/file/UploadStatus.d.ts +5 -0
- package/dist/esm/file/UploadStatus.d.ts.map +1 -0
- package/dist/esm/file/UploadStatus.js +2 -0
- package/dist/esm/file/UploadStatus.js.map +1 -0
- package/dist/esm/file/UploadTarget.d.ts +8 -0
- package/dist/esm/file/UploadTarget.d.ts.map +1 -0
- package/dist/esm/file/UploadTarget.js +2 -0
- package/dist/esm/file/UploadTarget.js.map +1 -0
- package/dist/esm/file/index.d.ts +7 -0
- package/dist/esm/file/index.d.ts.map +1 -0
- package/dist/esm/file/index.js +7 -0
- package/dist/esm/file/index.js.map +1 -0
- package/dist/esm/file/postFiles.d.ts +2 -0
- package/dist/esm/file/postFiles.d.ts.map +1 -0
- package/dist/esm/file/postFiles.js +29 -0
- package/dist/esm/file/postFiles.js.map +1 -0
- package/dist/esm/file/resolveUploadTarget.d.ts +3 -0
- package/dist/esm/file/resolveUploadTarget.d.ts.map +1 -0
- package/dist/esm/file/resolveUploadTarget.js +66 -0
- package/dist/esm/file/resolveUploadTarget.js.map +1 -0
- package/dist/esm/file/useUploadSession.d.ts +10 -0
- package/dist/esm/file/useUploadSession.d.ts.map +1 -0
- package/dist/esm/file/useUploadSession.js +60 -0
- package/dist/esm/file/useUploadSession.js.map +1 -0
- package/dist/esm/form/FormGallery.stories.d.ts.map +1 -1
- package/dist/esm/form/FormGallery.stories.js +1 -0
- package/dist/esm/form/FormGallery.stories.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +16 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/legacyEnumerationChoices.d.ts +3 -0
- package/dist/esm/legacyEnumerationChoices.d.ts.map +1 -0
- package/dist/esm/legacyEnumerationChoices.js +37 -0
- package/dist/esm/legacyEnumerationChoices.js.map +1 -0
- package/dist/esm/loadQuill/index.d.ts +3 -0
- package/dist/esm/loadQuill/index.d.ts.map +1 -0
- package/dist/esm/loadQuill/index.js +20 -0
- package/dist/esm/loadQuill/index.js.map +1 -0
- package/dist/esm/primeReactComponents.d.ts.map +1 -1
- package/dist/esm/primeReactComponents.js +10 -0
- package/dist/esm/primeReactComponents.js.map +1 -1
- package/dist/esm/primeReactDescriptors.d.ts.map +1 -1
- package/dist/esm/primeReactDescriptors.js +243 -0
- package/dist/esm/primeReactDescriptors.js.map +1 -1
- package/dist/esm/primeReactPackage.js +4 -0
- package/dist/esm/primeReactPackage.js.map +1 -1
- package/dist/esm/resolveEnumeration.d.ts +3 -0
- package/dist/esm/resolveEnumeration.d.ts.map +1 -0
- package/dist/esm/resolveEnumeration.js +53 -0
- package/dist/esm/resolveEnumeration.js.map +1 -0
- package/dist/esm/treeNodes.d.ts +2 -1
- package/dist/esm/treeNodes.d.ts.map +1 -1
- package/dist/esm/treeNodes.js +42 -8
- package/dist/esm/treeNodes.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/useResettingState.d.ts +3 -0
- package/dist/esm/useResettingState.d.ts.map +1 -0
- package/dist/esm/useResettingState.js +45 -0
- package/dist/esm/useResettingState.js.map +1 -0
- package/editor/PrimeEditor.tsx +83 -0
- package/editor/QuillConstructor.ts +8 -0
- package/editor/QuillEditorOptions.ts +29 -0
- package/editor/QuillEditorState.ts +14 -0
- package/editor/QuillInstance.ts +27 -0
- package/editor/QuillLoader.ts +13 -0
- package/editor/QuillLoaderContext.ts +8 -0
- package/editor/QuillLoaderProvider.tsx +24 -0
- package/editor/QuillOptions.ts +10 -0
- package/editor/SafeElement.ts +15 -0
- package/editor/SafeNode.ts +7 -0
- package/editor/applyHtml.ts +21 -0
- package/editor/characterCount.ts +9 -0
- package/editor/htmlToPlainText.ts +74 -0
- package/editor/index.ts +16 -0
- package/editor/renderSafeNodes.tsx +26 -0
- package/editor/safeUrls.ts +43 -0
- package/editor/sanitizeHtml.ts +94 -0
- package/editor/serializeSafeNodes.ts +26 -0
- package/editor/toolbarLayout.ts +10 -0
- package/editor/useQuillEditor.ts +114 -0
- package/file/FileGallery.stories.tsx +32 -0
- package/file/FileUploadContext.ts +17 -0
- package/file/FileUploadHandler.ts +15 -0
- package/file/FileUploadHandlerProvider.tsx +33 -0
- package/file/FileUploadMode.ts +9 -0
- package/file/PrimeFileUpload.tsx +129 -0
- package/file/UploadStatus.ts +9 -0
- package/file/UploadTarget.ts +12 -0
- package/file/index.ts +9 -0
- package/file/postFiles.ts +23 -0
- package/file/resolveUploadTarget.ts +61 -0
- package/file/useUploadSession.ts +67 -0
- package/form/FormGallery.stories.tsx +1 -0
- package/index.ts +2 -0
- package/legacyEnumerationChoices.ts +35 -0
- package/loadQuill/index.ts +21 -0
- package/package.json +17 -7
- package/primeReactComponents.ts +8 -0
- package/primeReactDescriptors.ts +63 -0
- package/primeReactPackage.ts +2 -2
- package/primeReactTheme.css +69 -0
- package/resolveEnumeration.ts +50 -0
- package/treeNodes.ts +44 -6
- package/useResettingState.ts +34 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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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"}
|
package/dist/esm/data/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/esm/data/index.js
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"isSerializedLegacyElement.d.ts","sourceRoot":"","sources":["../../../data/isSerializedLegacyElement.ts"],"names":[],"mappings":"AAaA,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEjE;AASD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/G"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
/**
|
|
4
|
+
* Whether an entry is a serialized legacy UI element - an object that names its type in `_derivedTypeId`.
|
|
5
|
+
*
|
|
6
|
+
* The original `ItemsControl.Items` and `TreeTable.Columns` held UI elements, not data. Scene does not
|
|
7
|
+
* read those shapes and has no runtime adapter for them: the controls recognize them only to refuse them
|
|
8
|
+
* visibly, instead of listing the element's fields as if they were rows. Converting them is the migration
|
|
9
|
+
* tool's job, which maps each element to a canonical slot (see the package documentation).
|
|
10
|
+
*
|
|
11
|
+
* @param entry An entry of `items` or `columns`.
|
|
12
|
+
*/ function isSerializedLegacyElement(entry) {
|
|
13
|
+
return typeof entry === 'object' && entry !== null && !Array.isArray(entry) && typeof entry._derivedTypeId === 'string';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The message for entries that were refused, or `undefined` when there were none.
|
|
17
|
+
*
|
|
18
|
+
* @param entries The authored entries.
|
|
19
|
+
* @param property The property they came from.
|
|
20
|
+
* @param guidance What the author should do instead, finishing the sentence "Author them ..." or similar.
|
|
21
|
+
*/ function legacyElementMessage(entries, property, guidance) {
|
|
22
|
+
const refused = entries.filter(isSerializedLegacyElement).length;
|
|
23
|
+
return refused === 0 ? undefined : `${refused} entr${refused === 1 ? 'y' : 'ies'} of ${property} ${refused === 1 ? 'is a' : 'are'} serialized legacy UI element${refused === 1 ? '' : 's'}, which this control does not read. ${guidance}`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { isSerializedLegacyElement, legacyElementMessage };
|
|
27
|
+
//# sourceMappingURL=isSerializedLegacyElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isSerializedLegacyElement.js","sources":["../../../data/isSerializedLegacyElement.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/**\n * Whether an entry is a serialized legacy UI element - an object that names its type in `_derivedTypeId`.\n *\n * The original `ItemsControl.Items` and `TreeTable.Columns` held UI elements, not data. Scene does not\n * read those shapes and has no runtime adapter for them: the controls recognize them only to refuse them\n * visibly, instead of listing the element's fields as if they were rows. Converting them is the migration\n * tool's job, which maps each element to a canonical slot (see the package documentation).\n *\n * @param entry An entry of `items` or `columns`.\n */\nexport function isSerializedLegacyElement(entry: unknown): boolean {\n return typeof entry === 'object' && entry !== null && !Array.isArray(entry) && typeof (entry as { _derivedTypeId?: unknown })._derivedTypeId === 'string';\n}\n\n/**\n * The message for entries that were refused, or `undefined` when there were none.\n *\n * @param entries The authored entries.\n * @param property The property they came from.\n * @param guidance What the author should do instead, finishing the sentence \"Author them ...\" or similar.\n */\nexport function legacyElementMessage(entries: unknown[], property: string, guidance: string): string | undefined {\n const refused = entries.filter(isSerializedLegacyElement).length;\n return refused === 0\n ? undefined\n : `${refused} entr${refused === 1 ? 'y' : 'ies'} of ${property} ${refused === 1 ? 'is a' : 'are'} serialized legacy UI element${refused === 1 ? '' : 's'}, which this control does not read. ${guidance}`;\n}\n"],"names":["isSerializedLegacyElement","entry","Array","isArray","_derivedTypeId","legacyElementMessage","entries","property","guidance","refused","filter","length","undefined"],"mappings":"AAAA;AACA;AAEA;;;;;;;;;IAUO,SAASA,yBAAAA,CAA0BC,KAAc,EAAA;AACpD,IAAA,OAAO,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,QAAQ,CAACC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA,IAAU,OAAO,KAACA,CAAuCG,cAAc,KAAK,QAAA;AACrJ;AAEA;;;;;;AAMC,IACM,SAASC,oBAAAA,CAAqBC,OAAkB,EAAEC,QAAgB,EAAEC,QAAgB,EAAA;AACvF,IAAA,MAAMC,OAAAA,GAAUH,OAAAA,CAAQI,MAAM,CAACV,2BAA2BW,MAAM;AAChE,IAAA,OAAOF,OAAAA,KAAY,CAAA,GACbG,SAAAA,GACA,CAAA,EAAGH,OAAAA,CAAQ,KAAK,EAAEA,OAAAA,KAAY,CAAA,GAAI,GAAA,GAAM,KAAA,CAAM,IAAI,EAAEF,QAAAA,CAAS,CAAC,EAAEE,OAAAA,KAAY,CAAA,GAAI,MAAA,GAAS,KAAA,CAAM,6BAA6B,EAAEA,OAAAA,KAAY,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,oCAAoC,EAAED,QAAAA,CAAAA,CAAU;AACjN;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readableValue.d.ts","sourceRoot":"","sources":["../../../data/readableValue.ts"],"names":[],"mappings":"AAgBA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CAe/D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
/** Nested deeper than this is shown as an ellipsis, so a cyclic or enormous value cannot flood the page. */ const maximumDepth = 3;
|
|
4
|
+
/**
|
|
5
|
+
* Writes any authored value as text a person can read.
|
|
6
|
+
*
|
|
7
|
+
* Scalars are shown as they are. An array is its readable entries joined by commas, and an object is
|
|
8
|
+
* `name: value` pairs joined by semicolons - never `[object Object]`, and never a raw JSON document. `null`
|
|
9
|
+
* and `undefined` are empty.
|
|
10
|
+
*
|
|
11
|
+
* @param value The authored value.
|
|
12
|
+
* @param depth How deep the value is nested already; callers leave it out.
|
|
13
|
+
*/ function readableValue(value, depth = 0) {
|
|
14
|
+
if (value === undefined || value === null) return '';
|
|
15
|
+
if (typeof value === 'string') return value;
|
|
16
|
+
if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') return String(value);
|
|
17
|
+
if (depth >= maximumDepth) return '…';
|
|
18
|
+
if (Array.isArray(value)) return value.map((entry)=>readableValue(entry, depth + 1)).filter((text)=>text !== '').join(', ');
|
|
19
|
+
if (typeof value === 'object') {
|
|
20
|
+
return Object.entries(value).map(([name, entry])=>[
|
|
21
|
+
name,
|
|
22
|
+
readableValue(entry, depth + 1)
|
|
23
|
+
]).filter(([, text])=>text !== '').map(([name, text])=>`${name}: ${text}`).join('; ');
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { readableValue };
|
|
29
|
+
//# sourceMappingURL=readableValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readableValue.js","sources":["../../../data/readableValue.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/** Nested deeper than this is shown as an ellipsis, so a cyclic or enormous value cannot flood the page. */\nconst maximumDepth = 3;\n\n/**\n * Writes any authored value as text a person can read.\n *\n * Scalars are shown as they are. An array is its readable entries joined by commas, and an object is\n * `name: value` pairs joined by semicolons - never `[object Object]`, and never a raw JSON document. `null`\n * and `undefined` are empty.\n *\n * @param value The authored value.\n * @param depth How deep the value is nested already; callers leave it out.\n */\nexport function readableValue(value: unknown, depth = 0): string {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') return String(value);\n if (depth >= maximumDepth) return '…';\n if (Array.isArray(value)) return value.map(entry => readableValue(entry, depth + 1)).filter(text => text !== '').join(', ');\n if (typeof value === 'object') {\n return Object.entries(value)\n .map(([name, entry]) => [name, readableValue(entry, depth + 1)])\n .filter(([, text]) => text !== '')\n .map(([name, text]) => `${name}: ${text}`)\n .join('; ');\n }\n\n return '';\n}\n"],"names":["maximumDepth","readableValue","value","depth","undefined","String","Array","isArray","map","entry","filter","text","join","Object","entries","name"],"mappings":"AAAA;AACA;AAEA,6GACA,MAAMA,YAAAA,GAAe,CAAA;AAErB;;;;;;;;;AASC,IACM,SAASC,aAAAA,CAAcC,KAAc,EAAEC,QAAQ,CAAC,EAAA;AACnD,IAAA,IAAID,KAAAA,KAAUE,SAAAA,IAAaF,KAAAA,KAAU,IAAA,EAAM,OAAO,EAAA;IAClD,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAOA,KAAAA;IACtC,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAY,OAAOA,KAAAA,KAAU,aAAa,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAOG,MAAAA,CAAOH,KAAAA,CAAAA;IACxG,IAAIC,KAAAA,IAASH,cAAc,OAAO,GAAA;IAClC,IAAIM,KAAAA,CAAMC,OAAO,CAACL,KAAAA,CAAAA,EAAQ,OAAOA,KAAAA,CAAMM,GAAG,CAACC,CAAAA,KAAAA,GAASR,cAAcQ,KAAAA,EAAON,KAAAA,GAAQ,IAAIO,MAAM,CAACC,CAAAA,IAAAA,GAAQA,IAAAA,KAAS,EAAA,CAAA,CAAIC,IAAI,CAAC,IAAA,CAAA;IACtH,IAAI,OAAOV,UAAU,QAAA,EAAU;QAC3B,OAAOW,MAAAA,CAAOC,OAAO,CAACZ,KAAAA,CAAAA,CACjBM,GAAG,CAAC,CAAC,CAACO,IAAAA,EAAMN,KAAAA,CAAM,GAAK;AAACM,gBAAAA,IAAAA;AAAMd,gBAAAA,aAAAA,CAAcQ,OAAON,KAAAA,GAAQ,CAAA;aAAG,CAAA,CAC9DO,MAAM,CAAC,CAAC,GAAGC,KAAK,GAAKA,IAAAA,KAAS,EAAA,CAAA,CAC9BH,GAAG,CAAC,CAAC,CAACO,IAAAA,EAAMJ,IAAAA,CAAK,GAAK,CAAA,EAAGI,IAAAA,CAAK,EAAE,EAAEJ,IAAAA,CAAAA,CAAM,CAAA,CACxCC,IAAI,CAAC,IAAA,CAAA;AACd,IAAA;IAEA,OAAO,EAAA;AACX;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionKeysOf.d.ts","sourceRoot":"","sources":["../../../data/selectionKeysOf.ts"],"names":[],"mappings":"AA6BA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAU3D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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 keys of one node, whichever of the shapes a selection may use. */ function keyOf(value) {
|
|
4
|
+
if (typeof value === 'string' && value !== '') return value;
|
|
5
|
+
return typeof value === 'number' && Number.isFinite(value) ? String(value) : undefined;
|
|
6
|
+
}
|
|
7
|
+
function nodeKeyOf(value) {
|
|
8
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) return keyOf(value);
|
|
9
|
+
return keyOf(value.key);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Reads the keys an authored `selection` selects.
|
|
13
|
+
*
|
|
14
|
+
* Every shape a legacy document may hold is accepted, and none is rewritten:
|
|
15
|
+
* - one key, string or number (`'b'`, `6`);
|
|
16
|
+
* - an array mixing keys and `{ key }` objects (`['a', 6, { key: 'c' }]`);
|
|
17
|
+
* - one `{ key }` object;
|
|
18
|
+
* - PrimeReact's key map (`{ b: { checked: true, partialChecked: false } }`), whose `checked` entries are
|
|
19
|
+
* selected. A `partialChecked` entry is derived state, not a selection, so it is ignored: the control
|
|
20
|
+
* computes it from the selected descendants.
|
|
21
|
+
*
|
|
22
|
+
* Numeric keys are matched as the strings the tree builds from them.
|
|
23
|
+
*
|
|
24
|
+
* @param value The authored selection.
|
|
25
|
+
*/ function selectionKeysOf(value) {
|
|
26
|
+
if (Array.isArray(value)) return new Set(value.flatMap((entry)=>nodeKeyOf(entry) ?? []));
|
|
27
|
+
const single = nodeKeyOf(value);
|
|
28
|
+
if (single !== undefined) return new Set([
|
|
29
|
+
single
|
|
30
|
+
]);
|
|
31
|
+
if (typeof value === 'object' && value !== null && keyOf(value.key) === undefined) {
|
|
32
|
+
return new Set(Object.entries(value).filter(([, state])=>state?.checked === true).map(([key])=>key));
|
|
33
|
+
}
|
|
34
|
+
return new Set();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { selectionKeysOf };
|
|
38
|
+
//# sourceMappingURL=selectionKeysOf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionKeysOf.js","sources":["../../../data/selectionKeysOf.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 keys of one node, whichever of the shapes a selection may use. */\nfunction keyOf(value: unknown): string | undefined {\n if (typeof value === 'string' && value !== '') return value;\n return typeof value === 'number' && Number.isFinite(value) ? String(value) : undefined;\n}\n\nfunction nodeKeyOf(value: unknown): string | undefined {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return keyOf(value);\n return keyOf((value as { key?: unknown }).key);\n}\n\n/**\n * Reads the keys an authored `selection` selects.\n *\n * Every shape a legacy document may hold is accepted, and none is rewritten:\n * - one key, string or number (`'b'`, `6`);\n * - an array mixing keys and `{ key }` objects (`['a', 6, { key: 'c' }]`);\n * - one `{ key }` object;\n * - PrimeReact's key map (`{ b: { checked: true, partialChecked: false } }`), whose `checked` entries are\n * selected. A `partialChecked` entry is derived state, not a selection, so it is ignored: the control\n * computes it from the selected descendants.\n *\n * Numeric keys are matched as the strings the tree builds from them.\n *\n * @param value The authored selection.\n */\nexport function selectionKeysOf(value: unknown): Set<string> {\n if (Array.isArray(value)) return new Set(value.flatMap(entry => nodeKeyOf(entry) ?? []));\n const single = nodeKeyOf(value);\n if (single !== undefined) return new Set([single]);\n\n if (typeof value === 'object' && value !== null && keyOf((value as { key?: unknown }).key) === undefined) {\n return new Set(Object.entries(value).filter(([, state]) => (state as { checked?: unknown } | null)?.checked === true).map(([key]) => key));\n }\n\n return new Set();\n}\n"],"names":["keyOf","value","Number","isFinite","String","undefined","nodeKeyOf","Array","isArray","key","selectionKeysOf","Set","flatMap","entry","single","Object","entries","filter","state","checked","map"],"mappings":"AAAA;AACA;AAEA,0EACA,SAASA,KAAAA,CAAMC,KAAc,EAAA;AACzB,IAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAI,OAAOA,KAAAA;IACtD,OAAO,OAAOA,UAAU,QAAA,IAAYC,MAAAA,CAAOC,QAAQ,CAACF,KAAAA,CAAAA,GAASG,OAAOH,KAAAA,CAAAA,GAASI,SAAAA;AACjF;AAEA,SAASC,UAAUL,KAAc,EAAA;IAC7B,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAA,IAAQM,MAAMC,OAAO,CAACP,KAAAA,CAAAA,EAAQ,OAAOD,KAAAA,CAAMC,KAAAA,CAAAA;IACtF,OAAOD,KAAAA,CAAM,KAACC,CAA4BQ,GAAG,CAAA;AACjD;AAEA;;;;;;;;;;;;;;IAeO,SAASC,eAAAA,CAAgBT,KAAc,EAAA;AAC1C,IAAA,IAAIM,KAAAA,CAAMC,OAAO,CAACP,KAAAA,CAAAA,EAAQ,OAAO,IAAIU,GAAAA,CAAIV,KAAAA,CAAMW,OAAO,CAACC,CAAAA,KAAAA,GAASP,SAAAA,CAAUO,UAAU,EAAE,CAAA,CAAA;AACtF,IAAA,MAAMC,SAASR,SAAAA,CAAUL,KAAAA,CAAAA;AACzB,IAAA,IAAIa,MAAAA,KAAWT,SAAAA,EAAW,OAAO,IAAIM,GAAAA,CAAI;AAACG,QAAAA;AAAO,KAAA,CAAA;IAEjD,IAAI,OAAOb,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAA,IAAQD,MAAM,KAACC,CAA4BQ,GAAG,CAAA,KAAMJ,SAAAA,EAAW;QACtG,OAAO,IAAIM,IAAII,MAAAA,CAAOC,OAAO,CAACf,KAAAA,CAAAA,CAAOgB,MAAM,CAAC,CAAC,GAAGC,MAAM,GAAMA,OAAwCC,OAAAA,KAAY,IAAA,CAAA,CAAMC,GAAG,CAAC,CAAC,CAACX,GAAAA,CAAI,GAAKA,GAAAA,CAAAA,CAAAA;AACzI,IAAA;AAEA,IAAA,OAAO,IAAIE,GAAAA,EAAAA;AACf;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TreeNode } from '../TreeNode';
|
|
2
|
+
import { TreeTableRow } from './TreeTableRow';
|
|
3
|
+
export declare function visibleRows(nodes: TreeNode[], expanded: ReadonlySet<string>, depth?: number, parentKey?: string): TreeTableRow[];
|
|
4
|
+
export declare function expandedKeysOf(nodes: TreeNode[]): string[];
|
|
5
|
+
export declare function nodeLabel(node: TreeNode): string;
|
|
6
|
+
//# sourceMappingURL=treeTableRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeTableRows.d.ts","sourceRoot":"","sources":["../../../data/treeTableRows.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,SAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAM3H;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAK1D;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEhD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
/**
|
|
4
|
+
* Flattens the nodes into the rows that are visible: a node's children follow it only while it is expanded.
|
|
5
|
+
*
|
|
6
|
+
* @param nodes The sibling nodes to flatten.
|
|
7
|
+
* @param expanded The keys of the expanded nodes.
|
|
8
|
+
*/ function visibleRows(nodes, expanded, depth = 0, parentKey) {
|
|
9
|
+
return nodes.flatMap((node, index)=>{
|
|
10
|
+
const key = node.key ?? '';
|
|
11
|
+
const row = {
|
|
12
|
+
node,
|
|
13
|
+
key,
|
|
14
|
+
depth,
|
|
15
|
+
parentKey,
|
|
16
|
+
position: index + 1,
|
|
17
|
+
siblings: nodes.length
|
|
18
|
+
};
|
|
19
|
+
return [
|
|
20
|
+
row,
|
|
21
|
+
...node.children !== undefined && expanded.has(key) ? visibleRows(node.children, expanded, depth + 1, key) : []
|
|
22
|
+
];
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** The keys of the nodes authored as expanded, at any depth, in tree order. */ function expandedKeysOf(nodes) {
|
|
26
|
+
return nodes.flatMap((node)=>[
|
|
27
|
+
...node.expanded === true && node.key !== undefined ? [
|
|
28
|
+
node.key
|
|
29
|
+
] : [],
|
|
30
|
+
...expandedKeysOf(node.children ?? [])
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
/** A node's own text for naming it: its label, else its key. */ function nodeLabel(node) {
|
|
34
|
+
return node.label ?? node.key ?? '';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { expandedKeysOf, nodeLabel, visibleRows };
|
|
38
|
+
//# sourceMappingURL=treeTableRows.js.map
|