carbon-react 148.0.0 → 149.0.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/esm/__internal__/label/label.component.js +4 -1
- package/esm/components/note/note.component.d.ts +1 -2
- package/esm/components/note/note.component.js +6 -9
- package/esm/components/tabs/__internal__/tab-title/tab-title.style.js +2 -1
- package/esm/components/text-editor/__internal__/constants.d.ts +21 -0
- package/esm/components/text-editor/__internal__/constants.js +29 -0
- package/esm/components/text-editor/__internal__/helpers.d.ts +20 -0
- package/esm/components/text-editor/__internal__/helpers.js +84 -0
- package/esm/components/text-editor/__internal__/index.d.ts +2 -0
- package/esm/components/text-editor/__internal__/index.js +2 -0
- package/esm/components/text-editor/__internal__/plugins/AutoLinker/auto-link.component.d.ts +3 -0
- package/esm/components/text-editor/__internal__/plugins/AutoLinker/auto-link.component.js +28 -0
- package/esm/components/text-editor/__internal__/plugins/AutoLinker/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/AutoLinker/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/__test__/character-counter.component.d.ts +10 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/__test__/character-counter.component.js +33 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.component.d.ts +9 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.component.js +59 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.style.d.ts +3 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.style.js +17 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/CharacterCounter/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.d.ts +17 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.js +40 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/content-editor.style.d.ts +6 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/content-editor.style.js +34 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/ContentEditor/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/LinkMonitor/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/LinkMonitor/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/LinkMonitor/link-monitor.plugin.d.ts +2 -0
- package/esm/components/text-editor/__internal__/plugins/LinkMonitor/link-monitor.plugin.js +62 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.d.ts +11 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.js +19 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.style.d.ts +6 -0
- package/esm/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.style.js +29 -0
- package/esm/components/text-editor/__internal__/plugins/OnChange/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/OnChange/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/OnChange/on-change.plugin.d.ts +5 -0
- package/esm/components/text-editor/__internal__/plugins/OnChange/on-change.plugin.js +25 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/index.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/placeholder.component.d.ts +14 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/placeholder.component.js +17 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/placeholder.style.d.ts +2 -0
- package/esm/components/text-editor/__internal__/plugins/Placeholder/placeholder.style.js +8 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/bold.component.d.ts +4 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/bold.component.js +41 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/common.d.ts +6 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/common.js +1 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/index.d.ts +4 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/index.js +4 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/italic.component.d.ts +4 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/italic.component.js +41 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/list.component.d.ts +5 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/list.component.js +317 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/save.component.d.ts +34 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/buttons/save.component.js +29 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/index.d.ts +1 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/toolbar.component.d.ts +12 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/toolbar.component.js +111 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/toolbar.style.d.ts +11 -0
- package/esm/components/text-editor/__internal__/plugins/Toolbar/toolbar.style.js +57 -0
- package/esm/components/text-editor/__internal__/plugins/index.d.ts +9 -0
- package/esm/components/text-editor/__internal__/plugins/index.js +9 -0
- package/esm/components/text-editor/__internal__/plugins/useCursorAtEnd/index.d.ts +2 -0
- package/esm/components/text-editor/__internal__/plugins/useCursorAtEnd/index.js +71 -0
- package/esm/components/text-editor/__internal__/read-only-rte.component.d.ts +4 -0
- package/esm/components/text-editor/__internal__/read-only-rte.component.js +62 -0
- package/esm/components/text-editor/__internal__/style.css +7 -0
- package/esm/components/text-editor/__internal__/utils.d.ts +4 -0
- package/esm/components/text-editor/__internal__/utils.js +14 -0
- package/esm/components/text-editor/index.d.ts +2 -1
- package/esm/components/text-editor/index.js +2 -1
- package/esm/components/text-editor/text-editor.component.d.ts +32 -28
- package/esm/components/text-editor/text-editor.component.js +139 -478
- package/esm/components/text-editor/text-editor.context.d.ts +6 -0
- package/esm/components/text-editor/text-editor.context.js +4 -0
- package/esm/components/text-editor/text-editor.style.d.ts +18 -11
- package/esm/components/text-editor/text-editor.style.js +55 -52
- package/esm/locales/de-de.js +0 -14
- package/esm/locales/en-gb.js +18 -14
- package/esm/locales/es-es.js +0 -14
- package/esm/locales/fr-ca.js +0 -14
- package/esm/locales/fr-fr.js +0 -14
- package/esm/locales/locale.d.ts +14 -14
- package/lib/__internal__/label/label.component.js +3 -0
- package/lib/components/note/note.component.d.ts +1 -2
- package/lib/components/note/note.component.js +6 -9
- package/lib/components/tabs/__internal__/tab-title/tab-title.style.js +2 -1
- package/lib/components/text-editor/__internal__/constants.d.ts +21 -0
- package/lib/components/text-editor/__internal__/constants.js +33 -0
- package/lib/components/text-editor/__internal__/helpers.d.ts +20 -0
- package/lib/components/text-editor/__internal__/helpers.js +91 -0
- package/lib/components/text-editor/__internal__/index.d.ts +2 -0
- package/lib/components/text-editor/__internal__/index.js +26 -0
- package/lib/components/text-editor/__internal__/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/AutoLinker/auto-link.component.d.ts +3 -0
- package/lib/components/text-editor/__internal__/plugins/AutoLinker/auto-link.component.js +36 -0
- package/lib/components/text-editor/__internal__/plugins/AutoLinker/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/{editor-link → plugins/AutoLinker}/index.js +2 -2
- package/lib/components/text-editor/__internal__/{toolbar/toolbar-button → plugins/AutoLinker}/package.json +1 -1
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/__test__/character-counter.component.d.ts +10 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/__test__/character-counter.component.js +42 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.component.d.ts +9 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.component.js +68 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.style.d.ts +3 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.style.js +24 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/index.js +13 -0
- package/lib/components/text-editor/__internal__/plugins/CharacterCounter/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.d.ts +17 -0
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.js +48 -0
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.style.d.ts +6 -0
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.style.js +42 -0
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/{toolbar/toolbar-button → plugins/ContentEditor}/index.js +2 -2
- package/lib/components/text-editor/__internal__/plugins/ContentEditor/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/LinkMonitor/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/{label-wrapper → plugins/LinkMonitor}/index.js +2 -2
- package/lib/components/text-editor/__internal__/plugins/LinkMonitor/link-monitor.plugin.d.ts +2 -0
- package/lib/components/text-editor/__internal__/plugins/LinkMonitor/link-monitor.plugin.js +70 -0
- package/lib/components/text-editor/__internal__/plugins/LinkMonitor/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/index.js +13 -0
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.d.ts +11 -0
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.js +28 -0
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.style.d.ts +6 -0
- package/lib/components/text-editor/__internal__/{toolbar/toolbar-button/toolbar-button.style.js → plugins/LinkPreviewer/link-previewer.style.js} +21 -31
- package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/OnChange/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/plugins/OnChange/index.js +13 -0
- package/lib/components/text-editor/__internal__/plugins/OnChange/on-change.plugin.d.ts +5 -0
- package/lib/components/text-editor/__internal__/plugins/OnChange/on-change.plugin.js +32 -0
- package/lib/components/text-editor/__internal__/plugins/OnChange/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/index.js +13 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/placeholder.component.d.ts +14 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/placeholder.component.js +25 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/placeholder.style.d.ts +2 -0
- package/lib/components/text-editor/__internal__/plugins/Placeholder/placeholder.style.js +15 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/bold.component.d.ts +4 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/bold.component.js +48 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/common.d.ts +6 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/common.js +5 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/index.d.ts +4 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/index.js +34 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/italic.component.d.ts +4 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/italic.component.js +47 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/list.component.d.ts +5 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/list.component.js +325 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/save.component.d.ts +34 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/buttons/save.component.js +36 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/index.d.ts +1 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/package.json +6 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/toolbar.component.d.ts +12 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/toolbar.component.js +120 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/toolbar.style.d.ts +11 -0
- package/lib/components/text-editor/__internal__/plugins/Toolbar/toolbar.style.js +65 -0
- package/lib/components/text-editor/__internal__/plugins/index.d.ts +9 -0
- package/lib/components/text-editor/__internal__/plugins/index.js +69 -0
- package/lib/components/text-editor/__internal__/{toolbar → plugins}/package.json +1 -1
- package/lib/components/text-editor/__internal__/plugins/useCursorAtEnd/index.d.ts +2 -0
- package/lib/components/text-editor/__internal__/plugins/useCursorAtEnd/index.js +78 -0
- package/lib/components/text-editor/__internal__/plugins/useCursorAtEnd/package.json +6 -0
- package/lib/components/text-editor/__internal__/read-only-rte.component.d.ts +4 -0
- package/lib/components/text-editor/__internal__/read-only-rte.component.js +72 -0
- package/lib/components/text-editor/__internal__/style.css +7 -0
- package/lib/components/text-editor/__internal__/utils.d.ts +4 -0
- package/lib/components/text-editor/__internal__/utils.js +21 -0
- package/lib/components/text-editor/index.d.ts +2 -1
- package/lib/components/text-editor/index.js +7 -7
- package/lib/components/text-editor/text-editor.component.d.ts +32 -28
- package/lib/components/text-editor/text-editor.component.js +141 -477
- package/lib/components/text-editor/text-editor.context.d.ts +6 -0
- package/lib/components/text-editor/{__internal__/editor.context.js → text-editor.context.js} +1 -0
- package/lib/components/text-editor/text-editor.style.d.ts +18 -11
- package/lib/components/text-editor/text-editor.style.js +57 -53
- package/lib/locales/de-de.js +0 -14
- package/lib/locales/en-gb.js +18 -14
- package/lib/locales/es-es.js +0 -14
- package/lib/locales/fr-ca.js +0 -14
- package/lib/locales/fr-fr.js +0 -14
- package/lib/locales/locale.d.ts +14 -14
- package/package.json +7 -4
- package/esm/components/text-editor/__internal__/decorators/index.d.ts +0 -3
- package/esm/components/text-editor/__internal__/decorators/index.js +0 -3
- package/esm/components/text-editor/__internal__/decorators/link-decorator.d.ts +0 -8
- package/esm/components/text-editor/__internal__/decorators/link-decorator.js +0 -37
- package/esm/components/text-editor/__internal__/editor-link/editor-link.component.d.ts +0 -9
- package/esm/components/text-editor/__internal__/editor-link/editor-link.component.js +0 -36
- package/esm/components/text-editor/__internal__/editor-link/editor-link.style.d.ts +0 -3
- package/esm/components/text-editor/__internal__/editor-link/editor-link.style.js +0 -13
- package/esm/components/text-editor/__internal__/editor-link/index.d.ts +0 -2
- package/esm/components/text-editor/__internal__/editor-link/index.js +0 -1
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.component.d.ts +0 -11
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.component.js +0 -18
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.style.d.ts +0 -2
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.style.js +0 -11
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/index.d.ts +0 -2
- package/esm/components/text-editor/__internal__/editor-validation-wrapper/index.js +0 -1
- package/esm/components/text-editor/__internal__/editor.context.d.ts +0 -6
- package/esm/components/text-editor/__internal__/editor.context.js +0 -2
- package/esm/components/text-editor/__internal__/label-wrapper/index.d.ts +0 -2
- package/esm/components/text-editor/__internal__/label-wrapper/index.js +0 -1
- package/esm/components/text-editor/__internal__/label-wrapper/label-wrapper.component.d.ts +0 -12
- package/esm/components/text-editor/__internal__/label-wrapper/label-wrapper.component.js +0 -18
- package/esm/components/text-editor/__internal__/toolbar/index.d.ts +0 -2
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/index.d.ts +0 -2
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/index.js +0 -1
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.component.d.ts +0 -25
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.component.js +0 -50
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.style.d.ts +0 -6
- package/esm/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.style.js +0 -38
- package/esm/components/text-editor/__internal__/toolbar/toolbar.component.d.ts +0 -16
- package/esm/components/text-editor/__internal__/toolbar/toolbar.component.js +0 -158
- package/esm/components/text-editor/__internal__/toolbar/toolbar.style.d.ts +0 -4
- package/esm/components/text-editor/__internal__/toolbar/toolbar.style.js +0 -28
- package/esm/components/text-editor/__internal__/utils/index.d.ts +0 -1
- package/esm/components/text-editor/__internal__/utils/index.js +0 -1
- package/esm/components/text-editor/__internal__/utils/utils.d.ts +0 -29
- package/esm/components/text-editor/__internal__/utils/utils.js +0 -174
- package/esm/components/text-editor/types.d.ts +0 -6
- package/esm/components/text-editor/types.js +0 -4
- package/lib/components/text-editor/__internal__/decorators/index.d.ts +0 -3
- package/lib/components/text-editor/__internal__/decorators/index.js +0 -10
- package/lib/components/text-editor/__internal__/decorators/link-decorator.d.ts +0 -8
- package/lib/components/text-editor/__internal__/decorators/link-decorator.js +0 -44
- package/lib/components/text-editor/__internal__/decorators/package.json +0 -6
- package/lib/components/text-editor/__internal__/editor-link/editor-link.component.d.ts +0 -9
- package/lib/components/text-editor/__internal__/editor-link/editor-link.component.js +0 -45
- package/lib/components/text-editor/__internal__/editor-link/editor-link.style.d.ts +0 -3
- package/lib/components/text-editor/__internal__/editor-link/editor-link.style.js +0 -20
- package/lib/components/text-editor/__internal__/editor-link/index.d.ts +0 -2
- package/lib/components/text-editor/__internal__/editor-link/package.json +0 -6
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.component.d.ts +0 -11
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.component.js +0 -25
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.style.d.ts +0 -2
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/editor-validation-wrapper.style.js +0 -18
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/index.d.ts +0 -2
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/index.js +0 -13
- package/lib/components/text-editor/__internal__/editor-validation-wrapper/package.json +0 -6
- package/lib/components/text-editor/__internal__/editor.context.d.ts +0 -6
- package/lib/components/text-editor/__internal__/label-wrapper/index.d.ts +0 -2
- package/lib/components/text-editor/__internal__/label-wrapper/label-wrapper.component.d.ts +0 -12
- package/lib/components/text-editor/__internal__/label-wrapper/label-wrapper.component.js +0 -25
- package/lib/components/text-editor/__internal__/label-wrapper/package.json +0 -6
- package/lib/components/text-editor/__internal__/toolbar/index.d.ts +0 -2
- package/lib/components/text-editor/__internal__/toolbar/toolbar-button/index.d.ts +0 -2
- package/lib/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.component.d.ts +0 -25
- package/lib/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.component.js +0 -56
- package/lib/components/text-editor/__internal__/toolbar/toolbar-button/toolbar-button.style.d.ts +0 -6
- package/lib/components/text-editor/__internal__/toolbar/toolbar.component.d.ts +0 -16
- package/lib/components/text-editor/__internal__/toolbar/toolbar.component.js +0 -167
- package/lib/components/text-editor/__internal__/toolbar/toolbar.style.d.ts +0 -4
- package/lib/components/text-editor/__internal__/toolbar/toolbar.style.js +0 -34
- package/lib/components/text-editor/__internal__/utils/index.d.ts +0 -1
- package/lib/components/text-editor/__internal__/utils/index.js +0 -90
- package/lib/components/text-editor/__internal__/utils/package.json +0 -6
- package/lib/components/text-editor/__internal__/utils/utils.d.ts +0 -29
- package/lib/components/text-editor/__internal__/utils/utils.js +0 -197
- package/lib/components/text-editor/types.d.ts +0 -6
- package/lib/components/text-editor/types.js +0 -10
- /package/esm/components/text-editor/__internal__/{toolbar → plugins/Toolbar}/index.js +0 -0
- /package/lib/components/text-editor/__internal__/{toolbar → plugins/Toolbar}/index.js +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _LexicalAutoLinkPlugin = require("@lexical/react/LexicalAutoLinkPlugin");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
/* istanbul ignore file */
|
|
12
|
+
/**
|
|
13
|
+
* Owing to the nature of how this plugin runs, it is not possible to test it in isolation.
|
|
14
|
+
* It is tested as part of the TextEditor Playwright tests.
|
|
15
|
+
*
|
|
16
|
+
* The AutoLinkerPlugin component is a wrapper around the AutoLinkPlugin component provided
|
|
17
|
+
* by Lexical. It is used to automatically convert URLs and email addresses into clickable
|
|
18
|
+
* links.
|
|
19
|
+
*
|
|
20
|
+
* The regular expressions used to match URLs and email addresses are provided as per the
|
|
21
|
+
* Lexical documentation; as such not all edge cases may be covered.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const URL_REGEX = /((https?:\/\/(www\.)?)|(www\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)(?<![-.+():%])/;
|
|
25
|
+
const EMAIL_REGEX = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
|
|
26
|
+
const MATCHERS = [(0, _LexicalAutoLinkPlugin.createLinkMatcherWithRegExp)(URL_REGEX, text => {
|
|
27
|
+
return text.startsWith("http") ? text : `https://${text}`;
|
|
28
|
+
}), (0, _LexicalAutoLinkPlugin.createLinkMatcherWithRegExp)(EMAIL_REGEX, text => {
|
|
29
|
+
return `mailto:${text}`;
|
|
30
|
+
})];
|
|
31
|
+
const AutoLinkerPlugin = () => {
|
|
32
|
+
return /*#__PURE__*/_react.default.createElement(_LexicalAutoLinkPlugin.AutoLinkPlugin, {
|
|
33
|
+
matchers: MATCHERS
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var _default = exports.default = AutoLinkerPlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./auto-link.component";
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
Object.defineProperty(exports, "default", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _autoLink.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var
|
|
12
|
+
var _autoLink = _interopRequireDefault(require("./auto-link.component"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"sideEffects": false,
|
|
3
|
-
"module": "../../../../../../esm/components/text-editor/__internal__/
|
|
3
|
+
"module": "../../../../../../esm/components/text-editor/__internal__/plugins/AutoLinker/index.js",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"types": "./index.d.ts"
|
|
6
6
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { LexicalEditor } from "lexical";
|
|
3
|
+
export interface CharacterCounterPluginProps {
|
|
4
|
+
/** The maximum number of characters to allow before showing the warning */
|
|
5
|
+
maxChars: number;
|
|
6
|
+
/** The Lexical editor instance */
|
|
7
|
+
editor: LexicalEditor;
|
|
8
|
+
}
|
|
9
|
+
declare const CharacterCounterPlugin: ({ maxChars, editor, }: CharacterCounterPluginProps) => React.JSX.Element;
|
|
10
|
+
export default CharacterCounterPlugin;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _lexical = require("lexical");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
const CharacterCounterPlugin = ({
|
|
14
|
+
maxChars,
|
|
15
|
+
editor
|
|
16
|
+
}) => {
|
|
17
|
+
const [rawContent, setRawContent] = (0, _react.useState)("");
|
|
18
|
+
|
|
19
|
+
// Simplified update listener using Lexical v0.21.0 approach
|
|
20
|
+
(0, _react.useEffect)(() => {
|
|
21
|
+
const removeListener = editor.registerUpdateListener(() => {
|
|
22
|
+
const editorState = editor.getEditorState();
|
|
23
|
+
editorState.read(() => {
|
|
24
|
+
const newContent = (0, _lexical.$getRoot)().getTextContent();
|
|
25
|
+
setRawContent(newContent);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return () => {
|
|
29
|
+
removeListener();
|
|
30
|
+
};
|
|
31
|
+
}, [editor]);
|
|
32
|
+
|
|
33
|
+
// Calculate the number of characters remaining
|
|
34
|
+
const rawCharactersRemaining = (0, _react.useMemo)(() => {
|
|
35
|
+
const activeCount = maxChars - (rawContent ? rawContent.length : 0);
|
|
36
|
+
return activeCount >= 0 ? activeCount : 0;
|
|
37
|
+
}, [maxChars, rawContent]);
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
39
|
+
"data-role": "visible-counter"
|
|
40
|
+
}, rawCharactersRemaining));
|
|
41
|
+
};
|
|
42
|
+
var _default = exports.default = CharacterCounterPlugin;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface CharacterCounterPluginProps {
|
|
3
|
+
/** The maximum number of characters to allow before showing the warning */
|
|
4
|
+
maxChars: number;
|
|
5
|
+
/** The namespace of the editor that this counter belongs to */
|
|
6
|
+
namespace: string;
|
|
7
|
+
}
|
|
8
|
+
declare const CharacterCounterPlugin: ({ maxChars, namespace, }: CharacterCounterPluginProps) => React.JSX.Element;
|
|
9
|
+
export default CharacterCounterPlugin;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
10
|
+
var _lexical = require("lexical");
|
|
11
|
+
var _characterCounter = require("./character-counter.style");
|
|
12
|
+
var _useDebounce = _interopRequireDefault(require("../../../../../hooks/__internal__/useDebounce"));
|
|
13
|
+
var _useLocale = _interopRequireDefault(require("../../../../../hooks/__internal__/useLocale"));
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
const CharacterCounterPlugin = ({
|
|
18
|
+
maxChars,
|
|
19
|
+
namespace
|
|
20
|
+
}) => {
|
|
21
|
+
const [rawContent, setRawContent] = (0, _react.useState)("");
|
|
22
|
+
const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
|
|
23
|
+
(0, _react.useEffect)(() => {
|
|
24
|
+
// The character counter plugin listens for updates to the editor state
|
|
25
|
+
// independently to ensure updates do not conflict/interrupt other state
|
|
26
|
+
// changes
|
|
27
|
+
editor.registerUpdateListener(({
|
|
28
|
+
editorState
|
|
29
|
+
}) => {
|
|
30
|
+
editorState.read(() => {
|
|
31
|
+
const newContent = (0, _lexical.$getRoot)().getTextContent();
|
|
32
|
+
setRawContent(newContent);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}, [editor]);
|
|
36
|
+
|
|
37
|
+
// Get the locale to enable translations
|
|
38
|
+
const locale = (0, _useLocale.default)();
|
|
39
|
+
|
|
40
|
+
// Get the current locale and format the number
|
|
41
|
+
const getFormatNumber = (0, _react.useCallback)(rawValue => {
|
|
42
|
+
return new Intl.NumberFormat(locale.locale()).format(rawValue);
|
|
43
|
+
}, [locale]);
|
|
44
|
+
const [debouncedValue, setDebouncedValue] = (0, _react.useState)(0);
|
|
45
|
+
|
|
46
|
+
// Calculate the number of characters remaining
|
|
47
|
+
const rawCharactersRemaining = (0, _react.useMemo)(() => {
|
|
48
|
+
// Calculate the number of characters remaining
|
|
49
|
+
const activeCount = maxChars - (rawContent ? rawContent.length : 0);
|
|
50
|
+
// Return the active count if it is greater than 0, otherwise return 0
|
|
51
|
+
return activeCount >= 0 ? activeCount : 0;
|
|
52
|
+
}, [rawContent, maxChars]);
|
|
53
|
+
|
|
54
|
+
// Use a debounced value to update the remaining character count for screen readers to use
|
|
55
|
+
/* istanbul ignore next */
|
|
56
|
+
const debouncedText = (0, _useDebounce.default)(newValue => {
|
|
57
|
+
setDebouncedValue(newValue || 0);
|
|
58
|
+
}, 2000);
|
|
59
|
+
(0, _react.useEffect)(() => {
|
|
60
|
+
debouncedText(rawCharactersRemaining);
|
|
61
|
+
}, [rawCharactersRemaining, debouncedText]);
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_characterCounter.StyledCharacterCounter, {
|
|
63
|
+
"data-role": `${namespace}-character-limit`
|
|
64
|
+
}, locale.textEditor.characterCounter(getFormatNumber(rawCharactersRemaining))), /*#__PURE__*/_react.default.createElement(_characterCounter.VisuallyHiddenCharacterCounter, {
|
|
65
|
+
"aria-live": "polite"
|
|
66
|
+
}, locale.textEditor.characterCounter(getFormatNumber(debouncedValue))));
|
|
67
|
+
};
|
|
68
|
+
var _default = exports.default = CharacterCounterPlugin;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const StyledCharacterCounter: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const VisuallyHiddenCharacterCounter: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export default StyledCharacterCounter;
|
package/lib/components/text-editor/__internal__/plugins/CharacterCounter/character-counter.style.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.VisuallyHiddenCharacterCounter = exports.StyledCharacterCounter = void 0;
|
|
7
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
8
|
+
var _visuallyHidden = _interopRequireDefault(require("../../../../../style/utils/visually-hidden"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const StyledCharacterCounter = exports.StyledCharacterCounter = _styledComponents.default.div`
|
|
11
|
+
text-align: left;
|
|
12
|
+
font-size: var(--fontSizes100);
|
|
13
|
+
margin-top: var(--spacing050);
|
|
14
|
+
margin-bottom: var(--spacing050);
|
|
15
|
+
color: var(--colorsUtilityYin055);
|
|
16
|
+
`;
|
|
17
|
+
const VisuallyHiddenCharacterCounter = exports.VisuallyHiddenCharacterCounter = _styledComponents.default.div`
|
|
18
|
+
::after {
|
|
19
|
+
content: " ";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
${_visuallyHidden.default}
|
|
23
|
+
`;
|
|
24
|
+
var _default = exports.default = StyledCharacterCounter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./character-counter.component";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _characterCounter.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _characterCounter = _interopRequireDefault(require("./character-counter.component"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface ContentEditorProps {
|
|
3
|
+
/** The active error message of the editor */
|
|
4
|
+
error?: string;
|
|
5
|
+
/** A hint string rendered before the editor but after the label. Intended to describe the purpose or content of the input. */
|
|
6
|
+
inputHint?: string;
|
|
7
|
+
/** The namespace of the editor that this content editor belongs to */
|
|
8
|
+
namespace: string;
|
|
9
|
+
/** The link previews to render at the foot of the editor */
|
|
10
|
+
previews?: React.JSX.Element[];
|
|
11
|
+
/** The number of rows to render in the editor */
|
|
12
|
+
rows?: number;
|
|
13
|
+
/** The active warning message of the editor */
|
|
14
|
+
warning?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const ContentEditor: ({ error, inputHint, namespace, previews, rows, warning, }: ContentEditorProps) => React.JSX.Element;
|
|
17
|
+
export default ContentEditor;
|
package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.component.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _LexicalContentEditable = require("@lexical/react/LexicalContentEditable");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _contentEditor = _interopRequireDefault(require("./content-editor.style"));
|
|
11
|
+
var _ = require("..");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
/**
|
|
14
|
+
* This is where the actual content editor is rendered. It uses the `ContentEditable` component from the `@lexical/react` package
|
|
15
|
+
* as per their documentation. It also uses the `LinkPreviewerPlugin` to render link previews.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const ContentEditor = ({
|
|
19
|
+
error,
|
|
20
|
+
inputHint,
|
|
21
|
+
namespace,
|
|
22
|
+
previews = [],
|
|
23
|
+
rows,
|
|
24
|
+
warning
|
|
25
|
+
}) => {
|
|
26
|
+
const focusAtEnd = (0, _.useCursorAtEnd)();
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_contentEditor.default, {
|
|
28
|
+
"data-role": `${namespace}-content-editable`,
|
|
29
|
+
error: error,
|
|
30
|
+
namespace: namespace,
|
|
31
|
+
rows: rows,
|
|
32
|
+
warning: warning
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_LexicalContentEditable.ContentEditable, {
|
|
34
|
+
"aria-describedby": inputHint && `${namespace}-input-hint`,
|
|
35
|
+
"aria-labelledby": `${namespace}-label`,
|
|
36
|
+
className: `${namespace}-editable`,
|
|
37
|
+
"data-role": `${namespace}-editable`,
|
|
38
|
+
onFocus: focusAtEnd
|
|
39
|
+
/** The following are automatically added by Lexical but violate WCAG 4.1.2 Name, Role, Value and so have been overriden */,
|
|
40
|
+
"aria-autocomplete": undefined,
|
|
41
|
+
"aria-readonly": undefined
|
|
42
|
+
}), /*#__PURE__*/_react.default.createElement(_.LinkPreviewerPlugin, {
|
|
43
|
+
error: error,
|
|
44
|
+
previews: previews,
|
|
45
|
+
warning: warning
|
|
46
|
+
}));
|
|
47
|
+
};
|
|
48
|
+
var _default = exports.default = ContentEditor;
|
package/lib/components/text-editor/__internal__/plugins/ContentEditor/content-editor.style.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ContentEditorProps } from "./content-editor.component";
|
|
2
|
+
interface StyledContentEditableProps extends ContentEditorProps {
|
|
3
|
+
showBorders?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const StyledContentEditable: import("styled-components").StyledComponent<"div", any, StyledContentEditableProps, never>;
|
|
6
|
+
export default StyledContentEditable;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
9
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
|
+
const DEFAULT_EDITOR_HEIGHT = 210;
|
|
11
|
+
const FIXED_LINE_HEIGHT = 21;
|
|
12
|
+
const StyledContentEditable = _styledComponents.default.div`
|
|
13
|
+
${({
|
|
14
|
+
error,
|
|
15
|
+
namespace,
|
|
16
|
+
rows,
|
|
17
|
+
warning
|
|
18
|
+
}) => (0, _styledComponents.css)`
|
|
19
|
+
.${namespace}-editable {
|
|
20
|
+
min-height: ${rows && rows > 2 ? rows * FIXED_LINE_HEIGHT : DEFAULT_EDITOR_HEIGHT}px;
|
|
21
|
+
background-color: var(--colorsUtilityYang100);
|
|
22
|
+
border-top: 1px solid var(--colorsUtilityMajor200);
|
|
23
|
+
border-left: 1px solid var(--colorsUtilityMajor200);
|
|
24
|
+
border-right: 1px solid var(--colorsUtilityMajor200);
|
|
25
|
+
margin: 0;
|
|
26
|
+
padding: 2px 8px;
|
|
27
|
+
border-top-left-radius: var(--borderWidth600);
|
|
28
|
+
border-top-right-radius: var(--borderWidth600);
|
|
29
|
+
border-bottom-left-radius: 0;
|
|
30
|
+
border-bottom-right-radius: 0;
|
|
31
|
+
|
|
32
|
+
${(error || warning) && (0, _styledComponents.css)`
|
|
33
|
+
border: none;
|
|
34
|
+
`}
|
|
35
|
+
|
|
36
|
+
:focus {
|
|
37
|
+
outline: none;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`}
|
|
41
|
+
`;
|
|
42
|
+
var _default = exports.default = StyledContentEditable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./content-editor.component";
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
Object.defineProperty(exports, "default", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _contentEditor.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var
|
|
12
|
+
var _contentEditor = _interopRequireDefault(require("./content-editor.component"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./link-monitor.plugin";
|
package/lib/components/text-editor/__internal__/{label-wrapper → plugins/LinkMonitor}/index.js
RENAMED
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
Object.defineProperty(exports, "default", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _linkMonitor.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var
|
|
12
|
+
var _linkMonitor = _interopRequireDefault(require("./link-monitor.plugin"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
8
|
+
var _link = require("@lexical/link");
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _helpers = require("../../helpers");
|
|
11
|
+
var _textEditor = _interopRequireDefault(require("../../../text-editor.context"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
/* istanbul ignore file */
|
|
14
|
+
/**
|
|
15
|
+
* Owing to the nature of how this plugin runs, it is not possible to test it in isolation.
|
|
16
|
+
* It is tested as part of the TextEditor Playwright tests.
|
|
17
|
+
*
|
|
18
|
+
* The purpose of this plugin is to monitor the editor for any changes that result in the
|
|
19
|
+
* creation of AutoLinkNodes, and report these changes to the customer (e.g. to then
|
|
20
|
+
* generate link previews).
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
const LinkMonitorPlugin = () => {
|
|
24
|
+
// Get the editor instance
|
|
25
|
+
const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
|
|
26
|
+
// Get the onLinkAdded function from the context
|
|
27
|
+
const {
|
|
28
|
+
onLinkAdded
|
|
29
|
+
} = (0, _react.useContext)(_textEditor.default);
|
|
30
|
+
(0, _react.useEffect)(() => {
|
|
31
|
+
// Register a mutation listener for AutoLinkNodes
|
|
32
|
+
const removeAutoLinkMutationListener = editor.registerMutationListener(_link.AutoLinkNode, (mutatedNodes, {
|
|
33
|
+
prevEditorState
|
|
34
|
+
}) => {
|
|
35
|
+
const isEditable = editor.isEditable();
|
|
36
|
+
if (!isEditable) return;
|
|
37
|
+
|
|
38
|
+
// For each AutoLinkNode, check if the text content is present and also a valid URL
|
|
39
|
+
for (const [nodeKey, mutation] of mutatedNodes) {
|
|
40
|
+
const node = editor.getElementByKey(nodeKey);
|
|
41
|
+
const textContent = node?.innerText;
|
|
42
|
+
if (textContent) {
|
|
43
|
+
const linkValid = (0, _helpers.validateUrl)(textContent);
|
|
44
|
+
if (linkValid) {
|
|
45
|
+
// Assume link has been created, notify user
|
|
46
|
+
onLinkAdded?.(textContent, mutation);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
// Assume link has been destroyed, notify user
|
|
50
|
+
const deletedData = prevEditorState?._nodeMap.get(nodeKey);
|
|
51
|
+
if (deletedData) {
|
|
52
|
+
const {
|
|
53
|
+
__url
|
|
54
|
+
} = deletedData;
|
|
55
|
+
onLinkAdded?.(__url, mutation);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
skipInitialization: false
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Remove the mutation listener when the component is unmounted
|
|
64
|
+
return () => {
|
|
65
|
+
removeAutoLinkMutationListener();
|
|
66
|
+
};
|
|
67
|
+
}, [editor, onLinkAdded]);
|
|
68
|
+
return null;
|
|
69
|
+
};
|
|
70
|
+
var _default = exports.default = LinkMonitorPlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./link-previewer.component";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _linkPreviewer.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _linkPreviewer = _interopRequireDefault(require("./link-previewer.component"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface LinkPreviewerProps {
|
|
3
|
+
/** The active error message of the editor */
|
|
4
|
+
error?: string;
|
|
5
|
+
/** The link previews to render at the foot of the editor */
|
|
6
|
+
previews?: React.JSX.Element[];
|
|
7
|
+
/** The active warning message of the editor */
|
|
8
|
+
warning?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const LinkPreviewer: ({ error, previews, warning, }: LinkPreviewerProps) => React.JSX.Element;
|
|
11
|
+
export default LinkPreviewer;
|
package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.component.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _textEditor = _interopRequireDefault(require("../../../text-editor.context"));
|
|
10
|
+
var _linkPreviewer = _interopRequireDefault(require("./link-previewer.style"));
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
const LinkPreviewer = ({
|
|
15
|
+
error,
|
|
16
|
+
previews = [],
|
|
17
|
+
warning
|
|
18
|
+
}) => {
|
|
19
|
+
const {
|
|
20
|
+
readOnly
|
|
21
|
+
} = (0, _react.useContext)(_textEditor.default);
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement(_linkPreviewer.default, {
|
|
23
|
+
error: error,
|
|
24
|
+
readOnly: readOnly,
|
|
25
|
+
warning: warning
|
|
26
|
+
}, previews);
|
|
27
|
+
};
|
|
28
|
+
var _default = exports.default = LinkPreviewer;
|
package/lib/components/text-editor/__internal__/plugins/LinkPreviewer/link-previewer.style.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LinkPreviewerProps } from "./link-previewer.component";
|
|
2
|
+
interface StyledLinkPreviewerProps extends LinkPreviewerProps {
|
|
3
|
+
readOnly?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const StyledLinkPreviewer: import("styled-components").StyledComponent<"div", any, StyledLinkPreviewerProps, never>;
|
|
6
|
+
export default StyledLinkPreviewer;
|
|
@@ -5,43 +5,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
|
-
var _themes = require("../../../../../style/themes");
|
|
9
|
-
var _addFocusStyling = _interopRequireDefault(require("../../../../../style/utils/add-focus-styling"));
|
|
10
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
8
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
9
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
-
const
|
|
14
|
-
type: "button"
|
|
15
|
-
})`
|
|
16
|
-
display: inline-flex;
|
|
17
|
-
justify-content: center;
|
|
18
|
-
align-items: center;
|
|
19
|
-
padding: 6px;
|
|
20
|
-
background-color: inherit;
|
|
21
|
-
border-radius: var(--borderRadius100);
|
|
22
|
-
border: none;
|
|
23
|
-
cursor: pointer;
|
|
24
|
-
|
|
10
|
+
const StyledLinkPreviewer = _styledComponents.default.div`
|
|
25
11
|
${({
|
|
26
|
-
|
|
12
|
+
error,
|
|
13
|
+
readOnly,
|
|
14
|
+
warning
|
|
27
15
|
}) => (0, _styledComponents.css)`
|
|
28
|
-
:
|
|
29
|
-
:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
border-bottom-left-radius: 0;
|
|
17
|
+
border-bottom-right-radius: 0;
|
|
18
|
+
background-color: var(--colorsUtilityYang100);
|
|
19
|
+
border-bottom: 1px solid var(--colorsUtilityMajor200);
|
|
20
|
+
border-left: 1px solid var(--colorsUtilityMajor200);
|
|
21
|
+
border-right: 1px solid var(--colorsUtilityMajor200);
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 2px 8px;
|
|
34
24
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
${(error || warning) && (0, _styledComponents.css)`
|
|
26
|
+
border-left: none;
|
|
27
|
+
border-right: none;
|
|
28
|
+
border-bottom: none;
|
|
29
|
+
`}
|
|
38
30
|
|
|
39
|
-
${
|
|
40
|
-
|
|
31
|
+
${readOnly && (0, _styledComponents.css)`
|
|
32
|
+
border-bottom-left-radius: var(--borderWidth600);
|
|
33
|
+
border-bottom-right-radius: var(--borderWidth600);
|
|
41
34
|
`}
|
|
42
35
|
`}
|
|
43
36
|
`;
|
|
44
|
-
|
|
45
|
-
theme: _themes.baseTheme
|
|
46
|
-
};
|
|
47
|
-
var _default = exports.default = StyledToolbarButton;
|
|
37
|
+
var _default = exports.default = StyledLinkPreviewer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./on-change.plugin";
|