@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.
- package/NOTICE.md +1 -1
- package/ai/component-guides.md +312 -21
- package/ai/component-registry.json +616 -25
- package/ai/component-registry.md +154 -26
- package/ai/icons.md +4 -4
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +15 -14
- package/dist/blocks/delete-resource.js.map +1 -1
- package/dist/blocks/pages.js +2 -2
- package/dist/blocks/resource-list.js +41 -40
- package/dist/blocks/resource-list.js.map +1 -1
- package/dist/chunks/agent-avatar-0pdBTWkR.js +171 -0
- package/dist/chunks/agent-avatar-0pdBTWkR.js.map +1 -0
- package/dist/chunks/{app-frame-C8csevkL.js → app-frame-DogGRmsu.js} +22 -21
- package/dist/chunks/app-frame-DogGRmsu.js.map +1 -0
- package/dist/chunks/{banner-Cb8OWnqJ.js → banner-BA2ALw9M.js} +2 -2
- package/dist/chunks/{banner-Cb8OWnqJ.js.map → banner-BA2ALw9M.js.map} +1 -1
- package/dist/chunks/{button-Dzu7_csE.js → button-CzuxqawA.js} +3 -3
- package/dist/chunks/{button-Dzu7_csE.js.map → button-CzuxqawA.js.map} +1 -1
- package/dist/chunks/{calendar--YemJsv4.js → calendar-BWaf2MXc.js} +57 -41
- package/dist/chunks/calendar-BWaf2MXc.js.map +1 -0
- package/dist/chunks/{checkbox-CDfC6E-M.js → checkbox-CQjwCPkc.js} +11 -9
- package/dist/chunks/checkbox-CQjwCPkc.js.map +1 -0
- package/dist/chunks/{code-block-U5fCqwgC.js → code-block-BZIe_B9l.js} +41 -37
- package/dist/chunks/code-block-BZIe_B9l.js.map +1 -0
- package/dist/chunks/code-block-DdNPHEzI.js +344 -0
- package/dist/chunks/code-block-DdNPHEzI.js.map +1 -0
- package/dist/chunks/combobox-DjDI7SUC.js +319 -0
- package/dist/chunks/combobox-DjDI7SUC.js.map +1 -0
- package/dist/chunks/{command-list-0RR4DpUe.js → command-list-C2Y7V_lt.js} +2 -2
- package/dist/chunks/{command-list-0RR4DpUe.js.map → command-list-C2Y7V_lt.js.map} +1 -1
- package/dist/chunks/{copy-button-7-irieJw.js → copy-button-FJvPJn72.js} +3 -3
- package/dist/chunks/{copy-button-7-irieJw.js.map → copy-button-FJvPJn72.js.map} +1 -1
- package/dist/chunks/{core-Bl9NrBLS.js → core-BYns5ytV.js} +145 -139
- package/dist/chunks/core-BYns5ytV.js.map +1 -0
- package/dist/chunks/{date-popup-RQkqhko4.js → date-popup-CPA_zt6o.js} +4 -4
- package/dist/chunks/{date-popup-RQkqhko4.js.map → date-popup-CPA_zt6o.js.map} +1 -1
- package/dist/chunks/{de-BnNQtBSV.js → de-D_0mmG-k.js} +10 -1
- package/dist/chunks/de-D_0mmG-k.js.map +1 -0
- package/dist/chunks/dialog-Cg9A_6SF.js +383 -0
- package/dist/chunks/dialog-Cg9A_6SF.js.map +1 -0
- package/dist/chunks/icon-CPJWE2N-.js +95 -0
- package/dist/chunks/icon-CPJWE2N-.js.map +1 -0
- package/dist/chunks/{icon-button-CPYR21Sz.js → icon-button-CrdF_eMG.js} +3 -3
- package/dist/chunks/{icon-button-CPYR21Sz.js.map → icon-button-CrdF_eMG.js.map} +1 -1
- package/dist/chunks/{identity-DPuTkMsa.js → identity-BmhQ6BQ-.js} +15 -15
- package/dist/chunks/identity-BmhQ6BQ-.js.map +1 -0
- package/dist/chunks/{input-TyLIaQ5k.js → input-2VJuj_M4.js} +10 -5
- package/dist/chunks/input-2VJuj_M4.js.map +1 -0
- package/dist/chunks/{input-group-CUSNsQjQ.js → input-group-DQ_4DoXg.js} +2 -2
- package/dist/chunks/{input-group-CUSNsQjQ.js.map → input-group-DQ_4DoXg.js.map} +1 -1
- package/dist/chunks/{inset-BnBj8NJV.js → inset-BUzyXLK4.js} +14 -4
- package/dist/chunks/inset-BUzyXLK4.js.map +1 -0
- package/dist/chunks/{iso-field-CWbxlll-.js → iso-field-B2rTwiBo.js} +2 -2
- package/dist/chunks/{iso-field-CWbxlll-.js.map → iso-field-B2rTwiBo.js.map} +1 -1
- package/dist/chunks/{link-B2I55xg9.js → link-KWI7PevW.js} +2 -2
- package/dist/chunks/{link-B2I55xg9.js.map → link-KWI7PevW.js.map} +1 -1
- package/dist/chunks/link-provider-cvl8lSTT.js +29 -0
- package/dist/chunks/link-provider-cvl8lSTT.js.map +1 -0
- package/dist/chunks/{list-CkOozrVY.js → list-M1csq-d4.js} +18 -16
- package/dist/chunks/{list-CkOozrVY.js.map → list-M1csq-d4.js.map} +1 -1
- package/dist/chunks/{markdown-BEgwZFlu.js → markdown-BupwFOae.js} +5 -5
- package/dist/chunks/{markdown-BEgwZFlu.js.map → markdown-BupwFOae.js.map} +1 -1
- package/dist/chunks/{menu-fl_QQb38.js → menu-DEmBfdPm.js} +29 -26
- package/dist/chunks/menu-DEmBfdPm.js.map +1 -0
- package/dist/chunks/nav-sheet-CzgIwgAm.js +60 -0
- package/dist/chunks/nav-sheet-CzgIwgAm.js.map +1 -0
- package/dist/chunks/{page-header-DjUMDG69.js → page-header-DL2y2iZp.js} +2 -2
- package/dist/chunks/{page-header-DjUMDG69.js.map → page-header-DL2y2iZp.js.map} +1 -1
- package/dist/chunks/{pagination-BaY8jdli.js → pagination-Cn_qF4cg.js} +3 -3
- package/dist/chunks/{pagination-BaY8jdli.js.map → pagination-Cn_qF4cg.js.map} +1 -1
- package/dist/chunks/{picker-popover-DShea4b8.js → picker-popover-BxyU1U9F.js} +14 -13
- package/dist/chunks/{picker-popover-DShea4b8.js.map → picker-popover-BxyU1U9F.js.map} +1 -1
- package/dist/chunks/{popover-CFMwaeIP.js → popover-DNN4S47w.js} +2 -2
- package/dist/chunks/{popover-CFMwaeIP.js.map → popover-DNN4S47w.js.map} +1 -1
- package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -1
- package/dist/chunks/{radio-Yl0nO-Sj.js → radio-CDDFpdtL.js} +4 -4
- package/dist/chunks/{radio-Yl0nO-Sj.js.map → radio-CDDFpdtL.js.map} +1 -1
- package/dist/chunks/{range-popup-CkhsK3wI.js → range-popup-CRyWYUB1.js} +5 -5
- package/dist/chunks/{range-popup-CkhsK3wI.js.map → range-popup-CRyWYUB1.js.map} +1 -1
- package/dist/chunks/{rights-BlQx9C_j.js → rights-Cyp0Pzp-.js} +5 -5
- package/dist/chunks/{rights-BlQx9C_j.js.map → rights-Cyp0Pzp-.js.map} +1 -1
- package/dist/chunks/{segmented-C97zvDR1.js → segmented-CErcoxwi.js} +2 -2
- package/dist/chunks/{segmented-C97zvDR1.js.map → segmented-CErcoxwi.js.map} +1 -1
- package/dist/chunks/{sidebar-DtFlejU7.js → sidebar-3r1ZRXlN.js} +253 -235
- package/dist/chunks/sidebar-3r1ZRXlN.js.map +1 -0
- package/dist/chunks/{sidebar-menu-CxQbGwyj.js → sidebar-menu-BN3jkTlK.js} +2 -2
- package/dist/chunks/{sidebar-menu-CxQbGwyj.js.map → sidebar-menu-BN3jkTlK.js.map} +1 -1
- package/dist/chunks/{switch-b-VkStWj.js → switch-BNMq_kGt.js} +2 -2
- package/dist/chunks/{switch-b-VkStWj.js.map → switch-BNMq_kGt.js.map} +1 -1
- package/dist/chunks/{tag-DNdX1XRR.js → tag-D_M1s2qS.js} +2 -2
- package/dist/chunks/{tag-DNdX1XRR.js.map → tag-D_M1s2qS.js.map} +1 -1
- package/dist/chunks/{text-DCGGNqTM.js → text-CIXH8rmT.js} +2 -2
- package/dist/chunks/{text-DCGGNqTM.js.map → text-CIXH8rmT.js.map} +1 -1
- package/dist/chunks/{textarea-CT2S2JVM.js → textarea--4FRL3Pb.js} +3 -3
- package/dist/chunks/{textarea-CT2S2JVM.js.map → textarea--4FRL3Pb.js.map} +1 -1
- package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -1
- package/dist/chunks/{timeseries-B-8OfeZm.js → timeseries-D1xjRXfk.js} +2 -2
- package/dist/chunks/{timeseries-B-8OfeZm.js.map → timeseries-D1xjRXfk.js.map} +1 -1
- package/dist/chunks/{toolbar-DL6zVrzU.js → toolbar-WA_oZgu-.js} +5 -4
- package/dist/chunks/{toolbar-DL6zVrzU.js.map → toolbar-WA_oZgu-.js.map} +1 -1
- package/dist/chunks/tooltip-OcwO0VUT.js +154 -0
- package/dist/chunks/tooltip-OcwO0VUT.js.map +1 -0
- package/dist/chunks/{tooltip-root-BeAMXzxU.js → tooltip-root-DzahJDVj.js} +2 -2
- package/dist/chunks/{tooltip-root-BeAMXzxU.js.map → tooltip-root-DzahJDVj.js.map} +1 -1
- package/dist/chunks/{use-scroll-margin-DfdTc_5D.js → use-scroll-margin-atRtf0v_.js} +14 -10
- package/dist/chunks/use-scroll-margin-atRtf0v_.js.map +1 -0
- package/dist/chunks/{virtual-rows-yAMjeAwj.js → virtual-rows-CC_kc2PR.js} +2 -2
- package/dist/chunks/{virtual-rows-yAMjeAwj.js.map → virtual-rows-CC_kc2PR.js.map} +1 -1
- package/dist/chunks/{zh-CN-CKffAT7j.js → zh-CN-Bm6UPIbW.js} +10 -1
- package/dist/chunks/zh-CN-Bm6UPIbW.js.map +1 -0
- package/dist/components/agent-avatar.js +2 -0
- package/dist/components/app-frame.js +2 -2
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +1 -1
- package/dist/components/charts/donut.js +1 -1
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/sankey.js +1 -1
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +3 -2
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +85 -81
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +191 -187
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +6 -4
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +125 -91
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +49 -46
- package/dist/components/display-options.js.map +1 -1
- package/dist/components/filter-chip.js +3 -3
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +49 -49
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +3 -3
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +8 -8
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +263 -95
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/key-value.js +2 -2
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +2 -2
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +27 -26
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +12 -11
- package/dist/components/popover.js.map +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/settings.js +8 -8
- package/dist/components/settings.js.map +1 -1
- package/dist/components/sheet.js +2 -2
- package/dist/components/sidebar.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tabs.js +22 -22
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-menu.js +33 -30
- package/dist/components/theme-menu.js.map +1 -1
- package/dist/components/thumbnail.js +41 -0
- package/dist/components/thumbnail.js.map +1 -0
- package/dist/components/toast.js +96 -87
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toolbar.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/format.js.map +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +90 -88
- package/dist/kaeso.css +3 -0
- package/dist/styles.css +1 -1
- package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -5
- package/dist/types/blocks/resource-list/resource-list.d.ts +1 -4
- package/dist/types/component-docs.d.ts +1 -1
- package/dist/types/components/agent-avatar/agent-avatar.d.ts +94 -0
- package/dist/types/components/agent-avatar/docs.d.ts +19 -0
- package/dist/types/components/agent-avatar/index.d.ts +3 -0
- package/dist/types/components/agent-avatar/model-name.d.ts +9 -0
- package/dist/types/components/agent-avatar/models.d.ts +4 -0
- package/dist/types/components/app-frame/app-frame.d.ts +3 -8
- package/dist/types/components/app-frame/nav-sheet.d.ts +2 -4
- package/dist/types/components/calendar/calendar.d.ts +1 -4
- package/dist/types/components/charts/core.d.ts +11 -18
- package/dist/types/components/checkbox/checkbox.d.ts +2 -0
- package/dist/types/components/code-block/diff-view.d.ts +30 -0
- package/dist/types/components/code-block/diff.d.ts +26 -0
- package/dist/types/components/code-block/docs.d.ts +14 -0
- package/dist/types/components/code-block/index.d.ts +1 -0
- package/dist/types/components/combobox/combobox.d.ts +26 -2
- package/dist/types/components/command-list/picker-popover.d.ts +1 -4
- package/dist/types/components/command-palette/command-palette.d.ts +1 -4
- package/dist/types/components/data-table/data-table.d.ts +2 -1
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +7 -9
- package/dist/types/components/dialog/docs.d.ts +2 -0
- package/dist/types/components/dialog/scope.d.ts +2 -0
- package/dist/types/components/dialog/step-dialog.d.ts +38 -5
- package/dist/types/components/display-options/display-options.d.ts +2 -5
- package/dist/types/components/input/input.d.ts +23 -0
- package/dist/types/components/kaeso/client-button.d.ts +17 -0
- package/dist/types/components/kaeso/docs.d.ts +18 -0
- package/dist/types/components/kaeso/grant-summary.d.ts +12 -0
- package/dist/types/components/kaeso/identity.d.ts +2 -0
- package/dist/types/components/kaeso/index.d.ts +2 -0
- package/dist/types/components/kaeso/provider-picker.d.ts +5 -0
- package/dist/types/components/kaeso/usage.d.ts +2 -0
- package/dist/types/components/list/list.d.ts +4 -8
- package/dist/types/components/menu/docs.d.ts +8 -1
- package/dist/types/components/menu/menu.d.ts +19 -31
- package/dist/types/components/playground/parameter-panel.d.ts +1 -4
- package/dist/types/components/popover/hover-card.d.ts +2 -0
- package/dist/types/components/radio/docs.d.ts +15 -0
- package/dist/types/components/radio/radio.d.ts +2 -4
- package/dist/types/components/settings/settings.d.ts +2 -0
- package/dist/types/components/sidebar/sidebar.d.ts +13 -35
- package/dist/types/components/tabs/tabs.d.ts +15 -0
- package/dist/types/components/theme-menu/docs.d.ts +2 -0
- package/dist/types/components/theme-menu/theme-menu.d.ts +6 -5
- package/dist/types/components/thumbnail/docs.d.ts +10 -0
- package/dist/types/components/thumbnail/index.d.ts +1 -0
- package/dist/types/components/thumbnail/thumbnail.d.ts +26 -0
- package/dist/types/components/toast/toast.d.ts +5 -12
- package/dist/types/components/toolbar/toolbar.d.ts +1 -6
- package/dist/types/components/tooltip/tooltip.d.ts +2 -4
- package/dist/types/components/tooltip/trigger-props.d.ts +0 -1
- package/dist/types/format/index.d.ts +5 -5
- package/dist/types/hooks/use-scroll-margin.d.ts +1 -1
- package/dist/types/icons/groups.d.ts +3 -3
- package/dist/types/icons/vocabulary.d.ts +20 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/utils/inset.d.ts +4 -0
- package/dist/types/utils/link-provider.d.ts +1 -1
- package/dist/types/utils/merge-refs.d.ts +3 -0
- package/dist/types/utils/portal-context.d.ts +1 -1
- package/dist/utils.js +3 -3
- package/foundations/shape.md +1 -1
- package/package.json +2 -2
- package/dist/chunks/app-frame-C8csevkL.js.map +0 -1
- package/dist/chunks/calendar--YemJsv4.js.map +0 -1
- package/dist/chunks/checkbox-CDfC6E-M.js.map +0 -1
- package/dist/chunks/code-block-U5fCqwgC.js.map +0 -1
- package/dist/chunks/combobox-BARyrpXH.js +0 -314
- package/dist/chunks/combobox-BARyrpXH.js.map +0 -1
- package/dist/chunks/core-Bl9NrBLS.js.map +0 -1
- package/dist/chunks/de-BnNQtBSV.js.map +0 -1
- package/dist/chunks/dialog-DQ9vZ7vr.js +0 -353
- package/dist/chunks/dialog-DQ9vZ7vr.js.map +0 -1
- package/dist/chunks/icon-CBzvyEqC.js +0 -91
- package/dist/chunks/icon-CBzvyEqC.js.map +0 -1
- package/dist/chunks/identity-DPuTkMsa.js.map +0 -1
- package/dist/chunks/input-TyLIaQ5k.js.map +0 -1
- package/dist/chunks/inset-BnBj8NJV.js.map +0 -1
- package/dist/chunks/link-provider-BsUxhZKG.js +0 -27
- package/dist/chunks/link-provider-BsUxhZKG.js.map +0 -1
- package/dist/chunks/menu-fl_QQb38.js.map +0 -1
- package/dist/chunks/nav-sheet-B2rNb8GB.js +0 -60
- package/dist/chunks/nav-sheet-B2rNb8GB.js.map +0 -1
- package/dist/chunks/sidebar-DtFlejU7.js.map +0 -1
- package/dist/chunks/tooltip-BMQ9BtPp.js +0 -151
- package/dist/chunks/tooltip-BMQ9BtPp.js.map +0 -1
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +0 -1
- 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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"}
|