@logicplanes/kaeso-ui 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/NOTICE.md +1 -1
  2. package/ai/component-guides.md +312 -21
  3. package/ai/component-registry.json +616 -25
  4. package/ai/component-registry.md +154 -26
  5. package/ai/icons.md +4 -4
  6. package/ai/tokens.md +1 -1
  7. package/dist/blocks/delete-resource.js +15 -14
  8. package/dist/blocks/delete-resource.js.map +1 -1
  9. package/dist/blocks/pages.js +2 -2
  10. package/dist/blocks/resource-list.js +41 -40
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-0pdBTWkR.js +171 -0
  13. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +1 -0
  14. package/dist/chunks/{app-frame-C8csevkL.js → app-frame-DogGRmsu.js} +22 -21
  15. package/dist/chunks/app-frame-DogGRmsu.js.map +1 -0
  16. package/dist/chunks/{banner-Cb8OWnqJ.js → banner-BA2ALw9M.js} +2 -2
  17. package/dist/chunks/{banner-Cb8OWnqJ.js.map → banner-BA2ALw9M.js.map} +1 -1
  18. package/dist/chunks/{button-Dzu7_csE.js → button-CzuxqawA.js} +3 -3
  19. package/dist/chunks/{button-Dzu7_csE.js.map → button-CzuxqawA.js.map} +1 -1
  20. package/dist/chunks/{calendar--YemJsv4.js → calendar-BWaf2MXc.js} +57 -41
  21. package/dist/chunks/calendar-BWaf2MXc.js.map +1 -0
  22. package/dist/chunks/{checkbox-CDfC6E-M.js → checkbox-CQjwCPkc.js} +11 -9
  23. package/dist/chunks/checkbox-CQjwCPkc.js.map +1 -0
  24. package/dist/chunks/{code-block-U5fCqwgC.js → code-block-BZIe_B9l.js} +41 -37
  25. package/dist/chunks/code-block-BZIe_B9l.js.map +1 -0
  26. package/dist/chunks/code-block-DdNPHEzI.js +344 -0
  27. package/dist/chunks/code-block-DdNPHEzI.js.map +1 -0
  28. package/dist/chunks/combobox-DjDI7SUC.js +319 -0
  29. package/dist/chunks/combobox-DjDI7SUC.js.map +1 -0
  30. package/dist/chunks/{command-list-0RR4DpUe.js → command-list-C2Y7V_lt.js} +2 -2
  31. package/dist/chunks/{command-list-0RR4DpUe.js.map → command-list-C2Y7V_lt.js.map} +1 -1
  32. package/dist/chunks/{copy-button-7-irieJw.js → copy-button-FJvPJn72.js} +3 -3
  33. package/dist/chunks/{copy-button-7-irieJw.js.map → copy-button-FJvPJn72.js.map} +1 -1
  34. package/dist/chunks/{core-Bl9NrBLS.js → core-BYns5ytV.js} +145 -139
  35. package/dist/chunks/core-BYns5ytV.js.map +1 -0
  36. package/dist/chunks/{date-popup-RQkqhko4.js → date-popup-CPA_zt6o.js} +4 -4
  37. package/dist/chunks/{date-popup-RQkqhko4.js.map → date-popup-CPA_zt6o.js.map} +1 -1
  38. package/dist/chunks/{de-BnNQtBSV.js → de-D_0mmG-k.js} +10 -1
  39. package/dist/chunks/de-D_0mmG-k.js.map +1 -0
  40. package/dist/chunks/dialog-Cg9A_6SF.js +383 -0
  41. package/dist/chunks/dialog-Cg9A_6SF.js.map +1 -0
  42. package/dist/chunks/icon-CPJWE2N-.js +95 -0
  43. package/dist/chunks/icon-CPJWE2N-.js.map +1 -0
  44. package/dist/chunks/{icon-button-CPYR21Sz.js → icon-button-CrdF_eMG.js} +3 -3
  45. package/dist/chunks/{icon-button-CPYR21Sz.js.map → icon-button-CrdF_eMG.js.map} +1 -1
  46. package/dist/chunks/{identity-DPuTkMsa.js → identity-BmhQ6BQ-.js} +15 -15
  47. package/dist/chunks/identity-BmhQ6BQ-.js.map +1 -0
  48. package/dist/chunks/{input-TyLIaQ5k.js → input-2VJuj_M4.js} +10 -5
  49. package/dist/chunks/input-2VJuj_M4.js.map +1 -0
  50. package/dist/chunks/{input-group-CUSNsQjQ.js → input-group-DQ_4DoXg.js} +2 -2
  51. package/dist/chunks/{input-group-CUSNsQjQ.js.map → input-group-DQ_4DoXg.js.map} +1 -1
  52. package/dist/chunks/{inset-BnBj8NJV.js → inset-BUzyXLK4.js} +14 -4
  53. package/dist/chunks/inset-BUzyXLK4.js.map +1 -0
  54. package/dist/chunks/{iso-field-CWbxlll-.js → iso-field-B2rTwiBo.js} +2 -2
  55. package/dist/chunks/{iso-field-CWbxlll-.js.map → iso-field-B2rTwiBo.js.map} +1 -1
  56. package/dist/chunks/{link-B2I55xg9.js → link-KWI7PevW.js} +2 -2
  57. package/dist/chunks/{link-B2I55xg9.js.map → link-KWI7PevW.js.map} +1 -1
  58. package/dist/chunks/link-provider-cvl8lSTT.js +29 -0
  59. package/dist/chunks/link-provider-cvl8lSTT.js.map +1 -0
  60. package/dist/chunks/{list-CkOozrVY.js → list-M1csq-d4.js} +18 -16
  61. package/dist/chunks/{list-CkOozrVY.js.map → list-M1csq-d4.js.map} +1 -1
  62. package/dist/chunks/{markdown-BEgwZFlu.js → markdown-BupwFOae.js} +5 -5
  63. package/dist/chunks/{markdown-BEgwZFlu.js.map → markdown-BupwFOae.js.map} +1 -1
  64. package/dist/chunks/{menu-fl_QQb38.js → menu-DEmBfdPm.js} +29 -26
  65. package/dist/chunks/menu-DEmBfdPm.js.map +1 -0
  66. package/dist/chunks/nav-sheet-CzgIwgAm.js +60 -0
  67. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +1 -0
  68. package/dist/chunks/{page-header-DjUMDG69.js → page-header-DL2y2iZp.js} +2 -2
  69. package/dist/chunks/{page-header-DjUMDG69.js.map → page-header-DL2y2iZp.js.map} +1 -1
  70. package/dist/chunks/{pagination-BaY8jdli.js → pagination-Cn_qF4cg.js} +3 -3
  71. package/dist/chunks/{pagination-BaY8jdli.js.map → pagination-Cn_qF4cg.js.map} +1 -1
  72. package/dist/chunks/{picker-popover-DShea4b8.js → picker-popover-BxyU1U9F.js} +14 -13
  73. package/dist/chunks/{picker-popover-DShea4b8.js.map → picker-popover-BxyU1U9F.js.map} +1 -1
  74. package/dist/chunks/{popover-CFMwaeIP.js → popover-DNN4S47w.js} +2 -2
  75. package/dist/chunks/{popover-CFMwaeIP.js.map → popover-DNN4S47w.js.map} +1 -1
  76. package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -1
  77. package/dist/chunks/{radio-Yl0nO-Sj.js → radio-CDDFpdtL.js} +4 -4
  78. package/dist/chunks/{radio-Yl0nO-Sj.js.map → radio-CDDFpdtL.js.map} +1 -1
  79. package/dist/chunks/{range-popup-CkhsK3wI.js → range-popup-CRyWYUB1.js} +5 -5
  80. package/dist/chunks/{range-popup-CkhsK3wI.js.map → range-popup-CRyWYUB1.js.map} +1 -1
  81. package/dist/chunks/{rights-BlQx9C_j.js → rights-Cyp0Pzp-.js} +5 -5
  82. package/dist/chunks/{rights-BlQx9C_j.js.map → rights-Cyp0Pzp-.js.map} +1 -1
  83. package/dist/chunks/{segmented-C97zvDR1.js → segmented-CErcoxwi.js} +2 -2
  84. package/dist/chunks/{segmented-C97zvDR1.js.map → segmented-CErcoxwi.js.map} +1 -1
  85. package/dist/chunks/{sidebar-DtFlejU7.js → sidebar-3r1ZRXlN.js} +253 -235
  86. package/dist/chunks/sidebar-3r1ZRXlN.js.map +1 -0
  87. package/dist/chunks/{sidebar-menu-CxQbGwyj.js → sidebar-menu-BN3jkTlK.js} +2 -2
  88. package/dist/chunks/{sidebar-menu-CxQbGwyj.js.map → sidebar-menu-BN3jkTlK.js.map} +1 -1
  89. package/dist/chunks/{switch-b-VkStWj.js → switch-BNMq_kGt.js} +2 -2
  90. package/dist/chunks/{switch-b-VkStWj.js.map → switch-BNMq_kGt.js.map} +1 -1
  91. package/dist/chunks/{tag-DNdX1XRR.js → tag-D_M1s2qS.js} +2 -2
  92. package/dist/chunks/{tag-DNdX1XRR.js.map → tag-D_M1s2qS.js.map} +1 -1
  93. package/dist/chunks/{text-DCGGNqTM.js → text-CIXH8rmT.js} +2 -2
  94. package/dist/chunks/{text-DCGGNqTM.js.map → text-CIXH8rmT.js.map} +1 -1
  95. package/dist/chunks/{textarea-CT2S2JVM.js → textarea--4FRL3Pb.js} +3 -3
  96. package/dist/chunks/{textarea-CT2S2JVM.js.map → textarea--4FRL3Pb.js.map} +1 -1
  97. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -1
  98. package/dist/chunks/{timeseries-B-8OfeZm.js → timeseries-D1xjRXfk.js} +2 -2
  99. package/dist/chunks/{timeseries-B-8OfeZm.js.map → timeseries-D1xjRXfk.js.map} +1 -1
  100. package/dist/chunks/{toolbar-DL6zVrzU.js → toolbar-WA_oZgu-.js} +5 -4
  101. package/dist/chunks/{toolbar-DL6zVrzU.js.map → toolbar-WA_oZgu-.js.map} +1 -1
  102. package/dist/chunks/tooltip-OcwO0VUT.js +154 -0
  103. package/dist/chunks/tooltip-OcwO0VUT.js.map +1 -0
  104. package/dist/chunks/{tooltip-root-BeAMXzxU.js → tooltip-root-DzahJDVj.js} +2 -2
  105. package/dist/chunks/{tooltip-root-BeAMXzxU.js.map → tooltip-root-DzahJDVj.js.map} +1 -1
  106. package/dist/chunks/{use-scroll-margin-DfdTc_5D.js → use-scroll-margin-atRtf0v_.js} +14 -10
  107. package/dist/chunks/use-scroll-margin-atRtf0v_.js.map +1 -0
  108. package/dist/chunks/{virtual-rows-yAMjeAwj.js → virtual-rows-CC_kc2PR.js} +2 -2
  109. package/dist/chunks/{virtual-rows-yAMjeAwj.js.map → virtual-rows-CC_kc2PR.js.map} +1 -1
  110. package/dist/chunks/{zh-CN-CKffAT7j.js → zh-CN-Bm6UPIbW.js} +10 -1
  111. package/dist/chunks/zh-CN-Bm6UPIbW.js.map +1 -0
  112. package/dist/components/agent-avatar.js +2 -0
  113. package/dist/components/app-frame.js +2 -2
  114. package/dist/components/banner.js +1 -1
  115. package/dist/components/button-group.js +2 -2
  116. package/dist/components/button.js +1 -1
  117. package/dist/components/calendar.js +1 -1
  118. package/dist/components/charts/bar.js +1 -1
  119. package/dist/components/charts/donut.js +1 -1
  120. package/dist/components/charts/gauge.js +1 -1
  121. package/dist/components/charts/sankey.js +1 -1
  122. package/dist/components/charts/timeseries.js +1 -1
  123. package/dist/components/charts.js +2 -2
  124. package/dist/components/checkbox.js +1 -1
  125. package/dist/components/code-block.js +3 -2
  126. package/dist/components/combobox.js +1 -1
  127. package/dist/components/command-list.js +2 -2
  128. package/dist/components/command-palette.js +85 -81
  129. package/dist/components/command-palette.js.map +1 -1
  130. package/dist/components/copy-button.js +1 -1
  131. package/dist/components/data-table.js +191 -187
  132. package/dist/components/data-table.js.map +1 -1
  133. package/dist/components/date-picker.js +6 -4
  134. package/dist/components/date-picker.js.map +1 -1
  135. package/dist/components/dialog.js +125 -91
  136. package/dist/components/dialog.js.map +1 -1
  137. package/dist/components/display-options.js +49 -46
  138. package/dist/components/display-options.js.map +1 -1
  139. package/dist/components/filter-chip.js +3 -3
  140. package/dist/components/filter-chip.js.map +1 -1
  141. package/dist/components/filter-row.js +1 -1
  142. package/dist/components/icon-button.js +1 -1
  143. package/dist/components/icon.js +1 -1
  144. package/dist/components/input.js +49 -49
  145. package/dist/components/input.js.map +1 -1
  146. package/dist/components/kaeso/conversation.js +3 -3
  147. package/dist/components/kaeso/identity.js +1 -1
  148. package/dist/components/kaeso/moments.js +3 -3
  149. package/dist/components/kaeso/rights.js +1 -1
  150. package/dist/components/kaeso/usage.js +8 -8
  151. package/dist/components/kaeso/usage.js.map +1 -1
  152. package/dist/components/kaeso.js +263 -95
  153. package/dist/components/kaeso.js.map +1 -1
  154. package/dist/components/key-value.js +2 -2
  155. package/dist/components/link.js +1 -1
  156. package/dist/components/list.js +1 -1
  157. package/dist/components/markdown.js +1 -1
  158. package/dist/components/menu.js +2 -2
  159. package/dist/components/page-header.js +1 -1
  160. package/dist/components/pagination.js +1 -1
  161. package/dist/components/playground.js +27 -26
  162. package/dist/components/playground.js.map +1 -1
  163. package/dist/components/popover.js +12 -11
  164. package/dist/components/popover.js.map +1 -1
  165. package/dist/components/radio.js +1 -1
  166. package/dist/components/segmented.js +1 -1
  167. package/dist/components/settings.js +8 -8
  168. package/dist/components/settings.js.map +1 -1
  169. package/dist/components/sheet.js +2 -2
  170. package/dist/components/sidebar.js +1 -1
  171. package/dist/components/switch.js +1 -1
  172. package/dist/components/tabs.js +22 -22
  173. package/dist/components/tabs.js.map +1 -1
  174. package/dist/components/tag.js +1 -1
  175. package/dist/components/text.js +1 -1
  176. package/dist/components/theme-menu.js +33 -30
  177. package/dist/components/theme-menu.js.map +1 -1
  178. package/dist/components/thumbnail.js +41 -0
  179. package/dist/components/thumbnail.js.map +1 -0
  180. package/dist/components/toast.js +96 -87
  181. package/dist/components/toast.js.map +1 -1
  182. package/dist/components/toolbar.js +1 -1
  183. package/dist/components/tooltip.js +1 -1
  184. package/dist/format.js.map +1 -1
  185. package/dist/i18n-provider.js +1 -1
  186. package/dist/index.js +90 -88
  187. package/dist/kaeso.css +3 -0
  188. package/dist/styles.css +1 -1
  189. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -5
  190. package/dist/types/blocks/resource-list/resource-list.d.ts +1 -4
  191. package/dist/types/component-docs.d.ts +1 -1
  192. package/dist/types/components/agent-avatar/agent-avatar.d.ts +94 -0
  193. package/dist/types/components/agent-avatar/docs.d.ts +19 -0
  194. package/dist/types/components/agent-avatar/index.d.ts +3 -0
  195. package/dist/types/components/agent-avatar/model-name.d.ts +9 -0
  196. package/dist/types/components/agent-avatar/models.d.ts +4 -0
  197. package/dist/types/components/app-frame/app-frame.d.ts +3 -8
  198. package/dist/types/components/app-frame/nav-sheet.d.ts +2 -4
  199. package/dist/types/components/calendar/calendar.d.ts +1 -4
  200. package/dist/types/components/charts/core.d.ts +11 -18
  201. package/dist/types/components/checkbox/checkbox.d.ts +2 -0
  202. package/dist/types/components/code-block/diff-view.d.ts +30 -0
  203. package/dist/types/components/code-block/diff.d.ts +26 -0
  204. package/dist/types/components/code-block/docs.d.ts +14 -0
  205. package/dist/types/components/code-block/index.d.ts +1 -0
  206. package/dist/types/components/combobox/combobox.d.ts +26 -2
  207. package/dist/types/components/command-list/picker-popover.d.ts +1 -4
  208. package/dist/types/components/command-palette/command-palette.d.ts +1 -4
  209. package/dist/types/components/data-table/data-table.d.ts +2 -1
  210. package/dist/types/components/data-table/docs.d.ts +1 -0
  211. package/dist/types/components/dialog/dialog.d.ts +7 -9
  212. package/dist/types/components/dialog/docs.d.ts +2 -0
  213. package/dist/types/components/dialog/scope.d.ts +2 -0
  214. package/dist/types/components/dialog/step-dialog.d.ts +38 -5
  215. package/dist/types/components/display-options/display-options.d.ts +2 -5
  216. package/dist/types/components/input/input.d.ts +23 -0
  217. package/dist/types/components/kaeso/client-button.d.ts +17 -0
  218. package/dist/types/components/kaeso/docs.d.ts +18 -0
  219. package/dist/types/components/kaeso/grant-summary.d.ts +12 -0
  220. package/dist/types/components/kaeso/identity.d.ts +2 -0
  221. package/dist/types/components/kaeso/index.d.ts +2 -0
  222. package/dist/types/components/kaeso/provider-picker.d.ts +5 -0
  223. package/dist/types/components/kaeso/usage.d.ts +2 -0
  224. package/dist/types/components/list/list.d.ts +4 -8
  225. package/dist/types/components/menu/docs.d.ts +8 -1
  226. package/dist/types/components/menu/menu.d.ts +19 -31
  227. package/dist/types/components/playground/parameter-panel.d.ts +1 -4
  228. package/dist/types/components/popover/hover-card.d.ts +2 -0
  229. package/dist/types/components/radio/docs.d.ts +15 -0
  230. package/dist/types/components/radio/radio.d.ts +2 -4
  231. package/dist/types/components/settings/settings.d.ts +2 -0
  232. package/dist/types/components/sidebar/sidebar.d.ts +13 -35
  233. package/dist/types/components/tabs/tabs.d.ts +15 -0
  234. package/dist/types/components/theme-menu/docs.d.ts +2 -0
  235. package/dist/types/components/theme-menu/theme-menu.d.ts +6 -5
  236. package/dist/types/components/thumbnail/docs.d.ts +10 -0
  237. package/dist/types/components/thumbnail/index.d.ts +1 -0
  238. package/dist/types/components/thumbnail/thumbnail.d.ts +26 -0
  239. package/dist/types/components/toast/toast.d.ts +5 -12
  240. package/dist/types/components/toolbar/toolbar.d.ts +1 -6
  241. package/dist/types/components/tooltip/tooltip.d.ts +2 -4
  242. package/dist/types/components/tooltip/trigger-props.d.ts +0 -1
  243. package/dist/types/format/index.d.ts +5 -5
  244. package/dist/types/hooks/use-scroll-margin.d.ts +1 -1
  245. package/dist/types/icons/groups.d.ts +3 -3
  246. package/dist/types/icons/vocabulary.d.ts +20 -0
  247. package/dist/types/index.d.ts +2 -0
  248. package/dist/types/utils/inset.d.ts +4 -0
  249. package/dist/types/utils/link-provider.d.ts +1 -1
  250. package/dist/types/utils/merge-refs.d.ts +3 -0
  251. package/dist/types/utils/portal-context.d.ts +1 -1
  252. package/dist/utils.js +3 -3
  253. package/foundations/shape.md +1 -1
  254. package/package.json +2 -2
  255. package/dist/chunks/app-frame-C8csevkL.js.map +0 -1
  256. package/dist/chunks/calendar--YemJsv4.js.map +0 -1
  257. package/dist/chunks/checkbox-CDfC6E-M.js.map +0 -1
  258. package/dist/chunks/code-block-U5fCqwgC.js.map +0 -1
  259. package/dist/chunks/combobox-BARyrpXH.js +0 -314
  260. package/dist/chunks/combobox-BARyrpXH.js.map +0 -1
  261. package/dist/chunks/core-Bl9NrBLS.js.map +0 -1
  262. package/dist/chunks/de-BnNQtBSV.js.map +0 -1
  263. package/dist/chunks/dialog-DQ9vZ7vr.js +0 -353
  264. package/dist/chunks/dialog-DQ9vZ7vr.js.map +0 -1
  265. package/dist/chunks/icon-CBzvyEqC.js +0 -91
  266. package/dist/chunks/icon-CBzvyEqC.js.map +0 -1
  267. package/dist/chunks/identity-DPuTkMsa.js.map +0 -1
  268. package/dist/chunks/input-TyLIaQ5k.js.map +0 -1
  269. package/dist/chunks/inset-BnBj8NJV.js.map +0 -1
  270. package/dist/chunks/link-provider-BsUxhZKG.js +0 -27
  271. package/dist/chunks/link-provider-BsUxhZKG.js.map +0 -1
  272. package/dist/chunks/menu-fl_QQb38.js.map +0 -1
  273. package/dist/chunks/nav-sheet-B2rNb8GB.js +0 -60
  274. package/dist/chunks/nav-sheet-B2rNb8GB.js.map +0 -1
  275. package/dist/chunks/sidebar-DtFlejU7.js.map +0 -1
  276. package/dist/chunks/tooltip-BMQ9BtPp.js +0 -151
  277. package/dist/chunks/tooltip-BMQ9BtPp.js.map +0 -1
  278. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +0 -1
  279. package/dist/chunks/zh-CN-CKffAT7j.js.map +0 -1
@@ -0,0 +1,344 @@
1
+ "use client";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { t as n } from "./icon-D7ja-_Yk.js";
5
+ import { n as r } from "./copy-button-FJvPJn72.js";
6
+ import { a as i, c as a, o } from "./code-block-BZIe_B9l.js";
7
+ import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
8
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
9
+ import { UnfoldMoreIcon as h } from "@hugeicons/core-free-icons";
10
+ //#region src/components/code-block/diff.ts
11
+ var g = 4e6, _ = 400, v = /\w+|\s+|[^\w\s]/g;
12
+ function y(e, t) {
13
+ if (e.length * t.length > g) return null;
14
+ let n = t.length + 1, r = new Uint32Array((e.length + 1) * n);
15
+ for (let i = e.length - 1; i >= 0; i--) for (let a = t.length - 1; a >= 0; a--) r[i * n + a] = e[i] === t[a] ? (r[(i + 1) * n + a + 1] ?? 0) + 1 : Math.max(r[(i + 1) * n + a] ?? 0, r[i * n + a + 1] ?? 0);
16
+ let i = [], a = 0, o = 0;
17
+ for (; a < e.length && o < t.length;) e[a] === t[o] ? (i.push([a, o]), a++, o++) : (r[(a + 1) * n + o] ?? 0) >= (r[a * n + o + 1] ?? 0) ? a++ : o++;
18
+ return i;
19
+ }
20
+ function b(e, t) {
21
+ let n = e.match(v) ?? [], r = t.match(v) ?? [];
22
+ if (n.length > _ || r.length > _) return null;
23
+ let i = y(n, r) ?? [], a = i.map(([e]) => n[e] ?? "").join(""), o = Math.max(e.replace(/\s/g, "").length, t.replace(/\s/g, "").length);
24
+ if (o === 0 || !/\w/.test(a) && a.replace(/\s/g, "").length / o < .4) return null;
25
+ let s = (e, t) => {
26
+ let n = e.join(""), r = [], i = 0;
27
+ return e.forEach((e, a) => {
28
+ let o = i + e.length;
29
+ if (!t.has(a) && e.trim()) {
30
+ let e = r[r.length - 1];
31
+ e && !n.slice(e[1], i).trim() ? e[1] = o : r.push([i, o]);
32
+ }
33
+ i = o;
34
+ }), r;
35
+ };
36
+ return [s(n, new Set(i.map(([e]) => e))), s(r, new Set(i.map(([, e]) => e)))];
37
+ }
38
+ function x(e, t) {
39
+ let n = Math.min(e.length, t.length);
40
+ for (let r = 0; r < n; r++) {
41
+ let n = e[r], i = t[r], a = b(n.text, i.text);
42
+ a && (n.changes = a[0], i.changes = a[1]);
43
+ }
44
+ }
45
+ function S(e, t) {
46
+ let n = e === "" ? [] : e.replace(/\n$/, "").split("\n"), r = t === "" ? [] : t.replace(/\n$/, "").split("\n"), i = 0;
47
+ for (; i < n.length && i < r.length && n[i] === r[i];) i++;
48
+ let a = 0;
49
+ for (; a < n.length - i && a < r.length - i && n[n.length - 1 - a] === r[r.length - 1 - a];) a++;
50
+ let o = (y(n.slice(i, n.length - a), r.slice(i, r.length - a)) ?? []).map(([e, t]) => [e + i, t + i]), s = [
51
+ ...Array.from({ length: i }, (e, t) => [t, t]),
52
+ ...o,
53
+ ...Array.from({ length: a }, (e, t) => [n.length - a + t, r.length - a + t]),
54
+ [n.length, r.length]
55
+ ], c = [], l = 0, u = 0;
56
+ for (let [e, t] of s) {
57
+ let i = n.slice(l, e).map((e, t) => ({
58
+ kind: "removed",
59
+ text: e,
60
+ oldNumber: l + t + 1
61
+ })), a = r.slice(u, t).map((e, t) => ({
62
+ kind: "added",
63
+ text: e,
64
+ newNumber: u + t + 1
65
+ }));
66
+ x(i, a), c.push(...i, ...a), e < n.length && c.push({
67
+ kind: "same",
68
+ text: n[e],
69
+ oldNumber: e + 1,
70
+ newNumber: t + 1
71
+ }), l = e + 1, u = t + 1;
72
+ }
73
+ return c;
74
+ }
75
+ function C(e) {
76
+ return {
77
+ added: e.filter((e) => e.kind === "added").length,
78
+ removed: e.filter((e) => e.kind === "removed").length
79
+ };
80
+ }
81
+ function w(e) {
82
+ let t = 1;
83
+ for (let n of e) t = Math.max(t, n.oldNumber ?? 0, n.newNumber ?? 0);
84
+ return t;
85
+ }
86
+ function T(e) {
87
+ return e.map((e) => `${e.kind === "added" ? "+" : e.kind === "removed" ? "-" : " "} ${e.text}`).join("\n");
88
+ }
89
+ function E(e, t, n) {
90
+ let r = Array.from({ length: e.length }, () => !1);
91
+ e.forEach((n, i) => {
92
+ if (n.kind !== "same") for (let n = Math.max(0, i - t); n <= Math.min(e.length - 1, i + t); n++) r[n] = !0;
93
+ });
94
+ let i = [], a = 0;
95
+ for (; a < e.length;) {
96
+ if (r[a] || e[a]?.kind !== "same") {
97
+ i.push({
98
+ type: "line",
99
+ line: e[a],
100
+ index: a
101
+ }), a++;
102
+ continue;
103
+ }
104
+ let t = a;
105
+ for (; t < e.length && !r[t];) t++;
106
+ if (t - a < 2 || n.has(a)) for (let n = a; n < t; n++) i.push({
107
+ type: "line",
108
+ line: e[n],
109
+ index: n
110
+ });
111
+ else i.push({
112
+ type: "fold",
113
+ from: a,
114
+ to: t
115
+ });
116
+ a = t;
117
+ }
118
+ return i;
119
+ }
120
+ //#endregion
121
+ //#region src/components/code-block/diff-view.tsx
122
+ var D = { surface: {
123
+ well: { classes: "rounded-well bg-fill-1" },
124
+ plain: { classes: "bg-transparent" }
125
+ } }, O = { surface: "well" }, k = /* @__PURE__ */ new Set(), A = {
126
+ same: "",
127
+ removed: "bg-diff-removed",
128
+ added: "bg-diff-added"
129
+ }, j = {
130
+ same: "",
131
+ removed: "bg-diff-removed-word",
132
+ added: "bg-diff-added-word"
133
+ }, M = {
134
+ same: {
135
+ sign: " ",
136
+ className: ""
137
+ },
138
+ removed: {
139
+ sign: "−",
140
+ className: "text-danger-text"
141
+ },
142
+ added: {
143
+ sign: "+",
144
+ className: "text-success-text"
145
+ }
146
+ };
147
+ function N(e, t, n = []) {
148
+ let r = t?.length ? t : [{
149
+ content: e,
150
+ className: ""
151
+ }], i = [], a = 0;
152
+ for (let e of r) {
153
+ let t = 0;
154
+ for (; t < e.content.length;) {
155
+ let r = a + t, o = n.find(([e, t]) => r >= e && r < t), s = o ? o[1] : Math.min(Infinity, ...n.map(([e]) => e).filter((e) => e > r)), c = Math.min(e.content.length, s - a);
156
+ i.push({
157
+ text: e.content.slice(t, c),
158
+ className: e.className,
159
+ changed: !!o
160
+ }), t = c;
161
+ }
162
+ a += e.content.length;
163
+ }
164
+ return i;
165
+ }
166
+ function P(e, t) {
167
+ let n = t;
168
+ return e.flatMap((e) => {
169
+ if (n === 0) return [e];
170
+ let t = Math.min(n, e.text.length);
171
+ return n -= t, t === e.text.length ? [] : [{
172
+ ...e,
173
+ text: e.text.slice(t)
174
+ }];
175
+ });
176
+ }
177
+ function F({ parts: t, kind: n }) {
178
+ let r = [];
179
+ for (let e of t) {
180
+ let t = r[r.length - 1];
181
+ t && t[0]?.changed === e.changed ? t.push(e) : r.push([e]);
182
+ }
183
+ return /* @__PURE__ */ p(f, { children: r.map((t, r) => {
184
+ let i = t.map((e, n) => /* @__PURE__ */ p("span", {
185
+ className: (t[0]?.changed ? e.className.replace(/text-fg-(tertiary|secondary)/, "text-fg") : e.className) || void 0,
186
+ children: e.text
187
+ }, n));
188
+ return t[0]?.changed ? /* @__PURE__ */ p("span", {
189
+ "data-diff-change": "",
190
+ className: e("rounded-cell", j[n]),
191
+ children: i
192
+ }, r) : i;
193
+ }) });
194
+ }
195
+ function I(e) {
196
+ let t = String(e).length;
197
+ return t <= 2 ? "w-16" : t === 3 ? "w-24" : t === 4 ? "w-32" : "w-40";
198
+ }
199
+ var L = /* @__PURE__ */ s(function({ before: s, after: g, lang: _ = "text", title: v, context: y = 3, lineNumbers: b, surface: x = "well", copy: O = !0, wrap: j = !1, className: L }, R) {
200
+ let z = t(), B = l(() => S(s, g), [s, g]), V = l(() => C(B), [B]), [H, U] = d(null);
201
+ c(() => {
202
+ let e = !0;
203
+ return Promise.all([a(s.replace(/\n$/, ""), _), a(g.replace(/\n$/, ""), _)]).then(([t, n]) => e && U({
204
+ before: s,
205
+ after: g,
206
+ lang: _,
207
+ old: t,
208
+ new: n
209
+ })).catch(() => void 0), () => {
210
+ e = !1;
211
+ };
212
+ }, [
213
+ s,
214
+ g,
215
+ _
216
+ ]);
217
+ let W = H && H.before === s && H.after === g && H.lang === _ ? H : null, [G, K] = d({
218
+ lines: B,
219
+ at: /* @__PURE__ */ new Set()
220
+ }), q = G.lines === B ? G.at : k, J = l(() => E(B, y, q), [
221
+ B,
222
+ y,
223
+ q
224
+ ]), Y = u(null);
225
+ i(Y, "code");
226
+ let X = V.added === 0 && V.removed === 0, Z = b ? I(w(B)) : "", Q = (e) => e.kind === "added" ? W?.new?.[(e.newNumber ?? 0) - 1] : W?.old?.[(e.oldNumber ?? 0) - 1];
227
+ return /* @__PURE__ */ m("div", {
228
+ ref: R,
229
+ className: e("relative min-w-0", D.surface[x].classes, L),
230
+ children: [/* @__PURE__ */ m("div", {
231
+ className: "flex h-44 items-center gap-4 px-8 hairline-b",
232
+ children: [
233
+ v && /* @__PURE__ */ p("span", {
234
+ className: "min-w-0 truncate px-8 mono text-small text-fg-secondary",
235
+ children: v
236
+ }),
237
+ /* @__PURE__ */ p("span", {
238
+ className: "ml-auto flex shrink-0 items-center gap-8 px-8 mono text-small tabular",
239
+ children: X ? /* @__PURE__ */ p("span", {
240
+ className: "text-fg-secondary",
241
+ children: z("diffView.noChanges", "No changes")
242
+ }) : /* @__PURE__ */ m(f, { children: [
243
+ V.added > 0 && /* @__PURE__ */ m("span", {
244
+ "aria-hidden": "true",
245
+ className: "text-success-text",
246
+ children: ["+", V.added]
247
+ }),
248
+ V.removed > 0 && /* @__PURE__ */ m("span", {
249
+ "aria-hidden": "true",
250
+ className: "text-danger-text",
251
+ children: ["−", V.removed]
252
+ }),
253
+ /* @__PURE__ */ p("span", {
254
+ className: "sr-only",
255
+ children: z("diffView.summary", "{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# removed} other {# removed}}", {
256
+ added: V.added,
257
+ removed: V.removed
258
+ })
259
+ })
260
+ ] })
261
+ }),
262
+ O && /* @__PURE__ */ p(r, {
263
+ value: T(B),
264
+ label: z("diffView.copy", "Copy diff")
265
+ })
266
+ ]
267
+ }), /* @__PURE__ */ p("div", {
268
+ ref: Y,
269
+ tabIndex: 0,
270
+ role: "region",
271
+ "aria-label": typeof v == "string" ? v : z("diffView.label", "Changes"),
272
+ className: "relative overflow-x-auto py-8 scrollbar-quiet scroll-fade-x focus-ring-inset",
273
+ children: /* @__PURE__ */ p("pre", {
274
+ className: "mono text-small text-fg",
275
+ children: /* @__PURE__ */ p("code", {
276
+ className: e("grid", !j && "min-w-max"),
277
+ children: J.map((t) => {
278
+ if (t.type === "fold") {
279
+ let e = t.to - t.from;
280
+ return /* @__PURE__ */ p("button", {
281
+ type: "button",
282
+ onClick: () => {
283
+ Y.current?.focus({ preventScroll: !0 }), K({
284
+ lines: B,
285
+ at: /* @__PURE__ */ new Set([...q, t.from])
286
+ });
287
+ },
288
+ className: "flex h-32 cursor-pointer items-center bg-fill-2 font-sans text-small text-fg-secondary transition-control hover:text-fg focus-ring-inset",
289
+ children: /* @__PURE__ */ m("span", {
290
+ className: "sticky left-0 flex items-center gap-8 px-16",
291
+ children: [/* @__PURE__ */ p(n, {
292
+ icon: h,
293
+ size: "xs"
294
+ }), z("diffView.showUnchanged", "{count, plural, one {Show # unchanged line} other {Show # unchanged lines}}", { count: e })]
295
+ })
296
+ }, `fold-${t.from}`);
297
+ }
298
+ let { line: r } = t, i = M[r.kind], a = j ? o.exec(r.text)?.[0] ?? "" : "", s = P(N(r.text, Q(r), r.changes), a.length);
299
+ return /* @__PURE__ */ m("span", {
300
+ "data-diff": r.kind,
301
+ className: e("flex leading-code", A[r.kind]),
302
+ children: [
303
+ b && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p("span", {
304
+ "aria-hidden": "true",
305
+ className: e("ml-8 shrink-0 text-right text-fg-tertiary select-none tabular", Z),
306
+ children: r.oldNumber && r.kind !== "added" ? r.oldNumber : ""
307
+ }), /* @__PURE__ */ p("span", {
308
+ "aria-hidden": "true",
309
+ className: e("ml-8 shrink-0 text-right text-fg-tertiary select-none tabular", Z),
310
+ children: r.newNumber && r.kind !== "removed" ? r.newNumber : ""
311
+ })] }),
312
+ /* @__PURE__ */ p("span", {
313
+ "aria-hidden": "true",
314
+ className: e("w-32 shrink-0 text-center select-none", i.className),
315
+ children: i.sign
316
+ }),
317
+ r.kind !== "same" && /* @__PURE__ */ m("span", {
318
+ className: "sr-only",
319
+ children: [r.kind === "added" ? z("diffView.added", "Added") : z("diffView.removed", "Removed"), " "]
320
+ }),
321
+ a && /* @__PURE__ */ p("span", {
322
+ className: "shrink-0 whitespace-pre",
323
+ children: a
324
+ }),
325
+ /* @__PURE__ */ p("span", {
326
+ className: e("min-w-0 pr-16", j && "pl-16 -indent-16 whitespace-pre-wrap wrap-anywhere"),
327
+ children: s.length ? /* @__PURE__ */ p(F, {
328
+ parts: s,
329
+ kind: r.kind
330
+ }) : " "
331
+ })
332
+ ]
333
+ }, t.index);
334
+ })
335
+ })
336
+ })
337
+ })]
338
+ });
339
+ });
340
+ process.env.NODE_ENV !== "production" && (L.displayName = "DiffView");
341
+ //#endregion
342
+ export { O as n, D as r, L as t };
343
+
344
+ //# sourceMappingURL=code-block-DdNPHEzI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block-DdNPHEzI.js","names":["WORD","_Fragment","__icon_UnfoldMoreIcon","cn","useUiText","Icon","CopyButton","useScrollFadeX","highlight","Fragment$1","MAX_CELLS","MAX_WORD_TOKENS","WORD$1","lcsPairs","a","b","width","table","j","pairs","i","wordChanges","before","after","keptText","longest","ranges","line","tokens","out","at","end","token","keptAt","k","last","markWords","removed","added","r","words","diffLines","head","tail","anchors","ai","bj","diffStats","lines","l","largestLineNumber","largest","unifiedDiff","foldUnchanged","near","d","context","rows","open","m","KAESO_DIFF_VIEW_VARIANTS","KAESO_DIFF_VIEW_DEFAULT_VARIANTS","NONE_OPEN","LINE","WORD","MARK","segments","source","text","start","pos","inside","changes","s","e","next","cut","dropChars","left","n","parts","p","Code","groups","part","spans","group","kind","g","numberWidth","digits","count","DiffView","t","useMemo","stats","setTokens","useState","alive","lang","o","current","setOpen","opened","scroller","useRef","unchanged","lineNumbers","lineTokens","surface","className","title","copy","wrap","row","UnfoldMoreIcon","mark","indent","INDENT"],"sources":["../../src/components/code-block/diff.ts","../../src/components/code-block/diff-view.tsx"],"sourcesContent":["export type DiffKind = \"same\" | \"removed\" | \"added\";\n\nexport interface DiffLine {\n kind: DiffKind;\n text: string;\n oldNumber?: number | undefined;\n newNumber?: number | undefined;\n changes?: [number, number][] | undefined;\n}\n\nexport interface DiffStats {\n added: number;\n removed: number;\n}\n\n// Past this many cells the quadratic table costs more memory than a readable diff is worth.\nconst MAX_CELLS = 4_000_000;\nconst MAX_WORD_TOKENS = 400;\nconst WORD = /\\w+|\\s+|[^\\w\\s]/g;\n\nfunction lcsPairs<T>(a: readonly T[], b: readonly T[]): [number, number][] | null {\n if (a.length * b.length > MAX_CELLS) return null;\n const width = b.length + 1;\n const table = new Uint32Array((a.length + 1) * width);\n for (let i = a.length - 1; i >= 0; i--)\n for (let j = b.length - 1; j >= 0; j--)\n table[i * width + j] =\n a[i] === b[j] ? (table[(i + 1) * width + j + 1] ?? 0) + 1 : Math.max(table[(i + 1) * width + j] ?? 0, table[i * width + j + 1] ?? 0);\n const pairs: [number, number][] = [];\n let i = 0;\n let j = 0;\n while (i < a.length && j < b.length) {\n if (a[i] === b[j]) {\n pairs.push([i, j]);\n i++;\n j++;\n } else if ((table[(i + 1) * width + j] ?? 0) >= (table[i * width + j + 1] ?? 0)) i++;\n else j++;\n }\n return pairs;\n}\n\nfunction wordChanges(before: string, after: string): [[number, number][], [number, number][]] | null {\n const a = before.match(WORD) ?? [];\n const b = after.match(WORD) ?? [];\n if (a.length > MAX_WORD_TOKENS || b.length > MAX_WORD_TOKENS) return null;\n const pairs = lcsPairs(a, b) ?? [];\n const keptText = pairs.map(([i]) => a[i] ?? \"\").join(\"\");\n const longest = Math.max(before.replace(/\\s/g, \"\").length, after.replace(/\\s/g, \"\").length);\n if (longest === 0 || (!/\\w/.test(keptText) && keptText.replace(/\\s/g, \"\").length / longest < 0.4)) return null;\n const ranges = (tokens: string[], keptAt: Set<number>) => {\n const line = tokens.join(\"\");\n const out: [number, number][] = [];\n let at = 0;\n tokens.forEach((token, k) => {\n const end = at + token.length;\n if (!keptAt.has(k) && token.trim()) {\n const last = out[out.length - 1];\n if (last && !line.slice(last[1], at).trim()) last[1] = end;\n else out.push([at, end]);\n }\n at = end;\n });\n return out;\n };\n return [ranges(a, new Set(pairs.map(([i]) => i))), ranges(b, new Set(pairs.map(([, j]) => j)))];\n}\n\nfunction markWords(removed: DiffLine[], added: DiffLine[]) {\n const n = Math.min(removed.length, added.length);\n for (let k = 0; k < n; k++) {\n const r = removed[k] as DiffLine;\n const a = added[k] as DiffLine;\n const words = wordChanges(r.text, a.text);\n if (!words) continue;\n r.changes = words[0];\n a.changes = words[1];\n }\n}\n\nexport function diffLines(before: string, after: string): DiffLine[] {\n const a = before === \"\" ? [] : before.replace(/\\n$/, \"\").split(\"\\n\");\n const b = after === \"\" ? [] : after.replace(/\\n$/, \"\").split(\"\\n\");\n let head = 0;\n while (head < a.length && head < b.length && a[head] === b[head]) head++;\n let tail = 0;\n while (tail < a.length - head && tail < b.length - head && a[a.length - 1 - tail] === b[b.length - 1 - tail]) tail++;\n const midA = a.slice(head, a.length - tail);\n const midB = b.slice(head, b.length - tail);\n const pairs = (lcsPairs(midA, midB) ?? []).map(([i, j]): [number, number] => [i + head, j + head]);\n const anchors: [number, number][] = [\n ...Array.from({ length: head }, (_, k): [number, number] => [k, k]),\n ...pairs,\n ...Array.from({ length: tail }, (_, k): [number, number] => [a.length - tail + k, b.length - tail + k]),\n [a.length, b.length],\n ];\n const out: DiffLine[] = [];\n let i = 0;\n let j = 0;\n for (const [ai, bj] of anchors) {\n const removed = a.slice(i, ai).map((text, k): DiffLine => ({ kind: \"removed\", text, oldNumber: i + k + 1 }));\n const added = b.slice(j, bj).map((text, k): DiffLine => ({ kind: \"added\", text, newNumber: j + k + 1 }));\n markWords(removed, added);\n out.push(...removed, ...added);\n if (ai < a.length) out.push({ kind: \"same\", text: a[ai] as string, oldNumber: ai + 1, newNumber: bj + 1 });\n i = ai + 1;\n j = bj + 1;\n }\n return out;\n}\n\nexport function diffStats(lines: readonly DiffLine[]): DiffStats {\n return {\n added: lines.filter((l) => l.kind === \"added\").length,\n removed: lines.filter((l) => l.kind === \"removed\").length,\n };\n}\n\nexport function largestLineNumber(lines: readonly DiffLine[]): number {\n let largest = 1;\n for (const l of lines) largest = Math.max(largest, l.oldNumber ?? 0, l.newNumber ?? 0);\n return largest;\n}\n\nexport function unifiedDiff(lines: readonly DiffLine[]): string {\n return lines.map((l) => `${l.kind === \"added\" ? \"+\" : l.kind === \"removed\" ? \"-\" : \" \"} ${l.text}`).join(\"\\n\");\n}\n\nexport type DiffRow = { type: \"line\"; line: DiffLine; index: number } | { type: \"fold\"; from: number; to: number };\n\nexport function foldUnchanged(lines: readonly DiffLine[], context: number, open: ReadonlySet<number>): DiffRow[] {\n const near = Array.from({ length: lines.length }, () => false);\n lines.forEach((l, k) => {\n if (l.kind === \"same\") return;\n for (let d = Math.max(0, k - context); d <= Math.min(lines.length - 1, k + context); d++) near[d] = true;\n });\n const rows: DiffRow[] = [];\n let k = 0;\n while (k < lines.length) {\n if (near[k] || lines[k]?.kind !== \"same\") {\n rows.push({ type: \"line\", line: lines[k] as DiffLine, index: k });\n k++;\n continue;\n }\n let end = k;\n while (end < lines.length && !near[end]) end++;\n if (end - k < 2 || open.has(k)) for (let m = k; m < end; m++) rows.push({ type: \"line\", line: lines[m] as DiffLine, index: m });\n else rows.push({ type: \"fold\", from: k, to: end });\n k = end;\n }\n return rows;\n}\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { UnfoldMoreIcon as __icon_UnfoldMoreIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useScrollFadeX } from \"../../hooks/use-scroll-fade.js\";\nimport { highlight, type CodeLang, type CodeToken } from \"./highlighter.js\";\nimport { INDENT } from \"./indent.js\";\nimport { diffLines, diffStats, foldUnchanged, largestLineNumber, unifiedDiff, type DiffKind, type DiffLine } from \"./diff.js\";\n\nexport const KAESO_DIFF_VIEW_VARIANTS = {\n surface: {\n well: { classes: \"rounded-well bg-fill-1\" },\n plain: { classes: \"bg-transparent\" },\n },\n} as const;\nexport const KAESO_DIFF_VIEW_DEFAULT_VARIANTS = { surface: \"well\" } as const;\n\nconst NONE_OPEN: ReadonlySet<number> = new Set();\nconst LINE: Record<DiffKind, string> = { same: \"\", removed: \"bg-diff-removed\", added: \"bg-diff-added\" };\nconst WORD: Record<DiffKind, string> = { same: \"\", removed: \"bg-diff-removed-word\", added: \"bg-diff-added-word\" };\nconst MARK: Record<DiffKind, { sign: string; className: string }> = {\n same: { sign: \" \", className: \"\" },\n removed: { sign: \"−\", className: \"text-danger-text\" },\n added: { sign: \"+\", className: \"text-success-text\" },\n};\n\nexport interface DiffViewProps {\n before: string;\n after: string;\n lang?: CodeLang | undefined;\n title?: ReactNode | undefined;\n context?: number | undefined;\n lineNumbers?: boolean | undefined;\n surface?: keyof typeof KAESO_DIFF_VIEW_VARIANTS.surface | undefined;\n copy?: boolean | undefined;\n wrap?: boolean | undefined;\n className?: string | undefined;\n}\n\ninterface Segment {\n text: string;\n className: string;\n changed: boolean;\n}\n\nfunction segments(text: string, tokens: CodeToken[] | undefined, changes: readonly [number, number][] = []): Segment[] {\n const source = tokens?.length ? tokens : [{ content: text, className: \"\" }];\n const out: Segment[] = [];\n let at = 0;\n for (const token of source) {\n let start = 0;\n while (start < token.content.length) {\n const pos = at + start;\n const inside = changes.find(([s, e]) => pos >= s && pos < e);\n const next = inside ? inside[1] : Math.min(Infinity, ...changes.map(([s]) => s).filter((s) => s > pos));\n const cut = Math.min(token.content.length, next - at);\n out.push({ text: token.content.slice(start, cut), className: token.className, changed: !!inside });\n start = cut;\n }\n at += token.content.length;\n }\n return out;\n}\n\nfunction dropChars(parts: Segment[], n: number): Segment[] {\n let left = n;\n return parts.flatMap((p) => {\n if (left === 0) return [p];\n const cut = Math.min(left, p.text.length);\n left -= cut;\n return cut === p.text.length ? [] : [{ ...p, text: p.text.slice(cut) }];\n });\n}\n\nfunction Code({ parts, kind }: { parts: Segment[]; kind: DiffKind }) {\n const groups: Segment[][] = [];\n for (const part of parts) {\n const last = groups[groups.length - 1];\n if (last && last[0]?.changed === part.changed) last.push(part);\n else groups.push([part]);\n }\n return (\n <>\n {groups.map((group, g) => {\n const spans = group.map((p, k) => (\n <span key={k} className={(group[0]?.changed ? p.className.replace(/text-fg-(tertiary|secondary)/, \"text-fg\") : p.className) || undefined}>\n {p.text}\n </span>\n ));\n return group[0]?.changed ? (\n <span key={g} data-diff-change=\"\" className={cn(\"rounded-cell\", WORD[kind])}>\n {spans}\n </span>\n ) : (\n spans\n );\n })}\n </>\n );\n}\n\nfunction numberWidth(count: number): string {\n const digits = String(count).length;\n return digits <= 2 ? \"w-16\" : digits === 3 ? \"w-24\" : digits === 4 ? \"w-32\" : \"w-40\";\n}\n\nexport const DiffView = /* @__PURE__ */ forwardRef<HTMLDivElement, DiffViewProps>(function DiffView(\n { before, after, lang = \"text\", title, context = 3, lineNumbers, surface = \"well\", copy = true, wrap = false, className },\n ref,\n) {\n const t = useUiText();\n const lines = useMemo(() => diffLines(before, after), [before, after]);\n const stats = useMemo(() => diffStats(lines), [lines]);\n const [tokens, setTokens] = useState<{ before: string; after: string; lang: CodeLang; old: CodeToken[][] | null; new: CodeToken[][] | null } | null>(null);\n useEffect(() => {\n let alive = true;\n Promise.all([highlight(before.replace(/\\n$/, \"\"), lang), highlight(after.replace(/\\n$/, \"\"), lang)])\n .then(([o, n]) => alive && setTokens({ before, after, lang, old: o, new: n }))\n .catch(() => undefined);\n return () => {\n alive = false;\n };\n }, [before, after, lang]);\n const current = tokens && tokens.before === before && tokens.after === after && tokens.lang === lang ? tokens : null;\n const [open, setOpen] = useState<{ lines: DiffLine[]; at: ReadonlySet<number> }>({ lines, at: new Set() });\n const opened = open.lines === lines ? open.at : NONE_OPEN;\n const rows = useMemo(() => foldUnchanged(lines, context, opened), [lines, context, opened]);\n const scroller = useRef<HTMLDivElement | null>(null);\n useScrollFadeX(scroller, \"code\");\n const unchanged = stats.added === 0 && stats.removed === 0;\n const width = lineNumbers ? numberWidth(largestLineNumber(lines)) : \"\";\n\n const lineTokens = (line: DiffLine) => (line.kind === \"added\" ? current?.new?.[(line.newNumber ?? 0) - 1] : current?.old?.[(line.oldNumber ?? 0) - 1]);\n\n return (\n <div ref={ref} className={cn(\"relative min-w-0\", KAESO_DIFF_VIEW_VARIANTS.surface[surface].classes, className)}>\n <div className=\"flex h-44 items-center gap-4 px-8 hairline-b\">\n {title && <span className=\"min-w-0 truncate px-8 mono text-small text-fg-secondary\">{title}</span>}\n <span className=\"ml-auto flex shrink-0 items-center gap-8 px-8 mono text-small tabular\">\n {unchanged ? (\n <span className=\"text-fg-secondary\">{t(\"diffView.noChanges\", \"No changes\")}</span>\n ) : (\n <>\n {stats.added > 0 && (\n <span aria-hidden=\"true\" className=\"text-success-text\">\n +{stats.added}\n </span>\n )}\n {stats.removed > 0 && (\n <span aria-hidden=\"true\" className=\"text-danger-text\">\n −{stats.removed}\n </span>\n )}\n <span className=\"sr-only\">\n {t(\"diffView.summary\", \"{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# removed} other {# removed}}\", {\n added: stats.added,\n removed: stats.removed,\n })}\n </span>\n </>\n )}\n </span>\n {copy && <CopyButton value={unifiedDiff(lines)} label={t(\"diffView.copy\", \"Copy diff\")} />}\n </div>\n <div\n ref={scroller}\n tabIndex={0}\n role=\"region\"\n aria-label={typeof title === \"string\" ? title : t(\"diffView.label\", \"Changes\")}\n className=\"relative overflow-x-auto py-8 scrollbar-quiet scroll-fade-x focus-ring-inset\"\n >\n <pre className=\"mono text-small text-fg\">\n <code className={cn(\"grid\", !wrap && \"min-w-max\")}>\n {rows.map((row) => {\n if (row.type === \"fold\") {\n const count = row.to - row.from;\n return (\n <button\n key={`fold-${row.from}`}\n type=\"button\"\n onClick={() => {\n scroller.current?.focus({ preventScroll: true });\n setOpen({ lines, at: new Set([...opened, row.from]) });\n }}\n className=\"flex h-32 cursor-pointer items-center bg-fill-2 font-sans text-small text-fg-secondary transition-control hover:text-fg focus-ring-inset\"\n >\n <span className=\"sticky left-0 flex items-center gap-8 px-16\">\n <Icon icon={__icon_UnfoldMoreIcon} size=\"xs\" />\n {t(\"diffView.showUnchanged\", \"{count, plural, one {Show # unchanged line} other {Show # unchanged lines}}\", { count })}\n </span>\n </button>\n );\n }\n const { line } = row;\n const mark = MARK[line.kind];\n const indent = wrap ? (INDENT.exec(line.text)?.[0] ?? \"\") : \"\";\n const parts = dropChars(segments(line.text, lineTokens(line), line.changes), indent.length);\n return (\n <span key={row.index} data-diff={line.kind} className={cn(\"flex leading-code\", LINE[line.kind])}>\n {lineNumbers && (\n <>\n <span aria-hidden=\"true\" className={cn(\"ml-8 shrink-0 text-right text-fg-tertiary select-none tabular\", width)}>\n {line.oldNumber && line.kind !== \"added\" ? line.oldNumber : \"\"}\n </span>\n <span aria-hidden=\"true\" className={cn(\"ml-8 shrink-0 text-right text-fg-tertiary select-none tabular\", width)}>\n {line.newNumber && line.kind !== \"removed\" ? line.newNumber : \"\"}\n </span>\n </>\n )}\n <span aria-hidden=\"true\" className={cn(\"w-32 shrink-0 text-center select-none\", mark.className)}>\n {mark.sign}\n </span>\n {line.kind !== \"same\" && (\n <span className=\"sr-only\">{line.kind === \"added\" ? t(\"diffView.added\", \"Added\") : t(\"diffView.removed\", \"Removed\")} </span>\n )}\n {indent && <span className=\"shrink-0 whitespace-pre\">{indent}</span>}\n <span className={cn(\"min-w-0 pr-16\", wrap && \"pl-16 -indent-16 whitespace-pre-wrap wrap-anywhere\")}>\n {parts.length ? <Code parts={parts} kind={line.kind} /> : \" \"}\n </span>\n </span>\n );\n })}\n </code>\n </pre>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DiffView.displayName = \"DiffView\";\n"],"mappings":"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"}