@eccenca/gui-elements 24.0.0-rc.2 → 24.0.0-rc.3
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/CHANGELOG.md +59 -5
- package/README.md +5 -3
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -5
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +4 -8
- package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
- package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
- package/dist/cjs/cmem/markdown/highlightSearchWords.js +5 -8
- package/dist/cjs/cmem/markdown/highlightSearchWords.js.map +1 -1
- package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
- package/dist/cjs/common/index.js +1 -3
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/components/Accordion/Accordion.js +2 -7
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/Accordion/AccordionItem.js +1 -2
- package/dist/cjs/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +114 -63
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js +13 -51
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/extensions/markText.js +55 -0
- package/dist/cjs/components/AutoSuggestion/extensions/markText.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/index.js +1 -3
- package/dist/cjs/components/AutoSuggestion/index.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +2 -6
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/index.js +1 -0
- package/dist/cjs/components/AutocompleteField/index.js.map +1 -1
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js +2 -2
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Card/CardHeader.js +2 -2
- package/dist/cjs/components/Card/CardHeader.js.map +1 -1
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js +3 -3
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
- package/dist/cjs/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/cjs/components/Dialog/Modal.js +2 -2
- package/dist/cjs/components/Dialog/Modal.js.map +1 -1
- package/dist/cjs/components/Grid/Grid.js.map +1 -1
- package/dist/cjs/components/Grid/GridColumn.js +1 -1
- package/dist/cjs/components/Grid/GridColumn.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js +3 -5
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +6 -15
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js +7 -2
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
- package/dist/cjs/components/Notification/Notification.js +2 -5
- package/dist/cjs/components/Notification/Notification.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +0 -6
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/SuggestField/SuggestField.js +2 -2
- package/dist/cjs/components/SuggestField/SuggestField.js.map +1 -1
- package/dist/cjs/components/Table/Table.js +0 -3
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Tag/Tag.js +1 -0
- package/dist/cjs/components/Tag/Tag.js.map +1 -1
- package/dist/cjs/components/TextField/TextArea.js +1 -19
- package/dist/cjs/components/TextField/TextArea.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.js +6 -24
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Typography/Highlighter.js +0 -6
- package/dist/cjs/components/Typography/Highlighter.js.map +1 -1
- package/dist/cjs/components/Typography/index.js +0 -8
- package/dist/cjs/components/Typography/index.js.map +1 -1
- package/dist/cjs/components/Workspace/WorkspaceContent.js +1 -1
- package/dist/cjs/components/Workspace/WorkspaceContent.js.map +1 -1
- package/dist/cjs/components/index.js +0 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +91 -86
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +43 -0
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +49 -0
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +1 -1
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/cjs/extensions/react-flow/index.js +3 -14
- package/dist/cjs/extensions/react-flow/index.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/utils.js +4 -7
- package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +2 -10
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
- package/dist/cjs/index.js +1 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/Button.js +2 -0
- package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +2 -0
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js +2 -0
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -0
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/legacy-replacements/TextField/TextField.js +2 -0
- package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -4
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +2 -4
- package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
- package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
- package/dist/esm/cmem/markdown/highlightSearchWords.js +5 -8
- package/dist/esm/cmem/markdown/highlightSearchWords.js.map +1 -1
- package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
- package/dist/esm/common/index.js +0 -2
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +2 -7
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Accordion/AccordionItem.js +1 -2
- package/dist/esm/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +133 -81
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js +36 -60
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/extensions/markText.js +72 -0
- package/dist/esm/components/AutoSuggestion/extensions/markText.js.map +1 -0
- package/dist/esm/components/AutoSuggestion/index.js +1 -2
- package/dist/esm/components/AutoSuggestion/index.js.map +1 -1
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js +3 -6
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/esm/components/AutocompleteField/index.js +1 -0
- package/dist/esm/components/AutocompleteField/index.js.map +1 -1
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js +2 -2
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Card/CardHeader.js +2 -2
- package/dist/esm/components/Card/CardHeader.js.map +1 -1
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js +2 -2
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
- package/dist/esm/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/esm/components/Dialog/Modal.js +3 -3
- package/dist/esm/components/Dialog/Modal.js.map +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Grid/GridColumn.js +1 -1
- package/dist/esm/components/Grid/GridColumn.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +1 -2
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/esm/components/MultiSelect/MultiSelect.js +7 -15
- package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js +6 -1
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
- package/dist/esm/components/Notification/Notification.js +2 -6
- package/dist/esm/components/Notification/Notification.js.map +1 -1
- package/dist/esm/components/Select/Select.js +0 -6
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/SuggestField/SuggestField.js +1 -1
- package/dist/esm/components/SuggestField/SuggestField.js.map +1 -1
- package/dist/esm/components/Table/Table.js +0 -3
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js +1 -0
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/TextField/TextArea.js +2 -20
- package/dist/esm/components/TextField/TextArea.js.map +1 -1
- package/dist/esm/components/TextField/TextField.js +6 -24
- package/dist/esm/components/TextField/TextField.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Typography/Highlighter.js +3 -6
- package/dist/esm/components/Typography/Highlighter.js.map +1 -1
- package/dist/esm/components/Typography/index.js +0 -7
- package/dist/esm/components/Typography/index.js.map +1 -1
- package/dist/esm/components/Workspace/WorkspaceContent.js +1 -1
- package/dist/esm/components/Workspace/WorkspaceContent.js.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +132 -83
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +39 -0
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +55 -0
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js +1 -1
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/esm/extensions/react-flow/index.js +2 -12
- package/dist/esm/extensions/react-flow/index.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/utils.js +4 -7
- package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js +2 -10
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/AffirmativeButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/Button.js +2 -0
- package/dist/esm/legacy-replacements/Button/Button.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js +2 -0
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/legacy-replacements/Radio/RadioButton.js +2 -0
- package/dist/esm/legacy-replacements/Radio/RadioButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -0
- package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/esm/legacy-replacements/TextField/TextField.js +2 -0
- package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +3 -5
- package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +0 -2
- package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +7 -11
- package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +3 -3
- package/dist/types/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.d.ts +1 -12
- package/dist/types/cmem/markdown/Markdown.d.ts +0 -1
- package/dist/types/cmem/markdown/highlightSearchWords.d.ts +0 -6
- package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +2 -2
- package/dist/types/common/index.d.ts +0 -24
- package/dist/types/components/Accordion/Accordion.d.ts +1 -6
- package/dist/types/components/Accordion/AccordionItem.d.ts +1 -6
- package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +27 -17
- package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +0 -1
- package/dist/types/components/AutoSuggestion/ExtendedCodeEditor.d.ts +10 -11
- package/dist/types/components/AutoSuggestion/extensions/markText.d.ts +16 -0
- package/dist/types/components/AutoSuggestion/index.d.ts +2 -2
- package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +11 -15
- package/dist/types/components/AutocompleteField/index.d.ts +1 -0
- package/dist/types/components/AutocompleteField/interfaces.d.ts +4 -2
- package/dist/types/components/Breadcrumb/BreadcrumbList.d.ts +1 -6
- package/dist/types/components/Button/Button.d.ts +0 -2
- package/dist/types/components/Card/CardHeader.d.ts +1 -9
- package/dist/types/components/Dialog/AlertDialog.d.ts +0 -1
- package/dist/types/components/Grid/Grid.d.ts +0 -5
- package/dist/types/components/Grid/GridColumn.d.ts +1 -6
- package/dist/types/components/Icon/BaseIcon.d.ts +2 -2
- package/dist/types/components/Icon/Icon.d.ts +0 -5
- package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -7
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +6 -8
- package/dist/types/components/MultiSuggestField/MultiSuggestField.d.ts +11 -2
- package/dist/types/components/Notification/Notification.d.ts +1 -14
- package/dist/types/components/Select/Select.d.ts +0 -3
- package/dist/types/components/Spinner/Spinner.d.ts +3 -3
- package/dist/types/components/SuggestField/SuggestField.d.ts +5 -0
- package/dist/types/components/SuggestField/index.d.ts +1 -1
- package/dist/types/components/Table/Table.d.ts +1 -4
- package/dist/types/components/Tag/Tag.d.ts +0 -5
- package/dist/types/components/TextField/TextArea.d.ts +1 -21
- package/dist/types/components/TextField/TextField.d.ts +3 -23
- package/dist/types/components/Tooltip/Tooltip.d.ts +2 -2
- package/dist/types/components/Typography/Highlighter.d.ts +3 -6
- package/dist/types/components/Typography/index.d.ts +0 -6
- package/dist/types/components/index.d.ts +0 -1
- package/dist/types/extensions/codemirror/CodeMirror.d.ts +54 -26
- package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +23 -0
- package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +20 -0
- package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +1 -0
- package/dist/types/extensions/react-flow/index.d.ts +0 -14
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +6 -14
- package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +0 -1
- package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +1 -0
- package/dist/types/extensions/react-flow/nodes/sharedTypes.d.ts +0 -1
- package/dist/types/index.d.ts +1 -9
- package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/Button.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +1 -0
- package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +4 -2
- package/dist/types/legacy-replacements/TextField/TextField.d.ts +1 -0
- package/package.json +7 -4
- package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -7
- package/src/cmem/ActivityControl/ActivityControlWidget.tsx +0 -6
- package/src/cmem/ActivityControl/SilkActivityControl.tsx +8 -18
- package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +14 -11
- package/src/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.tsx +11 -7
- package/src/cmem/DateTimeDisplay/tests/ElapsedDateTimeDisplay.test.tsx +9 -4
- package/src/cmem/markdown/Markdown.tsx +0 -2
- package/src/cmem/markdown/highlightSearchWords.test.ts +3 -2
- package/src/cmem/markdown/highlightSearchWords.ts +5 -10
- package/src/cmem/markdown/markdown.utils.ts +10 -10
- package/src/cmem/markdown/markdownutils.test.ts +9 -5
- package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +1 -1
- package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +2 -2
- package/src/common/index.ts +0 -3
- package/src/components/Accordion/Accordion.tsx +0 -13
- package/src/components/Accordion/AccordionItem.tsx +0 -7
- package/src/components/Accordion/accordion.scss +0 -5
- package/src/components/AutoSuggestion/AutoSuggestion.scss +20 -17
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +171 -100
- package/src/components/AutoSuggestion/AutoSuggestionList.tsx +0 -3
- package/src/components/AutoSuggestion/ExtendedCodeEditor.tsx +47 -83
- package/src/components/AutoSuggestion/extensions/markText.ts +63 -0
- package/src/components/AutoSuggestion/index.ts +2 -2
- package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +13 -11
- package/src/components/AutocompleteField/AutoCompleteField.tsx +17 -19
- package/src/components/AutocompleteField/index.ts +1 -0
- package/src/components/AutocompleteField/interfaces.ts +5 -2
- package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -7
- package/src/components/Button/Button.tsx +0 -5
- package/src/components/Card/CardHeader.tsx +2 -10
- package/src/components/CodeAutocompleteField/CodeAutocompleteField.stories.tsx +9 -3
- package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +2 -2
- package/src/components/Dialog/AlertDialog.tsx +0 -3
- package/src/components/Dialog/Modal.tsx +3 -3
- package/src/components/Grid/Grid.tsx +0 -5
- package/src/components/Grid/GridColumn.tsx +0 -6
- package/src/components/Icon/BaseIcon.tsx +2 -2
- package/src/components/Icon/Icon.tsx +1 -5
- package/src/components/Icon/canonicalIconNames.tsx +3 -9
- package/src/components/MultiSelect/MultiSelect.tsx +9 -19
- package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +2 -2
- package/src/components/MultiSuggestField/MultiSuggestField.tsx +16 -3
- package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +6 -6
- package/src/components/Notification/Notification.tsx +2 -17
- package/src/components/Notification/notification.scss +1 -2
- package/src/components/Select/Select.tsx +0 -10
- package/src/components/Spinner/Spinner.tsx +3 -6
- package/src/components/SuggestField/SuggestField.tsx +6 -1
- package/src/components/Table/Table.tsx +2 -7
- package/src/components/Tag/Tag.tsx +1 -8
- package/src/components/TextField/TextArea.tsx +2 -45
- package/src/components/TextField/TextField.tsx +9 -51
- package/src/components/Tooltip/Tooltip.tsx +2 -2
- package/src/components/Typography/Highlighter.tsx +3 -6
- package/src/components/Typography/index.ts +0 -9
- package/src/components/Workspace/WorkspaceContent.tsx +1 -1
- package/src/components/index.ts +0 -1
- package/src/extensions/codemirror/CodeMirror.tsx +189 -106
- package/src/extensions/codemirror/_codemirror.scss +24 -41
- package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +44 -0
- package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +57 -0
- package/src/extensions/react-flow/edges/edgeTypes.ts +1 -1
- package/src/extensions/react-flow/index.ts +2 -13
- package/src/extensions/react-flow/minimap/_minimap.scss +0 -22
- package/src/extensions/react-flow/minimap/utils.ts +2 -5
- package/src/extensions/react-flow/nodes/NodeContent.tsx +4 -27
- package/src/extensions/react-flow/nodes/NodeDefault.tsx +0 -3
- package/src/extensions/react-flow/nodes/_nodes.scss +0 -55
- package/src/extensions/react-flow/nodes/nodeTypes.ts +1 -1
- package/src/extensions/react-flow/nodes/sharedTypes.ts +0 -1
- package/src/index.ts +1 -3
- package/src/legacy-replacements/Button/AffirmativeButton.tsx +1 -0
- package/src/legacy-replacements/Button/Button.tsx +2 -0
- package/src/legacy-replacements/Button/DismissiveButton.tsx +1 -0
- package/src/legacy-replacements/Button/DisruptiveButton.tsx +1 -0
- package/src/legacy-replacements/Checkbox/Checkbox.tsx +2 -0
- package/src/legacy-replacements/Radio/RadioButton.tsx +2 -0
- package/src/legacy-replacements/Tabs/Tabs.tsx +5 -4
- package/src/legacy-replacements/TextField/TextField.tsx +2 -0
- package/dist/cjs/components/NumericInput/NumericInput.js +0 -9
- package/dist/cjs/components/NumericInput/NumericInput.js.map +0 -1
- package/dist/esm/components/NumericInput/NumericInput.js +0 -6
- package/dist/esm/components/NumericInput/NumericInput.js.map +0 -1
- package/dist/types/components/NumericInput/NumericInput.d.ts +0 -3
- package/src/components/AutoSuggestion/AutoSuggestion.stories.tsx +0 -14
- package/src/components/MultiSelect/MultiSelect.stories.tsx +0 -14
- package/src/components/NumericInput/NumericInput.tsx +0 -6
|
@@ -1,50 +1,43 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import "codemirror/
|
|
5
|
-
import "codemirror/
|
|
6
|
-
|
|
7
|
-
import "codemirror
|
|
8
|
-
import "codemirror/mode/turtle/turtle.js";
|
|
9
|
-
import "codemirror/mode/xml/xml.js";
|
|
10
|
-
import "codemirror/mode/jinja2/jinja2.js";
|
|
11
|
-
import "codemirror/mode/yaml/yaml.js";
|
|
12
|
-
import "codemirror/mode/javascript/javascript.js";
|
|
13
|
-
import "codemirror/mode/ntriples/ntriples.js";
|
|
14
|
-
import "codemirror/mode/mathematica/mathematica.js";
|
|
15
|
-
import "codemirror-formatting";
|
|
16
|
-
//folding imports
|
|
17
|
-
import "codemirror/addon/fold/foldcode";
|
|
18
|
-
import "codemirror/addon/fold/foldgutter";
|
|
19
|
-
import "codemirror/addon/fold/brace-fold";
|
|
20
|
-
import "codemirror/addon/fold/xml-fold.js";
|
|
1
|
+
import React, { AllHTMLAttributes, useRef } from "react";
|
|
2
|
+
import { defaultKeymap, indentWithTab } from "@codemirror/commands";
|
|
3
|
+
import { foldKeymap } from "@codemirror/language";
|
|
4
|
+
import { EditorState, Extension } from "@codemirror/state";
|
|
5
|
+
import { DOMEventHandlers, EditorView, KeyBinding, keymap, Rect, ViewUpdate } from "@codemirror/view";
|
|
6
|
+
//CodeMirror
|
|
7
|
+
import { minimalSetup } from "codemirror";
|
|
21
8
|
|
|
9
|
+
import { markField } from "../../components/AutoSuggestion/extensions/markText";
|
|
10
|
+
//constants
|
|
22
11
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
13
|
+
//hooks
|
|
14
|
+
import {
|
|
15
|
+
SupportedCodeEditorModes,
|
|
16
|
+
supportedCodeEditorModes,
|
|
17
|
+
useCodeMirrorModeExtension,
|
|
18
|
+
} from "./hooks/useCodemirrorModeExtension.hooks";
|
|
19
|
+
//adaptations
|
|
20
|
+
import {
|
|
21
|
+
adaptedCodeFolding,
|
|
22
|
+
AdaptedEditorView,
|
|
23
|
+
AdaptedEditorViewDomEventHandlers,
|
|
24
|
+
adaptedFoldGutter,
|
|
25
|
+
adaptedHighlightActiveLine,
|
|
26
|
+
adaptedHighlightSpecialChars,
|
|
27
|
+
adaptedLineNumbers,
|
|
28
|
+
adaptedPlaceholder,
|
|
29
|
+
} from "./tests/codemirrorTestHelper";
|
|
41
30
|
export interface CodeEditorProps {
|
|
42
31
|
// Is called with the editor instance that allows access via the CodeMirror API
|
|
43
|
-
|
|
32
|
+
setEditorView?: (editor: EditorView | undefined) => any;
|
|
44
33
|
/**
|
|
45
34
|
* `name` attribute of connected textarea element.
|
|
46
35
|
*/
|
|
47
36
|
name: string;
|
|
37
|
+
/**
|
|
38
|
+
* Placeholder to be shown when no text has been entered, yet.
|
|
39
|
+
*/
|
|
40
|
+
placeholder?: string;
|
|
48
41
|
/**
|
|
49
42
|
* `id` attribute of connected textarea element.
|
|
50
43
|
* If not set then the default value is created by `codemirror-${name-attribute}`.
|
|
@@ -55,9 +48,31 @@ export interface CodeEditorProps {
|
|
|
55
48
|
* As input the new value is given.
|
|
56
49
|
*/
|
|
57
50
|
onChange?: (v: any) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Called when the focus status changes
|
|
53
|
+
*/
|
|
54
|
+
onFocusChange?: (focused: boolean) => any;
|
|
55
|
+
/**
|
|
56
|
+
* Called when the user presses a key
|
|
57
|
+
*/
|
|
58
|
+
onKeyDown?: (event: KeyboardEvent) => boolean;
|
|
59
|
+
/**
|
|
60
|
+
* function invoked when any click occurs
|
|
61
|
+
*/
|
|
62
|
+
onMouseDown?: (view: EditorView) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Called when the user selects text
|
|
65
|
+
*/
|
|
66
|
+
onSelection?: (ranges: { from: number; to: number }[]) => any;
|
|
67
|
+
/**
|
|
68
|
+
* Called when the cursor position changes
|
|
69
|
+
*/
|
|
70
|
+
onCursorChange?: (pos: number, coords: Rect, scrollinfo: HTMLElement, cm: EditorView) => any;
|
|
71
|
+
|
|
58
72
|
/**
|
|
59
73
|
* Syntax mode of the code editor.
|
|
60
74
|
*/
|
|
75
|
+
|
|
61
76
|
mode?: SupportedCodeEditorModes;
|
|
62
77
|
/**
|
|
63
78
|
* Default value used first when the editor is instanciated.
|
|
@@ -77,7 +92,7 @@ export interface CodeEditorProps {
|
|
|
77
92
|
/** Long lines are wrapped and displayed on multiple lines */
|
|
78
93
|
wrapLines?: boolean;
|
|
79
94
|
|
|
80
|
-
outerDivAttributes?: Partial<
|
|
95
|
+
outerDivAttributes?: Partial<AllHTMLAttributes<HTMLDivElement>>;
|
|
81
96
|
|
|
82
97
|
/**
|
|
83
98
|
* Size in spaces that is used for a tabulator key.
|
|
@@ -98,108 +113,176 @@ export interface CodeEditorProps {
|
|
|
98
113
|
/**
|
|
99
114
|
* handler for scroll event
|
|
100
115
|
*/
|
|
101
|
-
onScroll?: (
|
|
116
|
+
onScroll?: (event: Event, view: EditorView) => boolean | void;
|
|
102
117
|
/**
|
|
103
118
|
* optional property to fold code for the supported modes e.g: xml, json etc.
|
|
104
119
|
*/
|
|
105
120
|
supportCodeFolding?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* highlight active line where the cursor is currently in
|
|
123
|
+
*/
|
|
124
|
+
shouldHighlightActiveLine?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* additional extensions to customize the editor further
|
|
127
|
+
*/
|
|
128
|
+
additionalExtensions?: Extension[];
|
|
129
|
+
/**
|
|
130
|
+
* codemirror minimal setup flag
|
|
131
|
+
*/
|
|
132
|
+
shouldHaveMinimalSetup?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* If the <Tab> key is enabled as normal input, i.e. it won't have the behavior of changing to the next input element, expected in a web app.
|
|
135
|
+
*/
|
|
136
|
+
enableTab?: boolean;
|
|
106
137
|
}
|
|
107
138
|
|
|
139
|
+
const addExtensionsFor = (flag: boolean, ...extensions: Extension[]) => (flag ? [...extensions] : []);
|
|
140
|
+
const addToKeyMapConfigFor = (flag: boolean, ...keys: any) => (flag ? [...keys] : []);
|
|
141
|
+
const addHandlersFor = (flag: boolean, handlerName: string, handler: any) =>
|
|
142
|
+
flag ? ({ [handlerName]: handler } as DOMEventHandlers<any>) : {};
|
|
143
|
+
|
|
108
144
|
/**
|
|
109
145
|
* Includes a code editor, currently we use CodeMirror library as base.
|
|
110
146
|
*/
|
|
111
147
|
export const CodeEditor = ({
|
|
112
148
|
onChange,
|
|
149
|
+
onSelection,
|
|
150
|
+
onMouseDown,
|
|
151
|
+
onFocusChange,
|
|
152
|
+
onKeyDown,
|
|
153
|
+
onCursorChange,
|
|
113
154
|
name,
|
|
114
155
|
id,
|
|
115
|
-
mode
|
|
156
|
+
mode,
|
|
116
157
|
preventLineNumbers = false,
|
|
117
158
|
defaultValue = "",
|
|
118
159
|
readOnly = false,
|
|
119
|
-
|
|
160
|
+
shouldHaveMinimalSetup = true,
|
|
120
161
|
wrapLines = false,
|
|
121
162
|
onScroll,
|
|
122
|
-
|
|
163
|
+
setEditorView,
|
|
123
164
|
supportCodeFolding = false,
|
|
165
|
+
shouldHighlightActiveLine = false,
|
|
124
166
|
outerDivAttributes,
|
|
125
167
|
tabIntentSize = 2,
|
|
126
168
|
tabIntentStyle = "tab",
|
|
169
|
+
placeholder,
|
|
170
|
+
additionalExtensions = [],
|
|
127
171
|
tabForceSpaceForModes = ["python", "yaml"],
|
|
172
|
+
enableTab = false,
|
|
173
|
+
height,
|
|
128
174
|
}: CodeEditorProps) => {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
useEffect(() => {
|
|
132
|
-
const editorInstance = CodeMirror.fromTextArea(domRef.current!, {
|
|
133
|
-
mode: convertMode(mode),
|
|
134
|
-
lineWrapping: wrapLines,
|
|
135
|
-
lineNumbers: !preventLineNumbers,
|
|
136
|
-
tabSize: tabIntentSize,
|
|
137
|
-
indentUnit: tabIntentSize,
|
|
138
|
-
indentWithTabs: tabIntentStyle === "tab" && !(tabForceSpaceForModes ?? []).includes(mode),
|
|
139
|
-
theme: "xq-light",
|
|
140
|
-
readOnly: readOnly,
|
|
141
|
-
extraKeys: {
|
|
142
|
-
Tab: function (cm) {
|
|
143
|
-
cm.execCommand(cm.getOption("indentWithTabs") ? "insertTab" : "insertSoftTab");
|
|
144
|
-
},
|
|
145
|
-
},
|
|
146
|
-
foldGutter: supportCodeFolding,
|
|
147
|
-
gutters: supportCodeFolding ? ["CodeMirror-linenumbers", "CodeMirror-foldgutter"] : [],
|
|
148
|
-
});
|
|
175
|
+
const parent = useRef<any>(undefined);
|
|
149
176
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
177
|
+
const onKeyDownHandler = (event: KeyboardEvent, view: EditorView) => {
|
|
178
|
+
if (onKeyDown && !onKeyDown(event)) {
|
|
179
|
+
if (event.key === "Enter") {
|
|
180
|
+
const cursor = view.state.selection.main.head;
|
|
181
|
+
const cursorLine = view.state.doc.lineAt(cursor).number;
|
|
182
|
+
const offsetFromFirstLine = view.state.doc.line(cursorLine).to;
|
|
183
|
+
view.dispatch({
|
|
184
|
+
changes: {
|
|
185
|
+
from: offsetFromFirstLine,
|
|
186
|
+
insert: "\n",
|
|
187
|
+
},
|
|
188
|
+
selection: {
|
|
189
|
+
anchor: offsetFromFirstLine + 1,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
}
|
|
156
193
|
}
|
|
194
|
+
};
|
|
157
195
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
196
|
+
React.useEffect(() => {
|
|
197
|
+
const tabIndent =
|
|
198
|
+
!!(tabIntentStyle === "tab" && mode && !(tabForceSpaceForModes ?? []).includes(mode)) || enableTab;
|
|
199
|
+
const keyMapConfigs = [
|
|
200
|
+
defaultKeymap as KeyBinding,
|
|
201
|
+
...addToKeyMapConfigFor(supportCodeFolding, foldKeymap),
|
|
202
|
+
...addToKeyMapConfigFor(tabIndent, indentWithTab),
|
|
203
|
+
];
|
|
204
|
+
const domEventHandlers = {
|
|
205
|
+
...addHandlersFor(!!onScroll, "scroll", onScroll),
|
|
206
|
+
...addHandlersFor(
|
|
207
|
+
!!onMouseDown,
|
|
208
|
+
"mousedown",
|
|
209
|
+
(_: any, view: EditorView) => onMouseDown && onMouseDown(view)
|
|
210
|
+
),
|
|
211
|
+
...addHandlersFor(!!onFocusChange, "blur", () => onFocusChange && onFocusChange(false)),
|
|
212
|
+
...addHandlersFor(!!onFocusChange, "focus", () => onFocusChange && onFocusChange(true)),
|
|
213
|
+
...addHandlersFor(!!onKeyDown, "keydown", onKeyDownHandler),
|
|
214
|
+
} as DOMEventHandlers<any>;
|
|
215
|
+
const extensions = [
|
|
216
|
+
markField,
|
|
217
|
+
adaptedPlaceholder(placeholder),
|
|
218
|
+
adaptedHighlightSpecialChars(),
|
|
219
|
+
useCodeMirrorModeExtension(mode),
|
|
220
|
+
keymap?.of(keyMapConfigs),
|
|
221
|
+
EditorState?.tabSize.of(tabIntentSize),
|
|
222
|
+
EditorState?.readOnly.of(readOnly),
|
|
223
|
+
AdaptedEditorViewDomEventHandlers(domEventHandlers) as Extension,
|
|
224
|
+
EditorView?.updateListener.of((v: ViewUpdate) => {
|
|
225
|
+
onChange && onChange(v.state.doc.toString());
|
|
226
|
+
|
|
227
|
+
if (onSelection)
|
|
228
|
+
onSelection(v.state.selection.ranges.filter((r) => !r.empty).map(({ from, to }) => ({ from, to })));
|
|
229
|
+
|
|
230
|
+
if (onCursorChange) {
|
|
231
|
+
const cursorPosition = v.state.selection.main.head ?? 0;
|
|
232
|
+
const editorRect = v.view.dom.getBoundingClientRect();
|
|
233
|
+
const coords = v.view.coordsAtPos(cursorPosition),
|
|
234
|
+
scrollInfo = v.view.scrollDOM;
|
|
235
|
+
if (coords && scrollInfo && editorRect) {
|
|
236
|
+
// Calculate the coordinates relative to the editor's top-left corner
|
|
237
|
+
const relativeLeft = coords.left - editorRect.left;
|
|
238
|
+
const relativeBottom = coords.bottom - editorRect.bottom;
|
|
239
|
+
|
|
240
|
+
onCursorChange(
|
|
241
|
+
cursorPosition,
|
|
242
|
+
{ ...coords, left: relativeLeft, bottom: relativeBottom },
|
|
243
|
+
scrollInfo,
|
|
244
|
+
v.view
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}),
|
|
249
|
+
addExtensionsFor(shouldHaveMinimalSetup, minimalSetup),
|
|
250
|
+
addExtensionsFor(!preventLineNumbers, adaptedLineNumbers()),
|
|
251
|
+
addExtensionsFor(shouldHighlightActiveLine, adaptedHighlightActiveLine()),
|
|
252
|
+
addExtensionsFor(wrapLines, EditorView?.lineWrapping),
|
|
253
|
+
addExtensionsFor(supportCodeFolding, adaptedFoldGutter(), adaptedCodeFolding()),
|
|
254
|
+
additionalExtensions,
|
|
255
|
+
];
|
|
256
|
+
|
|
257
|
+
const view: EditorView = new AdaptedEditorView({
|
|
258
|
+
state: EditorState?.create({
|
|
259
|
+
doc: defaultValue,
|
|
260
|
+
extensions,
|
|
261
|
+
}),
|
|
262
|
+
parent: parent.current,
|
|
263
|
+
});
|
|
163
264
|
|
|
164
265
|
if (height) {
|
|
165
|
-
|
|
266
|
+
view.dom.style.height = typeof height === "string" ? height : `${height}px`;
|
|
166
267
|
}
|
|
167
268
|
|
|
168
|
-
|
|
269
|
+
setEditorView && setEditorView(view);
|
|
169
270
|
|
|
170
|
-
return
|
|
171
|
-
|
|
271
|
+
return () => {
|
|
272
|
+
view.destroy();
|
|
273
|
+
setEditorView && setEditorView(undefined);
|
|
172
274
|
};
|
|
173
|
-
}, [
|
|
275
|
+
}, [parent.current, mode, preventLineNumbers]);
|
|
174
276
|
|
|
175
277
|
return (
|
|
176
|
-
<div
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
*/
|
|
184
|
-
data-test-id="codemirror-wrapper"
|
|
185
|
-
id={id ? id : `codemirror-${name}`}
|
|
186
|
-
name={name}
|
|
187
|
-
defaultValue={defaultValue}
|
|
188
|
-
/>
|
|
189
|
-
</div>
|
|
278
|
+
<div
|
|
279
|
+
id={id ? id : `codemirror-${name}`}
|
|
280
|
+
ref={parent}
|
|
281
|
+
data-test-id="codemirror-wrapper"
|
|
282
|
+
className={`${eccgui}-codeeditor ${eccgui}-codeeditor--mode-${mode}`}
|
|
283
|
+
{...outerDivAttributes}
|
|
284
|
+
/>
|
|
190
285
|
);
|
|
191
286
|
};
|
|
192
287
|
|
|
193
|
-
|
|
194
|
-
switch (mode) {
|
|
195
|
-
case "undefined":
|
|
196
|
-
return undefined;
|
|
197
|
-
case "json":
|
|
198
|
-
return {
|
|
199
|
-
name: "javascript",
|
|
200
|
-
jsonld: true,
|
|
201
|
-
};
|
|
202
|
-
default:
|
|
203
|
-
return mode;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
288
|
+
CodeEditor.supportedModes = supportedCodeEditorModes;
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
@import "~codemirror/addon/fold/foldgutter";
|
|
1
|
+
// own vars
|
|
2
|
+
$eccgui-color-codeeditor-background: $eccgui-color-textfield-background !default;
|
|
4
3
|
|
|
5
4
|
// adjustments
|
|
6
5
|
// stylelint-disable selector-class-pattern
|
|
7
6
|
.#{$eccgui}-codeeditor {
|
|
7
|
+
position: relative;
|
|
8
|
+
display: flex;
|
|
8
9
|
max-width: 100%;
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
[class^="cm-theme"] {
|
|
12
|
+
width: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.cm-editor {
|
|
16
|
+
width: 100%;
|
|
11
17
|
height: 290px;
|
|
12
18
|
clip-path: unset !important; // we may check later why they set inset(0) now
|
|
19
|
+
background-color: $eccgui-color-codeeditor-background;
|
|
13
20
|
border-radius: $pt-border-radius;
|
|
14
21
|
|
|
15
22
|
// get them a "border" like input boxes from blueprintjs
|
|
16
23
|
box-shadow: input-transition-shadow($input-shadow-color-focus), $pt-input-box-shadow;
|
|
17
24
|
|
|
18
|
-
|
|
19
|
-
box-shadow: input-transition-shadow($input-shadow-color-focus, true), $input-box-shadow-focus;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.CodeMirror-scroll {
|
|
25
|
+
.cm-scroller {
|
|
23
26
|
width: calc(100% - 2px);
|
|
24
27
|
height: calc(100% - 2px);
|
|
25
28
|
|
|
@@ -27,13 +30,11 @@
|
|
|
27
30
|
padding: 0;
|
|
28
31
|
margin: 1px;
|
|
29
32
|
cursor: text;
|
|
33
|
+
}
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
&::-webkit-scrollbar {
|
|
35
|
-
display: none; // Chrome, Safari and Opera
|
|
36
|
-
}
|
|
35
|
+
&.cm-focused {
|
|
36
|
+
outline: none;
|
|
37
|
+
box-shadow: input-transition-shadow($input-shadow-color-focus, true), $input-box-shadow-focus;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
.CodeMirror-hscrollbar {
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
bottom: 1px;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
.
|
|
56
|
+
.cm-content {
|
|
56
57
|
border-right-width: $eccgui-size-inline-whitespace !important;
|
|
57
58
|
}
|
|
58
59
|
|
|
@@ -72,12 +73,14 @@
|
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
|
|
76
|
+
// cm-lineNumbers
|
|
77
|
+
|
|
75
78
|
.#{$prefix}--accordion__content {
|
|
76
|
-
.
|
|
77
|
-
.
|
|
78
|
-
.
|
|
79
|
-
.
|
|
80
|
-
.
|
|
79
|
+
.cm-scroller,
|
|
80
|
+
.cm-content,
|
|
81
|
+
.cm-gutter,
|
|
82
|
+
.cm-gutters,
|
|
83
|
+
.cm-lineNumbers {
|
|
81
84
|
box-sizing: content-box;
|
|
82
85
|
}
|
|
83
86
|
}
|
|
@@ -91,23 +94,3 @@
|
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
// stylelint-enable selector-class-pattern
|
|
94
|
-
|
|
95
|
-
//custom styles for json mode
|
|
96
|
-
.#{$eccgui}-codeeditor--mode-json {
|
|
97
|
-
.CodeMirror-line {
|
|
98
|
-
& > span {
|
|
99
|
-
span.cm-property {
|
|
100
|
-
color: $eccgui-color-warning-text;
|
|
101
|
-
}
|
|
102
|
-
span.cm-string {
|
|
103
|
-
color: $eccgui-color-success-text;
|
|
104
|
-
}
|
|
105
|
-
span.cm-number {
|
|
106
|
-
color: $eccgui-color-accent;
|
|
107
|
-
}
|
|
108
|
-
span.cm-atom {
|
|
109
|
-
color: $eccgui-color-primary;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { defaultHighlightStyle, StreamLanguage, StreamParser, LanguageSupport } from "@codemirror/language";
|
|
2
|
+
|
|
3
|
+
//modes imports
|
|
4
|
+
import { markdown } from "@codemirror/lang-markdown";
|
|
5
|
+
import { json } from "@codemirror/lang-json";
|
|
6
|
+
import { xml } from "@codemirror/lang-xml";
|
|
7
|
+
import { javascript } from "@codemirror/legacy-modes/mode/javascript";
|
|
8
|
+
import { python } from "@codemirror/legacy-modes/mode/python";
|
|
9
|
+
import { sparql } from "@codemirror/legacy-modes/mode/sparql";
|
|
10
|
+
import { sql } from "@codemirror/legacy-modes/mode/sql";
|
|
11
|
+
import { turtle } from "@codemirror/legacy-modes/mode/turtle";
|
|
12
|
+
import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2";
|
|
13
|
+
import { yaml } from "@codemirror/legacy-modes/mode/yaml";
|
|
14
|
+
import { ntriples } from "@codemirror/legacy-modes/mode/ntriples";
|
|
15
|
+
import { mathematica } from "@codemirror/legacy-modes/mode/mathematica";
|
|
16
|
+
|
|
17
|
+
//adaptations
|
|
18
|
+
import { adaptedSyntaxHighlighting } from "../tests/codemirrorTestHelper";
|
|
19
|
+
|
|
20
|
+
const supportedModes = {
|
|
21
|
+
markdown,
|
|
22
|
+
python,
|
|
23
|
+
sparql,
|
|
24
|
+
turtle,
|
|
25
|
+
xml,
|
|
26
|
+
yaml,
|
|
27
|
+
jinja2,
|
|
28
|
+
json,
|
|
29
|
+
ntriples,
|
|
30
|
+
mathematica,
|
|
31
|
+
sql,
|
|
32
|
+
javascript,
|
|
33
|
+
} as const;
|
|
34
|
+
|
|
35
|
+
export const supportedCodeEditorModes = Object.keys(supportedModes) as Array<keyof typeof supportedModes>;
|
|
36
|
+
export type SupportedCodeEditorModes = (typeof supportedCodeEditorModes)[number];
|
|
37
|
+
|
|
38
|
+
export const useCodeMirrorModeExtension = (mode?: SupportedCodeEditorModes) => {
|
|
39
|
+
return !mode
|
|
40
|
+
? adaptedSyntaxHighlighting(defaultHighlightStyle)
|
|
41
|
+
: ["json", "markdown", "xml"].includes(mode)
|
|
42
|
+
? ((typeof supportedModes[mode] === "function" ? supportedModes[mode] : () => {}) as () => LanguageSupport)()
|
|
43
|
+
: StreamLanguage?.define(supportedModes[mode] as StreamParser<unknown>);
|
|
44
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file helps avoid jest errors that arise from codemirror node_module files.
|
|
3
|
+
* Errors like 'Cannot read keyword of undefined',
|
|
4
|
+
* '(view, highlightActiveLine) is not a function',
|
|
5
|
+
* 'EditorView is not a constructor'
|
|
6
|
+
* This errors do not exist during compilation only during testing.
|
|
7
|
+
*/
|
|
8
|
+
//Todo this should become redundant with later patches that avoid this error
|
|
9
|
+
|
|
10
|
+
import { EditorView, placeholder, highlightSpecialChars, lineNumbers, highlightActiveLine } from "@codemirror/view";
|
|
11
|
+
import { syntaxHighlighting, foldGutter, codeFolding } from "@codemirror/language";
|
|
12
|
+
import { Extension } from "@codemirror/state";
|
|
13
|
+
|
|
14
|
+
/** placeholder extension, current error '_view.placeholder is not a function' */
|
|
15
|
+
export const adaptedPlaceholder = (text?: string) =>
|
|
16
|
+
typeof placeholder === "function" ? placeholder(text ?? "") : ((() => {}) as unknown as Extension);
|
|
17
|
+
|
|
18
|
+
function isConstructor(f: any) {
|
|
19
|
+
try {
|
|
20
|
+
new f();
|
|
21
|
+
} catch (err) {
|
|
22
|
+
// verify err is the expected error and then
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** current error '_view.Editor is not a constructor' */
|
|
29
|
+
export const AdaptedEditorView = isConstructor(EditorView)
|
|
30
|
+
? EditorView
|
|
31
|
+
: (class view {
|
|
32
|
+
constructor() {}
|
|
33
|
+
destroy() {}
|
|
34
|
+
} as any);
|
|
35
|
+
|
|
36
|
+
const emptyExtension = (() => {}) as any;
|
|
37
|
+
/** extension adding event handlers, current error '(view, domEventHandlers) is not a function' */
|
|
38
|
+
export const AdaptedEditorViewDomEventHandlers =
|
|
39
|
+
typeof EditorView?.domEventHandlers == "function" ? EditorView?.domEventHandlers : emptyExtension;
|
|
40
|
+
|
|
41
|
+
export const adaptedSyntaxHighlighting = (style: any) =>
|
|
42
|
+
typeof syntaxHighlighting === "function" ? syntaxHighlighting(style) : emptyExtension;
|
|
43
|
+
|
|
44
|
+
export const adaptedHighlightSpecialChars = (props?: any) =>
|
|
45
|
+
typeof highlightSpecialChars === "function" ? highlightSpecialChars(props) : emptyExtension;
|
|
46
|
+
|
|
47
|
+
export const adaptedLineNumbers = (props?: any) =>
|
|
48
|
+
typeof lineNumbers === "function" ? lineNumbers(props) : emptyExtension;
|
|
49
|
+
|
|
50
|
+
export const adaptedHighlightActiveLine = () =>
|
|
51
|
+
typeof highlightActiveLine === "function" ? highlightActiveLine() : emptyExtension;
|
|
52
|
+
|
|
53
|
+
export const adaptedFoldGutter = (props?: any) =>
|
|
54
|
+
typeof foldGutter === "function" ? foldGutter(props) : emptyExtension;
|
|
55
|
+
|
|
56
|
+
export const adaptedCodeFolding = (props?: any) =>
|
|
57
|
+
typeof codeFolding === "function" ? codeFolding(props) : emptyExtension;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { EdgeDefault } from "./EdgeDefault";
|
|
9
9
|
import { EdgeStep } from "./EdgeStep";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
/** @deprecated (v25) will be removed without replacement, define it yourself or use `<ReactFlow/` with `configuration` option. */
|
|
12
12
|
export const edgeTypes = {
|
|
13
13
|
default: EdgeDefault,
|
|
14
14
|
straight: EdgeDefault,
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { miniMapUtils } from "./minimap/utils";
|
|
2
|
-
import { nodeDefaultUtils } from "./nodes/nodeUtils";
|
|
3
|
-
|
|
4
1
|
export * from "./nodes/NodeDefault";
|
|
5
2
|
export * from "./nodes/NodeContent";
|
|
6
3
|
export * from "./nodes/NodeContentExtension";
|
|
@@ -18,13 +15,5 @@ export * from "./minimap/MiniMap";
|
|
|
18
15
|
export * from "./minimap/utils";
|
|
19
16
|
|
|
20
17
|
// deprecated exports
|
|
21
|
-
export { nodeTypes } from "./nodes/nodeTypes"; //
|
|
22
|
-
export { edgeTypes } from "./edges/edgeTypes"; //
|
|
23
|
-
// @deprecated was moved to `miniMapUtils.nodeClassName`
|
|
24
|
-
const minimapNodeClassName = miniMapUtils.nodeClassName;
|
|
25
|
-
// @deprecated was moved to `miniMapUtils.nodeClassName`
|
|
26
|
-
const minimapNodeColor = miniMapUtils.nodeColor;
|
|
27
|
-
export { minimapNodeClassName, minimapNodeColor };
|
|
28
|
-
// @deprecated renamed to `nodeDefaultUtils`
|
|
29
|
-
const nodeUtils = nodeDefaultUtils;
|
|
30
|
-
export { nodeUtils };
|
|
18
|
+
export { nodeTypes } from "./nodes/nodeTypes"; // @deprecated removed in v25
|
|
19
|
+
export { edgeTypes } from "./edges/edgeTypes"; // @deprecated removed in v25
|
|
@@ -8,28 +8,6 @@
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.#{$eccgui}-graphviz__minimap__node--highlight-match {
|
|
12
|
-
stroke: $eccgui-color-accent;
|
|
13
|
-
stroke-width: 5;
|
|
14
|
-
}
|
|
15
|
-
.#{$eccgui}-graphviz__minimap__node--highlight-altmatch {
|
|
16
|
-
stroke: complement($eccgui-color-primary);
|
|
17
|
-
stroke-width: 5;
|
|
18
|
-
}
|
|
19
|
-
.#{$eccgui}-graphviz__minimap__node--highlight-success {
|
|
20
|
-
stroke: $eccgui-color-success-text;
|
|
21
|
-
stroke-width: 5;
|
|
22
|
-
}
|
|
23
|
-
.#{$eccgui}-graphviz__minimap__node--highlight-warning {
|
|
24
|
-
stroke: $eccgui-color-warning-text;
|
|
25
|
-
stroke-width: 7;
|
|
26
|
-
}
|
|
27
|
-
.#{$eccgui}-graphviz__minimap__node--highlight-danger {
|
|
28
|
-
fill: $eccgui-color-danger-text;
|
|
29
|
-
stroke: $eccgui-color-danger-text;
|
|
30
|
-
stroke-width: 9;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
11
|
.react-flow__minimap-node {
|
|
34
12
|
// FIXME: this is a first basic implementation, later it should be possible to highlight without overwriting stroke/fill colors
|
|
35
13
|
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { intentClassName } from "../../../common/Intent";
|
|
2
2
|
|
|
3
3
|
import { CLASSPREFIX as eccgui } from "./../../../configuration/constants";
|
|
4
|
-
import { nodeContentUtils } from "./../nodes/NodeContent";
|
|
5
4
|
|
|
6
5
|
const nodeClassName = (node: any) => {
|
|
7
6
|
const typeClass = `${eccgui}-graphviz__minimap__node--` + node.type;
|
|
8
|
-
|
|
9
|
-
? nodeContentUtils.gethighlightedStateClasses(node.data.highlightedState, `${eccgui}-graphviz__minimap__node`)
|
|
10
|
-
: "";
|
|
7
|
+
// TODO: re-implement the evaluation of node.data.highlightColor so it is highlighted the same way in the minimap, too.
|
|
11
8
|
const intentClass = node.data?.intent ? intentClassName(node.data.intent) : "";
|
|
12
|
-
return `${typeClass} ${intentClass}
|
|
9
|
+
return `${typeClass} ${intentClass}`;
|
|
13
10
|
};
|
|
14
11
|
|
|
15
12
|
const nodeColor = (node: any) => {
|