@eccenca/gui-elements 24.0.0-rc.2 → 24.0.0-rc.4

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.
Files changed (378) hide show
  1. package/CHANGELOG.md +64 -5
  2. package/README.md +5 -3
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  4. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  5. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -5
  6. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  7. package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +4 -8
  8. package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
  9. package/dist/cjs/cmem/markdown/Markdown.js +6 -4
  10. package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
  11. package/dist/cjs/cmem/markdown/highlightSearchWords.js +5 -8
  12. package/dist/cjs/cmem/markdown/highlightSearchWords.js.map +1 -1
  13. package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
  14. package/dist/cjs/common/index.js +1 -3
  15. package/dist/cjs/common/index.js.map +1 -1
  16. package/dist/cjs/components/Accordion/Accordion.js +2 -7
  17. package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
  18. package/dist/cjs/components/Accordion/AccordionItem.js +1 -2
  19. package/dist/cjs/components/Accordion/AccordionItem.js.map +1 -1
  20. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +117 -64
  21. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  22. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  23. package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js +13 -51
  24. package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
  25. package/dist/cjs/components/AutoSuggestion/extensions/markText.js +55 -0
  26. package/dist/cjs/components/AutoSuggestion/extensions/markText.js.map +1 -0
  27. package/dist/cjs/components/AutoSuggestion/index.js +1 -3
  28. package/dist/cjs/components/AutoSuggestion/index.js.map +1 -1
  29. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +2 -6
  30. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  31. package/dist/cjs/components/AutocompleteField/index.js +1 -0
  32. package/dist/cjs/components/AutocompleteField/index.js.map +1 -1
  33. package/dist/cjs/components/Breadcrumb/BreadcrumbList.js +2 -2
  34. package/dist/cjs/components/Breadcrumb/BreadcrumbList.js.map +1 -1
  35. package/dist/cjs/components/Button/Button.js.map +1 -1
  36. package/dist/cjs/components/Card/CardHeader.js +2 -2
  37. package/dist/cjs/components/Card/CardHeader.js.map +1 -1
  38. package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js +3 -3
  39. package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
  40. package/dist/cjs/components/Dialog/AlertDialog.js.map +1 -1
  41. package/dist/cjs/components/Dialog/Modal.js +2 -2
  42. package/dist/cjs/components/Dialog/Modal.js.map +1 -1
  43. package/dist/cjs/components/Grid/Grid.js.map +1 -1
  44. package/dist/cjs/components/Grid/GridColumn.js +1 -1
  45. package/dist/cjs/components/Grid/GridColumn.js.map +1 -1
  46. package/dist/cjs/components/Icon/Icon.js +3 -5
  47. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  48. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  49. package/dist/cjs/components/MultiSelect/MultiSelect.js +33 -16
  50. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
  51. package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js +7 -2
  52. package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
  53. package/dist/cjs/components/Notification/Notification.js +2 -5
  54. package/dist/cjs/components/Notification/Notification.js.map +1 -1
  55. package/dist/cjs/components/Select/Select.js +0 -6
  56. package/dist/cjs/components/Select/Select.js.map +1 -1
  57. package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
  58. package/dist/cjs/components/SuggestField/SuggestField.js +2 -2
  59. package/dist/cjs/components/SuggestField/SuggestField.js.map +1 -1
  60. package/dist/cjs/components/Table/Table.js +0 -3
  61. package/dist/cjs/components/Table/Table.js.map +1 -1
  62. package/dist/cjs/components/Tag/Tag.js +1 -0
  63. package/dist/cjs/components/Tag/Tag.js.map +1 -1
  64. package/dist/cjs/components/TextField/TextArea.js +1 -19
  65. package/dist/cjs/components/TextField/TextArea.js.map +1 -1
  66. package/dist/cjs/components/TextField/TextField.js +6 -24
  67. package/dist/cjs/components/TextField/TextField.js.map +1 -1
  68. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  69. package/dist/cjs/components/Typography/Highlighter.js +0 -6
  70. package/dist/cjs/components/Typography/Highlighter.js.map +1 -1
  71. package/dist/cjs/components/Typography/index.js +0 -8
  72. package/dist/cjs/components/Typography/index.js.map +1 -1
  73. package/dist/cjs/components/Workspace/WorkspaceContent.js +1 -1
  74. package/dist/cjs/components/Workspace/WorkspaceContent.js.map +1 -1
  75. package/dist/cjs/components/index.js +0 -1
  76. package/dist/cjs/components/index.js.map +1 -1
  77. package/dist/cjs/extensions/codemirror/CodeMirror.js +92 -86
  78. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  79. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +43 -0
  80. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
  81. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +49 -0
  82. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
  83. package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +1 -1
  84. package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +1 -1
  85. package/dist/cjs/extensions/react-flow/index.js +3 -14
  86. package/dist/cjs/extensions/react-flow/index.js.map +1 -1
  87. package/dist/cjs/extensions/react-flow/minimap/utils.js +4 -7
  88. package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
  89. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +2 -10
  90. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  91. package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  92. package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js +1 -1
  93. package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
  94. package/dist/cjs/index.js +1 -4
  95. package/dist/cjs/index.js.map +1 -1
  96. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +1 -0
  97. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
  98. package/dist/cjs/legacy-replacements/Button/Button.js +2 -0
  99. package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -1
  100. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +1 -0
  101. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -1
  102. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +1 -0
  103. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
  104. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +2 -0
  105. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
  106. package/dist/cjs/legacy-replacements/Radio/RadioButton.js +2 -0
  107. package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -1
  108. package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -0
  109. package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
  110. package/dist/cjs/legacy-replacements/TextField/TextField.js +2 -0
  111. package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
  112. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  113. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  114. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -4
  115. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  116. package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +2 -4
  117. package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
  118. package/dist/esm/cmem/markdown/Markdown.js +6 -4
  119. package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
  120. package/dist/esm/cmem/markdown/highlightSearchWords.js +5 -8
  121. package/dist/esm/cmem/markdown/highlightSearchWords.js.map +1 -1
  122. package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
  123. package/dist/esm/common/index.js +0 -2
  124. package/dist/esm/common/index.js.map +1 -1
  125. package/dist/esm/components/Accordion/Accordion.js +2 -7
  126. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  127. package/dist/esm/components/Accordion/AccordionItem.js +1 -2
  128. package/dist/esm/components/Accordion/AccordionItem.js.map +1 -1
  129. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +136 -82
  130. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  131. package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  132. package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js +36 -60
  133. package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
  134. package/dist/esm/components/AutoSuggestion/extensions/markText.js +72 -0
  135. package/dist/esm/components/AutoSuggestion/extensions/markText.js.map +1 -0
  136. package/dist/esm/components/AutoSuggestion/index.js +1 -2
  137. package/dist/esm/components/AutoSuggestion/index.js.map +1 -1
  138. package/dist/esm/components/AutocompleteField/AutoCompleteField.js +3 -6
  139. package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  140. package/dist/esm/components/AutocompleteField/index.js +1 -0
  141. package/dist/esm/components/AutocompleteField/index.js.map +1 -1
  142. package/dist/esm/components/Breadcrumb/BreadcrumbList.js +2 -2
  143. package/dist/esm/components/Breadcrumb/BreadcrumbList.js.map +1 -1
  144. package/dist/esm/components/Button/Button.js.map +1 -1
  145. package/dist/esm/components/Card/CardHeader.js +2 -2
  146. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  147. package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js +2 -2
  148. package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
  149. package/dist/esm/components/Dialog/AlertDialog.js.map +1 -1
  150. package/dist/esm/components/Dialog/Modal.js +3 -3
  151. package/dist/esm/components/Dialog/Modal.js.map +1 -1
  152. package/dist/esm/components/Grid/Grid.js.map +1 -1
  153. package/dist/esm/components/Grid/GridColumn.js +1 -1
  154. package/dist/esm/components/Grid/GridColumn.js.map +1 -1
  155. package/dist/esm/components/Icon/Icon.js +1 -2
  156. package/dist/esm/components/Icon/Icon.js.map +1 -1
  157. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  158. package/dist/esm/components/MultiSelect/MultiSelect.js +36 -18
  159. package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
  160. package/dist/esm/components/MultiSuggestField/MultiSuggestField.js +6 -1
  161. package/dist/esm/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
  162. package/dist/esm/components/Notification/Notification.js +2 -6
  163. package/dist/esm/components/Notification/Notification.js.map +1 -1
  164. package/dist/esm/components/Select/Select.js +0 -6
  165. package/dist/esm/components/Select/Select.js.map +1 -1
  166. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  167. package/dist/esm/components/SuggestField/SuggestField.js +1 -1
  168. package/dist/esm/components/SuggestField/SuggestField.js.map +1 -1
  169. package/dist/esm/components/Table/Table.js +0 -3
  170. package/dist/esm/components/Table/Table.js.map +1 -1
  171. package/dist/esm/components/Tag/Tag.js +1 -0
  172. package/dist/esm/components/Tag/Tag.js.map +1 -1
  173. package/dist/esm/components/TextField/TextArea.js +2 -20
  174. package/dist/esm/components/TextField/TextArea.js.map +1 -1
  175. package/dist/esm/components/TextField/TextField.js +6 -24
  176. package/dist/esm/components/TextField/TextField.js.map +1 -1
  177. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  178. package/dist/esm/components/Typography/Highlighter.js +3 -6
  179. package/dist/esm/components/Typography/Highlighter.js.map +1 -1
  180. package/dist/esm/components/Typography/index.js +0 -7
  181. package/dist/esm/components/Typography/index.js.map +1 -1
  182. package/dist/esm/components/Workspace/WorkspaceContent.js +1 -1
  183. package/dist/esm/components/Workspace/WorkspaceContent.js.map +1 -1
  184. package/dist/esm/components/index.js +0 -1
  185. package/dist/esm/components/index.js.map +1 -1
  186. package/dist/esm/extensions/codemirror/CodeMirror.js +133 -83
  187. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  188. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +39 -0
  189. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
  190. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +55 -0
  191. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
  192. package/dist/esm/extensions/react-flow/edges/edgeTypes.js +1 -1
  193. package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +1 -1
  194. package/dist/esm/extensions/react-flow/index.js +2 -12
  195. package/dist/esm/extensions/react-flow/index.js.map +1 -1
  196. package/dist/esm/extensions/react-flow/minimap/utils.js +4 -7
  197. package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
  198. package/dist/esm/extensions/react-flow/nodes/NodeContent.js +2 -10
  199. package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  200. package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  201. package/dist/esm/extensions/react-flow/nodes/nodeTypes.js +1 -1
  202. package/dist/esm/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
  203. package/dist/esm/index.js +1 -3
  204. package/dist/esm/index.js.map +1 -1
  205. package/dist/esm/legacy-replacements/Button/AffirmativeButton.js +1 -0
  206. package/dist/esm/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
  207. package/dist/esm/legacy-replacements/Button/Button.js +2 -0
  208. package/dist/esm/legacy-replacements/Button/Button.js.map +1 -1
  209. package/dist/esm/legacy-replacements/Button/DismissiveButton.js +1 -0
  210. package/dist/esm/legacy-replacements/Button/DismissiveButton.js.map +1 -1
  211. package/dist/esm/legacy-replacements/Button/DisruptiveButton.js +1 -0
  212. package/dist/esm/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
  213. package/dist/esm/legacy-replacements/Checkbox/Checkbox.js +2 -0
  214. package/dist/esm/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
  215. package/dist/esm/legacy-replacements/Radio/RadioButton.js +2 -0
  216. package/dist/esm/legacy-replacements/Radio/RadioButton.js.map +1 -1
  217. package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -0
  218. package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
  219. package/dist/esm/legacy-replacements/TextField/TextField.js +2 -0
  220. package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
  221. package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +3 -5
  222. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +0 -2
  223. package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +7 -11
  224. package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +3 -3
  225. package/dist/types/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.d.ts +1 -12
  226. package/dist/types/cmem/markdown/Markdown.d.ts +0 -1
  227. package/dist/types/cmem/markdown/highlightSearchWords.d.ts +0 -6
  228. package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +2 -2
  229. package/dist/types/common/index.d.ts +0 -24
  230. package/dist/types/components/Accordion/Accordion.d.ts +1 -6
  231. package/dist/types/components/Accordion/AccordionItem.d.ts +1 -6
  232. package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +27 -17
  233. package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +0 -1
  234. package/dist/types/components/AutoSuggestion/ExtendedCodeEditor.d.ts +10 -11
  235. package/dist/types/components/AutoSuggestion/extensions/markText.d.ts +16 -0
  236. package/dist/types/components/AutoSuggestion/index.d.ts +2 -2
  237. package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +11 -15
  238. package/dist/types/components/AutocompleteField/index.d.ts +1 -0
  239. package/dist/types/components/AutocompleteField/interfaces.d.ts +4 -2
  240. package/dist/types/components/Breadcrumb/BreadcrumbList.d.ts +1 -6
  241. package/dist/types/components/Button/Button.d.ts +0 -2
  242. package/dist/types/components/Card/CardHeader.d.ts +1 -9
  243. package/dist/types/components/Dialog/AlertDialog.d.ts +0 -1
  244. package/dist/types/components/Grid/Grid.d.ts +0 -5
  245. package/dist/types/components/Grid/GridColumn.d.ts +1 -6
  246. package/dist/types/components/Icon/BaseIcon.d.ts +2 -2
  247. package/dist/types/components/Icon/Icon.d.ts +0 -5
  248. package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -7
  249. package/dist/types/components/MultiSelect/MultiSelect.d.ts +12 -8
  250. package/dist/types/components/MultiSuggestField/MultiSuggestField.d.ts +11 -2
  251. package/dist/types/components/Notification/Notification.d.ts +1 -14
  252. package/dist/types/components/Select/Select.d.ts +0 -3
  253. package/dist/types/components/Spinner/Spinner.d.ts +3 -3
  254. package/dist/types/components/SuggestField/SuggestField.d.ts +5 -0
  255. package/dist/types/components/SuggestField/index.d.ts +1 -1
  256. package/dist/types/components/Table/Table.d.ts +1 -4
  257. package/dist/types/components/Tag/Tag.d.ts +0 -5
  258. package/dist/types/components/TextField/TextArea.d.ts +1 -21
  259. package/dist/types/components/TextField/TextField.d.ts +3 -23
  260. package/dist/types/components/Tooltip/Tooltip.d.ts +2 -2
  261. package/dist/types/components/Typography/Highlighter.d.ts +3 -6
  262. package/dist/types/components/Typography/index.d.ts +0 -6
  263. package/dist/types/components/index.d.ts +0 -1
  264. package/dist/types/extensions/codemirror/CodeMirror.d.ts +54 -26
  265. package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +23 -0
  266. package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +20 -0
  267. package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +1 -0
  268. package/dist/types/extensions/react-flow/index.d.ts +0 -14
  269. package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +6 -14
  270. package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +0 -1
  271. package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +1 -0
  272. package/dist/types/extensions/react-flow/nodes/sharedTypes.d.ts +0 -1
  273. package/dist/types/index.d.ts +1 -9
  274. package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +1 -0
  275. package/dist/types/legacy-replacements/Button/Button.d.ts +1 -0
  276. package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +1 -0
  277. package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +1 -0
  278. package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +1 -0
  279. package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +1 -0
  280. package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +4 -2
  281. package/dist/types/legacy-replacements/TextField/TextField.d.ts +1 -0
  282. package/package.json +26 -23
  283. package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -7
  284. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +0 -6
  285. package/src/cmem/ActivityControl/SilkActivityControl.tsx +8 -18
  286. package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +14 -11
  287. package/src/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.tsx +11 -7
  288. package/src/cmem/DateTimeDisplay/tests/ElapsedDateTimeDisplay.test.tsx +9 -4
  289. package/src/cmem/markdown/Markdown.stories.tsx +6 -0
  290. package/src/cmem/markdown/Markdown.tsx +8 -6
  291. package/src/cmem/markdown/highlightSearchWords.test.ts +3 -2
  292. package/src/cmem/markdown/highlightSearchWords.ts +5 -10
  293. package/src/cmem/markdown/markdown.utils.ts +10 -10
  294. package/src/cmem/markdown/markdownutils.test.ts +9 -5
  295. package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +1 -1
  296. package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +2 -2
  297. package/src/common/index.ts +0 -3
  298. package/src/components/Accordion/Accordion.tsx +0 -13
  299. package/src/components/Accordion/AccordionItem.tsx +0 -7
  300. package/src/components/Accordion/accordion.scss +0 -5
  301. package/src/components/Application/_config.scss +1 -1
  302. package/src/components/AutoSuggestion/AutoSuggestion.scss +39 -23
  303. package/src/components/AutoSuggestion/AutoSuggestion.tsx +190 -114
  304. package/src/components/AutoSuggestion/AutoSuggestionList.tsx +0 -3
  305. package/src/components/AutoSuggestion/ExtendedCodeEditor.tsx +47 -83
  306. package/src/components/AutoSuggestion/extensions/markText.ts +63 -0
  307. package/src/components/AutoSuggestion/index.ts +2 -2
  308. package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +13 -11
  309. package/src/components/AutocompleteField/AutoCompleteField.tsx +17 -19
  310. package/src/components/AutocompleteField/index.ts +1 -0
  311. package/src/components/AutocompleteField/interfaces.ts +5 -2
  312. package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -7
  313. package/src/components/Breadcrumb/breadcrumb.scss +8 -1
  314. package/src/components/Button/Button.tsx +0 -5
  315. package/src/components/Card/CardHeader.tsx +2 -10
  316. package/src/components/CodeAutocompleteField/CodeAutocompleteField.stories.tsx +9 -3
  317. package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +2 -2
  318. package/src/components/Dialog/AlertDialog.tsx +0 -3
  319. package/src/components/Dialog/Modal.tsx +3 -3
  320. package/src/components/Grid/Grid.tsx +0 -5
  321. package/src/components/Grid/GridColumn.tsx +0 -6
  322. package/src/components/Icon/BaseIcon.tsx +2 -2
  323. package/src/components/Icon/Icon.tsx +1 -5
  324. package/src/components/Icon/canonicalIconNames.tsx +3 -9
  325. package/src/components/MultiSelect/MultiSelect.tsx +46 -19
  326. package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +24 -21
  327. package/src/components/MultiSuggestField/MultiSuggestField.tsx +16 -3
  328. package/src/components/MultiSuggestField/_multisuggestfield.scss +8 -0
  329. package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +109 -15
  330. package/src/components/Notification/Notification.tsx +2 -17
  331. package/src/components/Notification/notification.scss +1 -2
  332. package/src/components/Select/Select.tsx +0 -10
  333. package/src/components/Spinner/Spinner.tsx +3 -6
  334. package/src/components/SuggestField/SuggestField.tsx +6 -1
  335. package/src/components/Table/Table.tsx +2 -7
  336. package/src/components/Tag/Tag.tsx +1 -8
  337. package/src/components/TextField/TextArea.tsx +2 -45
  338. package/src/components/TextField/TextField.tsx +9 -51
  339. package/src/components/TextField/textfield.scss +1 -2
  340. package/src/components/Tooltip/Tooltip.tsx +2 -2
  341. package/src/components/Typography/Highlighter.tsx +3 -6
  342. package/src/components/Typography/index.ts +0 -9
  343. package/src/components/Typography/typography.scss +10 -0
  344. package/src/components/Workspace/WorkspaceContent.tsx +1 -1
  345. package/src/components/index.scss +1 -1
  346. package/src/components/index.ts +0 -1
  347. package/src/extensions/_index.scss +1 -6
  348. package/src/extensions/codemirror/CodeMirror.tsx +191 -105
  349. package/src/extensions/codemirror/_codemirror.scss +25 -42
  350. package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +44 -0
  351. package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +57 -0
  352. package/src/extensions/react-flow/edges/edgeTypes.ts +1 -1
  353. package/src/extensions/react-flow/index.ts +2 -13
  354. package/src/extensions/react-flow/minimap/_minimap.scss +0 -22
  355. package/src/extensions/react-flow/minimap/utils.ts +2 -5
  356. package/src/extensions/react-flow/nodes/NodeContent.tsx +4 -27
  357. package/src/extensions/react-flow/nodes/NodeDefault.tsx +0 -3
  358. package/src/extensions/react-flow/nodes/_nodes.scss +0 -55
  359. package/src/extensions/react-flow/nodes/nodeTypes.ts +1 -1
  360. package/src/extensions/react-flow/nodes/sharedTypes.ts +0 -1
  361. package/src/index.scss +0 -1
  362. package/src/index.ts +1 -3
  363. package/src/legacy-replacements/Button/AffirmativeButton.tsx +1 -0
  364. package/src/legacy-replacements/Button/Button.tsx +2 -0
  365. package/src/legacy-replacements/Button/DismissiveButton.tsx +1 -0
  366. package/src/legacy-replacements/Button/DisruptiveButton.tsx +1 -0
  367. package/src/legacy-replacements/Checkbox/Checkbox.tsx +2 -0
  368. package/src/legacy-replacements/Radio/RadioButton.tsx +2 -0
  369. package/src/legacy-replacements/Tabs/Tabs.tsx +5 -4
  370. package/src/legacy-replacements/TextField/TextField.tsx +2 -0
  371. package/dist/cjs/components/NumericInput/NumericInput.js +0 -9
  372. package/dist/cjs/components/NumericInput/NumericInput.js.map +0 -1
  373. package/dist/esm/components/NumericInput/NumericInput.js +0 -6
  374. package/dist/esm/components/NumericInput/NumericInput.js.map +0 -1
  375. package/dist/types/components/NumericInput/NumericInput.d.ts +0 -3
  376. package/src/components/AutoSuggestion/AutoSuggestion.stories.tsx +0 -14
  377. package/src/components/MultiSelect/MultiSelect.stories.tsx +0 -14
  378. package/src/components/NumericInput/NumericInput.tsx +0 -6
@@ -1,50 +1,42 @@
1
- import React, { TextareaHTMLAttributes, useEffect, useRef } from "react";
2
- import CodeMirror, { ModeSpec, ModeSpecOptions } from "codemirror";
3
-
4
- import "codemirror/mode/markdown/markdown.js";
5
- import "codemirror/mode/python/python.js";
6
- import "codemirror/mode/sparql/sparql.js";
7
- import "codemirror/mode/sql/sql.js";
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, { 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
+ import { minimalSetup } from "codemirror";
21
7
 
8
+ import { markField } from "../../components/AutoSuggestion/extensions/markText";
22
9
  import { CLASSPREFIX as eccgui } from "../../configuration/constants";
23
10
 
24
- export const supportedCodeEditorModes = [
25
- "markdown",
26
- "python",
27
- "sparql",
28
- "sql",
29
- "turtle",
30
- "xml",
31
- "jinja2",
32
- "yaml",
33
- "json",
34
- "ntriples",
35
- "mathematica",
36
- "undefined",
37
- ] as const;
38
- type SupportedModesTuple = typeof supportedCodeEditorModes;
39
- export type SupportedCodeEditorModes = SupportedModesTuple[number];
11
+ //hooks
12
+ import {
13
+ SupportedCodeEditorModes,
14
+ supportedCodeEditorModes,
15
+ useCodeMirrorModeExtension,
16
+ } from "./hooks/useCodemirrorModeExtension.hooks";
17
+ //adaptations
18
+ import {
19
+ adaptedCodeFolding,
20
+ AdaptedEditorView,
21
+ AdaptedEditorViewDomEventHandlers,
22
+ adaptedFoldGutter,
23
+ adaptedHighlightActiveLine,
24
+ adaptedHighlightSpecialChars,
25
+ adaptedLineNumbers,
26
+ adaptedPlaceholder,
27
+ } from "./tests/codemirrorTestHelper";
40
28
 
41
29
  export interface CodeEditorProps {
42
30
  // Is called with the editor instance that allows access via the CodeMirror API
43
- setEditorInstance?: (editor: CodeMirror.Editor) => any;
31
+ setEditorView?: (editor: EditorView | undefined) => any;
44
32
  /**
45
33
  * `name` attribute of connected textarea element.
46
34
  */
47
35
  name: string;
36
+ /**
37
+ * Placeholder to be shown when no text has been entered, yet.
38
+ */
39
+ placeholder?: string;
48
40
  /**
49
41
  * `id` attribute of connected textarea element.
50
42
  * If not set then the default value is created by `codemirror-${name-attribute}`.
@@ -55,9 +47,31 @@ export interface CodeEditorProps {
55
47
  * As input the new value is given.
56
48
  */
57
49
  onChange?: (v: any) => void;
50
+ /**
51
+ * Called when the focus status changes
52
+ */
53
+ onFocusChange?: (focused: boolean) => any;
54
+ /**
55
+ * Called when the user presses a key
56
+ */
57
+ onKeyDown?: (event: KeyboardEvent) => boolean;
58
+ /**
59
+ * function invoked when any click occurs
60
+ */
61
+ onMouseDown?: (view: EditorView) => void;
62
+ /**
63
+ * Called when the user selects text
64
+ */
65
+ onSelection?: (ranges: { from: number; to: number }[]) => any;
66
+ /**
67
+ * Called when the cursor position changes
68
+ */
69
+ onCursorChange?: (pos: number, coords: Rect, scrollinfo: HTMLElement, cm: EditorView) => any;
70
+
58
71
  /**
59
72
  * Syntax mode of the code editor.
60
73
  */
74
+
61
75
  mode?: SupportedCodeEditorModes;
62
76
  /**
63
77
  * Default value used first when the editor is instanciated.
@@ -77,7 +91,7 @@ export interface CodeEditorProps {
77
91
  /** Long lines are wrapped and displayed on multiple lines */
78
92
  wrapLines?: boolean;
79
93
 
80
- outerDivAttributes?: Partial<TextareaHTMLAttributes<HTMLDivElement>>;
94
+ outerDivAttributes?: Omit<React.HTMLAttributes<HTMLDivElement>, "id" | "data-test-id">;
81
95
 
82
96
  /**
83
97
  * Size in spaces that is used for a tabulator key.
@@ -98,108 +112,180 @@ export interface CodeEditorProps {
98
112
  /**
99
113
  * handler for scroll event
100
114
  */
101
- onScroll?: (editorInstance: CodeMirror.Editor) => void;
115
+ onScroll?: (event: Event, view: EditorView) => boolean | void;
102
116
  /**
103
117
  * optional property to fold code for the supported modes e.g: xml, json etc.
104
118
  */
105
119
  supportCodeFolding?: boolean;
120
+ /**
121
+ * highlight active line where the cursor is currently in
122
+ */
123
+ shouldHighlightActiveLine?: boolean;
124
+ /**
125
+ * additional extensions to customize the editor further
126
+ */
127
+ additionalExtensions?: Extension[];
128
+ /**
129
+ * codemirror minimal setup flag
130
+ */
131
+ shouldHaveMinimalSetup?: boolean;
132
+ /**
133
+ * 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.
134
+ */
135
+ enableTab?: boolean;
106
136
  }
107
137
 
138
+ const addExtensionsFor = (flag: boolean, ...extensions: Extension[]) => (flag ? [...extensions] : []);
139
+ const addToKeyMapConfigFor = (flag: boolean, ...keys: any) => (flag ? [...keys] : []);
140
+ const addHandlersFor = (flag: boolean, handlerName: string, handler: any) =>
141
+ flag ? ({ [handlerName]: handler } as DOMEventHandlers<any>) : {};
142
+
108
143
  /**
109
144
  * Includes a code editor, currently we use CodeMirror library as base.
110
145
  */
111
146
  export const CodeEditor = ({
112
147
  onChange,
148
+ onSelection,
149
+ onMouseDown,
150
+ onFocusChange,
151
+ onKeyDown,
152
+ onCursorChange,
113
153
  name,
114
154
  id,
115
- mode = "undefined",
155
+ mode,
116
156
  preventLineNumbers = false,
117
157
  defaultValue = "",
118
158
  readOnly = false,
119
- height,
159
+ shouldHaveMinimalSetup = true,
120
160
  wrapLines = false,
121
161
  onScroll,
122
- setEditorInstance,
162
+ setEditorView,
123
163
  supportCodeFolding = false,
164
+ shouldHighlightActiveLine = false,
124
165
  outerDivAttributes,
125
166
  tabIntentSize = 2,
126
167
  tabIntentStyle = "tab",
168
+ placeholder,
169
+ additionalExtensions = [],
127
170
  tabForceSpaceForModes = ["python", "yaml"],
171
+ enableTab = false,
172
+ height,
128
173
  }: CodeEditorProps) => {
129
- const domRef = useRef<HTMLTextAreaElement>(null);
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
- });
174
+ const parent = useRef<any>(undefined);
149
175
 
150
- setEditorInstance && setEditorInstance(editorInstance);
151
-
152
- if (onScroll) {
153
- editorInstance.on("scroll", (instance) => {
154
- onScroll(instance);
155
- });
176
+ const onKeyDownHandler = (event: KeyboardEvent, view: EditorView) => {
177
+ if (onKeyDown && !onKeyDown(event)) {
178
+ if (event.key === "Enter") {
179
+ const cursor = view.state.selection.main.head;
180
+ const cursorLine = view.state.doc.lineAt(cursor).number;
181
+ const offsetFromFirstLine = view.state.doc.line(cursorLine).to;
182
+ view.dispatch({
183
+ changes: {
184
+ from: offsetFromFirstLine,
185
+ insert: "\n",
186
+ },
187
+ selection: {
188
+ anchor: offsetFromFirstLine + 1,
189
+ },
190
+ });
191
+ }
156
192
  }
193
+ };
157
194
 
158
- if (onChange) {
159
- editorInstance.on("change", (api) => {
160
- onChange(api.getValue());
161
- });
162
- }
195
+ React.useEffect(() => {
196
+ const tabIndent =
197
+ !!(tabIntentStyle === "tab" && mode && !(tabForceSpaceForModes ?? []).includes(mode)) || enableTab;
198
+ const keyMapConfigs = [
199
+ defaultKeymap as KeyBinding,
200
+ ...addToKeyMapConfigFor(supportCodeFolding, foldKeymap),
201
+ ...addToKeyMapConfigFor(tabIndent, indentWithTab),
202
+ ];
203
+ const domEventHandlers = {
204
+ ...addHandlersFor(!!onScroll, "scroll", onScroll),
205
+ ...addHandlersFor(
206
+ !!onMouseDown,
207
+ "mousedown",
208
+ (_: any, view: EditorView) => onMouseDown && onMouseDown(view)
209
+ ),
210
+ ...addHandlersFor(!!onFocusChange, "blur", () => onFocusChange && onFocusChange(false)),
211
+ ...addHandlersFor(!!onFocusChange, "focus", () => onFocusChange && onFocusChange(true)),
212
+ ...addHandlersFor(!!onKeyDown, "keydown", onKeyDownHandler),
213
+ } as DOMEventHandlers<any>;
214
+ const extensions = [
215
+ markField,
216
+ adaptedPlaceholder(placeholder),
217
+ adaptedHighlightSpecialChars(),
218
+ useCodeMirrorModeExtension(mode),
219
+ keymap?.of(keyMapConfigs),
220
+ EditorState?.tabSize.of(tabIntentSize),
221
+ EditorState?.readOnly.of(readOnly),
222
+ AdaptedEditorViewDomEventHandlers(domEventHandlers) as Extension,
223
+ EditorView?.updateListener.of((v: ViewUpdate) => {
224
+ onChange && onChange(v.state.doc.toString());
225
+
226
+ if (onSelection)
227
+ onSelection(v.state.selection.ranges.filter((r) => !r.empty).map(({ from, to }) => ({ from, to })));
228
+
229
+ if (onCursorChange) {
230
+ const cursorPosition = v.state.selection.main.head ?? 0;
231
+ const editorRect = v.view.dom.getBoundingClientRect();
232
+ const coords = v.view.coordsAtPos(cursorPosition),
233
+ scrollInfo = v.view.scrollDOM;
234
+ if (coords && scrollInfo && editorRect) {
235
+ // Calculate the coordinates relative to the editor's top-left corner
236
+ const relativeLeft = coords.left - editorRect.left;
237
+ const relativeBottom = coords.bottom - editorRect.bottom;
238
+
239
+ onCursorChange(
240
+ cursorPosition,
241
+ { ...coords, left: relativeLeft, bottom: relativeBottom },
242
+ scrollInfo,
243
+ v.view
244
+ );
245
+ }
246
+ }
247
+ }),
248
+ addExtensionsFor(shouldHaveMinimalSetup, minimalSetup),
249
+ addExtensionsFor(!preventLineNumbers, adaptedLineNumbers()),
250
+ addExtensionsFor(shouldHighlightActiveLine, adaptedHighlightActiveLine()),
251
+ addExtensionsFor(wrapLines, EditorView?.lineWrapping),
252
+ addExtensionsFor(supportCodeFolding, adaptedFoldGutter(), adaptedCodeFolding()),
253
+ additionalExtensions,
254
+ ];
255
+
256
+ const view: EditorView = new AdaptedEditorView({
257
+ state: EditorState?.create({
258
+ doc: defaultValue,
259
+ extensions,
260
+ }),
261
+ parent: parent.current,
262
+ });
163
263
 
164
264
  if (height) {
165
- editorInstance.setSize(null, height);
265
+ view.dom.style.height = typeof height === "string" ? height : `${height}px`;
166
266
  }
167
267
 
168
- editorInstance.setValue(defaultValue);
268
+ setEditorView && setEditorView(view);
169
269
 
170
- return function cleanup() {
171
- editorInstance.toTextArea();
270
+ return () => {
271
+ view.destroy();
272
+ setEditorView && setEditorView(undefined);
172
273
  };
173
- }, [onChange, mode, preventLineNumbers]);
274
+ }, [parent.current, mode, preventLineNumbers]);
174
275
 
175
276
  return (
176
- <div {...outerDivAttributes} className={`${eccgui}-codeeditor ${eccgui}-codeeditor--mode-${mode}`}>
177
- <textarea
178
- ref={domRef}
179
- /**
180
- * FIXME: same `data-test-id` for multiple code editor elements are valid
181
- * but may not make really sense for testing purposes. Currently let it
182
- * unchanged from the code what was took over here.
183
- */
184
- data-test-id="codemirror-wrapper"
185
- id={id ? id : `codemirror-${name}`}
186
- name={name}
187
- defaultValue={defaultValue}
188
- />
189
- </div>
277
+ <div
278
+ {...outerDivAttributes}
279
+ // overwrite/extend some attributes
280
+ id={id ? id : name ? `codemirror-${name}` : undefined}
281
+ ref={parent}
282
+ data-test-id="codemirror-wrapper"
283
+ className={
284
+ `${eccgui}-codeeditor ${eccgui}-codeeditor--mode-${mode}` +
285
+ (outerDivAttributes?.className ? ` ${outerDivAttributes?.className}` : "")
286
+ }
287
+ />
190
288
  );
191
289
  };
192
290
 
193
- const convertMode = (mode: SupportedCodeEditorModes | undefined): string | ModeSpec<ModeSpecOptions> | undefined => {
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
- };
291
+ CodeEditor.supportedModes = supportedCodeEditorModes;
@@ -1,39 +1,39 @@
1
- @import "~codemirror/lib/codemirror";
2
- @import "~codemirror/theme/xq-light";
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
- .CodeMirror {
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
- &.CodeMirror-focused {
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
 
26
29
  // fix size to prevent wrong calculation of other elements
27
30
  padding: 0;
28
31
  margin: 1px;
29
- cursor: text;
32
+ }
30
33
 
31
- // remove scrollbars, codemirrow has own elements to fake them
32
- scrollbar-width: none; // Firefox
33
- -ms-overflow-style: none; // IE, Edge
34
- &::-webkit-scrollbar {
35
- display: none; // Chrome, Safari and Opera
36
- }
34
+ &.cm-focused {
35
+ outline: none;
36
+ box-shadow: input-transition-shadow($input-shadow-color-focus, true), $input-box-shadow-focus;
37
37
  }
38
38
 
39
39
  .CodeMirror-hscrollbar {
@@ -52,7 +52,8 @@
52
52
  bottom: 1px;
53
53
  }
54
54
 
55
- .CodeMirror-sizer {
55
+ .cm-content {
56
+ cursor: text;
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
- .CodeMirror-scroll,
77
- .CodeMirror-sizer,
78
- .CodeMirror-gutter,
79
- .CodeMirror-gutters,
80
- .CodeMirror-linenumber {
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
- // @deprecated will be removed because it is probably not used this way anymore
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"; // FIXME: deprecated, remove it later
22
- export { edgeTypes } from "./edges/edgeTypes"; // FIXME: deprecated, remove it later
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
- const stateClass = node.data?.highlightedState
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} ${stateClass}`;
9
+ return `${typeClass} ${intentClass}`;
13
10
  };
14
11
 
15
12
  const nodeColor = (node: any) => {