@keboola/design 11.0.0 → 11.0.1

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 (662) hide show
  1. package/dist/AIKit-Dre37SJr.js +1320 -0
  2. package/dist/AIKit-Dre37SJr.js.map +1 -0
  3. package/dist/Alert-DfZq9kGe.js +133 -0
  4. package/dist/Alert-DfZq9kGe.js.map +1 -0
  5. package/dist/AlertModal-BUC4Es8o.js +222 -0
  6. package/dist/AlertModal-BUC4Es8o.js.map +1 -0
  7. package/dist/AppShell-B5GQN6Zs.js +143 -0
  8. package/dist/AppShell-B5GQN6Zs.js.map +1 -0
  9. package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
  10. package/dist/{chunk-UGT6DKWM.js.map → AutoSaveTextarea-BeuWuszr.js.map} +1 -1
  11. package/dist/Badge-Ch26CXoP.js +195 -0
  12. package/dist/Badge-Ch26CXoP.js.map +1 -0
  13. package/dist/BrandEditor-B8o9zdZO.js +903 -0
  14. package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
  15. package/dist/BrandLogo-CJkRd0F8.js +46 -0
  16. package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
  17. package/dist/Breadcrumb-DJp7WwSv.js +330 -0
  18. package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
  19. package/dist/Button-nzmDNS2q.js +391 -0
  20. package/dist/Button-nzmDNS2q.js.map +1 -0
  21. package/dist/Calendar-cG5NIJ4O.js +6768 -0
  22. package/dist/Calendar-cG5NIJ4O.js.map +1 -0
  23. package/dist/Card-BAoZ35CV.js +105 -0
  24. package/dist/Card-BAoZ35CV.js.map +1 -0
  25. package/dist/Checkbox-GJ8-srt4.js +97 -0
  26. package/dist/Checkbox-GJ8-srt4.js.map +1 -0
  27. package/dist/Clipboard-CBJZiviP.js +58 -0
  28. package/dist/Clipboard-CBJZiviP.js.map +1 -0
  29. package/dist/ClipboardButton-ez5V3fkk.js +43 -0
  30. package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
  31. package/dist/CodeEditor-BfQJfbhL.js +952 -0
  32. package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
  33. package/dist/Collapsible-BQXWEOBC.js +34 -0
  34. package/dist/Collapsible-BQXWEOBC.js.map +1 -0
  35. package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
  36. package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
  37. package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
  38. package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
  39. package/dist/Combobox-c_xBjf0P.js +439 -0
  40. package/dist/Combobox-c_xBjf0P.js.map +1 -0
  41. package/dist/Command-CQ_bQsJp.js +102 -0
  42. package/dist/Command-CQ_bQsJp.js.map +1 -0
  43. package/dist/CopyField-BJ96zvXs.js +322 -0
  44. package/dist/CopyField-BJ96zvXs.js.map +1 -0
  45. package/dist/DateInput-CMD3dY-T.js +141 -0
  46. package/dist/DateInput-CMD3dY-T.js.map +1 -0
  47. package/dist/DatePicker-BbFbmsGl.js +24 -0
  48. package/dist/DatePicker-BbFbmsGl.js.map +1 -0
  49. package/dist/DateRangeInput-D3BhiKyk.js +139 -0
  50. package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
  51. package/dist/DateRangePicker-BiUgtt_M.js +159 -0
  52. package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
  53. package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
  54. package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
  55. package/dist/DiffView-ppTIzh2h.js +429 -0
  56. package/dist/DiffView-ppTIzh2h.js.map +1 -0
  57. package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
  58. package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
  59. package/dist/FieldBox-D7DYtX_m.js +70 -0
  60. package/dist/FieldBox-D7DYtX_m.js.map +1 -0
  61. package/dist/FileUpload-sXRv7JiY.js +2527 -0
  62. package/dist/FileUpload-sXRv7JiY.js.map +1 -0
  63. package/dist/Form-BDCef6O9.js +371 -0
  64. package/dist/Form-BDCef6O9.js.map +1 -0
  65. package/dist/FormGroup-S9mPNHKH.js +124 -0
  66. package/dist/FormGroup-S9mPNHKH.js.map +1 -0
  67. package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
  68. package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
  69. package/dist/HoverCard-WfDkLK1s.js +31 -0
  70. package/dist/HoverCard-WfDkLK1s.js.map +1 -0
  71. package/dist/InputGroup-BJWsI35s.js +292 -0
  72. package/dist/InputGroup-BJWsI35s.js.map +1 -0
  73. package/dist/Kbd-CxHAo1oo.js +111 -0
  74. package/dist/Kbd-CxHAo1oo.js.map +1 -0
  75. package/dist/MarkedText-Ckbft5mw.js +44 -0
  76. package/dist/MarkedText-Ckbft5mw.js.map +1 -0
  77. package/dist/MermaidDiagram-BB06gymm.js +399 -0
  78. package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
  79. package/dist/Modal-BA5Wc3sx.js +185 -0
  80. package/dist/Modal-BA5Wc3sx.js.map +1 -0
  81. package/dist/ModalTitle-C76ke2eo.js +28 -0
  82. package/dist/ModalTitle-C76ke2eo.js.map +1 -0
  83. package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
  84. package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
  85. package/dist/Navbar-t16usFZQ.js +322 -0
  86. package/dist/Navbar-t16usFZQ.js.map +1 -0
  87. package/dist/OtpInput-CbbymqYs.js +93 -0
  88. package/dist/OtpInput-CbbymqYs.js.map +1 -0
  89. package/dist/PageHeader-Q3IpCnQd.js +177 -0
  90. package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
  91. package/dist/PageLayout-DSVM-ASz.js +176 -0
  92. package/dist/PageLayout-DSVM-ASz.js.map +1 -0
  93. package/dist/PageToolbar-0_1OBzaZ.js +153 -0
  94. package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
  95. package/dist/Pagination-CM_Rszz-.js +70 -0
  96. package/dist/Pagination-CM_Rszz-.js.map +1 -0
  97. package/dist/Popconfirm-BGe1jLov.js +170 -0
  98. package/dist/Popconfirm-BGe1jLov.js.map +1 -0
  99. package/dist/Popover-Ca0V6AD1.js +92 -0
  100. package/dist/Popover-Ca0V6AD1.js.map +1 -0
  101. package/dist/RadioGroup-sIveSsNa.js +233 -0
  102. package/dist/RadioGroup-sIveSsNa.js.map +1 -0
  103. package/dist/Resizable-D3vYToZH.js +52 -0
  104. package/dist/Resizable-D3vYToZH.js.map +1 -0
  105. package/dist/Search-3UiqNZRj.js +184 -0
  106. package/dist/Search-3UiqNZRj.js.map +1 -0
  107. package/dist/SearchInput-D2fcOv7E.js +102 -0
  108. package/dist/SearchInput-D2fcOv7E.js.map +1 -0
  109. package/dist/SectionNav--7bw2b6u.js +276 -0
  110. package/dist/SectionNav--7bw2b6u.js.map +1 -0
  111. package/dist/Select-4YX38G5h.js +181 -0
  112. package/dist/Select-4YX38G5h.js.map +1 -0
  113. package/dist/Sheet-BQrX8-h5.js +169 -0
  114. package/dist/Sheet-BQrX8-h5.js.map +1 -0
  115. package/dist/Sidebar-ROaR_AqC.js +799 -0
  116. package/dist/Sidebar-ROaR_AqC.js.map +1 -0
  117. package/dist/Slider-Da_3mS5v.js +127 -0
  118. package/dist/Slider-Da_3mS5v.js.map +1 -0
  119. package/dist/Stepper-C8sm9ZFM.js +325 -0
  120. package/dist/Stepper-C8sm9ZFM.js.map +1 -0
  121. package/dist/Switch-CX2A0v50.js +201 -0
  122. package/dist/Switch-CX2A0v50.js.map +1 -0
  123. package/dist/Table-CvYuTuNU.js +104 -0
  124. package/dist/Table-CvYuTuNU.js.map +1 -0
  125. package/dist/Tabs-EAihyqCt.js +74 -0
  126. package/dist/Tabs-EAihyqCt.js.map +1 -0
  127. package/dist/TextInput-BGed-V13.js +110 -0
  128. package/dist/TextInput-BGed-V13.js.map +1 -0
  129. package/dist/ThemeProvider-QncUrfJn.js +203 -0
  130. package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
  131. package/dist/TimePicker-B_NegL-7.js +98 -0
  132. package/dist/TimePicker-B_NegL-7.js.map +1 -0
  133. package/dist/Timeline-6btyJl4D.js +154 -0
  134. package/dist/Timeline-6btyJl4D.js.map +1 -0
  135. package/dist/Toast-DQSbs3oA.js +49 -0
  136. package/dist/Toast-DQSbs3oA.js.map +1 -0
  137. package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
  138. package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
  139. package/dist/Workbench-BzE-Vvd9.js +293 -0
  140. package/dist/Workbench-BzE-Vvd9.js.map +1 -0
  141. package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
  142. package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
  143. package/dist/charts.d.ts +110 -103
  144. package/dist/charts.js +303 -254
  145. package/dist/charts.js.map +1 -1
  146. package/dist/classNames-BzrkDnOD.js +9 -0
  147. package/dist/classNames-BzrkDnOD.js.map +1 -0
  148. package/dist/constants-D6JcsD4_.d.ts +41 -0
  149. package/dist/context-KxxeMHbR.js +62 -0
  150. package/dist/context-KxxeMHbR.js.map +1 -0
  151. package/dist/editors.d.ts +180 -173
  152. package/dist/editors.js +747 -428
  153. package/dist/editors.js.map +1 -1
  154. package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
  155. package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
  156. package/dist/icons-Cek151jC.js +640 -0
  157. package/dist/icons-Cek151jC.js.map +1 -0
  158. package/dist/icons.d.ts +2 -41
  159. package/dist/icons.js +2 -9
  160. package/dist/index-m-kQEWiY.d.ts +54 -0
  161. package/dist/index.d.ts +6183 -9885
  162. package/dist/index.js +112 -124
  163. package/dist/internal/blocks/AIKit.js +2 -30
  164. package/dist/internal/blocks/AppShell.js +2 -11
  165. package/dist/internal/blocks/AutoSaveTextarea.js +2 -14
  166. package/dist/internal/blocks/BrandEditor.js +2 -23
  167. package/dist/internal/blocks/ChartPanel.js +45 -9
  168. package/dist/internal/blocks/ChartPanel.js.map +1 -1
  169. package/dist/internal/blocks/ClipboardButton.js +2 -12
  170. package/dist/internal/blocks/ColorInput.js +2 -13
  171. package/dist/internal/blocks/ColorModeSwitch.js +2 -13
  172. package/dist/internal/blocks/Command.js +2 -15
  173. package/dist/internal/blocks/CopyField.js +2 -11
  174. package/dist/internal/blocks/DashboardHero.js +58 -8
  175. package/dist/internal/blocks/DashboardHero.js.map +1 -1
  176. package/dist/internal/blocks/DateInput.js +2 -16
  177. package/dist/internal/blocks/DateRangeInput.js +2 -16
  178. package/dist/internal/blocks/EmptyConfigurationActionCard.js +15 -9
  179. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -1
  180. package/dist/internal/blocks/EmptyState.js +141 -3
  181. package/dist/internal/blocks/EmptyState.js.map +1 -1
  182. package/dist/internal/blocks/ErrorState.js +178 -4
  183. package/dist/internal/blocks/ErrorState.js.map +1 -1
  184. package/dist/internal/blocks/ExportMenu.js +40 -12
  185. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  186. package/dist/internal/blocks/Form.js +2 -29
  187. package/dist/internal/blocks/FormGroup.js +2 -18
  188. package/dist/internal/blocks/GoogleButton.js +94 -9
  189. package/dist/internal/blocks/GoogleButton.js.map +1 -1
  190. package/dist/internal/blocks/MicrosoftButton.js +63 -9
  191. package/dist/internal/blocks/MicrosoftButton.js.map +1 -1
  192. package/dist/internal/blocks/MultiActionButtonGroup.js +2 -12
  193. package/dist/internal/blocks/MultiCombobox.js +187 -13
  194. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  195. package/dist/internal/blocks/NumberInput.js +43 -11
  196. package/dist/internal/blocks/NumberInput.js.map +1 -1
  197. package/dist/internal/blocks/OtpInput.js +2 -10
  198. package/dist/internal/blocks/PageHeader.js +2 -9
  199. package/dist/internal/blocks/PageLayout.js +2 -9
  200. package/dist/internal/blocks/PageToolbar.js +2 -13
  201. package/dist/internal/blocks/PasswordInput.js +96 -12
  202. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  203. package/dist/internal/blocks/SearchInput.js +2 -12
  204. package/dist/internal/blocks/SearchInputWithNavigation.js +64 -15
  205. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
  206. package/dist/internal/blocks/SectionNav.js +2 -15
  207. package/dist/internal/blocks/SplitButton.js +45 -13
  208. package/dist/internal/blocks/SplitButton.js.map +1 -1
  209. package/dist/internal/blocks/StatCard.js +96 -9
  210. package/dist/internal/blocks/StatCard.js.map +1 -1
  211. package/dist/internal/blocks/TextInput.js +2 -13
  212. package/dist/internal/blocks/Textarea.js +31 -12
  213. package/dist/internal/blocks/Textarea.js.map +1 -1
  214. package/dist/internal/blocks/TimeInput.js +76 -16
  215. package/dist/internal/blocks/TimeInput.js.map +1 -1
  216. package/dist/internal/components/Alert.js +2 -11
  217. package/dist/internal/components/AlertModal.js +2 -11
  218. package/dist/internal/components/Avatar.js +52 -8
  219. package/dist/internal/components/Avatar.js.map +1 -1
  220. package/dist/internal/components/Badge.js +2 -9
  221. package/dist/internal/components/BrandLogo.js +2 -11
  222. package/dist/internal/components/Breadcrumb.js +2 -14
  223. package/dist/internal/components/Button.js +2 -10
  224. package/dist/internal/components/ButtonGroup.js +65 -8
  225. package/dist/internal/components/ButtonGroup.js.map +1 -1
  226. package/dist/internal/components/Calendar.js +2 -9
  227. package/dist/internal/components/Card.js +2 -9
  228. package/dist/internal/components/Checkbox.js +2 -11
  229. package/dist/internal/components/Clipboard.js +2 -9
  230. package/dist/internal/components/Collapsible.js +2 -9
  231. package/dist/internal/components/CollapsiblePanel.js +86 -10
  232. package/dist/internal/components/CollapsiblePanel.js.map +1 -1
  233. package/dist/internal/components/Combobox.js +2 -13
  234. package/dist/internal/components/DatePicker.js +2 -11
  235. package/dist/internal/components/DateRangePicker.js +2 -17
  236. package/dist/internal/components/DiffView.js +2 -9
  237. package/dist/internal/components/DotsLoader.js +17 -4
  238. package/dist/internal/components/DotsLoader.js.map +1 -1
  239. package/dist/internal/components/DropdownMenu.js +2 -11
  240. package/dist/internal/components/EmptySearchContent.js +11 -3
  241. package/dist/internal/components/EmptySearchContent.js.map +1 -1
  242. package/dist/internal/components/FileUpload.js +2 -11
  243. package/dist/internal/components/FullScreenModal.js +2 -12
  244. package/dist/internal/components/HelpBlock.js +24 -3
  245. package/dist/internal/components/HelpBlock.js.map +1 -1
  246. package/dist/internal/components/HoverCard.js +2 -9
  247. package/dist/internal/components/InputGroup.js +2 -11
  248. package/dist/internal/components/Kbd.js +2 -9
  249. package/dist/internal/components/Label.js +38 -8
  250. package/dist/internal/components/Label.js.map +1 -1
  251. package/dist/internal/components/Link.js +21 -8
  252. package/dist/internal/components/Link.js.map +1 -1
  253. package/dist/internal/components/MarkedText.js +2 -5
  254. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +19 -9
  255. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -1
  256. package/dist/internal/components/MergeEditor/PaneHeader.js +12 -3
  257. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -1
  258. package/dist/internal/components/MergeEditor/constants.js +17 -3
  259. package/dist/internal/components/MergeEditor/constants.js.map +1 -1
  260. package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -5
  261. package/dist/internal/components/Modal.js +2 -13
  262. package/dist/internal/components/Navbar.js +2 -14
  263. package/dist/internal/components/Pagination.js +2 -11
  264. package/dist/internal/components/PanelWithDetails.js +30 -10
  265. package/dist/internal/components/PanelWithDetails.js.map +1 -1
  266. package/dist/internal/components/Popconfirm.js +2 -12
  267. package/dist/internal/components/Popover.js +2 -9
  268. package/dist/internal/components/Progress.js +46 -8
  269. package/dist/internal/components/Progress.js.map +1 -1
  270. package/dist/internal/components/RadioGroup.js +2 -12
  271. package/dist/internal/components/Resizable.js +2 -9
  272. package/dist/internal/components/ScrollArea.js +41 -8
  273. package/dist/internal/components/ScrollArea.js.map +1 -1
  274. package/dist/internal/components/Search.js +2 -10
  275. package/dist/internal/components/Select.js +2 -12
  276. package/dist/internal/components/Separator.js +83 -8
  277. package/dist/internal/components/Separator.js.map +1 -1
  278. package/dist/internal/components/Sheet.js +2 -12
  279. package/dist/internal/components/Sidebar.js +2 -20
  280. package/dist/internal/components/Skeleton/Skeleton.js +38 -8
  281. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  282. package/dist/internal/components/Skeleton/SkeletonList.js +40 -9
  283. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -1
  284. package/dist/internal/components/Slider.js +2 -11
  285. package/dist/internal/components/SpotlightBackdrop.js +131 -8
  286. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  287. package/dist/internal/components/Stepper.js +2 -10
  288. package/dist/internal/components/Switch.js +2 -10
  289. package/dist/internal/components/Table.js +2 -10
  290. package/dist/internal/components/Tabs.js +2 -12
  291. package/dist/internal/components/ThemeProvider.js +3 -10
  292. package/dist/internal/components/TimePicker.js +2 -12
  293. package/dist/internal/components/Timeline.js +2 -10
  294. package/dist/internal/components/Toast.js +3 -11
  295. package/dist/internal/components/Toggle.js +168 -8
  296. package/dist/internal/components/Toggle.js.map +1 -1
  297. package/dist/internal/components/ToggleGroup.js +2 -9
  298. package/dist/internal/components/Tooltip.js +2 -8
  299. package/dist/internal/components/Truncated.js +44 -8
  300. package/dist/internal/components/Truncated.js.map +1 -1
  301. package/dist/internal/components/Workbench.js +2 -11
  302. package/dist/internal/components/ZoomableSvg.js +2 -13
  303. package/dist/internal/hooks/useAutosizeInput.js +76 -3
  304. package/dist/internal/hooks/useAutosizeInput.js.map +1 -1
  305. package/dist/internal/hooks/useScrollbarPosition.js +44 -4
  306. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -1
  307. package/dist/internal/hooks/useStableCallback.js +28 -3
  308. package/dist/internal/hooks/useStableCallback.js.map +1 -1
  309. package/dist/internal/utils/mergeRefs.js +19 -3
  310. package/dist/internal/utils/mergeRefs.js.map +1 -1
  311. package/dist/internal/utils.js +5 -8
  312. package/dist/markdown-editor.d.ts +72 -72
  313. package/dist/markdown-editor.js +1122 -1207
  314. package/dist/markdown-editor.js.map +1 -1
  315. package/dist/mermaid.d.ts +12 -12
  316. package/dist/mermaid.js +2 -18
  317. package/dist/rjsf.d.ts +33 -34
  318. package/dist/rjsf.js +1541 -1671
  319. package/dist/rjsf.js.map +1 -1
  320. package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
  321. package/dist/styles-DSUP_-9Z.js +158 -0
  322. package/dist/styles-DSUP_-9Z.js.map +1 -0
  323. package/dist/testing.d.ts +8 -7
  324. package/dist/testing.js +36 -21
  325. package/dist/testing.js.map +1 -1
  326. package/dist/themeTokens-BNg98Mu9.js +85 -0
  327. package/dist/themeTokens-BNg98Mu9.js.map +1 -0
  328. package/dist/toast-CjkURw0M.js +184 -0
  329. package/dist/toast-CjkURw0M.js.map +1 -0
  330. package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
  331. package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
  332. package/dist/useControllableState-M6494mCT.js +31 -0
  333. package/dist/useControllableState-M6494mCT.js.map +1 -0
  334. package/dist/useElement-DkF6esWL.js +15 -0
  335. package/dist/useElement-DkF6esWL.js.map +1 -0
  336. package/dist/useMergeDiff-CvowEXJ1.js +465 -0
  337. package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
  338. package/dist/utils-D0c5VAyF.js +308 -0
  339. package/dist/utils-D0c5VAyF.js.map +1 -0
  340. package/package.json +8 -8
  341. package/dist/MermaidDiagram-ZU5KAVRT.js +0 -18
  342. package/dist/MermaidDiagram-ZU5KAVRT.js.map +0 -1
  343. package/dist/chunk-2YYJDKSP.js +0 -51
  344. package/dist/chunk-2YYJDKSP.js.map +0 -1
  345. package/dist/chunk-3P5UUCFI.js +0 -385
  346. package/dist/chunk-3P5UUCFI.js.map +0 -1
  347. package/dist/chunk-3QDFDDWZ.js +0 -99
  348. package/dist/chunk-3QDFDDWZ.js.map +0 -1
  349. package/dist/chunk-3W27OLK5.js +0 -15
  350. package/dist/chunk-3W27OLK5.js.map +0 -1
  351. package/dist/chunk-4FIZZONW.js +0 -40
  352. package/dist/chunk-4FIZZONW.js.map +0 -1
  353. package/dist/chunk-4GIAXOJG.js +0 -133
  354. package/dist/chunk-4GIAXOJG.js.map +0 -1
  355. package/dist/chunk-52NDNMK7.js +0 -99
  356. package/dist/chunk-52NDNMK7.js.map +0 -1
  357. package/dist/chunk-576G5OES.js +0 -201
  358. package/dist/chunk-576G5OES.js.map +0 -1
  359. package/dist/chunk-5AIE6SET.js +0 -659
  360. package/dist/chunk-5AIE6SET.js.map +0 -1
  361. package/dist/chunk-5FTNAZRW.js +0 -327
  362. package/dist/chunk-5FTNAZRW.js.map +0 -1
  363. package/dist/chunk-5IG2S7ZY.js +0 -70
  364. package/dist/chunk-5IG2S7ZY.js.map +0 -1
  365. package/dist/chunk-5QCXHNCW.js +0 -404
  366. package/dist/chunk-5QCXHNCW.js.map +0 -1
  367. package/dist/chunk-6DUMGC7Y.js +0 -105
  368. package/dist/chunk-6DUMGC7Y.js.map +0 -1
  369. package/dist/chunk-6J25CVST.js +0 -174
  370. package/dist/chunk-6J25CVST.js.map +0 -1
  371. package/dist/chunk-6NN35XOP.js +0 -120
  372. package/dist/chunk-6NN35XOP.js.map +0 -1
  373. package/dist/chunk-6NZBVA4T.js +0 -24
  374. package/dist/chunk-6NZBVA4T.js.map +0 -1
  375. package/dist/chunk-6W5BHRCL.js +0 -295
  376. package/dist/chunk-6W5BHRCL.js.map +0 -1
  377. package/dist/chunk-72BKRCEG.js +0 -409
  378. package/dist/chunk-72BKRCEG.js.map +0 -1
  379. package/dist/chunk-7GTI3PPI.js +0 -95
  380. package/dist/chunk-7GTI3PPI.js.map +0 -1
  381. package/dist/chunk-7P6PLZ4B.js +0 -74
  382. package/dist/chunk-7P6PLZ4B.js.map +0 -1
  383. package/dist/chunk-7WZWY5IA.js +0 -46
  384. package/dist/chunk-7WZWY5IA.js.map +0 -1
  385. package/dist/chunk-AIYO2632.js +0 -489
  386. package/dist/chunk-AIYO2632.js.map +0 -1
  387. package/dist/chunk-ANFZWPNE.js +0 -112
  388. package/dist/chunk-ANFZWPNE.js.map +0 -1
  389. package/dist/chunk-ANZTVAJU.js +0 -73
  390. package/dist/chunk-ANZTVAJU.js.map +0 -1
  391. package/dist/chunk-BD5BTJKX.js +0 -166
  392. package/dist/chunk-BD5BTJKX.js.map +0 -1
  393. package/dist/chunk-BHGIDSRJ.js +0 -140
  394. package/dist/chunk-BHGIDSRJ.js.map +0 -1
  395. package/dist/chunk-BSQWZITZ.js +0 -507
  396. package/dist/chunk-BSQWZITZ.js.map +0 -1
  397. package/dist/chunk-D3LAIK62.js +0 -23
  398. package/dist/chunk-D3LAIK62.js.map +0 -1
  399. package/dist/chunk-DODCR43C.js +0 -155
  400. package/dist/chunk-DODCR43C.js.map +0 -1
  401. package/dist/chunk-EEK5NGZF.js +0 -40
  402. package/dist/chunk-EEK5NGZF.js.map +0 -1
  403. package/dist/chunk-ENRG7TXA.js +0 -11
  404. package/dist/chunk-ENRG7TXA.js.map +0 -1
  405. package/dist/chunk-EQRMGIGY.js +0 -239
  406. package/dist/chunk-EQRMGIGY.js.map +0 -1
  407. package/dist/chunk-ERAHK5YQ.js +0 -495
  408. package/dist/chunk-ERAHK5YQ.js.map +0 -1
  409. package/dist/chunk-F3FOFY2P.js +0 -124
  410. package/dist/chunk-F3FOFY2P.js.map +0 -1
  411. package/dist/chunk-F6BTWFOC.js +0 -507
  412. package/dist/chunk-F6BTWFOC.js.map +0 -1
  413. package/dist/chunk-F6J6NNAL.js +0 -34
  414. package/dist/chunk-F6J6NNAL.js.map +0 -1
  415. package/dist/chunk-FCHJ7D5O.js +0 -59
  416. package/dist/chunk-FCHJ7D5O.js.map +0 -1
  417. package/dist/chunk-FFJTEQCC.js +0 -80
  418. package/dist/chunk-FFJTEQCC.js.map +0 -1
  419. package/dist/chunk-FUFMVW7O.js +0 -64
  420. package/dist/chunk-FUFMVW7O.js.map +0 -1
  421. package/dist/chunk-FVPGQ6UE.js +0 -25
  422. package/dist/chunk-FVPGQ6UE.js.map +0 -1
  423. package/dist/chunk-G3PMV62Z.js +0 -33
  424. package/dist/chunk-G3PMV62Z.js.map +0 -1
  425. package/dist/chunk-GACFOW3E.js +0 -51
  426. package/dist/chunk-GACFOW3E.js.map +0 -1
  427. package/dist/chunk-GDT6HQMK.js +0 -42
  428. package/dist/chunk-GDT6HQMK.js.map +0 -1
  429. package/dist/chunk-HLGU22C6.js +0 -2589
  430. package/dist/chunk-HLGU22C6.js.map +0 -1
  431. package/dist/chunk-HPMYYGP7.js +0 -134
  432. package/dist/chunk-HPMYYGP7.js.map +0 -1
  433. package/dist/chunk-I2UCOD45.js +0 -197
  434. package/dist/chunk-I2UCOD45.js.map +0 -1
  435. package/dist/chunk-IEGDZUVM.js +0 -75
  436. package/dist/chunk-IEGDZUVM.js.map +0 -1
  437. package/dist/chunk-IIS7INHF.js +0 -47
  438. package/dist/chunk-IIS7INHF.js.map +0 -1
  439. package/dist/chunk-ITELSEFU.js +0 -256
  440. package/dist/chunk-ITELSEFU.js.map +0 -1
  441. package/dist/chunk-IXAYNBOY.js +0 -407
  442. package/dist/chunk-IXAYNBOY.js.map +0 -1
  443. package/dist/chunk-JUW2ETEI.js +0 -191
  444. package/dist/chunk-JUW2ETEI.js.map +0 -1
  445. package/dist/chunk-K65C7CVE.js +0 -127
  446. package/dist/chunk-K65C7CVE.js.map +0 -1
  447. package/dist/chunk-KDI64MCY.js +0 -189
  448. package/dist/chunk-KDI64MCY.js.map +0 -1
  449. package/dist/chunk-KN4ASMH5.js +0 -160
  450. package/dist/chunk-KN4ASMH5.js.map +0 -1
  451. package/dist/chunk-KQW7QNTU.js +0 -1549
  452. package/dist/chunk-KQW7QNTU.js.map +0 -1
  453. package/dist/chunk-KR7NXXHC.js +0 -66
  454. package/dist/chunk-KR7NXXHC.js.map +0 -1
  455. package/dist/chunk-KRZKIVMA.js +0 -142
  456. package/dist/chunk-KRZKIVMA.js.map +0 -1
  457. package/dist/chunk-KTTLLKGQ.js +0 -185
  458. package/dist/chunk-KTTLLKGQ.js.map +0 -1
  459. package/dist/chunk-KWKSHPDP.js +0 -234
  460. package/dist/chunk-KWKSHPDP.js.map +0 -1
  461. package/dist/chunk-KZVC7OYG.js +0 -57
  462. package/dist/chunk-KZVC7OYG.js.map +0 -1
  463. package/dist/chunk-L5DHUN2V.js +0 -204
  464. package/dist/chunk-L5DHUN2V.js.map +0 -1
  465. package/dist/chunk-LCTGEH57.js +0 -1376
  466. package/dist/chunk-LCTGEH57.js.map +0 -1
  467. package/dist/chunk-LXLIQ2D6.js +0 -12
  468. package/dist/chunk-LXLIQ2D6.js.map +0 -1
  469. package/dist/chunk-M4CTURKX.js +0 -84
  470. package/dist/chunk-M4CTURKX.js.map +0 -1
  471. package/dist/chunk-M6LTUPVP.js +0 -301
  472. package/dist/chunk-M6LTUPVP.js.map +0 -1
  473. package/dist/chunk-MA6RRHDT.js +0 -291
  474. package/dist/chunk-MA6RRHDT.js.map +0 -1
  475. package/dist/chunk-MODE4QIA.js +0 -6
  476. package/dist/chunk-MODE4QIA.js.map +0 -1
  477. package/dist/chunk-MVILMVGG.js +0 -118
  478. package/dist/chunk-MVILMVGG.js.map +0 -1
  479. package/dist/chunk-MWS4VCLV.js +0 -17
  480. package/dist/chunk-MWS4VCLV.js.map +0 -1
  481. package/dist/chunk-NEUX74SO.js +0 -315
  482. package/dist/chunk-NEUX74SO.js.map +0 -1
  483. package/dist/chunk-NFHKYBRD.js +0 -156
  484. package/dist/chunk-NFHKYBRD.js.map +0 -1
  485. package/dist/chunk-NHJNNXD3.js +0 -89
  486. package/dist/chunk-NHJNNXD3.js.map +0 -1
  487. package/dist/chunk-O2BF3HZL.js +0 -33
  488. package/dist/chunk-O2BF3HZL.js.map +0 -1
  489. package/dist/chunk-OANXCZYD.js +0 -212
  490. package/dist/chunk-OANXCZYD.js.map +0 -1
  491. package/dist/chunk-ODJF7YIP.js +0 -230
  492. package/dist/chunk-ODJF7YIP.js.map +0 -1
  493. package/dist/chunk-ON4BJTHI.js +0 -101
  494. package/dist/chunk-ON4BJTHI.js.map +0 -1
  495. package/dist/chunk-OTL5WXIJ.js +0 -16
  496. package/dist/chunk-OTL5WXIJ.js.map +0 -1
  497. package/dist/chunk-PACNBKJV.js +0 -47
  498. package/dist/chunk-PACNBKJV.js.map +0 -1
  499. package/dist/chunk-PROCA7K7.js +0 -23
  500. package/dist/chunk-PROCA7K7.js.map +0 -1
  501. package/dist/chunk-QGMIPA67.js +0 -85
  502. package/dist/chunk-QGMIPA67.js.map +0 -1
  503. package/dist/chunk-QQA37LFB.js +0 -190
  504. package/dist/chunk-QQA37LFB.js.map +0 -1
  505. package/dist/chunk-QZAWRSEB.js +0 -61
  506. package/dist/chunk-QZAWRSEB.js.map +0 -1
  507. package/dist/chunk-R74KGWNS.js +0 -699
  508. package/dist/chunk-R74KGWNS.js.map +0 -1
  509. package/dist/chunk-RFDLHMKL.js +0 -110
  510. package/dist/chunk-RFDLHMKL.js.map +0 -1
  511. package/dist/chunk-RL64HN7S.js +0 -40
  512. package/dist/chunk-RL64HN7S.js.map +0 -1
  513. package/dist/chunk-RMRQKPL7.js +0 -115
  514. package/dist/chunk-RMRQKPL7.js.map +0 -1
  515. package/dist/chunk-RQVK4IYC.js +0 -606
  516. package/dist/chunk-RQVK4IYC.js.map +0 -1
  517. package/dist/chunk-RTW56PWZ.js +0 -59
  518. package/dist/chunk-RTW56PWZ.js.map +0 -1
  519. package/dist/chunk-RUTPQNLR.js +0 -266
  520. package/dist/chunk-RUTPQNLR.js.map +0 -1
  521. package/dist/chunk-S6TAF63G.js +0 -25
  522. package/dist/chunk-S6TAF63G.js.map +0 -1
  523. package/dist/chunk-SBGAUGXY.js +0 -224
  524. package/dist/chunk-SBGAUGXY.js.map +0 -1
  525. package/dist/chunk-SC275NHZ.js +0 -407
  526. package/dist/chunk-SC275NHZ.js.map +0 -1
  527. package/dist/chunk-SCQPU4UE.js +0 -97
  528. package/dist/chunk-SCQPU4UE.js.map +0 -1
  529. package/dist/chunk-SFFF2WQP.js +0 -8
  530. package/dist/chunk-SFFF2WQP.js.map +0 -1
  531. package/dist/chunk-SJYMHZKA.js +0 -36
  532. package/dist/chunk-SJYMHZKA.js.map +0 -1
  533. package/dist/chunk-SLCCUJVN.js +0 -125
  534. package/dist/chunk-SLCCUJVN.js.map +0 -1
  535. package/dist/chunk-SVBSNSD4.js +0 -259
  536. package/dist/chunk-SVBSNSD4.js.map +0 -1
  537. package/dist/chunk-SVPLTL35.js +0 -62
  538. package/dist/chunk-SVPLTL35.js.map +0 -1
  539. package/dist/chunk-SWQFYNYG.js +0 -338
  540. package/dist/chunk-SWQFYNYG.js.map +0 -1
  541. package/dist/chunk-THHB4EWS.js +0 -72
  542. package/dist/chunk-THHB4EWS.js.map +0 -1
  543. package/dist/chunk-TUCDD33E.js +0 -246
  544. package/dist/chunk-TUCDD33E.js.map +0 -1
  545. package/dist/chunk-TV4WAP2R.js +0 -14
  546. package/dist/chunk-TV4WAP2R.js.map +0 -1
  547. package/dist/chunk-U3A6YBTZ.js +0 -134
  548. package/dist/chunk-U3A6YBTZ.js.map +0 -1
  549. package/dist/chunk-UGT6DKWM.js +0 -95
  550. package/dist/chunk-VSERHUWD.js +0 -212
  551. package/dist/chunk-VSERHUWD.js.map +0 -1
  552. package/dist/chunk-VYG7BDXC.js +0 -49
  553. package/dist/chunk-VYG7BDXC.js.map +0 -1
  554. package/dist/chunk-WETKNYZX.js +0 -52
  555. package/dist/chunk-WETKNYZX.js.map +0 -1
  556. package/dist/chunk-WGG4AML3.js +0 -216
  557. package/dist/chunk-WGG4AML3.js.map +0 -1
  558. package/dist/chunk-WKAUEL6I.js +0 -30
  559. package/dist/chunk-WKAUEL6I.js.map +0 -1
  560. package/dist/chunk-WPOLA5CG.js +0 -81
  561. package/dist/chunk-WPOLA5CG.js.map +0 -1
  562. package/dist/chunk-WPVETCGJ.js +0 -254
  563. package/dist/chunk-WPVETCGJ.js.map +0 -1
  564. package/dist/chunk-WTSM3A7E.js +0 -13
  565. package/dist/chunk-WTSM3A7E.js.map +0 -1
  566. package/dist/chunk-WU3F2K3T.js +0 -148
  567. package/dist/chunk-WU3F2K3T.js.map +0 -1
  568. package/dist/chunk-WZZK2DTZ.js +0 -39
  569. package/dist/chunk-WZZK2DTZ.js.map +0 -1
  570. package/dist/chunk-X4IHLKRD.js +0 -42
  571. package/dist/chunk-X4IHLKRD.js.map +0 -1
  572. package/dist/chunk-XAHEXZJC.js +0 -80
  573. package/dist/chunk-XAHEXZJC.js.map +0 -1
  574. package/dist/chunk-XCYGJDUX.js +0 -31
  575. package/dist/chunk-XCYGJDUX.js.map +0 -1
  576. package/dist/chunk-Y4W3JORC.js +0 -104
  577. package/dist/chunk-Y4W3JORC.js.map +0 -1
  578. package/dist/chunk-YFZJ3ZLG.js +0 -1297
  579. package/dist/chunk-YFZJ3ZLG.js.map +0 -1
  580. package/dist/chunk-YI3WLXEN.js +0 -4387
  581. package/dist/chunk-YI3WLXEN.js.map +0 -1
  582. package/dist/chunk-ZBKFSPD3.js +0 -29
  583. package/dist/chunk-ZBKFSPD3.js.map +0 -1
  584. package/dist/chunk-ZOERRQ6A.js +0 -79
  585. package/dist/chunk-ZOERRQ6A.js.map +0 -1
  586. package/dist/chunk-ZSTGUKHU.js +0 -10
  587. package/dist/chunk-ZSTGUKHU.js.map +0 -1
  588. package/dist/chunk-ZUEHDL27.js +0 -65
  589. package/dist/chunk-ZUEHDL27.js.map +0 -1
  590. package/dist/constants-D3gaMY-W.d.ts +0 -39
  591. package/dist/icons.js.map +0 -1
  592. package/dist/index.js.map +0 -1
  593. package/dist/internal/blocks/AIKit.js.map +0 -1
  594. package/dist/internal/blocks/AppShell.js.map +0 -1
  595. package/dist/internal/blocks/AutoSaveTextarea.js.map +0 -1
  596. package/dist/internal/blocks/BrandEditor.js.map +0 -1
  597. package/dist/internal/blocks/ClipboardButton.js.map +0 -1
  598. package/dist/internal/blocks/ColorInput.js.map +0 -1
  599. package/dist/internal/blocks/ColorModeSwitch.js.map +0 -1
  600. package/dist/internal/blocks/Command.js.map +0 -1
  601. package/dist/internal/blocks/CopyField.js.map +0 -1
  602. package/dist/internal/blocks/DateInput.js.map +0 -1
  603. package/dist/internal/blocks/DateRangeInput.js.map +0 -1
  604. package/dist/internal/blocks/Form.js.map +0 -1
  605. package/dist/internal/blocks/FormGroup.js.map +0 -1
  606. package/dist/internal/blocks/MultiActionButtonGroup.js.map +0 -1
  607. package/dist/internal/blocks/OtpInput.js.map +0 -1
  608. package/dist/internal/blocks/PageHeader.js.map +0 -1
  609. package/dist/internal/blocks/PageLayout.js.map +0 -1
  610. package/dist/internal/blocks/PageToolbar.js.map +0 -1
  611. package/dist/internal/blocks/SearchInput.js.map +0 -1
  612. package/dist/internal/blocks/SectionNav.js.map +0 -1
  613. package/dist/internal/blocks/TextInput.js.map +0 -1
  614. package/dist/internal/components/Alert.js.map +0 -1
  615. package/dist/internal/components/AlertModal.js.map +0 -1
  616. package/dist/internal/components/Badge.js.map +0 -1
  617. package/dist/internal/components/BrandLogo.js.map +0 -1
  618. package/dist/internal/components/Breadcrumb.js.map +0 -1
  619. package/dist/internal/components/Button.js.map +0 -1
  620. package/dist/internal/components/Calendar.js.map +0 -1
  621. package/dist/internal/components/Card.js.map +0 -1
  622. package/dist/internal/components/Checkbox.js.map +0 -1
  623. package/dist/internal/components/Clipboard.js.map +0 -1
  624. package/dist/internal/components/Collapsible.js.map +0 -1
  625. package/dist/internal/components/Combobox.js.map +0 -1
  626. package/dist/internal/components/DatePicker.js.map +0 -1
  627. package/dist/internal/components/DateRangePicker.js.map +0 -1
  628. package/dist/internal/components/DiffView.js.map +0 -1
  629. package/dist/internal/components/DropdownMenu.js.map +0 -1
  630. package/dist/internal/components/FileUpload.js.map +0 -1
  631. package/dist/internal/components/FullScreenModal.js.map +0 -1
  632. package/dist/internal/components/HoverCard.js.map +0 -1
  633. package/dist/internal/components/InputGroup.js.map +0 -1
  634. package/dist/internal/components/Kbd.js.map +0 -1
  635. package/dist/internal/components/MarkedText.js.map +0 -1
  636. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +0 -1
  637. package/dist/internal/components/Modal.js.map +0 -1
  638. package/dist/internal/components/Navbar.js.map +0 -1
  639. package/dist/internal/components/Pagination.js.map +0 -1
  640. package/dist/internal/components/Popconfirm.js.map +0 -1
  641. package/dist/internal/components/Popover.js.map +0 -1
  642. package/dist/internal/components/RadioGroup.js.map +0 -1
  643. package/dist/internal/components/Resizable.js.map +0 -1
  644. package/dist/internal/components/Search.js.map +0 -1
  645. package/dist/internal/components/Select.js.map +0 -1
  646. package/dist/internal/components/Sheet.js.map +0 -1
  647. package/dist/internal/components/Sidebar.js.map +0 -1
  648. package/dist/internal/components/Slider.js.map +0 -1
  649. package/dist/internal/components/Stepper.js.map +0 -1
  650. package/dist/internal/components/Switch.js.map +0 -1
  651. package/dist/internal/components/Table.js.map +0 -1
  652. package/dist/internal/components/Tabs.js.map +0 -1
  653. package/dist/internal/components/ThemeProvider.js.map +0 -1
  654. package/dist/internal/components/TimePicker.js.map +0 -1
  655. package/dist/internal/components/Timeline.js.map +0 -1
  656. package/dist/internal/components/Toast.js.map +0 -1
  657. package/dist/internal/components/ToggleGroup.js.map +0 -1
  658. package/dist/internal/components/Tooltip.js.map +0 -1
  659. package/dist/internal/components/Workbench.js.map +0 -1
  660. package/dist/internal/components/ZoomableSvg.js.map +0 -1
  661. package/dist/internal/utils.js.map +0 -1
  662. package/dist/mermaid.js.map +0 -1
@@ -0,0 +1,952 @@
1
+ import { cn } from "./classNames-BzrkDnOD.js";
2
+ import { isMac, keyCodes } from "./utils-D0c5VAyF.js";
3
+ import { useArgoDesign } from "./context-KxxeMHbR.js";
4
+ import { escapeStringRegexp } from "./escapeStringRegexp-8MxP2knR.js";
5
+ import { ClipboardButton } from "./ClipboardButton-ez5V3fkk.js";
6
+ import { HelpBlock } from "./internal/components/HelpBlock.js";
7
+ import { Kbd } from "./Kbd-CxHAo1oo.js";
8
+ import { useStableCallback } from "./internal/hooks/useStableCallback.js";
9
+ import { resolveToken, useThemeAttributes } from "./themeTokens-BNg98Mu9.js";
10
+ import { useEffect, useLayoutEffect, useMemo, useRef } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { autocompletion, completeAnyWord } from "@codemirror/autocomplete";
13
+ import { json, jsonParseLinter } from "@codemirror/lang-json";
14
+ import { linter } from "@codemirror/lint";
15
+ import { unifiedMergeView } from "@codemirror/merge";
16
+ import { Decoration, EditorView, ViewPlugin, keymap, placeholder, tooltips } from "@codemirror/view";
17
+ import CodeMirror, { EditorState } from "@uiw/react-codemirror";
18
+ import colors from "@keboola/tailwind-config/colors";
19
+ import { javascript } from "@codemirror/lang-javascript";
20
+ import { python } from "@codemirror/lang-python";
21
+ import { MSSQL, MySQL, PLSQL, PostgreSQL, StandardSQL } from "@codemirror/lang-sql";
22
+ import { StreamLanguage } from "@codemirror/language";
23
+ import { r } from "@codemirror/legacy-modes/mode/r";
24
+ import { shell } from "@codemirror/legacy-modes/mode/shell";
25
+ import { toml } from "@codemirror/legacy-modes/mode/toml";
26
+ import { tags } from "@lezer/highlight";
27
+ import { githubLightInit } from "@uiw/codemirror-theme-github";
28
+ import { getSqlLanguageSupport } from "@keboola/codemirror-lang-sql";
29
+ import { simpleMode } from "@codemirror/legacy-modes/mode/simple-mode";
30
+ import { Compartment, StateEffect, StateField } from "@codemirror/state";
31
+ //#region src/components/CodeEditor/ButtonToolbar.tsx
32
+ const ButtonToolbar = ({ value, children }) => {
33
+ if (!value && !children) return null;
34
+ return /* @__PURE__ */ jsxs("div", {
35
+ className: "tw:absolute tw:right-3 tw:top-1 tw:z-10 tw:flex tw:gap-0.5 tw:overflow-visible tw:rounded tw:border tw:border-solid tw:border-border tw:!bg-background tw:p-px tw:shadow-sm",
36
+ children: [!!value && /* @__PURE__ */ jsx(ClipboardButton, {
37
+ size: "icon-xs",
38
+ variant: "invisible",
39
+ text: value
40
+ }), children]
41
+ });
42
+ };
43
+ //#endregion
44
+ //#region src/components/CodeEditor/modes/dbt.ts
45
+ const COMMANDS = [
46
+ "run-operation",
47
+ "run",
48
+ "test",
49
+ "seed",
50
+ "snapshot",
51
+ "list",
52
+ "ls",
53
+ "compile",
54
+ "build",
55
+ "deps",
56
+ "docs",
57
+ "source"
58
+ ];
59
+ const SUBCOMMANDS = {
60
+ docs: ["generate"],
61
+ source: ["freshness"]
62
+ };
63
+ const ARGUMENTS = [
64
+ "--select",
65
+ "--exclude",
66
+ "--selector",
67
+ "--defer",
68
+ "--resource-type",
69
+ "-s"
70
+ ];
71
+ const SELECTORS = [
72
+ "--select",
73
+ "--exclude",
74
+ "-s"
75
+ ];
76
+ const METHODS = [
77
+ "path:",
78
+ "source:",
79
+ "tag:",
80
+ "package:",
81
+ "config:",
82
+ "test_type:",
83
+ "test_name:",
84
+ "state:",
85
+ "exposure:",
86
+ "metric:",
87
+ "result:",
88
+ "source_status:",
89
+ "column_name:"
90
+ ];
91
+ const FLAGS = [
92
+ "--fail-fast",
93
+ "--warn-error",
94
+ "--favor-state",
95
+ "--vars",
96
+ "--models",
97
+ "--threads",
98
+ "--profiles-dir",
99
+ "--profile",
100
+ "--full-refresh"
101
+ ];
102
+ const COMMAND_PHRASES = COMMANDS.flatMap((command) => {
103
+ const subcommands = SUBCOMMANDS[command];
104
+ return subcommands ? subcommands.map((subcommand) => `${command} ${subcommand}`) : [command];
105
+ });
106
+ const alternation = (list) => [...list].sort((a, b) => b.length - a.length).join("|");
107
+ const word = (list) => new RegExp(`^\\s+(?:${alternation(list)})\\b`, "i");
108
+ const prefix = (list) => new RegExp(`^\\s+(?:${alternation(list)})`, "i");
109
+ const WORD = /[\w:-]*$/;
110
+ const asOptions = (list, type) => list.map((label) => ({
111
+ label,
112
+ type
113
+ }));
114
+ const DBT = [{
115
+ label: "dbt",
116
+ type: "keyword"
117
+ }];
118
+ const COMMAND_OPTIONS = asOptions(COMMANDS, "keyword");
119
+ const SUBCOMMAND_OPTIONS = Object.fromEntries(Object.entries(SUBCOMMANDS).map(([command, subcommands]) => [command, asOptions(subcommands, "keyword")]));
120
+ const ARGUMENT_OPTIONS = asOptions(ARGUMENTS, "variable");
121
+ const FLAG_OPTIONS = asOptions(FLAGS, "constant");
122
+ const METHOD_OPTIONS = asOptions(METHODS, "property");
123
+ const optionsAfter = (words) => {
124
+ const [step, command, ...rest] = words;
125
+ if (step === void 0) return DBT;
126
+ if (step.toLowerCase() !== "dbt") return [];
127
+ if (command === void 0) return COMMAND_OPTIONS;
128
+ const subcommands = SUBCOMMAND_OPTIONS[command.toLowerCase()];
129
+ if (subcommands && rest.length === 0) return subcommands;
130
+ const lastArgument = rest.filter((it) => it.startsWith("-")).at(-1);
131
+ return lastArgument !== void 0 && SELECTORS.includes(lastArgument.toLowerCase()) ? [
132
+ ...ARGUMENT_OPTIONS,
133
+ ...FLAG_OPTIONS,
134
+ ...METHOD_OPTIONS
135
+ ] : [...ARGUMENT_OPTIONS, ...FLAG_OPTIONS];
136
+ };
137
+ const complete = (context) => {
138
+ const typed = context.matchBefore(WORD);
139
+ if (!typed?.text && !context.explicit) return null;
140
+ const from = typed?.from ?? context.pos;
141
+ const line = context.state.doc.lineAt(from);
142
+ const options = optionsAfter(line.text.slice(0, from - line.from).split(/\s+/).filter(Boolean));
143
+ return options.length > 0 ? {
144
+ from,
145
+ options,
146
+ validFor: WORD
147
+ } : null;
148
+ };
149
+ const dbt = simpleMode({
150
+ languageData: {
151
+ commentTokens: {
152
+ line: "--",
153
+ block: {
154
+ open: "/*",
155
+ close: "*/"
156
+ }
157
+ },
158
+ autocomplete: complete
159
+ },
160
+ start: [
161
+ {
162
+ regex: /"(?:[^\\]|\\.)*?(?:"|$)/,
163
+ token: "string"
164
+ },
165
+ {
166
+ regex: /dbt\b/,
167
+ token: "keyword",
168
+ sol: true
169
+ },
170
+ {
171
+ regex: word(COMMAND_PHRASES),
172
+ token: "keyword"
173
+ },
174
+ {
175
+ regex: word(ARGUMENTS),
176
+ token: "variableName"
177
+ },
178
+ {
179
+ regex: prefix(METHODS),
180
+ token: "propertyName"
181
+ },
182
+ {
183
+ regex: prefix(FLAGS),
184
+ token: "attributeName"
185
+ },
186
+ {
187
+ regex: /(?:@|\*|,|\+\d+|\d+\+|\+)/,
188
+ token: "operator"
189
+ },
190
+ {
191
+ regex: /'.*'/,
192
+ token: "string"
193
+ },
194
+ {
195
+ regex: /true|false/,
196
+ token: "atom"
197
+ }
198
+ ]
199
+ });
200
+ //#endregion
201
+ //#region src/components/CodeEditor/modes/jsonnet.ts
202
+ /**
203
+ * Ported from google/codemirror-mode-jsonnet (Apache-2.0), the mode written by
204
+ * the language's own authors, which was never taken past CodeMirror 5.
205
+ * CodeMirror 5 style names are replaced by their CodeMirror 6 highlight tags:
206
+ * `string-2` is `escape`, `error` is `invalid`.
207
+ *
208
+ * Every pattern is anchored and hoisted. `StringStream.match` slices the rest of
209
+ * the line and, without `^`, scans all of it for a match it then discards unless
210
+ * it started at the cursor — so an unanchored probe costs the whole remaining
211
+ * line, and this tokenizer makes up to twenty of them per token.
212
+ */
213
+ const COMMENT_END = /^\*\//;
214
+ const COMMENT_START = /^\/\/|^#/;
215
+ const C_COMMENT_START = /^\/\*/;
216
+ const TEXT_BLOCK = /^\|\|\|/;
217
+ const TEXT_BLOCK_END = /^\s*\|\|\|/;
218
+ const RAW_DOUBLE = /^""/;
219
+ const RAW_SINGLE = /^''/;
220
+ const CLOSE_DOUBLE = /^"/;
221
+ const CLOSE_SINGLE = /^'/;
222
+ const ESCAPE = /^\\[\\"'/bfnrt0]/;
223
+ const UNICODE_ESCAPE = /^\\u[0-9a-fA-F]{4}/;
224
+ const BACKSLASH = /^\\/;
225
+ const IMPORT = /^import(?:str)?\s*(@?)(["'])/;
226
+ const QUOTE = /^(@?)(["'])/;
227
+ const ROOT = /^\$/;
228
+ const NUMBER = /^(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i;
229
+ const OPERATOR = /^[-+/*=<>!&~^|$%]+/;
230
+ const IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*/;
231
+ const KEYWORDS = {
232
+ local: "keyword",
233
+ self: "keyword",
234
+ super: "keyword",
235
+ assert: "keyword",
236
+ function: "keyword",
237
+ if: "keyword",
238
+ then: "keyword",
239
+ else: "keyword",
240
+ for: "keyword",
241
+ in: "keyword",
242
+ tailstrict: "keyword",
243
+ error: "keyword",
244
+ true: "atom",
245
+ false: "atom",
246
+ null: "atom"
247
+ };
248
+ const jsonnet = {
249
+ name: "jsonnet",
250
+ languageData: { commentTokens: {
251
+ line: "//",
252
+ block: {
253
+ open: "/*",
254
+ close: "*/"
255
+ }
256
+ } },
257
+ startState: () => ({
258
+ cComment: false,
259
+ textBlock: false,
260
+ textBlockIndent: null,
261
+ string: false,
262
+ importString: false,
263
+ stringSingle: false,
264
+ stringRaw: false
265
+ }),
266
+ token: (stream, state) => {
267
+ if (state.cComment) {
268
+ if (stream.match(COMMENT_END)) {
269
+ state.cComment = false;
270
+ return "comment";
271
+ }
272
+ stream.next();
273
+ return "comment";
274
+ }
275
+ if (state.textBlock) {
276
+ if (state.textBlockIndent == null) {
277
+ if (stream.match(TEXT_BLOCK_END)) {
278
+ state.textBlock = false;
279
+ return "string";
280
+ }
281
+ state.textBlockIndent = stream.indentation();
282
+ }
283
+ if (stream.indentation() >= state.textBlockIndent) {
284
+ stream.skipToEnd();
285
+ return "string";
286
+ }
287
+ if (stream.match(TEXT_BLOCK_END)) {
288
+ state.textBlock = false;
289
+ return "string";
290
+ }
291
+ stream.next();
292
+ return "invalid";
293
+ }
294
+ if (state.string || state.importString) {
295
+ const style = state.string ? "string" : "meta";
296
+ if (state.stringRaw) {
297
+ if (stream.match(state.stringSingle ? RAW_SINGLE : RAW_DOUBLE)) return "escape";
298
+ } else {
299
+ if (stream.match(ESCAPE)) return "escape";
300
+ if (stream.match(UNICODE_ESCAPE)) return "escape";
301
+ if (stream.match(BACKSLASH)) return "invalid";
302
+ }
303
+ if (stream.match(state.stringSingle ? CLOSE_SINGLE : CLOSE_DOUBLE)) {
304
+ state.string = false;
305
+ state.importString = false;
306
+ return style;
307
+ }
308
+ stream.next();
309
+ return style;
310
+ }
311
+ if (stream.match(COMMENT_START)) {
312
+ stream.skipToEnd();
313
+ return "comment";
314
+ }
315
+ if (stream.match(C_COMMENT_START)) {
316
+ state.cComment = true;
317
+ return "comment";
318
+ }
319
+ const imported = stream.match(IMPORT);
320
+ if (Array.isArray(imported)) {
321
+ state.importString = true;
322
+ state.stringRaw = imported[1] === "@";
323
+ state.stringSingle = imported[2] === "'";
324
+ return "meta";
325
+ }
326
+ const quoted = stream.match(QUOTE);
327
+ if (Array.isArray(quoted)) {
328
+ state.string = true;
329
+ state.stringRaw = quoted[1] === "@";
330
+ state.stringSingle = quoted[2] === "'";
331
+ return "string";
332
+ }
333
+ if (stream.match(TEXT_BLOCK)) {
334
+ state.textBlock = true;
335
+ state.textBlockIndent = null;
336
+ return "string";
337
+ }
338
+ if (stream.match(ROOT)) return "keyword";
339
+ if (stream.match(NUMBER)) return "number";
340
+ if (stream.match(OPERATOR)) return "operator";
341
+ const identifier = stream.match(IDENTIFIER);
342
+ if (Array.isArray(identifier)) return KEYWORDS[identifier[0]] ?? null;
343
+ stream.next();
344
+ return null;
345
+ }
346
+ };
347
+ //#endregion
348
+ //#region src/components/CodeEditor/helpers.ts
349
+ const LANGUAGE_MODES = [
350
+ "application/json",
351
+ "text/plain",
352
+ "text/x-python",
353
+ "text/x-sql",
354
+ "text/x-mysql",
355
+ "text/x-pgsql",
356
+ "text/x-mssql",
357
+ "text/x-sfsql",
358
+ "text/x-bqsql",
359
+ "text/x-plsql",
360
+ "text/x-rsrc",
361
+ "text/x-sh",
362
+ "text/x-toml",
363
+ "text/jsonnet",
364
+ "text/x-dbt",
365
+ "text/javascript",
366
+ "text/typescript"
367
+ ];
368
+ const isLanguageMode = (mode) => LANGUAGE_MODES.includes(mode);
369
+ const READ_ONLY_EDITOR = "&.cm-editor:has(.cm-content[contenteditable=\"false\"])";
370
+ const EDITABLE_EDITOR = "&.cm-editor:has(.cm-content[contenteditable=\"true\"])";
371
+ const buildBaseThemeStyles = () => ({
372
+ "*": { lineHeight: "20px" },
373
+ "*::selection": {
374
+ backgroundColor: resolveToken("primary", "31 143 255"),
375
+ color: `${resolveToken("primary-foreground", "255 255 255")} !important`
376
+ },
377
+ [READ_ONLY_EDITOR]: { backgroundColor: resolveToken("secondary", "226 232 240") },
378
+ [`${READ_ONLY_EDITOR} .cm-gutters`]: { backgroundColor: resolveToken("border", "229 231 235") },
379
+ "&.cm-editor .cm-scroller": { overflowAnchor: "none" },
380
+ "&.cm-editor, &.cm-editor .cm-scroller": {
381
+ minHeight: "100%",
382
+ flexGrow: 1,
383
+ alignItems: "stretch !important",
384
+ outline: "none"
385
+ },
386
+ ".cm-gutter.cm-foldGutter": { display: "none !important" },
387
+ ".cm-gutter.cm-lineNumbers": {
388
+ paddingLeft: "20px",
389
+ paddingRight: "6px"
390
+ },
391
+ ".cm-gutters": { height: "auto" },
392
+ "&[class*=\"cm-merge-\"] .cm-deletedLine": { backgroundColor: colors.error[100] },
393
+ "&[class*=\"cm-merge-\"] .cm-changedLine": { backgroundColor: colors.green[100] },
394
+ "&[class*=\"cm-merge-\"] .cm-deletedLineGutter": { backgroundColor: colors.error[200] },
395
+ "&[class*=\"cm-merge-\"] .cm-changedLineGutter": { backgroundColor: colors.green[200] },
396
+ "&[class*=\"cm-merge-\"] .cm-deletedText": { background: colors.error[200] },
397
+ "&[class*=\"cm-merge-\"] .cm-changedText": { background: colors.green[200] },
398
+ "&[class*=\"cm-merge-\"]": { backgroundColor: `${colors.white} !important` },
399
+ "&[class*=\"cm-merge-\"] .cm-gutters": { backgroundColor: `${colors.white} !important` },
400
+ ".cm-changeGutter": {
401
+ position: "absolute",
402
+ zIndex: -1,
403
+ width: "100%",
404
+ paddingLeft: 0
405
+ },
406
+ "&[class*=\"cm-merge-\"] .cm-changedLine,&[class*=\"cm-merge-\"] .cm-line, &[class*=\"cm-merge-\"] .cm-deletedChunk": { paddingLeft: 0 }
407
+ });
408
+ const ALWAYS_OFF = {
409
+ drawSelection: false,
410
+ foldGutter: false,
411
+ foldKeymap: false,
412
+ highlightActiveLine: false,
413
+ highlightActiveLineGutter: false
414
+ };
415
+ const buildBasicSetup = (readOnly) => ({
416
+ ...ALWAYS_OFF,
417
+ ...readOnly ? {
418
+ closeBrackets: false,
419
+ closeBracketsKeymap: false,
420
+ lintKeymap: false,
421
+ indentOnInput: false,
422
+ rectangularSelection: false,
423
+ dropCursor: false,
424
+ highlightSelectionMatches: false
425
+ } : null
426
+ });
427
+ const buildCustomTheme = () => {
428
+ const foreground = resolveToken("foreground", "30 41 59");
429
+ return githubLightInit({
430
+ settings: {
431
+ fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
432
+ background: resolveToken("background", "249 250 251"),
433
+ foreground,
434
+ gutterBackground: resolveToken("muted", "241 245 249"),
435
+ gutterForeground: resolveToken("muted-foreground", "100 116 139"),
436
+ gutterBorder: "transparent",
437
+ lineHighlight: "transparent",
438
+ selection: resolveToken("primary", "31 143 255")
439
+ },
440
+ styles: [
441
+ {
442
+ tag: [
443
+ tags.name,
444
+ tags.special(tags.string),
445
+ tags.bracket
446
+ ],
447
+ color: foreground
448
+ },
449
+ {
450
+ tag: tags.standard(tags.name),
451
+ color: colors.purple[600]
452
+ },
453
+ {
454
+ tag: tags.special(tags.name),
455
+ color: colors.cyan[700]
456
+ },
457
+ {
458
+ tag: tags.string,
459
+ color: colors.warning[700]
460
+ }
461
+ ]
462
+ });
463
+ };
464
+ const getLanguageMode = (mode) => {
465
+ switch (mode) {
466
+ case void 0:
467
+ case "application/json": return json();
468
+ case "text/x-python": return python();
469
+ case "text/x-sql": return getSqlLanguageSupport(StandardSQL);
470
+ case "text/x-mysql": return getSqlLanguageSupport(MySQL);
471
+ case "text/x-pgsql": return getSqlLanguageSupport(PostgreSQL);
472
+ case "text/x-mssql": return getSqlLanguageSupport(MSSQL);
473
+ case "text/x-sfsql": return getSqlLanguageSupport("snowflake");
474
+ case "text/x-bqsql": return getSqlLanguageSupport("bigquery");
475
+ case "text/x-plsql": return getSqlLanguageSupport(PLSQL);
476
+ case "text/x-rsrc": return StreamLanguage.define(r);
477
+ case "text/x-sh": return StreamLanguage.define(shell);
478
+ case "text/x-toml": return StreamLanguage.define(toml);
479
+ case "text/jsonnet": return StreamLanguage.define(jsonnet);
480
+ case "text/x-dbt": return StreamLanguage.define(dbt);
481
+ case "text/javascript": return javascript({ jsx: true });
482
+ case "text/typescript": return javascript({
483
+ jsx: true,
484
+ typescript: true
485
+ });
486
+ default: return [];
487
+ }
488
+ };
489
+ const shouldLintJson = (mode, readOnly) => mode === "application/json" && !readOnly;
490
+ //#endregion
491
+ //#region src/components/CodeEditor/editorChrome.ts
492
+ /**
493
+ * Mirrors `InputGroup` at the sizing each design language gives a `TextInput`,
494
+ * so an editor dropped into a form reads as one of its fields.
495
+ *
496
+ * The legacy preset reads the neutral ramp because the legacy `secondary`
497
+ * variant does. No semantic token holds that grey, and the nearest one
498
+ * (`--muted`) is a few points off — which is the "almost, but not quite, the
499
+ * input next to it" mismatch this preset exists to remove.
500
+ */
501
+ const buildInputChrome = (isArgo) => ({
502
+ surface: isArgo ? resolveToken("muted", "241 245 249") : colors.neutral[100],
503
+ borderColor: isArgo ? resolveToken("input", "203 213 225") : colors.neutral[100],
504
+ readOnlySurface: isArgo ? resolveToken("muted", "241 245 249") : colors.neutral[150],
505
+ readOnlyBorderColor: isArgo ? resolveToken("input", "203 213 225") : colors.neutral[150],
506
+ hoverBorderColor: null,
507
+ focusBorderColor: isArgo ? resolveToken("primary", "37 99 235") : resolveToken("ring", "31 143 255"),
508
+ focusRing: `0 0 0 4px ${resolveToken("ring", "31 143 255", isArgo ? .5 : .3)}`,
509
+ radius: isArgo ? "var(--radius-lg, 0.25rem)" : "0.25rem",
510
+ paddingY: isArgo ? "3px" : "5px",
511
+ paddingX: {
512
+ left: "10px",
513
+ right: "14px"
514
+ }
515
+ });
516
+ /** The SQL workspace's notebook cell: a white canvas, not a form control. */
517
+ const buildCanvasChrome = () => ({
518
+ surface: resolveToken("card", "255 255 255"),
519
+ borderColor: "transparent",
520
+ readOnlySurface: resolveToken("muted", "241 245 249"),
521
+ readOnlyBorderColor: "transparent",
522
+ hoverBorderColor: resolveToken("ring", "31 143 255"),
523
+ focusBorderColor: resolveToken("ring", "31 143 255"),
524
+ focusRing: `0 0 0 4px ${resolveToken("ring", "31 143 255", .3)}`,
525
+ radius: "8px",
526
+ paddingY: "8px",
527
+ paddingX: null
528
+ });
529
+ /**
530
+ * Spread over `buildBaseThemeStyles()` — never used alone. The read-only keys
531
+ * are the base's own, so they replace its wash instead of landing beside it.
532
+ */
533
+ const buildChromeStyles = (chrome) => ({
534
+ "&.cm-editor": {
535
+ border: `solid 1px ${chrome.borderColor}`,
536
+ borderRadius: chrome.radius,
537
+ backgroundColor: chrome.surface,
538
+ paddingTop: chrome.paddingY,
539
+ paddingBottom: chrome.paddingY
540
+ },
541
+ "&.cm-editor :is(.cm-gutters,.cm-scroller)": { backgroundColor: chrome.surface },
542
+ ...chrome.paddingX ? { "&.cm-editor:not(:has(.cm-gutters)) .cm-content": {
543
+ paddingLeft: chrome.paddingX.left,
544
+ paddingRight: chrome.paddingX.right
545
+ } } : null,
546
+ ...chrome.hoverBorderColor ? { [`${EDITABLE_EDITOR}:hover`]: { borderColor: chrome.hoverBorderColor } } : null,
547
+ [`${EDITABLE_EDITOR}:focus-within`]: {
548
+ borderColor: chrome.focusBorderColor,
549
+ boxShadow: chrome.focusRing
550
+ },
551
+ [READ_ONLY_EDITOR]: {
552
+ backgroundColor: chrome.readOnlySurface,
553
+ borderColor: chrome.readOnlyBorderColor
554
+ },
555
+ [`${READ_ONLY_EDITOR} .cm-gutters`]: { backgroundColor: chrome.readOnlySurface },
556
+ [`${READ_ONLY_EDITOR} .cm-scroller`]: { backgroundColor: chrome.readOnlySurface }
557
+ });
558
+ //#endregion
559
+ //#region src/components/CodeEditor/search.ts
560
+ const setSearchEffect = StateEffect.define();
561
+ function findMatches(doc, query) {
562
+ if (!query) return [];
563
+ const text = doc.toString();
564
+ try {
565
+ const regex = new RegExp(escapeStringRegexp(query), "gi");
566
+ return Array.from(text.matchAll(regex)).map((match, index) => {
567
+ const from = match.index;
568
+ return {
569
+ from,
570
+ to: from + match[0].length,
571
+ text: match[0],
572
+ localIndex: index
573
+ };
574
+ });
575
+ } catch (e) {
576
+ console.warn("Invalid search regex:", e);
577
+ return [];
578
+ }
579
+ }
580
+ function createDecorations(matches, selectedLocalIndex) {
581
+ const decorations = matches.map((match) => {
582
+ const isSelected = match.localIndex === selectedLocalIndex;
583
+ return Decoration.mark({ class: isSelected ? "cm-searchMatch-selected" : "cm-searchMatch" }).range(match.from, match.to);
584
+ });
585
+ return Decoration.set(decorations, true);
586
+ }
587
+ const searchField = StateField.define({
588
+ create() {
589
+ return {
590
+ query: "",
591
+ selectedMatchIndex: void 0,
592
+ matches: [],
593
+ decorations: Decoration.none
594
+ };
595
+ },
596
+ update(state, tr) {
597
+ let newState = state;
598
+ for (const effect of tr.effects) {
599
+ if (!effect.is(setSearchEffect)) continue;
600
+ const { query, selectedMatchIndex } = effect.value;
601
+ const matches = findMatches(tr.state.doc, query);
602
+ newState = {
603
+ query,
604
+ selectedMatchIndex,
605
+ matches,
606
+ decorations: createDecorations(matches, selectedMatchIndex)
607
+ };
608
+ }
609
+ if (tr.docChanged && newState.query) {
610
+ const matches = findMatches(tr.state.doc, newState.query);
611
+ const decorations = createDecorations(matches, newState.selectedMatchIndex);
612
+ newState = {
613
+ ...newState,
614
+ matches,
615
+ decorations
616
+ };
617
+ }
618
+ return newState;
619
+ },
620
+ provide: (field) => EditorView.decorations.from(field, (state) => state.decorations)
621
+ });
622
+ const searchViewPlugin = ViewPlugin.fromClass(class {
623
+ lastSelectedIndex;
624
+ update(update) {
625
+ const state = update.state.field(searchField);
626
+ if (state.selectedMatchIndex !== void 0 && state.selectedMatchIndex !== this.lastSelectedIndex) {
627
+ const match = state.matches[state.selectedMatchIndex];
628
+ if (match) requestAnimationFrame(() => {
629
+ update.view.dispatch({ effects: EditorView.scrollIntoView(match.from, { y: "center" }) });
630
+ });
631
+ this.lastSelectedIndex = state.selectedMatchIndex;
632
+ }
633
+ if (state.selectedMatchIndex === void 0) this.lastSelectedIndex = void 0;
634
+ }
635
+ });
636
+ const searchTheme = EditorView.baseTheme({
637
+ ".cm-searchMatch": { backgroundColor: colors.blue[100] },
638
+ ".cm-searchMatch > span": { color: `${colors.blue[600]} !important` },
639
+ ".cm-searchMatch-selected": { backgroundColor: colors.blue[600] },
640
+ ".cm-searchMatch-selected > span": { color: `${colors.white} !important` }
641
+ });
642
+ function searchExtension() {
643
+ return [
644
+ searchField,
645
+ searchViewPlugin,
646
+ searchTheme
647
+ ];
648
+ }
649
+ function updateSearch(view, query, selectedMatchIndex) {
650
+ view.dispatch({ effects: setSearchEffect.of({
651
+ query,
652
+ selectedMatchIndex
653
+ }) });
654
+ }
655
+ //#endregion
656
+ //#region src/components/CodeEditor/ToggleComponentHelp.tsx
657
+ const ToggleComponentHelp = () => /* @__PURE__ */ jsxs("div", { children: [
658
+ "Use ",
659
+ /* @__PURE__ */ jsx(Kbd, { children: isMac ? "Command+/" : "Ctrl+/" }),
660
+ " to toggle comments."
661
+ ] });
662
+ //#endregion
663
+ //#region src/components/CodeEditor/tokenTheme.ts
664
+ const themeCache = /* @__PURE__ */ new Map();
665
+ /**
666
+ * Memoize a CodeMirror theme/extension built from `resolveToken`, shared across
667
+ * every instance that passes the same `cacheKey` and rebuilt whenever the active
668
+ * brand / light-dark mode changes. `build` reads live `--*` values off `<html>`,
669
+ * so the active theme is an invisible dependency a deps array can't see.
670
+ *
671
+ * `build` receives the scheme those values were read under, for the theme values
672
+ * that are a light/dark *pair* rather than a token lookup (a categorical diff
673
+ * wash has no semantic token, but an opaque light pastel still has to become a
674
+ * low-alpha tint under dark). It comes from the same read that produced the key,
675
+ * so a builder cannot resolve one scheme's colours under the other one's key.
676
+ *
677
+ * `cacheKey` is the extension's full identity: anything the builder closes over
678
+ * must be part of it (e.g. `` `merge-pane:${deleted}` ``), or instances built
679
+ * from different inputs would share one theme.
680
+ */
681
+ const useThemedExtension = (cacheKey, build) => {
682
+ const { scheme, cacheKey: themeKey } = useThemeAttributes();
683
+ const key = `${themeKey} ${cacheKey}`;
684
+ let cached = themeCache.get(key);
685
+ if (!cached) {
686
+ cached = build(scheme);
687
+ themeCache.set(key, cached);
688
+ }
689
+ return cached;
690
+ };
691
+ //#endregion
692
+ //#region src/components/CodeEditor/tooltips.ts
693
+ const establishesFixedContainingBlock = (style) => style.transform !== "none" || style.translate !== "none" || style.rotate !== "none" || style.scale !== "none" || style.perspective !== "none" || style.filter !== "none" || style.backdropFilter !== "none" || /\b(paint|layout|strict|content)\b/.test(style.contain) || /\b(transform|perspective|filter|contain)\b/.test(style.willChange);
694
+ const crops = (style) => style.overflowX !== "visible" || style.overflowY !== "visible" || style.maskImage !== "none" || style.contentVisibility !== "visible" || /\b(paint|strict|content)\b/.test(style.contain);
695
+ /**
696
+ * Where a tooltip can hang without being cropped, or `null` for "wherever
697
+ * CodeMirror would put it anyway".
698
+ *
699
+ * Two ancestors matter, and they are not the same ancestor. The **outermost
700
+ * cropper** is the one to get above — landing anywhere below it leaves the
701
+ * tooltip inside the box doing the cropping. The **containing block** is where
702
+ * the search can stop, because from there upwards `position: fixed` is measured
703
+ * against that element and nothing higher can crop it.
704
+ *
705
+ * `document.body` and `<html>` are not treated as croppers: a fixed box whose
706
+ * containing block is the viewport is not clipped by their overflow, and
707
+ * hosting outside `<body>` would drop the tooltip out of the app's stacking and
708
+ * pointer-events scope for no gain.
709
+ */
710
+ const findTooltipHost = (from) => {
711
+ let outermostCropper = null;
712
+ for (let node = from.parentElement; node && node !== document.body; node = node.parentElement) {
713
+ const style = getComputedStyle(node);
714
+ if (crops(style)) outermostCropper = node;
715
+ else if (establishesFixedContainingBlock(style)) return outermostCropper?.parentElement ?? node;
716
+ }
717
+ return outermostCropper?.parentElement ?? null;
718
+ };
719
+ /**
720
+ * `tooltips()`, re-hosted so the completion popup is never cropped.
721
+ *
722
+ * CodeMirror hangs tooltips inside the editor and lets `position: fixed` carry
723
+ * them past its edges. That holds only while the viewport is their containing
724
+ * block — a modal centred with a translate, a sheet sliding in, or a box under
725
+ * paint containment takes that job, and then every scroller, mask and contained
726
+ * box in between crops the popup instead. A tall editor hides the damage; a
727
+ * one-line one shows a sliver of an unreadable list.
728
+ *
729
+ * The two shapes this has to survive in production are a `Modal`, whose body
730
+ * scrolls and carries the argo fade mask, and kbc-ui's SQL editor, which wraps
731
+ * every code block in `content-visibility: auto` to keep long scripts cheap.
732
+ *
733
+ * Hosting the layer above the outermost cropper clears all of that while keeping
734
+ * the popup inside the modal's stacking, focus and pointer-events scope — which
735
+ * `document.body` would not: the popup would sit behind the modal, and Radix
736
+ * leaves the body `pointer-events: none` while a dialog is open.
737
+ *
738
+ * Both editors install this, and it is the only place either of them configures
739
+ * a tooltip host. Keep it that way: CodeMirror's tooltip config takes the first
740
+ * contributor that names a parent, so a second mechanism would not compose with
741
+ * this one — it would silently win or lose on extension order.
742
+ */
743
+ const tooltipsExtension = () => {
744
+ const layer = new Compartment();
745
+ return [layer.of(tooltips()), ViewPlugin.define((view) => {
746
+ const scheduled = setTimeout(() => {
747
+ if (!view.dom.isConnected) return;
748
+ const parent = findTooltipHost(view.dom);
749
+ if (parent) view.dispatch({ effects: layer.reconfigure(tooltips({ parent })) });
750
+ });
751
+ return { destroy: () => clearTimeout(scheduled) };
752
+ })];
753
+ };
754
+ /**
755
+ * The extension above, built once per editor. Rebuilding it would hand
756
+ * CodeMirror a fresh compartment and plugin on every reconfigure, dropping the
757
+ * host it had already resolved — so it is only ever reached through this hook.
758
+ */
759
+ const useTooltipsExtension = () => useMemo(tooltipsExtension, []);
760
+ //#endregion
761
+ //#region src/components/CodeEditor/variableCompletion.ts
762
+ const BOOST = 2e3;
763
+ const NAME = String.raw`[\w-]*`;
764
+ const AT_CARET = new RegExp(String.raw`(?:\{{1,2} ?)?${NAME}$`);
765
+ const NAME_AT_END = new RegExp(`${NAME}$`);
766
+ const OPENING = /\{{1,2} ?$/;
767
+ const CLOSING = /^ ?\}{1,2}/;
768
+ /**
769
+ * Completes a mustache-style `{{name}}` placeholder.
770
+ */
771
+ const completeVariables = (variables = []) => {
772
+ if (variables.length === 0) return () => null;
773
+ const options = variables.map(({ name, value }) => ({
774
+ label: name,
775
+ displayLabel: `{{${name}}}`,
776
+ detail: value,
777
+ type: "variable",
778
+ boost: BOOST,
779
+ apply: (view, completion, from, to) => {
780
+ const { doc } = view.state;
781
+ const line = doc.lineAt(from);
782
+ const insert = `{{${completion.label}}}`;
783
+ const opening = OPENING.exec(doc.sliceString(line.from, from));
784
+ const closing = CLOSING.exec(doc.sliceString(to, line.to));
785
+ const start = opening ? from - opening[0].length : from;
786
+ const end = closing ? to + closing[0].length : to;
787
+ view.dispatch({
788
+ changes: {
789
+ from: start,
790
+ to: end,
791
+ insert
792
+ },
793
+ selection: { anchor: start + insert.length }
794
+ });
795
+ }
796
+ }));
797
+ return (context) => {
798
+ const match = context.matchBefore(AT_CARET);
799
+ if (!match?.text) return null;
800
+ const [name = ""] = NAME_AT_END.exec(match.text) ?? [];
801
+ return {
802
+ from: match.to - name.length,
803
+ options
804
+ };
805
+ };
806
+ };
807
+ /**
808
+ * The completion source both editors install, with an identity that never moves.
809
+ *
810
+ * Both hold it inside the memo that keys their whole extension tree, and callers
811
+ * build the list inline — a config row mapped to `{ name, value }` in a store
812
+ * selector, so a fresh array arrives on every store push. Because CodeMirror asks
813
+ * the source for options rather than reading them up front, holding it steady costs
814
+ * nothing: a completion request always reaches the latest render's variables.
815
+ */
816
+ const useVariableCompletion = (variables = []) => useStableCallback(completeVariables(variables));
817
+ //#endregion
818
+ //#region src/components/CodeEditor/CodeEditor.tsx
819
+ const emptyObject = {};
820
+ const CodeEditor = ({ value, previousValue, onChange, variant = "plain", mode = "application/json", placeholder: placeholder$1 = "", ariaLabel, searchQuery, searchMatchIndex, readOnly = false, inputLocked = false, autocompletions, completionSource, variables, extraKeys = emptyObject, withToggleCommentHint = false, withAutofocus = false, withLineNumbers = true, withLineWrapping = true, withCollapseUnchanged = false, withCopyButton = false, completeAny = false, help = null, helpPostfix = null, renderAdditionalButtons, className }) => {
821
+ const handleChange = useStableCallback((next) => onChange?.(next));
822
+ const withSearch = searchQuery !== void 0;
823
+ const editorRef = useRef(null);
824
+ useEffect(() => {
825
+ const view = editorRef.current?.view;
826
+ if (view && withSearch) updateSearch(view, searchQuery, searchMatchIndex);
827
+ }, [
828
+ withSearch,
829
+ searchQuery,
830
+ searchMatchIndex
831
+ ]);
832
+ const handleCreateEditor = useStableCallback((view) => {
833
+ if (searchQuery) updateSearch(view, searchQuery, searchMatchIndex);
834
+ });
835
+ const extraKeysRef = useRef(extraKeys);
836
+ useLayoutEffect(() => {
837
+ extraKeysRef.current = extraKeys;
838
+ });
839
+ const boundKeysSignature = Object.keys(extraKeys).join("\n");
840
+ const boundKeys = useMemo(() => boundKeysSignature.split("\n").filter(Boolean), [boundKeysSignature]);
841
+ const tooltipLayer = useTooltipsExtension();
842
+ const variableCompletion = useVariableCompletion(variables);
843
+ const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
844
+ const isArgo = useArgoDesign();
845
+ const isField = variant === "field";
846
+ const baseTheme = useThemedExtension(isField ? `code-editor:field:${isArgo ? "argo" : "legacy"}` : "code-editor:chrome", () => EditorView.theme({
847
+ ...buildBaseThemeStyles(),
848
+ ...isField ? buildChromeStyles(buildInputChrome(isArgo)) : null
849
+ }));
850
+ const commonExtensions = useMemo(() => {
851
+ const callerCompletions = completionSource ?? (completeAny ? completeAnyWord : autocompletions?.length ? autocompletions : null);
852
+ const completionEntries = [...callerCompletions ? [{ autocomplete: callerCompletions }] : [], { autocomplete: variableCompletion }];
853
+ return [
854
+ getLanguageMode(mode),
855
+ shouldLintJson(mode, readOnly) ? linter(jsonParseLinter()) : [],
856
+ withLineWrapping ? EditorView.lineWrapping : [],
857
+ EditorState.languageData.of(() => completionEntries),
858
+ keymap.of(boundKeys.map((key) => ({
859
+ key,
860
+ run: () => {
861
+ extraKeysRef.current[key]?.();
862
+ return true;
863
+ }
864
+ }))),
865
+ readOnly ? [] : [autocompletion()],
866
+ ariaLabel ? EditorView.contentAttributes.of({ "aria-label": ariaLabel }) : [],
867
+ withSearch ? searchExtension() : [],
868
+ tooltipLayer,
869
+ baseTheme
870
+ ];
871
+ }, [
872
+ autocompletions,
873
+ completionSource,
874
+ variableCompletion,
875
+ completeAny,
876
+ boundKeys,
877
+ mode,
878
+ readOnly,
879
+ withLineWrapping,
880
+ baseTheme,
881
+ ariaLabel,
882
+ withSearch,
883
+ tooltipLayer
884
+ ]);
885
+ const extensions = useMemo(() => {
886
+ return [
887
+ ...commonExtensions,
888
+ placeholder(placeholder$1),
889
+ EditorView.editable.of(!readOnly),
890
+ EditorState.readOnly.of(readOnly || inputLocked),
891
+ previousValue ? unifiedMergeView({
892
+ original: previousValue,
893
+ mergeControls: false,
894
+ highlightChanges: false,
895
+ collapseUnchanged: withCollapseUnchanged ? {} : void 0
896
+ }) : []
897
+ ];
898
+ }, [
899
+ commonExtensions,
900
+ placeholder$1,
901
+ readOnly,
902
+ inputLocked,
903
+ previousValue,
904
+ withCollapseUnchanged
905
+ ]);
906
+ const config = useMemo(() => {
907
+ return {
908
+ ...buildBasicSetup(readOnly),
909
+ lineNumbers: withLineNumbers,
910
+ ...withSearch ? { searchKeymap: false } : null
911
+ };
912
+ }, [
913
+ withLineNumbers,
914
+ readOnly,
915
+ withSearch
916
+ ]);
917
+ return /* @__PURE__ */ jsxs("div", {
918
+ "data-variant": variant,
919
+ className: cn("tw:relative tw:flex tw:min-h-0 tw:flex-col tw:[&_.cm-mergeViewEditor]:overflow-visible tw:[&_.cm-mergeViewEditors]:h-full tw:[&_.cm-mergeView]:h-full tw:[&_>.cm-theme]:h-full", isField ? "tw:[&_>.cm-theme]:overflow-visible tw:[&_>.cm-theme]:bg-transparent" : "tw:[&_>.cm-theme]:overflow-auto tw:[&_>.cm-theme]:bg-background", className),
920
+ onKeyDown: (event) => {
921
+ if (event.key === keyCodes.ESCAPE) event.stopPropagation();
922
+ },
923
+ children: [
924
+ /* @__PURE__ */ jsx(ButtonToolbar, {
925
+ value: withCopyButton ? value : void 0,
926
+ children: renderAdditionalButtons?.(value)
927
+ }),
928
+ /* @__PURE__ */ jsx(CodeMirror, {
929
+ ref: editorRef,
930
+ onCreateEditor: handleCreateEditor,
931
+ theme: customTheme,
932
+ value,
933
+ onChange: handleChange,
934
+ extensions,
935
+ autoFocus: withAutofocus,
936
+ basicSetup: config
937
+ }),
938
+ !readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxs(HelpBlock, {
939
+ className: "tw:mt-2 tw:flex tw:flex-wrap tw:gap-1",
940
+ children: [
941
+ help,
942
+ withToggleCommentHint ? /* @__PURE__ */ jsx(ToggleComponentHelp, {}) : null,
943
+ helpPostfix
944
+ ]
945
+ })
946
+ ]
947
+ });
948
+ };
949
+ //#endregion
950
+ export { CodeEditor, LANGUAGE_MODES, buildBaseThemeStyles, buildBasicSetup, buildCanvasChrome, buildChromeStyles, buildCustomTheme, isLanguageMode, searchExtension, updateSearch, useThemedExtension, useTooltipsExtension, useVariableCompletion };
951
+
952
+ //# sourceMappingURL=CodeEditor-BfQJfbhL.js.map