@x15ventures/x15-ui-library 3.19.0 → 3.20.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/THIRD_PARTY_LICENSES.md +11182 -0
- package/dist/cjs/autoGenerated/libraryThemes.js +12 -12
- package/dist/cjs/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/cjs/autoGenerated/libraryThemes.json +12 -12
- package/dist/cjs/components/design/banners/pageBanner/PageBanner.js +27 -12
- package/dist/cjs/components/design/banners/pageBanner/PageBanner.js.map +1 -1
- package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js +22 -15
- package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
- package/dist/cjs/components/design/dialog/dialog.css +4 -0
- package/dist/cjs/components/design/logos/LogoLink.js +2 -1
- package/dist/cjs/components/design/logos/LogoLink.js.map +1 -1
- package/dist/cjs/components/design/logos/VentureLogo.js +2 -1
- package/dist/cjs/components/design/logos/VentureLogo.js.map +1 -1
- package/dist/cjs/components/design/revealMore/RevealMoreBelow.js +2 -2
- package/dist/cjs/components/design/revealMore/RevealMoreBelow.js.map +1 -1
- package/dist/cjs/components/design/skeleton/Skeleton.js +15 -5
- package/dist/cjs/components/design/skeleton/Skeleton.js.map +1 -1
- package/dist/cjs/components/design/themeLoader/ThemeLoader.js +1 -1
- package/dist/cjs/components/design/themeLoader/ThemeLoader.js.map +1 -1
- package/dist/cjs/components/form/buttons/SimpleButton.js +3 -1
- package/dist/cjs/components/form/buttons/SimpleButton.js.map +1 -1
- package/dist/cjs/components/form/buttons/button.interface.js.map +1 -1
- package/dist/cjs/components/form/buttons/userPicButton/UserPicButton.js +5 -3
- package/dist/cjs/components/form/buttons/userPicButton/UserPicButton.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +64 -19
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/cjs/components/navigation/link/Link.js +2 -1
- package/dist/cjs/components/navigation/link/Link.js.map +1 -1
- package/dist/cjs/components/testing/devToolbar/DevToolbar.js +5 -3
- package/dist/cjs/components/testing/devToolbar/DevToolbar.js.map +1 -1
- package/dist/cjs/constants/fileUploadTypes.js +9 -4
- package/dist/cjs/constants/fileUploadTypes.js.map +1 -1
- package/dist/cjs/helpers/dateHelpers.js +34 -23
- package/dist/cjs/helpers/dateHelpers.js.map +1 -1
- package/dist/cjs/helpers/fileHelpers.js +58 -0
- package/dist/cjs/helpers/fileHelpers.js.map +1 -0
- package/dist/cjs/helpers/index.js +44 -0
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/helpers/interactionsHelper.js +8 -1
- package/dist/cjs/helpers/interactionsHelper.js.map +1 -1
- package/dist/cjs/helpers/objectHelpers.js +23 -9
- package/dist/cjs/helpers/objectHelpers.js.map +1 -1
- package/dist/cjs/helpers/stringHelpers.js +61 -5
- package/dist/cjs/helpers/stringHelpers.js.map +1 -1
- package/dist/cjs/helpers/urlHelpers.js +48 -0
- package/dist/cjs/helpers/urlHelpers.js.map +1 -0
- package/dist/cjs/index.js +191 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +3 -305
- package/dist/cjs/styles/index.css +18 -0
- package/dist/cjs/styles/variables/cssVars/_designVariables.css +18 -0
- package/dist/cjs/widgets/documentComments/DocumentComments.js +305 -0
- package/dist/cjs/widgets/documentComments/DocumentComments.js.map +1 -0
- package/dist/cjs/widgets/documentComments/_documentCommentsVariables.css +0 -0
- package/dist/cjs/widgets/documentComments/documentComments.css +107 -0
- package/dist/cjs/widgets/documentComments/documentComments.interfaces.js +6 -0
- package/dist/cjs/widgets/documentComments/documentComments.interfaces.js.map +1 -0
- package/dist/cjs/widgets/documentComments/index.js +19 -0
- package/dist/cjs/widgets/documentComments/index.js.map +1 -0
- package/dist/cjs/widgets/documentComparer/DocumentComparer.js +309 -0
- package/dist/cjs/widgets/documentComparer/DocumentComparer.js.map +1 -0
- package/dist/cjs/widgets/documentComparer/_documentComparerVariables.css +0 -0
- package/dist/cjs/widgets/documentComparer/documentComparer.css +117 -0
- package/dist/cjs/widgets/documentComparer/documentComparer.interfaces.js +6 -0
- package/dist/cjs/widgets/documentComparer/documentComparer.interfaces.js.map +1 -0
- package/dist/cjs/widgets/documentComparer/index.js +19 -0
- package/dist/cjs/widgets/documentComparer/index.js.map +1 -0
- package/dist/cjs/widgets/documentEditor/DocumentEditor.js +142 -0
- package/dist/cjs/widgets/documentEditor/DocumentEditor.js.map +1 -0
- package/dist/cjs/widgets/documentEditor/_documentEditorVariables.css +0 -0
- package/dist/cjs/widgets/documentEditor/documentEditor.css +33 -0
- package/dist/cjs/widgets/documentEditor/documentEditor.interfaces.js +6 -0
- package/dist/cjs/widgets/documentEditor/documentEditor.interfaces.js.map +1 -0
- package/dist/cjs/widgets/documentEditor/index.js +19 -0
- package/dist/cjs/widgets/documentEditor/index.js.map +1 -0
- package/dist/cjs/widgets/documentViewer/DocumentViewer.js +206 -0
- package/dist/cjs/widgets/documentViewer/DocumentViewer.js.map +1 -0
- package/dist/cjs/widgets/documentViewer/_documentViewerVariables.css +0 -0
- package/dist/cjs/widgets/documentViewer/documentViewer.css +82 -0
- package/dist/cjs/widgets/documentViewer/documentViewer.interfaces.js +6 -0
- package/dist/cjs/widgets/documentViewer/documentViewer.interfaces.js.map +1 -0
- package/dist/cjs/widgets/documentViewer/index.js +19 -0
- package/dist/cjs/widgets/documentViewer/index.js.map +1 -0
- package/dist/cjs/widgets/index.js +126 -0
- package/dist/cjs/widgets/index.js.map +1 -1
- package/dist/cjs/widgets/shared/documents/ToggleGroup.js +32 -0
- package/dist/cjs/widgets/shared/documents/ToggleGroup.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/_documentVariables.css +0 -0
- package/dist/cjs/widgets/shared/documents/annotations/AnnotationLayer.js +279 -0
- package/dist/cjs/widgets/shared/documents/annotations/AnnotationLayer.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/annotations/_annotationLayerVariables.css +0 -0
- package/dist/cjs/widgets/shared/documents/annotations/annotationLayer.css +65 -0
- package/dist/cjs/widgets/shared/documents/annotations/annotations.interfaces.js +21 -0
- package/dist/cjs/widgets/shared/documents/annotations/annotations.interfaces.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/annotations/highlightRegistry.js +67 -0
- package/dist/cjs/widgets/shared/documents/annotations/highlightRegistry.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/annotations/index.js +39 -0
- package/dist/cjs/widgets/shared/documents/annotations/index.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/annotations/textIndex.js +112 -0
- package/dist/cjs/widgets/shared/documents/annotations/textIndex.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/annotations/textQuoteAnchor.js +160 -0
- package/dist/cjs/widgets/shared/documents/annotations/textQuoteAnchor.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/documentHelpers.js +186 -0
- package/dist/cjs/widgets/shared/documents/documentHelpers.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/documents.interfaces.js +6 -0
- package/dist/cjs/widgets/shared/documents/documents.interfaces.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/DocumentDiff.js +73 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/DocumentDiff.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/_documentDiffVariables.css +0 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js +114 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.css +69 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js +6 -0
- package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/lazyEngines.js +19 -0
- package/dist/cjs/widgets/shared/documents/engines/lazyEngines.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js +200 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css +0 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.css +50 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js +6 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js +179 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js +278 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js +208 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js +85 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/_markdownRendererVariables.css +0 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/markdownRenderer.css +78 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/index.js +64 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/index.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js +6 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js +71 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js +192 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js +86 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js +38 -0
- package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/WordRenderer.js +49 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/WordRenderer.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js +214 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js +112 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordXml.js +68 -0
- package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordXml.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/index.js +50 -0
- package/dist/cjs/widgets/shared/documents/index.js.map +1 -0
- package/dist/cjs/widgets/shared/documents/toggleGroup.css +8 -0
- package/dist/cjs/widgets/shared/documents/useDocumentContent.js +222 -0
- package/dist/cjs/widgets/shared/documents/useDocumentContent.js.map +1 -0
- package/dist/components/design/banners/pageBanner/PageBanner.d.ts.map +1 -1
- package/dist/components/design/card/cardHeader/CardHeaderItem.d.ts.map +1 -1
- package/dist/components/design/logos/LogoLink.d.ts.map +1 -1
- package/dist/components/design/logos/VentureLogo.d.ts.map +1 -1
- package/dist/components/design/skeleton/Skeleton.d.ts +1 -1
- package/dist/components/design/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/design/themeLoader/ThemeLoader.d.ts.map +1 -1
- package/dist/components/form/buttons/SimpleButton.d.ts.map +1 -1
- package/dist/components/form/buttons/button.interface.d.ts +1 -0
- package/dist/components/form/buttons/button.interface.d.ts.map +1 -1
- package/dist/components/form/buttons/userPicButton/UserPicButton.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.d.ts.map +1 -1
- package/dist/components/navigation/link/Link.d.ts.map +1 -1
- package/dist/components/testing/devToolbar/DevToolbar.d.ts.map +1 -1
- package/dist/constants/fileUploadTypes.d.ts.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.js +12 -12
- package/dist/esm/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.json +12 -12
- package/dist/esm/components/design/banners/pageBanner/PageBanner.js +27 -12
- package/dist/esm/components/design/banners/pageBanner/PageBanner.js.map +1 -1
- package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js +22 -15
- package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
- package/dist/esm/components/design/dialog/dialog.css +4 -0
- package/dist/esm/components/design/logos/LogoLink.js +2 -1
- package/dist/esm/components/design/logos/LogoLink.js.map +1 -1
- package/dist/esm/components/design/logos/VentureLogo.js +2 -1
- package/dist/esm/components/design/logos/VentureLogo.js.map +1 -1
- package/dist/esm/components/design/revealMore/RevealMoreBelow.js +1 -1
- package/dist/esm/components/design/revealMore/RevealMoreBelow.js.map +1 -1
- package/dist/esm/components/design/skeleton/Skeleton.js +15 -5
- package/dist/esm/components/design/skeleton/Skeleton.js.map +1 -1
- package/dist/esm/components/design/themeLoader/ThemeLoader.js +1 -1
- package/dist/esm/components/design/themeLoader/ThemeLoader.js.map +1 -1
- package/dist/esm/components/form/buttons/SimpleButton.js +3 -1
- package/dist/esm/components/form/buttons/SimpleButton.js.map +1 -1
- package/dist/esm/components/form/buttons/button.interface.js.map +1 -1
- package/dist/esm/components/form/buttons/userPicButton/UserPicButton.js +5 -3
- package/dist/esm/components/form/buttons/userPicButton/UserPicButton.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +65 -19
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/esm/components/navigation/link/Link.js +2 -1
- package/dist/esm/components/navigation/link/Link.js.map +1 -1
- package/dist/esm/components/testing/devToolbar/DevToolbar.js +5 -3
- package/dist/esm/components/testing/devToolbar/DevToolbar.js.map +1 -1
- package/dist/esm/constants/fileUploadTypes.js +9 -4
- package/dist/esm/constants/fileUploadTypes.js.map +1 -1
- package/dist/esm/helpers/dateHelpers.js +34 -23
- package/dist/esm/helpers/dateHelpers.js.map +1 -1
- package/dist/esm/helpers/fileHelpers.js +48 -0
- package/dist/esm/helpers/fileHelpers.js.map +1 -0
- package/dist/esm/helpers/index.js +2 -0
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/helpers/interactionsHelper.js +5 -0
- package/dist/esm/helpers/interactionsHelper.js.map +1 -1
- package/dist/esm/helpers/objectHelpers.js +23 -9
- package/dist/esm/helpers/objectHelpers.js.map +1 -1
- package/dist/esm/helpers/stringHelpers.js +61 -5
- package/dist/esm/helpers/stringHelpers.js.map +1 -1
- package/dist/esm/helpers/urlHelpers.js +40 -0
- package/dist/esm/helpers/urlHelpers.js.map +1 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +2 -304
- package/dist/esm/styles/index.css +18 -0
- package/dist/esm/styles/variables/cssVars/_designVariables.css +18 -0
- package/dist/esm/widgets/documentComments/DocumentComments.js +298 -0
- package/dist/esm/widgets/documentComments/DocumentComments.js.map +1 -0
- package/dist/esm/widgets/documentComments/_documentCommentsVariables.css +0 -0
- package/dist/esm/widgets/documentComments/documentComments.css +107 -0
- package/dist/esm/widgets/documentComments/documentComments.interfaces.js +2 -0
- package/dist/esm/widgets/documentComments/documentComments.interfaces.js.map +1 -0
- package/dist/esm/widgets/documentComments/index.js +2 -0
- package/dist/esm/widgets/documentComments/index.js.map +1 -0
- package/dist/esm/widgets/documentComparer/DocumentComparer.js +301 -0
- package/dist/esm/widgets/documentComparer/DocumentComparer.js.map +1 -0
- package/dist/esm/widgets/documentComparer/_documentComparerVariables.css +0 -0
- package/dist/esm/widgets/documentComparer/documentComparer.css +117 -0
- package/dist/esm/widgets/documentComparer/documentComparer.interfaces.js +2 -0
- package/dist/esm/widgets/documentComparer/documentComparer.interfaces.js.map +1 -0
- package/dist/esm/widgets/documentComparer/index.js +2 -0
- package/dist/esm/widgets/documentComparer/index.js.map +1 -0
- package/dist/esm/widgets/documentEditor/DocumentEditor.js +135 -0
- package/dist/esm/widgets/documentEditor/DocumentEditor.js.map +1 -0
- package/dist/esm/widgets/documentEditor/_documentEditorVariables.css +0 -0
- package/dist/esm/widgets/documentEditor/documentEditor.css +33 -0
- package/dist/esm/widgets/documentEditor/documentEditor.interfaces.js +2 -0
- package/dist/esm/widgets/documentEditor/documentEditor.interfaces.js.map +1 -0
- package/dist/esm/widgets/documentEditor/index.js +2 -0
- package/dist/esm/widgets/documentEditor/index.js.map +1 -0
- package/dist/esm/widgets/documentViewer/DocumentViewer.js +198 -0
- package/dist/esm/widgets/documentViewer/DocumentViewer.js.map +1 -0
- package/dist/esm/widgets/documentViewer/_documentViewerVariables.css +0 -0
- package/dist/esm/widgets/documentViewer/documentViewer.css +82 -0
- package/dist/esm/widgets/documentViewer/documentViewer.interfaces.js +2 -0
- package/dist/esm/widgets/documentViewer/documentViewer.interfaces.js.map +1 -0
- package/dist/esm/widgets/documentViewer/index.js +2 -0
- package/dist/esm/widgets/documentViewer/index.js.map +1 -0
- package/dist/esm/widgets/index.js +6 -0
- package/dist/esm/widgets/index.js.map +1 -1
- package/dist/esm/widgets/shared/documents/ToggleGroup.js +24 -0
- package/dist/esm/widgets/shared/documents/ToggleGroup.js.map +1 -0
- package/dist/esm/widgets/shared/documents/_documentVariables.css +0 -0
- package/dist/esm/widgets/shared/documents/annotations/AnnotationLayer.js +273 -0
- package/dist/esm/widgets/shared/documents/annotations/AnnotationLayer.js.map +1 -0
- package/dist/esm/widgets/shared/documents/annotations/_annotationLayerVariables.css +0 -0
- package/dist/esm/widgets/shared/documents/annotations/annotationLayer.css +65 -0
- package/dist/esm/widgets/shared/documents/annotations/annotations.interfaces.js +14 -0
- package/dist/esm/widgets/shared/documents/annotations/annotations.interfaces.js.map +1 -0
- package/dist/esm/widgets/shared/documents/annotations/highlightRegistry.js +58 -0
- package/dist/esm/widgets/shared/documents/annotations/highlightRegistry.js.map +1 -0
- package/dist/esm/widgets/shared/documents/annotations/index.js +4 -0
- package/dist/esm/widgets/shared/documents/annotations/index.js.map +1 -0
- package/dist/esm/widgets/shared/documents/annotations/textIndex.js +103 -0
- package/dist/esm/widgets/shared/documents/annotations/textIndex.js.map +1 -0
- package/dist/esm/widgets/shared/documents/annotations/textQuoteAnchor.js +150 -0
- package/dist/esm/widgets/shared/documents/annotations/textQuoteAnchor.js.map +1 -0
- package/dist/esm/widgets/shared/documents/documentHelpers.js +168 -0
- package/dist/esm/widgets/shared/documents/documentHelpers.js.map +1 -0
- package/dist/esm/widgets/shared/documents/documents.interfaces.js +2 -0
- package/dist/esm/widgets/shared/documents/documents.interfaces.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/DocumentDiff.js +65 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/DocumentDiff.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/_documentDiffVariables.css +0 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js +102 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.css +69 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js +2 -0
- package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/lazyEngines.js +13 -0
- package/dist/esm/widgets/shared/documents/engines/lazyEngines.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js +191 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css +0 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.css +50 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js +2 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js +170 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js +270 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js +198 -0
- package/dist/esm/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js +76 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/_markdownRendererVariables.css +0 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/markdownRenderer.css +78 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/index.js +5 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/index.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js +2 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js +64 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js +182 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js +78 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js +30 -0
- package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/WordRenderer.js +41 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/WordRenderer.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js +207 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js +105 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js.map +1 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordXml.js +57 -0
- package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordXml.js.map +1 -0
- package/dist/esm/widgets/shared/documents/index.js +3 -0
- package/dist/esm/widgets/shared/documents/index.js.map +1 -0
- package/dist/esm/widgets/shared/documents/toggleGroup.css +8 -0
- package/dist/esm/widgets/shared/documents/useDocumentContent.js +215 -0
- package/dist/esm/widgets/shared/documents/useDocumentContent.js.map +1 -0
- package/dist/helpers/dateHelpers.d.ts.map +1 -1
- package/dist/helpers/fileHelpers.d.ts +5 -0
- package/dist/helpers/fileHelpers.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +3 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/interactionsHelper.d.ts +2 -0
- package/dist/helpers/interactionsHelper.d.ts.map +1 -1
- package/dist/helpers/objectHelpers.d.ts.map +1 -1
- package/dist/helpers/stringHelpers.d.ts.map +1 -1
- package/dist/helpers/urlHelpers.d.ts +3 -0
- package/dist/helpers/urlHelpers.d.ts.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/package.json +42 -28
- package/dist/widgets/documentComments/DocumentComments.d.ts +7 -0
- package/dist/widgets/documentComments/DocumentComments.d.ts.map +1 -0
- package/dist/widgets/documentComments/documentComments.interfaces.d.ts +57 -0
- package/dist/widgets/documentComments/documentComments.interfaces.d.ts.map +1 -0
- package/dist/widgets/documentComments/index.d.ts +3 -0
- package/dist/widgets/documentComments/index.d.ts.map +1 -0
- package/dist/widgets/documentComparer/DocumentComparer.d.ts +7 -0
- package/dist/widgets/documentComparer/DocumentComparer.d.ts.map +1 -0
- package/dist/widgets/documentComparer/documentComparer.interfaces.d.ts +78 -0
- package/dist/widgets/documentComparer/documentComparer.interfaces.d.ts.map +1 -0
- package/dist/widgets/documentComparer/index.d.ts +3 -0
- package/dist/widgets/documentComparer/index.d.ts.map +1 -0
- package/dist/widgets/documentEditor/DocumentEditor.d.ts +7 -0
- package/dist/widgets/documentEditor/DocumentEditor.d.ts.map +1 -0
- package/dist/widgets/documentEditor/documentEditor.interfaces.d.ts +40 -0
- package/dist/widgets/documentEditor/documentEditor.interfaces.d.ts.map +1 -0
- package/dist/widgets/documentEditor/index.d.ts +3 -0
- package/dist/widgets/documentEditor/index.d.ts.map +1 -0
- package/dist/widgets/documentViewer/DocumentViewer.d.ts +7 -0
- package/dist/widgets/documentViewer/DocumentViewer.d.ts.map +1 -0
- package/dist/widgets/documentViewer/documentViewer.interfaces.d.ts +47 -0
- package/dist/widgets/documentViewer/documentViewer.interfaces.d.ts.map +1 -0
- package/dist/widgets/documentViewer/index.d.ts +3 -0
- package/dist/widgets/documentViewer/index.d.ts.map +1 -0
- package/dist/widgets/index.d.ts +12 -0
- package/dist/widgets/index.d.ts.map +1 -1
- package/dist/widgets/shared/documents/ToggleGroup.d.ts +15 -0
- package/dist/widgets/shared/documents/ToggleGroup.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/AnnotationLayer.d.ts +27 -0
- package/dist/widgets/shared/documents/annotations/AnnotationLayer.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/annotations.interfaces.d.ts +43 -0
- package/dist/widgets/shared/documents/annotations/annotations.interfaces.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/highlightRegistry.d.ts +12 -0
- package/dist/widgets/shared/documents/annotations/highlightRegistry.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/index.d.ts +6 -0
- package/dist/widgets/shared/documents/annotations/index.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/textIndex.d.ts +16 -0
- package/dist/widgets/shared/documents/annotations/textIndex.d.ts.map +1 -0
- package/dist/widgets/shared/documents/annotations/textQuoteAnchor.d.ts +15 -0
- package/dist/widgets/shared/documents/annotations/textQuoteAnchor.d.ts.map +1 -0
- package/dist/widgets/shared/documents/documentHelpers.d.ts +14 -0
- package/dist/widgets/shared/documents/documentHelpers.d.ts.map +1 -0
- package/dist/widgets/shared/documents/documents.interfaces.d.ts +20 -0
- package/dist/widgets/shared/documents/documents.interfaces.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/documentDiff/DocumentDiff.d.ts +6 -0
- package/dist/widgets/shared/documents/engines/documentDiff/DocumentDiff.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.d.ts +25 -0
- package/dist/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.d.ts +17 -0
- package/dist/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/lazyEngines.d.ts +5 -0
- package/dist/widgets/shared/documents/engines/lazyEngines.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.d.ts +8 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.d.ts +23 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.d.ts +12 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.d.ts +8 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.d.ts +32 -0
- package/dist/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.d.ts +12 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/index.d.ts +7 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/index.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.d.ts +16 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.d.ts +3 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.d.ts +6 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.d.ts +3 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.d.ts +8 -0
- package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/WordRenderer.d.ts +11 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/WordRenderer.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/renderWordDocument.d.ts +7 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/renderWordDocument.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.d.ts +3 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.d.ts.map +1 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/wordXml.d.ts +21 -0
- package/dist/widgets/shared/documents/engines/wordRenderer/wordXml.d.ts.map +1 -0
- package/dist/widgets/shared/documents/index.d.ts +5 -0
- package/dist/widgets/shared/documents/index.d.ts.map +1 -0
- package/dist/widgets/shared/documents/useDocumentContent.d.ts +11 -0
- package/dist/widgets/shared/documents/useDocumentContent.d.ts.map +1 -0
- package/package.json +42 -28
- package/readme.md +49 -2
- package/dist/components/design/dialog/Dialog.test.d.ts +0 -5
- package/dist/components/design/dialog/Dialog.test.d.ts.map +0 -1
- package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.test.d.ts +0 -5
- package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.test.d.ts.map +0 -1
- package/dist/components/design/tooltip/Tooltip.test.d.ts +0 -2
- package/dist/components/design/tooltip/Tooltip.test.d.ts.map +0 -1
- package/dist/components/form/buttons/SimpleButton.test.d.ts +0 -5
- package/dist/components/form/buttons/SimpleButton.test.d.ts.map +0 -1
- package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts +0 -5
- package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/inputs/text/InputText.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/inputs/text/InputText.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/select/Select.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/select/Select.test.d.ts.map +0 -1
- package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts +0 -5
- package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts.map +0 -1
- package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts +0 -5
- package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts.map +0 -1
- package/dist/components/form/validation/ValidationMessages.test.d.ts +0 -5
- package/dist/components/form/validation/ValidationMessages.test.d.ts.map +0 -1
- package/dist/components/navigation/bubbleNavigator/bubbleNavigatorUtilities.test.d.ts +0 -2
- package/dist/components/navigation/bubbleNavigator/bubbleNavigatorUtilities.test.d.ts.map +0 -1
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts +0 -5
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts.map +0 -1
- package/dist/helpers/ageHelpers.test.d.ts +0 -2
- package/dist/helpers/ageHelpers.test.d.ts.map +0 -1
- package/dist/helpers/dateHelpers.test.d.ts +0 -2
- package/dist/helpers/dateHelpers.test.d.ts.map +0 -1
- package/dist/helpers/formatters.test.d.ts +0 -5
- package/dist/helpers/formatters.test.d.ts.map +0 -1
- package/dist/helpers/iconHelpers.test.d.ts +0 -5
- package/dist/helpers/iconHelpers.test.d.ts.map +0 -1
- package/dist/helpers/numberHelpers.test.d.ts +0 -5
- package/dist/helpers/numberHelpers.test.d.ts.map +0 -1
- package/dist/helpers/objectHelpers.test.d.ts +0 -2
- package/dist/helpers/objectHelpers.test.d.ts.map +0 -1
- package/dist/helpers/stringHelpers.test.d.ts +0 -2
- package/dist/helpers/stringHelpers.test.d.ts.map +0 -1
- package/dist/hooks/InteractiveHostFocus.test.d.ts +0 -5
- package/dist/hooks/InteractiveHostFocus.test.d.ts.map +0 -1
- package/dist/widgets/processLauncher/ProcessLauncher.test.d.ts +0 -5
- package/dist/widgets/processLauncher/ProcessLauncher.test.d.ts.map +0 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { diffArrays, diffLines, diffWordsWithSpace } from 'diff';
|
|
2
|
+
import remarkGfm from 'remark-gfm';
|
|
3
|
+
import remarkParse from 'remark-parse';
|
|
4
|
+
import remarkStringify from 'remark-stringify';
|
|
5
|
+
import { unified } from 'unified';
|
|
6
|
+
const markdownParser = unified().use(remarkParse).use(remarkGfm).use(remarkStringify);
|
|
7
|
+
const getNodeMarkdown = (markdown, node) => {
|
|
8
|
+
const start = node.position?.start.offset;
|
|
9
|
+
const end = node.position?.end.offset;
|
|
10
|
+
if (start === undefined || end === undefined) {
|
|
11
|
+
throw new Error('Parsed markdown node has no source offsets.');
|
|
12
|
+
}
|
|
13
|
+
return markdown.slice(start, end);
|
|
14
|
+
};
|
|
15
|
+
export const getMarkdownDefinitions = markdown => {
|
|
16
|
+
const tree = markdownParser.parse(markdown);
|
|
17
|
+
const definitions = [];
|
|
18
|
+
const visit = node => {
|
|
19
|
+
if (node.type === 'definition' || node.type === 'footnoteDefinition') {
|
|
20
|
+
definitions.push(node);
|
|
21
|
+
} else if ('children' in node) {
|
|
22
|
+
node.children.forEach(visit);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
visit(tree);
|
|
26
|
+
// Serialising nodes removes container markers from definitions nested in quotes or lists.
|
|
27
|
+
return markdownParser.stringify({
|
|
28
|
+
...tree,
|
|
29
|
+
children: definitions
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
Splits markdown into parsed top-level blocks, keeping fenced code, lists and definitions intact.
|
|
35
|
+
Diffing whole blocks means each side renders as valid markdown, so tables, lists and code are
|
|
36
|
+
never cut part-way through by a change boundary.
|
|
37
|
+
*/
|
|
38
|
+
export const splitMarkdownBlocks = markdown => {
|
|
39
|
+
const normalised = markdown.replace(/\r\n?/g, '\n');
|
|
40
|
+
return markdownParser.parse(normalised).children.map(node => getNodeMarkdown(normalised, node));
|
|
41
|
+
};
|
|
42
|
+
const getChange = part => {
|
|
43
|
+
if (part.added) {
|
|
44
|
+
return 'added';
|
|
45
|
+
}
|
|
46
|
+
return part.removed ? 'removed' : 'unchanged';
|
|
47
|
+
};
|
|
48
|
+
export const buildBlockDiff = (baseline, revised) => diffArrays(splitMarkdownBlocks(baseline), splitMarkdownBlocks(revised)).flatMap(part => {
|
|
49
|
+
const change = getChange(part);
|
|
50
|
+
return part.value.map(markdown => ({
|
|
51
|
+
change,
|
|
52
|
+
markdown
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
55
|
+
const toLines = value => value.replace(/\n$/, '').split('\n');
|
|
56
|
+
const wordSegments = (before, after, side) => diffWordsWithSpace(before, after).filter(part => side === 'removed' ? !part.added : !part.removed).map(part => ({
|
|
57
|
+
change: part.added || part.removed ? side : 'unchanged',
|
|
58
|
+
text: part.value
|
|
59
|
+
}));
|
|
60
|
+
export const buildLineDiff = (baseline, revised) => {
|
|
61
|
+
const parts = diffLines(baseline, revised);
|
|
62
|
+
const lines = [];
|
|
63
|
+
parts.forEach((part, index) => {
|
|
64
|
+
const previous = parts[index - 1];
|
|
65
|
+
const next = parts[index + 1];
|
|
66
|
+
if (part.added && previous?.removed) {
|
|
67
|
+
// Already emitted together with the removal it replaces.
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (part.removed && next?.added) {
|
|
71
|
+
const removedLines = toLines(part.value);
|
|
72
|
+
const addedLines = toLines(next.value);
|
|
73
|
+
removedLines.forEach((line, lineIndex) => {
|
|
74
|
+
lines.push({
|
|
75
|
+
change: 'removed',
|
|
76
|
+
segments: wordSegments(line, addedLines[lineIndex] ?? '', 'removed')
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
addedLines.forEach((line, lineIndex) => {
|
|
80
|
+
lines.push({
|
|
81
|
+
change: 'added',
|
|
82
|
+
segments: wordSegments(removedLines[lineIndex] ?? '', line, 'added')
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const change = getChange(part);
|
|
88
|
+
toLines(part.value).forEach(line => lines.push({
|
|
89
|
+
change,
|
|
90
|
+
segments: [{
|
|
91
|
+
change,
|
|
92
|
+
text: line
|
|
93
|
+
}]
|
|
94
|
+
}));
|
|
95
|
+
});
|
|
96
|
+
return lines;
|
|
97
|
+
};
|
|
98
|
+
export const summariseDiff = items => ({
|
|
99
|
+
added: items.filter(item => item.change === 'added').length,
|
|
100
|
+
removed: items.filter(item => item.change === 'removed').length
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=buildDocumentDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDocumentDiff.js","names":["diffArrays","diffLines","diffWordsWithSpace","remarkGfm","remarkParse","remarkStringify","unified","markdownParser","use","getNodeMarkdown","markdown","node","start","position","offset","end","undefined","Error","slice","getMarkdownDefinitions","tree","parse","definitions","visit","type","push","children","forEach","stringify","splitMarkdownBlocks","normalised","replace","map","getChange","part","added","removed","buildBlockDiff","baseline","revised","flatMap","change","value","toLines","split","wordSegments","before","after","side","filter","text","buildLineDiff","parts","lines","index","previous","next","removedLines","addedLines","line","lineIndex","segments","summariseDiff","items","item","length"],"sources":["../../../../../../../src/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.ts"],"sourcesContent":["import { diffArrays, diffLines, diffWordsWithSpace } from 'diff';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport remarkStringify from 'remark-stringify';\nimport { unified } from 'unified';\n\nexport type DocumentDiffChange = 'added' | 'removed' | 'unchanged';\n\nexport type DocumentDiffBlock = {\n change: DocumentDiffChange;\n markdown: string;\n};\n\nexport type DocumentDiffSegment = {\n change: DocumentDiffChange;\n text: string;\n};\n\nexport type DocumentDiffLine = {\n change: DocumentDiffChange;\n // Word-level segments; a changed line paired with its replacement highlights only what differs.\n segments: DocumentDiffSegment[];\n};\n\nexport type DocumentDiffSummary = {\n added: number;\n removed: number;\n};\n\nconst markdownParser = unified().use(remarkParse).use(remarkGfm).use(remarkStringify);\ntype ParsedMarkdownNode = ReturnType<typeof markdownParser.parse> | ReturnType<typeof markdownParser.parse>['children'][number];\n\nconst getNodeMarkdown = (markdown: string, node: ParsedMarkdownNode): string => {\n const start = node.position?.start.offset;\n const end = node.position?.end.offset;\n if (start === undefined || end === undefined) {\n throw new Error('Parsed markdown node has no source offsets.');\n }\n return markdown.slice(start, end);\n};\n\nexport const getMarkdownDefinitions = (markdown: string): string => {\n const tree = markdownParser.parse(markdown);\n const definitions: typeof tree.children = [];\n const visit = (node: ParsedMarkdownNode) => {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n definitions.push(node);\n } else if ('children' in node) {\n node.children.forEach(visit);\n }\n };\n visit(tree);\n // Serialising nodes removes container markers from definitions nested in quotes or lists.\n return markdownParser.stringify({ ...tree, children: definitions });\n};\n\n/*\n Splits markdown into parsed top-level blocks, keeping fenced code, lists and definitions intact.\n Diffing whole blocks means each side renders as valid markdown, so tables, lists and code are\n never cut part-way through by a change boundary.\n */\nexport const splitMarkdownBlocks = (markdown: string): string[] => {\n const normalised = markdown.replace(/\\r\\n?/g, '\\n');\n return markdownParser.parse(normalised).children.map((node) => getNodeMarkdown(normalised, node));\n};\n\nconst getChange = (part: { added?: boolean; removed?: boolean }): DocumentDiffChange => {\n if (part.added) {\n return 'added';\n }\n return part.removed ? 'removed' : 'unchanged';\n};\n\nexport const buildBlockDiff = (baseline: string, revised: string): DocumentDiffBlock[] =>\n diffArrays(splitMarkdownBlocks(baseline), splitMarkdownBlocks(revised)).flatMap((part) => {\n const change = getChange(part);\n return part.value.map((markdown) => ({ change, markdown }));\n });\n\nconst toLines = (value: string): string[] => value.replace(/\\n$/, '').split('\\n');\n\nconst wordSegments = (before: string, after: string, side: 'removed' | 'added'): DocumentDiffSegment[] =>\n diffWordsWithSpace(before, after)\n .filter((part) => (side === 'removed' ? !part.added : !part.removed))\n .map((part) => ({\n change: part.added || part.removed ? side : 'unchanged',\n text: part.value\n }));\n\nexport const buildLineDiff = (baseline: string, revised: string): DocumentDiffLine[] => {\n const parts = diffLines(baseline, revised);\n const lines: DocumentDiffLine[] = [];\n\n parts.forEach((part, index) => {\n const previous = parts[index - 1];\n const next = parts[index + 1];\n if (part.added && previous?.removed) {\n // Already emitted together with the removal it replaces.\n return;\n }\n if (part.removed && next?.added) {\n const removedLines = toLines(part.value);\n const addedLines = toLines(next.value);\n removedLines.forEach((line, lineIndex) => {\n lines.push({ change: 'removed', segments: wordSegments(line, addedLines[lineIndex] ?? '', 'removed') });\n });\n addedLines.forEach((line, lineIndex) => {\n lines.push({ change: 'added', segments: wordSegments(removedLines[lineIndex] ?? '', line, 'added') });\n });\n return;\n }\n const change = getChange(part);\n toLines(part.value).forEach((line) => lines.push({ change, segments: [{ change, text: line }] }));\n });\n\n return lines;\n};\n\nexport const summariseDiff = (items: { change: DocumentDiffChange }[]): DocumentDiffSummary => ({\n added: items.filter((item) => item.change === 'added').length,\n removed: items.filter((item) => item.change === 'removed').length\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
.documentDiff {
|
|
2
|
+
padding: var(--documentDiffPadding, var(--documentPadding, 30px));
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.documentDiff__summary {
|
|
6
|
+
margin: 0 0 10px;
|
|
7
|
+
color: var(--documentDiffSummaryColor, var(--documentMutedFgColor));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.documentDiff__block {
|
|
11
|
+
border-left: var(--documentDiffMarkerWidth, 5px) solid transparent;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.documentDiff__block--added {
|
|
15
|
+
background: var(--documentDiffAddedBg, var(--documentAddedBg));
|
|
16
|
+
color: var(--documentDiffAddedFgColor, var(--documentAddedFgColor, inherit));
|
|
17
|
+
border-left-color: var(--documentDiffAddedBorderColor, var(--documentAddedBorderColor));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.documentDiff__block--removed {
|
|
21
|
+
background: var(--documentDiffRemovedBg, var(--documentRemovedBg));
|
|
22
|
+
color: var(--documentDiffRemovedFgColor, var(--documentRemovedFgColor, inherit));
|
|
23
|
+
border-left-color: var(--documentDiffRemovedBorderColor, var(--documentRemovedBorderColor));
|
|
24
|
+
text-decoration: var(--documentDiffRemovedTextDecoration, line-through);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.documentDiff__markdown {
|
|
28
|
+
--markdownRendererPadding: 5px 15px;
|
|
29
|
+
--markdownRendererMaxWidth: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.documentDiff__source {
|
|
33
|
+
margin: 0;
|
|
34
|
+
font-family: var(--documentDiffSourceFont, monospace);
|
|
35
|
+
font-size: var(--documentDiffSourceFontSize, 0.8125rem);
|
|
36
|
+
white-space: pre-wrap;
|
|
37
|
+
overflow-wrap: anywhere;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.documentDiff__line {
|
|
41
|
+
display: block;
|
|
42
|
+
padding: 0 10px;
|
|
43
|
+
border-left: var(--documentDiffMarkerWidth, 5px) solid transparent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.documentDiff__line--added {
|
|
47
|
+
border-left-color: var(--documentDiffAddedBorderColor, var(--documentAddedBorderColor));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.documentDiff__line--removed {
|
|
51
|
+
border-left-color: var(--documentDiffRemovedBorderColor, var(--documentRemovedBorderColor));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.documentDiff__word {
|
|
55
|
+
border-radius: 3px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.documentDiff__word--added {
|
|
59
|
+
background: var(--documentDiffAddedBg, var(--documentAddedBg));
|
|
60
|
+
color: var(--documentDiffAddedFgColor, var(--documentAddedFgColor, inherit));
|
|
61
|
+
border-left-color: var(--documentDiffAddedBorderColor, var(--documentAddedBorderColor));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.documentDiff__word--removed {
|
|
65
|
+
background: var(--documentDiffRemovedBg, var(--documentRemovedBg));
|
|
66
|
+
color: var(--documentDiffRemovedFgColor, var(--documentRemovedFgColor, inherit));
|
|
67
|
+
border-left-color: var(--documentDiffRemovedBorderColor, var(--documentRemovedBorderColor));
|
|
68
|
+
text-decoration: var(--documentDiffRemovedTextDecoration, line-through);
|
|
69
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentDiff.interfaces.js","names":[],"sources":["../../../../../../../src/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.ts"],"sourcesContent":["import { ResolveResourceUrl } from '../../documents.interfaces';\n\nexport type DocumentDiffView = 'rendered' | 'source';\n\nexport type DocumentDiffLabels = {\n added: string;\n removed: string;\n noChanges: string;\n /* eslint-disable-next-line no-unused-vars */\n summary: (added: number, removed: number) => string;\n};\n\nexport type DocumentDiffProps = {\n baseline: string;\n revised: string;\n view?: DocumentDiffView;\n headingOffset?: number;\n resolveResourceUrl?: ResolveResourceUrl;\n labels: DocumentDiffLabels;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { lazy } from 'react';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
The document engines depend on large third-party packages (react-markdown, docx-preview,
|
|
5
|
+
MDXEditor, diff). Widgets import them only through these lazy wrappers so the packages are
|
|
6
|
+
downloaded the first time a widget actually needs them, never as part of the library entry point.
|
|
7
|
+
Render them inside <Suspense>.
|
|
8
|
+
*/
|
|
9
|
+
export const LazyMarkdownRenderer = /*#__PURE__*/lazy(() => import('./markdownRenderer/MarkdownRenderer'));
|
|
10
|
+
export const LazyWordRenderer = /*#__PURE__*/lazy(() => import('./wordRenderer/WordRenderer'));
|
|
11
|
+
export const LazyMarkdownEditorEngine = /*#__PURE__*/lazy(() => import('./markdownEditor/MarkdownEditorEngine'));
|
|
12
|
+
export const LazyDocumentDiff = /*#__PURE__*/lazy(() => import('./documentDiff/DocumentDiff'));
|
|
13
|
+
//# sourceMappingURL=lazyEngines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazyEngines.js","names":["lazy","LazyMarkdownRenderer","LazyWordRenderer","LazyMarkdownEditorEngine","LazyDocumentDiff"],"sources":["../../../../../../src/widgets/shared/documents/engines/lazyEngines.ts"],"sourcesContent":["import { lazy } from 'react';\n\n/*\n The document engines depend on large third-party packages (react-markdown, docx-preview,\n MDXEditor, diff). Widgets import them only through these lazy wrappers so the packages are\n downloaded the first time a widget actually needs them, never as part of the library entry point.\n Render them inside <Suspense>.\n */\nexport const LazyMarkdownRenderer = lazy(() => import('./markdownRenderer/MarkdownRenderer'));\nexport const LazyWordRenderer = lazy(() => import('./wordRenderer/WordRenderer'));\nexport const LazyMarkdownEditorEngine = lazy(() => import('./markdownEditor/MarkdownEditorEngine'));\nexport const LazyDocumentDiff = lazy(() => import('./documentDiff/DocumentDiff'));\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,OAAO;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,gBAAGD,IAAI,CAAC,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;AAC7F,OAAO,MAAME,gBAAgB,gBAAGF,IAAI,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACjF,OAAO,MAAMG,wBAAwB,gBAAGH,IAAI,CAAC,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;AACnG,OAAO,MAAMI,gBAAgB,gBAAGJ,IAAI,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import { BlockTypeSelect, BoldItalicUnderlineToggles, codeBlockPlugin, CreateLink, diffSourcePlugin, DiffSourceToggleWrapper, headingsPlugin, imagePlugin, InsertCodeBlock, InsertImage, InsertTable, InsertThematicBreak, linkDialogPlugin, linkPlugin, listsPlugin, ListsToggle, markdownShortcutPlugin, MDXEditor, quotePlugin, Separator, tablePlugin, thematicBreakPlugin, toolbarPlugin, UndoRedo, useCodeBlockEditorContext } from '@mdxeditor/editor';
|
|
3
|
+
import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { AnnotationLayer } from '../../annotations/AnnotationLayer';
|
|
5
|
+
import { desanitizeEditorOutput, sanitizeEditorInput } from './sanitizeForMdx';
|
|
6
|
+
import { createSourceAnnotations } from './sourceAnnotations';
|
|
7
|
+
import '@mdxeditor/editor/style.css';
|
|
8
|
+
import './markdownEditorEngine.css';
|
|
9
|
+
export const DEFAULT_TOOLBAR_ITEMS = ['undoRedo', 'blockType', 'formatting', 'lists', 'link', 'table', 'thematicBreak'];
|
|
10
|
+
const DEFAULT_LIST_TYPES = ['bullet', 'number'];
|
|
11
|
+
const ALLOWED_HTML = [{
|
|
12
|
+
tag: 'img',
|
|
13
|
+
attrs: ['src', 'alt', 'width', 'height']
|
|
14
|
+
}, {
|
|
15
|
+
tag: 'br'
|
|
16
|
+
}];
|
|
17
|
+
// Consistent serialisation keeps saved documents stable and diffs free of formatting noise.
|
|
18
|
+
const TO_MARKDOWN_OPTIONS = {
|
|
19
|
+
listItemIndent: 'one',
|
|
20
|
+
bullet: '-',
|
|
21
|
+
emphasis: '_',
|
|
22
|
+
strong: '*',
|
|
23
|
+
rule: '-'
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Code blocks are edited as plain text, avoiding a syntax-highlighting editor per language.
|
|
27
|
+
const createPlainTextCodeEditor = readOnly => ({
|
|
28
|
+
match: () => true,
|
|
29
|
+
priority: 0,
|
|
30
|
+
Editor: ({
|
|
31
|
+
code
|
|
32
|
+
}) => {
|
|
33
|
+
const codeBlock = useCodeBlockEditorContext();
|
|
34
|
+
return (
|
|
35
|
+
/*#__PURE__*/
|
|
36
|
+
// Stops the surrounding rich-text editor handling key presses meant for the code block.
|
|
37
|
+
React.createElement("div", {
|
|
38
|
+
role: "none",
|
|
39
|
+
onKeyDown: event => event.nativeEvent.stopImmediatePropagation()
|
|
40
|
+
}, /*#__PURE__*/React.createElement("textarea", {
|
|
41
|
+
className: "markdownEditorEngine__codeBlock",
|
|
42
|
+
defaultValue: code,
|
|
43
|
+
readOnly: readOnly,
|
|
44
|
+
onChange: event => codeBlock.setCode(event.target.value)
|
|
45
|
+
}))
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const renderToolbarItem = (item, listTypes) => {
|
|
50
|
+
switch (item) {
|
|
51
|
+
case 'undoRedo':
|
|
52
|
+
return /*#__PURE__*/React.createElement(UndoRedo, null);
|
|
53
|
+
case 'blockType':
|
|
54
|
+
return /*#__PURE__*/React.createElement(BlockTypeSelect, null);
|
|
55
|
+
case 'formatting':
|
|
56
|
+
return /*#__PURE__*/React.createElement(BoldItalicUnderlineToggles, null);
|
|
57
|
+
case 'lists':
|
|
58
|
+
return /*#__PURE__*/React.createElement(ListsToggle, {
|
|
59
|
+
options: listTypes
|
|
60
|
+
});
|
|
61
|
+
case 'link':
|
|
62
|
+
return /*#__PURE__*/React.createElement(CreateLink, null);
|
|
63
|
+
case 'image':
|
|
64
|
+
return /*#__PURE__*/React.createElement(InsertImage, null);
|
|
65
|
+
case 'table':
|
|
66
|
+
return /*#__PURE__*/React.createElement(InsertTable, null);
|
|
67
|
+
case 'thematicBreak':
|
|
68
|
+
return /*#__PURE__*/React.createElement(InsertThematicBreak, null);
|
|
69
|
+
case 'codeBlock':
|
|
70
|
+
return /*#__PURE__*/React.createElement(InsertCodeBlock, null);
|
|
71
|
+
default:
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// Comments in the rich-text view are anchored to the editable content, not the toolbar or dialogs.
|
|
77
|
+
const findRichTextRoot = content => content.querySelector('.markdownEditorEngine__content');
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
Rich-text markdown editing built on MDXEditor. Loaded lazily by the document widgets because
|
|
81
|
+
MDXEditor and its dependencies are large.
|
|
82
|
+
*/
|
|
83
|
+
export const MarkdownEditorEngine = ({
|
|
84
|
+
markdown,
|
|
85
|
+
onChange,
|
|
86
|
+
readOnly = false,
|
|
87
|
+
viewMode = 'rich-text',
|
|
88
|
+
viewModes = ['rich-text', 'source'],
|
|
89
|
+
diffMarkdown,
|
|
90
|
+
toolbarItems = DEFAULT_TOOLBAR_ITEMS,
|
|
91
|
+
listTypes = DEFAULT_LIST_TYPES,
|
|
92
|
+
imageUploadHandler,
|
|
93
|
+
imagePreviewHandler,
|
|
94
|
+
contentCssClass = '',
|
|
95
|
+
annotations,
|
|
96
|
+
annotationLayerId = 'markdownEditorAnnotations',
|
|
97
|
+
onParseError
|
|
98
|
+
}) => {
|
|
99
|
+
const editorRef = useRef(null);
|
|
100
|
+
const [sourceSelection, setSourceSelection] = useState(null);
|
|
101
|
+
|
|
102
|
+
// The handlers read the latest props through a ref so the CodeMirror extension can stay stable.
|
|
103
|
+
const annotationsRef = useRef(annotations);
|
|
104
|
+
annotationsRef.current = annotations;
|
|
105
|
+
const [sourceAnnotations] = useState(() => createSourceAnnotations({
|
|
106
|
+
onSelectionChange: setSourceSelection,
|
|
107
|
+
onSelectComment: commentId => annotationsRef.current?.onSelectComment?.(commentId)
|
|
108
|
+
}));
|
|
109
|
+
const hasAnnotations = annotations !== undefined;
|
|
110
|
+
const codeMirrorExtensions = useMemo(() => hasAnnotations ? [sourceAnnotations.extension] : [], [hasAnnotations, sourceAnnotations]);
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (annotations) {
|
|
113
|
+
sourceAnnotations.update({
|
|
114
|
+
comments: annotations.comments,
|
|
115
|
+
selectedCommentId: annotations.selectedCommentId,
|
|
116
|
+
showResolved: annotations.showResolved
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}, [annotations, sourceAnnotations]);
|
|
120
|
+
const safeMarkdown = useMemo(() => sanitizeEditorInput(markdown, ALLOWED_HTML), [markdown]);
|
|
121
|
+
const safeDiffMarkdown = useMemo(() => sanitizeEditorInput(diffMarkdown ?? markdown, ALLOWED_HTML), [diffMarkdown, markdown]);
|
|
122
|
+
|
|
123
|
+
// MDXEditor only reads `markdown` on mount. Read-only content (e.g. streamed output) is pushed in
|
|
124
|
+
// imperatively; while editing, external updates are ignored so they never overwrite the user's input.
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (readOnly) {
|
|
127
|
+
editorRef.current?.setMarkdown(safeMarkdown);
|
|
128
|
+
}
|
|
129
|
+
}, [readOnly, safeMarkdown]);
|
|
130
|
+
const plugins = useMemo(() => {
|
|
131
|
+
const showToolbar = !readOnly && (toolbarItems.length > 0 || viewModes.length > 1);
|
|
132
|
+
const items = toolbarItems.filter(item => item !== 'image' || imageUploadHandler);
|
|
133
|
+
return [headingsPlugin(), listsPlugin(), quotePlugin(), thematicBreakPlugin(), linkPlugin(), linkDialogPlugin(), tablePlugin(), imagePlugin({
|
|
134
|
+
imageUploadHandler: imageUploadHandler ?? null,
|
|
135
|
+
...(imagePreviewHandler ? {
|
|
136
|
+
imagePreviewHandler
|
|
137
|
+
} : {})
|
|
138
|
+
}), codeBlockPlugin({
|
|
139
|
+
codeBlockEditorDescriptors: [createPlainTextCodeEditor(readOnly)]
|
|
140
|
+
}), markdownShortcutPlugin(), diffSourcePlugin({
|
|
141
|
+
diffMarkdown: safeDiffMarkdown,
|
|
142
|
+
viewMode,
|
|
143
|
+
readOnlyDiff: true,
|
|
144
|
+
codeMirrorExtensions
|
|
145
|
+
}), ...(showToolbar ? [toolbarPlugin({
|
|
146
|
+
toolbarContents: () => /*#__PURE__*/React.createElement(DiffSourceToggleWrapper, {
|
|
147
|
+
options: viewModes
|
|
148
|
+
}, items.map((item, index) => /*#__PURE__*/React.createElement(Fragment, {
|
|
149
|
+
key: item
|
|
150
|
+
}, index > 0 && /*#__PURE__*/React.createElement(Separator, null), renderToolbarItem(item, listTypes))))
|
|
151
|
+
})] : [])];
|
|
152
|
+
}, [readOnly, toolbarItems, viewModes, imageUploadHandler, imagePreviewHandler, safeDiffMarkdown, viewMode, listTypes, codeMirrorExtensions]);
|
|
153
|
+
const handleChange = useCallback((nextMarkdown, initialMarkdownNormalize) => {
|
|
154
|
+
// The first change event is MDXEditor normalising the input, not a user edit.
|
|
155
|
+
if (!readOnly && !initialMarkdownNormalize) {
|
|
156
|
+
onChange?.(desanitizeEditorOutput(nextMarkdown));
|
|
157
|
+
}
|
|
158
|
+
}, [readOnly, onChange]);
|
|
159
|
+
const handleError = useCallback(({
|
|
160
|
+
error
|
|
161
|
+
}) => {
|
|
162
|
+
// Deferred because MDXEditor can report errors while building its initial state, and updating
|
|
163
|
+
// another component's state during render triggers a React warning.
|
|
164
|
+
queueMicrotask(() => onParseError?.(error));
|
|
165
|
+
}, [onParseError]);
|
|
166
|
+
const editor = /*#__PURE__*/React.createElement(MDXEditor, {
|
|
167
|
+
ref: editorRef
|
|
168
|
+
// Plugins cannot change after mount, so remount when the mode or editability changes.
|
|
169
|
+
,
|
|
170
|
+
key: `${viewMode}_${readOnly}`,
|
|
171
|
+
className: "markdownEditorEngine",
|
|
172
|
+
contentEditableClassName: `markdownEditorEngine__content ${contentCssClass}`.trim(),
|
|
173
|
+
markdown: safeMarkdown,
|
|
174
|
+
readOnly: readOnly,
|
|
175
|
+
plugins: plugins,
|
|
176
|
+
onChange: handleChange,
|
|
177
|
+
onError: handleError,
|
|
178
|
+
toMarkdownOptions: TO_MARKDOWN_OPTIONS
|
|
179
|
+
});
|
|
180
|
+
if (!annotations) {
|
|
181
|
+
return editor;
|
|
182
|
+
}
|
|
183
|
+
return /*#__PURE__*/React.createElement(AnnotationLayer, _extends({}, annotations, {
|
|
184
|
+
id: annotationLayerId,
|
|
185
|
+
getTextRoot: findRichTextRoot,
|
|
186
|
+
externalSelection: sourceSelection,
|
|
187
|
+
onExternalSelectionConsumed: () => setSourceSelection(null)
|
|
188
|
+
}), editor);
|
|
189
|
+
};
|
|
190
|
+
export default MarkdownEditorEngine;
|
|
191
|
+
//# sourceMappingURL=MarkdownEditorEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownEditorEngine.js","names":["BlockTypeSelect","BoldItalicUnderlineToggles","codeBlockPlugin","CreateLink","diffSourcePlugin","DiffSourceToggleWrapper","headingsPlugin","imagePlugin","InsertCodeBlock","InsertImage","InsertTable","InsertThematicBreak","linkDialogPlugin","linkPlugin","listsPlugin","ListsToggle","markdownShortcutPlugin","MDXEditor","quotePlugin","Separator","tablePlugin","thematicBreakPlugin","toolbarPlugin","UndoRedo","useCodeBlockEditorContext","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","AnnotationLayer","desanitizeEditorOutput","sanitizeEditorInput","createSourceAnnotations","DEFAULT_TOOLBAR_ITEMS","DEFAULT_LIST_TYPES","ALLOWED_HTML","tag","attrs","TO_MARKDOWN_OPTIONS","listItemIndent","bullet","emphasis","strong","rule","createPlainTextCodeEditor","readOnly","match","priority","Editor","code","codeBlock","createElement","role","onKeyDown","event","nativeEvent","stopImmediatePropagation","className","defaultValue","onChange","setCode","target","value","renderToolbarItem","item","listTypes","options","findRichTextRoot","content","querySelector","MarkdownEditorEngine","markdown","viewMode","viewModes","diffMarkdown","toolbarItems","imageUploadHandler","imagePreviewHandler","contentCssClass","annotations","annotationLayerId","onParseError","editorRef","sourceSelection","setSourceSelection","annotationsRef","current","sourceAnnotations","onSelectionChange","onSelectComment","commentId","hasAnnotations","undefined","codeMirrorExtensions","extension","update","comments","selectedCommentId","showResolved","safeMarkdown","safeDiffMarkdown","setMarkdown","plugins","showToolbar","length","items","filter","codeBlockEditorDescriptors","readOnlyDiff","toolbarContents","map","index","key","handleChange","nextMarkdown","initialMarkdownNormalize","handleError","error","queueMicrotask","editor","ref","contentEditableClassName","trim","onError","toMarkdownOptions","_extends","id","getTextRoot","externalSelection","onExternalSelectionConsumed"],"sources":["../../../../../../../src/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.tsx"],"sourcesContent":["import {\n BlockTypeSelect,\n BoldItalicUnderlineToggles,\n codeBlockPlugin,\n CodeBlockEditorDescriptor,\n CreateLink,\n diffSourcePlugin,\n DiffSourceToggleWrapper,\n headingsPlugin,\n imagePlugin,\n InsertCodeBlock,\n InsertImage,\n InsertTable,\n InsertThematicBreak,\n linkDialogPlugin,\n linkPlugin,\n listsPlugin,\n ListsToggle,\n markdownShortcutPlugin,\n MDXEditor,\n MDXEditorMethods,\n quotePlugin,\n RealmPlugin,\n Separator,\n tablePlugin,\n thematicBreakPlugin,\n toolbarPlugin,\n UndoRedo,\n useCodeBlockEditorContext\n} from '@mdxeditor/editor';\nimport React, { FC, Fragment, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { AnnotationLayer } from '../../annotations/AnnotationLayer';\nimport {\n MarkdownEditorEngineProps,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem\n} from './markdownEditorEngine.interfaces';\nimport { AllowedHtmlEntry, desanitizeEditorOutput, sanitizeEditorInput } from './sanitizeForMdx';\nimport { createSourceAnnotations, SourceSelection } from './sourceAnnotations';\n\nimport '@mdxeditor/editor/style.css';\nimport './markdownEditorEngine.scss';\n\nexport const DEFAULT_TOOLBAR_ITEMS: MarkdownEditorToolbarItem[] = [\n 'undoRedo', 'blockType', 'formatting', 'lists', 'link', 'table', 'thematicBreak'\n];\nconst DEFAULT_LIST_TYPES: MarkdownEditorListType[] = ['bullet', 'number'];\nconst ALLOWED_HTML: AllowedHtmlEntry[] = [\n { tag: 'img', attrs: ['src', 'alt', 'width', 'height'] },\n { tag: 'br' }\n];\n// Consistent serialisation keeps saved documents stable and diffs free of formatting noise.\nconst TO_MARKDOWN_OPTIONS = { listItemIndent: 'one', bullet: '-', emphasis: '_', strong: '*', rule: '-' } as const;\n\n// Code blocks are edited as plain text, avoiding a syntax-highlighting editor per language.\nconst createPlainTextCodeEditor = (readOnly: boolean): CodeBlockEditorDescriptor => ({\n match: () => true,\n priority: 0,\n Editor: ({ code }) => {\n const codeBlock = useCodeBlockEditorContext();\n return (\n // Stops the surrounding rich-text editor handling key presses meant for the code block.\n <div role=\"none\" onKeyDown={ (event) => event.nativeEvent.stopImmediatePropagation() }>\n <textarea\n className=\"markdownEditorEngine__codeBlock\"\n defaultValue={ code }\n readOnly={ readOnly }\n onChange={ (event) => codeBlock.setCode(event.target.value) }\n />\n </div>\n );\n }\n});\n\nconst renderToolbarItem = (item: MarkdownEditorToolbarItem, listTypes: MarkdownEditorListType[]): ReactNode => {\n switch (item) {\n case 'undoRedo':\n return <UndoRedo />;\n case 'blockType':\n return <BlockTypeSelect />;\n case 'formatting':\n return <BoldItalicUnderlineToggles />;\n case 'lists':\n return <ListsToggle options={ listTypes } />;\n case 'link':\n return <CreateLink />;\n case 'image':\n return <InsertImage />;\n case 'table':\n return <InsertTable />;\n case 'thematicBreak':\n return <InsertThematicBreak />;\n case 'codeBlock':\n return <InsertCodeBlock />;\n default:\n return null;\n }\n};\n\n// Comments in the rich-text view are anchored to the editable content, not the toolbar or dialogs.\nconst findRichTextRoot = (content: HTMLElement): HTMLElement | null => content.querySelector('.markdownEditorEngine__content');\n\n/*\n Rich-text markdown editing built on MDXEditor. Loaded lazily by the document widgets because\n MDXEditor and its dependencies are large.\n */\nexport const MarkdownEditorEngine: FC<MarkdownEditorEngineProps> = (\n {\n markdown,\n onChange,\n readOnly = false,\n viewMode = 'rich-text',\n viewModes = ['rich-text', 'source'],\n diffMarkdown,\n toolbarItems = DEFAULT_TOOLBAR_ITEMS,\n listTypes = DEFAULT_LIST_TYPES,\n imageUploadHandler,\n imagePreviewHandler,\n contentCssClass = '',\n annotations,\n annotationLayerId = 'markdownEditorAnnotations',\n onParseError\n }\n) => {\n const editorRef = useRef<MDXEditorMethods>(null);\n const [sourceSelection, setSourceSelection] = useState<SourceSelection>(null);\n\n // The handlers read the latest props through a ref so the CodeMirror extension can stay stable.\n const annotationsRef = useRef(annotations);\n annotationsRef.current = annotations;\n const [sourceAnnotations] = useState(() => createSourceAnnotations({\n onSelectionChange: setSourceSelection,\n onSelectComment: (commentId) => annotationsRef.current?.onSelectComment?.(commentId)\n }));\n const hasAnnotations = annotations !== undefined;\n const codeMirrorExtensions = useMemo(() => (hasAnnotations ? [sourceAnnotations.extension] : []), [hasAnnotations, sourceAnnotations]);\n\n useEffect(() => {\n if (annotations) {\n sourceAnnotations.update({\n comments: annotations.comments,\n selectedCommentId: annotations.selectedCommentId,\n showResolved: annotations.showResolved\n });\n }\n }, [annotations, sourceAnnotations]);\n const safeMarkdown = useMemo(() => sanitizeEditorInput(markdown, ALLOWED_HTML), [markdown]);\n const safeDiffMarkdown = useMemo(() => sanitizeEditorInput(diffMarkdown ?? markdown, ALLOWED_HTML), [diffMarkdown, markdown]);\n\n // MDXEditor only reads `markdown` on mount. Read-only content (e.g. streamed output) is pushed in\n // imperatively; while editing, external updates are ignored so they never overwrite the user's input.\n useEffect(() => {\n if (readOnly) {\n editorRef.current?.setMarkdown(safeMarkdown);\n }\n }, [readOnly, safeMarkdown]);\n\n const plugins = useMemo((): RealmPlugin[] => {\n const showToolbar = !readOnly && (toolbarItems.length > 0 || viewModes.length > 1);\n const items = toolbarItems.filter((item) => item !== 'image' || imageUploadHandler);\n return [\n headingsPlugin(),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n imagePlugin({\n imageUploadHandler: imageUploadHandler ?? null,\n ...(imagePreviewHandler ? { imagePreviewHandler } : {})\n }),\n codeBlockPlugin({ codeBlockEditorDescriptors: [createPlainTextCodeEditor(readOnly)] }),\n markdownShortcutPlugin(),\n diffSourcePlugin({ diffMarkdown: safeDiffMarkdown, viewMode, readOnlyDiff: true, codeMirrorExtensions }),\n ...(showToolbar ? [toolbarPlugin({\n toolbarContents: () => (\n <DiffSourceToggleWrapper options={ viewModes }>\n { items.map((item, index) => (\n <Fragment key={ item }>\n { index > 0 && <Separator /> }\n { renderToolbarItem(item, listTypes) }\n </Fragment>\n )) }\n </DiffSourceToggleWrapper>\n )\n })] : [])\n ];\n }, [readOnly, toolbarItems, viewModes, imageUploadHandler, imagePreviewHandler, safeDiffMarkdown, viewMode, listTypes, codeMirrorExtensions]);\n\n const handleChange = useCallback((nextMarkdown: string, initialMarkdownNormalize: boolean) => {\n // The first change event is MDXEditor normalising the input, not a user edit.\n if (!readOnly && !initialMarkdownNormalize) {\n onChange?.(desanitizeEditorOutput(nextMarkdown));\n }\n }, [readOnly, onChange]);\n\n const handleError = useCallback(({ error }: { error: string }) => {\n // Deferred because MDXEditor can report errors while building its initial state, and updating\n // another component's state during render triggers a React warning.\n queueMicrotask(() => onParseError?.(error));\n }, [onParseError]);\n\n const editor = (\n <MDXEditor\n ref={ editorRef }\n // Plugins cannot change after mount, so remount when the mode or editability changes.\n key={ `${ viewMode }_${ readOnly }` }\n className=\"markdownEditorEngine\"\n contentEditableClassName={ `markdownEditorEngine__content ${ contentCssClass }`.trim() }\n markdown={ safeMarkdown }\n readOnly={ readOnly }\n plugins={ plugins }\n onChange={ handleChange }\n onError={ handleError }\n toMarkdownOptions={ TO_MARKDOWN_OPTIONS }\n />\n );\n\n if (!annotations) {\n return editor;\n }\n\n return (\n <AnnotationLayer\n { ...annotations }\n id={ annotationLayerId }\n getTextRoot={ findRichTextRoot }\n externalSelection={ sourceSelection }\n onExternalSelectionConsumed={ () => setSourceSelection(null) }\n >\n { editor }\n </AnnotationLayer>\n );\n};\n\nexport default MarkdownEditorEngine;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css
ADDED
|
File without changes
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
.markdownEditorEngine {
|
|
2
|
+
--basePageBg: var(--markdownEditorEngineBg, var(--documentBg, #fff));
|
|
3
|
+
--baseBg: var(--markdownEditorEngineToolbarBg, var(--documentSubtleBg));
|
|
4
|
+
--baseTextContrast: var(--markdownEditorEngineFgColor, var(--documentFgColor, inherit));
|
|
5
|
+
--accentSolid: var(--markdownEditorEngineAccentColor, var(--primaryButtonBg, currentColor));
|
|
6
|
+
--font-body: var(--markdownEditorEngineFont, var(--documentFont));
|
|
7
|
+
display: flex;
|
|
8
|
+
flex: 1;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
min-height: 0;
|
|
11
|
+
font-family: var(--markdownEditorEngineFont, var(--documentFont));
|
|
12
|
+
}
|
|
13
|
+
.markdownEditorEngine [role=toolbar] {
|
|
14
|
+
position: sticky;
|
|
15
|
+
top: 0;
|
|
16
|
+
z-index: 1;
|
|
17
|
+
border-radius: 0;
|
|
18
|
+
background: var(--markdownEditorEngineToolbarBg, var(--documentSubtleBg));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.markdownEditorEngine__content {
|
|
22
|
+
min-height: var(--markdownEditorEngineContentMinHeight, 450px);
|
|
23
|
+
padding: var(--markdownEditorEngineContentPadding, 20px);
|
|
24
|
+
color: var(--markdownEditorEngineFgColor, var(--documentFgColor, inherit));
|
|
25
|
+
font-size: var(--markdownEditorEngineFontSize, 0.875rem);
|
|
26
|
+
line-height: var(--markdownEditorEngineLineHeight, 1.6);
|
|
27
|
+
overflow-wrap: anywhere;
|
|
28
|
+
}
|
|
29
|
+
.markdownEditorEngine__content table {
|
|
30
|
+
width: 100%;
|
|
31
|
+
border-collapse: collapse;
|
|
32
|
+
}
|
|
33
|
+
.markdownEditorEngine__content th,
|
|
34
|
+
.markdownEditorEngine__content td {
|
|
35
|
+
padding: var(--markdownEditorEngineCellPadding, 10px);
|
|
36
|
+
border: var(--markdownEditorEngineCellBorder, var(--documentBorder));
|
|
37
|
+
vertical-align: top;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.markdownEditorEngine__codeBlock {
|
|
41
|
+
width: 100%;
|
|
42
|
+
min-height: 100px;
|
|
43
|
+
padding: 10px;
|
|
44
|
+
border: 0;
|
|
45
|
+
border-radius: var(--documentBorderRadius, 5px);
|
|
46
|
+
background: var(--markdownEditorEngineCodeBlockBg, var(--documentSubtleBg));
|
|
47
|
+
font-family: var(--markdownEditorEngineCodeBlockFont, monospace);
|
|
48
|
+
font-size: 0.875em;
|
|
49
|
+
resize: vertical;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownEditorEngine.interfaces.js","names":[],"sources":["../../../../../../../src/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.ts"],"sourcesContent":["import { DocumentAnnotationsProps } from '../../annotations/annotations.interfaces';\n\nexport type MarkdownEditorViewMode = 'rich-text' | 'source' | 'diff';\n\nexport type MarkdownEditorToolbarItem =\n | 'undoRedo'\n | 'blockType'\n | 'formatting'\n | 'lists'\n | 'link'\n | 'image'\n | 'table'\n | 'thematicBreak'\n | 'codeBlock';\n\nexport type MarkdownEditorListType = 'bullet' | 'number' | 'check';\n\n/* eslint-disable-next-line no-unused-vars */\nexport type MarkdownEditorImageUploadHandler = (image: File) => Promise<string>;\n\n/* eslint-disable-next-line no-unused-vars */\nexport type MarkdownEditorImagePreviewHandler = (source: string) => Promise<string>;\n\nexport type MarkdownEditorEngineProps = {\n markdown: string;\n /* eslint-disable-next-line no-unused-vars */\n onChange?: (markdown: string) => void;\n readOnly?: boolean;\n viewMode?: MarkdownEditorViewMode;\n // Modes offered in the toolbar toggle; omit 'diff' when there is no baseline to compare with.\n viewModes?: MarkdownEditorViewMode[];\n diffMarkdown?: string;\n toolbarItems?: MarkdownEditorToolbarItem[];\n listTypes?: MarkdownEditorListType[];\n imageUploadHandler?: MarkdownEditorImageUploadHandler;\n imagePreviewHandler?: MarkdownEditorImagePreviewHandler;\n contentCssClass?: string;\n // Pinned comments, shown and created in both the rich-text and source views.\n annotations?: DocumentAnnotationsProps;\n // Element id for the annotation layer; required when `annotations` is set.\n annotationLayerId?: string;\n /* eslint-disable-next-line no-unused-vars */\n onParseError?: (error: string) => void;\n};\n"],"mappings":"","ignoreList":[]}
|