@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.
Files changed (367) hide show
  1. package/CHANGELOG.md +59 -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.map +1 -1
  10. package/dist/cjs/cmem/markdown/highlightSearchWords.js +5 -8
  11. package/dist/cjs/cmem/markdown/highlightSearchWords.js.map +1 -1
  12. package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
  13. package/dist/cjs/common/index.js +1 -3
  14. package/dist/cjs/common/index.js.map +1 -1
  15. package/dist/cjs/components/Accordion/Accordion.js +2 -7
  16. package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
  17. package/dist/cjs/components/Accordion/AccordionItem.js +1 -2
  18. package/dist/cjs/components/Accordion/AccordionItem.js.map +1 -1
  19. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +114 -63
  20. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  21. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  22. package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js +13 -51
  23. package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
  24. package/dist/cjs/components/AutoSuggestion/extensions/markText.js +55 -0
  25. package/dist/cjs/components/AutoSuggestion/extensions/markText.js.map +1 -0
  26. package/dist/cjs/components/AutoSuggestion/index.js +1 -3
  27. package/dist/cjs/components/AutoSuggestion/index.js.map +1 -1
  28. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +2 -6
  29. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  30. package/dist/cjs/components/AutocompleteField/index.js +1 -0
  31. package/dist/cjs/components/AutocompleteField/index.js.map +1 -1
  32. package/dist/cjs/components/Breadcrumb/BreadcrumbList.js +2 -2
  33. package/dist/cjs/components/Breadcrumb/BreadcrumbList.js.map +1 -1
  34. package/dist/cjs/components/Button/Button.js.map +1 -1
  35. package/dist/cjs/components/Card/CardHeader.js +2 -2
  36. package/dist/cjs/components/Card/CardHeader.js.map +1 -1
  37. package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js +3 -3
  38. package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
  39. package/dist/cjs/components/Dialog/AlertDialog.js.map +1 -1
  40. package/dist/cjs/components/Dialog/Modal.js +2 -2
  41. package/dist/cjs/components/Dialog/Modal.js.map +1 -1
  42. package/dist/cjs/components/Grid/Grid.js.map +1 -1
  43. package/dist/cjs/components/Grid/GridColumn.js +1 -1
  44. package/dist/cjs/components/Grid/GridColumn.js.map +1 -1
  45. package/dist/cjs/components/Icon/Icon.js +3 -5
  46. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  47. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  48. package/dist/cjs/components/MultiSelect/MultiSelect.js +6 -15
  49. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
  50. package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js +7 -2
  51. package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
  52. package/dist/cjs/components/Notification/Notification.js +2 -5
  53. package/dist/cjs/components/Notification/Notification.js.map +1 -1
  54. package/dist/cjs/components/Select/Select.js +0 -6
  55. package/dist/cjs/components/Select/Select.js.map +1 -1
  56. package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
  57. package/dist/cjs/components/SuggestField/SuggestField.js +2 -2
  58. package/dist/cjs/components/SuggestField/SuggestField.js.map +1 -1
  59. package/dist/cjs/components/Table/Table.js +0 -3
  60. package/dist/cjs/components/Table/Table.js.map +1 -1
  61. package/dist/cjs/components/Tag/Tag.js +1 -0
  62. package/dist/cjs/components/Tag/Tag.js.map +1 -1
  63. package/dist/cjs/components/TextField/TextArea.js +1 -19
  64. package/dist/cjs/components/TextField/TextArea.js.map +1 -1
  65. package/dist/cjs/components/TextField/TextField.js +6 -24
  66. package/dist/cjs/components/TextField/TextField.js.map +1 -1
  67. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  68. package/dist/cjs/components/Typography/Highlighter.js +0 -6
  69. package/dist/cjs/components/Typography/Highlighter.js.map +1 -1
  70. package/dist/cjs/components/Typography/index.js +0 -8
  71. package/dist/cjs/components/Typography/index.js.map +1 -1
  72. package/dist/cjs/components/Workspace/WorkspaceContent.js +1 -1
  73. package/dist/cjs/components/Workspace/WorkspaceContent.js.map +1 -1
  74. package/dist/cjs/components/index.js +0 -1
  75. package/dist/cjs/components/index.js.map +1 -1
  76. package/dist/cjs/extensions/codemirror/CodeMirror.js +91 -86
  77. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  78. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +43 -0
  79. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
  80. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +49 -0
  81. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
  82. package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +1 -1
  83. package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +1 -1
  84. package/dist/cjs/extensions/react-flow/index.js +3 -14
  85. package/dist/cjs/extensions/react-flow/index.js.map +1 -1
  86. package/dist/cjs/extensions/react-flow/minimap/utils.js +4 -7
  87. package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
  88. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +2 -10
  89. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  90. package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  91. package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js +1 -1
  92. package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
  93. package/dist/cjs/index.js +1 -4
  94. package/dist/cjs/index.js.map +1 -1
  95. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +1 -0
  96. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
  97. package/dist/cjs/legacy-replacements/Button/Button.js +2 -0
  98. package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -1
  99. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +1 -0
  100. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -1
  101. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +1 -0
  102. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
  103. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +2 -0
  104. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
  105. package/dist/cjs/legacy-replacements/Radio/RadioButton.js +2 -0
  106. package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -1
  107. package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -0
  108. package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
  109. package/dist/cjs/legacy-replacements/TextField/TextField.js +2 -0
  110. package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
  111. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  112. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  113. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -4
  114. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  115. package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +2 -4
  116. package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
  117. package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
  118. package/dist/esm/cmem/markdown/highlightSearchWords.js +5 -8
  119. package/dist/esm/cmem/markdown/highlightSearchWords.js.map +1 -1
  120. package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
  121. package/dist/esm/common/index.js +0 -2
  122. package/dist/esm/common/index.js.map +1 -1
  123. package/dist/esm/components/Accordion/Accordion.js +2 -7
  124. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  125. package/dist/esm/components/Accordion/AccordionItem.js +1 -2
  126. package/dist/esm/components/Accordion/AccordionItem.js.map +1 -1
  127. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +133 -81
  128. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  129. package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  130. package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js +36 -60
  131. package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
  132. package/dist/esm/components/AutoSuggestion/extensions/markText.js +72 -0
  133. package/dist/esm/components/AutoSuggestion/extensions/markText.js.map +1 -0
  134. package/dist/esm/components/AutoSuggestion/index.js +1 -2
  135. package/dist/esm/components/AutoSuggestion/index.js.map +1 -1
  136. package/dist/esm/components/AutocompleteField/AutoCompleteField.js +3 -6
  137. package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  138. package/dist/esm/components/AutocompleteField/index.js +1 -0
  139. package/dist/esm/components/AutocompleteField/index.js.map +1 -1
  140. package/dist/esm/components/Breadcrumb/BreadcrumbList.js +2 -2
  141. package/dist/esm/components/Breadcrumb/BreadcrumbList.js.map +1 -1
  142. package/dist/esm/components/Button/Button.js.map +1 -1
  143. package/dist/esm/components/Card/CardHeader.js +2 -2
  144. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  145. package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js +2 -2
  146. package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
  147. package/dist/esm/components/Dialog/AlertDialog.js.map +1 -1
  148. package/dist/esm/components/Dialog/Modal.js +3 -3
  149. package/dist/esm/components/Dialog/Modal.js.map +1 -1
  150. package/dist/esm/components/Grid/Grid.js.map +1 -1
  151. package/dist/esm/components/Grid/GridColumn.js +1 -1
  152. package/dist/esm/components/Grid/GridColumn.js.map +1 -1
  153. package/dist/esm/components/Icon/Icon.js +1 -2
  154. package/dist/esm/components/Icon/Icon.js.map +1 -1
  155. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  156. package/dist/esm/components/MultiSelect/MultiSelect.js +7 -15
  157. package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
  158. package/dist/esm/components/MultiSuggestField/MultiSuggestField.js +6 -1
  159. package/dist/esm/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
  160. package/dist/esm/components/Notification/Notification.js +2 -6
  161. package/dist/esm/components/Notification/Notification.js.map +1 -1
  162. package/dist/esm/components/Select/Select.js +0 -6
  163. package/dist/esm/components/Select/Select.js.map +1 -1
  164. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  165. package/dist/esm/components/SuggestField/SuggestField.js +1 -1
  166. package/dist/esm/components/SuggestField/SuggestField.js.map +1 -1
  167. package/dist/esm/components/Table/Table.js +0 -3
  168. package/dist/esm/components/Table/Table.js.map +1 -1
  169. package/dist/esm/components/Tag/Tag.js +1 -0
  170. package/dist/esm/components/Tag/Tag.js.map +1 -1
  171. package/dist/esm/components/TextField/TextArea.js +2 -20
  172. package/dist/esm/components/TextField/TextArea.js.map +1 -1
  173. package/dist/esm/components/TextField/TextField.js +6 -24
  174. package/dist/esm/components/TextField/TextField.js.map +1 -1
  175. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  176. package/dist/esm/components/Typography/Highlighter.js +3 -6
  177. package/dist/esm/components/Typography/Highlighter.js.map +1 -1
  178. package/dist/esm/components/Typography/index.js +0 -7
  179. package/dist/esm/components/Typography/index.js.map +1 -1
  180. package/dist/esm/components/Workspace/WorkspaceContent.js +1 -1
  181. package/dist/esm/components/Workspace/WorkspaceContent.js.map +1 -1
  182. package/dist/esm/components/index.js +0 -1
  183. package/dist/esm/components/index.js.map +1 -1
  184. package/dist/esm/extensions/codemirror/CodeMirror.js +132 -83
  185. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  186. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +39 -0
  187. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
  188. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +55 -0
  189. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
  190. package/dist/esm/extensions/react-flow/edges/edgeTypes.js +1 -1
  191. package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +1 -1
  192. package/dist/esm/extensions/react-flow/index.js +2 -12
  193. package/dist/esm/extensions/react-flow/index.js.map +1 -1
  194. package/dist/esm/extensions/react-flow/minimap/utils.js +4 -7
  195. package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
  196. package/dist/esm/extensions/react-flow/nodes/NodeContent.js +2 -10
  197. package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  198. package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  199. package/dist/esm/extensions/react-flow/nodes/nodeTypes.js +1 -1
  200. package/dist/esm/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
  201. package/dist/esm/index.js +1 -3
  202. package/dist/esm/index.js.map +1 -1
  203. package/dist/esm/legacy-replacements/Button/AffirmativeButton.js +1 -0
  204. package/dist/esm/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
  205. package/dist/esm/legacy-replacements/Button/Button.js +2 -0
  206. package/dist/esm/legacy-replacements/Button/Button.js.map +1 -1
  207. package/dist/esm/legacy-replacements/Button/DismissiveButton.js +1 -0
  208. package/dist/esm/legacy-replacements/Button/DismissiveButton.js.map +1 -1
  209. package/dist/esm/legacy-replacements/Button/DisruptiveButton.js +1 -0
  210. package/dist/esm/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
  211. package/dist/esm/legacy-replacements/Checkbox/Checkbox.js +2 -0
  212. package/dist/esm/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
  213. package/dist/esm/legacy-replacements/Radio/RadioButton.js +2 -0
  214. package/dist/esm/legacy-replacements/Radio/RadioButton.js.map +1 -1
  215. package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -0
  216. package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
  217. package/dist/esm/legacy-replacements/TextField/TextField.js +2 -0
  218. package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
  219. package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +3 -5
  220. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +0 -2
  221. package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +7 -11
  222. package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +3 -3
  223. package/dist/types/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.d.ts +1 -12
  224. package/dist/types/cmem/markdown/Markdown.d.ts +0 -1
  225. package/dist/types/cmem/markdown/highlightSearchWords.d.ts +0 -6
  226. package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +2 -2
  227. package/dist/types/common/index.d.ts +0 -24
  228. package/dist/types/components/Accordion/Accordion.d.ts +1 -6
  229. package/dist/types/components/Accordion/AccordionItem.d.ts +1 -6
  230. package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +27 -17
  231. package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +0 -1
  232. package/dist/types/components/AutoSuggestion/ExtendedCodeEditor.d.ts +10 -11
  233. package/dist/types/components/AutoSuggestion/extensions/markText.d.ts +16 -0
  234. package/dist/types/components/AutoSuggestion/index.d.ts +2 -2
  235. package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +11 -15
  236. package/dist/types/components/AutocompleteField/index.d.ts +1 -0
  237. package/dist/types/components/AutocompleteField/interfaces.d.ts +4 -2
  238. package/dist/types/components/Breadcrumb/BreadcrumbList.d.ts +1 -6
  239. package/dist/types/components/Button/Button.d.ts +0 -2
  240. package/dist/types/components/Card/CardHeader.d.ts +1 -9
  241. package/dist/types/components/Dialog/AlertDialog.d.ts +0 -1
  242. package/dist/types/components/Grid/Grid.d.ts +0 -5
  243. package/dist/types/components/Grid/GridColumn.d.ts +1 -6
  244. package/dist/types/components/Icon/BaseIcon.d.ts +2 -2
  245. package/dist/types/components/Icon/Icon.d.ts +0 -5
  246. package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -7
  247. package/dist/types/components/MultiSelect/MultiSelect.d.ts +6 -8
  248. package/dist/types/components/MultiSuggestField/MultiSuggestField.d.ts +11 -2
  249. package/dist/types/components/Notification/Notification.d.ts +1 -14
  250. package/dist/types/components/Select/Select.d.ts +0 -3
  251. package/dist/types/components/Spinner/Spinner.d.ts +3 -3
  252. package/dist/types/components/SuggestField/SuggestField.d.ts +5 -0
  253. package/dist/types/components/SuggestField/index.d.ts +1 -1
  254. package/dist/types/components/Table/Table.d.ts +1 -4
  255. package/dist/types/components/Tag/Tag.d.ts +0 -5
  256. package/dist/types/components/TextField/TextArea.d.ts +1 -21
  257. package/dist/types/components/TextField/TextField.d.ts +3 -23
  258. package/dist/types/components/Tooltip/Tooltip.d.ts +2 -2
  259. package/dist/types/components/Typography/Highlighter.d.ts +3 -6
  260. package/dist/types/components/Typography/index.d.ts +0 -6
  261. package/dist/types/components/index.d.ts +0 -1
  262. package/dist/types/extensions/codemirror/CodeMirror.d.ts +54 -26
  263. package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +23 -0
  264. package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +20 -0
  265. package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +1 -0
  266. package/dist/types/extensions/react-flow/index.d.ts +0 -14
  267. package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +6 -14
  268. package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +0 -1
  269. package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +1 -0
  270. package/dist/types/extensions/react-flow/nodes/sharedTypes.d.ts +0 -1
  271. package/dist/types/index.d.ts +1 -9
  272. package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +1 -0
  273. package/dist/types/legacy-replacements/Button/Button.d.ts +1 -0
  274. package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +1 -0
  275. package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +1 -0
  276. package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +1 -0
  277. package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +1 -0
  278. package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +4 -2
  279. package/dist/types/legacy-replacements/TextField/TextField.d.ts +1 -0
  280. package/package.json +7 -4
  281. package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -7
  282. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +0 -6
  283. package/src/cmem/ActivityControl/SilkActivityControl.tsx +8 -18
  284. package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +14 -11
  285. package/src/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.tsx +11 -7
  286. package/src/cmem/DateTimeDisplay/tests/ElapsedDateTimeDisplay.test.tsx +9 -4
  287. package/src/cmem/markdown/Markdown.tsx +0 -2
  288. package/src/cmem/markdown/highlightSearchWords.test.ts +3 -2
  289. package/src/cmem/markdown/highlightSearchWords.ts +5 -10
  290. package/src/cmem/markdown/markdown.utils.ts +10 -10
  291. package/src/cmem/markdown/markdownutils.test.ts +9 -5
  292. package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +1 -1
  293. package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +2 -2
  294. package/src/common/index.ts +0 -3
  295. package/src/components/Accordion/Accordion.tsx +0 -13
  296. package/src/components/Accordion/AccordionItem.tsx +0 -7
  297. package/src/components/Accordion/accordion.scss +0 -5
  298. package/src/components/AutoSuggestion/AutoSuggestion.scss +20 -17
  299. package/src/components/AutoSuggestion/AutoSuggestion.tsx +171 -100
  300. package/src/components/AutoSuggestion/AutoSuggestionList.tsx +0 -3
  301. package/src/components/AutoSuggestion/ExtendedCodeEditor.tsx +47 -83
  302. package/src/components/AutoSuggestion/extensions/markText.ts +63 -0
  303. package/src/components/AutoSuggestion/index.ts +2 -2
  304. package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +13 -11
  305. package/src/components/AutocompleteField/AutoCompleteField.tsx +17 -19
  306. package/src/components/AutocompleteField/index.ts +1 -0
  307. package/src/components/AutocompleteField/interfaces.ts +5 -2
  308. package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -7
  309. package/src/components/Button/Button.tsx +0 -5
  310. package/src/components/Card/CardHeader.tsx +2 -10
  311. package/src/components/CodeAutocompleteField/CodeAutocompleteField.stories.tsx +9 -3
  312. package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +2 -2
  313. package/src/components/Dialog/AlertDialog.tsx +0 -3
  314. package/src/components/Dialog/Modal.tsx +3 -3
  315. package/src/components/Grid/Grid.tsx +0 -5
  316. package/src/components/Grid/GridColumn.tsx +0 -6
  317. package/src/components/Icon/BaseIcon.tsx +2 -2
  318. package/src/components/Icon/Icon.tsx +1 -5
  319. package/src/components/Icon/canonicalIconNames.tsx +3 -9
  320. package/src/components/MultiSelect/MultiSelect.tsx +9 -19
  321. package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +2 -2
  322. package/src/components/MultiSuggestField/MultiSuggestField.tsx +16 -3
  323. package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +6 -6
  324. package/src/components/Notification/Notification.tsx +2 -17
  325. package/src/components/Notification/notification.scss +1 -2
  326. package/src/components/Select/Select.tsx +0 -10
  327. package/src/components/Spinner/Spinner.tsx +3 -6
  328. package/src/components/SuggestField/SuggestField.tsx +6 -1
  329. package/src/components/Table/Table.tsx +2 -7
  330. package/src/components/Tag/Tag.tsx +1 -8
  331. package/src/components/TextField/TextArea.tsx +2 -45
  332. package/src/components/TextField/TextField.tsx +9 -51
  333. package/src/components/Tooltip/Tooltip.tsx +2 -2
  334. package/src/components/Typography/Highlighter.tsx +3 -6
  335. package/src/components/Typography/index.ts +0 -9
  336. package/src/components/Workspace/WorkspaceContent.tsx +1 -1
  337. package/src/components/index.ts +0 -1
  338. package/src/extensions/codemirror/CodeMirror.tsx +189 -106
  339. package/src/extensions/codemirror/_codemirror.scss +24 -41
  340. package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +44 -0
  341. package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +57 -0
  342. package/src/extensions/react-flow/edges/edgeTypes.ts +1 -1
  343. package/src/extensions/react-flow/index.ts +2 -13
  344. package/src/extensions/react-flow/minimap/_minimap.scss +0 -22
  345. package/src/extensions/react-flow/minimap/utils.ts +2 -5
  346. package/src/extensions/react-flow/nodes/NodeContent.tsx +4 -27
  347. package/src/extensions/react-flow/nodes/NodeDefault.tsx +0 -3
  348. package/src/extensions/react-flow/nodes/_nodes.scss +0 -55
  349. package/src/extensions/react-flow/nodes/nodeTypes.ts +1 -1
  350. package/src/extensions/react-flow/nodes/sharedTypes.ts +0 -1
  351. package/src/index.ts +1 -3
  352. package/src/legacy-replacements/Button/AffirmativeButton.tsx +1 -0
  353. package/src/legacy-replacements/Button/Button.tsx +2 -0
  354. package/src/legacy-replacements/Button/DismissiveButton.tsx +1 -0
  355. package/src/legacy-replacements/Button/DisruptiveButton.tsx +1 -0
  356. package/src/legacy-replacements/Checkbox/Checkbox.tsx +2 -0
  357. package/src/legacy-replacements/Radio/RadioButton.tsx +2 -0
  358. package/src/legacy-replacements/Tabs/Tabs.tsx +5 -4
  359. package/src/legacy-replacements/TextField/TextField.tsx +2 -0
  360. package/dist/cjs/components/NumericInput/NumericInput.js +0 -9
  361. package/dist/cjs/components/NumericInput/NumericInput.js.map +0 -1
  362. package/dist/esm/components/NumericInput/NumericInput.js +0 -6
  363. package/dist/esm/components/NumericInput/NumericInput.js.map +0 -1
  364. package/dist/types/components/NumericInput/NumericInput.d.ts +0 -3
  365. package/src/components/AutoSuggestion/AutoSuggestion.stories.tsx +0 -14
  366. package/src/components/MultiSelect/MultiSelect.stories.tsx +0 -14
  367. package/src/components/NumericInput/NumericInput.tsx +0 -6
@@ -1,50 +1,43 @@
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, { 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
- 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];
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
- setEditorInstance?: (editor: CodeMirror.Editor) => any;
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<TextareaHTMLAttributes<HTMLDivElement>>;
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?: (editorInstance: CodeMirror.Editor) => void;
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 = "undefined",
156
+ mode,
116
157
  preventLineNumbers = false,
117
158
  defaultValue = "",
118
159
  readOnly = false,
119
- height,
160
+ shouldHaveMinimalSetup = true,
120
161
  wrapLines = false,
121
162
  onScroll,
122
- setEditorInstance,
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 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
- });
175
+ const parent = useRef<any>(undefined);
149
176
 
150
- setEditorInstance && setEditorInstance(editorInstance);
151
-
152
- if (onScroll) {
153
- editorInstance.on("scroll", (instance) => {
154
- onScroll(instance);
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
- if (onChange) {
159
- editorInstance.on("change", (api) => {
160
- onChange(api.getValue());
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
- editorInstance.setSize(null, height);
266
+ view.dom.style.height = typeof height === "string" ? height : `${height}px`;
166
267
  }
167
268
 
168
- editorInstance.setValue(defaultValue);
269
+ setEditorView && setEditorView(view);
169
270
 
170
- return function cleanup() {
171
- editorInstance.toTextArea();
271
+ return () => {
272
+ view.destroy();
273
+ setEditorView && setEditorView(undefined);
172
274
  };
173
- }, [onChange, mode, preventLineNumbers]);
275
+ }, [parent.current, mode, preventLineNumbers]);
174
276
 
175
277
  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>
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
- 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
- };
288
+ CodeEditor.supportedModes = supportedCodeEditorModes;
@@ -1,25 +1,28 @@
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
 
@@ -27,13 +30,11 @@
27
30
  padding: 0;
28
31
  margin: 1px;
29
32
  cursor: text;
33
+ }
30
34
 
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
- }
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
- .CodeMirror-sizer {
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
- .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) => {