@reforma/components 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/Button/Button.module.css +1 -1
  2. package/dist/Composer/RichField.d.ts +6 -2
  3. package/dist/Composer/RichField.d.ts.map +1 -1
  4. package/dist/Composer/RichField.js +107 -37
  5. package/dist/Composer/RichField.js.map +1 -1
  6. package/dist/Composer/context.d.ts +6 -2
  7. package/dist/Composer/context.d.ts.map +1 -1
  8. package/dist/Composer/context.js +158 -130
  9. package/dist/Composer/context.js.map +1 -1
  10. package/dist/Composer/index.d.ts +1 -1
  11. package/dist/Composer/index.d.ts.map +1 -1
  12. package/dist/Composer/parts.d.ts +18 -17
  13. package/dist/Composer/parts.d.ts.map +1 -1
  14. package/dist/Composer/parts.js +283 -187
  15. package/dist/Composer/parts.js.map +1 -1
  16. package/dist/Composer/reforma/Composer.module.css +1 -0
  17. package/dist/Composer/reforma/Composer.module.css.js +60 -0
  18. package/dist/Composer/reforma/Composer.module.css.js.map +1 -0
  19. package/dist/Composer/reforma/index.d.ts +4 -0
  20. package/dist/Composer/reforma/index.d.ts.map +1 -0
  21. package/dist/Composer/reforma/index.js +6 -0
  22. package/dist/Composer/reforma/index.js.map +1 -0
  23. package/dist/Composer/types.d.ts +6 -0
  24. package/dist/Composer/types.d.ts.map +1 -1
  25. package/dist/List/Menu.d.ts.map +1 -1
  26. package/dist/List/Menu.js +98 -84
  27. package/dist/List/Menu.js.map +1 -1
  28. package/dist/chat/Chip/Chip.js +9 -9
  29. package/dist/chat/Chip/Chip.module.css.js +8 -8
  30. package/dist/chat/Chip/helpers/cursorLines.d.ts +1 -0
  31. package/dist/chat/Chip/helpers/cursorLines.d.ts.map +1 -1
  32. package/dist/chat/Chip/helpers/cursorLines.js +27 -21
  33. package/dist/chat/Chip/helpers/cursorLines.js.map +1 -1
  34. package/dist/chat/Chip/index.d.ts +1 -1
  35. package/dist/chat/Chip/index.d.ts.map +1 -1
  36. package/dist/chat/Chip/index.js +9 -8
  37. package/dist/chat/Message/segments/MessagePhaseSection.module.css +1 -1
  38. package/dist/chat/Message/streamdown/options.d.ts +2 -0
  39. package/dist/chat/Message/streamdown/options.d.ts.map +1 -1
  40. package/dist/chat/Message/streamdown/options.js +13 -12
  41. package/dist/chat/Message/streamdown/options.js.map +1 -1
  42. package/dist/chat/Message/turn/MessageUserBubble.d.ts.map +1 -1
  43. package/dist/chat/Message/turn/MessageUserBubble.js +57 -54
  44. package/dist/chat/Message/turn/MessageUserBubble.js.map +1 -1
  45. package/dist/chat/Tool/mountTool.d.ts.map +1 -1
  46. package/dist/chat/Tool/remove-file/RemoveFileTool.d.ts +1 -1
  47. package/dist/chat/Tool/remove-file/RemoveFileTool.d.ts.map +1 -1
  48. package/dist/chat/Tool/remove-file/RemoveFileTool.js +82 -38
  49. package/dist/chat/Tool/remove-file/RemoveFileTool.js.map +1 -1
  50. package/dist/chat/Tool/remove-file/RemoveFileTool.module.css +1 -0
  51. package/dist/chat/Tool/remove-file/RemoveFileTool.module.css.js +8 -0
  52. package/dist/chat/Tool/remove-file/RemoveFileTool.module.css.js.map +1 -0
  53. package/dist/chat/index.js +110 -109
  54. package/dist/index.js +417 -416
  55. package/package.json +3 -1
  56. package/dist/Composer/Composer.module.css +0 -1
  57. package/dist/Composer/Composer.module.css.js +0 -26
  58. package/dist/Composer/Composer.module.css.js.map +0 -1
@@ -0,0 +1,60 @@
1
+ const t = "Composer_root_oK5RXF", o = "Composer_shell_z36OYt", e = "Composer_create-composer-border-spin_Ik8TZ9", a = "Composer_attachments_YHiboy", n = "Composer_main_Y2cZOO", r = "Composer_textarea_ED0vo8", s = "Composer_textareaWrap_20eG8b", c = "Composer_addButton_Gr6lpT", p = "Composer_sendButton_261s9p", m = "Composer_toolbarEnd_zlFlGo", _ = "Composer_plainField_BSucqo", l = "Composer_fileButton_7fa3cD", d = "Composer_planButton_FfQMTx", C = "Composer_attachmentRetry_dE4e9U", i = "Composer_attachmentRemove_UJ8Ypt", h = "Composer_planIcon_speGCQ", u = "Composer_planLabel_QqsYmJ", B = "Composer_create-composer-pending_hGy5Ys", b = "Composer_attachment_ze2E44", y = "Composer_attachmentPreview_st6nef", v = "Composer_attachmentName_zdUej2", f = "Composer_attachmentStatus_duB1GB", x = "Composer_notice_4Qehyf", F = "Composer_editor_L4tPFX", G = "Composer_dropOverlay_GuFoRm", R = "Composer_dropLabel_BgNwlz", L = {
2
+ root: t,
3
+ shell: o,
4
+ "create-composer-border-spin": "Composer_create-composer-border-spin_Ik8TZ9",
5
+ createComposerBorderSpin: e,
6
+ attachments: a,
7
+ main: n,
8
+ textarea: r,
9
+ textareaWrap: s,
10
+ addButton: c,
11
+ sendButton: p,
12
+ toolbarEnd: m,
13
+ plainField: _,
14
+ fileButton: l,
15
+ planButton: d,
16
+ attachmentRetry: C,
17
+ attachmentRemove: i,
18
+ planIcon: h,
19
+ planLabel: u,
20
+ "create-composer-pending": "Composer_create-composer-pending_hGy5Ys",
21
+ createComposerPending: B,
22
+ attachment: b,
23
+ attachmentPreview: y,
24
+ attachmentName: v,
25
+ attachmentStatus: f,
26
+ notice: x,
27
+ editor: F,
28
+ dropOverlay: G,
29
+ dropLabel: R
30
+ };
31
+ export {
32
+ c as addButton,
33
+ b as attachment,
34
+ v as attachmentName,
35
+ y as attachmentPreview,
36
+ i as attachmentRemove,
37
+ C as attachmentRetry,
38
+ f as attachmentStatus,
39
+ a as attachments,
40
+ e as createComposerBorderSpin,
41
+ B as createComposerPending,
42
+ L as default,
43
+ R as dropLabel,
44
+ G as dropOverlay,
45
+ F as editor,
46
+ l as fileButton,
47
+ n as main,
48
+ x as notice,
49
+ _ as plainField,
50
+ d as planButton,
51
+ h as planIcon,
52
+ u as planLabel,
53
+ t as root,
54
+ p as sendButton,
55
+ o as shell,
56
+ r as textarea,
57
+ s as textareaWrap,
58
+ m as toolbarEnd
59
+ };
60
+ //# sourceMappingURL=Composer.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ import type { ComposerClassNames } from '../types';
2
+ /** Optional Reforma skin. The headless Composer entry does not import it. */
3
+ export declare const reformaComposerClassNames: ComposerClassNames;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Composer/reforma/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,EAAE,kBAA2B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import o from "./Composer.module.css.js";
2
+ const r = o;
3
+ export {
4
+ r as reformaComposerClassNames
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/Composer/reforma/index.ts"],"sourcesContent":["import styles from './Composer.module.css';\n\nimport type { ComposerClassNames } from '../types';\n\n/** Optional Reforma skin. The headless Composer entry does not import it. */\nexport const reformaComposerClassNames: ComposerClassNames = styles;\n"],"names":["reformaComposerClassNames","styles"],"mappings":";AAEO,MAAMA,IAA4BC;"}
@@ -33,4 +33,10 @@ export type ComposerUploadErr = {
33
33
  message?: string;
34
34
  };
35
35
  export type ComposerUploadResult = ComposerUploadOk | ComposerUploadErr;
36
+ /** Optional classes for every element rendered by the composer. */
37
+ export type ComposerClassNames = Partial<Record<'root' | 'shell' | 'dropOverlay' | 'dropLabel' | 'notice' | 'main' | 'addButton' | 'toolbarEnd' | 'attachments' | 'attachment' | 'attachmentPreview' | 'attachmentName' | 'attachmentStatus' | 'attachmentRetry' | 'attachmentRemove' | 'fileButton' | 'planButton' | 'planIcon' | 'planLabel' | 'textareaWrap' | 'textarea' | 'plainField' | 'editor' | 'sendButton', string>>;
38
+ export type ComposerNotice = {
39
+ title: string;
40
+ message: string;
41
+ };
36
42
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Composer/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Composer/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAExE,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CACzC,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GACzD,MAAM,GAAG,WAAW,GAAG,YAAY,GACnC,aAAa,GAAG,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,GACrE,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAC3D,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GACtD,cAAc,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,EACtE,MAAM,CACT,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/List/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/List/Menu.tsx"],"names":[],"mappings":"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"}
package/dist/List/Menu.js CHANGED
@@ -1,115 +1,129 @@
1
- import { cn as a, mergeRefs as y } from "@reforma/lib";
2
- import { useRef as g } from "react";
3
- import { Menu as N, Header as v, MenuItem as h, MenuSection as H, Separator as I } from "react-aria-components";
4
- import { MenuTrigger as K, SubmenuTrigger as Q } from "react-aria-components";
5
- import { Tooltip as x } from "../Tooltip/Tooltip.js";
6
- import { resolveOverlayWidth as R } from "../utils/resolveOverlayWidth.js";
7
- import n from "./ListBox.module.css.js";
8
- import { renderListRowItemContent as L } from "./listRowItemContent.js";
9
- import { useListHoverHighlight as T } from "./useListHoverHighlight.js";
10
- import { useScrollActiveListItem as $ } from "./useScrollActiveListItem.js";
1
+ import { cn as a, mergeRefs as T } from "@reforma/lib";
2
+ import { useRef as H, useState as b, useLayoutEffect as x } from "react";
3
+ import { Menu as D, Header as $, MenuItem as w, MenuSection as A, Separator as W } from "react-aria-components";
4
+ import { MenuTrigger as ne, SubmenuTrigger as re } from "react-aria-components";
5
+ import { Tooltip as q } from "../Tooltip/Tooltip.js";
6
+ import { resolveOverlayWidth as z } from "../utils/resolveOverlayWidth.js";
7
+ import r from "./ListBox.module.css.js";
8
+ import { renderListRowItemContent as C } from "./listRowItemContent.js";
9
+ import { useListHoverHighlight as E } from "./useListHoverHighlight.js";
10
+ import { useScrollActiveListItem as F } from "./useScrollActiveListItem.js";
11
11
  import { jsx as o } from "react/jsx-runtime";
12
- function w({
13
- className: e,
14
- size: t = "sm",
12
+ function O({
13
+ className: t,
14
+ size: n = "sm",
15
15
  selectionMode: i = "none",
16
- interactive: r = !0,
17
- style: u,
18
- width: s,
19
- ...m
16
+ interactive: e = !0,
17
+ style: m,
18
+ width: u,
19
+ ...s
20
20
  }) {
21
- const l = g(null);
22
- T(l, r);
23
- const c = R(s), f = c != null || u != null ? {
24
- ...u,
25
- ...c
21
+ const c = H(null);
22
+ E(c, e);
23
+ const l = z(u), d = l != null || m != null ? {
24
+ ...m,
25
+ ...l
26
26
  } : void 0;
27
- return /* @__PURE__ */ o(N, {
28
- className: a(n.list, n.menuList, e),
29
- style: f,
27
+ return /* @__PURE__ */ o(D, {
28
+ className: a(r.list, r.menuList, t),
29
+ style: d,
30
30
  selectionMode: i,
31
- "data-size": t,
32
- "data-interactive": r || void 0,
33
- ...m,
34
- ref: l
31
+ "data-size": n,
32
+ "data-interactive": e || void 0,
33
+ ...s,
34
+ ref: c
35
35
  });
36
36
  }
37
37
  function V({
38
- startAffix: e,
39
- icon: t,
38
+ startAffix: t,
39
+ icon: n,
40
40
  text: i,
41
- description: r,
42
- endAffix: u,
43
- stacked: s,
44
- children: m,
45
- className: l,
46
- isDanger: c,
47
- ref: f,
48
- ...p
41
+ description: e,
42
+ endAffix: m,
43
+ stacked: u,
44
+ children: s,
45
+ className: c,
46
+ isDanger: l,
47
+ ref: d,
48
+ ...M
49
49
  }) {
50
- const M = g(null), d = i || p.textValue || (typeof m == "string" ? m : void 0);
51
- $(M);
52
- const S = /* @__PURE__ */ o(h, {
53
- ref: y(M, f),
54
- className: a(n.item, s && n.itemStacked, c && n.itemDanger, l),
55
- textValue: d,
56
- ...p,
57
- children: L(m, {
58
- icon: t,
59
- description: r,
60
- startAffix: e,
61
- endAffix: u,
62
- stacked: s,
63
- textValue: d
50
+ const p = H(null), S = i || M.textValue || (typeof s == "string" ? s : void 0), [I, L] = b(!1);
51
+ F(p), x(() => {
52
+ if (typeof e != "string" || e.length === 0)
53
+ return;
54
+ const f = p.current?.querySelector(`.${CSS.escape(r.itemDescription)}`);
55
+ if (!(f instanceof HTMLElement))
56
+ return;
57
+ const g = () => {
58
+ const N = f.scrollWidth > f.clientWidth + 1;
59
+ L((h) => h === N ? h : N);
60
+ }, R = requestAnimationFrame(g), v = new ResizeObserver(g);
61
+ return v.observe(f), () => {
62
+ cancelAnimationFrame(R), v.disconnect();
63
+ };
64
+ }, [e]);
65
+ const y = /* @__PURE__ */ o(w, {
66
+ ref: T(p, d),
67
+ className: a(r.item, u && r.itemStacked, l && r.itemDanger, c),
68
+ textValue: S,
69
+ ...M,
70
+ children: C(s, {
71
+ icon: n,
72
+ description: e,
73
+ startAffix: t,
74
+ endAffix: m,
75
+ stacked: u,
76
+ textValue: S
64
77
  })
65
78
  });
66
- return typeof r != "string" || r.length <= 30 ? S : /* @__PURE__ */ o(x, {
67
- content: r,
79
+ return typeof e != "string" || e.length === 0 ? y : /* @__PURE__ */ o(q, {
80
+ content: e,
68
81
  placement: "right",
69
- children: S
82
+ isDisabled: !I,
83
+ children: y
70
84
  });
71
85
  }
72
- function b({
73
- className: e,
74
- ...t
86
+ function j({
87
+ className: t,
88
+ ...n
75
89
  }) {
76
- return /* @__PURE__ */ o(I, {
77
- className: a(n.menuSeparator, e),
78
- ...t
90
+ return /* @__PURE__ */ o(W, {
91
+ className: a(r.menuSeparator, t),
92
+ ...n
79
93
  });
80
94
  }
81
- function j({
82
- className: e,
83
- sticky: t,
95
+ function k({
96
+ className: t,
97
+ sticky: n,
84
98
  ...i
85
99
  }) {
86
- return /* @__PURE__ */ o(v, {
87
- className: a(n.sectionHeader, e),
100
+ return /* @__PURE__ */ o($, {
101
+ className: a(r.sectionHeader, t),
88
102
  ...i,
89
- "data-sticky": t || void 0
103
+ "data-sticky": n || void 0
90
104
  });
91
105
  }
92
- function k({
93
- className: e,
94
- ...t
106
+ function B({
107
+ className: t,
108
+ ...n
95
109
  }) {
96
- return /* @__PURE__ */ o(H, {
97
- className: a(n.section, e),
98
- ...t
110
+ return /* @__PURE__ */ o(A, {
111
+ className: a(r.section, t),
112
+ ...n
99
113
  });
100
114
  }
101
- w.displayName = "Menu";
115
+ O.displayName = "Menu";
102
116
  V.displayName = "MenuItem";
103
- b.displayName = "MenuSeparator";
104
- j.displayName = "MenuHeader";
105
- k.displayName = "MenuSection";
117
+ j.displayName = "MenuSeparator";
118
+ k.displayName = "MenuHeader";
119
+ B.displayName = "MenuSection";
106
120
  export {
107
- w as Menu,
108
- j as MenuHeader,
121
+ O as Menu,
122
+ k as MenuHeader,
109
123
  V as MenuItem,
110
- k as MenuSection,
111
- b as MenuSeparator,
112
- K as MenuTrigger,
113
- Q as SubmenuTrigger
124
+ B as MenuSection,
125
+ j as MenuSeparator,
126
+ ne as MenuTrigger,
127
+ re as SubmenuTrigger
114
128
  };
115
129
  //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../../src/List/Menu.tsx"],"sourcesContent":["import { cn, mergeRefs } from '@reforma/lib';\nimport { useRef } from 'react';\nimport {\n Header as AriaHeader,\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n MenuSection as AriaMenuSection,\n Separator as AriaSeparator,\n MenuTrigger,\n SubmenuTrigger,\n type MenuItemProps as AriaMenuItemProps,\n type MenuProps as AriaMenuProps,\n type MenuSectionProps as AriaMenuSectionProps,\n type SeparatorProps as AriaSeparatorProps,\n} from 'react-aria-components';\n\nimport { Tooltip } from '../Tooltip';\nimport { resolveOverlayWidth, type OverlayWidth } from '../utils/resolveOverlayWidth';\nimport styles from './ListBox.module.css';\nimport { renderListRowItemContent } from './listRowItemContent';\nimport { useListHoverHighlight } from './useListHoverHighlight';\nimport { useScrollActiveListItem } from './useScrollActiveListItem';\n\nimport type { CSSProperties, HTMLAttributes, ReactNode, Ref } from 'react';\n\nexport type {\n Key,\n MenuTriggerProps,\n SubmenuTriggerProps,\n} from 'react-aria-components';\n\nexport {\n MenuTrigger,\n SubmenuTrigger,\n};\n\nexport type MenuSize = 'sm' | 'md' | 'lg';\n\nexport interface MenuProps<T extends object = object> extends Omit<AriaMenuProps<T>, 'className' | 'style'> {\n className?: string;\n size?: MenuSize;\n interactive?: boolean;\n style?: CSSProperties;\n width?: OverlayWidth;\n}\n\nexport interface MenuItemSlots {\n icon?: ReactNode;\n description?: ReactNode;\n startAffix?: ReactNode;\n endAffix?: ReactNode;\n stacked?: boolean;\n}\n\nexport type MenuItemProps<T extends object = object> = Omit<AriaMenuItemProps<T>, 'className'>\n & MenuItemSlots & {\n className?: string;\n text?: string;\n isDanger?: boolean;\n };\n\n/** Command / action list (RAC **Menu**). For picker content in a popover, wrap **`ListBox`** in **`PopoverScroll`**. */\nexport function Menu<T extends object>({\n className,\n size = 'sm',\n selectionMode = 'none',\n interactive = true,\n style: styleProp,\n width,\n ...props\n}: MenuProps<T>) {\n const listRef = useRef<HTMLDivElement>(null);\n\n useListHoverHighlight(listRef, interactive);\n\n const widthStyle = resolveOverlayWidth(width);\n\n const style = (widthStyle != null || styleProp != null)\n ? { ...styleProp, ...widthStyle }\n : undefined;\n\n return (\n <AriaMenu\n className={ cn(styles.list, styles.menuList, className) }\n style={ style }\n selectionMode={ selectionMode }\n data-size={ size }\n data-interactive={ interactive || undefined }\n { ...props }\n ref={ listRef }\n />\n );\n}\n\nexport function MenuItem<T extends object>({\n startAffix,\n icon,\n text,\n description,\n endAffix,\n stacked,\n children,\n className,\n isDanger,\n ref,\n ...props\n}: MenuItemProps<T> & { ref?: Ref<HTMLDivElement> }) {\n const itemRef = useRef<HTMLDivElement>(null);\n const textValue = text || props.textValue || (typeof children === 'string' ? children : undefined);\n\n useScrollActiveListItem(itemRef);\n\n const item = (\n <AriaMenuItem\n ref={ mergeRefs(itemRef, ref) }\n className={ cn(styles.item, stacked && styles.itemStacked, isDanger && styles.itemDanger, className) }\n textValue={ textValue }\n { ...props }\n >\n { renderListRowItemContent(children, {\n icon,\n description,\n startAffix,\n endAffix,\n stacked,\n textValue,\n }) }\n </AriaMenuItem>\n );\n\n if (typeof description !== 'string' || description.length <= 30) {\n return item;\n }\n\n return (\n <Tooltip content={ description } placement=\"right\">\n { item }\n </Tooltip>\n );\n}\n\nexport function MenuSeparator({ className, ...props }: Omit<AriaSeparatorProps, 'className'> & { className?: string }) {\n return <AriaSeparator className={ cn(styles.menuSeparator, className) } { ...props } />;\n}\n\nexport function MenuHeader({ className, sticky, ...props }: HTMLAttributes<HTMLElement> & { sticky?: boolean }) {\n return <AriaHeader className={ cn(styles.sectionHeader, className) } { ...props } data-sticky={ sticky || undefined } />;\n}\n\nexport function MenuSection<T extends object>({ className, ...props }: Omit<AriaMenuSectionProps<T>, 'className'> & { className?: string }) {\n return <AriaMenuSection className={ cn(styles.section, className) } { ...props } />;\n}\n\nMenu.displayName = 'Menu';\nMenuItem.displayName = 'MenuItem';\nMenuSeparator.displayName = 'MenuSeparator';\nMenuHeader.displayName = 'MenuHeader';\nMenuSection.displayName = 'MenuSection';\n"],"names":["Menu","className","size","selectionMode","interactive","styleProp","width","props","listRef","useRef","useListHoverHighlight","widthStyle","resolveOverlayWidth","style","AriaMenu","cn","styles","MenuItem","startAffix","icon","text","description","endAffix","stacked","children","isDanger","ref","itemRef","textValue","useScrollActiveListItem","item","AriaMenuItem","mergeRefs","renderListRowItemContent","Tooltip","MenuSeparator","AriaSeparator","MenuHeader","sticky","AriaHeader","MenuSection","AriaMenuSection"],"mappings":";;;;;;;;;;;AAYO,SAASA,EAAK;AAAA,EACnB,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc;AAAA,EACd,OAAOC;AAAA,EACP,OAAAC;AAAA,EACA,GAAGC;AACL,GAAG;AACD,QAAMC,IAAUC,EAAO,IAAI;AAC3B,EAAAC,EAAsBF,GAASJ,CAAW;AAC1C,QAAMO,IAAaC,EAAoBN,CAAK,GACtCO,IAAQF,KAAc,QAAQN,KAAa,OAAO;AAAA,IACtD,GAAGA;AAAA,IACH,GAAGM;AAAA,EAAA,IACD;AACJ,2BAAyBG,GAAU;AAAA,IACjC,WAAWC,EAAGC,EAAO,MAAMA,EAAO,UAAUf,CAAS;AAAA,IACrD,OAAAY;AAAA,IACA,eAAAV;AAAA,IACA,aAAaD;AAAA,IACb,oBAAoBE,KAAe;AAAA,IACnC,GAAGG;AAAA,IACH,KAAKC;AAAA,EAAA,CACN;AACH;AACO,SAASS,EAAS;AAAA,EACvB,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAvB;AAAA,EACA,UAAAwB;AAAA,EACA,KAAAC;AAAA,EACA,GAAGnB;AACL,GAAG;AACD,QAAMoB,IAAUlB,EAAO,IAAI,GACrBmB,IAAYR,KAAQb,EAAM,cAAc,OAAOiB,KAAa,WAAWA,IAAW;AACxF,EAAAK,EAAwBF,CAAO;AAC/B,QAAMG,sBAAyBC,GAAc;AAAA,IAC3C,KAAKC,EAAUL,GAASD,CAAG;AAAA,IAC3B,WAAWX,EAAGC,EAAO,MAAMO,KAAWP,EAAO,aAAaS,KAAYT,EAAO,YAAYf,CAAS;AAAA,IAClG,WAAA2B;AAAA,IACA,GAAGrB;AAAA,IACH,UAAU0B,EAAyBT,GAAU;AAAA,MAC3C,MAAAL;AAAA,MACA,aAAAE;AAAA,MACA,YAAAH;AAAA,MACA,UAAAI;AAAA,MACA,SAAAC;AAAA,MACA,WAAAK;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AACD,SAAI,OAAOP,KAAgB,YAAYA,EAAY,UAAU,KACpDS,sBAEgBI,GAAS;AAAA,IAChC,SAASb;AAAA,IACT,WAAW;AAAA,IACX,UAAUS;AAAA,EAAA,CACX;AACH;AACO,SAASK,EAAc;AAAA,EAC5B,WAAAlC;AAAA,EACA,GAAGM;AACL,GAAG;AACD,2BAAyB6B,GAAe;AAAA,IACtC,WAAWrB,EAAGC,EAAO,eAAef,CAAS;AAAA,IAC7C,GAAGM;AAAA,EAAA,CACJ;AACH;AACO,SAAS8B,EAAW;AAAA,EACzB,WAAApC;AAAA,EACA,QAAAqC;AAAA,EACA,GAAG/B;AACL,GAAG;AACD,2BAAyBgC,GAAY;AAAA,IACnC,WAAWxB,EAAGC,EAAO,eAAef,CAAS;AAAA,IAC7C,GAAGM;AAAA,IACH,eAAe+B,KAAU;AAAA,EAAA,CAC1B;AACH;AACO,SAASE,EAAY;AAAA,EAC1B,WAAAvC;AAAA,EACA,GAAGM;AACL,GAAG;AACD,2BAAyBkC,GAAiB;AAAA,IACxC,WAAW1B,EAAGC,EAAO,SAASf,CAAS;AAAA,IACvC,GAAGM;AAAA,EAAA,CACJ;AACH;AACAP,EAAK,cAAc;AACnBiB,EAAS,cAAc;AACvBkB,EAAc,cAAc;AAC5BE,EAAW,cAAc;AACzBG,EAAY,cAAc;"}
1
+ {"version":3,"file":"Menu.js","sources":["../../src/List/Menu.tsx"],"sourcesContent":["import { cn, mergeRefs } from '@reforma/lib';\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport {\n Header as AriaHeader,\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n MenuSection as AriaMenuSection,\n Separator as AriaSeparator,\n MenuTrigger,\n SubmenuTrigger,\n type MenuItemProps as AriaMenuItemProps,\n type MenuProps as AriaMenuProps,\n type MenuSectionProps as AriaMenuSectionProps,\n type SeparatorProps as AriaSeparatorProps,\n} from 'react-aria-components';\n\nimport { Tooltip } from '../Tooltip';\nimport { resolveOverlayWidth, type OverlayWidth } from '../utils/resolveOverlayWidth';\nimport styles from './ListBox.module.css';\nimport { renderListRowItemContent } from './listRowItemContent';\nimport { useListHoverHighlight } from './useListHoverHighlight';\nimport { useScrollActiveListItem } from './useScrollActiveListItem';\n\nimport type { CSSProperties, HTMLAttributes, ReactNode, Ref } from 'react';\n\nexport type {\n Key,\n MenuTriggerProps,\n SubmenuTriggerProps,\n} from 'react-aria-components';\n\nexport {\n MenuTrigger,\n SubmenuTrigger,\n};\n\nexport type MenuSize = 'sm' | 'md' | 'lg';\n\nexport interface MenuProps<T extends object = object> extends Omit<AriaMenuProps<T>, 'className' | 'style'> {\n className?: string;\n size?: MenuSize;\n interactive?: boolean;\n style?: CSSProperties;\n width?: OverlayWidth;\n}\n\nexport interface MenuItemSlots {\n icon?: ReactNode;\n description?: ReactNode;\n startAffix?: ReactNode;\n endAffix?: ReactNode;\n stacked?: boolean;\n}\n\nexport type MenuItemProps<T extends object = object> = Omit<AriaMenuItemProps<T>, 'className'>\n & MenuItemSlots & {\n className?: string;\n text?: string;\n isDanger?: boolean;\n };\n\n/** Command / action list (RAC **Menu**). For picker content in a popover, wrap **`ListBox`** in **`PopoverScroll`**. */\nexport function Menu<T extends object>({\n className,\n size = 'sm',\n selectionMode = 'none',\n interactive = true,\n style: styleProp,\n width,\n ...props\n}: MenuProps<T>) {\n const listRef = useRef<HTMLDivElement>(null);\n\n useListHoverHighlight(listRef, interactive);\n\n const widthStyle = resolveOverlayWidth(width);\n\n const style = (widthStyle != null || styleProp != null)\n ? { ...styleProp, ...widthStyle }\n : undefined;\n\n return (\n <AriaMenu\n className={ cn(styles.list, styles.menuList, className) }\n style={ style }\n selectionMode={ selectionMode }\n data-size={ size }\n data-interactive={ interactive || undefined }\n { ...props }\n ref={ listRef }\n />\n );\n}\n\nexport function MenuItem<T extends object>({\n startAffix,\n icon,\n text,\n description,\n endAffix,\n stacked,\n children,\n className,\n isDanger,\n ref,\n ...props\n}: MenuItemProps<T> & { ref?: Ref<HTMLDivElement> }) {\n const itemRef = useRef<HTMLDivElement>(null);\n const textValue = text || props.textValue || (typeof children === 'string' ? children : undefined);\n const [descriptionTruncated, setDescriptionTruncated] = useState(false);\n\n useScrollActiveListItem(itemRef);\n\n useLayoutEffect(() => {\n if (typeof description !== 'string' || description.length === 0) {\n return;\n }\n\n const node = itemRef.current?.querySelector(`.${ CSS.escape(styles.itemDescription) }`);\n\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n const update = () => {\n const truncated = node.scrollWidth > node.clientWidth + 1;\n\n setDescriptionTruncated(current => (current === truncated ? current : truncated));\n };\n\n const frame = requestAnimationFrame(update);\n const observer = new ResizeObserver(update);\n\n observer.observe(node);\n\n return () => {\n cancelAnimationFrame(frame);\n observer.disconnect();\n };\n }, [description]);\n\n const item = (\n <AriaMenuItem\n ref={ mergeRefs(itemRef, ref) }\n className={ cn(styles.item, stacked && styles.itemStacked, isDanger && styles.itemDanger, className) }\n textValue={ textValue }\n { ...props }\n >\n { renderListRowItemContent(children, {\n icon,\n description,\n startAffix,\n endAffix,\n stacked,\n textValue,\n }) }\n </AriaMenuItem>\n );\n\n if (typeof description !== 'string' || description.length === 0) {\n return item;\n }\n\n return (\n <Tooltip content={ description } placement=\"right\" isDisabled={ !descriptionTruncated }>\n { item }\n </Tooltip>\n );\n}\n\nexport function MenuSeparator({ className, ...props }: Omit<AriaSeparatorProps, 'className'> & { className?: string }) {\n return <AriaSeparator className={ cn(styles.menuSeparator, className) } { ...props } />;\n}\n\nexport function MenuHeader({ className, sticky, ...props }: HTMLAttributes<HTMLElement> & { sticky?: boolean }) {\n return <AriaHeader className={ cn(styles.sectionHeader, className) } { ...props } data-sticky={ sticky || undefined } />;\n}\n\nexport function MenuSection<T extends object>({ className, ...props }: Omit<AriaMenuSectionProps<T>, 'className'> & { className?: string }) {\n return <AriaMenuSection className={ cn(styles.section, className) } { ...props } />;\n}\n\nMenu.displayName = 'Menu';\nMenuItem.displayName = 'MenuItem';\nMenuSeparator.displayName = 'MenuSeparator';\nMenuHeader.displayName = 'MenuHeader';\nMenuSection.displayName = 'MenuSection';\n"],"names":["Menu","className","size","selectionMode","interactive","styleProp","width","props","listRef","useRef","useListHoverHighlight","widthStyle","resolveOverlayWidth","style","AriaMenu","cn","styles","MenuItem","startAffix","icon","text","description","endAffix","stacked","children","isDanger","ref","itemRef","textValue","descriptionTruncated","setDescriptionTruncated","useState","useScrollActiveListItem","useLayoutEffect","node","update","truncated","current","frame","observer","item","AriaMenuItem","mergeRefs","renderListRowItemContent","Tooltip","MenuSeparator","AriaSeparator","MenuHeader","sticky","AriaHeader","MenuSection","AriaMenuSection"],"mappings":";;;;;;;;;;;AAYO,SAASA,EAAK;AAAA,EACnB,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc;AAAA,EACd,OAAOC;AAAA,EACP,OAAAC;AAAA,EACA,GAAGC;AACL,GAAG;AACD,QAAMC,IAAUC,EAAO,IAAI;AAC3B,EAAAC,EAAsBF,GAASJ,CAAW;AAC1C,QAAMO,IAAaC,EAAoBN,CAAK,GACtCO,IAAQF,KAAc,QAAQN,KAAa,OAAO;AAAA,IACtD,GAAGA;AAAA,IACH,GAAGM;AAAA,EAAA,IACD;AACJ,2BAAyBG,GAAU;AAAA,IACjC,WAAWC,EAAGC,EAAO,MAAMA,EAAO,UAAUf,CAAS;AAAA,IACrD,OAAAY;AAAA,IACA,eAAAV;AAAA,IACA,aAAaD;AAAA,IACb,oBAAoBE,KAAe;AAAA,IACnC,GAAGG;AAAA,IACH,KAAKC;AAAA,EAAA,CACN;AACH;AACO,SAASS,EAAS;AAAA,EACvB,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAvB;AAAA,EACA,UAAAwB;AAAA,EACA,KAAAC;AAAA,EACA,GAAGnB;AACL,GAAG;AACD,QAAMoB,IAAUlB,EAAO,IAAI,GACrBmB,IAAYR,KAAQb,EAAM,cAAc,OAAOiB,KAAa,WAAWA,IAAW,SAClF,CAACK,GAAsBC,CAAuB,IAAIC,EAAS,EAAK;AACtE,EAAAC,EAAwBL,CAAO,GAC/BM,EAAgB,MAAM;AACpB,QAAI,OAAOZ,KAAgB,YAAYA,EAAY,WAAW;AAC5D;AAEF,UAAMa,IAAOP,EAAQ,SAAS,cAAc,IAAI,IAAI,OAAOX,EAAO,eAAe,CAAC,EAAE;AACpF,QAAI,EAAEkB,aAAgB;AACpB;AAEF,UAAMC,IAAS,MAAM;AACnB,YAAMC,IAAYF,EAAK,cAAcA,EAAK,cAAc;AACxD,MAAAJ,EAAwB,CAAAO,MAAWA,MAAYD,IAAYC,IAAUD,CAAS;AAAA,IAChF,GACME,IAAQ,sBAAsBH,CAAM,GACpCI,IAAW,IAAI,eAAeJ,CAAM;AAC1C,WAAAI,EAAS,QAAQL,CAAI,GACd,MAAM;AACX,2BAAqBI,CAAK,GAC1BC,EAAS,WAAA;AAAA,IACX;AAAA,EACF,GAAG,CAAClB,CAAW,CAAC;AAChB,QAAMmB,sBAAyBC,GAAc;AAAA,IAC3C,KAAKC,EAAUf,GAASD,CAAG;AAAA,IAC3B,WAAWX,EAAGC,EAAO,MAAMO,KAAWP,EAAO,aAAaS,KAAYT,EAAO,YAAYf,CAAS;AAAA,IAClG,WAAA2B;AAAA,IACA,GAAGrB;AAAA,IACH,UAAUoC,EAAyBnB,GAAU;AAAA,MAC3C,MAAAL;AAAA,MACA,aAAAE;AAAA,MACA,YAAAH;AAAA,MACA,UAAAI;AAAA,MACA,SAAAC;AAAA,MACA,WAAAK;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AACD,SAAI,OAAOP,KAAgB,YAAYA,EAAY,WAAW,IACrDmB,sBAEgBI,GAAS;AAAA,IAChC,SAASvB;AAAA,IACT,WAAW;AAAA,IACX,YAAY,CAACQ;AAAA,IACb,UAAUW;AAAA,EAAA,CACX;AACH;AACO,SAASK,EAAc;AAAA,EAC5B,WAAA5C;AAAA,EACA,GAAGM;AACL,GAAG;AACD,2BAAyBuC,GAAe;AAAA,IACtC,WAAW/B,EAAGC,EAAO,eAAef,CAAS;AAAA,IAC7C,GAAGM;AAAA,EAAA,CACJ;AACH;AACO,SAASwC,EAAW;AAAA,EACzB,WAAA9C;AAAA,EACA,QAAA+C;AAAA,EACA,GAAGzC;AACL,GAAG;AACD,2BAAyB0C,GAAY;AAAA,IACnC,WAAWlC,EAAGC,EAAO,eAAef,CAAS;AAAA,IAC7C,GAAGM;AAAA,IACH,eAAeyC,KAAU;AAAA,EAAA,CAC1B;AACH;AACO,SAASE,EAAY;AAAA,EAC1B,WAAAjD;AAAA,EACA,GAAGM;AACL,GAAG;AACD,2BAAyB4C,GAAiB;AAAA,IACxC,WAAWpC,EAAGC,EAAO,SAASf,CAAS;AAAA,IACvC,GAAGM;AAAA,EAAA,CACJ;AACH;AACAP,EAAK,cAAc;AACnBiB,EAAS,cAAc;AACvB4B,EAAc,cAAc;AAC5BE,EAAW,cAAc;AACzBG,EAAY,cAAc;"}
@@ -8,14 +8,14 @@ function w({
8
8
  item: e,
9
9
  className: l,
10
10
  onAction: o,
11
- onRemove: c,
12
- ...m
11
+ onRemove: s,
12
+ ...p
13
13
  }) {
14
- const n = e.href?.trim(), s = n != null && /^https?:\/\//i.test(n), p = s || !!o, i = /* @__PURE__ */ t(b, {
14
+ const n = e.href?.trim(), c = n != null && /^https?:\/\//i.test(n), h = c || !!o, i = /* @__PURE__ */ t(b, {
15
15
  item: e
16
16
  });
17
17
  let a = i;
18
- return s ? a = /* @__PURE__ */ t("a", {
18
+ return c ? a = /* @__PURE__ */ t("a", {
19
19
  className: r.hit,
20
20
  href: n,
21
21
  target: "_blank",
@@ -29,15 +29,15 @@ function w({
29
29
  })), /* @__PURE__ */ C("span", {
30
30
  className: d(r.chip, l),
31
31
  "data-chip": !0,
32
- "data-interactive": p || void 0,
33
- ...m,
32
+ "data-interactive": h || void 0,
33
+ ...p,
34
34
  children: [a, /* @__PURE__ */ t(u, {
35
- when: c,
36
- children: (h) => /* @__PURE__ */ t("button", {
35
+ when: s,
36
+ children: (m) => /* @__PURE__ */ t("button", {
37
37
  type: "button",
38
38
  className: r.remove,
39
39
  "aria-label": "Remove",
40
- onClick: () => h(e),
40
+ onClick: () => m(e),
41
41
  children: /* @__PURE__ */ t(f, {})
42
42
  })
43
43
  })]
@@ -1,12 +1,12 @@
1
- const e = "Chip_chip_gP30sr", h = "Chip_hit_HzngcA", t = "Chip_remove_XM0heJ", i = {
2
- chip: e,
3
- hit: h,
4
- remove: t
1
+ const h = "Chip_chip_gP30sr", e = "Chip_hit_HzngcA", i = "Chip_remove_XM0heJ", t = {
2
+ chip: h,
3
+ hit: e,
4
+ remove: i
5
5
  };
6
6
  export {
7
- e as chip,
8
- i as default,
9
- h as hit,
10
- t as remove
7
+ h as chip,
8
+ t as default,
9
+ e as hit,
10
+ i as remove
11
11
  };
12
12
  //# sourceMappingURL=Chip.module.css.js.map
@@ -1,5 +1,6 @@
1
1
  /** Chip label hint: `(14)` or `(12-15)`. */
2
2
  export declare function formatCursorLineHint(cursor: string | undefined): string | undefined;
3
+ export declare function clipLayerChipLabel(label: string): string;
3
4
  /** Composer / bubble file chip label: `layout.tsx` or `layout.tsx (14-26)`. */
4
5
  export declare function fileChipDisplay(file: {
5
6
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cursorLines.d.ts","sourceRoot":"","sources":["../../../../src/chat/Chip/helpers/cursorLines.ts"],"names":[],"mappings":"AAqDA,4CAA4C;AAC5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAInF;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK/E;AAED,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKxE"}
1
+ {"version":3,"file":"cursorLines.d.ts","sourceRoot":"","sources":["../../../../src/chat/Chip/helpers/cursorLines.ts"],"names":[],"mappings":"AAqDA,4CAA4C;AAC5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAInF;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK/E;AAED,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKxE"}
@@ -1,42 +1,48 @@
1
1
  import { chipLabelFromPath as m } from "./chipPath.js";
2
- function c(r) {
3
- const n = r.trim().match(/^(\d+)(?::|$)/);
2
+ function c(t) {
3
+ const n = t.trim().match(/^(\d+)(?::|$)/);
4
4
  if (!n?.[1])
5
5
  return;
6
- const t = Number.parseInt(n[1], 10);
7
- if (!(!Number.isFinite(t) || t <= 0))
8
- return t;
6
+ const r = Number.parseInt(n[1], 10);
7
+ if (!(!Number.isFinite(r) || r <= 0))
8
+ return r;
9
9
  }
10
- function a(r) {
11
- const n = r?.trim();
10
+ function l(t) {
11
+ const n = t?.trim();
12
12
  if (!n)
13
13
  return;
14
- const t = n.indexOf("-");
15
- if (t < 0) {
14
+ const r = n.indexOf("-");
15
+ if (r < 0) {
16
16
  const u = c(n);
17
17
  return u != null ? String(u) : void 0;
18
18
  }
19
- const i = c(n.slice(0, t)), o = c(n.slice(t + 1));
19
+ const i = c(n.slice(0, r)), o = c(n.slice(r + 1));
20
20
  if (i == null || o == null)
21
21
  return;
22
22
  const e = Math.min(i, o), s = Math.max(i, o);
23
23
  return e === s ? String(e) : `${e}-${s}`;
24
24
  }
25
- function l(r) {
26
- const n = a(r);
25
+ function f(t) {
26
+ const n = l(t);
27
27
  return n ? `(${n})` : void 0;
28
28
  }
29
- function d(r) {
30
- const n = m(r.path), t = l(r.cursor);
31
- return t ? `${n} ${t}` : n;
29
+ const a = 20;
30
+ function d(t) {
31
+ const n = t.trim();
32
+ return n.length <= a ? n : n.slice(0, a).trimEnd();
32
33
  }
33
- function h(r) {
34
- const n = r.path.trim().replaceAll("\\", "/"), t = a(r.cursor);
35
- return t ? `@${n}:${t}` : `@${n}`;
34
+ function p(t) {
35
+ const n = m(t.path), r = f(t.cursor);
36
+ return r ? `${n} ${r}` : n;
37
+ }
38
+ function $(t) {
39
+ const n = t.path.trim().replaceAll("\\", "/"), r = l(t.cursor);
40
+ return r ? `@${n}:${r}` : `@${n}`;
36
41
  }
37
42
  export {
38
- d as fileChipDisplay,
39
- h as fileCite,
40
- l as formatCursorLineHint
43
+ d as clipLayerChipLabel,
44
+ p as fileChipDisplay,
45
+ $ as fileCite,
46
+ f as formatCursorLineHint
41
47
  };
42
48
  //# sourceMappingURL=cursorLines.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursorLines.js","sources":["../../../../src/chat/Chip/helpers/cursorLines.ts"],"sourcesContent":["import { chipLabelFromPath } from './chipPath';\n\n/**\n * Shared parsing of editor `cursor` (`line:col` / `line:col-line:col`)\n * into cite ranges and chip label hints.\n */\n\n/** 1-based line from a `line:col` (or bare line) segment. */\nfunction lineFromPosition(segment: string): number | undefined {\n const match = segment.trim().match(/^(\\d+)(?::|$)/);\n\n if (!match?.[1]) {\n return undefined;\n }\n\n const line = Number.parseInt(match[1], 10);\n\n if (!Number.isFinite(line) || line <= 0) {\n return undefined;\n }\n\n return line;\n}\n\n/** Cite / serialize range from cursor: `12` or `12-20`. */\nfunction lineRangeFromCursor(cursor: string | undefined): string | undefined {\n const trimmed = cursor?.trim();\n\n if (!trimmed) {\n return undefined;\n }\n\n const dash = trimmed.indexOf('-');\n\n if (dash < 0) {\n const line = lineFromPosition(trimmed);\n\n return line != null ? String(line) : undefined;\n }\n\n const from = lineFromPosition(trimmed.slice(0, dash));\n const to = lineFromPosition(trimmed.slice(dash + 1));\n\n if (from == null || to == null) {\n return undefined;\n }\n\n const start = Math.min(from, to);\n const end = Math.max(from, to);\n\n return start === end ? String(start) : `${ start }-${ end }`;\n}\n\n/** Chip label hint: `(14)` or `(12-15)`. */\nexport function formatCursorLineHint(cursor: string | undefined): string | undefined {\n const range = lineRangeFromCursor(cursor);\n\n return range ? `(${ range })` : undefined;\n}\n\n/** Composer / bubble file chip label: `layout.tsx` or `layout.tsx (14-26)`. */\nexport function fileChipDisplay(file: { path: string; cursor?: string }): string {\n const name = chipLabelFromPath(file.path);\n const lines = formatCursorLineHint(file.cursor);\n\n return lines ? `${ name } ${ lines }` : name;\n}\n\n/** Prompt cite for an attached file: `@path` / `@path:12-20`. */\nexport function fileCite(file: { path: string; cursor?: string }): string {\n const path = file.path.trim().replaceAll('\\\\', '/');\n const range = lineRangeFromCursor(file.cursor);\n\n return range ? `@${ path }:${ range }` : `@${ path }`;\n}\n"],"names":["lineFromPosition","segment","match","line","lineRangeFromCursor","cursor","trimmed","dash","from","to","start","end","formatCursorLineHint","range","fileChipDisplay","file","name","chipLabelFromPath","lines","fileCite","path"],"mappings":";AAQA,SAASA,EAAiBC,GAAS;AACjC,QAAMC,IAAQD,EAAQ,KAAA,EAAO,MAAM,eAAe;AAClD,MAAI,CAACC,IAAQ,CAAC;AACZ;AAEF,QAAMC,IAAO,OAAO,SAASD,EAAM,CAAC,GAAG,EAAE;AACzC,MAAI,GAAC,OAAO,SAASC,CAAI,KAAKA,KAAQ;AAGtC,WAAOA;AACT;AAGA,SAASC,EAAoBC,GAAQ;AACnC,QAAMC,IAAUD,GAAQ,KAAA;AACxB,MAAI,CAACC;AACH;AAEF,QAAMC,IAAOD,EAAQ,QAAQ,GAAG;AAChC,MAAIC,IAAO,GAAG;AACZ,UAAMJ,IAAOH,EAAiBM,CAAO;AACrC,WAAOH,KAAQ,OAAO,OAAOA,CAAI,IAAI;AAAA,EACvC;AACA,QAAMK,IAAOR,EAAiBM,EAAQ,MAAM,GAAGC,CAAI,CAAC,GAC9CE,IAAKT,EAAiBM,EAAQ,MAAMC,IAAO,CAAC,CAAC;AACnD,MAAIC,KAAQ,QAAQC,KAAM;AACxB;AAEF,QAAMC,IAAQ,KAAK,IAAIF,GAAMC,CAAE,GACzBE,IAAM,KAAK,IAAIH,GAAMC,CAAE;AAC7B,SAAOC,MAAUC,IAAM,OAAOD,CAAK,IAAI,GAAGA,CAAK,IAAIC,CAAG;AACxD;AAGO,SAASC,EAAqBP,GAAQ;AAC3C,QAAMQ,IAAQT,EAAoBC,CAAM;AACxC,SAAOQ,IAAQ,IAAIA,CAAK,MAAM;AAChC;AAGO,SAASC,EAAgBC,GAAM;AACpC,QAAMC,IAAOC,EAAkBF,EAAK,IAAI,GAClCG,IAAQN,EAAqBG,EAAK,MAAM;AAC9C,SAAOG,IAAQ,GAAGF,CAAI,IAAIE,CAAK,KAAKF;AACtC;AAGO,SAASG,EAASJ,GAAM;AAC7B,QAAMK,IAAOL,EAAK,KAAK,OAAO,WAAW,MAAM,GAAG,GAC5CF,IAAQT,EAAoBW,EAAK,MAAM;AAC7C,SAAOF,IAAQ,IAAIO,CAAI,IAAIP,CAAK,KAAK,IAAIO,CAAI;AAC/C;"}
1
+ {"version":3,"file":"cursorLines.js","sources":["../../../../src/chat/Chip/helpers/cursorLines.ts"],"sourcesContent":["import { chipLabelFromPath } from './chipPath';\n\n/**\n * Shared parsing of editor `cursor` (`line:col` / `line:col-line:col`)\n * into cite ranges and chip label hints.\n */\n\n/** 1-based line from a `line:col` (or bare line) segment. */\nfunction lineFromPosition(segment: string): number | undefined {\n const match = segment.trim().match(/^(\\d+)(?::|$)/);\n\n if (!match?.[1]) {\n return undefined;\n }\n\n const line = Number.parseInt(match[1], 10);\n\n if (!Number.isFinite(line) || line <= 0) {\n return undefined;\n }\n\n return line;\n}\n\n/** Cite / serialize range from cursor: `12` or `12-20`. */\nfunction lineRangeFromCursor(cursor: string | undefined): string | undefined {\n const trimmed = cursor?.trim();\n\n if (!trimmed) {\n return undefined;\n }\n\n const dash = trimmed.indexOf('-');\n\n if (dash < 0) {\n const line = lineFromPosition(trimmed);\n\n return line != null ? String(line) : undefined;\n }\n\n const from = lineFromPosition(trimmed.slice(0, dash));\n const to = lineFromPosition(trimmed.slice(dash + 1));\n\n if (from == null || to == null) {\n return undefined;\n }\n\n const start = Math.min(from, to);\n const end = Math.max(from, to);\n\n return start === end ? String(start) : `${ start }-${ end }`;\n}\n\n/** Chip label hint: `(14)` or `(12-15)`. */\nexport function formatCursorLineHint(cursor: string | undefined): string | undefined {\n const range = lineRangeFromCursor(cursor);\n\n return range ? `(${ range })` : undefined;\n}\n\n/** Visible layer chip. The model still gets the longer snippet. */\nconst LAYER_CHIP_LABEL_MAX = 20;\n\nexport function clipLayerChipLabel(label: string): string {\n const text = label.trim();\n\n if (text.length <= LAYER_CHIP_LABEL_MAX) {\n return text;\n }\n\n return text.slice(0, LAYER_CHIP_LABEL_MAX).trimEnd();\n}\n\n/** Composer / bubble file chip label: `layout.tsx` or `layout.tsx (14-26)`. */\nexport function fileChipDisplay(file: { path: string; cursor?: string }): string {\n const name = chipLabelFromPath(file.path);\n const lines = formatCursorLineHint(file.cursor);\n\n return lines ? `${ name } ${ lines }` : name;\n}\n\n/** Prompt cite for an attached file: `@path` / `@path:12-20`. */\nexport function fileCite(file: { path: string; cursor?: string }): string {\n const path = file.path.trim().replaceAll('\\\\', '/');\n const range = lineRangeFromCursor(file.cursor);\n\n return range ? `@${ path }:${ range }` : `@${ path }`;\n}\n"],"names":["lineFromPosition","segment","match","line","lineRangeFromCursor","cursor","trimmed","dash","from","to","start","end","formatCursorLineHint","range","LAYER_CHIP_LABEL_MAX","clipLayerChipLabel","label","text","fileChipDisplay","file","name","chipLabelFromPath","lines","fileCite","path"],"mappings":";AAQA,SAASA,EAAiBC,GAAS;AACjC,QAAMC,IAAQD,EAAQ,KAAA,EAAO,MAAM,eAAe;AAClD,MAAI,CAACC,IAAQ,CAAC;AACZ;AAEF,QAAMC,IAAO,OAAO,SAASD,EAAM,CAAC,GAAG,EAAE;AACzC,MAAI,GAAC,OAAO,SAASC,CAAI,KAAKA,KAAQ;AAGtC,WAAOA;AACT;AAGA,SAASC,EAAoBC,GAAQ;AACnC,QAAMC,IAAUD,GAAQ,KAAA;AACxB,MAAI,CAACC;AACH;AAEF,QAAMC,IAAOD,EAAQ,QAAQ,GAAG;AAChC,MAAIC,IAAO,GAAG;AACZ,UAAMJ,IAAOH,EAAiBM,CAAO;AACrC,WAAOH,KAAQ,OAAO,OAAOA,CAAI,IAAI;AAAA,EACvC;AACA,QAAMK,IAAOR,EAAiBM,EAAQ,MAAM,GAAGC,CAAI,CAAC,GAC9CE,IAAKT,EAAiBM,EAAQ,MAAMC,IAAO,CAAC,CAAC;AACnD,MAAIC,KAAQ,QAAQC,KAAM;AACxB;AAEF,QAAMC,IAAQ,KAAK,IAAIF,GAAMC,CAAE,GACzBE,IAAM,KAAK,IAAIH,GAAMC,CAAE;AAC7B,SAAOC,MAAUC,IAAM,OAAOD,CAAK,IAAI,GAAGA,CAAK,IAAIC,CAAG;AACxD;AAGO,SAASC,EAAqBP,GAAQ;AAC3C,QAAMQ,IAAQT,EAAoBC,CAAM;AACxC,SAAOQ,IAAQ,IAAIA,CAAK,MAAM;AAChC;AAGA,MAAMC,IAAuB;AACtB,SAASC,EAAmBC,GAAO;AACxC,QAAMC,IAAOD,EAAM,KAAA;AACnB,SAAIC,EAAK,UAAUH,IACVG,IAEFA,EAAK,MAAM,GAAGH,CAAoB,EAAE,QAAA;AAC7C;AAGO,SAASI,EAAgBC,GAAM;AACpC,QAAMC,IAAOC,EAAkBF,EAAK,IAAI,GAClCG,IAAQV,EAAqBO,EAAK,MAAM;AAC9C,SAAOG,IAAQ,GAAGF,CAAI,IAAIE,CAAK,KAAKF;AACtC;AAGO,SAASG,EAASJ,GAAM;AAC7B,QAAMK,IAAOL,EAAK,KAAK,OAAO,WAAW,MAAM,GAAG,GAC5CN,IAAQT,EAAoBe,EAAK,MAAM;AAC7C,SAAON,IAAQ,IAAIW,CAAI,IAAIX,CAAK,KAAK,IAAIW,CAAI;AAC/C;"}
@@ -3,5 +3,5 @@ export { ChipContent, type ChipContentProps } from './ChipContent';
3
3
  export { ChipIcon, chipIconForLinkHost, type ChipIconProps as ChipIconByTypeProps } from './ChipIcon';
4
4
  export { getFileKind, type ChipKindType, type FileKindResult } from './helpers/chipKind';
5
5
  export { chipItemFromPath, chipLabelFromPath, chipTooltipFromPath, configureScratchRoots, normalizeChipPath } from './helpers/chipPath';
6
- export { fileChipDisplay, fileCite } from './helpers/cursorLines';
6
+ export { clipLayerChipLabel, fileChipDisplay, fileCite } from './helpers/cursorLines';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chat/Chip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,aAAa,IAAI,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chat/Chip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,aAAa,IAAI,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,21 +1,22 @@
1
1
  import { Chip as r } from "./Chip.js";
2
- import { ChipContent as p } from "./ChipContent.js";
2
+ import { ChipContent as t } from "./ChipContent.js";
3
3
  import { ChipIcon as h, chipIconForLinkHost as m } from "./ChipIcon.js";
4
- import { getFileKind as f } from "./helpers/chipKind.js";
5
- import { chipItemFromPath as n, chipLabelFromPath as l, chipTooltipFromPath as C, configureScratchRoots as x, normalizeChipPath as F } from "./helpers/chipPath.js";
6
- import { fileChipDisplay as s, fileCite as I } from "./helpers/cursorLines.js";
4
+ import { getFileKind as c } from "./helpers/chipKind.js";
5
+ import { chipItemFromPath as l, chipLabelFromPath as n, chipTooltipFromPath as C, configureScratchRoots as x, normalizeChipPath as F } from "./helpers/chipPath.js";
6
+ import { clipLayerChipLabel as P, fileChipDisplay as s, fileCite as I } from "./helpers/cursorLines.js";
7
7
  export {
8
8
  r as Chip,
9
- p as ChipContent,
9
+ t as ChipContent,
10
10
  h as ChipIcon,
11
11
  m as chipIconForLinkHost,
12
- n as chipItemFromPath,
13
- l as chipLabelFromPath,
12
+ l as chipItemFromPath,
13
+ n as chipLabelFromPath,
14
14
  C as chipTooltipFromPath,
15
+ P as clipLayerChipLabel,
15
16
  x as configureScratchRoots,
16
17
  s as fileChipDisplay,
17
18
  I as fileCite,
18
- f as getFileKind,
19
+ c as getFileKind,
19
20
  F as normalizeChipPath
20
21
  };
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- .MessagePhaseSection_root_Cqd0t1{display:flex;flex-direction:column;gap:var(--spacing-lg);margin-top:var(--spacing-md);padding-block:var(--spacing-md);width:100%;color:var(--color-text);font-weight:400;font-size:var(--text-md);line-height:var(--leading-md);font-family:Onest,sans-serif;letter-spacing:0}.MessagePhaseSection_root_Cqd0t1[data-phase=prose],.MessagePhaseSection_root_Cqd0t1[data-phase=prose]+.MessagePhaseSection_root_Cqd0t1,.MessagePhaseSection_root_Cqd0t1:first-child{margin-top:0}.MessagePhaseSection_root_Cqd0t1[data-phase=prose]{padding-block:0}.MessagePhaseSection_root_Cqd0t1:first-child{padding-top:0}.MessagePhaseSection_header_a11Bwm{width:100%;--reforma-button-opacity--hover: 1}.MessagePhaseSection_headerContent_6gdB1H{justify-content:start;gap:var(--spacing-md);width:100%}.MessagePhaseSection_headerTitle_RT3fFZ{display:flex;flex-shrink:0;overflow:hidden}.MessagePhaseSection_headerSummary_HTSuia{display:flex;align-items:center;gap:var(--spacing-md);min-width:0;font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0}.MessagePhaseSection_chevronIcon_7lOW0r{flex-shrink:0;opacity:0;transition:all .15s ease}.MessagePhaseSection_chevronIcon_7lOW0r[aria-expanded=true]{opacity:1}.MessagePhaseSection_header_a11Bwm:hover .MessagePhaseSection_chevronIcon_7lOW0r,.MessagePhaseSection_header_a11Bwm:focus-visible .MessagePhaseSection_chevronIcon_7lOW0r{opacity:1}.MessagePhaseSection_phasePanel_UxIl4o{position:relative;padding-right:var(--spacing-md);width:100%}.MessagePhaseSection_phasePanelContent_xFRBiK{display:flex;flex-direction:column;gap:var(--spacing-lg)}
1
+ .MessagePhaseSection_root_Cqd0t1{display:flex;flex-direction:column;gap:var(--spacing-lg);margin-top:var(--spacing-md);width:100%;color:var(--color-text);font-weight:400;font-size:var(--text-md);line-height:var(--leading-md);font-family:Onest,sans-serif;letter-spacing:0}.MessagePhaseSection_root_Cqd0t1:first-child{margin-top:0}.MessagePhaseSection_header_a11Bwm{width:100%;--reforma-button-opacity--hover: 1}.MessagePhaseSection_headerContent_6gdB1H{justify-content:start;gap:var(--spacing-md);width:100%}.MessagePhaseSection_headerTitle_RT3fFZ{display:flex;flex-shrink:0;overflow:hidden}.MessagePhaseSection_headerSummary_HTSuia{display:flex;align-items:center;gap:var(--spacing-md);min-width:0;font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0}.MessagePhaseSection_chevronIcon_7lOW0r{flex-shrink:0;opacity:0;transition:all .15s ease}.MessagePhaseSection_chevronIcon_7lOW0r[aria-expanded=true]{opacity:1}.MessagePhaseSection_header_a11Bwm:hover .MessagePhaseSection_chevronIcon_7lOW0r,.MessagePhaseSection_header_a11Bwm:focus-visible .MessagePhaseSection_chevronIcon_7lOW0r{opacity:1}.MessagePhaseSection_phasePanel_UxIl4o{position:relative;padding-right:var(--spacing-md);width:100%}.MessagePhaseSection_phasePanelContent_xFRBiK{display:flex;flex-direction:column;gap:var(--spacing-lg)}
@@ -1,4 +1,6 @@
1
1
  import { type StreamdownProps } from 'streamdown';
2
+ /** Sanitize + harden, no rehype-raw. HTML tags stay characters; markdown still renders. */
3
+ export declare const USER_MESSAGE_REHYPE_PLUGINS: NonNullable<StreamdownProps['rehypePlugins']>;
2
4
  export declare const STREAMDOWN_OPTIONS: {
3
5
  plugins: {
4
6
  cjk: import("@streamdown/cjk").CjkPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/chat/Message/streamdown/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAMxE,eAAO,MAAM,kBAAkB;;;;;;;mBAetB,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/chat/Message/streamdown/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAiBxE,2FAA2F;AAC3F,eAAO,MAAM,2BAA2B,EAGnC,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;AAEnD,eAAO,MAAM,kBAAkB;;;;;;;mBAQtB,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAC"}