@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,200 @@
|
|
|
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.MarkdownEditorEngine = exports.DEFAULT_TOOLBAR_ITEMS = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _editor = require("@mdxeditor/editor");
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _AnnotationLayer = require("../../annotations/AnnotationLayer");
|
|
12
|
+
var _sanitizeForMdx = require("./sanitizeForMdx");
|
|
13
|
+
var _sourceAnnotations = require("./sourceAnnotations");
|
|
14
|
+
require("@mdxeditor/editor/style.css");
|
|
15
|
+
require("./markdownEditorEngine.css");
|
|
16
|
+
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); }
|
|
17
|
+
const DEFAULT_TOOLBAR_ITEMS = exports.DEFAULT_TOOLBAR_ITEMS = ['undoRedo', 'blockType', 'formatting', 'lists', 'link', 'table', 'thematicBreak'];
|
|
18
|
+
const DEFAULT_LIST_TYPES = ['bullet', 'number'];
|
|
19
|
+
const ALLOWED_HTML = [{
|
|
20
|
+
tag: 'img',
|
|
21
|
+
attrs: ['src', 'alt', 'width', 'height']
|
|
22
|
+
}, {
|
|
23
|
+
tag: 'br'
|
|
24
|
+
}];
|
|
25
|
+
// Consistent serialisation keeps saved documents stable and diffs free of formatting noise.
|
|
26
|
+
const TO_MARKDOWN_OPTIONS = {
|
|
27
|
+
listItemIndent: 'one',
|
|
28
|
+
bullet: '-',
|
|
29
|
+
emphasis: '_',
|
|
30
|
+
strong: '*',
|
|
31
|
+
rule: '-'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// Code blocks are edited as plain text, avoiding a syntax-highlighting editor per language.
|
|
35
|
+
const createPlainTextCodeEditor = readOnly => ({
|
|
36
|
+
match: () => true,
|
|
37
|
+
priority: 0,
|
|
38
|
+
Editor: ({
|
|
39
|
+
code
|
|
40
|
+
}) => {
|
|
41
|
+
const codeBlock = (0, _editor.useCodeBlockEditorContext)();
|
|
42
|
+
return (
|
|
43
|
+
/*#__PURE__*/
|
|
44
|
+
// Stops the surrounding rich-text editor handling key presses meant for the code block.
|
|
45
|
+
_react.default.createElement("div", {
|
|
46
|
+
role: "none",
|
|
47
|
+
onKeyDown: event => event.nativeEvent.stopImmediatePropagation()
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement("textarea", {
|
|
49
|
+
className: "markdownEditorEngine__codeBlock",
|
|
50
|
+
defaultValue: code,
|
|
51
|
+
readOnly: readOnly,
|
|
52
|
+
onChange: event => codeBlock.setCode(event.target.value)
|
|
53
|
+
}))
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const renderToolbarItem = (item, listTypes) => {
|
|
58
|
+
switch (item) {
|
|
59
|
+
case 'undoRedo':
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(_editor.UndoRedo, null);
|
|
61
|
+
case 'blockType':
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_editor.BlockTypeSelect, null);
|
|
63
|
+
case 'formatting':
|
|
64
|
+
return /*#__PURE__*/_react.default.createElement(_editor.BoldItalicUnderlineToggles, null);
|
|
65
|
+
case 'lists':
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(_editor.ListsToggle, {
|
|
67
|
+
options: listTypes
|
|
68
|
+
});
|
|
69
|
+
case 'link':
|
|
70
|
+
return /*#__PURE__*/_react.default.createElement(_editor.CreateLink, null);
|
|
71
|
+
case 'image':
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_editor.InsertImage, null);
|
|
73
|
+
case 'table':
|
|
74
|
+
return /*#__PURE__*/_react.default.createElement(_editor.InsertTable, null);
|
|
75
|
+
case 'thematicBreak':
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement(_editor.InsertThematicBreak, null);
|
|
77
|
+
case 'codeBlock':
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement(_editor.InsertCodeBlock, null);
|
|
79
|
+
default:
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// Comments in the rich-text view are anchored to the editable content, not the toolbar or dialogs.
|
|
85
|
+
const findRichTextRoot = content => content.querySelector('.markdownEditorEngine__content');
|
|
86
|
+
|
|
87
|
+
/*
|
|
88
|
+
Rich-text markdown editing built on MDXEditor. Loaded lazily by the document widgets because
|
|
89
|
+
MDXEditor and its dependencies are large.
|
|
90
|
+
*/
|
|
91
|
+
const MarkdownEditorEngine = ({
|
|
92
|
+
markdown,
|
|
93
|
+
onChange,
|
|
94
|
+
readOnly = false,
|
|
95
|
+
viewMode = 'rich-text',
|
|
96
|
+
viewModes = ['rich-text', 'source'],
|
|
97
|
+
diffMarkdown,
|
|
98
|
+
toolbarItems = DEFAULT_TOOLBAR_ITEMS,
|
|
99
|
+
listTypes = DEFAULT_LIST_TYPES,
|
|
100
|
+
imageUploadHandler,
|
|
101
|
+
imagePreviewHandler,
|
|
102
|
+
contentCssClass = '',
|
|
103
|
+
annotations,
|
|
104
|
+
annotationLayerId = 'markdownEditorAnnotations',
|
|
105
|
+
onParseError
|
|
106
|
+
}) => {
|
|
107
|
+
const editorRef = (0, _react.useRef)(null);
|
|
108
|
+
const [sourceSelection, setSourceSelection] = (0, _react.useState)(null);
|
|
109
|
+
|
|
110
|
+
// The handlers read the latest props through a ref so the CodeMirror extension can stay stable.
|
|
111
|
+
const annotationsRef = (0, _react.useRef)(annotations);
|
|
112
|
+
annotationsRef.current = annotations;
|
|
113
|
+
const [sourceAnnotations] = (0, _react.useState)(() => (0, _sourceAnnotations.createSourceAnnotations)({
|
|
114
|
+
onSelectionChange: setSourceSelection,
|
|
115
|
+
onSelectComment: commentId => annotationsRef.current?.onSelectComment?.(commentId)
|
|
116
|
+
}));
|
|
117
|
+
const hasAnnotations = annotations !== undefined;
|
|
118
|
+
const codeMirrorExtensions = (0, _react.useMemo)(() => hasAnnotations ? [sourceAnnotations.extension] : [], [hasAnnotations, sourceAnnotations]);
|
|
119
|
+
(0, _react.useEffect)(() => {
|
|
120
|
+
if (annotations) {
|
|
121
|
+
sourceAnnotations.update({
|
|
122
|
+
comments: annotations.comments,
|
|
123
|
+
selectedCommentId: annotations.selectedCommentId,
|
|
124
|
+
showResolved: annotations.showResolved
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}, [annotations, sourceAnnotations]);
|
|
128
|
+
const safeMarkdown = (0, _react.useMemo)(() => (0, _sanitizeForMdx.sanitizeEditorInput)(markdown, ALLOWED_HTML), [markdown]);
|
|
129
|
+
const safeDiffMarkdown = (0, _react.useMemo)(() => (0, _sanitizeForMdx.sanitizeEditorInput)(diffMarkdown ?? markdown, ALLOWED_HTML), [diffMarkdown, markdown]);
|
|
130
|
+
|
|
131
|
+
// MDXEditor only reads `markdown` on mount. Read-only content (e.g. streamed output) is pushed in
|
|
132
|
+
// imperatively; while editing, external updates are ignored so they never overwrite the user's input.
|
|
133
|
+
(0, _react.useEffect)(() => {
|
|
134
|
+
if (readOnly) {
|
|
135
|
+
editorRef.current?.setMarkdown(safeMarkdown);
|
|
136
|
+
}
|
|
137
|
+
}, [readOnly, safeMarkdown]);
|
|
138
|
+
const plugins = (0, _react.useMemo)(() => {
|
|
139
|
+
const showToolbar = !readOnly && (toolbarItems.length > 0 || viewModes.length > 1);
|
|
140
|
+
const items = toolbarItems.filter(item => item !== 'image' || imageUploadHandler);
|
|
141
|
+
return [(0, _editor.headingsPlugin)(), (0, _editor.listsPlugin)(), (0, _editor.quotePlugin)(), (0, _editor.thematicBreakPlugin)(), (0, _editor.linkPlugin)(), (0, _editor.linkDialogPlugin)(), (0, _editor.tablePlugin)(), (0, _editor.imagePlugin)({
|
|
142
|
+
imageUploadHandler: imageUploadHandler ?? null,
|
|
143
|
+
...(imagePreviewHandler ? {
|
|
144
|
+
imagePreviewHandler
|
|
145
|
+
} : {})
|
|
146
|
+
}), (0, _editor.codeBlockPlugin)({
|
|
147
|
+
codeBlockEditorDescriptors: [createPlainTextCodeEditor(readOnly)]
|
|
148
|
+
}), (0, _editor.markdownShortcutPlugin)(), (0, _editor.diffSourcePlugin)({
|
|
149
|
+
diffMarkdown: safeDiffMarkdown,
|
|
150
|
+
viewMode,
|
|
151
|
+
readOnlyDiff: true,
|
|
152
|
+
codeMirrorExtensions
|
|
153
|
+
}), ...(showToolbar ? [(0, _editor.toolbarPlugin)({
|
|
154
|
+
toolbarContents: () => /*#__PURE__*/_react.default.createElement(_editor.DiffSourceToggleWrapper, {
|
|
155
|
+
options: viewModes
|
|
156
|
+
}, items.map((item, index) => /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
157
|
+
key: item
|
|
158
|
+
}, index > 0 && /*#__PURE__*/_react.default.createElement(_editor.Separator, null), renderToolbarItem(item, listTypes))))
|
|
159
|
+
})] : [])];
|
|
160
|
+
}, [readOnly, toolbarItems, viewModes, imageUploadHandler, imagePreviewHandler, safeDiffMarkdown, viewMode, listTypes, codeMirrorExtensions]);
|
|
161
|
+
const handleChange = (0, _react.useCallback)((nextMarkdown, initialMarkdownNormalize) => {
|
|
162
|
+
// The first change event is MDXEditor normalising the input, not a user edit.
|
|
163
|
+
if (!readOnly && !initialMarkdownNormalize) {
|
|
164
|
+
onChange?.((0, _sanitizeForMdx.desanitizeEditorOutput)(nextMarkdown));
|
|
165
|
+
}
|
|
166
|
+
}, [readOnly, onChange]);
|
|
167
|
+
const handleError = (0, _react.useCallback)(({
|
|
168
|
+
error
|
|
169
|
+
}) => {
|
|
170
|
+
// Deferred because MDXEditor can report errors while building its initial state, and updating
|
|
171
|
+
// another component's state during render triggers a React warning.
|
|
172
|
+
queueMicrotask(() => onParseError?.(error));
|
|
173
|
+
}, [onParseError]);
|
|
174
|
+
const editor = /*#__PURE__*/_react.default.createElement(_editor.MDXEditor, {
|
|
175
|
+
ref: editorRef
|
|
176
|
+
// Plugins cannot change after mount, so remount when the mode or editability changes.
|
|
177
|
+
,
|
|
178
|
+
key: `${viewMode}_${readOnly}`,
|
|
179
|
+
className: "markdownEditorEngine",
|
|
180
|
+
contentEditableClassName: `markdownEditorEngine__content ${contentCssClass}`.trim(),
|
|
181
|
+
markdown: safeMarkdown,
|
|
182
|
+
readOnly: readOnly,
|
|
183
|
+
plugins: plugins,
|
|
184
|
+
onChange: handleChange,
|
|
185
|
+
onError: handleError,
|
|
186
|
+
toMarkdownOptions: TO_MARKDOWN_OPTIONS
|
|
187
|
+
});
|
|
188
|
+
if (!annotations) {
|
|
189
|
+
return editor;
|
|
190
|
+
}
|
|
191
|
+
return /*#__PURE__*/_react.default.createElement(_AnnotationLayer.AnnotationLayer, (0, _extends2.default)({}, annotations, {
|
|
192
|
+
id: annotationLayerId,
|
|
193
|
+
getTextRoot: findRichTextRoot,
|
|
194
|
+
externalSelection: sourceSelection,
|
|
195
|
+
onExternalSelectionConsumed: () => setSourceSelection(null)
|
|
196
|
+
}), editor);
|
|
197
|
+
};
|
|
198
|
+
exports.MarkdownEditorEngine = MarkdownEditorEngine;
|
|
199
|
+
var _default = exports.default = MarkdownEditorEngine;
|
|
200
|
+
//# sourceMappingURL=MarkdownEditorEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownEditorEngine.js","names":["_editor","require","_react","_interopRequireWildcard","_AnnotationLayer","_sanitizeForMdx","_sourceAnnotations","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_TOOLBAR_ITEMS","exports","DEFAULT_LIST_TYPES","ALLOWED_HTML","tag","attrs","TO_MARKDOWN_OPTIONS","listItemIndent","bullet","emphasis","strong","rule","createPlainTextCodeEditor","readOnly","match","priority","Editor","code","codeBlock","useCodeBlockEditorContext","createElement","role","onKeyDown","event","nativeEvent","stopImmediatePropagation","className","defaultValue","onChange","setCode","target","value","renderToolbarItem","item","listTypes","UndoRedo","BlockTypeSelect","BoldItalicUnderlineToggles","ListsToggle","options","CreateLink","InsertImage","InsertTable","InsertThematicBreak","InsertCodeBlock","findRichTextRoot","content","querySelector","MarkdownEditorEngine","markdown","viewMode","viewModes","diffMarkdown","toolbarItems","imageUploadHandler","imagePreviewHandler","contentCssClass","annotations","annotationLayerId","onParseError","editorRef","useRef","sourceSelection","setSourceSelection","useState","annotationsRef","current","sourceAnnotations","createSourceAnnotations","onSelectionChange","onSelectComment","commentId","hasAnnotations","undefined","codeMirrorExtensions","useMemo","extension","useEffect","update","comments","selectedCommentId","showResolved","safeMarkdown","sanitizeEditorInput","safeDiffMarkdown","setMarkdown","plugins","showToolbar","length","items","filter","headingsPlugin","listsPlugin","quotePlugin","thematicBreakPlugin","linkPlugin","linkDialogPlugin","tablePlugin","imagePlugin","codeBlockPlugin","codeBlockEditorDescriptors","markdownShortcutPlugin","diffSourcePlugin","readOnlyDiff","toolbarPlugin","toolbarContents","DiffSourceToggleWrapper","map","index","Fragment","key","Separator","handleChange","useCallback","nextMarkdown","initialMarkdownNormalize","desanitizeEditorOutput","handleError","error","queueMicrotask","editor","MDXEditor","ref","contentEditableClassName","trim","onError","toMarkdownOptions","AnnotationLayer","_extends2","id","getTextRoot","externalSelection","onExternalSelectionConsumed","_default"],"sources":["../../../../../../../src/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.tsx"],"sourcesContent":["import {\n BlockTypeSelect,\n BoldItalicUnderlineToggles,\n codeBlockPlugin,\n CodeBlockEditorDescriptor,\n CreateLink,\n diffSourcePlugin,\n DiffSourceToggleWrapper,\n headingsPlugin,\n imagePlugin,\n InsertCodeBlock,\n InsertImage,\n InsertTable,\n InsertThematicBreak,\n linkDialogPlugin,\n linkPlugin,\n listsPlugin,\n ListsToggle,\n markdownShortcutPlugin,\n MDXEditor,\n MDXEditorMethods,\n quotePlugin,\n RealmPlugin,\n Separator,\n tablePlugin,\n thematicBreakPlugin,\n toolbarPlugin,\n UndoRedo,\n useCodeBlockEditorContext\n} from '@mdxeditor/editor';\nimport React, { FC, Fragment, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { AnnotationLayer } from '../../annotations/AnnotationLayer';\nimport {\n MarkdownEditorEngineProps,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem\n} from './markdownEditorEngine.interfaces';\nimport { AllowedHtmlEntry, desanitizeEditorOutput, sanitizeEditorInput } from './sanitizeForMdx';\nimport { createSourceAnnotations, SourceSelection } from './sourceAnnotations';\n\nimport '@mdxeditor/editor/style.css';\nimport './markdownEditorEngine.scss';\n\nexport const DEFAULT_TOOLBAR_ITEMS: MarkdownEditorToolbarItem[] = [\n 'undoRedo', 'blockType', 'formatting', 'lists', 'link', 'table', 'thematicBreak'\n];\nconst DEFAULT_LIST_TYPES: MarkdownEditorListType[] = ['bullet', 'number'];\nconst ALLOWED_HTML: AllowedHtmlEntry[] = [\n { tag: 'img', attrs: ['src', 'alt', 'width', 'height'] },\n { tag: 'br' }\n];\n// Consistent serialisation keeps saved documents stable and diffs free of formatting noise.\nconst TO_MARKDOWN_OPTIONS = { listItemIndent: 'one', bullet: '-', emphasis: '_', strong: '*', rule: '-' } as const;\n\n// Code blocks are edited as plain text, avoiding a syntax-highlighting editor per language.\nconst createPlainTextCodeEditor = (readOnly: boolean): CodeBlockEditorDescriptor => ({\n match: () => true,\n priority: 0,\n Editor: ({ code }) => {\n const codeBlock = useCodeBlockEditorContext();\n return (\n // Stops the surrounding rich-text editor handling key presses meant for the code block.\n <div role=\"none\" onKeyDown={ (event) => event.nativeEvent.stopImmediatePropagation() }>\n <textarea\n className=\"markdownEditorEngine__codeBlock\"\n defaultValue={ code }\n readOnly={ readOnly }\n onChange={ (event) => codeBlock.setCode(event.target.value) }\n />\n </div>\n );\n }\n});\n\nconst renderToolbarItem = (item: MarkdownEditorToolbarItem, listTypes: MarkdownEditorListType[]): ReactNode => {\n switch (item) {\n case 'undoRedo':\n return <UndoRedo />;\n case 'blockType':\n return <BlockTypeSelect />;\n case 'formatting':\n return <BoldItalicUnderlineToggles />;\n case 'lists':\n return <ListsToggle options={ listTypes } />;\n case 'link':\n return <CreateLink />;\n case 'image':\n return <InsertImage />;\n case 'table':\n return <InsertTable />;\n case 'thematicBreak':\n return <InsertThematicBreak />;\n case 'codeBlock':\n return <InsertCodeBlock />;\n default:\n return null;\n }\n};\n\n// Comments in the rich-text view are anchored to the editable content, not the toolbar or dialogs.\nconst findRichTextRoot = (content: HTMLElement): HTMLElement | null => content.querySelector('.markdownEditorEngine__content');\n\n/*\n Rich-text markdown editing built on MDXEditor. Loaded lazily by the document widgets because\n MDXEditor and its dependencies are large.\n */\nexport const MarkdownEditorEngine: FC<MarkdownEditorEngineProps> = (\n {\n markdown,\n onChange,\n readOnly = false,\n viewMode = 'rich-text',\n viewModes = ['rich-text', 'source'],\n diffMarkdown,\n toolbarItems = DEFAULT_TOOLBAR_ITEMS,\n listTypes = DEFAULT_LIST_TYPES,\n imageUploadHandler,\n imagePreviewHandler,\n contentCssClass = '',\n annotations,\n annotationLayerId = 'markdownEditorAnnotations',\n onParseError\n }\n) => {\n const editorRef = useRef<MDXEditorMethods>(null);\n const [sourceSelection, setSourceSelection] = useState<SourceSelection>(null);\n\n // The handlers read the latest props through a ref so the CodeMirror extension can stay stable.\n const annotationsRef = useRef(annotations);\n annotationsRef.current = annotations;\n const [sourceAnnotations] = useState(() => createSourceAnnotations({\n onSelectionChange: setSourceSelection,\n onSelectComment: (commentId) => annotationsRef.current?.onSelectComment?.(commentId)\n }));\n const hasAnnotations = annotations !== undefined;\n const codeMirrorExtensions = useMemo(() => (hasAnnotations ? [sourceAnnotations.extension] : []), [hasAnnotations, sourceAnnotations]);\n\n useEffect(() => {\n if (annotations) {\n sourceAnnotations.update({\n comments: annotations.comments,\n selectedCommentId: annotations.selectedCommentId,\n showResolved: annotations.showResolved\n });\n }\n }, [annotations, sourceAnnotations]);\n const safeMarkdown = useMemo(() => sanitizeEditorInput(markdown, ALLOWED_HTML), [markdown]);\n const safeDiffMarkdown = useMemo(() => sanitizeEditorInput(diffMarkdown ?? markdown, ALLOWED_HTML), [diffMarkdown, markdown]);\n\n // MDXEditor only reads `markdown` on mount. Read-only content (e.g. streamed output) is pushed in\n // imperatively; while editing, external updates are ignored so they never overwrite the user's input.\n useEffect(() => {\n if (readOnly) {\n editorRef.current?.setMarkdown(safeMarkdown);\n }\n }, [readOnly, safeMarkdown]);\n\n const plugins = useMemo((): RealmPlugin[] => {\n const showToolbar = !readOnly && (toolbarItems.length > 0 || viewModes.length > 1);\n const items = toolbarItems.filter((item) => item !== 'image' || imageUploadHandler);\n return [\n headingsPlugin(),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n imagePlugin({\n imageUploadHandler: imageUploadHandler ?? null,\n ...(imagePreviewHandler ? { imagePreviewHandler } : {})\n }),\n codeBlockPlugin({ codeBlockEditorDescriptors: [createPlainTextCodeEditor(readOnly)] }),\n markdownShortcutPlugin(),\n diffSourcePlugin({ diffMarkdown: safeDiffMarkdown, viewMode, readOnlyDiff: true, codeMirrorExtensions }),\n ...(showToolbar ? [toolbarPlugin({\n toolbarContents: () => (\n <DiffSourceToggleWrapper options={ viewModes }>\n { items.map((item, index) => (\n <Fragment key={ item }>\n { index > 0 && <Separator /> }\n { renderToolbarItem(item, listTypes) }\n </Fragment>\n )) }\n </DiffSourceToggleWrapper>\n )\n })] : [])\n ];\n }, [readOnly, toolbarItems, viewModes, imageUploadHandler, imagePreviewHandler, safeDiffMarkdown, viewMode, listTypes, codeMirrorExtensions]);\n\n const handleChange = useCallback((nextMarkdown: string, initialMarkdownNormalize: boolean) => {\n // The first change event is MDXEditor normalising the input, not a user edit.\n if (!readOnly && !initialMarkdownNormalize) {\n onChange?.(desanitizeEditorOutput(nextMarkdown));\n }\n }, [readOnly, onChange]);\n\n const handleError = useCallback(({ error }: { error: string }) => {\n // Deferred because MDXEditor can report errors while building its initial state, and updating\n // another component's state during render triggers a React warning.\n queueMicrotask(() => onParseError?.(error));\n }, [onParseError]);\n\n const editor = (\n <MDXEditor\n ref={ editorRef }\n // Plugins cannot change after mount, so remount when the mode or editability changes.\n key={ `${ viewMode }_${ readOnly }` }\n className=\"markdownEditorEngine\"\n contentEditableClassName={ `markdownEditorEngine__content ${ contentCssClass }`.trim() }\n markdown={ safeMarkdown }\n readOnly={ readOnly }\n plugins={ plugins }\n onChange={ handleChange }\n onError={ handleError }\n toMarkdownOptions={ TO_MARKDOWN_OPTIONS }\n />\n );\n\n if (!annotations) {\n return editor;\n }\n\n return (\n <AnnotationLayer\n { ...annotations }\n id={ annotationLayerId }\n getTextRoot={ findRichTextRoot }\n externalSelection={ sourceSelection }\n onExternalSelectionConsumed={ () => setSourceSelection(null) }\n >\n { editor }\n </AnnotationLayer>\n );\n};\n\nexport default MarkdownEditorEngine;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css
ADDED
|
File without changes
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
.markdownEditorEngine {
|
|
2
|
+
--basePageBg: var(--markdownEditorEngineBg, var(--documentBg, #fff));
|
|
3
|
+
--baseBg: var(--markdownEditorEngineToolbarBg, var(--documentSubtleBg));
|
|
4
|
+
--baseTextContrast: var(--markdownEditorEngineFgColor, var(--documentFgColor, inherit));
|
|
5
|
+
--accentSolid: var(--markdownEditorEngineAccentColor, var(--primaryButtonBg, currentColor));
|
|
6
|
+
--font-body: var(--markdownEditorEngineFont, var(--documentFont));
|
|
7
|
+
display: flex;
|
|
8
|
+
flex: 1;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
min-height: 0;
|
|
11
|
+
font-family: var(--markdownEditorEngineFont, var(--documentFont));
|
|
12
|
+
}
|
|
13
|
+
.markdownEditorEngine [role=toolbar] {
|
|
14
|
+
position: sticky;
|
|
15
|
+
top: 0;
|
|
16
|
+
z-index: 1;
|
|
17
|
+
border-radius: 0;
|
|
18
|
+
background: var(--markdownEditorEngineToolbarBg, var(--documentSubtleBg));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.markdownEditorEngine__content {
|
|
22
|
+
min-height: var(--markdownEditorEngineContentMinHeight, 450px);
|
|
23
|
+
padding: var(--markdownEditorEngineContentPadding, 20px);
|
|
24
|
+
color: var(--markdownEditorEngineFgColor, var(--documentFgColor, inherit));
|
|
25
|
+
font-size: var(--markdownEditorEngineFontSize, 0.875rem);
|
|
26
|
+
line-height: var(--markdownEditorEngineLineHeight, 1.6);
|
|
27
|
+
overflow-wrap: anywhere;
|
|
28
|
+
}
|
|
29
|
+
.markdownEditorEngine__content table {
|
|
30
|
+
width: 100%;
|
|
31
|
+
border-collapse: collapse;
|
|
32
|
+
}
|
|
33
|
+
.markdownEditorEngine__content th,
|
|
34
|
+
.markdownEditorEngine__content td {
|
|
35
|
+
padding: var(--markdownEditorEngineCellPadding, 10px);
|
|
36
|
+
border: var(--markdownEditorEngineCellBorder, var(--documentBorder));
|
|
37
|
+
vertical-align: top;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.markdownEditorEngine__codeBlock {
|
|
41
|
+
width: 100%;
|
|
42
|
+
min-height: 100px;
|
|
43
|
+
padding: 10px;
|
|
44
|
+
border: 0;
|
|
45
|
+
border-radius: var(--documentBorderRadius, 5px);
|
|
46
|
+
background: var(--markdownEditorEngineCodeBlockBg, var(--documentSubtleBg));
|
|
47
|
+
font-family: var(--markdownEditorEngineCodeBlockFont, monospace);
|
|
48
|
+
font-size: 0.875em;
|
|
49
|
+
resize: vertical;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownEditorEngine.interfaces.js","names":[],"sources":["../../../../../../../src/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.ts"],"sourcesContent":["import { DocumentAnnotationsProps } from '../../annotations/annotations.interfaces';\n\nexport type MarkdownEditorViewMode = 'rich-text' | 'source' | 'diff';\n\nexport type MarkdownEditorToolbarItem =\n | 'undoRedo'\n | 'blockType'\n | 'formatting'\n | 'lists'\n | 'link'\n | 'image'\n | 'table'\n | 'thematicBreak'\n | 'codeBlock';\n\nexport type MarkdownEditorListType = 'bullet' | 'number' | 'check';\n\n/* eslint-disable-next-line no-unused-vars */\nexport type MarkdownEditorImageUploadHandler = (image: File) => Promise<string>;\n\n/* eslint-disable-next-line no-unused-vars */\nexport type MarkdownEditorImagePreviewHandler = (source: string) => Promise<string>;\n\nexport type MarkdownEditorEngineProps = {\n markdown: string;\n /* eslint-disable-next-line no-unused-vars */\n onChange?: (markdown: string) => void;\n readOnly?: boolean;\n viewMode?: MarkdownEditorViewMode;\n // Modes offered in the toolbar toggle; omit 'diff' when there is no baseline to compare with.\n viewModes?: MarkdownEditorViewMode[];\n diffMarkdown?: string;\n toolbarItems?: MarkdownEditorToolbarItem[];\n listTypes?: MarkdownEditorListType[];\n imageUploadHandler?: MarkdownEditorImageUploadHandler;\n imagePreviewHandler?: MarkdownEditorImagePreviewHandler;\n contentCssClass?: string;\n // Pinned comments, shown and created in both the rich-text and source views.\n annotations?: DocumentAnnotationsProps;\n // Element id for the annotation layer; required when `annotations` is set.\n annotationLayerId?: string;\n /* eslint-disable-next-line no-unused-vars */\n onParseError?: (error: string) => void;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.textToSourceRange = exports.sourceToTextOffset = exports.buildMarkdownTextIndex = void 0;
|
|
8
|
+
var _remarkGfm = _interopRequireDefault(require("remark-gfm"));
|
|
9
|
+
var _remarkParse = _interopRequireDefault(require("remark-parse"));
|
|
10
|
+
var _unified = require("unified");
|
|
11
|
+
/*
|
|
12
|
+
The text a reader sees for a markdown document (what rich-text mode renders), with a map back to
|
|
13
|
+
source offsets. Comment quotes are taken from, and resolved against, this text in both views, so
|
|
14
|
+
`Keep **passwords** private.` quotes as `passwords private` whichever view the comment was made in.
|
|
15
|
+
|
|
16
|
+
As in the DOM text index, blocks and line breaks are separated by a newline.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const markdownParser = (0, _unified.unified)().use(_remarkParse.default).use(_remarkGfm.default);
|
|
20
|
+
// Nodes rendered inline; every other node with children is a block.
|
|
21
|
+
const INLINE_TYPES = new Set(['emphasis', 'strong', 'delete', 'link', 'linkReference']);
|
|
22
|
+
// Leaves whose value is shown as document text.
|
|
23
|
+
const TEXT_TYPES = new Set(['text', 'inlineCode', 'code']);
|
|
24
|
+
// Code is shown verbatim, so escapes and entities in it are literal text.
|
|
25
|
+
const VERBATIM_TYPES = new Set(['inlineCode', 'code']);
|
|
26
|
+
const HTML_BREAK = /^<br\s*\/?>$/i;
|
|
27
|
+
const FENCE = /^[ \t]*(`{3,}|~{3,})/;
|
|
28
|
+
const ENTITY = /^&(?:#[0-9]{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{1,31});/;
|
|
29
|
+
const ESCAPABLE = /[!-/:-@[-`{-~]/;
|
|
30
|
+
// Markup between characters (indentation, `>` markers and so on) is skipped, up to this many characters.
|
|
31
|
+
const MAX_ALIGNMENT_GAP = 256;
|
|
32
|
+
|
|
33
|
+
// Entities are decoded by the same parser as the document so both agree on what each one renders.
|
|
34
|
+
const entityCache = new Map();
|
|
35
|
+
const decodeEntity = entity => {
|
|
36
|
+
let decoded = entityCache.get(entity);
|
|
37
|
+
if (decoded === undefined) {
|
|
38
|
+
const paragraph = markdownParser.parse(entity).children?.[0];
|
|
39
|
+
decoded = paragraph?.children?.[0]?.value ?? entity;
|
|
40
|
+
entityCache.set(entity, decoded);
|
|
41
|
+
}
|
|
42
|
+
return decoded;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// The part of a code node's source that holds its value, excluding fences and the info string.
|
|
46
|
+
const getCodeContentSpan = (markdown, node, start, end) => {
|
|
47
|
+
const source = markdown.slice(start, end);
|
|
48
|
+
if (node.type === 'inlineCode') {
|
|
49
|
+
const ticks = /^`+/.exec(source)?.[0].length ?? 0;
|
|
50
|
+
return [start + ticks, Math.max(start + ticks, end - ticks)];
|
|
51
|
+
}
|
|
52
|
+
if (FENCE.test(source)) {
|
|
53
|
+
const lineEnd = source.indexOf('\n');
|
|
54
|
+
return [lineEnd === -1 ? end : start + lineEnd + 1, end];
|
|
55
|
+
}
|
|
56
|
+
return [start, end];
|
|
57
|
+
};
|
|
58
|
+
const buildMarkdownTextIndex = markdown => {
|
|
59
|
+
let text = '';
|
|
60
|
+
const starts = [];
|
|
61
|
+
const ends = [];
|
|
62
|
+
const push = (characters, from, to) => {
|
|
63
|
+
text += characters;
|
|
64
|
+
for (let unit = 0; unit < characters.length; unit += 1) {
|
|
65
|
+
starts.push(from);
|
|
66
|
+
ends.push(to);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const addSeparator = sourceOffset => {
|
|
70
|
+
if (text.length && !text.endsWith('\n')) {
|
|
71
|
+
push('\n', sourceOffset, sourceOffset);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// Consumes the source token that renders as the next part of the value: an entity, a backslash
|
|
76
|
+
// escape or the literal character, skipping any markup in between.
|
|
77
|
+
const addValue = (value, from, to, verbatim) => {
|
|
78
|
+
let cursor = from;
|
|
79
|
+
let index = 0;
|
|
80
|
+
while (index < value.length) {
|
|
81
|
+
const limit = Math.min(to, cursor + MAX_ALIGNMENT_GAP);
|
|
82
|
+
let token = null;
|
|
83
|
+
for (let position = cursor; position < limit && !token; position += 1) {
|
|
84
|
+
const source = markdown[position];
|
|
85
|
+
if (!verbatim && source === '&') {
|
|
86
|
+
const entity = ENTITY.exec(markdown.slice(position, Math.min(to, position + 40)))?.[0];
|
|
87
|
+
const decoded = entity ? decodeEntity(entity) : '';
|
|
88
|
+
if (entity && decoded !== entity && value.startsWith(decoded, index)) {
|
|
89
|
+
token = {
|
|
90
|
+
position,
|
|
91
|
+
length: entity.length,
|
|
92
|
+
characters: decoded
|
|
93
|
+
};
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (!verbatim && source === '\\' && ESCAPABLE.test(value[index]) && markdown[position + 1] === value[index]) {
|
|
98
|
+
token = {
|
|
99
|
+
position,
|
|
100
|
+
length: 2,
|
|
101
|
+
characters: value[index]
|
|
102
|
+
};
|
|
103
|
+
} else if (source === value[index]) {
|
|
104
|
+
token = {
|
|
105
|
+
position,
|
|
106
|
+
length: 1,
|
|
107
|
+
characters: value[index]
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (token) {
|
|
112
|
+
push(token.characters, token.position, token.position + token.length);
|
|
113
|
+
cursor = token.position + token.length;
|
|
114
|
+
index += token.characters.length;
|
|
115
|
+
} else {
|
|
116
|
+
// Unmatched text has no source span of its own; it is pinned to the current position.
|
|
117
|
+
push(value[index], cursor, cursor);
|
|
118
|
+
index += 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
let previousBlock = null;
|
|
123
|
+
const visit = (node, block) => {
|
|
124
|
+
const start = node.position?.start.offset;
|
|
125
|
+
const end = node.position?.end.offset;
|
|
126
|
+
if (node.type === 'break' || node.type === 'html' && HTML_BREAK.test(node.value?.trim() ?? '')) {
|
|
127
|
+
if (start !== undefined) {
|
|
128
|
+
addSeparator(start);
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (TEXT_TYPES.has(node.type) && node.value && start !== undefined && end !== undefined) {
|
|
133
|
+
if (previousBlock && previousBlock !== block) {
|
|
134
|
+
addSeparator(start);
|
|
135
|
+
}
|
|
136
|
+
previousBlock = block;
|
|
137
|
+
const verbatim = VERBATIM_TYPES.has(node.type);
|
|
138
|
+
const [from, to] = verbatim ? getCodeContentSpan(markdown, node, start, end) : [start, end];
|
|
139
|
+
addValue(node.value, from, to, verbatim);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const childBlock = INLINE_TYPES.has(node.type) ? block : node;
|
|
143
|
+
node.children?.forEach(child => visit(child, childBlock));
|
|
144
|
+
};
|
|
145
|
+
const tree = markdownParser.parse(markdown);
|
|
146
|
+
visit(tree, tree);
|
|
147
|
+
starts.push(markdown.length);
|
|
148
|
+
ends.push(markdown.length);
|
|
149
|
+
return {
|
|
150
|
+
text,
|
|
151
|
+
starts,
|
|
152
|
+
ends
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
// The index of the first text character starting at or after a source offset.
|
|
157
|
+
exports.buildMarkdownTextIndex = buildMarkdownTextIndex;
|
|
158
|
+
const sourceToTextOffset = (index, sourceOffset) => {
|
|
159
|
+
let low = 0;
|
|
160
|
+
let high = index.text.length;
|
|
161
|
+
while (low < high) {
|
|
162
|
+
const middle = Math.floor((low + high) / 2);
|
|
163
|
+
if (index.starts[middle] < sourceOffset) {
|
|
164
|
+
low = middle + 1;
|
|
165
|
+
} else {
|
|
166
|
+
high = middle;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return low;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
// The source range covering text[start, end).
|
|
173
|
+
exports.sourceToTextOffset = sourceToTextOffset;
|
|
174
|
+
const textToSourceRange = (index, start, end) => ({
|
|
175
|
+
from: index.starts[start],
|
|
176
|
+
to: end > start ? index.ends[end - 1] : index.starts[start]
|
|
177
|
+
});
|
|
178
|
+
exports.textToSourceRange = textToSourceRange;
|
|
179
|
+
//# sourceMappingURL=markdownTextIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownTextIndex.js","names":["_remarkGfm","_interopRequireDefault","require","_remarkParse","_unified","markdownParser","unified","use","remarkParse","remarkGfm","INLINE_TYPES","Set","TEXT_TYPES","VERBATIM_TYPES","HTML_BREAK","FENCE","ENTITY","ESCAPABLE","MAX_ALIGNMENT_GAP","entityCache","Map","decodeEntity","entity","decoded","get","undefined","paragraph","parse","children","value","set","getCodeContentSpan","markdown","node","start","end","source","slice","type","ticks","exec","length","Math","max","test","lineEnd","indexOf","buildMarkdownTextIndex","text","starts","ends","push","characters","from","to","unit","addSeparator","sourceOffset","endsWith","addValue","verbatim","cursor","index","limit","min","token","position","startsWith","previousBlock","visit","block","offset","trim","has","childBlock","forEach","child","tree","exports","sourceToTextOffset","low","high","middle","floor","textToSourceRange"],"sources":["../../../../../../../src/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.ts"],"sourcesContent":["import remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport { unified } from 'unified';\n\n/*\n The text a reader sees for a markdown document (what rich-text mode renders), with a map back to\n source offsets. Comment quotes are taken from, and resolved against, this text in both views, so\n `Keep **passwords** private.` quotes as `passwords private` whichever view the comment was made in.\n\n As in the DOM text index, blocks and line breaks are separated by a newline.\n */\nexport type MarkdownTextIndex = {\n text: string;\n // text[i] came from source[starts[i], ends[i]); an escape or entity spans several source characters.\n // Each array has an extra final entry of the source length.\n starts: number[];\n ends: number[];\n};\n\nconst markdownParser = unified().use(remarkParse).use(remarkGfm);\n\ntype MarkdownNode = {\n type: string;\n value?: string;\n children?: MarkdownNode[];\n position?: { start: { offset?: number }; end: { offset?: number } };\n};\n\n// Nodes rendered inline; every other node with children is a block.\nconst INLINE_TYPES = new Set(['emphasis', 'strong', 'delete', 'link', 'linkReference']);\n// Leaves whose value is shown as document text.\nconst TEXT_TYPES = new Set(['text', 'inlineCode', 'code']);\n// Code is shown verbatim, so escapes and entities in it are literal text.\nconst VERBATIM_TYPES = new Set(['inlineCode', 'code']);\nconst HTML_BREAK = /^<br\\s*\\/?>$/i;\nconst FENCE = /^[ \\t]*(`{3,}|~{3,})/;\nconst ENTITY = /^&(?:#[0-9]{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{1,31});/;\nconst ESCAPABLE = /[!-/:-@[-`{-~]/;\n// Markup between characters (indentation, `>` markers and so on) is skipped, up to this many characters.\nconst MAX_ALIGNMENT_GAP = 256;\n\n// Entities are decoded by the same parser as the document so both agree on what each one renders.\nconst entityCache = new Map<string, string>();\nconst decodeEntity = (entity: string): string => {\n let decoded = entityCache.get(entity);\n if (decoded === undefined) {\n const paragraph = (markdownParser.parse(entity) as MarkdownNode).children?.[0];\n decoded = paragraph?.children?.[0]?.value ?? entity;\n entityCache.set(entity, decoded);\n }\n return decoded;\n};\n\n// The part of a code node's source that holds its value, excluding fences and the info string.\nconst getCodeContentSpan = (markdown: string, node: MarkdownNode, start: number, end: number): [number, number] => {\n const source = markdown.slice(start, end);\n if (node.type === 'inlineCode') {\n const ticks = /^`+/.exec(source)?.[0].length ?? 0;\n return [start + ticks, Math.max(start + ticks, end - ticks)];\n }\n if (FENCE.test(source)) {\n const lineEnd = source.indexOf('\\n');\n return [lineEnd === -1 ? end : start + lineEnd + 1, end];\n }\n return [start, end];\n};\n\nexport const buildMarkdownTextIndex = (markdown: string): MarkdownTextIndex => {\n let text = '';\n const starts: number[] = [];\n const ends: number[] = [];\n\n const push = (characters: string, from: number, to: number) => {\n text += characters;\n for (let unit = 0; unit < characters.length; unit += 1) {\n starts.push(from);\n ends.push(to);\n }\n };\n\n const addSeparator = (sourceOffset: number) => {\n if (text.length && !text.endsWith('\\n')) {\n push('\\n', sourceOffset, sourceOffset);\n }\n };\n\n // Consumes the source token that renders as the next part of the value: an entity, a backslash\n // escape or the literal character, skipping any markup in between.\n const addValue = (value: string, from: number, to: number, verbatim: boolean) => {\n let cursor = from;\n let index = 0;\n while (index < value.length) {\n const limit = Math.min(to, cursor + MAX_ALIGNMENT_GAP);\n let token: { position: number; length: number; characters: string } | null = null;\n for (let position = cursor; position < limit && !token; position += 1) {\n const source = markdown[position];\n if (!verbatim && source === '&') {\n const entity = ENTITY.exec(markdown.slice(position, Math.min(to, position + 40)))?.[0];\n const decoded = entity ? decodeEntity(entity) : '';\n if (entity && decoded !== entity && value.startsWith(decoded, index)) {\n token = { position, length: entity.length, characters: decoded };\n break;\n }\n }\n if (!verbatim && source === '\\\\' && ESCAPABLE.test(value[index]) && markdown[position + 1] === value[index]) {\n token = { position, length: 2, characters: value[index] };\n } else if (source === value[index]) {\n token = { position, length: 1, characters: value[index] };\n }\n }\n if (token) {\n push(token.characters, token.position, token.position + token.length);\n cursor = token.position + token.length;\n index += token.characters.length;\n } else {\n // Unmatched text has no source span of its own; it is pinned to the current position.\n push(value[index], cursor, cursor);\n index += 1;\n }\n }\n };\n\n let previousBlock: MarkdownNode | null = null;\n const visit = (node: MarkdownNode, block: MarkdownNode) => {\n const start = node.position?.start.offset;\n const end = node.position?.end.offset;\n if (node.type === 'break' || (node.type === 'html' && HTML_BREAK.test(node.value?.trim() ?? ''))) {\n if (start !== undefined) {\n addSeparator(start);\n }\n return;\n }\n if (TEXT_TYPES.has(node.type) && node.value && start !== undefined && end !== undefined) {\n if (previousBlock && previousBlock !== block) {\n addSeparator(start);\n }\n previousBlock = block;\n const verbatim = VERBATIM_TYPES.has(node.type);\n const [from, to] = verbatim ? getCodeContentSpan(markdown, node, start, end) : [start, end];\n addValue(node.value, from, to, verbatim);\n return;\n }\n const childBlock = INLINE_TYPES.has(node.type) ? block : node;\n node.children?.forEach((child) => visit(child, childBlock));\n };\n\n const tree = markdownParser.parse(markdown) as MarkdownNode;\n visit(tree, tree);\n starts.push(markdown.length);\n ends.push(markdown.length);\n return { text, starts, ends };\n};\n\n// The index of the first text character starting at or after a source offset.\nexport const sourceToTextOffset = (index: MarkdownTextIndex, sourceOffset: number): number => {\n let low = 0;\n let high = index.text.length;\n while (low < high) {\n const middle = Math.floor((low + high) / 2);\n if (index.starts[middle] < sourceOffset) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n return low;\n};\n\n// The source range covering text[start, end).\nexport const textToSourceRange = (index: MarkdownTextIndex, start: number, end: number): { from: number; to: number } => ({\n from: index.starts[start],\n to: end > start ? index.ends[end - 1] : index.starts[start]\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMG,cAAc,GAAG,IAAAC,gBAAO,EAAC,CAAC,CAACC,GAAG,CAACC,oBAAW,CAAC,CAACD,GAAG,CAACE,kBAAS,CAAC;AAShE;AACA,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AACvF;AACA,MAAMC,UAAU,GAAG,IAAID,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAC1D;AACA,MAAME,cAAc,GAAG,IAAIF,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACtD,MAAMG,UAAU,GAAG,eAAe;AAClC,MAAMC,KAAK,GAAG,sBAAsB;AACpC,MAAMC,MAAM,GAAG,oEAAoE;AACnF,MAAMC,SAAS,GAAG,gBAAgB;AAClC;AACA,MAAMC,iBAAiB,GAAG,GAAG;;AAE7B;AACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAC7C,MAAMC,YAAY,GAAIC,MAAc,IAAa;EAC/C,IAAIC,OAAO,GAAGJ,WAAW,CAACK,GAAG,CAACF,MAAM,CAAC;EACrC,IAAIC,OAAO,KAAKE,SAAS,EAAE;IACzB,MAAMC,SAAS,GAAIrB,cAAc,CAACsB,KAAK,CAACL,MAAM,CAAC,CAAkBM,QAAQ,GAAG,CAAC,CAAC;IAC9EL,OAAO,GAAGG,SAAS,EAAEE,QAAQ,GAAG,CAAC,CAAC,EAAEC,KAAK,IAAIP,MAAM;IACnDH,WAAW,CAACW,GAAG,CAACR,MAAM,EAAEC,OAAO,CAAC;EAClC;EACA,OAAOA,OAAO;AAChB,CAAC;;AAED;AACA,MAAMQ,kBAAkB,GAAGA,CAACC,QAAgB,EAAEC,IAAkB,EAAEC,KAAa,EAAEC,GAAW,KAAuB;EACjH,MAAMC,MAAM,GAAGJ,QAAQ,CAACK,KAAK,CAACH,KAAK,EAAEC,GAAG,CAAC;EACzC,IAAIF,IAAI,CAACK,IAAI,KAAK,YAAY,EAAE;IAC9B,MAAMC,KAAK,GAAG,KAAK,CAACC,IAAI,CAACJ,MAAM,CAAC,GAAG,CAAC,CAAC,CAACK,MAAM,IAAI,CAAC;IACjD,OAAO,CAACP,KAAK,GAAGK,KAAK,EAAEG,IAAI,CAACC,GAAG,CAACT,KAAK,GAAGK,KAAK,EAAEJ,GAAG,GAAGI,KAAK,CAAC,CAAC;EAC9D;EACA,IAAIxB,KAAK,CAAC6B,IAAI,CAACR,MAAM,CAAC,EAAE;IACtB,MAAMS,OAAO,GAAGT,MAAM,CAACU,OAAO,CAAC,IAAI,CAAC;IACpC,OAAO,CAACD,OAAO,KAAK,CAAC,CAAC,GAAGV,GAAG,GAAGD,KAAK,GAAGW,OAAO,GAAG,CAAC,EAAEV,GAAG,CAAC;EAC1D;EACA,OAAO,CAACD,KAAK,EAAEC,GAAG,CAAC;AACrB,CAAC;AAEM,MAAMY,sBAAsB,GAAIf,QAAgB,IAAwB;EAC7E,IAAIgB,IAAI,GAAG,EAAE;EACb,MAAMC,MAAgB,GAAG,EAAE;EAC3B,MAAMC,IAAc,GAAG,EAAE;EAEzB,MAAMC,IAAI,GAAGA,CAACC,UAAkB,EAAEC,IAAY,EAAEC,EAAU,KAAK;IAC7DN,IAAI,IAAII,UAAU;IAClB,KAAK,IAAIG,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGH,UAAU,CAACX,MAAM,EAAEc,IAAI,IAAI,CAAC,EAAE;MACtDN,MAAM,CAACE,IAAI,CAACE,IAAI,CAAC;MACjBH,IAAI,CAACC,IAAI,CAACG,EAAE,CAAC;IACf;EACF,CAAC;EAED,MAAME,YAAY,GAAIC,YAAoB,IAAK;IAC7C,IAAIT,IAAI,CAACP,MAAM,IAAI,CAACO,IAAI,CAACU,QAAQ,CAAC,IAAI,CAAC,EAAE;MACvCP,IAAI,CAAC,IAAI,EAAEM,YAAY,EAAEA,YAAY,CAAC;IACxC;EACF,CAAC;;EAED;EACA;EACA,MAAME,QAAQ,GAAGA,CAAC9B,KAAa,EAAEwB,IAAY,EAAEC,EAAU,EAAEM,QAAiB,KAAK;IAC/E,IAAIC,MAAM,GAAGR,IAAI;IACjB,IAAIS,KAAK,GAAG,CAAC;IACb,OAAOA,KAAK,GAAGjC,KAAK,CAACY,MAAM,EAAE;MAC3B,MAAMsB,KAAK,GAAGrB,IAAI,CAACsB,GAAG,CAACV,EAAE,EAAEO,MAAM,GAAG3C,iBAAiB,CAAC;MACtD,IAAI+C,KAAsE,GAAG,IAAI;MACjF,KAAK,IAAIC,QAAQ,GAAGL,MAAM,EAAEK,QAAQ,GAAGH,KAAK,IAAI,CAACE,KAAK,EAAEC,QAAQ,IAAI,CAAC,EAAE;QACrE,MAAM9B,MAAM,GAAGJ,QAAQ,CAACkC,QAAQ,CAAC;QACjC,IAAI,CAACN,QAAQ,IAAIxB,MAAM,KAAK,GAAG,EAAE;UAC/B,MAAMd,MAAM,GAAGN,MAAM,CAACwB,IAAI,CAACR,QAAQ,CAACK,KAAK,CAAC6B,QAAQ,EAAExB,IAAI,CAACsB,GAAG,CAACV,EAAE,EAAEY,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACtF,MAAM3C,OAAO,GAAGD,MAAM,GAAGD,YAAY,CAACC,MAAM,CAAC,GAAG,EAAE;UAClD,IAAIA,MAAM,IAAIC,OAAO,KAAKD,MAAM,IAAIO,KAAK,CAACsC,UAAU,CAAC5C,OAAO,EAAEuC,KAAK,CAAC,EAAE;YACpEG,KAAK,GAAG;cAAEC,QAAQ;cAAEzB,MAAM,EAAEnB,MAAM,CAACmB,MAAM;cAAEW,UAAU,EAAE7B;YAAQ,CAAC;YAChE;UACF;QACF;QACA,IAAI,CAACqC,QAAQ,IAAIxB,MAAM,KAAK,IAAI,IAAInB,SAAS,CAAC2B,IAAI,CAACf,KAAK,CAACiC,KAAK,CAAC,CAAC,IAAI9B,QAAQ,CAACkC,QAAQ,GAAG,CAAC,CAAC,KAAKrC,KAAK,CAACiC,KAAK,CAAC,EAAE;UAC3GG,KAAK,GAAG;YAAEC,QAAQ;YAAEzB,MAAM,EAAE,CAAC;YAAEW,UAAU,EAAEvB,KAAK,CAACiC,KAAK;UAAE,CAAC;QAC3D,CAAC,MAAM,IAAI1B,MAAM,KAAKP,KAAK,CAACiC,KAAK,CAAC,EAAE;UAClCG,KAAK,GAAG;YAAEC,QAAQ;YAAEzB,MAAM,EAAE,CAAC;YAAEW,UAAU,EAAEvB,KAAK,CAACiC,KAAK;UAAE,CAAC;QAC3D;MACF;MACA,IAAIG,KAAK,EAAE;QACTd,IAAI,CAACc,KAAK,CAACb,UAAU,EAAEa,KAAK,CAACC,QAAQ,EAAED,KAAK,CAACC,QAAQ,GAAGD,KAAK,CAACxB,MAAM,CAAC;QACrEoB,MAAM,GAAGI,KAAK,CAACC,QAAQ,GAAGD,KAAK,CAACxB,MAAM;QACtCqB,KAAK,IAAIG,KAAK,CAACb,UAAU,CAACX,MAAM;MAClC,CAAC,MAAM;QACL;QACAU,IAAI,CAACtB,KAAK,CAACiC,KAAK,CAAC,EAAED,MAAM,EAAEA,MAAM,CAAC;QAClCC,KAAK,IAAI,CAAC;MACZ;IACF;EACF,CAAC;EAED,IAAIM,aAAkC,GAAG,IAAI;EAC7C,MAAMC,KAAK,GAAGA,CAACpC,IAAkB,EAAEqC,KAAmB,KAAK;IACzD,MAAMpC,KAAK,GAAGD,IAAI,CAACiC,QAAQ,EAAEhC,KAAK,CAACqC,MAAM;IACzC,MAAMpC,GAAG,GAAGF,IAAI,CAACiC,QAAQ,EAAE/B,GAAG,CAACoC,MAAM;IACrC,IAAItC,IAAI,CAACK,IAAI,KAAK,OAAO,IAAKL,IAAI,CAACK,IAAI,KAAK,MAAM,IAAIxB,UAAU,CAAC8B,IAAI,CAACX,IAAI,CAACJ,KAAK,EAAE2C,IAAI,CAAC,CAAC,IAAI,EAAE,CAAE,EAAE;MAChG,IAAItC,KAAK,KAAKT,SAAS,EAAE;QACvB+B,YAAY,CAACtB,KAAK,CAAC;MACrB;MACA;IACF;IACA,IAAItB,UAAU,CAAC6D,GAAG,CAACxC,IAAI,CAACK,IAAI,CAAC,IAAIL,IAAI,CAACJ,KAAK,IAAIK,KAAK,KAAKT,SAAS,IAAIU,GAAG,KAAKV,SAAS,EAAE;MACvF,IAAI2C,aAAa,IAAIA,aAAa,KAAKE,KAAK,EAAE;QAC5Cd,YAAY,CAACtB,KAAK,CAAC;MACrB;MACAkC,aAAa,GAAGE,KAAK;MACrB,MAAMV,QAAQ,GAAG/C,cAAc,CAAC4D,GAAG,CAACxC,IAAI,CAACK,IAAI,CAAC;MAC9C,MAAM,CAACe,IAAI,EAAEC,EAAE,CAAC,GAAGM,QAAQ,GAAG7B,kBAAkB,CAACC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,GAAG,CAAC,GAAG,CAACD,KAAK,EAAEC,GAAG,CAAC;MAC3FwB,QAAQ,CAAC1B,IAAI,CAACJ,KAAK,EAAEwB,IAAI,EAAEC,EAAE,EAAEM,QAAQ,CAAC;MACxC;IACF;IACA,MAAMc,UAAU,GAAGhE,YAAY,CAAC+D,GAAG,CAACxC,IAAI,CAACK,IAAI,CAAC,GAAGgC,KAAK,GAAGrC,IAAI;IAC7DA,IAAI,CAACL,QAAQ,EAAE+C,OAAO,CAAEC,KAAK,IAAKP,KAAK,CAACO,KAAK,EAAEF,UAAU,CAAC,CAAC;EAC7D,CAAC;EAED,MAAMG,IAAI,GAAGxE,cAAc,CAACsB,KAAK,CAACK,QAAQ,CAAiB;EAC3DqC,KAAK,CAACQ,IAAI,EAAEA,IAAI,CAAC;EACjB5B,MAAM,CAACE,IAAI,CAACnB,QAAQ,CAACS,MAAM,CAAC;EAC5BS,IAAI,CAACC,IAAI,CAACnB,QAAQ,CAACS,MAAM,CAAC;EAC1B,OAAO;IAAEO,IAAI;IAAEC,MAAM;IAAEC;EAAK,CAAC;AAC/B,CAAC;;AAED;AAAA4B,OAAA,CAAA/B,sBAAA,GAAAA,sBAAA;AACO,MAAMgC,kBAAkB,GAAGA,CAACjB,KAAwB,EAAEL,YAAoB,KAAa;EAC5F,IAAIuB,GAAG,GAAG,CAAC;EACX,IAAIC,IAAI,GAAGnB,KAAK,CAACd,IAAI,CAACP,MAAM;EAC5B,OAAOuC,GAAG,GAAGC,IAAI,EAAE;IACjB,MAAMC,MAAM,GAAGxC,IAAI,CAACyC,KAAK,CAAC,CAACH,GAAG,GAAGC,IAAI,IAAI,CAAC,CAAC;IAC3C,IAAInB,KAAK,CAACb,MAAM,CAACiC,MAAM,CAAC,GAAGzB,YAAY,EAAE;MACvCuB,GAAG,GAAGE,MAAM,GAAG,CAAC;IAClB,CAAC,MAAM;MACLD,IAAI,GAAGC,MAAM;IACf;EACF;EACA,OAAOF,GAAG;AACZ,CAAC;;AAED;AAAAF,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AACO,MAAMK,iBAAiB,GAAGA,CAACtB,KAAwB,EAAE5B,KAAa,EAAEC,GAAW,MAAoC;EACxHkB,IAAI,EAAES,KAAK,CAACb,MAAM,CAACf,KAAK,CAAC;EACzBoB,EAAE,EAAEnB,GAAG,GAAGD,KAAK,GAAG4B,KAAK,CAACZ,IAAI,CAACf,GAAG,GAAG,CAAC,CAAC,GAAG2B,KAAK,CAACb,MAAM,CAACf,KAAK;AAC5D,CAAC,CAAC;AAAC4C,OAAA,CAAAM,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|