@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,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolveDocumentResourceWithFallback = exports.resolveDocumentResource = exports.rendersInHostOrigin = exports.isTrustedPdfOrigin = exports.isSafeNativeDocumentUrl = exports.isJsonDocument = exports.hasPdfSignature = exports.getDocumentKind = exports.getDocumentFileName = exports.getDocumentExtension = exports.fetchDocumentAsText = exports.fetchDocumentAsArrayBuffer = void 0;
|
|
7
|
+
var _fileHelpers = require("../../../helpers/fileHelpers");
|
|
8
|
+
const markdownExtensions = ['md', 'markdown'];
|
|
9
|
+
const wordExtensions = ['docx', 'dotx'];
|
|
10
|
+
const imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'avif'];
|
|
11
|
+
const textExtensions = ['json', 'txt', 'csv', 'log'];
|
|
12
|
+
const wordMimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
|
|
13
|
+
const getSuppliedDocumentName = document => document.fileName || document.file?.name;
|
|
14
|
+
const getDocumentFileName = document => getSuppliedDocumentName(document) || document.title;
|
|
15
|
+
exports.getDocumentFileName = getDocumentFileName;
|
|
16
|
+
const getDocumentExtension = document => {
|
|
17
|
+
const suppliedName = getSuppliedDocumentName(document);
|
|
18
|
+
if (suppliedName) {
|
|
19
|
+
return (0, _fileHelpers.getFileExtension)(suppliedName);
|
|
20
|
+
}
|
|
21
|
+
return document.url ? (0, _fileHelpers.getUrlExtension)(document.url) : (0, _fileHelpers.getFileExtension)(document.title);
|
|
22
|
+
};
|
|
23
|
+
exports.getDocumentExtension = getDocumentExtension;
|
|
24
|
+
const getDocumentKind = document => {
|
|
25
|
+
const extension = getDocumentExtension(document);
|
|
26
|
+
const fileType = document.fileType || document.file?.type || '';
|
|
27
|
+
if (extension === 'pdf' || fileType === 'application/pdf') {
|
|
28
|
+
return 'pdf';
|
|
29
|
+
}
|
|
30
|
+
if (markdownExtensions.includes(extension) || fileType === 'text/markdown') {
|
|
31
|
+
return 'markdown';
|
|
32
|
+
}
|
|
33
|
+
if (wordExtensions.includes(extension) || fileType === wordMimeType) {
|
|
34
|
+
return 'word';
|
|
35
|
+
}
|
|
36
|
+
if (imageExtensions.includes(extension) || fileType.startsWith('image/')) {
|
|
37
|
+
return 'image';
|
|
38
|
+
}
|
|
39
|
+
if (textExtensions.includes(extension) || fileType.startsWith('text/') || fileType === 'application/json') {
|
|
40
|
+
return 'text';
|
|
41
|
+
}
|
|
42
|
+
return 'unsupported';
|
|
43
|
+
};
|
|
44
|
+
exports.getDocumentKind = getDocumentKind;
|
|
45
|
+
const fetchDocument = async (url, signal) => {
|
|
46
|
+
const response = await fetch(url, {
|
|
47
|
+
signal
|
|
48
|
+
});
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
throw new Error(`Document request failed (${response.status}).`);
|
|
51
|
+
}
|
|
52
|
+
// Single-page-app servers answer unknown paths with their index page rather than a 404.
|
|
53
|
+
if (response.headers.get('content-type')?.includes('text/html')) {
|
|
54
|
+
throw new Error('The document URL returned a web page instead of a document.');
|
|
55
|
+
}
|
|
56
|
+
return response;
|
|
57
|
+
};
|
|
58
|
+
const fetchDocumentAsText = async (url, signal) => (await fetchDocument(url, signal)).text();
|
|
59
|
+
exports.fetchDocumentAsText = fetchDocumentAsText;
|
|
60
|
+
const fetchDocumentAsArrayBuffer = async (url, signal) => (await fetchDocument(url, signal)).arrayBuffer();
|
|
61
|
+
exports.fetchDocumentAsArrayBuffer = fetchDocumentAsArrayBuffer;
|
|
62
|
+
const isJsonDocument = document => getDocumentExtension(document) === 'json' || (document.fileType || document.file?.type) === 'application/json';
|
|
63
|
+
exports.isJsonDocument = isJsonDocument;
|
|
64
|
+
const anyScheme = /^[a-z][a-z\d+.-]*:/i;
|
|
65
|
+
|
|
66
|
+
// URLs the browser may render natively. An unsandboxed iframe navigated to a `javascript:` URL runs it
|
|
67
|
+
// in the host page, so only network, blob and inert data URLs of the matching type are allowed;
|
|
68
|
+
// relative URLs (no scheme) resolve against the page and are allowed too.
|
|
69
|
+
const safeNativeUrls = {
|
|
70
|
+
pdf: /^(?:https?:|blob:|data:application\/pdf[;,])/i,
|
|
71
|
+
image: /^(?:https?:|blob:|data:image\/(?:png|jpeg|gif|webp|avif|bmp|svg\+xml)[;,])/i
|
|
72
|
+
};
|
|
73
|
+
const SPACE_CODE_POINT = 32;
|
|
74
|
+
|
|
75
|
+
// Mirrors the URL parser: tabs and newlines are removed anywhere and control characters and spaces are
|
|
76
|
+
// trimmed from the ends, so "java\nscript:" or " javascript:" are recognised as the scheme they become.
|
|
77
|
+
const normaliseUrlForSchemeCheck = url => {
|
|
78
|
+
const withoutBreaks = url.replace(/[\t\n\r]/g, '');
|
|
79
|
+
let start = 0;
|
|
80
|
+
let end = withoutBreaks.length;
|
|
81
|
+
while (start < end && withoutBreaks.charCodeAt(start) <= SPACE_CODE_POINT) {
|
|
82
|
+
start += 1;
|
|
83
|
+
}
|
|
84
|
+
while (end > start && withoutBreaks.charCodeAt(end - 1) <= SPACE_CODE_POINT) {
|
|
85
|
+
end -= 1;
|
|
86
|
+
}
|
|
87
|
+
return withoutBreaks.slice(start, end);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// The PDF format requires its `%PDF-` header within the first 1024 bytes.
|
|
91
|
+
const PDF_SIGNATURE = '%PDF-';
|
|
92
|
+
const PDF_HEADER_SEARCH_LENGTH = 1024;
|
|
93
|
+
const hasPdfSignature = bytes => {
|
|
94
|
+
const header = new Uint8Array(bytes, 0, Math.min(bytes.byteLength, PDF_HEADER_SEARCH_LENGTH));
|
|
95
|
+
return String.fromCharCode(...Array.from(header)).includes(PDF_SIGNATURE);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
Whether a URL would render with the host page's own origin: blob URLs inherit their creator's
|
|
100
|
+
origin, and relative or same-origin URLs are the host's. Content from such a URL renders as
|
|
101
|
+
whatever type it declares, so an HTML page disguised as a PDF would run script in the host.
|
|
102
|
+
*/
|
|
103
|
+
exports.hasPdfSignature = hasPdfSignature;
|
|
104
|
+
const rendersInHostOrigin = url => {
|
|
105
|
+
const normalised = normaliseUrlForSchemeCheck(url);
|
|
106
|
+
if (/^blob:/i.test(normalised)) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (/^data:/i.test(normalised) || typeof window === 'undefined') {
|
|
110
|
+
// Data URLs load in an opaque origin of their own.
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return new URL(normalised, window.location.href).origin === window.location.origin;
|
|
115
|
+
} catch {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/*
|
|
121
|
+
Whether a cross-origin URL belongs to one of the origins the host has chosen to trust. Trusting
|
|
122
|
+
an origin trusts its redirects too, since a directly framed URL is never inspected.
|
|
123
|
+
*/
|
|
124
|
+
exports.rendersInHostOrigin = rendersInHostOrigin;
|
|
125
|
+
const isTrustedPdfOrigin = (url, trustedOrigins = []) => {
|
|
126
|
+
if (!trustedOrigins.length || typeof window === 'undefined' || rendersInHostOrigin(url)) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const {
|
|
131
|
+
origin
|
|
132
|
+
} = new URL(normaliseUrlForSchemeCheck(url), window.location.href);
|
|
133
|
+
return trustedOrigins.some(trusted => {
|
|
134
|
+
try {
|
|
135
|
+
return new URL(trusted).origin === origin;
|
|
136
|
+
} catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
} catch {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
exports.isTrustedPdfOrigin = isTrustedPdfOrigin;
|
|
145
|
+
const isSafeNativeDocumentUrl = (url, kind) => {
|
|
146
|
+
const normalised = normaliseUrlForSchemeCheck(url);
|
|
147
|
+
const pattern = safeNativeUrls[kind];
|
|
148
|
+
return Boolean(pattern && normalised && (pattern.test(normalised) || !anyScheme.test(normalised)));
|
|
149
|
+
};
|
|
150
|
+
exports.isSafeNativeDocumentUrl = isSafeNativeDocumentUrl;
|
|
151
|
+
const RESOURCE_PROTOCOLS = new Set(['http:', 'https:', 'blob:', 'mailto:']);
|
|
152
|
+
const RASTER_IMAGE_DATA_URL = /^data:image\/(?:png|jpeg|gif|webp);base64,/i;
|
|
153
|
+
// Stands in for the page URL during server rendering, where there is no window.
|
|
154
|
+
const SERVER_PAGE_URL = 'https://document.invalid/';
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
Keeps anchors and safe URLs, drops other schemes (javascript:, vbscript:, file:, ...), and resolves
|
|
158
|
+
relative paths against the document's own URL so embedded images and links work. The scheme is
|
|
159
|
+
taken from the parsed URL, which is what the browser follows: checking the raw text would let
|
|
160
|
+
"java\tscript:" or " javascript:" through, since the parser removes the tab and the space.
|
|
161
|
+
*/
|
|
162
|
+
const resolveDocumentResource = (resource, documentUrl) => {
|
|
163
|
+
const normalised = normaliseUrlForSchemeCheck(resource);
|
|
164
|
+
if (!normalised) {
|
|
165
|
+
return '';
|
|
166
|
+
}
|
|
167
|
+
if (normalised.startsWith('#') || RASTER_IMAGE_DATA_URL.test(normalised)) {
|
|
168
|
+
return normalised;
|
|
169
|
+
}
|
|
170
|
+
const pageUrl = typeof window === 'undefined' ? SERVER_PAGE_URL : window.location.href;
|
|
171
|
+
let resolved;
|
|
172
|
+
try {
|
|
173
|
+
resolved = new URL(normalised, documentUrl ? new URL(documentUrl, pageUrl) : pageUrl);
|
|
174
|
+
} catch {
|
|
175
|
+
return '';
|
|
176
|
+
}
|
|
177
|
+
if (!RESOURCE_PROTOCOLS.has(resolved.protocol)) {
|
|
178
|
+
return '';
|
|
179
|
+
}
|
|
180
|
+
// Without a document URL a relative path is left as written, so it resolves against the page.
|
|
181
|
+
return anyScheme.test(normalised) || !documentUrl ? normalised : resolved.href;
|
|
182
|
+
};
|
|
183
|
+
exports.resolveDocumentResource = resolveDocumentResource;
|
|
184
|
+
const resolveDocumentResourceWithFallback = (resource, documentUrl, resolveResourceUrl) => resolveResourceUrl ? resolveResourceUrl(resource) : resolveDocumentResource(resource, documentUrl);
|
|
185
|
+
exports.resolveDocumentResourceWithFallback = resolveDocumentResourceWithFallback;
|
|
186
|
+
//# sourceMappingURL=documentHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentHelpers.js","names":["_fileHelpers","require","markdownExtensions","wordExtensions","imageExtensions","textExtensions","wordMimeType","getSuppliedDocumentName","document","fileName","file","name","getDocumentFileName","title","exports","getDocumentExtension","suppliedName","getFileExtension","url","getUrlExtension","getDocumentKind","extension","fileType","type","includes","startsWith","fetchDocument","signal","response","fetch","ok","Error","status","headers","get","fetchDocumentAsText","text","fetchDocumentAsArrayBuffer","arrayBuffer","isJsonDocument","anyScheme","safeNativeUrls","pdf","image","SPACE_CODE_POINT","normaliseUrlForSchemeCheck","withoutBreaks","replace","start","end","length","charCodeAt","slice","PDF_SIGNATURE","PDF_HEADER_SEARCH_LENGTH","hasPdfSignature","bytes","header","Uint8Array","Math","min","byteLength","String","fromCharCode","Array","from","rendersInHostOrigin","normalised","test","window","URL","location","href","origin","isTrustedPdfOrigin","trustedOrigins","some","trusted","isSafeNativeDocumentUrl","kind","pattern","Boolean","RESOURCE_PROTOCOLS","Set","RASTER_IMAGE_DATA_URL","SERVER_PAGE_URL","resolveDocumentResource","resource","documentUrl","pageUrl","resolved","has","protocol","resolveDocumentResourceWithFallback","resolveResourceUrl"],"sources":["../../../../../src/widgets/shared/documents/documentHelpers.ts"],"sourcesContent":["import { getFileExtension, getUrlExtension } from '../../../helpers/fileHelpers';\nimport { DocumentKind, DocumentSource, ResolveResourceUrl } from './documents.interfaces';\n\nconst markdownExtensions = ['md', 'markdown'];\nconst wordExtensions = ['docx', 'dotx'];\nconst imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'avif'];\nconst textExtensions = ['json', 'txt', 'csv', 'log'];\nconst wordMimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n\nconst getSuppliedDocumentName = (document: DocumentSource): string | undefined => document.fileName || document.file?.name;\n\nexport const getDocumentFileName = (document: DocumentSource): string =>\n getSuppliedDocumentName(document) || document.title;\n\nexport const getDocumentExtension = (document: DocumentSource): string => {\n const suppliedName = getSuppliedDocumentName(document);\n if (suppliedName) {\n return getFileExtension(suppliedName);\n }\n return document.url ? getUrlExtension(document.url) : getFileExtension(document.title);\n};\n\nexport const getDocumentKind = (document: DocumentSource): DocumentKind => {\n const extension = getDocumentExtension(document);\n const fileType = document.fileType || document.file?.type || '';\n\n if (extension === 'pdf' || fileType === 'application/pdf') {\n return 'pdf';\n }\n if (markdownExtensions.includes(extension) || fileType === 'text/markdown') {\n return 'markdown';\n }\n if (wordExtensions.includes(extension) || fileType === wordMimeType) {\n return 'word';\n }\n if (imageExtensions.includes(extension) || fileType.startsWith('image/')) {\n return 'image';\n }\n if (textExtensions.includes(extension) || fileType.startsWith('text/') || fileType === 'application/json') {\n return 'text';\n }\n return 'unsupported';\n};\n\nconst fetchDocument = async (url: string, signal?: AbortSignal): Promise<Response> => {\n const response = await fetch(url, { signal });\n if (!response.ok) {\n throw new Error(`Document request failed (${ response.status }).`);\n }\n // Single-page-app servers answer unknown paths with their index page rather than a 404.\n if (response.headers.get('content-type')?.includes('text/html')) {\n throw new Error('The document URL returned a web page instead of a document.');\n }\n return response;\n};\n\nexport const fetchDocumentAsText = async (url: string, signal?: AbortSignal): Promise<string> => (await fetchDocument(url, signal)).text();\n\nexport const fetchDocumentAsArrayBuffer = async (url: string, signal?: AbortSignal): Promise<ArrayBuffer> =>\n (await fetchDocument(url, signal)).arrayBuffer();\n\nexport const isJsonDocument = (document: DocumentSource): boolean =>\n getDocumentExtension(document) === 'json' || (document.fileType || document.file?.type) === 'application/json';\n\nconst anyScheme = /^[a-z][a-z\\d+.-]*:/i;\n\n// URLs the browser may render natively. An unsandboxed iframe navigated to a `javascript:` URL runs it\n// in the host page, so only network, blob and inert data URLs of the matching type are allowed;\n// relative URLs (no scheme) resolve against the page and are allowed too.\nconst safeNativeUrls: Partial<Record<DocumentKind, RegExp>> = {\n pdf: /^(?:https?:|blob:|data:application\\/pdf[;,])/i,\n image: /^(?:https?:|blob:|data:image\\/(?:png|jpeg|gif|webp|avif|bmp|svg\\+xml)[;,])/i\n};\n\nconst SPACE_CODE_POINT = 32;\n\n// Mirrors the URL parser: tabs and newlines are removed anywhere and control characters and spaces are\n// trimmed from the ends, so \"java\\nscript:\" or \" javascript:\" are recognised as the scheme they become.\nconst normaliseUrlForSchemeCheck = (url: string): string => {\n const withoutBreaks = url.replace(/[\\t\\n\\r]/g, '');\n let start = 0;\n let end = withoutBreaks.length;\n while (start < end && withoutBreaks.charCodeAt(start) <= SPACE_CODE_POINT) {\n start += 1;\n }\n while (end > start && withoutBreaks.charCodeAt(end - 1) <= SPACE_CODE_POINT) {\n end -= 1;\n }\n return withoutBreaks.slice(start, end);\n};\n\n// The PDF format requires its `%PDF-` header within the first 1024 bytes.\nconst PDF_SIGNATURE = '%PDF-';\nconst PDF_HEADER_SEARCH_LENGTH = 1024;\n\nexport const hasPdfSignature = (bytes: ArrayBuffer): boolean => {\n const header = new Uint8Array(bytes, 0, Math.min(bytes.byteLength, PDF_HEADER_SEARCH_LENGTH));\n return String.fromCharCode(...Array.from(header)).includes(PDF_SIGNATURE);\n};\n\n/*\n Whether a URL would render with the host page's own origin: blob URLs inherit their creator's\n origin, and relative or same-origin URLs are the host's. Content from such a URL renders as\n whatever type it declares, so an HTML page disguised as a PDF would run script in the host.\n */\nexport const rendersInHostOrigin = (url: string): boolean => {\n const normalised = normaliseUrlForSchemeCheck(url);\n if (/^blob:/i.test(normalised)) {\n return true;\n }\n if (/^data:/i.test(normalised) || typeof window === 'undefined') {\n // Data URLs load in an opaque origin of their own.\n return false;\n }\n try {\n return new URL(normalised, window.location.href).origin === window.location.origin;\n } catch {\n return true;\n }\n};\n\n/*\n Whether a cross-origin URL belongs to one of the origins the host has chosen to trust. Trusting\n an origin trusts its redirects too, since a directly framed URL is never inspected.\n */\nexport const isTrustedPdfOrigin = (url: string, trustedOrigins: string[] = []): boolean => {\n if (!trustedOrigins.length || typeof window === 'undefined' || rendersInHostOrigin(url)) {\n return false;\n }\n try {\n const { origin } = new URL(normaliseUrlForSchemeCheck(url), window.location.href);\n return trustedOrigins.some((trusted) => {\n try {\n return new URL(trusted).origin === origin;\n } catch {\n return false;\n }\n });\n } catch {\n return false;\n }\n};\n\nexport const isSafeNativeDocumentUrl =(url: string, kind: DocumentKind): boolean => {\n const normalised = normaliseUrlForSchemeCheck(url);\n const pattern = safeNativeUrls[kind];\n return Boolean(pattern && normalised && (pattern.test(normalised) || !anyScheme.test(normalised)));\n};\n\nconst RESOURCE_PROTOCOLS = new Set(['http:', 'https:', 'blob:', 'mailto:']);\nconst RASTER_IMAGE_DATA_URL = /^data:image\\/(?:png|jpeg|gif|webp);base64,/i;\n// Stands in for the page URL during server rendering, where there is no window.\nconst SERVER_PAGE_URL = 'https://document.invalid/';\n\n/*\n Keeps anchors and safe URLs, drops other schemes (javascript:, vbscript:, file:, ...), and resolves\n relative paths against the document's own URL so embedded images and links work. The scheme is\n taken from the parsed URL, which is what the browser follows: checking the raw text would let\n \"java\\tscript:\" or \" javascript:\" through, since the parser removes the tab and the space.\n */\nexport const resolveDocumentResource = (resource: string, documentUrl?: string): string => {\n const normalised = normaliseUrlForSchemeCheck(resource);\n if (!normalised) {\n return '';\n }\n if (normalised.startsWith('#') || RASTER_IMAGE_DATA_URL.test(normalised)) {\n return normalised;\n }\n const pageUrl = typeof window === 'undefined' ? SERVER_PAGE_URL : window.location.href;\n let resolved: URL;\n try {\n resolved = new URL(normalised, documentUrl ? new URL(documentUrl, pageUrl) : pageUrl);\n } catch {\n return '';\n }\n if (!RESOURCE_PROTOCOLS.has(resolved.protocol)) {\n return '';\n }\n // Without a document URL a relative path is left as written, so it resolves against the page.\n return anyScheme.test(normalised) || !documentUrl ? normalised : resolved.href;\n};\n\nexport const resolveDocumentResourceWithFallback = (\n resource: string,\n documentUrl: string | undefined,\n resolveResourceUrl?: ResolveResourceUrl\n): string | undefined =>\n resolveResourceUrl\n ? resolveResourceUrl(resource)\n : resolveDocumentResource(resource, documentUrl);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.interfaces.js","names":[],"sources":["../../../../../src/widgets/shared/documents/documents.interfaces.ts"],"sourcesContent":["export type DocumentKind = 'pdf' | 'markdown' | 'word' | 'image' | 'text' | 'unsupported';\n\nexport type DocumentLoadStatus = 'idle' | 'loading' | 'ready' | 'error';\n\n// A document can be supplied as inline text, a local File, or a URL; the first available wins in that order.\nexport type DocumentSource = {\n title: string;\n fileName?: string;\n fileType?: string;\n fileSize?: number;\n file?: File;\n url?: string;\n text?: string;\n};\n\n/* eslint-disable-next-line no-unused-vars */\nexport type ResolveResourceUrl = (resource: string) => string | undefined;\n\nexport type LoadedDocument = {\n kind: DocumentKind;\n // Text for text-based kinds (markdown, text); bytes for kinds that need parsing (word).\n content?: string;\n arrayBuffer?: ArrayBuffer;\n // Object or remote URL for kinds the browser renders natively (pdf, image).\n url?: string;\n // True when `url` is an object URL created for this load; it is revoked once no longer shown.\n ownsUrl?: boolean;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.DocumentDiff = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _MarkdownRenderer = _interopRequireDefault(require("../markdownRenderer/MarkdownRenderer"));
|
|
10
|
+
var _buildDocumentDiff = require("./buildDocumentDiff");
|
|
11
|
+
require("./documentDiff.css");
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
// The change is also announced in text, so it is not conveyed by colour alone.
|
|
14
|
+
const ChangeMarker = ({
|
|
15
|
+
change,
|
|
16
|
+
labels
|
|
17
|
+
}) => change === 'unchanged' ? null : /*#__PURE__*/_react.default.createElement("span", {
|
|
18
|
+
className: "sr-only"
|
|
19
|
+
}, change === 'added' ? labels.added : labels.removed, ": ");
|
|
20
|
+
const DocumentDiff = ({
|
|
21
|
+
baseline,
|
|
22
|
+
revised,
|
|
23
|
+
view = 'rendered',
|
|
24
|
+
headingOffset = 0,
|
|
25
|
+
resolveResourceUrl,
|
|
26
|
+
labels
|
|
27
|
+
}) => {
|
|
28
|
+
const blocks = (0, _react.useMemo)(() => view === 'rendered' ? (0, _buildDocumentDiff.buildBlockDiff)(baseline, revised) : [], [view, baseline, revised]);
|
|
29
|
+
const definitions = (0, _react.useMemo)(() => view === 'rendered' ? {
|
|
30
|
+
baseline: (0, _buildDocumentDiff.getMarkdownDefinitions)(baseline),
|
|
31
|
+
revised: (0, _buildDocumentDiff.getMarkdownDefinitions)(revised)
|
|
32
|
+
} : {
|
|
33
|
+
baseline: '',
|
|
34
|
+
revised: ''
|
|
35
|
+
}, [view, baseline, revised]);
|
|
36
|
+
const lines = (0, _react.useMemo)(() => view === 'source' ? (0, _buildDocumentDiff.buildLineDiff)(baseline, revised) : [], [view, baseline, revised]);
|
|
37
|
+
const summary = (0, _buildDocumentDiff.summariseDiff)(view === 'rendered' ? blocks : lines);
|
|
38
|
+
const hasChanges = summary.added > 0 || summary.removed > 0;
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
40
|
+
className: `documentDiff documentDiff--${view}`
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
42
|
+
className: "documentDiff__summary",
|
|
43
|
+
role: "status"
|
|
44
|
+
}, hasChanges ? labels.summary(summary.added, summary.removed) : labels.noChanges), view === 'rendered' && blocks.map((block, index) => /*#__PURE__*/_react.default.createElement("div", {
|
|
45
|
+
// Blocks have no stable identity beyond their position in the diff.
|
|
46
|
+
key: `${block.change}_${index}`,
|
|
47
|
+
className: `documentDiff__block documentDiff__block--${block.change}`
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement(ChangeMarker, {
|
|
49
|
+
change: block.change,
|
|
50
|
+
labels: labels
|
|
51
|
+
}), /*#__PURE__*/_react.default.createElement(_MarkdownRenderer.default, {
|
|
52
|
+
markdown: `${block.change === 'removed' ? definitions.baseline : definitions.revised}\n\n${block.markdown}`,
|
|
53
|
+
headingOffset: headingOffset,
|
|
54
|
+
resolveResourceUrl: resolveResourceUrl,
|
|
55
|
+
cssClass: "documentDiff__markdown"
|
|
56
|
+
}))), view === 'source' && /*#__PURE__*/_react.default.createElement("pre", {
|
|
57
|
+
className: "documentDiff__source"
|
|
58
|
+
}, lines.map((line, index) => /*#__PURE__*/_react.default.createElement("span", {
|
|
59
|
+
key: `${line.change}_${index}`,
|
|
60
|
+
className: `documentDiff__line documentDiff__line--${line.change}`
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(ChangeMarker, {
|
|
62
|
+
change: line.change,
|
|
63
|
+
labels: labels
|
|
64
|
+
}), line.segments.map((segment, segmentIndex) => segment.change === 'unchanged' ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
|
65
|
+
key: segmentIndex
|
|
66
|
+
}, segment.text) : /*#__PURE__*/_react.default.createElement("mark", {
|
|
67
|
+
key: segmentIndex,
|
|
68
|
+
className: `documentDiff__word documentDiff__word--${segment.change}`
|
|
69
|
+
}, segment.text)), '\n'))));
|
|
70
|
+
};
|
|
71
|
+
exports.DocumentDiff = DocumentDiff;
|
|
72
|
+
var _default = exports.default = DocumentDiff;
|
|
73
|
+
//# sourceMappingURL=DocumentDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentDiff.js","names":["_react","_interopRequireWildcard","require","_MarkdownRenderer","_interopRequireDefault","_buildDocumentDiff","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ChangeMarker","change","labels","createElement","className","added","removed","DocumentDiff","baseline","revised","view","headingOffset","resolveResourceUrl","blocks","useMemo","buildBlockDiff","definitions","getMarkdownDefinitions","lines","buildLineDiff","summary","summariseDiff","hasChanges","role","noChanges","map","block","index","key","markdown","cssClass","line","segments","segment","segmentIndex","Fragment","text","exports","_default"],"sources":["../../../../../../../src/widgets/shared/documents/engines/documentDiff/DocumentDiff.tsx"],"sourcesContent":["import React, { FC, useMemo } from 'react';\n\nimport MarkdownRenderer from '../markdownRenderer/MarkdownRenderer';\nimport {\n buildBlockDiff,\n buildLineDiff,\n DocumentDiffChange,\n getMarkdownDefinitions,\n summariseDiff\n} from './buildDocumentDiff';\nimport { DocumentDiffLabels, DocumentDiffProps } from './documentDiff.interfaces';\n\nimport './documentDiff.scss';\n\n// The change is also announced in text, so it is not conveyed by colour alone.\nconst ChangeMarker: FC<{ change: DocumentDiffChange; labels: DocumentDiffLabels }> = ({ change, labels }) =>\n (change === 'unchanged' ? null : <span className=\"sr-only\">{ change === 'added' ? labels.added : labels.removed }: </span>);\n\nexport const DocumentDiff: FC<DocumentDiffProps> = (\n {\n baseline,\n revised,\n view = 'rendered',\n headingOffset = 0,\n resolveResourceUrl,\n labels\n }\n) => {\n const blocks = useMemo(() => (view === 'rendered' ? buildBlockDiff(baseline, revised) : []), [view, baseline, revised]);\n const definitions = useMemo(() => (view === 'rendered'\n ? { baseline: getMarkdownDefinitions(baseline), revised: getMarkdownDefinitions(revised) }\n : { baseline: '', revised: '' }), [view, baseline, revised]);\n const lines = useMemo(() => (view === 'source' ? buildLineDiff(baseline, revised) : []), [view, baseline, revised]);\n const summary = summariseDiff(view === 'rendered' ? blocks : lines);\n const hasChanges = summary.added > 0 || summary.removed > 0;\n\n return (\n <div className={ `documentDiff documentDiff--${ view }` }>\n <p className=\"documentDiff__summary\" role=\"status\">\n { hasChanges ? labels.summary(summary.added, summary.removed) : labels.noChanges }\n </p>\n\n { view === 'rendered' && blocks.map((block, index) => (\n <div\n // Blocks have no stable identity beyond their position in the diff.\n key={ `${ block.change }_${ index }` }\n className={ `documentDiff__block documentDiff__block--${ block.change }` }\n >\n <ChangeMarker change={ block.change } labels={ labels } />\n <MarkdownRenderer\n markdown={ `${ block.change === 'removed' ? definitions.baseline : definitions.revised }\\n\\n${ block.markdown }` }\n headingOffset={ headingOffset }\n resolveResourceUrl={ resolveResourceUrl }\n cssClass=\"documentDiff__markdown\"\n />\n </div>\n )) }\n\n { view === 'source' && (\n <pre className=\"documentDiff__source\">\n { lines.map((line, index) => (\n <span key={ `${ line.change }_${ index }` } className={ `documentDiff__line documentDiff__line--${ line.change }` }>\n <ChangeMarker change={ line.change } labels={ labels } />\n { line.segments.map((segment, segmentIndex) => (segment.change === 'unchanged'\n ? <React.Fragment key={ segmentIndex }>{ segment.text }</React.Fragment>\n : <mark key={ segmentIndex } className={ `documentDiff__word documentDiff__word--${ segment.change }` }>{ segment.text }</mark>\n )) }\n { '\\n' }\n </span>\n )) }\n </pre>\n ) }\n </div>\n );\n};\n\nexport default DocumentDiff;\n"],"mappings":"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","ignoreList":[]}
|
|
File without changes
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.summariseDiff = exports.splitMarkdownBlocks = exports.getMarkdownDefinitions = exports.buildLineDiff = exports.buildBlockDiff = void 0;
|
|
8
|
+
var _diff = require("diff");
|
|
9
|
+
var _remarkGfm = _interopRequireDefault(require("remark-gfm"));
|
|
10
|
+
var _remarkParse = _interopRequireDefault(require("remark-parse"));
|
|
11
|
+
var _remarkStringify = _interopRequireDefault(require("remark-stringify"));
|
|
12
|
+
var _unified = require("unified");
|
|
13
|
+
const markdownParser = (0, _unified.unified)().use(_remarkParse.default).use(_remarkGfm.default).use(_remarkStringify.default);
|
|
14
|
+
const getNodeMarkdown = (markdown, node) => {
|
|
15
|
+
const start = node.position?.start.offset;
|
|
16
|
+
const end = node.position?.end.offset;
|
|
17
|
+
if (start === undefined || end === undefined) {
|
|
18
|
+
throw new Error('Parsed markdown node has no source offsets.');
|
|
19
|
+
}
|
|
20
|
+
return markdown.slice(start, end);
|
|
21
|
+
};
|
|
22
|
+
const getMarkdownDefinitions = markdown => {
|
|
23
|
+
const tree = markdownParser.parse(markdown);
|
|
24
|
+
const definitions = [];
|
|
25
|
+
const visit = node => {
|
|
26
|
+
if (node.type === 'definition' || node.type === 'footnoteDefinition') {
|
|
27
|
+
definitions.push(node);
|
|
28
|
+
} else if ('children' in node) {
|
|
29
|
+
node.children.forEach(visit);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
visit(tree);
|
|
33
|
+
// Serialising nodes removes container markers from definitions nested in quotes or lists.
|
|
34
|
+
return markdownParser.stringify({
|
|
35
|
+
...tree,
|
|
36
|
+
children: definitions
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
Splits markdown into parsed top-level blocks, keeping fenced code, lists and definitions intact.
|
|
42
|
+
Diffing whole blocks means each side renders as valid markdown, so tables, lists and code are
|
|
43
|
+
never cut part-way through by a change boundary.
|
|
44
|
+
*/
|
|
45
|
+
exports.getMarkdownDefinitions = getMarkdownDefinitions;
|
|
46
|
+
const splitMarkdownBlocks = markdown => {
|
|
47
|
+
const normalised = markdown.replace(/\r\n?/g, '\n');
|
|
48
|
+
return markdownParser.parse(normalised).children.map(node => getNodeMarkdown(normalised, node));
|
|
49
|
+
};
|
|
50
|
+
exports.splitMarkdownBlocks = splitMarkdownBlocks;
|
|
51
|
+
const getChange = part => {
|
|
52
|
+
if (part.added) {
|
|
53
|
+
return 'added';
|
|
54
|
+
}
|
|
55
|
+
return part.removed ? 'removed' : 'unchanged';
|
|
56
|
+
};
|
|
57
|
+
const buildBlockDiff = (baseline, revised) => (0, _diff.diffArrays)(splitMarkdownBlocks(baseline), splitMarkdownBlocks(revised)).flatMap(part => {
|
|
58
|
+
const change = getChange(part);
|
|
59
|
+
return part.value.map(markdown => ({
|
|
60
|
+
change,
|
|
61
|
+
markdown
|
|
62
|
+
}));
|
|
63
|
+
});
|
|
64
|
+
exports.buildBlockDiff = buildBlockDiff;
|
|
65
|
+
const toLines = value => value.replace(/\n$/, '').split('\n');
|
|
66
|
+
const wordSegments = (before, after, side) => (0, _diff.diffWordsWithSpace)(before, after).filter(part => side === 'removed' ? !part.added : !part.removed).map(part => ({
|
|
67
|
+
change: part.added || part.removed ? side : 'unchanged',
|
|
68
|
+
text: part.value
|
|
69
|
+
}));
|
|
70
|
+
const buildLineDiff = (baseline, revised) => {
|
|
71
|
+
const parts = (0, _diff.diffLines)(baseline, revised);
|
|
72
|
+
const lines = [];
|
|
73
|
+
parts.forEach((part, index) => {
|
|
74
|
+
const previous = parts[index - 1];
|
|
75
|
+
const next = parts[index + 1];
|
|
76
|
+
if (part.added && previous?.removed) {
|
|
77
|
+
// Already emitted together with the removal it replaces.
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (part.removed && next?.added) {
|
|
81
|
+
const removedLines = toLines(part.value);
|
|
82
|
+
const addedLines = toLines(next.value);
|
|
83
|
+
removedLines.forEach((line, lineIndex) => {
|
|
84
|
+
lines.push({
|
|
85
|
+
change: 'removed',
|
|
86
|
+
segments: wordSegments(line, addedLines[lineIndex] ?? '', 'removed')
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
addedLines.forEach((line, lineIndex) => {
|
|
90
|
+
lines.push({
|
|
91
|
+
change: 'added',
|
|
92
|
+
segments: wordSegments(removedLines[lineIndex] ?? '', line, 'added')
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const change = getChange(part);
|
|
98
|
+
toLines(part.value).forEach(line => lines.push({
|
|
99
|
+
change,
|
|
100
|
+
segments: [{
|
|
101
|
+
change,
|
|
102
|
+
text: line
|
|
103
|
+
}]
|
|
104
|
+
}));
|
|
105
|
+
});
|
|
106
|
+
return lines;
|
|
107
|
+
};
|
|
108
|
+
exports.buildLineDiff = buildLineDiff;
|
|
109
|
+
const summariseDiff = items => ({
|
|
110
|
+
added: items.filter(item => item.change === 'added').length,
|
|
111
|
+
removed: items.filter(item => item.change === 'removed').length
|
|
112
|
+
});
|
|
113
|
+
exports.summariseDiff = summariseDiff;
|
|
114
|
+
//# sourceMappingURL=buildDocumentDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDocumentDiff.js","names":["_diff","require","_remarkGfm","_interopRequireDefault","_remarkParse","_remarkStringify","_unified","markdownParser","unified","use","remarkParse","remarkGfm","remarkStringify","getNodeMarkdown","markdown","node","start","position","offset","end","undefined","Error","slice","getMarkdownDefinitions","tree","parse","definitions","visit","type","push","children","forEach","stringify","exports","splitMarkdownBlocks","normalised","replace","map","getChange","part","added","removed","buildBlockDiff","baseline","revised","diffArrays","flatMap","change","value","toLines","split","wordSegments","before","after","side","diffWordsWithSpace","filter","text","buildLineDiff","parts","diffLines","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,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LazyWordRenderer = exports.LazyMarkdownRenderer = exports.LazyMarkdownEditorEngine = exports.LazyDocumentDiff = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
9
|
+
/*
|
|
10
|
+
The document engines depend on large third-party packages (react-markdown, docx-preview,
|
|
11
|
+
MDXEditor, diff). Widgets import them only through these lazy wrappers so the packages are
|
|
12
|
+
downloaded the first time a widget actually needs them, never as part of the library entry point.
|
|
13
|
+
Render them inside <Suspense>.
|
|
14
|
+
*/
|
|
15
|
+
const LazyMarkdownRenderer = exports.LazyMarkdownRenderer = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('./markdownRenderer/MarkdownRenderer'))));
|
|
16
|
+
const LazyWordRenderer = exports.LazyWordRenderer = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('./wordRenderer/WordRenderer'))));
|
|
17
|
+
const LazyMarkdownEditorEngine = exports.LazyMarkdownEditorEngine = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('./markdownEditor/MarkdownEditorEngine'))));
|
|
18
|
+
const LazyDocumentDiff = exports.LazyDocumentDiff = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('./documentDiff/DocumentDiff'))));
|
|
19
|
+
//# sourceMappingURL=lazyEngines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazyEngines.js","names":["_react","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LazyMarkdownRenderer","exports","lazy","Promise","resolve","then","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,IAAAA,MAAA,GAAAC,OAAA;AAA6B,SAAAC,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE7B;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,gBAAG,IAAAE,WAAI,EAAC,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAzB,uBAAA,CAAAD,OAAA,CAAa,qCAAqC,GAAC,CAAC;AACtF,MAAM2B,gBAAgB,GAAAL,OAAA,CAAAK,gBAAA,gBAAG,IAAAJ,WAAI,EAAC,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAzB,uBAAA,CAAAD,OAAA,CAAa,6BAA6B,GAAC,CAAC;AAC1E,MAAM4B,wBAAwB,GAAAN,OAAA,CAAAM,wBAAA,gBAAG,IAAAL,WAAI,EAAC,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAzB,uBAAA,CAAAD,OAAA,CAAa,uCAAuC,GAAC,CAAC;AAC5F,MAAM6B,gBAAgB,GAAAP,OAAA,CAAAO,gBAAA,gBAAG,IAAAN,WAAI,EAAC,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAzB,uBAAA,CAAAD,OAAA,CAAa,6BAA6B,GAAC,CAAC","ignoreList":[]}
|