@langchain/macaw-components 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/_chunks/ErrorState-CmPX01HV.js +13361 -0
  4. package/dist/_chunks/ErrorState-CmPX01HV.js.map +1 -0
  5. package/dist/_chunks/LoadingIndicator-DgtU9aqD.js +80 -0
  6. package/dist/_chunks/LoadingIndicator-DgtU9aqD.js.map +1 -0
  7. package/dist/base.css +305 -0
  8. package/dist/catalog.json +1675 -0
  9. package/dist/components/Avatar/Avatar.d.ts +28 -0
  10. package/dist/components/Avatar/Avatar.js +47 -0
  11. package/dist/components/Avatar/Avatar.js.map +1 -0
  12. package/dist/components/Avatar/index.d.ts +2 -0
  13. package/dist/components/Avatar/index.js +2 -0
  14. package/dist/components/Badge/Badge.d.ts +25 -0
  15. package/dist/components/Badge/Badge.js +82 -0
  16. package/dist/components/Badge/Badge.js.map +1 -0
  17. package/dist/components/Badge/index.d.ts +2 -0
  18. package/dist/components/Badge/index.js +2 -0
  19. package/dist/components/Banner/Banner.d.ts +15 -0
  20. package/dist/components/Banner/Banner.js +102 -0
  21. package/dist/components/Banner/Banner.js.map +1 -0
  22. package/dist/components/Banner/index.d.ts +2 -0
  23. package/dist/components/Banner/index.js +2 -0
  24. package/dist/components/BarChart/AnimatedBar.d.ts +20 -0
  25. package/dist/components/BarChart/AnimatedBar.js +65 -0
  26. package/dist/components/BarChart/AnimatedBar.js.map +1 -0
  27. package/dist/components/BarChart/BarChart.d.ts +25 -0
  28. package/dist/components/BarChart/BarChart.js +248 -0
  29. package/dist/components/BarChart/BarChart.js.map +1 -0
  30. package/dist/components/BarChart/BarChart.types.d.ts +239 -0
  31. package/dist/components/BarChart/BarChart.types.js +0 -0
  32. package/dist/components/BarChart/BarChart.utils.d.ts +51 -0
  33. package/dist/components/BarChart/BarChart.utils.js +215 -0
  34. package/dist/components/BarChart/BarChart.utils.js.map +1 -0
  35. package/dist/components/BarChart/BarChartAxes.d.ts +22 -0
  36. package/dist/components/BarChart/BarChartAxes.js +144 -0
  37. package/dist/components/BarChart/BarChartAxes.js.map +1 -0
  38. package/dist/components/BarChart/BarChartGuides.d.ts +22 -0
  39. package/dist/components/BarChart/BarChartGuides.js +83 -0
  40. package/dist/components/BarChart/BarChartGuides.js.map +1 -0
  41. package/dist/components/BarChart/BarChartPlot.d.ts +40 -0
  42. package/dist/components/BarChart/BarChartPlot.js +262 -0
  43. package/dist/components/BarChart/BarChartPlot.js.map +1 -0
  44. package/dist/components/BarChart/constants.d.ts +21 -0
  45. package/dist/components/BarChart/constants.js +26 -0
  46. package/dist/components/BarChart/constants.js.map +1 -0
  47. package/dist/components/BarChart/index.d.ts +3 -0
  48. package/dist/components/BarChart/index.js +3 -0
  49. package/dist/components/Button/Button.d.ts +36 -0
  50. package/dist/components/Button/Button.js +99 -0
  51. package/dist/components/Button/Button.js.map +1 -0
  52. package/dist/components/Button/constants.d.ts +26 -0
  53. package/dist/components/Button/constants.js +31 -0
  54. package/dist/components/Button/constants.js.map +1 -0
  55. package/dist/components/Button/index.d.ts +2 -0
  56. package/dist/components/Button/index.js +2 -0
  57. package/dist/components/ButtonGroup/ButtonGroup.d.ts +30 -0
  58. package/dist/components/ButtonGroup/ButtonGroup.js +26 -0
  59. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
  60. package/dist/components/ButtonGroup/index.d.ts +2 -0
  61. package/dist/components/ButtonGroup/index.js +2 -0
  62. package/dist/components/Card/Card.d.ts +10 -0
  63. package/dist/components/Card/Card.js +23 -0
  64. package/dist/components/Card/Card.js.map +1 -0
  65. package/dist/components/Card/index.d.ts +2 -0
  66. package/dist/components/Card/index.js +2 -0
  67. package/dist/components/ChartCard/ChartCard.d.ts +53 -0
  68. package/dist/components/ChartCard/ChartCard.js +172 -0
  69. package/dist/components/ChartCard/ChartCard.js.map +1 -0
  70. package/dist/components/ChartCard/ChartCardSkeleton.d.ts +7 -0
  71. package/dist/components/ChartCard/ChartCardSkeleton.js +61 -0
  72. package/dist/components/ChartCard/ChartCardSkeleton.js.map +1 -0
  73. package/dist/components/ChartCard/index.d.ts +4 -0
  74. package/dist/components/ChartCard/index.js +3 -0
  75. package/dist/components/ChartLegend/ChartLegend.d.ts +19 -0
  76. package/dist/components/ChartLegend/ChartLegend.js +195 -0
  77. package/dist/components/ChartLegend/ChartLegend.js.map +1 -0
  78. package/dist/components/ChartLegend/ChartLegendItemRenderer.d.ts +14 -0
  79. package/dist/components/ChartLegend/ChartLegendItemRenderer.js +90 -0
  80. package/dist/components/ChartLegend/ChartLegendItemRenderer.js.map +1 -0
  81. package/dist/components/ChartLegend/index.d.ts +3 -0
  82. package/dist/components/ChartLegend/index.js +3 -0
  83. package/dist/components/ChartLegend/useChartLegendActiveItem.d.ts +7 -0
  84. package/dist/components/ChartLegend/useChartLegendActiveItem.js +35 -0
  85. package/dist/components/ChartLegend/useChartLegendActiveItem.js.map +1 -0
  86. package/dist/components/ChartLegend/utils.d.ts +20 -0
  87. package/dist/components/ChartLegend/utils.js +33 -0
  88. package/dist/components/ChartLegend/utils.js.map +1 -0
  89. package/dist/components/ChartTooltip/ChartTooltip.d.ts +23 -0
  90. package/dist/components/ChartTooltip/ChartTooltip.js +83 -0
  91. package/dist/components/ChartTooltip/ChartTooltip.js.map +1 -0
  92. package/dist/components/ChartTooltip/index.d.ts +2 -0
  93. package/dist/components/ChartTooltip/index.js +2 -0
  94. package/dist/components/Checkbox/Checkbox.d.ts +58 -0
  95. package/dist/components/Checkbox/Checkbox.js +50 -0
  96. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  97. package/dist/components/Checkbox/constants.d.ts +28 -0
  98. package/dist/components/Checkbox/constants.js +57 -0
  99. package/dist/components/Checkbox/constants.js.map +1 -0
  100. package/dist/components/Checkbox/getCheckedState.d.ts +6 -0
  101. package/dist/components/Checkbox/getCheckedState.js +14 -0
  102. package/dist/components/Checkbox/getCheckedState.js.map +1 -0
  103. package/dist/components/Checkbox/index.d.ts +3 -0
  104. package/dist/components/Checkbox/index.js +3 -0
  105. package/dist/components/CircularProgress/CircularProgress.d.ts +54 -0
  106. package/dist/components/CircularProgress/CircularProgress.js +85 -0
  107. package/dist/components/CircularProgress/CircularProgress.js.map +1 -0
  108. package/dist/components/CircularProgress/index.d.ts +2 -0
  109. package/dist/components/CircularProgress/index.js +2 -0
  110. package/dist/components/Code/Code.utils.d.ts +24 -0
  111. package/dist/components/Code/Code.utils.js +160 -0
  112. package/dist/components/Code/Code.utils.js.map +1 -0
  113. package/dist/components/Code/CodeLite.d.ts +19 -0
  114. package/dist/components/Code/CodeLite.js +146 -0
  115. package/dist/components/Code/CodeLite.js.map +1 -0
  116. package/dist/components/Code/CodeLite.utils.d.ts +24 -0
  117. package/dist/components/Code/CodeLite.utils.js +273 -0
  118. package/dist/components/Code/CodeLite.utils.js.map +1 -0
  119. package/dist/components/Code/ImageReplacerExtension.d.ts +9 -0
  120. package/dist/components/Code/ImageReplacerExtension.js +227 -0
  121. package/dist/components/Code/ImageReplacerExtension.js.map +1 -0
  122. package/dist/components/Code/JsonHighlighterExtension.d.ts +4 -0
  123. package/dist/components/Code/JsonHighlighterExtension.js +172 -0
  124. package/dist/components/Code/JsonHighlighterExtension.js.map +1 -0
  125. package/dist/components/Code/constants.d.ts +6 -0
  126. package/dist/components/Code/constants.js +11 -0
  127. package/dist/components/Code/constants.js.map +1 -0
  128. package/dist/components/Code/index.d.ts +30 -0
  129. package/dist/components/Code/index.js +140 -0
  130. package/dist/components/Code/index.js.map +1 -0
  131. package/dist/components/Code/languages/json.d.ts +1 -0
  132. package/dist/components/Code/languages/json.js +7 -0
  133. package/dist/components/Code/languages/json.js.map +1 -0
  134. package/dist/components/Code/languages/languages.d.ts +7 -0
  135. package/dist/components/Code/languages/languages.js +12 -0
  136. package/dist/components/Code/languages/languages.js.map +1 -0
  137. package/dist/components/Code/languages/python.d.ts +1 -0
  138. package/dist/components/Code/languages/python.js +7 -0
  139. package/dist/components/Code/languages/python.js.map +1 -0
  140. package/dist/components/Code/languages/shell.d.ts +7 -0
  141. package/dist/components/Code/languages/shell.js +241 -0
  142. package/dist/components/Code/languages/shell.js.map +1 -0
  143. package/dist/components/Code/languages/typescript.d.ts +1 -0
  144. package/dist/components/Code/languages/typescript.js +7 -0
  145. package/dist/components/Code/languages/typescript.js.map +1 -0
  146. package/dist/components/Code/languages/yaml.d.ts +2 -0
  147. package/dist/components/Code/languages/yaml.js +44 -0
  148. package/dist/components/Code/languages/yaml.js.map +1 -0
  149. package/dist/components/Code/types.d.ts +8 -0
  150. package/dist/components/Code/types.js +0 -0
  151. package/dist/components/Code/utils.d.ts +4 -0
  152. package/dist/components/Code/utils.js +27 -0
  153. package/dist/components/Code/utils.js.map +1 -0
  154. package/dist/components/Command/Command.d.ts +78 -0
  155. package/dist/components/Command/Command.js +78 -0
  156. package/dist/components/Command/Command.js.map +1 -0
  157. package/dist/components/Command/CommandMenu.d.ts +65 -0
  158. package/dist/components/Command/CommandMenu.js +101 -0
  159. package/dist/components/Command/CommandMenu.js.map +1 -0
  160. package/dist/components/Command/index.d.ts +4 -0
  161. package/dist/components/Command/index.js +3 -0
  162. package/dist/components/ContextMenu/ContextMenu.d.ts +9 -0
  163. package/dist/components/ContextMenu/ContextMenu.js +43 -0
  164. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  165. package/dist/components/ContextMenu/index.d.ts +1 -0
  166. package/dist/components/ContextMenu/index.js +2 -0
  167. package/dist/components/CopyButton/CopyButton.d.ts +24 -0
  168. package/dist/components/CopyButton/CopyButton.js +121 -0
  169. package/dist/components/CopyButton/CopyButton.js.map +1 -0
  170. package/dist/components/CopyButton/copyToClipboard.d.ts +1 -0
  171. package/dist/components/CopyButton/copyToClipboard.js +29 -0
  172. package/dist/components/CopyButton/copyToClipboard.js.map +1 -0
  173. package/dist/components/CopyButton/index.d.ts +4 -0
  174. package/dist/components/CopyButton/index.js +4 -0
  175. package/dist/components/CopyButton/useCopy.d.ts +10 -0
  176. package/dist/components/CopyButton/useCopy.js +46 -0
  177. package/dist/components/CopyButton/useCopy.js.map +1 -0
  178. package/dist/components/Dialog/index.d.ts +49 -0
  179. package/dist/components/Dialog/index.js +130 -0
  180. package/dist/components/Dialog/index.js.map +1 -0
  181. package/dist/components/Divider/Divider.d.ts +9 -0
  182. package/dist/components/Divider/Divider.js +27 -0
  183. package/dist/components/Divider/Divider.js.map +1 -0
  184. package/dist/components/Divider/index.d.ts +2 -0
  185. package/dist/components/Divider/index.js +2 -0
  186. package/dist/components/DonutChart/DonutChart.d.ts +101 -0
  187. package/dist/components/DonutChart/DonutChart.js +197 -0
  188. package/dist/components/DonutChart/DonutChart.js.map +1 -0
  189. package/dist/components/DonutChart/DonutChart.utils.d.ts +38 -0
  190. package/dist/components/DonutChart/DonutChart.utils.js +93 -0
  191. package/dist/components/DonutChart/DonutChart.utils.js.map +1 -0
  192. package/dist/components/DonutChart/constants.d.ts +7 -0
  193. package/dist/components/DonutChart/constants.js +12 -0
  194. package/dist/components/DonutChart/constants.js.map +1 -0
  195. package/dist/components/DonutChart/index.d.ts +4 -0
  196. package/dist/components/DonutChart/index.js +4 -0
  197. package/dist/components/DropdownMenu/DropdownMenu.d.ts +24 -0
  198. package/dist/components/DropdownMenu/DropdownMenu.js +149 -0
  199. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  200. package/dist/components/DropdownMenu/index.d.ts +1 -0
  201. package/dist/components/DropdownMenu/index.js +2 -0
  202. package/dist/components/EmptyState/EmptyState.d.ts +26 -0
  203. package/dist/components/EmptyState/EmptyState.js +85 -0
  204. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  205. package/dist/components/EmptyState/index.d.ts +2 -0
  206. package/dist/components/EmptyState/index.js +2 -0
  207. package/dist/components/ErrorBoundary.d.ts +35 -0
  208. package/dist/components/ErrorBoundary.js +41 -0
  209. package/dist/components/ErrorBoundary.js.map +1 -0
  210. package/dist/components/ErrorMessage/ErrorMessage.d.ts +17 -0
  211. package/dist/components/ErrorMessage/ErrorMessage.js +146 -0
  212. package/dist/components/ErrorMessage/ErrorMessage.js.map +1 -0
  213. package/dist/components/ErrorMessage/index.d.ts +2 -0
  214. package/dist/components/ErrorMessage/index.js +2 -0
  215. package/dist/components/ErrorState/ErrorState.d.ts +23 -0
  216. package/dist/components/ErrorState/ErrorState.js +2 -0
  217. package/dist/components/ErrorState/index.d.ts +2 -0
  218. package/dist/components/ErrorState/index.js +2 -0
  219. package/dist/components/GroupedTabs/GroupedTabs.d.ts +31 -0
  220. package/dist/components/GroupedTabs/GroupedTabs.js +92 -0
  221. package/dist/components/GroupedTabs/GroupedTabs.js.map +1 -0
  222. package/dist/components/GroupedTabs/index.d.ts +2 -0
  223. package/dist/components/GroupedTabs/index.js +2 -0
  224. package/dist/components/HoverCard.d.ts +4 -0
  225. package/dist/components/HoverCard.js +34 -0
  226. package/dist/components/HoverCard.js.map +1 -0
  227. package/dist/components/Icon/Icon.d.ts +25 -0
  228. package/dist/components/Icon/Icon.js +57 -0
  229. package/dist/components/Icon/Icon.js.map +1 -0
  230. package/dist/components/Icon/index.d.ts +2 -0
  231. package/dist/components/Icon/index.js +2 -0
  232. package/dist/components/IconButton/IconButton.d.ts +35 -0
  233. package/dist/components/IconButton/IconButton.js +73 -0
  234. package/dist/components/IconButton/IconButton.js.map +1 -0
  235. package/dist/components/IconButton/index.d.ts +2 -0
  236. package/dist/components/IconButton/index.js +2 -0
  237. package/dist/components/Input/Input.d.ts +72 -0
  238. package/dist/components/Input/Input.js +221 -0
  239. package/dist/components/Input/Input.js.map +1 -0
  240. package/dist/components/Input/index.d.ts +2 -0
  241. package/dist/components/Input/index.js +2 -0
  242. package/dist/components/Input/inputStyles.d.ts +28 -0
  243. package/dist/components/Input/inputStyles.js +45 -0
  244. package/dist/components/Input/inputStyles.js.map +1 -0
  245. package/dist/components/Kbd/Kbd.d.ts +15 -0
  246. package/dist/components/Kbd/Kbd.js +30 -0
  247. package/dist/components/Kbd/Kbd.js.map +1 -0
  248. package/dist/components/Kbd/index.d.ts +2 -0
  249. package/dist/components/Kbd/index.js +2 -0
  250. package/dist/components/LineChart/LineChart.d.ts +8 -0
  251. package/dist/components/LineChart/LineChart.js +194 -0
  252. package/dist/components/LineChart/LineChart.js.map +1 -0
  253. package/dist/components/LineChart/LineChart.types.d.ts +138 -0
  254. package/dist/components/LineChart/LineChart.types.js +0 -0
  255. package/dist/components/LineChart/LineChart.utils.d.ts +29 -0
  256. package/dist/components/LineChart/LineChart.utils.js +123 -0
  257. package/dist/components/LineChart/LineChart.utils.js.map +1 -0
  258. package/dist/components/LineChart/LineChartPlot.d.ts +43 -0
  259. package/dist/components/LineChart/LineChartPlot.js +306 -0
  260. package/dist/components/LineChart/LineChartPlot.js.map +1 -0
  261. package/dist/components/LineChart/constants.d.ts +3 -0
  262. package/dist/components/LineChart/constants.js +8 -0
  263. package/dist/components/LineChart/constants.js.map +1 -0
  264. package/dist/components/LineChart/index.d.ts +2 -0
  265. package/dist/components/LineChart/index.js +2 -0
  266. package/dist/components/LinearProgress/LinearProgress.d.ts +16 -0
  267. package/dist/components/LinearProgress/LinearProgress.js +42 -0
  268. package/dist/components/LinearProgress/LinearProgress.js.map +1 -0
  269. package/dist/components/LinearProgress/index.d.ts +2 -0
  270. package/dist/components/LinearProgress/index.js +2 -0
  271. package/dist/components/Link/Link.d.ts +30 -0
  272. package/dist/components/Link/Link.js +51 -0
  273. package/dist/components/Link/Link.js.map +1 -0
  274. package/dist/components/Link/index.d.ts +2 -0
  275. package/dist/components/Link/index.js +2 -0
  276. package/dist/components/Logo/index.d.ts +17 -0
  277. package/dist/components/Logo/index.js +705 -0
  278. package/dist/components/Logo/index.js.map +1 -0
  279. package/dist/components/MetricChart/MetricChart.d.ts +9 -0
  280. package/dist/components/MetricChart/MetricChart.js +42 -0
  281. package/dist/components/MetricChart/MetricChart.js.map +1 -0
  282. package/dist/components/MetricChart/formatters.d.ts +18 -0
  283. package/dist/components/MetricChart/formatters.js +34 -0
  284. package/dist/components/MetricChart/formatters.js.map +1 -0
  285. package/dist/components/MetricChart/index.d.ts +4 -0
  286. package/dist/components/MetricChart/index.js +3 -0
  287. package/dist/components/Pane/Pane.d.ts +29 -0
  288. package/dist/components/Pane/Pane.js +171 -0
  289. package/dist/components/Pane/Pane.js.map +1 -0
  290. package/dist/components/Pane/Pane.utils.d.ts +10 -0
  291. package/dist/components/Pane/Pane.utils.js +7 -0
  292. package/dist/components/Pane/Pane.utils.js.map +1 -0
  293. package/dist/components/Pane/index.d.ts +3 -0
  294. package/dist/components/Pane/index.js +3 -0
  295. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.d.ts +9 -0
  296. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js +76 -0
  297. package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js.map +1 -0
  298. package/dist/components/PlainTextEditor/index.d.ts +18 -0
  299. package/dist/components/PlainTextEditor/index.js +71 -0
  300. package/dist/components/PlainTextEditor/index.js.map +1 -0
  301. package/dist/components/Popover/Popover.d.ts +13 -0
  302. package/dist/components/Popover/Popover.js +48 -0
  303. package/dist/components/Popover/Popover.js.map +1 -0
  304. package/dist/components/Popover/constants.d.ts +1 -0
  305. package/dist/components/Popover/constants.js +6 -0
  306. package/dist/components/Popover/constants.js.map +1 -0
  307. package/dist/components/Popover/index.d.ts +1 -0
  308. package/dist/components/Popover/index.js +2 -0
  309. package/dist/components/PortalSlot.d.ts +11 -0
  310. package/dist/components/PortalSlot.js +41 -0
  311. package/dist/components/PortalSlot.js.map +1 -0
  312. package/dist/components/ProgressBar/ProgressBar.d.ts +38 -0
  313. package/dist/components/ProgressBar/ProgressBar.js +82 -0
  314. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  315. package/dist/components/ProgressBar/index.d.ts +2 -0
  316. package/dist/components/ProgressBar/index.js +2 -0
  317. package/dist/components/RadioButton/RadioButton.d.ts +62 -0
  318. package/dist/components/RadioButton/RadioButton.js +38 -0
  319. package/dist/components/RadioButton/RadioButton.js.map +1 -0
  320. package/dist/components/RadioButton/constants.d.ts +30 -0
  321. package/dist/components/RadioButton/constants.js +55 -0
  322. package/dist/components/RadioButton/constants.js.map +1 -0
  323. package/dist/components/RadioButton/index.d.ts +2 -0
  324. package/dist/components/RadioButton/index.js +2 -0
  325. package/dist/components/RadioCard/RadioCard.d.ts +26 -0
  326. package/dist/components/RadioCard/RadioCard.js +43 -0
  327. package/dist/components/RadioCard/RadioCard.js.map +1 -0
  328. package/dist/components/RadioCard/index.d.ts +2 -0
  329. package/dist/components/RadioCard/index.js +2 -0
  330. package/dist/components/RadioGroup/RadioGroup.d.ts +5 -0
  331. package/dist/components/RadioGroup/RadioGroup.js +17 -0
  332. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  333. package/dist/components/RadioGroup/RadioGroupItem.d.ts +5 -0
  334. package/dist/components/RadioGroup/RadioGroupItem.js +22 -0
  335. package/dist/components/RadioGroup/RadioGroupItem.js.map +1 -0
  336. package/dist/components/RadioGroup/index.d.ts +4 -0
  337. package/dist/components/RadioGroup/index.js +3 -0
  338. package/dist/components/Select/Select.d.ts +84 -0
  339. package/dist/components/Select/Select.js +120 -0
  340. package/dist/components/Select/Select.js.map +1 -0
  341. package/dist/components/Select/SelectPrimitive.d.ts +17 -0
  342. package/dist/components/Select/SelectPrimitive.js +126 -0
  343. package/dist/components/Select/SelectPrimitive.js.map +1 -0
  344. package/dist/components/Select/index.d.ts +4 -0
  345. package/dist/components/Select/index.js +3 -0
  346. package/dist/components/Skeleton/Skeleton.d.ts +13 -0
  347. package/dist/components/Skeleton/Skeleton.js +25 -0
  348. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  349. package/dist/components/Skeleton/index.d.ts +1 -0
  350. package/dist/components/Skeleton/index.js +2 -0
  351. package/dist/components/Slider/Slider.d.ts +33 -0
  352. package/dist/components/Slider/Slider.js +64 -0
  353. package/dist/components/Slider/Slider.js.map +1 -0
  354. package/dist/components/Slider/index.d.ts +2 -0
  355. package/dist/components/Slider/index.js +2 -0
  356. package/dist/components/SparkLineChart/SparkLineChart.d.ts +14 -0
  357. package/dist/components/SparkLineChart/SparkLineChart.js +112 -0
  358. package/dist/components/SparkLineChart/SparkLineChart.js.map +1 -0
  359. package/dist/components/SparkLineChart/index.d.ts +2 -0
  360. package/dist/components/SparkLineChart/index.js +2 -0
  361. package/dist/components/Spinner/Spinner.d.ts +12 -0
  362. package/dist/components/Spinner/Spinner.js +33 -0
  363. package/dist/components/Spinner/Spinner.js.map +1 -0
  364. package/dist/components/Spinner/index.d.ts +1 -0
  365. package/dist/components/Spinner/index.js +2 -0
  366. package/dist/components/SplitViewPane/SplitViewPane.d.ts +41 -0
  367. package/dist/components/SplitViewPane/SplitViewPane.js +314 -0
  368. package/dist/components/SplitViewPane/SplitViewPane.js.map +1 -0
  369. package/dist/components/SplitViewPane/SplitViewPaneHeader.d.ts +22 -0
  370. package/dist/components/SplitViewPane/SplitViewPaneHeader.js +105 -0
  371. package/dist/components/SplitViewPane/SplitViewPaneHeader.js.map +1 -0
  372. package/dist/components/SplitViewPane/index.d.ts +2 -0
  373. package/dist/components/SplitViewPane/index.js +3 -0
  374. package/dist/components/SplitViewPane/openPaneRegistry.d.ts +2 -0
  375. package/dist/components/SplitViewPane/openPaneRegistry.js +49 -0
  376. package/dist/components/SplitViewPane/openPaneRegistry.js.map +1 -0
  377. package/dist/components/Switch/Switch.d.ts +35 -0
  378. package/dist/components/Switch/Switch.js +65 -0
  379. package/dist/components/Switch/Switch.js.map +1 -0
  380. package/dist/components/Switch/index.d.ts +2 -0
  381. package/dist/components/Switch/index.js +2 -0
  382. package/dist/components/Tabs/index.d.ts +27 -0
  383. package/dist/components/Tabs/index.js +45 -0
  384. package/dist/components/Tabs/index.js.map +1 -0
  385. package/dist/components/Text/Text.d.ts +13 -0
  386. package/dist/components/Text/Text.js +58 -0
  387. package/dist/components/Text/Text.js.map +1 -0
  388. package/dist/components/Text/index.d.ts +2 -0
  389. package/dist/components/Text/index.js +2 -0
  390. package/dist/components/TextVirtualizer.d.ts +8 -0
  391. package/dist/components/TextVirtualizer.js +53 -0
  392. package/dist/components/TextVirtualizer.js.map +1 -0
  393. package/dist/components/TextWithLinks.d.ts +6 -0
  394. package/dist/components/TextWithLinks.js +61 -0
  395. package/dist/components/TextWithLinks.js.map +1 -0
  396. package/dist/components/Textarea/Textarea.d.ts +47 -0
  397. package/dist/components/Textarea/Textarea.js +150 -0
  398. package/dist/components/Textarea/Textarea.js.map +1 -0
  399. package/dist/components/Textarea/index.d.ts +2 -0
  400. package/dist/components/Textarea/index.js +2 -0
  401. package/dist/components/ThinkingState/LoadingIndicator.d.ts +19 -0
  402. package/dist/components/ThinkingState/LoadingIndicator.js +2 -0
  403. package/dist/components/ThinkingState/NOTICE +25 -0
  404. package/dist/components/ThinkingState/ThinkingState.d.ts +21 -0
  405. package/dist/components/ThinkingState/ThinkingState.js +42 -0
  406. package/dist/components/ThinkingState/ThinkingState.js.map +1 -0
  407. package/dist/components/ThinkingState/ThinkingStateTimer.d.ts +9 -0
  408. package/dist/components/ThinkingState/ThinkingStateTimer.js +43 -0
  409. package/dist/components/ThinkingState/ThinkingStateTimer.js.map +1 -0
  410. package/dist/components/ThinkingState/index.d.ts +4 -0
  411. package/dist/components/ThinkingState/index.js +3 -0
  412. package/dist/components/Toast/ToastContext.d.ts +5 -0
  413. package/dist/components/Toast/ToastContext.js +9 -0
  414. package/dist/components/Toast/ToastContext.js.map +1 -0
  415. package/dist/components/Toast/index.d.ts +13 -0
  416. package/dist/components/Toast/index.js +166 -0
  417. package/dist/components/Toast/index.js.map +1 -0
  418. package/dist/components/Toast/useToast.d.ts +3 -0
  419. package/dist/components/Toast/useToast.js +11 -0
  420. package/dist/components/Toast/useToast.js.map +1 -0
  421. package/dist/components/Tooltip/Tooltip.d.ts +19 -0
  422. package/dist/components/Tooltip/Tooltip.js +57 -0
  423. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  424. package/dist/components/Tooltip/index.d.ts +3 -0
  425. package/dist/components/Tooltip/index.js +3 -0
  426. package/dist/components/TopList/TopList.d.ts +3 -0
  427. package/dist/components/TopList/TopList.js +186 -0
  428. package/dist/components/TopList/TopList.js.map +1 -0
  429. package/dist/components/TopList/TopList.types.d.ts +34 -0
  430. package/dist/components/TopList/TopList.types.js +0 -0
  431. package/dist/components/TopList/TopList.utils.d.ts +3 -0
  432. package/dist/components/TopList/TopList.utils.js +16 -0
  433. package/dist/components/TopList/TopList.utils.js.map +1 -0
  434. package/dist/components/TopList/index.d.ts +2 -0
  435. package/dist/components/TopList/index.js +2 -0
  436. package/dist/components/Typeahead/Typeahead.d.ts +5 -0
  437. package/dist/components/Typeahead/Typeahead.js +305 -0
  438. package/dist/components/Typeahead/Typeahead.js.map +1 -0
  439. package/dist/components/Typeahead/Typeahead.types.d.ts +99 -0
  440. package/dist/components/Typeahead/Typeahead.types.js +0 -0
  441. package/dist/components/Typeahead/Typeahead.utils.d.ts +25 -0
  442. package/dist/components/Typeahead/Typeahead.utils.js +73 -0
  443. package/dist/components/Typeahead/Typeahead.utils.js.map +1 -0
  444. package/dist/components/Typeahead/TypeaheadParts.d.ts +25 -0
  445. package/dist/components/Typeahead/TypeaheadParts.js +109 -0
  446. package/dist/components/Typeahead/TypeaheadParts.js.map +1 -0
  447. package/dist/components/Typeahead/TypeaheadView.d.ts +81 -0
  448. package/dist/components/Typeahead/TypeaheadView.js +228 -0
  449. package/dist/components/Typeahead/TypeaheadView.js.map +1 -0
  450. package/dist/components/Typeahead/index.d.ts +2 -0
  451. package/dist/components/Typeahead/index.js +2 -0
  452. package/dist/components/Typeahead/useTypeaheadDomSync.d.ts +15 -0
  453. package/dist/components/Typeahead/useTypeaheadDomSync.js +43 -0
  454. package/dist/components/Typeahead/useTypeaheadDomSync.js.map +1 -0
  455. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.d.ts +11 -0
  456. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js +32 -0
  457. package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js.map +1 -0
  458. package/dist/components/UnsavedChangesDialog.d.ts +14 -0
  459. package/dist/components/UnsavedChangesDialog.js +67 -0
  460. package/dist/components/UnsavedChangesDialog.js.map +1 -0
  461. package/dist/components/index.d.ts +58 -0
  462. package/dist/components/index.js +35 -0
  463. package/dist/components.css +102 -0
  464. package/dist/contexts/ErrorReporterContext.d.ts +6 -0
  465. package/dist/contexts/ErrorReporterContext.js +7 -0
  466. package/dist/contexts/ErrorReporterContext.js.map +1 -0
  467. package/dist/hooks/AppThemeProvider.d.ts +8 -0
  468. package/dist/hooks/AppThemeProvider.js +52 -0
  469. package/dist/hooks/AppThemeProvider.js.map +1 -0
  470. package/dist/hooks/useColorScheme.d.ts +20 -0
  471. package/dist/hooks/useColorScheme.js +50 -0
  472. package/dist/hooks/useColorScheme.js.map +1 -0
  473. package/dist/icons/LongTailPhosphorIcons.d.ts +51 -0
  474. package/dist/icons/LongTailPhosphorIcons.js +102 -0
  475. package/dist/icons/LongTailPhosphorIcons.js.map +1 -0
  476. package/dist/icons/PaddedPhosphorIcons.d.ts +17 -0
  477. package/dist/icons/PaddedPhosphorIcons.js +55 -0
  478. package/dist/icons/PaddedPhosphorIcons.js.map +1 -0
  479. package/dist/icons/WeightedPhosphorIcons.d.ts +45 -0
  480. package/dist/icons/WeightedPhosphorIcons.js +96 -0
  481. package/dist/icons/WeightedPhosphorIcons.js.map +1 -0
  482. package/dist/icons/index.d.ts +2 -0
  483. package/dist/icons/index.js +4 -0
  484. package/dist/index.d.ts +1 -0
  485. package/dist/index.js +36 -0
  486. package/dist/styles.css +10 -0
  487. package/dist/utilities.css +2 -0
  488. package/dist/utils/VirtuosoCustomScrollParentContext/index.d.ts +7 -0
  489. package/dist/utils/VirtuosoCustomScrollParentContext/index.js +15 -0
  490. package/dist/utils/VirtuosoCustomScrollParentContext/index.js.map +1 -0
  491. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.d.ts +4 -0
  492. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js +10 -0
  493. package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js.map +1 -0
  494. package/dist/utils/ZIndexContext.d.ts +5 -0
  495. package/dist/utils/ZIndexContext.js +13 -0
  496. package/dist/utils/ZIndexContext.js.map +1 -0
  497. package/dist/utils/animation.d.ts +37 -0
  498. package/dist/utils/animation.js +42 -0
  499. package/dist/utils/animation.js.map +1 -0
  500. package/dist/utils/chartAxisLayout.d.ts +6 -0
  501. package/dist/utils/chartAxisLayout.js +8 -0
  502. package/dist/utils/chartAxisLayout.js.map +1 -0
  503. package/dist/utils/chartColors.d.ts +38 -0
  504. package/dist/utils/chartColors.js +78 -0
  505. package/dist/utils/chartColors.js.map +1 -0
  506. package/dist/utils/chartConstants.d.ts +10 -0
  507. package/dist/utils/chartConstants.js +15 -0
  508. package/dist/utils/chartConstants.js.map +1 -0
  509. package/dist/utils/chartValues.d.ts +2 -0
  510. package/dist/utils/chartValues.js +36 -0
  511. package/dist/utils/chartValues.js.map +1 -0
  512. package/dist/utils/clamp.d.ts +2 -0
  513. package/dist/utils/clamp.js +7 -0
  514. package/dist/utils/clamp.js.map +1 -0
  515. package/dist/utils/cn.d.ts +2 -0
  516. package/dist/utils/cn.js +191 -0
  517. package/dist/utils/cn.js.map +1 -0
  518. package/dist/utils/componentSizes.d.ts +104 -0
  519. package/dist/utils/componentSizes.js +104 -0
  520. package/dist/utils/componentSizes.js.map +1 -0
  521. package/dist/utils/controlIconSizes.d.ts +10 -0
  522. package/dist/utils/controlIconSizes.js +32 -0
  523. package/dist/utils/controlIconSizes.js.map +1 -0
  524. package/dist/utils/csp-nonce.d.ts +11 -0
  525. package/dist/utils/csp-nonce.js +17 -0
  526. package/dist/utils/csp-nonce.js.map +1 -0
  527. package/dist/utils/get-closest-scroll-parent.d.ts +1 -0
  528. package/dist/utils/get-closest-scroll-parent.js +16 -0
  529. package/dist/utils/get-closest-scroll-parent.js.map +1 -0
  530. package/dist/utils/get-color-by-string.d.ts +1 -0
  531. package/dist/utils/get-color-by-string.js +10 -0
  532. package/dist/utils/get-color-by-string.js.map +1 -0
  533. package/dist/utils/getYAxisLeftMargin.d.ts +10 -0
  534. package/dist/utils/getYAxisLeftMargin.js +20 -0
  535. package/dist/utils/getYAxisLeftMargin.js.map +1 -0
  536. package/dist/utils/icon-types.d.ts +8 -0
  537. package/dist/utils/icon-types.js +0 -0
  538. package/dist/utils/lazy-codemirror-loader.d.ts +70 -0
  539. package/dist/utils/lazy-codemirror-loader.js +79 -0
  540. package/dist/utils/lazy-codemirror-loader.js.map +1 -0
  541. package/dist/utils/merge-refs.d.ts +2 -0
  542. package/dist/utils/merge-refs.js +13 -0
  543. package/dist/utils/merge-refs.js.map +1 -0
  544. package/dist/utils/parseTextLinks.d.ts +7 -0
  545. package/dist/utils/parseTextLinks.js +46 -0
  546. package/dist/utils/parseTextLinks.js.map +1 -0
  547. package/dist/utils/prettify-error-payload.d.ts +7 -0
  548. package/dist/utils/prettify-error-payload.js +188 -0
  549. package/dist/utils/prettify-error-payload.js.map +1 -0
  550. package/dist/utils/spacing.d.ts +30 -0
  551. package/dist/utils/spacing.js +34 -0
  552. package/dist/utils/spacing.js.map +1 -0
  553. package/dist/utils/useCodeMirror.d.ts +7 -0
  554. package/dist/utils/useCodeMirror.js +28 -0
  555. package/dist/utils/useCodeMirror.js.map +1 -0
  556. package/dist/utils/useZIndex.d.ts +52 -0
  557. package/dist/utils/useZIndex.js +62 -0
  558. package/dist/utils/useZIndex.js.map +1 -0
  559. package/dist/utils/zIndices.d.ts +42 -0
  560. package/dist/utils/zIndices.js +46 -0
  561. package/dist/utils/zIndices.js.map +1 -0
  562. package/docs/DESIGN.md +134 -0
  563. package/docs/STYLES.md +568 -0
  564. package/package.json +619 -0
  565. package/tailwind.preset.cjs +738 -0
  566. package/tailwind.preset.d.cts +5 -0
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { LANGUAGES } from './languages/languages.js';
3
+ export interface CodeLiteProps {
4
+ value: string | undefined;
5
+ language: keyof typeof LANGUAGES;
6
+ virtualize?: boolean;
7
+ className?: string;
8
+ children?: ReactNode;
9
+ showGutter?: boolean;
10
+ wrapLines?: boolean;
11
+ highlightText?: string;
12
+ }
13
+ /**
14
+ * The preferred component for read-only syntax-highlighted code. It avoids
15
+ * mounting a full CodeMirror editor, making it more performant when rendering
16
+ * multiple code blocks, while retaining folding and optional virtualization.
17
+ * Use `Code` only when editing or custom CodeMirror extensions are required.
18
+ */
19
+ export declare const CodeLite: import("react").MemoExoticComponent<(props: CodeLiteProps) => import("react").JSX.Element>;
@@ -0,0 +1,146 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { CaretDownIcon } from "../../icons/PaddedPhosphorIcons.js";
3
+ import { useCodeMirror } from "../../utils/useCodeMirror.js";
4
+ import { convertFile, getVisibleLines, parseFile } from "./CodeLite.utils.js";
5
+ import { memo, useEffect, useRef, useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ import { TableVirtuoso } from "react-virtuoso";
8
+ //#region packages/components/src/components/Code/CodeLite.tsx
9
+ /**
10
+ * The preferred component for read-only syntax-highlighted code. It avoids
11
+ * mounting a full CodeMirror editor, making it more performant when rendering
12
+ * multiple code blocks, while retaining folding and optional virtualization.
13
+ * Use `Code` only when editing or custom CodeMirror extensions are required.
14
+ */
15
+ var CodeLite = memo((props) => {
16
+ const cm = useCodeMirror();
17
+ const reqCount = useRef(0);
18
+ const [parse, setParse] = useState({
19
+ id: -1,
20
+ data: null,
21
+ error: null
22
+ });
23
+ const mountedRef = useRef(true);
24
+ useEffect(() => () => void (mountedRef.current = false), []);
25
+ useEffect(() => {
26
+ if (!cm) return;
27
+ const controller = new AbortController();
28
+ const signal = controller.signal;
29
+ const requestId = ++reqCount.current;
30
+ setParse({
31
+ id: requestId,
32
+ data: null,
33
+ error: null
34
+ });
35
+ parseFile(cm, props.language, props.value, { signal }).then((data) => {
36
+ if (!mountedRef.current) return;
37
+ setParse((prev) => {
38
+ if (prev.id !== requestId) return prev;
39
+ return {
40
+ id: requestId,
41
+ data,
42
+ error: null
43
+ };
44
+ });
45
+ }, (error) => {
46
+ if (!mountedRef.current) return;
47
+ setParse((prev) => {
48
+ if (prev.id !== requestId) return prev;
49
+ return {
50
+ id: requestId,
51
+ data: null,
52
+ error
53
+ };
54
+ });
55
+ });
56
+ return () => controller.abort();
57
+ }, [
58
+ cm,
59
+ props.language,
60
+ props.value
61
+ ]);
62
+ const data = parse.data ?? convertFile(props.value);
63
+ const [foldIdx, setFoldIdx] = useState(/* @__PURE__ */ new Set());
64
+ const visibleLines = getVisibleLines(data, foldIdx);
65
+ const showGutter = props.showGutter ?? true;
66
+ const wrapLines = props.wrapLines ?? true;
67
+ const toggleFold = (n) => {
68
+ setFoldIdx((prev) => {
69
+ const curr = new Set(prev);
70
+ if (curr.has(n)) curr.delete(n);
71
+ else curr.add(n);
72
+ return curr;
73
+ });
74
+ };
75
+ const itemContent = (_index, line) => /* @__PURE__ */ jsxs(Fragment$1, { children: [showGutter && /* @__PURE__ */ jsx("td", {
76
+ className: "select-none py-0 align-top",
77
+ children: /* @__PURE__ */ jsxs("div", {
78
+ className: "flex items-center justify-between gap-space-1 whitespace-pre font-mono text-quaternary",
79
+ children: [/* @__PURE__ */ jsx("span", {
80
+ className: "min-w-8 pl-2.5 text-right",
81
+ children: line.n
82
+ }), line.fold ? /* @__PURE__ */ jsx("button", {
83
+ type: "button",
84
+ "aria-expanded": !foldIdx.has(line.n),
85
+ onClick: () => toggleFold(line.n),
86
+ className: "-rotate-90 transition-transform aria-expanded:rotate-0",
87
+ children: /* @__PURE__ */ jsx(CaretDownIcon, {
88
+ "aria-hidden": true,
89
+ size: 16,
90
+ weight: "regular"
91
+ })
92
+ }) : /* @__PURE__ */ jsx("span", { className: "size-4" })]
93
+ })
94
+ }), /* @__PURE__ */ jsxs("td", {
95
+ className: cn("px-1.5 py-0 font-mono", wrapLines ? "whitespace-pre-wrap" : "whitespace-pre"),
96
+ children: [
97
+ line.line.map((token, index) => {
98
+ const tokenText = data.code.slice(token.from, token.to);
99
+ const highlightText = props.highlightText;
100
+ const highlightIndex = highlightText ? tokenText.indexOf(highlightText) : -1;
101
+ return /* @__PURE__ */ jsx("span", {
102
+ className: cn(token.classes || "text-tertiary"),
103
+ children: highlightIndex === -1 || !highlightText ? tokenText : /* @__PURE__ */ jsxs(Fragment$1, { children: [
104
+ tokenText.slice(0, highlightIndex),
105
+ /* @__PURE__ */ jsx("span", {
106
+ "data-code-highlight": true,
107
+ className: "rounded-xs bg-brand-subtle text-brand-primary",
108
+ children: highlightText
109
+ }),
110
+ tokenText.slice(highlightIndex + highlightText.length)
111
+ ] })
112
+ }, index);
113
+ }),
114
+ line.line.length === 0 && /* @__PURE__ */ jsx("span", {
115
+ className: "text-tertiary",
116
+ children: "\n"
117
+ }),
118
+ foldIdx.has(line.n) && /* @__PURE__ */ jsx("button", {
119
+ type: "button",
120
+ className: "rounded-xs border border-subtle bg-surface-level-2 py-px text-xs leading-none text-quaternary transition-colors hover:bg-surface-level-2-hover",
121
+ onClick: () => toggleFold(line.n),
122
+ children: /* @__PURE__ */ jsx("span", {
123
+ className: "-mx-0.5",
124
+ children: "..."
125
+ })
126
+ })
127
+ ]
128
+ })] });
129
+ const className = cn("font-mono text-xs", props.className);
130
+ if (!props.virtualize) return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("table", {
131
+ className: cn("w-fit border-spacing-0 [overflow-anchor:none]", className),
132
+ children: /* @__PURE__ */ jsx("tbody", { children: visibleLines.map((line, index) => /* @__PURE__ */ jsx("tr", {
133
+ className: "[overflow-anchor:none]",
134
+ children: itemContent(index, line)
135
+ }, index)) })
136
+ }), props.children] });
137
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TableVirtuoso, {
138
+ data: visibleLines,
139
+ className,
140
+ itemContent
141
+ }), props.children] });
142
+ });
143
+ //#endregion
144
+ export { CodeLite };
145
+
146
+ //# sourceMappingURL=CodeLite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeLite.js","names":[],"sources":["../../../src/components/Code/CodeLite.tsx"],"sourcesContent":["import { type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { TableVirtuoso } from 'react-virtuoso';\n\nimport { CaretDownIcon } from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport { useCodeMirror } from '../../utils/useCodeMirror';\nimport {\n type ParsedFile,\n convertFile,\n getVisibleLines,\n parseFile,\n} from './CodeLite.utils';\nimport type { LANGUAGES } from './languages/languages';\n\nexport interface CodeLiteProps {\n value: string | undefined;\n language: keyof typeof LANGUAGES;\n virtualize?: boolean;\n className?: string;\n children?: ReactNode;\n showGutter?: boolean;\n wrapLines?: boolean;\n highlightText?: string;\n}\n\n/**\n * The preferred component for read-only syntax-highlighted code. It avoids\n * mounting a full CodeMirror editor, making it more performant when rendering\n * multiple code blocks, while retaining folding and optional virtualization.\n * Use `Code` only when editing or custom CodeMirror extensions are required.\n */\nexport const CodeLite = memo((props: CodeLiteProps) => {\n const cm = useCodeMirror();\n const reqCount = useRef(0);\n const [parse, setParse] = useState<{\n id: number;\n data: Awaited<ReturnType<typeof parseFile>> | null;\n error: unknown | null;\n }>({ id: -1, data: null, error: null });\n\n const mountedRef = useRef(true);\n useEffect(() => () => void (mountedRef.current = false), []);\n\n useEffect(() => {\n if (!cm) return;\n\n const controller = new AbortController();\n const signal = controller.signal;\n const requestId = ++reqCount.current;\n\n setParse({ id: requestId, data: null, error: null });\n\n parseFile(cm, props.language, props.value, { signal }).then(\n (data) => {\n if (!mountedRef.current) return;\n setParse((prev) => {\n if (prev.id !== requestId) return prev;\n return { id: requestId, data, error: null };\n });\n },\n (error) => {\n if (!mountedRef.current) return;\n setParse((prev) => {\n if (prev.id !== requestId) return prev;\n return { id: requestId, data: null, error };\n });\n }\n );\n\n return () => controller.abort();\n }, [cm, props.language, props.value]);\n\n const data = parse.data ?? convertFile(props.value);\n\n const [foldIdx, setFoldIdx] = useState<Set<number>>(new Set());\n\n const visibleLines = getVisibleLines(data, foldIdx);\n const showGutter = props.showGutter ?? true;\n const wrapLines = props.wrapLines ?? true;\n\n const toggleFold = (n: number) => {\n setFoldIdx((prev) => {\n const curr = new Set(prev);\n if (curr.has(n)) curr.delete(n);\n else curr.add(n);\n return curr;\n });\n };\n\n const itemContent = (_index: number, line: ParsedFile['file'][number]) => (\n <>\n {showGutter && (\n <td className=\"select-none py-0 align-top\">\n <div className=\"flex items-center justify-between gap-space-1 whitespace-pre font-mono text-quaternary\">\n <span className=\"min-w-8 pl-2.5 text-right\">{line.n}</span>\n\n {line.fold ? (\n <button\n type=\"button\"\n aria-expanded={!foldIdx.has(line.n)}\n onClick={() => toggleFold(line.n)}\n className=\"-rotate-90 transition-transform aria-expanded:rotate-0\"\n >\n <CaretDownIcon aria-hidden size={16} weight=\"regular\" />\n </button>\n ) : (\n <span className=\"size-4\" />\n )}\n </div>\n </td>\n )}\n\n <td\n className={cn(\n 'px-1.5 py-0 font-mono',\n wrapLines ? 'whitespace-pre-wrap' : 'whitespace-pre'\n )}\n >\n {line.line.map((token, index) => {\n const tokenText = data.code.slice(token.from, token.to);\n const highlightText = props.highlightText;\n const highlightIndex = highlightText\n ? tokenText.indexOf(highlightText)\n : -1;\n\n return (\n <span key={index} className={cn(token.classes || 'text-tertiary')}>\n {highlightIndex === -1 || !highlightText ? (\n tokenText\n ) : (\n <>\n {tokenText.slice(0, highlightIndex)}\n <span\n data-code-highlight\n className=\"rounded-xs bg-brand-subtle text-brand-primary\"\n >\n {highlightText}\n </span>\n {tokenText.slice(highlightIndex + highlightText.length)}\n </>\n )}\n </span>\n );\n })}\n\n {line.line.length === 0 && (\n <span className=\"text-tertiary\">{'\\n'}</span>\n )}\n\n {foldIdx.has(line.n) && (\n <button\n type=\"button\"\n className=\"rounded-xs border border-subtle bg-surface-level-2 py-px text-xs leading-none text-quaternary transition-colors hover:bg-surface-level-2-hover\"\n onClick={() => toggleFold(line.n)}\n >\n <span className=\"-mx-0.5\">...</span>\n </button>\n )}\n </td>\n </>\n );\n\n const className = cn('font-mono text-xs', props.className);\n\n if (!props.virtualize) {\n return (\n <>\n <table\n className={cn(\n 'w-fit border-spacing-0 [overflow-anchor:none]',\n className\n )}\n >\n <tbody>\n {visibleLines.map((line, index) => (\n <tr key={index} className=\"[overflow-anchor:none]\">\n {itemContent(index, line)}\n </tr>\n ))}\n </tbody>\n </table>\n {props.children}\n </>\n );\n }\n\n return (\n <>\n <TableVirtuoso\n data={visibleLines}\n className={className}\n itemContent={itemContent}\n />\n {props.children}\n </>\n );\n});\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CMBundle } from '../../utils/lazy-codemirror-loader.js';
2
+ import { LANGUAGES } from './languages/languages.js';
3
+ export type FoldRange = {
4
+ from: number;
5
+ to: number;
6
+ };
7
+ export interface ParsedFile {
8
+ file: {
9
+ line: {
10
+ from: number;
11
+ to: number;
12
+ classes: string;
13
+ }[];
14
+ n: number;
15
+ fold: FoldRange | null;
16
+ }[];
17
+ code: string;
18
+ }
19
+ export declare const EMPTY_FILE: ParsedFile;
20
+ export declare function convertFile(code: string | undefined): ParsedFile;
21
+ export declare function parseFile(cm: CMBundle, language: keyof typeof LANGUAGES, code: string | undefined, options?: {
22
+ signal?: AbortSignal;
23
+ }): Promise<ParsedFile>;
24
+ export declare function getVisibleLines(data: ParsedFile, foldIdx: Set<number>): ParsedFile['file'];
@@ -0,0 +1,273 @@
1
+ import { LANGUAGES } from "./languages/languages.js";
2
+ //#region packages/components/src/components/Code/CodeLite.utils.tsx
3
+ function isUnfinished(node) {
4
+ const ch = node.lastChild;
5
+ return !!(ch && ch.to === node.to && ch.type.isError);
6
+ }
7
+ var getOrCreateClassHighlighter = (() => {
8
+ let classHighlighter = null;
9
+ return (cm) => {
10
+ if (classHighlighter != null) return classHighlighter;
11
+ const { lezerTagHighlighter: tagHighlighter, lezerHighlightTags: tags } = cm;
12
+ classHighlighter = tagHighlighter([
13
+ {
14
+ tag: tags.keyword,
15
+ class: "text-[#007197] dark:text-[#bb9af7]"
16
+ },
17
+ {
18
+ tag: [
19
+ tags.name,
20
+ tags.deleted,
21
+ tags.character,
22
+ tags.macroName
23
+ ],
24
+ class: "text-[#3760bf] dark:text-[#c0caf5]"
25
+ },
26
+ {
27
+ tag: [tags.propertyName],
28
+ class: "text-[#3760bf] dark:text-[#7aa2f7]"
29
+ },
30
+ {
31
+ tag: [
32
+ tags.processingInstruction,
33
+ tags.string,
34
+ tags.inserted,
35
+ tags.content,
36
+ tags.special(tags.string)
37
+ ],
38
+ class: "text-[#587539] dark:text-[#9ece6a]"
39
+ },
40
+ {
41
+ tag: [tags.function(tags.variableName), tags.labelName],
42
+ class: "text-[#3760bf] dark:text-[#7aa2f7]"
43
+ },
44
+ {
45
+ tag: [
46
+ tags.color,
47
+ tags.constant(tags.name),
48
+ tags.standard(tags.name)
49
+ ],
50
+ class: "text-[#3760bf] dark:text-[#bb9af7]"
51
+ },
52
+ {
53
+ tag: [tags.definition(tags.name), tags.separator],
54
+ class: "text-[#3760bf] dark:text-[#c0caf5]"
55
+ },
56
+ {
57
+ tag: [tags.className],
58
+ class: "text-[#3760bf] dark:text-[#c0caf5]"
59
+ },
60
+ {
61
+ tag: [
62
+ tags.number,
63
+ tags.changed,
64
+ tags.annotation,
65
+ tags.modifier,
66
+ tags.self,
67
+ tags.namespace
68
+ ],
69
+ class: "text-[#b15c00] dark:text-[#ff9e64]"
70
+ },
71
+ {
72
+ tag: [tags.typeName],
73
+ class: "text-[#007197] dark:text-[#2ac3de]"
74
+ },
75
+ {
76
+ tag: [tags.operator, tags.operatorKeyword],
77
+ class: "text-[#007197] dark:text-[#bb9af7]"
78
+ },
79
+ {
80
+ tag: [
81
+ tags.url,
82
+ tags.escape,
83
+ tags.regexp,
84
+ tags.link
85
+ ],
86
+ class: "text-[#587539] dark:text-[#b4f9f8]"
87
+ },
88
+ {
89
+ tag: [tags.meta, tags.comment],
90
+ class: "text-[#848cb5] dark:text-[#565f89]"
91
+ },
92
+ {
93
+ tag: tags.strong,
94
+ class: "font-bold"
95
+ },
96
+ {
97
+ tag: tags.emphasis,
98
+ class: "italic"
99
+ },
100
+ {
101
+ tag: tags.link,
102
+ class: "underline"
103
+ },
104
+ {
105
+ tag: tags.heading,
106
+ class: "text-[#b15c00] font-semibold dark:text-[#89ddff]"
107
+ },
108
+ {
109
+ tag: [
110
+ tags.atom,
111
+ tags.bool,
112
+ tags.special(tags.variableName)
113
+ ],
114
+ class: "text-[#3760bf] dark:text-[#c0caf5]"
115
+ },
116
+ {
117
+ tag: tags.invalid,
118
+ class: "text-[#f52a65] dark:text-[#ff5370]"
119
+ },
120
+ {
121
+ tag: tags.strikethrough,
122
+ class: "line-through"
123
+ }
124
+ ]);
125
+ return classHighlighter;
126
+ };
127
+ })();
128
+ function syntaxFolding(tree, text, editorState, foldProp, start, end) {
129
+ if (tree.length < end) return null;
130
+ const stack = tree.resolveInner(end, 1);
131
+ let found = null;
132
+ for (let cur = stack; cur; cur = cur.parent) {
133
+ if (cur.to <= end || cur.from > end) continue;
134
+ if (found && cur.from < start) break;
135
+ const prop = cur.type.prop(foldProp);
136
+ if (prop && (cur.to < tree.length - 50 || tree.length === text.length || !isUnfinished(cur))) {
137
+ const value = prop(cur, editorState);
138
+ if (value && value.from <= end && value.from >= start && value.to > end) found = value;
139
+ }
140
+ }
141
+ return found;
142
+ }
143
+ var EMPTY_FILE = {
144
+ file: [],
145
+ code: ""
146
+ };
147
+ var yieldToUI = () => new Promise((resolve) => setTimeout(resolve, 0));
148
+ var EditorAbortError = class extends Error {
149
+ constructor() {
150
+ super("Aborted");
151
+ this.name = "AbortError";
152
+ }
153
+ };
154
+ async function parseNonBlocking(pkg, code, options) {
155
+ const parse = "language" in pkg ? pkg.language.parser.startParse(code) : pkg.parser.startParse(code);
156
+ let tree = null;
157
+ let now = performance.now();
158
+ for (;;) {
159
+ tree = parse.advance();
160
+ if (tree) break;
161
+ if (options?.signal?.aborted) throw new EditorAbortError();
162
+ if (performance.now() - now > 16) {
163
+ await yieldToUI();
164
+ now = performance.now();
165
+ }
166
+ }
167
+ return tree;
168
+ }
169
+ var parseNonBlockingQueue = Promise.resolve(null);
170
+ function queueParse(pkg, code, options) {
171
+ const p = parseNonBlockingQueue.then(() => parseNonBlocking(pkg, code, options));
172
+ parseNonBlockingQueue = p.catch(() => null);
173
+ return p;
174
+ }
175
+ function convertFile(code) {
176
+ if (!code) return EMPTY_FILE;
177
+ const file = [];
178
+ let curr = 0;
179
+ for (const line of code.split("\n")) {
180
+ file.push({
181
+ line: [{
182
+ from: curr,
183
+ to: curr + line.length,
184
+ classes: ""
185
+ }],
186
+ n: file.length + 1,
187
+ fold: null
188
+ });
189
+ curr += line.length + 1;
190
+ }
191
+ return {
192
+ file,
193
+ code
194
+ };
195
+ }
196
+ async function parseFile(cm, language, code, options) {
197
+ if (!code) return EMPTY_FILE;
198
+ const { lezerHighlighTree: highlightTree, EditorState, foldNodeProp } = cm;
199
+ const tree = await queueParse(await LANGUAGES[language], code, options);
200
+ const editorState = EditorState.create({ doc: code });
201
+ const file = [];
202
+ let line = [];
203
+ let pos = 0;
204
+ const pushToken = (from, to, classes) => {
205
+ line.push({
206
+ from: pos + from,
207
+ to: pos + to,
208
+ classes
209
+ });
210
+ };
211
+ const pushBreak = () => {
212
+ let fold = null;
213
+ if (line.length > 0) {
214
+ const startLine = line.at(0)?.from ?? 0;
215
+ let endLine = (line.at(-1)?.to ?? startLine) + 1;
216
+ endLine = Math.min(endLine, code.length);
217
+ fold = syntaxFolding(tree, code, editorState, foldNodeProp, startLine, endLine);
218
+ }
219
+ file.push({
220
+ line,
221
+ n: file.length + 1,
222
+ fold
223
+ });
224
+ line = [];
225
+ };
226
+ function writeTo(p, classes) {
227
+ if (p <= pos) return;
228
+ for (let text = code.slice(pos, p), i = 0;;) {
229
+ const nextBreak = text.indexOf("\n", i);
230
+ const upto = nextBreak < 0 ? text.length : nextBreak;
231
+ if (upto > i) pushToken(i, upto, classes);
232
+ if (nextBreak < 0) break;
233
+ pushBreak();
234
+ i = nextBreak + 1;
235
+ }
236
+ pos = p;
237
+ }
238
+ highlightTree(tree, getOrCreateClassHighlighter(cm), (from, to, classes) => {
239
+ writeTo(from, "");
240
+ writeTo(to, classes);
241
+ }, 0, code.length);
242
+ writeTo(code.length, "");
243
+ pushBreak();
244
+ return {
245
+ file,
246
+ code
247
+ };
248
+ }
249
+ function getVisibleLines(data, foldIdx) {
250
+ const ranges = [];
251
+ for (const index of foldIdx) {
252
+ const fold = data.file.at(index - 1)?.fold;
253
+ if (!fold) continue;
254
+ ranges.push({
255
+ from: fold.from,
256
+ to: fold.to
257
+ });
258
+ }
259
+ const visibleLines = [];
260
+ let pos = 0;
261
+ data.file.forEach((item) => {
262
+ const start = item.line.at(0)?.from ?? pos;
263
+ const end = item.line.at(-1)?.to ?? start;
264
+ if (!ranges.some((range) => start >= range.from && end <= range.to)) visibleLines.push(item);
265
+ pos = end + 1;
266
+ });
267
+ if (visibleLines.length === 0 && data.file.length > 0) visibleLines.push(data.file[0]);
268
+ return visibleLines;
269
+ }
270
+ //#endregion
271
+ export { EMPTY_FILE, convertFile, getVisibleLines, parseFile };
272
+
273
+ //# sourceMappingURL=CodeLite.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeLite.utils.js","names":[],"sources":["../../../src/components/Code/CodeLite.utils.tsx"],"sourcesContent":["import type {\n Language,\n LanguageSupport,\n foldNodeProp,\n} from '@codemirror/language';\nimport type { EditorState } from '@codemirror/state';\nimport type { SyntaxNode, Tree } from '@lezer/common';\nimport type { Highlighter } from '@lezer/highlight';\n\nimport type { CMBundle } from '../../utils/lazy-codemirror-loader';\nimport { LANGUAGES } from './languages/languages';\n\nexport type FoldRange = { from: number; to: number };\n\nexport interface ParsedFile {\n file: {\n line: { from: number; to: number; classes: string }[];\n n: number;\n fold: FoldRange | null;\n }[];\n code: string;\n}\n\nfunction isUnfinished(node: SyntaxNode): boolean {\n const ch = node.lastChild;\n return !!(ch && ch.to === node.to && ch.type.isError);\n}\n\nconst getOrCreateClassHighlighter = (() => {\n let classHighlighter: Highlighter | null = null;\n\n return (cm: CMBundle) => {\n if (classHighlighter != null) return classHighlighter;\n\n const { lezerTagHighlighter: tagHighlighter, lezerHighlightTags: tags } =\n cm;\n\n // Tailwind-friendly version of codemirror-theme-tokyo-night\n classHighlighter = tagHighlighter([\n {\n tag: tags.keyword,\n class: 'text-[#007197] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.name, tags.deleted, tags.character, tags.macroName],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [tags.propertyName],\n class: 'text-[#3760bf] dark:text-[#7aa2f7]',\n },\n {\n tag: [\n tags.processingInstruction,\n tags.string,\n tags.inserted,\n tags.content,\n tags.special(tags.string),\n ],\n class: 'text-[#587539] dark:text-[#9ece6a]',\n },\n {\n tag: [tags.function(tags.variableName), tags.labelName],\n class: 'text-[#3760bf] dark:text-[#7aa2f7]',\n },\n {\n tag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],\n class: 'text-[#3760bf] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.definition(tags.name), tags.separator],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [tags.className],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [\n tags.number,\n tags.changed,\n tags.annotation,\n tags.modifier,\n tags.self,\n tags.namespace,\n ],\n class: 'text-[#b15c00] dark:text-[#ff9e64]',\n },\n {\n tag: [tags.typeName],\n class: 'text-[#007197] dark:text-[#2ac3de]',\n },\n {\n tag: [tags.operator, tags.operatorKeyword],\n class: 'text-[#007197] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.url, tags.escape, tags.regexp, tags.link],\n class: 'text-[#587539] dark:text-[#b4f9f8]',\n },\n {\n tag: [tags.meta, tags.comment],\n class: 'text-[#848cb5] dark:text-[#565f89]',\n },\n {\n tag: tags.strong,\n class: 'font-bold',\n },\n {\n tag: tags.emphasis,\n class: 'italic',\n },\n {\n tag: tags.link,\n class: 'underline',\n },\n {\n tag: tags.heading,\n class: 'text-[#b15c00] font-semibold dark:text-[#89ddff]',\n },\n {\n tag: [tags.atom, tags.bool, tags.special(tags.variableName)],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: tags.invalid,\n class: 'text-[#f52a65] dark:text-[#ff5370]',\n },\n {\n tag: tags.strikethrough,\n class: 'line-through',\n },\n ]);\n\n return classHighlighter;\n };\n})();\n\nfunction syntaxFolding(\n tree: Tree,\n text: string,\n editorState: EditorState,\n foldProp: typeof foldNodeProp,\n start: number,\n end: number\n): FoldRange | null {\n if (tree.length < end) return null;\n\n const stack = tree.resolveInner(end, 1);\n let found: FoldRange | null = null;\n\n for (let cur: SyntaxNode | null = stack; cur; cur = cur.parent) {\n if (cur.to <= end || cur.from > end) continue;\n if (found && cur.from < start) break;\n\n const prop = cur.type.prop(foldProp) as (\n node: SyntaxNode,\n state: EditorState\n ) => FoldRange | null;\n\n if (\n prop &&\n (cur.to < tree.length - 50 ||\n tree.length === text.length ||\n !isUnfinished(cur))\n ) {\n const value = prop(cur, editorState);\n if (value && value.from <= end && value.from >= start && value.to > end) {\n found = value;\n }\n }\n }\n\n return found;\n}\n\nexport const EMPTY_FILE: ParsedFile = { file: [], code: '' };\n\nconst yieldToUI = () => new Promise((resolve) => setTimeout(resolve, 0));\n\nclass EditorAbortError extends Error {\n constructor() {\n super('Aborted');\n this.name = 'AbortError';\n }\n}\n\nasync function parseNonBlocking(\n pkg: LanguageSupport | Language,\n code: string,\n options?: { signal?: AbortSignal }\n) {\n const parse =\n 'language' in pkg\n ? pkg.language.parser.startParse(code)\n : pkg.parser.startParse(code);\n\n let tree: Tree | null = null;\n let now = performance.now();\n for (;;) {\n tree = parse.advance();\n if (tree) break;\n\n if (options?.signal?.aborted) throw new EditorAbortError();\n if (performance.now() - now > 16) {\n await yieldToUI();\n now = performance.now();\n }\n }\n\n return tree;\n}\n\n// Serialize parses so CodeMirror parser state is never advanced concurrently.\nlet parseNonBlockingQueue: Promise<Tree> = Promise.resolve(null!);\n\nfunction queueParse(\n pkg: LanguageSupport | Language,\n code: string,\n options?: {\n signal?: AbortSignal;\n }\n) {\n const p = parseNonBlockingQueue.then(() =>\n parseNonBlocking(pkg, code, options)\n );\n // Keep the queue usable after a failed parse.\n parseNonBlockingQueue = p.catch(() => null!);\n return p;\n}\n\nexport function convertFile(code: string | undefined): ParsedFile {\n if (!code) return EMPTY_FILE;\n\n const file: ParsedFile['file'] = [];\n let curr = 0;\n for (const line of code.split('\\n')) {\n file.push({\n line: [{ from: curr, to: curr + line.length, classes: '' }],\n n: file.length + 1,\n fold: null,\n });\n\n curr += line.length + 1;\n }\n\n return { file, code };\n}\n\nexport async function parseFile(\n cm: CMBundle,\n language: keyof typeof LANGUAGES,\n code: string | undefined,\n options?: {\n signal?: AbortSignal;\n }\n): Promise<ParsedFile> {\n if (!code) return EMPTY_FILE;\n\n const { lezerHighlighTree: highlightTree, EditorState, foldNodeProp } = cm;\n // TODO: Make language loading, queueing, and highlighting cancellable; the\n // signal currently only interrupts Lezer parsing cooperatively.\n const pkg = await LANGUAGES[language];\n const tree = await queueParse(pkg, code, options);\n\n const editorState = EditorState.create({ doc: code });\n type Line = { from: number; to: number; classes: string }[];\n const file: { line: Line; n: number; fold: FoldRange | null }[] = [];\n let line: Line = [];\n\n let pos = 0;\n\n const pushToken = (from: number, to: number, classes: string) => {\n line.push({ from: pos + from, to: pos + to, classes });\n };\n const pushBreak = () => {\n let fold: FoldRange | null = null;\n if (line.length > 0) {\n const startLine = line.at(0)?.from ?? 0;\n let endLine = (line.at(-1)?.to ?? startLine) + 1;\n endLine = Math.min(endLine, code.length);\n fold = syntaxFolding(\n tree,\n code,\n editorState,\n foldNodeProp,\n startLine,\n endLine\n );\n }\n\n file.push({ line, n: file.length + 1, fold });\n line = [];\n };\n\n function writeTo(p: number, classes: string) {\n if (p <= pos) return;\n for (let text = code!.slice(pos, p), i = 0; ; ) {\n const nextBreak = text.indexOf('\\n', i);\n const upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i) pushToken(i, upto, classes);\n if (nextBreak < 0) break;\n pushBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n\n highlightTree(\n tree,\n getOrCreateClassHighlighter(cm),\n (from, to, classes) => {\n writeTo(from, '');\n writeTo(to, classes);\n },\n 0,\n code.length\n );\n writeTo(code.length, '');\n pushBreak();\n\n return { file, code };\n}\n\nexport function getVisibleLines(\n data: ParsedFile,\n foldIdx: Set<number>\n): ParsedFile['file'] {\n const ranges: FoldRange[] = [];\n\n for (const index of foldIdx) {\n const fold = data.file.at(index - 1)?.fold;\n if (!fold) continue;\n ranges.push({ from: fold.from, to: fold.to });\n }\n\n const visibleLines: ParsedFile['file'] = [];\n\n let pos = 0;\n data.file.forEach((item) => {\n const start = item.line.at(0)?.from ?? pos;\n const end = item.line.at(-1)?.to ?? start;\n\n const isRangeHit = ranges.some(\n (range) => start >= range.from && end <= range.to\n );\n\n if (!isRangeHit) visibleLines.push(item);\n pos = end + 1;\n });\n\n // Make sure that we don't hide everything\n if (visibleLines.length === 0 && data.file.length > 0) {\n visibleLines.push(data.file[0]);\n }\n\n return visibleLines;\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DecorationSet, ViewUpdate } from '@codemirror/view';
2
+ import type { CMBundle } from '../../utils/lazy-codemirror-loader.js';
3
+ export declare function getImageReplacerExtensions(cm: CMBundle): {
4
+ decorationStateField: import("@codemirror/state").StateField<Map<any, any>>;
5
+ imageReplacerPlugin: import("@codemirror/view").ViewPlugin<{
6
+ decorations: DecorationSet;
7
+ update(update: ViewUpdate): void;
8
+ }, undefined>;
9
+ };