@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
|
@@ -4,12 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.timeStampToShortReadableDate = exports.isValidDate = exports.getLastDateOfMonth = exports.default = exports.daysSince = exports.dateToShortReadableMonth = exports.dateToShortReadableDateTime = exports.dateToShortReadableDate = exports.dateToShortIsoString = exports.dateToReadableTime = void 0;
|
|
7
|
+
const parseDate = value => {
|
|
8
|
+
const parsedDate = new Date(value instanceof Date ? value.getTime() : value);
|
|
9
|
+
return Number.isNaN(parsedDate.getTime()) ? null : parsedDate;
|
|
10
|
+
};
|
|
11
|
+
const logInvalidDate = () => {
|
|
12
|
+
console.error('Invalid date format');
|
|
13
|
+
return null;
|
|
14
|
+
};
|
|
15
|
+
|
|
7
16
|
// Returns format 2022-09-06 for the 6th of September 2022
|
|
8
17
|
const dateToShortIsoString = date => {
|
|
9
|
-
const newDate =
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
return null;
|
|
18
|
+
const newDate = parseDate(date);
|
|
19
|
+
if (!newDate) {
|
|
20
|
+
return logInvalidDate();
|
|
13
21
|
}
|
|
14
22
|
newDate.setTime(newDate.getTime() - newDate.getTimezoneOffset() * 60000);
|
|
15
23
|
return newDate.toISOString().substring(0, 10);
|
|
@@ -21,19 +29,23 @@ const isValidDate = (dateString, minDate) => {
|
|
|
21
29
|
if (!dateString) {
|
|
22
30
|
return false;
|
|
23
31
|
}
|
|
24
|
-
const newDate =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
const newDate = parseDate(dateString);
|
|
33
|
+
if (!newDate) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
if (!minDate) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const minimumDate = parseDate(minDate);
|
|
40
|
+
return minimumDate !== null && newDate.getTime() >= minimumDate.getTime();
|
|
28
41
|
};
|
|
29
42
|
|
|
30
43
|
// Returns format 06 Sep 2022
|
|
31
44
|
exports.isValidDate = isValidDate;
|
|
32
45
|
const dateToShortReadableDate = (date, locale = 'en-AU') => {
|
|
33
|
-
const newDate =
|
|
34
|
-
if (
|
|
35
|
-
|
|
36
|
-
return null;
|
|
46
|
+
const newDate = parseDate(date);
|
|
47
|
+
if (!newDate) {
|
|
48
|
+
return logInvalidDate();
|
|
37
49
|
}
|
|
38
50
|
return newDate.toLocaleDateString(locale, {
|
|
39
51
|
day: '2-digit',
|
|
@@ -45,28 +57,27 @@ const dateToShortReadableDate = (date, locale = 'en-AU') => {
|
|
|
45
57
|
// Returns format Sep
|
|
46
58
|
exports.dateToShortReadableDate = dateToShortReadableDate;
|
|
47
59
|
const dateToShortReadableMonth = date => {
|
|
48
|
-
const newDate =
|
|
49
|
-
newDate
|
|
50
|
-
|
|
51
|
-
console.error('Invalid date format');
|
|
52
|
-
return null;
|
|
60
|
+
const newDate = parseDate(date);
|
|
61
|
+
if (!newDate) {
|
|
62
|
+
return logInvalidDate();
|
|
53
63
|
}
|
|
64
|
+
newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month
|
|
65
|
+
|
|
54
66
|
return newDate.toUTCString().substring(8, 11);
|
|
55
67
|
};
|
|
56
68
|
exports.dateToShortReadableMonth = dateToShortReadableMonth;
|
|
57
69
|
const timeStampToShortReadableDate = (timestamp, locale = 'en-AU') => {
|
|
58
|
-
const newDate =
|
|
59
|
-
if (
|
|
70
|
+
const newDate = parseDate(timestamp);
|
|
71
|
+
if (newDate) {
|
|
60
72
|
return dateToShortReadableDate(newDate, locale);
|
|
61
73
|
}
|
|
62
74
|
return timestamp;
|
|
63
75
|
};
|
|
64
76
|
exports.timeStampToShortReadableDate = timeStampToShortReadableDate;
|
|
65
77
|
const dateToReadableTime = (date, locale = 'en-AU') => {
|
|
66
|
-
const newDate =
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
return null;
|
|
78
|
+
const newDate = parseDate(date);
|
|
79
|
+
if (!newDate) {
|
|
80
|
+
return logInvalidDate();
|
|
70
81
|
}
|
|
71
82
|
const readableTime = newDate.toLocaleTimeString(locale, {
|
|
72
83
|
hour: '2-digit',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateHelpers.js","names":["
|
|
1
|
+
{"version":3,"file":"dateHelpers.js","names":["parseDate","value","parsedDate","Date","getTime","Number","isNaN","logInvalidDate","console","error","dateToShortIsoString","date","newDate","setTime","getTimezoneOffset","toISOString","substring","exports","isValidDate","dateString","minDate","minimumDate","dateToShortReadableDate","locale","toLocaleDateString","day","month","year","dateToShortReadableMonth","setDate","toUTCString","timeStampToShortReadableDate","timestamp","dateToReadableTime","readableTime","toLocaleTimeString","hour","minute","hour12","replace","dateToShortReadableDateTime","readableDate","getLastDateOfMonth","getFullYear","getMonth","daysSince","currentDate","diffInMs","Math","abs","diffInDays","_default","default"],"sources":["../../../src/helpers/dateHelpers.ts"],"sourcesContent":[" \n\nconst parseDate = (value: Date | string | number): Date | null => {\n const parsedDate = new Date(value instanceof Date ? value.getTime() : value);\n return Number.isNaN(parsedDate.getTime()) ? null : parsedDate;\n};\n\nconst logInvalidDate = (): null => {\n console.error('Invalid date format');\n return null;\n};\n\n// Returns format 2022-09-06 for the 6th of September 2022\nexport const dateToShortIsoString = (date: Date | string): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n newDate.setTime(newDate.getTime() - newDate.getTimezoneOffset() * 60000);\n return newDate.toISOString().substring(0, 10);\n};\n\n// https://stackoverflow.com/questions/7445328/check-if-a-string-is-a-date-value\nexport const isValidDate = (dateString: string | number | null | undefined, minDate?: string): boolean => {\n if (!dateString) {\n return false;\n }\n\n const newDate = parseDate(dateString);\n if (!newDate) {\n return false;\n }\n if (!minDate) {\n return true;\n }\n\n const minimumDate = parseDate(minDate);\n return minimumDate !== null && newDate.getTime() >= minimumDate.getTime();\n};\n\n// Returns format 06 Sep 2022\nexport const dateToShortReadableDate = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n return newDate.toLocaleDateString(locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n};\n\n// Returns format Sep\nexport const dateToShortReadableMonth = (date: Date | string | number): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month\n\n return newDate.toUTCString().substring(8, 11);\n};\n\nexport const timeStampToShortReadableDate = (timestamp: string | number, locale: string = 'en-AU'): string | number | null | undefined => {\n const newDate = parseDate(timestamp);\n if (newDate) {\n return dateToShortReadableDate(newDate, locale);\n }\n return timestamp;\n};\n\nexport const dateToReadableTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n const readableTime = newDate.toLocaleTimeString(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n }).replace(/^0|\\s+/g, '');\n\n return readableTime;\n};\n\nexport const dateToShortReadableDateTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const readableDate = dateToShortReadableDate(date, locale);\n const readableTime = dateToReadableTime(date, locale);\n return `${ readableDate } ${ readableTime }`;\n};\n\nexport const getLastDateOfMonth = (date: Date) => new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const daysSince = (date: Date) => {\n const currentDate: Date = new Date();\n const diffInMs = Math.abs(currentDate.getTime() - date.getTime());\n\n const diffInDays = diffInMs / (1000 * 60 * 60 * 24);\n\n return diffInDays;\n};\n\nexport default {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n};"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.readFileAsText = exports.readFileAsArrayBuffer = exports.getUrlExtension = exports.getFileExtension = void 0;
|
|
7
|
+
/*
|
|
8
|
+
Returns the lower-case extension of a file name or path. `?` and `#` are ordinary characters in
|
|
9
|
+
file names, so `payload#.exe` is an `exe`. Trailing dots and spaces are ignored, as Windows drops
|
|
10
|
+
them when saving, so `payload.exe.` is an `exe` too. Names without an extension (including
|
|
11
|
+
dot-files such as `.env`) return an empty string. For URLs use getUrlExtension.
|
|
12
|
+
*/
|
|
13
|
+
const getFileExtension = fileName => {
|
|
14
|
+
const name = (fileName.split(/[/\\]/).pop() ?? '').replace(/[.\s]+$/, '');
|
|
15
|
+
const dotIndex = name.lastIndexOf('.');
|
|
16
|
+
return dotIndex > 0 ? name.slice(dotIndex + 1).toLowerCase() : '';
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// Any fixed origin works: it only lets relative URLs parse, and only the pathname is inspected.
|
|
20
|
+
exports.getFileExtension = getFileExtension;
|
|
21
|
+
const URL_PARSE_BASE = 'http://localhost/';
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
Returns the lower-case extension of a URL's path, ignoring the host, query string and fragment, so
|
|
25
|
+
`https://files.example.md` has no extension. Relative URLs are supported.
|
|
26
|
+
*/
|
|
27
|
+
const getUrlExtension = url => {
|
|
28
|
+
let pathname;
|
|
29
|
+
try {
|
|
30
|
+
pathname = new URL(url, URL_PARSE_BASE).pathname;
|
|
31
|
+
} catch {
|
|
32
|
+
pathname = url.split(/[?#]/)[0];
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
pathname = decodeURIComponent(pathname);
|
|
36
|
+
} catch {
|
|
37
|
+
// Malformed percent-encoding is left as-is.
|
|
38
|
+
}
|
|
39
|
+
return getFileExtension(pathname);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// FileReader rather than Blob.text()/arrayBuffer(), which older browsers and jsdom lack.
|
|
43
|
+
exports.getUrlExtension = getUrlExtension;
|
|
44
|
+
const readFile = (file, asText) => new Promise((resolve, reject) => {
|
|
45
|
+
const reader = new FileReader();
|
|
46
|
+
reader.onload = () => resolve(reader.result);
|
|
47
|
+
reader.onerror = () => reject(reader.error ?? new Error('The file could not be read.'));
|
|
48
|
+
if (asText) {
|
|
49
|
+
reader.readAsText(file);
|
|
50
|
+
} else {
|
|
51
|
+
reader.readAsArrayBuffer(file);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const readFileAsText = file => readFile(file, true);
|
|
55
|
+
exports.readFileAsText = readFileAsText;
|
|
56
|
+
const readFileAsArrayBuffer = file => readFile(file, false);
|
|
57
|
+
exports.readFileAsArrayBuffer = readFileAsArrayBuffer;
|
|
58
|
+
//# sourceMappingURL=fileHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileHelpers.js","names":["getFileExtension","fileName","name","split","pop","replace","dotIndex","lastIndexOf","slice","toLowerCase","exports","URL_PARSE_BASE","getUrlExtension","url","pathname","URL","decodeURIComponent","readFile","file","asText","Promise","resolve","reject","reader","FileReader","onload","result","onerror","error","Error","readAsText","readAsArrayBuffer","readFileAsText","readFileAsArrayBuffer"],"sources":["../../../src/helpers/fileHelpers.ts"],"sourcesContent":["/*\n Returns the lower-case extension of a file name or path. `?` and `#` are ordinary characters in\n file names, so `payload#.exe` is an `exe`. Trailing dots and spaces are ignored, as Windows drops\n them when saving, so `payload.exe.` is an `exe` too. Names without an extension (including\n dot-files such as `.env`) return an empty string. For URLs use getUrlExtension.\n */\nexport const getFileExtension = (fileName: string): string => {\n const name = (fileName.split(/[/\\\\]/).pop() ?? '').replace(/[.\\s]+$/, '');\n const dotIndex = name.lastIndexOf('.');\n return dotIndex > 0 ? name.slice(dotIndex + 1).toLowerCase() : '';\n};\n\n// Any fixed origin works: it only lets relative URLs parse, and only the pathname is inspected.\nconst URL_PARSE_BASE = 'http://localhost/';\n\n/*\n Returns the lower-case extension of a URL's path, ignoring the host, query string and fragment, so\n `https://files.example.md` has no extension. Relative URLs are supported.\n */\nexport const getUrlExtension = (url: string): string => {\n let pathname: string;\n try {\n pathname = new URL(url, URL_PARSE_BASE).pathname;\n } catch {\n pathname = url.split(/[?#]/)[0];\n }\n try {\n pathname = decodeURIComponent(pathname);\n } catch {\n // Malformed percent-encoding is left as-is.\n }\n return getFileExtension(pathname);\n};\n\n// FileReader rather than Blob.text()/arrayBuffer(), which older browsers and jsdom lack.\nconst readFile = <T extends string | ArrayBuffer>(file: Blob, asText: boolean): Promise<T> => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as T);\n reader.onerror = () => reject(reader.error ?? new Error('The file could not be read.'));\n if (asText) {\n reader.readAsText(file);\n } else {\n reader.readAsArrayBuffer(file);\n }\n});\n\nexport const readFileAsText = (file: Blob): Promise<string> => readFile<string>(file, true);\n\nexport const readFileAsArrayBuffer = (file: Blob): Promise<ArrayBuffer> => readFile<ArrayBuffer>(file, false);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAIC,QAAgB,IAAa;EAC5D,MAAMC,IAAI,GAAG,CAACD,QAAQ,CAACE,KAAK,CAAC,OAAO,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAEC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EACzE,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,WAAW,CAAC,GAAG,CAAC;EACtC,OAAOD,QAAQ,GAAG,CAAC,GAAGJ,IAAI,CAACM,KAAK,CAACF,QAAQ,GAAG,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAG,EAAE;AACnE,CAAC;;AAED;AAAAC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA;AACA,MAAMW,cAAc,GAAG,mBAAmB;;AAE1C;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAIC,GAAW,IAAa;EACtD,IAAIC,QAAgB;EACpB,IAAI;IACFA,QAAQ,GAAG,IAAIC,GAAG,CAACF,GAAG,EAAEF,cAAc,CAAC,CAACG,QAAQ;EAClD,CAAC,CAAC,MAAM;IACNA,QAAQ,GAAGD,GAAG,CAACV,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,IAAI;IACFW,QAAQ,GAAGE,kBAAkB,CAACF,QAAQ,CAAC;EACzC,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAOd,gBAAgB,CAACc,QAAQ,CAAC;AACnC,CAAC;;AAED;AAAAJ,OAAA,CAAAE,eAAA,GAAAA,eAAA;AACA,MAAMK,QAAQ,GAAGA,CAAiCC,IAAU,EAAEC,MAAe,KAAiB,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;EAC7H,MAAMC,MAAM,GAAG,IAAIC,UAAU,CAAC,CAAC;EAC/BD,MAAM,CAACE,MAAM,GAAG,MAAMJ,OAAO,CAACE,MAAM,CAACG,MAAW,CAAC;EACjDH,MAAM,CAACI,OAAO,GAAG,MAAML,MAAM,CAACC,MAAM,CAACK,KAAK,IAAI,IAAIC,KAAK,CAAC,6BAA6B,CAAC,CAAC;EACvF,IAAIV,MAAM,EAAE;IACVI,MAAM,CAACO,UAAU,CAACZ,IAAI,CAAC;EACzB,CAAC,MAAM;IACLK,MAAM,CAACQ,iBAAiB,CAACb,IAAI,CAAC;EAChC;AACF,CAAC,CAAC;AAEK,MAAMc,cAAc,GAAId,IAAU,IAAsBD,QAAQ,CAASC,IAAI,EAAE,IAAI,CAAC;AAACR,OAAA,CAAAsB,cAAA,GAAAA,cAAA;AAErF,MAAMC,qBAAqB,GAAIf,IAAU,IAA2BD,QAAQ,CAAcC,IAAI,EAAE,KAAK,CAAC;AAACR,OAAA,CAAAuB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -213,6 +213,12 @@ Object.defineProperty(exports, "getCharacterCount", {
|
|
|
213
213
|
return _stringHelpers.getCharacterCount;
|
|
214
214
|
}
|
|
215
215
|
});
|
|
216
|
+
Object.defineProperty(exports, "getFileExtension", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function () {
|
|
219
|
+
return _fileHelpers.getFileExtension;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
216
222
|
Object.defineProperty(exports, "getInitialsOrAcronym", {
|
|
217
223
|
enumerable: true,
|
|
218
224
|
get: function () {
|
|
@@ -261,6 +267,12 @@ Object.defineProperty(exports, "getNumberAbbreviation", {
|
|
|
261
267
|
return _formatters.getNumberAbbreviation;
|
|
262
268
|
}
|
|
263
269
|
});
|
|
270
|
+
Object.defineProperty(exports, "getPreferredScrollBehavior", {
|
|
271
|
+
enumerable: true,
|
|
272
|
+
get: function () {
|
|
273
|
+
return _interactionsHelper.getPreferredScrollBehavior;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
264
276
|
Object.defineProperty(exports, "getRandomBetweenExclusive", {
|
|
265
277
|
enumerable: true,
|
|
266
278
|
get: function () {
|
|
@@ -291,6 +303,18 @@ Object.defineProperty(exports, "getRoundedMedian", {
|
|
|
291
303
|
return _arrayHelpers.getRoundedMedian;
|
|
292
304
|
}
|
|
293
305
|
});
|
|
306
|
+
Object.defineProperty(exports, "getScrollSettings", {
|
|
307
|
+
enumerable: true,
|
|
308
|
+
get: function () {
|
|
309
|
+
return _interactionsHelper.getScrollSettings;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
Object.defineProperty(exports, "getUrlExtension", {
|
|
313
|
+
enumerable: true,
|
|
314
|
+
get: function () {
|
|
315
|
+
return _fileHelpers.getUrlExtension;
|
|
316
|
+
}
|
|
317
|
+
});
|
|
294
318
|
Object.defineProperty(exports, "hashCode", {
|
|
295
319
|
enumerable: true,
|
|
296
320
|
get: function () {
|
|
@@ -411,6 +435,24 @@ Object.defineProperty(exports, "pluralizeIfNeeded", {
|
|
|
411
435
|
return _stringHelpers.pluralizeIfNeeded;
|
|
412
436
|
}
|
|
413
437
|
});
|
|
438
|
+
Object.defineProperty(exports, "prefersReducedMotion", {
|
|
439
|
+
enumerable: true,
|
|
440
|
+
get: function () {
|
|
441
|
+
return _interactionsHelper.prefersReducedMotion;
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
Object.defineProperty(exports, "readFileAsArrayBuffer", {
|
|
445
|
+
enumerable: true,
|
|
446
|
+
get: function () {
|
|
447
|
+
return _fileHelpers.readFileAsArrayBuffer;
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
Object.defineProperty(exports, "readFileAsText", {
|
|
451
|
+
enumerable: true,
|
|
452
|
+
get: function () {
|
|
453
|
+
return _fileHelpers.readFileAsText;
|
|
454
|
+
}
|
|
455
|
+
});
|
|
414
456
|
Object.defineProperty(exports, "renderIcon", {
|
|
415
457
|
enumerable: true,
|
|
416
458
|
get: function () {
|
|
@@ -470,6 +512,8 @@ var _arrayHelpers = require("./arrayHelpers");
|
|
|
470
512
|
var _dataHelpers = require("./dataHelpers");
|
|
471
513
|
var _dateHelpers = require("./dateHelpers");
|
|
472
514
|
var _formatters = require("./formatters");
|
|
515
|
+
var _fileHelpers = require("./fileHelpers");
|
|
516
|
+
var _interactionsHelper = require("./interactionsHelper");
|
|
473
517
|
var _numberHelpers = require("./numberHelpers");
|
|
474
518
|
var _stringHelpers = require("./stringHelpers");
|
|
475
519
|
var _objectHelpers = require("./objectHelpers");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_ageHelpers","require","_arrayHelpers","_dataHelpers","_dateHelpers","_formatters","_numberHelpers","_stringHelpers","_objectHelpers","_iconHelpers"],"sources":["../../../src/helpers/index.ts"],"sourcesContent":["export {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './dataHelpers';\nexport type { NamePieces } from './dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './dateHelpers';\n\nexport {\n USER_CURRENCY,\n intlCurrencyFormatter,\n intlNumberFormatter,\n formatNumberForLocale,\n formatAsCurrencyForLocale,\n getNumberAbbreviation,\n formatRoundedNumberWithAbbreviation,\n formatNumberWithAbbreviation,\n formatNumberForChartAxis,\n formatAsSimpleCurrencyForChartAxis,\n formatAsInternationalCurrencyForChartAxis,\n formatAsCurrencyWithAbbreviation,\n formatFileSize\n} from './formatters';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n getCharacterCount,\n clampToGraphemeMax,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './stringHelpers';\n\nexport {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n} from './objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './iconHelpers';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_ageHelpers","require","_arrayHelpers","_dataHelpers","_dateHelpers","_formatters","_fileHelpers","_interactionsHelper","_numberHelpers","_stringHelpers","_objectHelpers","_iconHelpers"],"sources":["../../../src/helpers/index.ts"],"sourcesContent":["export {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './dataHelpers';\nexport type { NamePieces } from './dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './dateHelpers';\n\nexport {\n USER_CURRENCY,\n intlCurrencyFormatter,\n intlNumberFormatter,\n formatNumberForLocale,\n formatAsCurrencyForLocale,\n getNumberAbbreviation,\n formatRoundedNumberWithAbbreviation,\n formatNumberWithAbbreviation,\n formatNumberForChartAxis,\n formatAsSimpleCurrencyForChartAxis,\n formatAsInternationalCurrencyForChartAxis,\n formatAsCurrencyWithAbbreviation,\n formatFileSize\n} from './formatters';\n\nexport {\n getFileExtension,\n getUrlExtension,\n readFileAsText,\n readFileAsArrayBuffer\n} from './fileHelpers';\n\nexport {\n prefersReducedMotion,\n getPreferredScrollBehavior,\n getScrollSettings\n} from './interactionsHelper';\nexport type { ScrollSettings } from './interactionsHelper';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n getCharacterCount,\n clampToGraphemeMax,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './stringHelpers';\n\nexport {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n} from './objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './iconHelpers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAUA,IAAAC,aAAA,GAAAD,OAAA;AAYA,IAAAE,YAAA,GAAAF,OAAA;AAMA,IAAAG,YAAA,GAAAH,OAAA;AAYA,IAAAI,WAAA,GAAAJ,OAAA;AAgBA,IAAAK,YAAA,GAAAL,OAAA;AAOA,IAAAM,mBAAA,GAAAN,OAAA;AAOA,IAAAO,cAAA,GAAAP,OAAA;AAUA,IAAAQ,cAAA,GAAAR,OAAA;AAcA,IAAAS,cAAA,GAAAT,OAAA;AAuBA,IAAAU,YAAA,GAAAV,OAAA","ignoreList":[]}
|
|
@@ -3,7 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getScrollSettings = void 0;
|
|
6
|
+
exports.prefersReducedMotion = exports.getScrollSettings = exports.getPreferredScrollBehavior = void 0;
|
|
7
|
+
// True when the user has asked the operating system to minimise non-essential motion.
|
|
8
|
+
const prefersReducedMotion = () => typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;
|
|
9
|
+
|
|
10
|
+
// Scroll behaviour for scrollIntoView / scrollTo that respects the reduced-motion preference.
|
|
11
|
+
exports.prefersReducedMotion = prefersReducedMotion;
|
|
12
|
+
const getPreferredScrollBehavior = () => prefersReducedMotion() ? 'auto' : 'smooth';
|
|
13
|
+
exports.getPreferredScrollBehavior = getPreferredScrollBehavior;
|
|
7
14
|
const getScrollSettings = event => {
|
|
8
15
|
const domNode = event.target;
|
|
9
16
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionsHelper.js","names":["getScrollSettings","event","domNode","target","scrollHeight","clientHeight","scrollLeft","scrollTop","scrollWidth","clientWidth","hasVerticalScroller","hasHorizontalScroller","scrollerAtBottom","scrollerAtTop","scrollerAtLeft","scrollerAtRight"
|
|
1
|
+
{"version":3,"file":"interactionsHelper.js","names":["prefersReducedMotion","window","matchMedia","matches","exports","getPreferredScrollBehavior","getScrollSettings","event","domNode","target","scrollHeight","clientHeight","scrollLeft","scrollTop","scrollWidth","clientWidth","hasVerticalScroller","hasHorizontalScroller","scrollerAtBottom","scrollerAtTop","scrollerAtLeft","scrollerAtRight"],"sources":["../../../src/helpers/interactionsHelper.ts"],"sourcesContent":["// True when the user has asked the operating system to minimise non-essential motion.\nexport const prefersReducedMotion = (): boolean =>\n typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;\n\n// Scroll behaviour for scrollIntoView / scrollTo that respects the reduced-motion preference.\nexport const getPreferredScrollBehavior = (): ScrollBehavior => (prefersReducedMotion() ? 'auto' : 'smooth');\n\nexport interface ScrollSettings {\n scrollHeight: number;\n clientHeight: number;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n clientWidth: number;\n hasVerticalScroller: boolean;\n hasHorizontalScroller: boolean;\n scrollerAtBottom: boolean;\n scrollerAtTop: boolean;\n scrollerAtLeft: boolean;\n scrollerAtRight: boolean;\n event: Event;\n}\n\nexport const getScrollSettings = (event: Event): ScrollSettings => {\n const domNode = event.target as HTMLElement;\n\n const {\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollTop,\n scrollWidth,\n clientWidth\n } = domNode;\n\n const hasVerticalScroller = scrollHeight > clientHeight;\n const hasHorizontalScroller = scrollWidth > clientWidth;\n\n const scrollerAtBottom = scrollTop + clientHeight + 100 >= scrollHeight;\n const scrollerAtTop = scrollTop <= 0;\n const scrollerAtLeft = scrollLeft <= 0;\n const scrollerAtRight = scrollLeft + clientWidth + 100 >= scrollWidth;\n\n return {\n scrollHeight,\n scrollLeft,\n clientHeight,\n clientWidth,\n hasVerticalScroller,\n hasHorizontalScroller,\n scrollTop,\n scrollWidth,\n scrollerAtBottom,\n scrollerAtTop,\n scrollerAtLeft,\n scrollerAtRight,\n event\n } as ScrollSettings;\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,oBAAoB,GAAGA,CAAA,KAClC,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,UAAU,GAAG,kCAAkC,CAAC,CAACC,OAAO,KAAK,IAAI;;AAE3G;AAAAC,OAAA,CAAAJ,oBAAA,GAAAA,oBAAA;AACO,MAAMK,0BAA0B,GAAGA,CAAA,KAAuBL,oBAAoB,CAAC,CAAC,GAAG,MAAM,GAAG,QAAS;AAACI,OAAA,CAAAC,0BAAA,GAAAA,0BAAA;AAkBtG,MAAMC,iBAAiB,GAAIC,KAAY,IAAqB;EACjE,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAqB;EAE3C,MAAM;IACJC,YAAY;IACZC,YAAY;IACZC,UAAU;IACVC,SAAS;IACTC,WAAW;IACXC;EACF,CAAC,GAAGP,OAAO;EAEX,MAAMQ,mBAAmB,GAAGN,YAAY,GAAGC,YAAY;EACvD,MAAMM,qBAAqB,GAAGH,WAAW,GAAGC,WAAW;EAEvD,MAAMG,gBAAgB,GAAGL,SAAS,GAAGF,YAAY,GAAG,GAAG,IAAID,YAAY;EACvE,MAAMS,aAAa,GAAGN,SAAS,IAAI,CAAC;EACpC,MAAMO,cAAc,GAAGR,UAAU,IAAI,CAAC;EACtC,MAAMS,eAAe,GAAGT,UAAU,GAAGG,WAAW,GAAG,GAAG,IAAID,WAAW;EAErE,OAAO;IACLJ,YAAY;IACZE,UAAU;IACVD,YAAY;IACZI,WAAW;IACXC,mBAAmB;IACnBC,qBAAqB;IACrBJ,SAAS;IACTC,WAAW;IACXI,gBAAgB;IAChBC,aAAa;IACbC,cAAc;IACdC,eAAe;IACfd;EACF,CAAC;AACH,CAAC;AAACH,OAAA,CAAAE,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -140,25 +140,39 @@ const makeInheritanceObject = ({
|
|
|
140
140
|
return `{${inheritanceObjectPieces.join(', ')}}`;
|
|
141
141
|
};
|
|
142
142
|
exports.makeInheritanceObject = makeInheritanceObject;
|
|
143
|
+
// Path segments that would reach an object's prototype rather than its own data.
|
|
144
|
+
const PROTOTYPE_PATH_SEGMENTS = new Set(['__proto__', 'prototype', 'constructor']);
|
|
145
|
+
|
|
146
|
+
/*
|
|
147
|
+
Sets a value at a dot-separated path, creating any missing intermediate objects. Paths often come
|
|
148
|
+
from form field names or JSON keys, so segments that would reach a prototype are rejected:
|
|
149
|
+
otherwise "__proto__.isAdmin" would set isAdmin on every object in the application.
|
|
150
|
+
*/
|
|
143
151
|
const updateNestedProperty = ({
|
|
144
152
|
jsonObject,
|
|
145
153
|
propertyPath,
|
|
146
154
|
newValue
|
|
147
155
|
}) => {
|
|
148
156
|
const pathPieces = propertyPath.split('.');
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
jsonObject[propertyPath] = newValue;
|
|
152
|
-
return jsonObject;
|
|
157
|
+
if (pathPieces.some(piece => PROTOTYPE_PATH_SEGMENTS.has(piece))) {
|
|
158
|
+
throw new TypeError(`Refusing to update a prototype through the path "${propertyPath}".`);
|
|
153
159
|
}
|
|
154
160
|
let currentBranch = jsonObject;
|
|
155
|
-
pathPieces.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
161
|
+
pathPieces.slice(0, -1).forEach(piece => {
|
|
162
|
+
const descriptor = Object.getOwnPropertyDescriptor(currentBranch, piece);
|
|
163
|
+
let nextBranch = descriptor?.value;
|
|
164
|
+
if (!descriptor || typeof nextBranch !== 'object' || nextBranch === null) {
|
|
165
|
+
nextBranch = {};
|
|
166
|
+
Object.defineProperty(currentBranch, piece, {
|
|
167
|
+
value: nextBranch,
|
|
168
|
+
writable: true,
|
|
169
|
+
enumerable: true,
|
|
170
|
+
configurable: true
|
|
171
|
+
});
|
|
160
172
|
}
|
|
173
|
+
currentBranch = nextBranch;
|
|
161
174
|
});
|
|
175
|
+
currentBranch[pathPieces[pathPieces.length - 1]] = newValue;
|
|
162
176
|
return jsonObject;
|
|
163
177
|
};
|
|
164
178
|
exports.updateNestedProperty = updateNestedProperty;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectHelpers.js","names":["_react","_interopRequireDefault","require","_stringHelpers","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","exports","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","React","isValidElement","isNonElementObject","isPlainObject","Date","RegExp","proto","getPrototypeOf","prototype","deepMergeObjects","baseObject","overrideObject","mergeDeep","objects","reduce","acc","forEach","prev","next","overrideMergeObjects","mergeOverride","pVal","oVal","makeInheritanceObject","base","valueOnly","baseObjectName","compare","propPath","excludePropSpread","createSpreader","length","join","requiresSpreader","indexOf","inheritanceObjectPieces","push","entries","updateNestedProperty","jsonObject","propertyPath","newValue","pathPieces","split","numPieces","currentBranch","piece","index","filterObject","filter","result","branchAsString","search","caseSensitive","branchTestString","toLowerCase","searchTerm","isKeyAndValueMatch","test","values","keyCheck","toString","valueCheck","testAsString","includes","subResult","getArrayOfObjectKeys","objectKeys","Set","getArrayOfReadableObjectKeys","objectKeysArray","map","objectKey","splitCamelCase","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj","_default","default"],"sources":["../../../src/helpers/objectHelpers.ts"],"sourcesContent":["import React from 'react';\nimport { JSONObject, JSONValue } from '../interfaces/generic.interface';\nimport { splitCamelCase } from './stringHelpers';\n\nexport const objectsAreTheSame = (obj1: object, obj2: object): boolean => {\n const JsonStringifySorted = (obj: object): string => {\n const keys: { [key: string]: null } = {};\n JSON.stringify(obj, (key, value) => {\n keys[key] = null;\n return value;\n });\n return JSON.stringify(obj, Object.keys(keys).sort());\n };\n return JsonStringifySorted(obj1) === JsonStringifySorted(obj2);\n};\n\nexport const isAnObject = (value: unknown): boolean => value !== null && typeof value !== 'undefined' && !Array.isArray(value) && typeof value === 'object';\n\nexport const createCompareValueOverride = (key: string, compareValue: any): string => `${ key }:${ JSON.stringify(compareValue) }`;\n\nexport interface DeepMergeObjectsArgs {\n baseObject: Record<string, any>;\n overrideObject: Record<string, any>;\n}\n\nexport const isReactElement = (val: unknown): val is React.ReactElement =>\n !!val && React.isValidElement(val);\n\n\nexport const isNonElementObject = (value: unknown): value is Record<string, unknown> => (\n value !== null\n && typeof value === 'object'\n && !Array.isArray(value)\n && !React.isValidElement(value)\n);\n\nexport const isPlainObject = (val: unknown): val is Record<string, unknown> => {\n if (val === null || typeof val !== 'object') return false;\n if (isReactElement(val)) return false;\n if (Array.isArray(val)) return false;\n if (val instanceof Date || val instanceof RegExp) return false;\n const proto = Object.getPrototypeOf(val);\n return proto === Object.prototype || proto === null;\n};\n\nexport function deepMergeObjects<T extends object, U extends object>(\n { baseObject, overrideObject }: DeepMergeObjectsArgs\n): T & U {\n const mergeDeep = (...objects: object[]): any =>\n objects.reduce<Record<string, any>>((acc, obj) => {\n Object.keys(obj).forEach((key) => {\n const prev = acc[key];\n const next = (obj as any)[key];\n\n // If either side is a React element, treat as opaque: override wins.\n if (isReactElement(prev) || isReactElement(next)) {\n acc[key] = next;\n return;\n }\n\n // Arrays: concat\n if (Array.isArray(prev) && Array.isArray(next)) {\n acc[key] = [...prev, ...next];\n return;\n }\n\n // Plain objects: recurse\n if (isPlainObject(prev) && isPlainObject(next)) {\n acc[key] = mergeDeep(prev, next);\n return;\n }\n\n // Everything else (including ReactNode primitives, functions, Dates, etc.): override\n acc[key] = next;\n });\n return acc;\n }, {});\n\n return mergeDeep(baseObject ?? {}, overrideObject ?? {}) as T & U;\n}\n\nexport const overrideMergeObjects = ({ baseObject, overrideObject }: DeepMergeObjectsArgs): object => {\n const mergeOverride = (...objects: object[]): object => objects.reduce((prev: any, obj: any) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = oVal;\n } else if (isAnObject(pVal) && isAnObject(oVal)) {\n prev[key] = mergeOverride(pVal, oVal);\n } else if (pVal && !oVal) {\n prev[key] = pVal;\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n\n return mergeOverride(baseObject, overrideObject);\n};\n\nexport interface MakeInheritanceObjectArgs {\n base: { [key: string] : any };\n valueOnly?: boolean;\n baseObjectName: string;\n compare: object;\n propPath?: string[];\n excludePropSpread?: string[];\n}\n\nexport const makeInheritanceObject = (\n {\n base,\n valueOnly = false,\n baseObjectName,\n compare,\n propPath = [],\n excludePropSpread = []\n }: MakeInheritanceObjectArgs\n): string => {\n const createSpreader = (): string => {\n if (propPath.length > 0) {\n return `...${ baseObjectName }.${ propPath.join('.') }`;\n }\n return `...${ baseObjectName }`;\n };\n\n const requiresSpreader = (): boolean => {\n if (valueOnly) return false;\n if (propPath.length > 0 && excludePropSpread.length > 0) {\n return excludePropSpread.indexOf(propPath[propPath.length - 1]) === -1;\n }\n return true;\n };\n\n const inheritanceObjectPieces: string[] = [];\n if (requiresSpreader()) {\n inheritanceObjectPieces.push(createSpreader());\n }\n\n Object.entries(compare).forEach(([key, compareValue]) => {\n if (!(key in base)) {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n } else if (typeof base[key] !== 'undefined' && !objectsAreTheSame(base[key], compareValue)) {\n if (isAnObject(compareValue)) {\n inheritanceObjectPieces.push(\n `${ key }:${\n makeInheritanceObject({\n base: base[key],\n baseObjectName,\n compare: compareValue,\n propPath: [...propPath, key],\n excludePropSpread\n })\n }`\n );\n } else {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n }\n }\n });\n\n return `{${ inheritanceObjectPieces.join(', ') }}`;\n};\n\nexport interface UpdateNestedPropertyArgs {\n jsonObject: Record<string, any>;\n propertyPath: string;\n newValue: any;\n}\n\nexport const updateNestedProperty = ({ jsonObject, propertyPath, newValue }: UpdateNestedPropertyArgs): object => {\n const pathPieces = propertyPath.split('.');\n const numPieces = pathPieces.length;\n\n if (numPieces === 1) {\n jsonObject[propertyPath] = newValue;\n return jsonObject;\n }\n\n let currentBranch = jsonObject;\n\n pathPieces.forEach((piece, index) => {\n if (index === numPieces - 1) {\n currentBranch[piece] = newValue;\n } else if (currentBranch[piece]) {\n currentBranch = currentBranch[piece];\n }\n });\n\n return jsonObject;\n};\n\nexport const filterObject = (jsonObject: JSONObject, filter: {\n search: string | number | { [key: string]: string | number | boolean };\n caseSensitive?: boolean;\n}): JSONObject | false => {\n const result: JSONObject = {};\n\n // TODO: Handle key/value filter\n const branchAsString = JSON.stringify(jsonObject);\n const {\n search,\n caseSensitive\n } = filter;\n\n const branchTestString = caseSensitive ? branchAsString : branchAsString.toLowerCase();\n const searchTerm = caseSensitive || typeof search !== 'string' ? search : search.toLowerCase();\n\n const isKeyAndValueMatch = (test: JSONValue | string) => {\n const key = Object.keys(search)[0];\n const value = Object.values(search)[0];\n\n const keyCheck = caseSensitive ? key : key.toString().toLowerCase();\n\n const valueCheck = caseSensitive ? value : value.toString().toLowerCase();\n\n const testAsString = typeof test === 'string' ? test : JSON.stringify(test);\n\n return testAsString.includes(keyCheck) && testAsString.includes(valueCheck);\n };\n\n // Do some fast checks and fail immediately if no match\n if (typeof search === 'object') { // Key value search\n if (!isKeyAndValueMatch(branchTestString)) {\n return false;\n }\n } else if (!branchTestString.includes(searchTerm.toString())) {\n return false;\n }\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n // Check if the key or value contains the search term\n\n const keyCheck = caseSensitive ? key : key.toLowerCase();\n const valueCheck = caseSensitive ? value : value?.toString().toLowerCase();\n\n if (typeof value === 'object' && value !== null) {\n // Recursively search if the value is an object or array\n const subResult = filterObject(value as JSONObject, filter);\n if (subResult && Object.keys(subResult).length > 0) {\n result[key] = subResult;\n }\n } else if (typeof search === 'object') {\n if (isKeyAndValueMatch({ key, value })) {\n result[key] = value;\n }\n } else if (keyCheck.includes(searchTerm.toString()) || valueCheck?.toString().includes(searchTerm.toString())) {\n result[key] = value;\n }\n });\n\n return Object.keys(result).length > 0 ? result : false;\n};\n\nexport const getArrayOfObjectKeys = (jsonObject: JSONObject) => {\n let objectKeys: string[] = [];\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n objectKeys.push(key);\n if (typeof value === 'object' && value !== null) {\n const subResult = getArrayOfObjectKeys(value as JSONObject);\n objectKeys = [...objectKeys, ...subResult];\n }\n });\n\n return [...new Set(objectKeys)];\n};\n\nexport const getArrayOfReadableObjectKeys = (jsonObject: JSONObject) => {\n const objectKeysArray = getArrayOfObjectKeys(jsonObject);\n return objectKeysArray.map((objectKey) => splitCamelCase(objectKey));\n};\n\nexport const getBranchFromPath = (obj: any, path: string[]): any => path.reduce((currentBranch, key) => currentBranch?.[key], obj);\n\nexport const deepRemoveProps = (obj: any, propsToRemove: string[]): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => deepRemoveProps(item, propsToRemove));\n } else if (isAnObject(obj) && obj !== null) {\n const newObj: any = {};\n Object.entries(obj).forEach(([key, value]) => {\n if (!propsToRemove.includes(key)) {\n newObj[key] = deepRemoveProps(value, propsToRemove);\n }\n });\n return newObj;\n }\n return obj;\n};\n\nexport default {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"objectHelpers.js","names":["_react","_interopRequireDefault","require","_stringHelpers","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","exports","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","React","isValidElement","isNonElementObject","isPlainObject","Date","RegExp","proto","getPrototypeOf","prototype","deepMergeObjects","baseObject","overrideObject","mergeDeep","objects","reduce","acc","forEach","prev","next","overrideMergeObjects","mergeOverride","pVal","oVal","makeInheritanceObject","base","valueOnly","baseObjectName","compare","propPath","excludePropSpread","createSpreader","length","join","requiresSpreader","indexOf","inheritanceObjectPieces","push","entries","PROTOTYPE_PATH_SEGMENTS","Set","updateNestedProperty","jsonObject","propertyPath","newValue","pathPieces","split","some","piece","has","TypeError","currentBranch","slice","descriptor","getOwnPropertyDescriptor","nextBranch","defineProperty","writable","enumerable","configurable","filterObject","filter","result","branchAsString","search","caseSensitive","branchTestString","toLowerCase","searchTerm","isKeyAndValueMatch","test","values","keyCheck","toString","valueCheck","testAsString","includes","subResult","getArrayOfObjectKeys","objectKeys","getArrayOfReadableObjectKeys","objectKeysArray","map","objectKey","splitCamelCase","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj","_default","default"],"sources":["../../../src/helpers/objectHelpers.ts"],"sourcesContent":["import React from 'react';\nimport { JSONObject, JSONValue } from '../interfaces/generic.interface';\nimport { splitCamelCase } from './stringHelpers';\n\nexport const objectsAreTheSame = (obj1: object, obj2: object): boolean => {\n const JsonStringifySorted = (obj: object): string => {\n const keys: { [key: string]: null } = {};\n JSON.stringify(obj, (key, value) => {\n keys[key] = null;\n return value;\n });\n return JSON.stringify(obj, Object.keys(keys).sort());\n };\n return JsonStringifySorted(obj1) === JsonStringifySorted(obj2);\n};\n\nexport const isAnObject = (value: unknown): boolean => value !== null && typeof value !== 'undefined' && !Array.isArray(value) && typeof value === 'object';\n\nexport const createCompareValueOverride = (key: string, compareValue: any): string => `${ key }:${ JSON.stringify(compareValue) }`;\n\nexport interface DeepMergeObjectsArgs {\n baseObject: Record<string, any>;\n overrideObject: Record<string, any>;\n}\n\nexport const isReactElement = (val: unknown): val is React.ReactElement =>\n !!val && React.isValidElement(val);\n\n\nexport const isNonElementObject = (value: unknown): value is Record<string, unknown> => (\n value !== null\n && typeof value === 'object'\n && !Array.isArray(value)\n && !React.isValidElement(value)\n);\n\nexport const isPlainObject = (val: unknown): val is Record<string, unknown> => {\n if (val === null || typeof val !== 'object') return false;\n if (isReactElement(val)) return false;\n if (Array.isArray(val)) return false;\n if (val instanceof Date || val instanceof RegExp) return false;\n const proto = Object.getPrototypeOf(val);\n return proto === Object.prototype || proto === null;\n};\n\nexport function deepMergeObjects<T extends object, U extends object>(\n { baseObject, overrideObject }: DeepMergeObjectsArgs\n): T & U {\n const mergeDeep = (...objects: object[]): any =>\n objects.reduce<Record<string, any>>((acc, obj) => {\n Object.keys(obj).forEach((key) => {\n const prev = acc[key];\n const next = (obj as any)[key];\n\n // If either side is a React element, treat as opaque: override wins.\n if (isReactElement(prev) || isReactElement(next)) {\n acc[key] = next;\n return;\n }\n\n // Arrays: concat\n if (Array.isArray(prev) && Array.isArray(next)) {\n acc[key] = [...prev, ...next];\n return;\n }\n\n // Plain objects: recurse\n if (isPlainObject(prev) && isPlainObject(next)) {\n acc[key] = mergeDeep(prev, next);\n return;\n }\n\n // Everything else (including ReactNode primitives, functions, Dates, etc.): override\n acc[key] = next;\n });\n return acc;\n }, {});\n\n return mergeDeep(baseObject ?? {}, overrideObject ?? {}) as T & U;\n}\n\nexport const overrideMergeObjects = ({ baseObject, overrideObject }: DeepMergeObjectsArgs): object => {\n const mergeOverride = (...objects: object[]): object => objects.reduce((prev: any, obj: any) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = oVal;\n } else if (isAnObject(pVal) && isAnObject(oVal)) {\n prev[key] = mergeOverride(pVal, oVal);\n } else if (pVal && !oVal) {\n prev[key] = pVal;\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n\n return mergeOverride(baseObject, overrideObject);\n};\n\nexport interface MakeInheritanceObjectArgs {\n base: { [key: string] : any };\n valueOnly?: boolean;\n baseObjectName: string;\n compare: object;\n propPath?: string[];\n excludePropSpread?: string[];\n}\n\nexport const makeInheritanceObject = (\n {\n base,\n valueOnly = false,\n baseObjectName,\n compare,\n propPath = [],\n excludePropSpread = []\n }: MakeInheritanceObjectArgs\n): string => {\n const createSpreader = (): string => {\n if (propPath.length > 0) {\n return `...${ baseObjectName }.${ propPath.join('.') }`;\n }\n return `...${ baseObjectName }`;\n };\n\n const requiresSpreader = (): boolean => {\n if (valueOnly) return false;\n if (propPath.length > 0 && excludePropSpread.length > 0) {\n return excludePropSpread.indexOf(propPath[propPath.length - 1]) === -1;\n }\n return true;\n };\n\n const inheritanceObjectPieces: string[] = [];\n if (requiresSpreader()) {\n inheritanceObjectPieces.push(createSpreader());\n }\n\n Object.entries(compare).forEach(([key, compareValue]) => {\n if (!(key in base)) {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n } else if (typeof base[key] !== 'undefined' && !objectsAreTheSame(base[key], compareValue)) {\n if (isAnObject(compareValue)) {\n inheritanceObjectPieces.push(\n `${ key }:${\n makeInheritanceObject({\n base: base[key],\n baseObjectName,\n compare: compareValue,\n propPath: [...propPath, key],\n excludePropSpread\n })\n }`\n );\n } else {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n }\n }\n });\n\n return `{${ inheritanceObjectPieces.join(', ') }}`;\n};\n\nexport interface UpdateNestedPropertyArgs {\n jsonObject: Record<string, any>;\n propertyPath: string;\n newValue: any;\n}\n\n// Path segments that would reach an object's prototype rather than its own data.\nconst PROTOTYPE_PATH_SEGMENTS = new Set(['__proto__', 'prototype', 'constructor']);\n\n/*\n Sets a value at a dot-separated path, creating any missing intermediate objects. Paths often come\n from form field names or JSON keys, so segments that would reach a prototype are rejected:\n otherwise \"__proto__.isAdmin\" would set isAdmin on every object in the application.\n */\nexport const updateNestedProperty = ({ jsonObject, propertyPath, newValue }: UpdateNestedPropertyArgs): object => {\n const pathPieces = propertyPath.split('.');\n if (pathPieces.some((piece) => PROTOTYPE_PATH_SEGMENTS.has(piece))) {\n throw new TypeError(`Refusing to update a prototype through the path \"${ propertyPath }\".`);\n }\n\n let currentBranch = jsonObject;\n pathPieces.slice(0, -1).forEach((piece) => {\n const descriptor = Object.getOwnPropertyDescriptor(currentBranch, piece);\n let nextBranch = descriptor?.value;\n if (!descriptor || typeof nextBranch !== 'object' || nextBranch === null) {\n nextBranch = {};\n Object.defineProperty(currentBranch, piece, {\n value: nextBranch,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n currentBranch = nextBranch;\n });\n currentBranch[pathPieces[pathPieces.length - 1]] = newValue;\n\n return jsonObject;\n};\n\nexport const filterObject = (jsonObject: JSONObject, filter: {\n search: string | number | { [key: string]: string | number | boolean };\n caseSensitive?: boolean;\n}): JSONObject | false => {\n const result: JSONObject = {};\n\n // TODO: Handle key/value filter\n const branchAsString = JSON.stringify(jsonObject);\n const {\n search,\n caseSensitive\n } = filter;\n\n const branchTestString = caseSensitive ? branchAsString : branchAsString.toLowerCase();\n const searchTerm = caseSensitive || typeof search !== 'string' ? search : search.toLowerCase();\n\n const isKeyAndValueMatch = (test: JSONValue | string) => {\n const key = Object.keys(search)[0];\n const value = Object.values(search)[0];\n\n const keyCheck = caseSensitive ? key : key.toString().toLowerCase();\n\n const valueCheck = caseSensitive ? value : value.toString().toLowerCase();\n\n const testAsString = typeof test === 'string' ? test : JSON.stringify(test);\n\n return testAsString.includes(keyCheck) && testAsString.includes(valueCheck);\n };\n\n // Do some fast checks and fail immediately if no match\n if (typeof search === 'object') { // Key value search\n if (!isKeyAndValueMatch(branchTestString)) {\n return false;\n }\n } else if (!branchTestString.includes(searchTerm.toString())) {\n return false;\n }\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n // Check if the key or value contains the search term\n\n const keyCheck = caseSensitive ? key : key.toLowerCase();\n const valueCheck = caseSensitive ? value : value?.toString().toLowerCase();\n\n if (typeof value === 'object' && value !== null) {\n // Recursively search if the value is an object or array\n const subResult = filterObject(value as JSONObject, filter);\n if (subResult && Object.keys(subResult).length > 0) {\n result[key] = subResult;\n }\n } else if (typeof search === 'object') {\n if (isKeyAndValueMatch({ key, value })) {\n result[key] = value;\n }\n } else if (keyCheck.includes(searchTerm.toString()) || valueCheck?.toString().includes(searchTerm.toString())) {\n result[key] = value;\n }\n });\n\n return Object.keys(result).length > 0 ? result : false;\n};\n\nexport const getArrayOfObjectKeys = (jsonObject: JSONObject) => {\n let objectKeys: string[] = [];\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n objectKeys.push(key);\n if (typeof value === 'object' && value !== null) {\n const subResult = getArrayOfObjectKeys(value as JSONObject);\n objectKeys = [...objectKeys, ...subResult];\n }\n });\n\n return [...new Set(objectKeys)];\n};\n\nexport const getArrayOfReadableObjectKeys = (jsonObject: JSONObject) => {\n const objectKeysArray = getArrayOfObjectKeys(jsonObject);\n return objectKeysArray.map((objectKey) => splitCamelCase(objectKey));\n};\n\nexport const getBranchFromPath = (obj: any, path: string[]): any => path.reduce((currentBranch, key) => currentBranch?.[key], obj);\n\nexport const deepRemoveProps = (obj: any, propsToRemove: string[]): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => deepRemoveProps(item, propsToRemove));\n } else if (isAnObject(obj) && obj !== null) {\n const newObj: any = {};\n Object.entries(obj).forEach(([key, value]) => {\n if (!propsToRemove.includes(key)) {\n newObj[key] = deepRemoveProps(value, propsToRemove);\n }\n });\n return newObj;\n }\n return obj;\n};\n\nexport default {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,14 +5,70 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.useAnInsteadOfA = exports.splitCamelCase = exports.richTextParser = exports.pluralizeIfNeeded = exports.pluralize = exports.lowerCaseFirstLetter = exports.getInitialsOrAcronym = exports.getCharacterCount = exports.clampToGraphemeMax = exports.capitalizeFirstLetter = exports.capitalize = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _htmlReactParser = _interopRequireWildcard(require("html-react-parser"));
|
|
10
|
+
var _urlHelpers = require("./urlHelpers");
|
|
11
|
+
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); }
|
|
12
|
+
/*
|
|
13
|
+
Rich text is often stored content (a CMS or database field), so it is filtered against an
|
|
14
|
+
allowlist while it is parsed. Filtering happens in the parser's own tree, which works identically in
|
|
15
|
+
the browser and during server rendering (DOM-based sanitisers such as DOMPurify do nothing on the
|
|
16
|
+
server, where there is no DOM).
|
|
17
|
+
*/
|
|
18
|
+
const ALLOWED_TAGS = new Set(['a', 'abbr', 'b', 'blockquote', 'br', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dl', 'dt', 'em', 'figcaption', 'figure', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'mark', 'ol', 'p', 'pre', 'q', 's', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'time', 'tr', 'u', 'ul']);
|
|
19
|
+
|
|
20
|
+
// Removed together with their content; any other unknown element is unwrapped and its text kept.
|
|
21
|
+
const REMOVED_TAGS = new Set(['applet', 'base', 'button', 'embed', 'form', 'frame', 'frameset', 'head', 'iframe', 'input', 'link', 'math', 'meta', 'noscript', 'object', 'option', 'script', 'select', 'style', 'svg', 'template', 'textarea', 'title']);
|
|
22
|
+
|
|
23
|
+
// `style` (CSS injection) and `id` (DOM clobbering of page globals) are deliberately absent.
|
|
24
|
+
const ALLOWED_ATTRIBUTES = {
|
|
25
|
+
'*': ['class', 'title', 'lang', 'dir'],
|
|
26
|
+
a: ['href', 'target', 'rel'],
|
|
27
|
+
img: ['src', 'alt', 'width', 'height'],
|
|
28
|
+
ol: ['start', 'type'],
|
|
29
|
+
td: ['colspan', 'rowspan'],
|
|
30
|
+
th: ['colspan', 'rowspan', 'scope'],
|
|
31
|
+
time: ['datetime']
|
|
32
|
+
};
|
|
33
|
+
const URL_ATTRIBUTES = new Set(['href', 'src']);
|
|
34
|
+
const sanitiseAttributes = element => {
|
|
35
|
+
const allowed = new Set([...ALLOWED_ATTRIBUTES['*'], ...(ALLOWED_ATTRIBUTES[element.name] ?? [])]);
|
|
36
|
+
Object.keys(element.attribs).forEach(name => {
|
|
37
|
+
const attribute = name.toLowerCase();
|
|
38
|
+
const isSafeUrl = !URL_ATTRIBUTES.has(attribute) || (0, _urlHelpers.getSafeLinkHref)(element.attribs[name]) !== undefined;
|
|
39
|
+
if (!allowed.has(attribute) || !isSafeUrl) {
|
|
40
|
+
delete element.attribs[name];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
if (element.name === 'a' && element.attribs.target !== undefined) {
|
|
44
|
+
if (element.attribs.target === '_blank') {
|
|
45
|
+
// A page opened in a new tab must not be able to navigate this one.
|
|
46
|
+
element.attribs.rel = 'noopener noreferrer';
|
|
47
|
+
} else if (element.attribs.target !== '_self') {
|
|
48
|
+
delete element.attribs.target;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const richTextOptions = {
|
|
53
|
+
replace: domNode => {
|
|
54
|
+
if (!(domNode instanceof _htmlReactParser.Element)) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const tagName = domNode.name.toLowerCase();
|
|
58
|
+
if (REMOVED_TAGS.has(tagName)) {
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment);
|
|
60
|
+
}
|
|
61
|
+
if (!ALLOWED_TAGS.has(tagName)) {
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _htmlReactParser.domToReact)(domNode.children, richTextOptions));
|
|
63
|
+
}
|
|
64
|
+
sanitiseAttributes(domNode);
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
9
68
|
const richTextParser = (richText, supportEscapedCharacters) => {
|
|
10
69
|
// Adjusts text to replace line breaks with <br/> tags
|
|
11
70
|
const adjustedText = richText.split('\r\n').join('<br/>');
|
|
12
|
-
|
|
13
|
-
return (0, _htmlReactParser.default)(adjustedText);
|
|
14
|
-
}
|
|
15
|
-
return (0, _htmlReactParser.default)(richText);
|
|
71
|
+
return (0, _htmlReactParser.default)(supportEscapedCharacters ? adjustedText : richText, richTextOptions);
|
|
16
72
|
};
|
|
17
73
|
|
|
18
74
|
/**
|