@x15ventures/x15-ui-library 3.18.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,117 @@
|
|
|
1
|
+
.documentComparer {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: var(--documentComparerGap, 20px);
|
|
5
|
+
min-width: 0;
|
|
6
|
+
}
|
|
7
|
+
.documentComparer .headerBar {
|
|
8
|
+
margin-bottom: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.documentComparer__header {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
gap: var(--documentComparerPanelGap, var(--documentGap, 10px));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.documentComparer__controls {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-wrap: wrap;
|
|
20
|
+
gap: var(--documentComparerGap, 20px);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.documentComparer__columns {
|
|
24
|
+
display: grid;
|
|
25
|
+
grid-template-columns: repeat(2, minmax(var(--documentComparerColumnMinWidth, 320px), 1fr));
|
|
26
|
+
gap: var(--documentComparerGap, 20px);
|
|
27
|
+
}
|
|
28
|
+
@media (max-width: 900px) {
|
|
29
|
+
.documentComparer__columns {
|
|
30
|
+
grid-template-columns: minmax(0, 1fr);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.documentComparer__panel,
|
|
35
|
+
.documentComparer__differences {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
gap: var(--documentComparerPanelGap, var(--documentGap, 10px));
|
|
39
|
+
min-width: 0;
|
|
40
|
+
padding: var(--documentComparerPanelPadding, 15px);
|
|
41
|
+
border: var(--documentComparerPanelBorder, var(--documentBorder));
|
|
42
|
+
border-radius: var(--documentComparerPanelBorderRadius, var(--documentBorderRadius, 5px));
|
|
43
|
+
background: var(--documentComparerPanelBg, var(--documentBg, #fff));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.documentComparer__panelHeader {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
gap: 5px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.documentComparer__documentTitle {
|
|
53
|
+
margin: 0;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
overflow-wrap: anywhere;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.documentComparer__metadata {
|
|
59
|
+
display: flex;
|
|
60
|
+
flex-wrap: wrap;
|
|
61
|
+
gap: 5px 20px;
|
|
62
|
+
margin: 0;
|
|
63
|
+
color: var(--documentComparerMetadataColor, var(--documentMutedFgColor));
|
|
64
|
+
font-size: var(--documentComparerMetadataFontSize, 0.8125rem);
|
|
65
|
+
}
|
|
66
|
+
.documentComparer__metadata > div {
|
|
67
|
+
display: flex;
|
|
68
|
+
gap: 5px;
|
|
69
|
+
}
|
|
70
|
+
.documentComparer__metadata dt::after {
|
|
71
|
+
content: ":";
|
|
72
|
+
}
|
|
73
|
+
.documentComparer__metadata dd {
|
|
74
|
+
margin: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.documentComparer__panelBody {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex: 1;
|
|
80
|
+
flex-direction: column;
|
|
81
|
+
min-height: var(--documentComparerPanelMinHeight, var(--documentFrameMinHeight, 65vh));
|
|
82
|
+
overflow: auto;
|
|
83
|
+
}
|
|
84
|
+
.documentComparer__panelBody > aside,
|
|
85
|
+
.documentComparer__panelBody > .pageBanner {
|
|
86
|
+
margin: auto;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.documentComparer__viewer {
|
|
90
|
+
--documentViewerFrameBorder: 0;
|
|
91
|
+
flex: 1;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.documentComparer__pages {
|
|
95
|
+
display: flex;
|
|
96
|
+
flex-direction: column;
|
|
97
|
+
gap: var(--documentComparerPageGap, 15px);
|
|
98
|
+
}
|
|
99
|
+
.documentComparer__pages img {
|
|
100
|
+
display: block;
|
|
101
|
+
width: 100%;
|
|
102
|
+
height: auto;
|
|
103
|
+
box-shadow: var(--documentComparerPageShadow, 0 1px 5px rgba(0, 0, 0, 0.15));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.documentComparer__message {
|
|
107
|
+
margin: auto;
|
|
108
|
+
color: var(--documentComparerMetadataColor, var(--documentMutedFgColor));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.documentComparer__panelActions,
|
|
112
|
+
.documentComparer__footer {
|
|
113
|
+
display: flex;
|
|
114
|
+
flex-wrap: wrap;
|
|
115
|
+
justify-content: flex-end;
|
|
116
|
+
gap: var(--documentComparerPanelGap, var(--documentGap, 10px));
|
|
117
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentComparer.interfaces.js","names":[],"sources":["../../../../src/widgets/documentComparer/documentComparer.interfaces.ts"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { DocumentRenderers } from '../documentViewer/documentViewer.interfaces';\nimport { DocumentAnnotationsProps } from '../shared/documents/annotations/annotations.interfaces';\nimport { DocumentSource, ResolveResourceUrl } from '../shared/documents/documents.interfaces';\nimport { DocumentDiffView } from '../shared/documents/engines/documentDiff/documentDiff.interfaces';\nimport { DocumentEditorProps } from '../documentEditor/documentEditor.interfaces';\n\nexport type DocumentComparerView = 'sideBySide' | 'differences';\n\nexport type ComparisonDocument = DocumentSource & {\n version?: string;\n lastModified?: string;\n // Rendered page images shown instead of the document itself, e.g. pages of a scanned PDF.\n pageImages?: string[];\n};\n\nexport type DocumentComparerSaveUpdate = {\n markdown: string;\n baselineMarkdown: string;\n};\n\nexport type DocumentComparerLabels = {\n originalHeading: string;\n revisedHeading: string;\n viewSelector: string;\n sideBySide: string;\n differences: string;\n diffSelector: string;\n formatted: string;\n source: string;\n edit: string;\n save: string;\n cancel: string;\n version: string;\n lastModified: string;\n notRecorded: string;\n loadingHeading: string;\n loadingMessage: string;\n loadError: string;\n noSourcePreview: string;\n added: string;\n removed: string;\n noChanges: string;\n /* eslint-disable-next-line no-unused-vars */\n diffSummary: (added: number, removed: number) => string;\n /* eslint-disable-next-line no-unused-vars */\n pageImageAlt: (page: number, total: number, title: string) => string;\n};\n\nexport type DocumentComparerCssClasses = {\n wrapper?: string;\n header?: string;\n columns?: string;\n originalPanel?: string;\n revisedPanel?: string;\n differences?: string;\n footer?: string;\n};\n\nexport type DocumentComparerProps = {\n id: string;\n title: string;\n headingLevel?: 1 | 2 | 3 | 4;\n originalDocument: ComparisonDocument;\n // The markdown version under review, supplied as text, a File or a URL.\n revisedDocument: ComparisonDocument;\n // What the differences view compares against; defaults to the revised document as first loaded.\n baselineMarkdown?: string;\n initialView?: DocumentComparerView;\n initialDiffView?: DocumentDiffView;\n // Which column holds the revised document.\n revisedPosition?: 'start' | 'end';\n enableEditing?: boolean;\n /* eslint-disable-next-line no-unused-vars */\n onChange?: (markdown: string) => void;\n // Called with the edited markdown; return a promise to keep the save button disabled until it settles.\n /* eslint-disable-next-line no-unused-vars */\n onSave?: (update: DocumentComparerSaveUpdate) => void | Promise<void>;\n // Options passed through to the editor used while editing the revised document.\n editorProps?: Pick<DocumentEditorProps, 'toolbarItems' | 'listTypes' | 'imageUploadHandler' | 'viewModes'>;\n // Override renderers for supported original-document kinds; unsupported files stay blocked.\n originalRenderers?: DocumentRenderers;\n resolveResourceUrl?: ResolveResourceUrl;\n // Passed to the original document's viewer; see DocumentViewer's trustedPdfOrigins.\n trustedPdfOrigins?: string[];\n // Defaults to the library's dateToShortReadableDate; return null to show the value as given.\n /* eslint-disable-next-line no-unused-vars */\n formatDate?: (value: string) => string | null;\n // Slots for application workflow, e.g. lifecycle status, review and approval actions.\n headerActions?: ReactNode;\n originalPanelActions?: ReactNode;\n revisedPanelActions?: ReactNode;\n footerActions?: ReactNode;\n // Pinned comments on the revised document, both when reading and while editing it.\n annotations?: DocumentAnnotationsProps;\n labels?: Partial<DocumentComparerLabels>;\n customCssClasses?: DocumentComparerCssClasses;\n};\n\nexport type { DocumentDiffView };\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentComparer","defaultDocumentComparerLabels"],"sources":["../../../../src/widgets/documentComparer/index.ts"],"sourcesContent":["export { DocumentComparer, defaultDocumentComparerLabels } from './DocumentComparer';\n\nexport type {\n ComparisonDocument,\n DocumentComparerCssClasses,\n DocumentComparerLabels,\n DocumentComparerProps,\n DocumentComparerSaveUpdate,\n DocumentComparerView,\n DocumentDiffView\n} from './documentComparer.interfaces';\n"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,6BAA6B,QAAQ,oBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { HeaderBar, PageBanner, SimpleButton } from '../../components';
|
|
5
|
+
import { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';
|
|
6
|
+
import { LazyMarkdownEditorEngine } from '../shared/documents/engines/lazyEngines';
|
|
7
|
+
import './documentEditor.css';
|
|
8
|
+
export const defaultDocumentEditorLabels = {
|
|
9
|
+
loadingHeading: 'Loading',
|
|
10
|
+
loadingMessage: 'Loading editor',
|
|
11
|
+
parseErrorNotice: 'This document contains markdown the visual editor cannot represent, so it has opened in source mode.',
|
|
12
|
+
retryRichText: 'Try the visual editor again'
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_VIEW_MODES = ['rich-text', 'source'];
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
DocumentEditor edits a markdown document in rich-text, source or diff mode. The editor engine
|
|
18
|
+
(MDXEditor) is only downloaded when an editor is first rendered.
|
|
19
|
+
If the visual editor cannot parse the document it falls back to source mode rather than
|
|
20
|
+
rendering an empty, silently lossy editor.
|
|
21
|
+
*/
|
|
22
|
+
export const DocumentEditor = ({
|
|
23
|
+
id,
|
|
24
|
+
label,
|
|
25
|
+
hideLabel = false,
|
|
26
|
+
headingLevel = 3,
|
|
27
|
+
markdown,
|
|
28
|
+
onChange,
|
|
29
|
+
readOnly = false,
|
|
30
|
+
baselineMarkdown,
|
|
31
|
+
viewModes,
|
|
32
|
+
initialViewMode = 'rich-text',
|
|
33
|
+
toolbarItems,
|
|
34
|
+
listTypes,
|
|
35
|
+
imageUploadHandler,
|
|
36
|
+
resolveResourceUrl,
|
|
37
|
+
headerActions,
|
|
38
|
+
annotations,
|
|
39
|
+
labels: customLabels,
|
|
40
|
+
customCssClasses = {},
|
|
41
|
+
onParseError
|
|
42
|
+
}) => {
|
|
43
|
+
const labels = useMemo(() => ({
|
|
44
|
+
...defaultDocumentEditorLabels,
|
|
45
|
+
...customLabels
|
|
46
|
+
}), [customLabels]);
|
|
47
|
+
const [parseError, setParseError] = useState(null);
|
|
48
|
+
const [editorRevision, setEditorRevision] = useState(0);
|
|
49
|
+
// The latest text, so remounting the editor (e.g. to retry the visual editor) keeps edits even
|
|
50
|
+
// when the host does not feed onChange back into `markdown`.
|
|
51
|
+
const [currentMarkdown, setCurrentMarkdown] = useState(markdown);
|
|
52
|
+
const currentMarkdownRef = useRef(markdown);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (markdown !== currentMarkdownRef.current) {
|
|
55
|
+
currentMarkdownRef.current = markdown;
|
|
56
|
+
setCurrentMarkdown(markdown);
|
|
57
|
+
// A replacement document is parsed afresh, so the previous document's parse error no longer applies.
|
|
58
|
+
setParseError(null);
|
|
59
|
+
setEditorRevision(revision => revision + 1);
|
|
60
|
+
}
|
|
61
|
+
}, [markdown]);
|
|
62
|
+
const handleChange = useCallback(nextMarkdown => {
|
|
63
|
+
currentMarkdownRef.current = nextMarkdown;
|
|
64
|
+
setCurrentMarkdown(nextMarkdown);
|
|
65
|
+
onChange?.(nextMarkdown);
|
|
66
|
+
}, [onChange]);
|
|
67
|
+
const availableViewModes = useMemo(() => {
|
|
68
|
+
const requested = viewModes ?? (baselineMarkdown === undefined ? DEFAULT_VIEW_MODES : [...DEFAULT_VIEW_MODES, 'diff']);
|
|
69
|
+
const supported = requested.filter(mode => mode !== 'diff' || baselineMarkdown !== undefined);
|
|
70
|
+
return parseError ? ['source', ...supported.filter(mode => mode !== 'rich-text' && mode !== 'source')] : supported;
|
|
71
|
+
}, [viewModes, baselineMarkdown, parseError]);
|
|
72
|
+
const viewMode = parseError ? 'source' : availableViewModes.includes(initialViewMode) ? initialViewMode : availableViewModes[0] ?? 'source';
|
|
73
|
+
const handleParseError = useCallback(error => {
|
|
74
|
+
setParseError(current => current ?? error);
|
|
75
|
+
onParseError?.(error);
|
|
76
|
+
}, [onParseError]);
|
|
77
|
+
const imagePreviewHandler = useMemo(
|
|
78
|
+
// A resolver returning nothing has rejected the source, so the preview is left empty rather than
|
|
79
|
+
// falling back to the unvetted original.
|
|
80
|
+
() => resolveResourceUrl ? async source => resolveResourceUrl(source) ?? '' : undefined, [resolveResourceUrl]);
|
|
81
|
+
return /*#__PURE__*/React.createElement("section", {
|
|
82
|
+
id: id,
|
|
83
|
+
className: `documentEditor ${readOnly ? 'documentEditor--readOnly' : ''} ${customCssClasses.wrapper || ''}`.trim(),
|
|
84
|
+
"aria-label": label
|
|
85
|
+
}, !hideLabel && /*#__PURE__*/React.createElement("div", {
|
|
86
|
+
className: `documentEditor__header ${customCssClasses.header || ''}`.trim()
|
|
87
|
+
}, /*#__PURE__*/React.createElement(HeaderBar, {
|
|
88
|
+
text: label,
|
|
89
|
+
headingLevel: headingLevel
|
|
90
|
+
}, headerActions)), hideLabel && headerActions && /*#__PURE__*/React.createElement("div", {
|
|
91
|
+
className: `documentEditor__actions ${customCssClasses.actions || ''}`.trim()
|
|
92
|
+
}, headerActions), parseError && /*#__PURE__*/React.createElement(PageBanner, {
|
|
93
|
+
id: `${id}_parseError`,
|
|
94
|
+
type: "warn",
|
|
95
|
+
icon: "warning",
|
|
96
|
+
displayMode: "inline",
|
|
97
|
+
animation: "none",
|
|
98
|
+
disableClose: true
|
|
99
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
100
|
+
role: "status"
|
|
101
|
+
}, labels.parseErrorNotice), /*#__PURE__*/React.createElement(SimpleButton, {
|
|
102
|
+
id: `${id}_retryRichText`,
|
|
103
|
+
label: labels.retryRichText,
|
|
104
|
+
cssClass: "button secondary outline compact documentEditor__retry",
|
|
105
|
+
onClickHandler: () => setParseError(null)
|
|
106
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
107
|
+
className: `documentEditor__editor ${customCssClasses.editor || ''}`.trim()
|
|
108
|
+
}, /*#__PURE__*/React.createElement(Suspense, {
|
|
109
|
+
fallback: /*#__PURE__*/React.createElement(LoadingMessage, {
|
|
110
|
+
heading: labels.loadingHeading,
|
|
111
|
+
loadingMessage: labels.loadingMessage,
|
|
112
|
+
isInline: true
|
|
113
|
+
})
|
|
114
|
+
}, /*#__PURE__*/React.createElement(LazyMarkdownEditorEngine
|
|
115
|
+
// Remount in source mode once a parse error forces the fallback.
|
|
116
|
+
, {
|
|
117
|
+
key: `${parseError ? 'source-fallback' : 'default'}_${editorRevision}`,
|
|
118
|
+
markdown: currentMarkdown,
|
|
119
|
+
onChange: handleChange,
|
|
120
|
+
readOnly: readOnly,
|
|
121
|
+
viewMode: viewMode,
|
|
122
|
+
viewModes: availableViewModes,
|
|
123
|
+
diffMarkdown: baselineMarkdown,
|
|
124
|
+
toolbarItems: toolbarItems,
|
|
125
|
+
listTypes: listTypes,
|
|
126
|
+
imageUploadHandler: imageUploadHandler,
|
|
127
|
+
imagePreviewHandler: imagePreviewHandler,
|
|
128
|
+
contentCssClass: customCssClasses.content,
|
|
129
|
+
annotations: annotations,
|
|
130
|
+
annotationLayerId: `${id}_annotations`,
|
|
131
|
+
onParseError: handleParseError
|
|
132
|
+
}))));
|
|
133
|
+
};
|
|
134
|
+
export default DocumentEditor;
|
|
135
|
+
//# sourceMappingURL=DocumentEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentEditor.js","names":["React","Suspense","useCallback","useEffect","useMemo","useRef","useState","HeaderBar","PageBanner","SimpleButton","LoadingMessage","LazyMarkdownEditorEngine","defaultDocumentEditorLabels","loadingHeading","loadingMessage","parseErrorNotice","retryRichText","DEFAULT_VIEW_MODES","DocumentEditor","id","label","hideLabel","headingLevel","markdown","onChange","readOnly","baselineMarkdown","viewModes","initialViewMode","toolbarItems","listTypes","imageUploadHandler","resolveResourceUrl","headerActions","annotations","labels","customLabels","customCssClasses","onParseError","parseError","setParseError","editorRevision","setEditorRevision","currentMarkdown","setCurrentMarkdown","currentMarkdownRef","current","revision","handleChange","nextMarkdown","availableViewModes","requested","undefined","supported","filter","mode","viewMode","includes","handleParseError","error","imagePreviewHandler","source","createElement","className","wrapper","trim","header","text","actions","type","icon","displayMode","animation","disableClose","role","cssClass","onClickHandler","editor","fallback","heading","isInline","key","diffMarkdown","contentCssClass","content","annotationLayerId"],"sources":["../../../../src/widgets/documentEditor/DocumentEditor.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { HeaderBar, PageBanner, SimpleButton } from '../../components';\nimport { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';\nimport { LazyMarkdownEditorEngine } from '../shared/documents/engines/lazyEngines';\nimport { DocumentEditorLabels, DocumentEditorProps, MarkdownEditorViewMode } from './documentEditor.interfaces';\n\nimport './documentEditor.scss';\n\nexport const defaultDocumentEditorLabels: DocumentEditorLabels = {\n loadingHeading: 'Loading',\n loadingMessage: 'Loading editor',\n parseErrorNotice: 'This document contains markdown the visual editor cannot represent, so it has opened in source mode.',\n retryRichText: 'Try the visual editor again'\n};\n\nconst DEFAULT_VIEW_MODES: MarkdownEditorViewMode[] = ['rich-text', 'source'];\n\n/*\n DocumentEditor edits a markdown document in rich-text, source or diff mode. The editor engine\n (MDXEditor) is only downloaded when an editor is first rendered.\n If the visual editor cannot parse the document it falls back to source mode rather than\n rendering an empty, silently lossy editor.\n */\nexport const DocumentEditor: FC<DocumentEditorProps> = (\n {\n id,\n label,\n hideLabel = false,\n headingLevel = 3,\n markdown,\n onChange,\n readOnly = false,\n baselineMarkdown,\n viewModes,\n initialViewMode = 'rich-text',\n toolbarItems,\n listTypes,\n imageUploadHandler,\n resolveResourceUrl,\n headerActions,\n annotations,\n labels: customLabels,\n customCssClasses = {},\n onParseError\n }\n) => {\n const labels = useMemo(() => ({ ...defaultDocumentEditorLabels, ...customLabels }), [customLabels]);\n const [parseError, setParseError] = useState<string | null>(null);\n const [editorRevision, setEditorRevision] = useState(0);\n // The latest text, so remounting the editor (e.g. to retry the visual editor) keeps edits even\n // when the host does not feed onChange back into `markdown`.\n const [currentMarkdown, setCurrentMarkdown] = useState(markdown);\n const currentMarkdownRef = useRef(markdown);\n\n useEffect(() => {\n if (markdown !== currentMarkdownRef.current) {\n currentMarkdownRef.current = markdown;\n setCurrentMarkdown(markdown);\n // A replacement document is parsed afresh, so the previous document's parse error no longer applies.\n setParseError(null);\n setEditorRevision((revision) => revision + 1);\n }\n }, [markdown]);\n\n const handleChange = useCallback((nextMarkdown: string) => {\n currentMarkdownRef.current = nextMarkdown;\n setCurrentMarkdown(nextMarkdown);\n onChange?.(nextMarkdown);\n }, [onChange]);\n\n const availableViewModes = useMemo<MarkdownEditorViewMode[]>(() => {\n const requested = viewModes ?? (baselineMarkdown === undefined ? DEFAULT_VIEW_MODES : [...DEFAULT_VIEW_MODES, 'diff']);\n const supported = requested.filter((mode) => mode !== 'diff' || baselineMarkdown !== undefined);\n return parseError ? ['source', ...supported.filter((mode) => mode !== 'rich-text' && mode !== 'source')] : supported;\n }, [viewModes, baselineMarkdown, parseError]);\n\n const viewMode: MarkdownEditorViewMode = parseError ? 'source' : availableViewModes.includes(initialViewMode)\n ? initialViewMode\n : availableViewModes[0] ?? 'source';\n\n const handleParseError = useCallback((error: string) => {\n setParseError((current) => current ?? error);\n onParseError?.(error);\n }, [onParseError]);\n\n const imagePreviewHandler = useMemo(\n // A resolver returning nothing has rejected the source, so the preview is left empty rather than\n // falling back to the unvetted original.\n () => (resolveResourceUrl ? async (source: string) => resolveResourceUrl(source) ?? '' : undefined),\n [resolveResourceUrl]\n );\n\n return (\n <section\n id={ id }\n className={ `documentEditor ${ readOnly ? 'documentEditor--readOnly' : '' } ${ customCssClasses.wrapper || '' }`.trim() }\n aria-label={ label }\n >\n { !hideLabel && (\n <div className={ `documentEditor__header ${ customCssClasses.header || '' }`.trim() }>\n <HeaderBar text={ label } headingLevel={ headingLevel }>\n { headerActions }\n </HeaderBar>\n </div>\n ) }\n\n { hideLabel && headerActions && (\n <div className={ `documentEditor__actions ${ customCssClasses.actions || '' }`.trim() }>{ headerActions }</div>\n ) }\n\n { parseError && (\n <PageBanner id={ `${ id }_parseError` } type=\"warn\" icon=\"warning\" displayMode=\"inline\" animation=\"none\" disableClose>\n <span role=\"status\">{ labels.parseErrorNotice }</span>\n { /* Retried on request rather than after each edit, which would remount the editor on every keystroke. */ }\n <SimpleButton\n id={ `${ id }_retryRichText` }\n label={ labels.retryRichText }\n cssClass=\"button secondary outline compact documentEditor__retry\"\n onClickHandler={ () => setParseError(null) }\n />\n </PageBanner>\n ) }\n\n <div className={ `documentEditor__editor ${ customCssClasses.editor || '' }`.trim() }>\n <Suspense fallback={ <LoadingMessage heading={ labels.loadingHeading } loadingMessage={ labels.loadingMessage } isInline /> }>\n <LazyMarkdownEditorEngine\n // Remount in source mode once a parse error forces the fallback.\n key={ `${ parseError ? 'source-fallback' : 'default' }_${ editorRevision }` }\n markdown={ currentMarkdown }\n onChange={ handleChange }\n readOnly={ readOnly }\n viewMode={ viewMode }\n viewModes={ availableViewModes }\n diffMarkdown={ baselineMarkdown }\n toolbarItems={ toolbarItems }\n listTypes={ listTypes }\n imageUploadHandler={ imageUploadHandler }\n imagePreviewHandler={ imagePreviewHandler }\n contentCssClass={ customCssClasses.content }\n annotations={ annotations }\n annotationLayerId={ `${ id }_annotations` }\n onParseError={ handleParseError }\n />\n </Suspense>\n </div>\n </section>\n );\n};\n\nexport default DocumentEditor;\n"],"mappings":"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","ignoreList":[]}
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.documentEditor {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: var(--documentEditorGap, var(--documentGap, 10px));
|
|
5
|
+
min-width: 0;
|
|
6
|
+
}
|
|
7
|
+
.documentEditor .headerBar {
|
|
8
|
+
margin-bottom: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.documentEditor__actions {
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: flex-end;
|
|
14
|
+
gap: var(--documentEditorGap, var(--documentGap, 10px));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.documentEditor__editor {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex: 1;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
min-height: var(--documentEditorMinHeight, var(--documentFrameMinHeight, 65vh));
|
|
22
|
+
border: var(--documentEditorBorder, var(--documentBorder));
|
|
23
|
+
border-radius: var(--documentEditorBorderRadius, var(--documentBorderRadius, 5px));
|
|
24
|
+
background: var(--documentEditorBg, var(--documentBg, #fff));
|
|
25
|
+
overflow: auto;
|
|
26
|
+
}
|
|
27
|
+
.documentEditor__editor > aside {
|
|
28
|
+
margin: auto;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.documentEditor--readOnly .documentEditor__editor {
|
|
32
|
+
--markdownEditorEngineBg: var(--documentEditorReadOnlyBg, var(--documentSubtleBg));
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentEditor.interfaces.js","names":[],"sources":["../../../../src/widgets/documentEditor/documentEditor.interfaces.ts"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { DocumentAnnotationsProps } from '../shared/documents/annotations/annotations.interfaces';\nimport { ResolveResourceUrl } from '../shared/documents/documents.interfaces';\nimport {\n MarkdownEditorImageUploadHandler,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem,\n MarkdownEditorViewMode\n} from '../shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces';\n\nexport type DocumentEditorLabels = {\n loadingHeading: string;\n loadingMessage: string;\n parseErrorNotice: string;\n retryRichText: string;\n};\n\nexport type DocumentEditorCssClasses = {\n wrapper?: string;\n header?: string;\n editor?: string;\n content?: string;\n actions?: string;\n};\n\nexport type DocumentEditorProps = {\n id: string;\n label: string;\n // Visually hide the label while keeping it as the editor's accessible name.\n hideLabel?: boolean;\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n markdown: string;\n /* eslint-disable-next-line no-unused-vars */\n onChange?: (markdown: string) => void;\n readOnly?: boolean;\n // Supplying a baseline adds a diff mode that compares the edited document against it.\n baselineMarkdown?: string;\n viewModes?: MarkdownEditorViewMode[];\n initialViewMode?: MarkdownEditorViewMode;\n toolbarItems?: MarkdownEditorToolbarItem[];\n listTypes?: MarkdownEditorListType[];\n // Enables image insertion; resolves to the URL the uploaded image should be referenced by.\n imageUploadHandler?: MarkdownEditorImageUploadHandler;\n // Resolves image sources for preview, e.g. paths relative to the document.\n resolveResourceUrl?: ResolveResourceUrl;\n // Rendered beside the label, e.g. save or cancel buttons.\n headerActions?: ReactNode;\n // Pinned comments, shown and created in both the rich-text and source views.\n annotations?: DocumentAnnotationsProps;\n labels?: Partial<DocumentEditorLabels>;\n customCssClasses?: DocumentEditorCssClasses;\n /* eslint-disable-next-line no-unused-vars */\n onParseError?: (error: string) => void;\n};\n\nexport type {\n MarkdownEditorImageUploadHandler,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem,\n MarkdownEditorViewMode\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentEditor","defaultDocumentEditorLabels"],"sources":["../../../../src/widgets/documentEditor/index.ts"],"sourcesContent":["export { DocumentEditor, defaultDocumentEditorLabels } from './DocumentEditor';\n\nexport type {\n DocumentEditorCssClasses,\n DocumentEditorLabels,\n DocumentEditorProps,\n MarkdownEditorImageUploadHandler,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem,\n MarkdownEditorViewMode\n} from './documentEditor.interfaces';\n"],"mappings":"AAAA,SAASA,cAAc,EAAEC,2BAA2B,QAAQ,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
4
|
+
import React, { Suspense, useCallback, useEffect, useMemo, useState } from 'react';
|
|
5
|
+
import { HeaderBar, PageBanner } from '../../components';
|
|
6
|
+
import { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';
|
|
7
|
+
import { renderIcon } from '../../helpers/iconHelpers';
|
|
8
|
+
import { formatFileSize } from '../../helpers/formatters';
|
|
9
|
+
import { getDocumentFileName, getDocumentKind as getDefaultDocumentKind, resolveDocumentResourceWithFallback } from '../shared/documents/documentHelpers';
|
|
10
|
+
import { AnnotationLayer } from '../shared/documents/annotations/AnnotationLayer';
|
|
11
|
+
import { LazyMarkdownRenderer, LazyWordRenderer } from '../shared/documents/engines/lazyEngines';
|
|
12
|
+
import { useDocumentContent } from '../shared/documents/useDocumentContent';
|
|
13
|
+
import './documentViewer.css';
|
|
14
|
+
export const defaultDocumentViewerLabels = {
|
|
15
|
+
loadingHeading: 'Loading',
|
|
16
|
+
loadingMessage: 'Loading document',
|
|
17
|
+
loadError: 'The document could not be loaded.',
|
|
18
|
+
unsupported: 'A preview is not available for this file type. Download the original file to open it.',
|
|
19
|
+
wordNotice: 'This is a browser representation of the Word document. Styling and pagination may differ from the original.',
|
|
20
|
+
imageError: 'The image could not be loaded.'
|
|
21
|
+
};
|
|
22
|
+
const getErrorDetail = error => error instanceof Error ? error.message : '';
|
|
23
|
+
|
|
24
|
+
// Kinds rendered into the page's own DOM, which comments can be pinned to.
|
|
25
|
+
const ANNOTATABLE_KINDS = ['markdown', 'text'];
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
DocumentViewer displays a document supplied as inline text, a File or a URL. PDFs and images
|
|
29
|
+
use the browser's native rendering; markdown and Word documents are rendered by engines that
|
|
30
|
+
are only downloaded when a document of that kind is first shown.
|
|
31
|
+
*/
|
|
32
|
+
export const DocumentViewer = ({
|
|
33
|
+
id,
|
|
34
|
+
document,
|
|
35
|
+
showHeader = true,
|
|
36
|
+
showMetadata = true,
|
|
37
|
+
headingLevel = 3,
|
|
38
|
+
headerActions,
|
|
39
|
+
metadataIcon = 'file-text',
|
|
40
|
+
contentHeadingOffset = 0,
|
|
41
|
+
showWordNotice = true,
|
|
42
|
+
renderers = {},
|
|
43
|
+
getDocumentKind = getDefaultDocumentKind,
|
|
44
|
+
resolveResourceUrl,
|
|
45
|
+
trustedPdfOrigins,
|
|
46
|
+
annotations,
|
|
47
|
+
labels: customLabels,
|
|
48
|
+
customCssClasses = {},
|
|
49
|
+
onStatusChange
|
|
50
|
+
}) => {
|
|
51
|
+
const labels = useMemo(() => ({
|
|
52
|
+
...defaultDocumentViewerLabels,
|
|
53
|
+
...customLabels
|
|
54
|
+
}), [customLabels]);
|
|
55
|
+
const kind = useMemo(() => {
|
|
56
|
+
const detectedKind = getDefaultDocumentKind(document);
|
|
57
|
+
return detectedKind === 'unsupported' || getDocumentKind === getDefaultDocumentKind ? detectedKind : getDocumentKind(document);
|
|
58
|
+
}, [document, getDocumentKind]);
|
|
59
|
+
const content = useDocumentContent(document, kind, {
|
|
60
|
+
trustedPdfOrigins
|
|
61
|
+
});
|
|
62
|
+
const [renderFailure, setRenderFailure] = useState(null);
|
|
63
|
+
|
|
64
|
+
// A renderer failure belongs to the content it happened on and clears once different content loads.
|
|
65
|
+
const renderError = renderFailure && renderFailure.loaded === content.loaded ? renderFailure.error : undefined;
|
|
66
|
+
const handleRenderError = useCallback(error => {
|
|
67
|
+
if (content.loaded) {
|
|
68
|
+
setRenderFailure({
|
|
69
|
+
loaded: content.loaded,
|
|
70
|
+
error
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}, [content.loaded]);
|
|
74
|
+
const isUnsupported = content.status === 'ready' && kind === 'unsupported';
|
|
75
|
+
const status = renderError !== undefined || isUnsupported ? 'error' : content.status;
|
|
76
|
+
const error = renderError ?? content.error;
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
onStatusChange?.(status, error);
|
|
79
|
+
}, [status, error, onStatusChange]);
|
|
80
|
+
const resolveResource = useCallback(resource => resolveDocumentResourceWithFallback(resource, document.url, resolveResourceUrl), [resolveResourceUrl, document.url]);
|
|
81
|
+
const loadingIndicator = /*#__PURE__*/React.createElement(LoadingMessage, {
|
|
82
|
+
heading: labels.loadingHeading,
|
|
83
|
+
loadingMessage: labels.loadingMessage,
|
|
84
|
+
isInline: true
|
|
85
|
+
});
|
|
86
|
+
const builtInRenderers = {
|
|
87
|
+
pdf: ({
|
|
88
|
+
loaded
|
|
89
|
+
}) => /*#__PURE__*/React.createElement("iframe", {
|
|
90
|
+
title: document.title,
|
|
91
|
+
src: loaded.url,
|
|
92
|
+
className: "documentViewer__pdf",
|
|
93
|
+
referrerPolicy: "no-referrer"
|
|
94
|
+
}),
|
|
95
|
+
image: ({
|
|
96
|
+
loaded,
|
|
97
|
+
onError
|
|
98
|
+
}) => /*#__PURE__*/React.createElement("img", {
|
|
99
|
+
className: "documentViewer__image",
|
|
100
|
+
src: loaded.url,
|
|
101
|
+
alt: document.title,
|
|
102
|
+
onError: () => onError(new Error(labels.imageError))
|
|
103
|
+
}),
|
|
104
|
+
text: ({
|
|
105
|
+
loaded
|
|
106
|
+
}) => /*#__PURE__*/React.createElement("pre", {
|
|
107
|
+
className: "documentViewer__text"
|
|
108
|
+
}, /*#__PURE__*/React.createElement("code", null, loaded.content)),
|
|
109
|
+
markdown: ({
|
|
110
|
+
loaded,
|
|
111
|
+
headingOffset,
|
|
112
|
+
resolveResourceUrl: resolve
|
|
113
|
+
}) => /*#__PURE__*/React.createElement(Suspense, {
|
|
114
|
+
fallback: loadingIndicator
|
|
115
|
+
}, /*#__PURE__*/React.createElement(LazyMarkdownRenderer, {
|
|
116
|
+
markdown: loaded.content ?? '',
|
|
117
|
+
headingOffset: headingOffset,
|
|
118
|
+
resolveResourceUrl: resolve
|
|
119
|
+
})),
|
|
120
|
+
word: ({
|
|
121
|
+
loaded,
|
|
122
|
+
onError
|
|
123
|
+
}) => /*#__PURE__*/React.createElement(Suspense, {
|
|
124
|
+
fallback: loadingIndicator
|
|
125
|
+
}, /*#__PURE__*/React.createElement(LazyWordRenderer, {
|
|
126
|
+
arrayBuffer: loaded.arrayBuffer,
|
|
127
|
+
title: document.title,
|
|
128
|
+
cssClass: "documentViewer__word",
|
|
129
|
+
loadingIndicator: loadingIndicator,
|
|
130
|
+
onError: onError
|
|
131
|
+
}))
|
|
132
|
+
};
|
|
133
|
+
const renderContent = () => {
|
|
134
|
+
if (status === 'idle' || status === 'loading') {
|
|
135
|
+
return loadingIndicator;
|
|
136
|
+
}
|
|
137
|
+
if (status === 'error' || !content.loaded || kind === 'unsupported') {
|
|
138
|
+
const message = isUnsupported ? labels.unsupported : labels.loadError;
|
|
139
|
+
const detail = isUnsupported ? '' : getErrorDetail(error);
|
|
140
|
+
return /*#__PURE__*/React.createElement(PageBanner, {
|
|
141
|
+
id: `${id}_error`,
|
|
142
|
+
type: "error",
|
|
143
|
+
icon: "warning",
|
|
144
|
+
displayMode: "inline",
|
|
145
|
+
animation: "none",
|
|
146
|
+
disableClose: true
|
|
147
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
148
|
+
role: "alert"
|
|
149
|
+
}, message, detail && /*#__PURE__*/React.createElement("span", {
|
|
150
|
+
className: "documentViewer__errorDetail"
|
|
151
|
+
}, detail)));
|
|
152
|
+
}
|
|
153
|
+
const renderer = renderers[kind] ?? builtInRenderers[kind];
|
|
154
|
+
const rendered = renderer?.({
|
|
155
|
+
document,
|
|
156
|
+
loaded: content.loaded,
|
|
157
|
+
resolveResourceUrl: resolveResource,
|
|
158
|
+
headingOffset: contentHeadingOffset,
|
|
159
|
+
onError: handleRenderError
|
|
160
|
+
}) ?? null;
|
|
161
|
+
if (!annotations || !ANNOTATABLE_KINDS.includes(kind)) {
|
|
162
|
+
return rendered;
|
|
163
|
+
}
|
|
164
|
+
return /*#__PURE__*/React.createElement(AnnotationLayer, _extends({}, annotations, {
|
|
165
|
+
id: `${id}_annotations`
|
|
166
|
+
}), rendered);
|
|
167
|
+
};
|
|
168
|
+
const bytes = document.fileSize ?? document.file?.size;
|
|
169
|
+
const fileSize = bytes !== undefined && Number.isFinite(bytes) && bytes >= 0 ? formatFileSize(bytes) : '';
|
|
170
|
+
return /*#__PURE__*/React.createElement("section", {
|
|
171
|
+
id: id,
|
|
172
|
+
className: `documentViewer documentViewer--${kind} ${customCssClasses.wrapper || ''}`.trim(),
|
|
173
|
+
"aria-busy": status === 'loading'
|
|
174
|
+
}, showHeader && /*#__PURE__*/React.createElement(HeaderBar, {
|
|
175
|
+
text: document.title,
|
|
176
|
+
headingLevel: headingLevel
|
|
177
|
+
}, headerActions), showMetadata && /*#__PURE__*/React.createElement("div", {
|
|
178
|
+
className: `documentViewer__metadata ${customCssClasses.metadata || ''}`.trim()
|
|
179
|
+
}, renderIcon(metadataIcon, {
|
|
180
|
+
customCssClass: 'documentViewer__metadataIcon'
|
|
181
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
182
|
+
className: "documentViewer__fileName"
|
|
183
|
+
}, getDocumentFileName(document)), fileSize && /*#__PURE__*/React.createElement("small", {
|
|
184
|
+
className: "documentViewer__fileSize"
|
|
185
|
+
}, fileSize)), showWordNotice && kind === 'word' && status === 'ready' && /*#__PURE__*/React.createElement(PageBanner, {
|
|
186
|
+
id: `${id}_wordNotice`,
|
|
187
|
+
type: "info",
|
|
188
|
+
displayMode: "inline",
|
|
189
|
+
animation: "none",
|
|
190
|
+
disableClose: true
|
|
191
|
+
}, labels.wordNotice), /*#__PURE__*/React.createElement("div", {
|
|
192
|
+
className: `documentViewer__frame ${customCssClasses.frame || ''}`.trim()
|
|
193
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
194
|
+
className: `documentViewer__content ${customCssClasses.content || ''}`.trim()
|
|
195
|
+
}, renderContent())));
|
|
196
|
+
};
|
|
197
|
+
export default DocumentViewer;
|
|
198
|
+
//# sourceMappingURL=DocumentViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentViewer.js","names":["_extends","React","Suspense","useCallback","useEffect","useMemo","useState","HeaderBar","PageBanner","LoadingMessage","renderIcon","formatFileSize","getDocumentFileName","getDocumentKind","getDefaultDocumentKind","resolveDocumentResourceWithFallback","AnnotationLayer","LazyMarkdownRenderer","LazyWordRenderer","useDocumentContent","defaultDocumentViewerLabels","loadingHeading","loadingMessage","loadError","unsupported","wordNotice","imageError","getErrorDetail","error","Error","message","ANNOTATABLE_KINDS","DocumentViewer","id","document","showHeader","showMetadata","headingLevel","headerActions","metadataIcon","contentHeadingOffset","showWordNotice","renderers","resolveResourceUrl","trustedPdfOrigins","annotations","labels","customLabels","customCssClasses","onStatusChange","kind","detectedKind","content","renderFailure","setRenderFailure","renderError","loaded","undefined","handleRenderError","isUnsupported","status","resolveResource","resource","url","loadingIndicator","createElement","heading","isInline","builtInRenderers","pdf","title","src","className","referrerPolicy","image","onError","alt","text","markdown","headingOffset","resolve","fallback","word","arrayBuffer","cssClass","renderContent","detail","type","icon","displayMode","animation","disableClose","role","renderer","rendered","includes","bytes","fileSize","file","size","Number","isFinite","wrapper","trim","metadata","customCssClass","frame"],"sources":["../../../../src/widgets/documentViewer/DocumentViewer.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, ReactNode, Suspense, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { HeaderBar, PageBanner } from '../../components';\nimport { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';\nimport { renderIcon } from '../../helpers/iconHelpers';\nimport { formatFileSize } from '../../helpers/formatters';\nimport {\n getDocumentFileName,\n getDocumentKind as getDefaultDocumentKind,\n resolveDocumentResourceWithFallback\n} from '../shared/documents/documentHelpers';\nimport { AnnotationLayer } from '../shared/documents/annotations/AnnotationLayer';\nimport { DocumentKind, DocumentLoadStatus, LoadedDocument } from '../shared/documents/documents.interfaces';\nimport { LazyMarkdownRenderer, LazyWordRenderer } from '../shared/documents/engines/lazyEngines';\nimport { useDocumentContent } from '../shared/documents/useDocumentContent';\nimport {\n DocumentRenderers,\n DocumentViewerLabels,\n DocumentViewerProps\n} from './documentViewer.interfaces';\n\nimport './documentViewer.scss';\n\nexport const defaultDocumentViewerLabels: DocumentViewerLabels = {\n loadingHeading: 'Loading',\n loadingMessage: 'Loading document',\n loadError: 'The document could not be loaded.',\n unsupported: 'A preview is not available for this file type. Download the original file to open it.',\n wordNotice: 'This is a browser representation of the Word document. Styling and pagination may differ from the original.',\n imageError: 'The image could not be loaded.'\n};\n\nconst getErrorDetail = (error: unknown): string => (error instanceof Error ? error.message : '');\n\n// Kinds rendered into the page's own DOM, which comments can be pinned to.\nconst ANNOTATABLE_KINDS: DocumentKind[] = ['markdown', 'text'];\n\n/*\n DocumentViewer displays a document supplied as inline text, a File or a URL. PDFs and images\n use the browser's native rendering; markdown and Word documents are rendered by engines that\n are only downloaded when a document of that kind is first shown.\n */\nexport const DocumentViewer: FC<DocumentViewerProps> = (\n {\n id,\n document,\n showHeader = true,\n showMetadata = true,\n headingLevel = 3,\n headerActions,\n metadataIcon = 'file-text',\n contentHeadingOffset = 0,\n showWordNotice = true,\n renderers = {},\n getDocumentKind = getDefaultDocumentKind,\n resolveResourceUrl,\n trustedPdfOrigins,\n annotations,\n labels: customLabels,\n customCssClasses = {},\n onStatusChange\n }\n) => {\n const labels = useMemo(() => ({ ...defaultDocumentViewerLabels, ...customLabels }), [customLabels]);\n const kind = useMemo(() => {\n const detectedKind = getDefaultDocumentKind(document);\n return detectedKind === 'unsupported' || getDocumentKind === getDefaultDocumentKind\n ? detectedKind\n : getDocumentKind(document);\n }, [document, getDocumentKind]);\n const content = useDocumentContent(document, kind, { trustedPdfOrigins });\n const [renderFailure, setRenderFailure] = useState<{ loaded: LoadedDocument; error: unknown } | null>(null);\n\n // A renderer failure belongs to the content it happened on and clears once different content loads.\n const renderError = renderFailure && renderFailure.loaded === content.loaded ? renderFailure.error : undefined;\n const handleRenderError = useCallback((error: unknown) => {\n if (content.loaded) {\n setRenderFailure({ loaded: content.loaded, error });\n }\n }, [content.loaded]);\n\n const isUnsupported = content.status === 'ready' && kind === 'unsupported';\n const status: DocumentLoadStatus = renderError !== undefined || isUnsupported ? 'error' : content.status;\n const error = renderError ?? content.error;\n\n useEffect(() => {\n onStatusChange?.(status, error);\n }, [status, error, onStatusChange]);\n\n const resolveResource = useCallback(\n (resource: string) => resolveDocumentResourceWithFallback(resource, document.url, resolveResourceUrl),\n [resolveResourceUrl, document.url]\n );\n\n const loadingIndicator = (\n <LoadingMessage heading={ labels.loadingHeading } loadingMessage={ labels.loadingMessage } isInline />\n );\n\n const builtInRenderers: DocumentRenderers = {\n pdf: ({ loaded }) => (\n <iframe title={ document.title } src={ loaded.url } className=\"documentViewer__pdf\" referrerPolicy=\"no-referrer\" />\n ),\n image: ({ loaded, onError }) => (\n <img\n className=\"documentViewer__image\"\n src={ loaded.url }\n alt={ document.title }\n onError={ () => onError(new Error(labels.imageError)) }\n />\n ),\n text: ({ loaded }) => (\n <pre className=\"documentViewer__text\">\n <code>{ loaded.content }</code>\n </pre>\n ),\n markdown: ({ loaded, headingOffset, resolveResourceUrl: resolve }) => (\n <Suspense fallback={ loadingIndicator }>\n <LazyMarkdownRenderer markdown={ loaded.content ?? '' } headingOffset={ headingOffset } resolveResourceUrl={ resolve } />\n </Suspense>\n ),\n word: ({ loaded, onError }) => (\n <Suspense fallback={ loadingIndicator }>\n <LazyWordRenderer\n arrayBuffer={ loaded.arrayBuffer as ArrayBuffer }\n title={ document.title }\n cssClass=\"documentViewer__word\"\n loadingIndicator={ loadingIndicator }\n onError={ onError }\n />\n </Suspense>\n )\n };\n\n const renderContent = (): ReactNode => {\n if (status === 'idle' || status === 'loading') {\n return loadingIndicator;\n }\n if (status === 'error' || !content.loaded || kind === 'unsupported') {\n const message = isUnsupported ? labels.unsupported : labels.loadError;\n const detail = isUnsupported ? '' : getErrorDetail(error);\n return (\n <PageBanner id={ `${ id }_error` } type=\"error\" icon=\"warning\" displayMode=\"inline\" animation=\"none\" disableClose>\n <span role=\"alert\">\n { message }\n { detail && <span className=\"documentViewer__errorDetail\">{ detail }</span> }\n </span>\n </PageBanner>\n );\n }\n const renderer = renderers[kind] ?? builtInRenderers[kind];\n const rendered = renderer?.({\n document,\n loaded: content.loaded,\n resolveResourceUrl: resolveResource,\n headingOffset: contentHeadingOffset,\n onError: handleRenderError\n }) ?? null;\n if (!annotations || !ANNOTATABLE_KINDS.includes(kind)) {\n return rendered;\n }\n return <AnnotationLayer { ...annotations } id={ `${ id }_annotations` }>{ rendered }</AnnotationLayer>;\n };\n\n const bytes = document.fileSize ?? document.file?.size;\n const fileSize = bytes !== undefined && Number.isFinite(bytes) && bytes >= 0 ? formatFileSize(bytes) : '';\n\n return (\n <section\n id={ id }\n className={ `documentViewer documentViewer--${ kind } ${ customCssClasses.wrapper || '' }`.trim() }\n aria-busy={ status === 'loading' }\n >\n { showHeader && (\n <HeaderBar text={ document.title } headingLevel={ headingLevel }>\n { headerActions }\n </HeaderBar>\n ) }\n\n { showMetadata && (\n <div className={ `documentViewer__metadata ${ customCssClasses.metadata || '' }`.trim() }>\n { renderIcon(metadataIcon, { customCssClass: 'documentViewer__metadataIcon' }) }\n <span className=\"documentViewer__fileName\">{ getDocumentFileName(document) }</span>\n { fileSize && <small className=\"documentViewer__fileSize\">{ fileSize }</small> }\n </div>\n ) }\n\n { showWordNotice && kind === 'word' && status === 'ready' && (\n <PageBanner id={ `${ id }_wordNotice` } type=\"info\" displayMode=\"inline\" animation=\"none\" disableClose>\n { labels.wordNotice }\n </PageBanner>\n ) }\n\n <div className={ `documentViewer__frame ${ customCssClasses.frame || '' }`.trim() }>\n <div className={ `documentViewer__content ${ customCssClasses.content || '' }`.trim() }>\n { renderContent() }\n </div>\n </div>\n </section>\n );\n};\n\nexport default DocumentViewer;\n"],"mappings":"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","ignoreList":[]}
|
|
File without changes
|