@caspeco/casper-ui-library 9.9.0 → 9.11.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 (107) hide show
  1. package/dist/_virtual/index.js +5 -0
  2. package/dist/_virtual/index2.js +4 -0
  3. package/dist/_virtual/use-sync-external-store-shim.development.js +4 -0
  4. package/dist/_virtual/use-sync-external-store-shim.production.js +4 -0
  5. package/dist/_virtual/with-selector.development.js +4 -0
  6. package/dist/_virtual/with-selector.js +5 -0
  7. package/dist/_virtual/with-selector.production.js +4 -0
  8. package/dist/_virtual/with-selector2.js +4 -0
  9. package/dist/components/button/button-recipe.d.ts.map +1 -1
  10. package/dist/components/button/button-recipe.js +80 -39
  11. package/dist/components/input/input.d.ts +1 -0
  12. package/dist/components/input/input.d.ts.map +1 -1
  13. package/dist/components/input/types.d.ts +1 -1
  14. package/dist/components/input/types.d.ts.map +1 -1
  15. package/dist/components/rich-text-editor/boolean-control.d.ts +3 -0
  16. package/dist/components/rich-text-editor/boolean-control.d.ts.map +1 -0
  17. package/dist/components/rich-text-editor/boolean-control.js +35 -0
  18. package/dist/components/rich-text-editor/extensions.d.ts +4 -0
  19. package/dist/components/rich-text-editor/extensions.d.ts.map +1 -0
  20. package/dist/components/rich-text-editor/extensions.js +37 -0
  21. package/dist/components/rich-text-editor/index.d.ts +26 -0
  22. package/dist/components/rich-text-editor/index.d.ts.map +1 -0
  23. package/dist/components/rich-text-editor/index.js +23 -0
  24. package/dist/components/rich-text-editor/rich-text-editor-context.d.ts +10 -0
  25. package/dist/components/rich-text-editor/rich-text-editor-context.d.ts.map +1 -0
  26. package/dist/components/rich-text-editor/rich-text-editor-context.js +13 -0
  27. package/dist/components/rich-text-editor/rich-text-editor-control.d.ts +11 -0
  28. package/dist/components/rich-text-editor/rich-text-editor-control.d.ts.map +1 -0
  29. package/dist/components/rich-text-editor/rich-text-editor-control.js +202 -0
  30. package/dist/components/rich-text-editor/rich-text-editor-recipe.d.ts +4 -0
  31. package/dist/components/rich-text-editor/rich-text-editor-recipe.d.ts.map +1 -0
  32. package/dist/components/rich-text-editor/rich-text-editor-recipe.js +58 -0
  33. package/dist/components/rich-text-editor/rich-text-editor.composition.d.ts +6 -0
  34. package/dist/components/rich-text-editor/rich-text-editor.composition.d.ts.map +1 -0
  35. package/dist/components/rich-text-editor/rich-text-editor.d.ts +11 -0
  36. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -0
  37. package/dist/components/rich-text-editor/rich-text-editor.js +60 -0
  38. package/dist/components/rich-text-editor/rich-text-editor.test.d.ts +2 -0
  39. package/dist/components/rich-text-editor/rich-text-editor.test.d.ts.map +1 -0
  40. package/dist/components/rich-text-editor/rich-text-editor.visual.test.d.ts +2 -0
  41. package/dist/components/rich-text-editor/rich-text-editor.visual.test.d.ts.map +1 -0
  42. package/dist/components/rich-text-editor/rich-text-renderer.d.ts +3 -0
  43. package/dist/components/rich-text-editor/rich-text-renderer.d.ts.map +1 -0
  44. package/dist/components/rich-text-editor/rich-text-renderer.js +21 -0
  45. package/dist/components/rich-text-editor/translations.d.ts +23 -0
  46. package/dist/components/rich-text-editor/translations.d.ts.map +1 -0
  47. package/dist/components/rich-text-editor/translations.js +120 -0
  48. package/dist/components/rich-text-editor/types.d.ts +30 -0
  49. package/dist/components/rich-text-editor/types.d.ts.map +1 -0
  50. package/dist/components/rich-text-editor/use-rich-text-editor.d.ts +3 -0
  51. package/dist/components/rich-text-editor/use-rich-text-editor.d.ts.map +1 -0
  52. package/dist/components/rich-text-editor/use-rich-text-editor.js +17 -0
  53. package/dist/components/table/table-header-dropdown.d.ts.map +1 -1
  54. package/dist/components/table/table-header-dropdown.js +68 -66
  55. package/dist/components/toggle-button/toggle-button.d.ts.map +1 -1
  56. package/dist/components/toggle-button/toggle-button.js +11 -11
  57. package/dist/components/toggle-button/types.d.ts +2 -0
  58. package/dist/components/toggle-button/types.d.ts.map +1 -1
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +774 -763
  62. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js +83 -31
  63. package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js +411 -226
  64. package/dist/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +33 -0
  65. package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js +29 -28
  66. package/dist/node_modules/@tiptap/core/dist/index.js +3953 -0
  67. package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +19 -0
  68. package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js +62 -0
  69. package/dist/node_modules/@tiptap/extension-bold/dist/index.js +85 -0
  70. package/dist/node_modules/@tiptap/extension-code/dist/index.js +54 -0
  71. package/dist/node_modules/@tiptap/extension-code-block/dist/index.js +219 -0
  72. package/dist/node_modules/@tiptap/extension-document/dist/index.js +12 -0
  73. package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js +61 -0
  74. package/dist/node_modules/@tiptap/extension-heading/dist/index.js +67 -0
  75. package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js +56 -0
  76. package/dist/node_modules/@tiptap/extension-italic/dist/index.js +83 -0
  77. package/dist/node_modules/@tiptap/extension-link/dist/index.js +341 -0
  78. package/dist/node_modules/@tiptap/extension-list/dist/index.js +796 -0
  79. package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +49 -0
  80. package/dist/node_modules/@tiptap/extension-strike/dist/index.js +66 -0
  81. package/dist/node_modules/@tiptap/extension-text/dist/index.js +13 -0
  82. package/dist/node_modules/@tiptap/extension-underline/dist/index.js +65 -0
  83. package/dist/node_modules/@tiptap/extensions/dist/index.js +446 -0
  84. package/dist/node_modules/@tiptap/starter-kit/dist/index.js +28 -0
  85. package/dist/node_modules/fast-equals/dist/es/index.js +324 -0
  86. package/dist/node_modules/linkifyjs/dist/linkify.js +705 -0
  87. package/dist/node_modules/orderedmap/dist/index.js +103 -0
  88. package/dist/node_modules/prosemirror-commands/dist/index.js +388 -0
  89. package/dist/node_modules/prosemirror-dropcursor/dist/index.js +86 -0
  90. package/dist/node_modules/prosemirror-gapcursor/dist/index.js +204 -0
  91. package/dist/node_modules/prosemirror-history/dist/index.js +248 -0
  92. package/dist/node_modules/prosemirror-keymap/dist/index.js +62 -0
  93. package/dist/node_modules/prosemirror-model/dist/index.js +2736 -0
  94. package/dist/node_modules/prosemirror-schema-list/dist/index.js +88 -0
  95. package/dist/node_modules/prosemirror-state/dist/index.js +822 -0
  96. package/dist/node_modules/prosemirror-transform/dist/index.js +1552 -0
  97. package/dist/node_modules/prosemirror-view/dist/index.js +3802 -0
  98. package/dist/node_modules/rope-sequence/dist/index.js +100 -0
  99. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +58 -0
  100. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +57 -0
  101. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +58 -0
  102. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +46 -0
  103. package/dist/node_modules/use-sync-external-store/shim/index.js +10 -0
  104. package/dist/node_modules/use-sync-external-store/shim/with-selector.js +10 -0
  105. package/dist/node_modules/w3c-keyname/index.js +93 -0
  106. package/dist/packages/casper-ui-library/node_modules/@tiptap/react/dist/index.js +506 -0
  107. package/package.json +14 -8
@@ -0,0 +1,202 @@
1
+ import { jsxs as s, jsx as t } from "react/jsx-runtime";
2
+ import { Box as D } from "@chakra-ui/react";
3
+ import { useEditorState as x } from "../../packages/casper-ui-library/node_modules/@tiptap/react/dist/index.js";
4
+ import { find as T } from "../../node_modules/linkifyjs/dist/linkify.js";
5
+ import { useState as C, useEffect as A, useCallback as z } from "react";
6
+ import { BooleanControl as c } from "./boolean-control.js";
7
+ import { useRichTextEditorContext as r } from "./rich-text-editor-context.js";
8
+ import { translations as i } from "./translations.js";
9
+ import { Menu as P } from "../menu/menu.js";
10
+ import { Tooltip as R } from "../tooltip/tooltip.js";
11
+ import { MenuButton as w } from "../menu/menu-button.js";
12
+ import { LinkIcon as F } from "../icon/icons/link-icon.js";
13
+ import { MenuList as O } from "../menu/menu-list.js";
14
+ import { FormControl as y } from "../form-control/form-control.js";
15
+ import { FormLabel as U } from "../form-control/form-label.js";
16
+ import { Input as H } from "../input/input.js";
17
+ import { Button as B } from "../button/button.js";
18
+ import { ListOLIcon as j } from "../icon/icons/list-ol-icon.js";
19
+ import { ListULIcon as E } from "../icon/icons/list-ul-icon.js";
20
+ import { ThemeIconSizeVariable as g, ThemeSpaceVariable as m, ThemeFontSizeVariable as I } from "../../theme/theme-types.js";
21
+ const K = {
22
+ icon: /* @__PURE__ */ t("strong", { children: "B" }),
23
+ command: (e) => e.chain().focus().toggleBold().run(),
24
+ isActive: (e) => e.isActive("bold")
25
+ };
26
+ function Le() {
27
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
28
+ return /* @__PURE__ */ t(c, { ...K, label: n.bold });
29
+ }
30
+ const $ = {
31
+ icon: /* @__PURE__ */ t("em", { children: "I" }),
32
+ command: (e) => e.chain().focus().toggleItalic().run(),
33
+ isActive: (e) => e.isActive("italic")
34
+ };
35
+ function xe() {
36
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
37
+ return /* @__PURE__ */ t(c, { ...$, label: n.italic });
38
+ }
39
+ const X = {
40
+ icon: /* @__PURE__ */ t("span", { style: { textDecoration: "underline" }, children: "U" }),
41
+ command: (e) => e.chain().focus().toggleUnderline().run(),
42
+ isActive: (e) => e.isActive("underline")
43
+ };
44
+ function Ce() {
45
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
46
+ return /* @__PURE__ */ t(c, { ...X, label: n.underline });
47
+ }
48
+ const q = {
49
+ icon: /* @__PURE__ */ t(E, { size: g.Small }),
50
+ command: (e) => e.chain().focus().toggleBulletList().run(),
51
+ isActive: (e) => e.isActive("bulletList")
52
+ };
53
+ function Ae() {
54
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
55
+ return /* @__PURE__ */ t(c, { ...q, label: n.bulletList });
56
+ }
57
+ const G = {
58
+ icon: /* @__PURE__ */ t(j, { size: g.Small }),
59
+ command: (e) => e.chain().focus().toggleOrderedList().run(),
60
+ isActive: (e) => e.isActive("orderedList")
61
+ };
62
+ function ze() {
63
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
64
+ return /* @__PURE__ */ t(c, { ...G, label: n.orderedList });
65
+ }
66
+ const J = {
67
+ icon: /* @__PURE__ */ t("span", { style: { fontSize: "0.8em", fontWeight: 600 }, children: "H1" }),
68
+ command: (e) => e.chain().focus().toggleHeading({ level: 1 }).run(),
69
+ isActive: (e) => e.isActive("heading", { level: 1 })
70
+ };
71
+ function ye() {
72
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
73
+ return /* @__PURE__ */ t(c, { ...J, label: n.heading1 });
74
+ }
75
+ const N = {
76
+ icon: /* @__PURE__ */ t("span", { style: { fontSize: "0.8em", fontWeight: 600 }, children: "H2" }),
77
+ command: (e) => e.chain().focus().toggleHeading({ level: 2 }).run(),
78
+ isActive: (e) => e.isActive("heading", { level: 2 })
79
+ };
80
+ function Ue() {
81
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
82
+ return /* @__PURE__ */ t(c, { ...N, label: n.heading2 });
83
+ }
84
+ const Q = {
85
+ icon: /* @__PURE__ */ t("span", { style: { fontSize: "0.8em", fontWeight: 600 }, children: "H3" }),
86
+ command: (e) => e.chain().focus().toggleHeading({ level: 3 }).run(),
87
+ isActive: (e) => e.isActive("heading", { level: 3 })
88
+ };
89
+ function He() {
90
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
91
+ return /* @__PURE__ */ t(c, { ...Q, label: n.heading3 });
92
+ }
93
+ const Y = {
94
+ icon: /* @__PURE__ */ t("span", { style: { fontSize: "0.8em", fontWeight: 600 }, children: "H4" }),
95
+ command: (e) => e.chain().focus().toggleHeading({ level: 4 }).run(),
96
+ isActive: (e) => e.isActive("heading", { level: 4 })
97
+ };
98
+ function Be() {
99
+ const { locale: e } = r(), n = i[e] ?? i["en-US"];
100
+ return /* @__PURE__ */ t(c, { ...Y, label: n.heading4 });
101
+ }
102
+ function Z(e) {
103
+ return e.startsWith("tel:") ? e.slice(4) : e.startsWith("mailto:") ? e.slice(7) : e;
104
+ }
105
+ const _ = /^\+?[\d\s\-().]{7,}$/;
106
+ function ee(e) {
107
+ const n = e.trim();
108
+ if (!n) return "";
109
+ if (n.startsWith("tel:")) return n;
110
+ if (_.test(n)) return `tel:${n}`;
111
+ const [l] = T(n);
112
+ return l && l.isLink && l.start === 0 && l.end === n.length ? l.href : "";
113
+ }
114
+ function Ie() {
115
+ const { editor: e, locale: n } = r(), l = i[n] ?? i["en-US"], [d, p] = C(""), [f, v] = C(""), h = x({
116
+ editor: e,
117
+ selector: ({ editor: o }) => o ? o.getAttributes("link").href ?? "" : ""
118
+ }), k = x({
119
+ editor: e,
120
+ selector: ({ editor: o }) => {
121
+ if (!o) return "";
122
+ const { from: u, to: a } = o.state.selection;
123
+ return o.state.doc.textBetween(u, a, " ");
124
+ }
125
+ });
126
+ A(() => {
127
+ p(Z(h ?? ""));
128
+ }, [h]), A(() => {
129
+ v(k ?? "");
130
+ }, [k]);
131
+ const M = z(() => {
132
+ if (!e) return;
133
+ const o = ee(d);
134
+ if (!o) {
135
+ e.chain().focus().extendMarkRange("link").unsetLink().run();
136
+ return;
137
+ }
138
+ e.chain().focus().extendMarkRange("link").command(({ tr: u, state: a }) => {
139
+ const { from: S, to: b } = a.selection, W = f || a.doc.textBetween(S, b, " ") || o, L = a.schema.marks.link?.create({ href: o });
140
+ return L ? (u.replaceWith(S, b, a.schema.text(W, [L])), !0) : !1;
141
+ }).run();
142
+ }, [e, d, f]), V = z(() => {
143
+ e?.chain().focus().extendMarkRange("link").unsetLink().run();
144
+ }, [e]);
145
+ return e ? /* @__PURE__ */ s(P, { closeOnSelect: !1, placement: "bottom-start", children: [
146
+ /* @__PURE__ */ t(R, { label: l.link, placement: "top", children: /* @__PURE__ */ t(w, { size: "sm", variant: "ghost", "aria-label": l.link, px: 0, children: /* @__PURE__ */ t(F, { size: g.Small }) }) }),
147
+ /* @__PURE__ */ s(O, { px: m.Medium, children: [
148
+ /* @__PURE__ */ s(y, { mb: m.Small, children: [
149
+ /* @__PURE__ */ t(U, { fontSize: I.Small, children: l.linkDisplayLabel }),
150
+ /* @__PURE__ */ t(
151
+ H,
152
+ {
153
+ value: f,
154
+ onChange: (o) => v(o.target.value),
155
+ onKeyDown: (o) => o.stopPropagation(),
156
+ placeholder: l.linkDisplayPlaceholder,
157
+ autoFocus: !0,
158
+ size: "sm"
159
+ }
160
+ )
161
+ ] }),
162
+ /* @__PURE__ */ s(y, { children: [
163
+ /* @__PURE__ */ t(U, { fontSize: I.Small, children: l.linkLabel }),
164
+ /* @__PURE__ */ t(
165
+ H,
166
+ {
167
+ value: d,
168
+ onChange: (o) => p(o.target.value),
169
+ onKeyDown: (o) => o.stopPropagation(),
170
+ placeholder: l.linkPlaceholder,
171
+ size: "sm"
172
+ }
173
+ )
174
+ ] }),
175
+ /* @__PURE__ */ s(
176
+ D,
177
+ {
178
+ display: "flex",
179
+ justifyContent: "flex-end",
180
+ gap: m.XSmall,
181
+ mt: m.Small,
182
+ children: [
183
+ h && /* @__PURE__ */ t(B, { variant: "ghost", size: "sm", onClick: V, children: l.removeLink }),
184
+ /* @__PURE__ */ t(B, { variant: "primary", size: "sm", onClick: M, children: l.save })
185
+ ]
186
+ }
187
+ )
188
+ ] })
189
+ ] }) : null;
190
+ }
191
+ export {
192
+ Le as Bold,
193
+ Ae as BulletList,
194
+ ye as Heading1,
195
+ Ue as Heading2,
196
+ He as Heading3,
197
+ Be as Heading4,
198
+ xe as Italic,
199
+ Ie as LinkControl,
200
+ ze as OrderedList,
201
+ Ce as Underline
202
+ };
@@ -0,0 +1,4 @@
1
+ export declare const proseMirrorContainerCss: import('@chakra-ui/react').SystemStyleObject;
2
+ export declare const toolbarCss: import('@chakra-ui/react').SystemStyleObject;
3
+ export declare const proseMirrorContentCss: import('@chakra-ui/react').SystemStyleObject;
4
+ //# sourceMappingURL=rich-text-editor-recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor-recipe.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-editor-recipe.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,uBAAuB,8CAuBlC,CAAC;AAEH,eAAO,MAAM,UAAU,8CAKrB,CAAC;AAEH,eAAO,MAAM,qBAAqB,8CAwBhC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { defineStyle as o } from "@chakra-ui/react";
2
+ import { ThemeSpaceVariable as r, ThemeColorVariable as i, ThemeBorderVariable as t, ThemeRadiusVariable as n, ThemeFontSizeVariable as e } from "../../theme/theme-types.js";
3
+ const d = o({
4
+ display: "flex",
5
+ flexDirection: "column",
6
+ border: t.XSmall,
7
+ borderColor: i.OnSurfaceBorder,
8
+ borderRadius: n.Small,
9
+ overflow: "hidden",
10
+ "--content-padding-x": r.Small,
11
+ "--content-padding-y": r.Small,
12
+ "& .ProseMirror": {
13
+ outline: "none",
14
+ whiteSpace: "pre-wrap",
15
+ minHeight: "var(--content-min-height, 100px)",
16
+ paddingInline: "var(--content-padding-x)",
17
+ paddingBlock: "var(--content-padding-y)"
18
+ },
19
+ "&[data-disabled] .ProseMirror": {
20
+ pointerEvents: "none",
21
+ opacity: 0.5,
22
+ cursor: "not-allowed"
23
+ }
24
+ }), s = o({
25
+ borderBottom: t.XSmall,
26
+ borderBottomColor: i.OnSurfaceBorder,
27
+ py: r.XSmall,
28
+ px: r.XSmall
29
+ }), m = o({
30
+ lineHeight: "1.5",
31
+ "& .ProseMirror > * + *": { marginTop: r.Small },
32
+ "& .ProseMirror p": { margin: r.None },
33
+ "& .ProseMirror ul:not([data-type='taskList'])": {
34
+ paddingInlineStart: r.Medium,
35
+ listStyleType: "disc"
36
+ },
37
+ "& .ProseMirror ol:not([data-type='taskList'])": {
38
+ paddingInlineStart: r.Medium,
39
+ listStyleType: "decimal"
40
+ },
41
+ "& .ProseMirror a": {
42
+ color: i.Primary,
43
+ textDecoration: "underline",
44
+ cursor: "pointer"
45
+ },
46
+ "& .ProseMirror h1": { fontSize: e.X2Large, fontWeight: "bold", lineHeight: 1.2 },
47
+ "& .ProseMirror h2": { fontSize: e.XLarge, fontWeight: "bold", lineHeight: 1.25 },
48
+ "& .ProseMirror h3": { fontSize: e.Large, fontWeight: "bold", lineHeight: 1.3 },
49
+ "& .ProseMirror h4": { fontSize: e.Medium, fontWeight: "bold", lineHeight: 1.4 },
50
+ "& .ProseMirror strong": { fontWeight: "bold" },
51
+ "& .ProseMirror em": { fontStyle: "italic" },
52
+ "& .ProseMirror u": { textDecoration: "underline" }
53
+ });
54
+ export {
55
+ d as proseMirrorContainerCss,
56
+ m as proseMirrorContentCss,
57
+ s as toolbarCss
58
+ };
@@ -0,0 +1,6 @@
1
+ declare function EditorWithToolbar(): import("react/jsx-runtime").JSX.Element;
2
+ declare function EditorWithContent(): import("react/jsx-runtime").JSX.Element;
3
+ declare function EditorDisabled(): import("react/jsx-runtime").JSX.Element;
4
+ declare function Renderer(): import("react/jsx-runtime").JSX.Element;
5
+ export { EditorDisabled, EditorWithContent, EditorWithToolbar, Renderer };
6
+ //# sourceMappingURL=rich-text-editor.composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor.composition.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-editor.composition.tsx"],"names":[],"mappings":"AAoEA,iBAAS,iBAAiB,4CA2BzB;AAED,iBAAS,iBAAiB,4CA2BzB;AAED,iBAAS,cAAc,4CAgBtB;AAED,iBAAS,QAAQ,4CAEhB;AAED,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ThemeStyleProps } from '../../theme/index.js';
2
+ import { EditorContentProps } from '@tiptap/react';
3
+ import { ReactNode } from 'react';
4
+ import { RichTextEditorRootProps, RichTextEditorToolbarProps } from './types.js';
5
+ export declare function RichTextEditorRoot({ editor, children, locale, disabled, ...rest }: RichTextEditorRootProps & ThemeStyleProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function RichTextEditorToolbar({ children, ...rest }: RichTextEditorToolbarProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function RichTextEditorContent({ ...rest }: Omit<EditorContentProps, "editor">): import("react/jsx-runtime").JSX.Element | null;
8
+ export declare function RichTextEditorControlGroup({ children, ...rest }: {
9
+ children: ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=rich-text-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEnF,wBAAgB,kBAAkB,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAgB,EAChB,QAAQ,EACR,GAAG,IAAI,EACP,EAAE,uBAAuB,GAAG,eAAe,2CAc3C;AAED,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,0BAA0B,2CAoBtF;AAED,wBAAgB,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,kDAIpF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAMxF"}
@@ -0,0 +1,60 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { HStack as i, Box as n } from "@chakra-ui/react";
3
+ import { EditorContent as s } from "../../packages/casper-ui-library/node_modules/@tiptap/react/dist/index.js";
4
+ import { useMemo as m } from "react";
5
+ import { useRichTextEditorContext as p, RichTextEditorContext as u } from "./rich-text-editor-context.js";
6
+ import { toolbarCss as f, proseMirrorContainerCss as d, proseMirrorContentCss as x } from "./rich-text-editor-recipe.js";
7
+ import { ThemeSpaceVariable as h, ThemeColorVariable as C } from "../../theme/theme-types.js";
8
+ function V({
9
+ editor: r,
10
+ children: o,
11
+ locale: e = "en-US",
12
+ disabled: a,
13
+ ...c
14
+ }) {
15
+ const l = m(() => ({ editor: r ?? null, locale: e }), [r, e]);
16
+ return /* @__PURE__ */ t(u.Provider, { value: l, children: /* @__PURE__ */ t(
17
+ n,
18
+ {
19
+ "data-disabled": a || void 0,
20
+ css: [d, x],
21
+ ...c,
22
+ children: o
23
+ }
24
+ ) });
25
+ }
26
+ function g({ children: r, ...o }) {
27
+ return /* @__PURE__ */ t(
28
+ i,
29
+ {
30
+ flexWrap: "wrap",
31
+ separator: /* @__PURE__ */ t(
32
+ n,
33
+ {
34
+ role: "separator",
35
+ h: "1.25rem",
36
+ w: "1px",
37
+ alignSelf: "center",
38
+ color: C.OnSurfaceBorder,
39
+ flexShrink: 0
40
+ }
41
+ ),
42
+ css: f,
43
+ ...o,
44
+ children: r
45
+ }
46
+ );
47
+ }
48
+ function k({ ...r }) {
49
+ const { editor: o } = p();
50
+ return o ? /* @__PURE__ */ t(s, { editor: o, ...r }) : null;
51
+ }
52
+ function w({ children: r, ...o }) {
53
+ return /* @__PURE__ */ t(i, { gap: h.XSmall, ...o, children: r });
54
+ }
55
+ export {
56
+ k as RichTextEditorContent,
57
+ w as RichTextEditorControlGroup,
58
+ V as RichTextEditorRoot,
59
+ g as RichTextEditorToolbar
60
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rich-text-editor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor.test.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-editor.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rich-text-editor.visual.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor.visual.test.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-editor.visual.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { RichTextRendererProps } from './types.js';
2
+ export declare function RichTextRenderer({ content, ...rest }: RichTextRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=rich-text-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-renderer.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/rich-text-renderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAgBrD,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,2CAQ3E"}
@@ -0,0 +1,21 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import { Box as n } from "@chakra-ui/react";
3
+ import { generateHTML as i } from "../../node_modules/@tiptap/core/dist/index.js";
4
+ import { useMemo as m } from "react";
5
+ import { richTextExtensions as c } from "./extensions.js";
6
+ import { proseMirrorContentCss as f } from "./rich-text-editor-recipe.js";
7
+ const a = /^(https?|mailto):/i, h = /^tel:\+?[\d\s\-().]{7,}$/i, l = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
8
+ function p(e) {
9
+ const r = new DOMParser().parseFromString(e, "text/html");
10
+ return r.querySelectorAll("a[href]").forEach((t) => {
11
+ const o = t.getAttribute("href") ?? "";
12
+ a.test(o) || h.test(o) || l.test(o) && t.removeAttribute("href");
13
+ }), r.body.innerHTML;
14
+ }
15
+ function S({ content: e, ...r }) {
16
+ const t = m(() => p(i(e, c)), [e]);
17
+ return /* @__PURE__ */ s(n, { css: f, ...r, children: /* @__PURE__ */ s("div", { className: "ProseMirror", dangerouslySetInnerHTML: { __html: t } }) });
18
+ }
19
+ export {
20
+ S as RichTextRenderer
21
+ };
@@ -0,0 +1,23 @@
1
+ import { RichTextEditorLocale } from './types.js';
2
+ declare const en: {
3
+ bold: string;
4
+ italic: string;
5
+ underline: string;
6
+ bulletList: string;
7
+ orderedList: string;
8
+ heading: string;
9
+ heading1: string;
10
+ heading2: string;
11
+ heading3: string;
12
+ heading4: string;
13
+ link: string;
14
+ linkDisplayLabel: string;
15
+ linkDisplayPlaceholder: string;
16
+ linkLabel: string;
17
+ linkPlaceholder: string;
18
+ removeLink: string;
19
+ save: string;
20
+ };
21
+ export declare const translations: Record<RichTextEditorLocale, typeof en>;
22
+ export {};
23
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;CAkBP,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAkGhE,CAAC"}
@@ -0,0 +1,120 @@
1
+ const e = {
2
+ bold: "Bold",
3
+ italic: "Italic",
4
+ underline: "Underline",
5
+ bulletList: "Bullet list",
6
+ orderedList: "Ordered list",
7
+ heading: "Heading",
8
+ heading1: "Heading 1",
9
+ heading2: "Heading 2",
10
+ heading3: "Heading 3",
11
+ heading4: "Heading 4",
12
+ link: "Link",
13
+ linkDisplayLabel: "Display text",
14
+ linkDisplayPlaceholder: "Link text",
15
+ linkLabel: "URL",
16
+ linkPlaceholder: "URL, email or tel",
17
+ removeLink: "Remove link",
18
+ save: "Save"
19
+ }, i = {
20
+ "en-US": e,
21
+ "en-GB": e,
22
+ "sv-SE": {
23
+ bold: "Fet",
24
+ italic: "Kursiv",
25
+ underline: "Understrykning",
26
+ bulletList: "Punktlista",
27
+ orderedList: "Numrerad lista",
28
+ heading: "Rubrik",
29
+ heading1: "Rubrik 1",
30
+ heading2: "Rubrik 2",
31
+ heading3: "Rubrik 3",
32
+ heading4: "Rubrik 4",
33
+ link: "Länk",
34
+ linkDisplayLabel: "Visningstext",
35
+ linkDisplayPlaceholder: "Länktext",
36
+ linkLabel: "URL",
37
+ linkPlaceholder: "URL, e-post eller tel",
38
+ removeLink: "Ta bort länk",
39
+ save: "Spara"
40
+ },
41
+ "nb-NO": {
42
+ bold: "Fet",
43
+ italic: "Kursiv",
44
+ underline: "Understrek",
45
+ bulletList: "Punktliste",
46
+ orderedList: "Numrert liste",
47
+ heading: "Overskrift",
48
+ heading1: "Overskrift 1",
49
+ heading2: "Overskrift 2",
50
+ heading3: "Overskrift 3",
51
+ heading4: "Overskrift 4",
52
+ link: "Lenke",
53
+ linkDisplayLabel: "Visningstekst",
54
+ linkDisplayPlaceholder: "Lenketekst",
55
+ linkLabel: "URL",
56
+ linkPlaceholder: "URL, e-post eller tlf",
57
+ removeLink: "Fjern lenke",
58
+ save: "Lagre"
59
+ },
60
+ "da-DK": {
61
+ bold: "Fed",
62
+ italic: "Kursiv",
63
+ underline: "Understregning",
64
+ bulletList: "Punktliste",
65
+ orderedList: "Numreret liste",
66
+ heading: "Overskrift",
67
+ heading1: "Overskrift 1",
68
+ heading2: "Overskrift 2",
69
+ heading3: "Overskrift 3",
70
+ heading4: "Overskrift 4",
71
+ link: "Link",
72
+ linkDisplayLabel: "Visningstekst",
73
+ linkDisplayPlaceholder: "Linktekst",
74
+ linkLabel: "URL",
75
+ linkPlaceholder: "URL, email eller tlf",
76
+ removeLink: "Fjern link",
77
+ save: "Gem"
78
+ },
79
+ "fr-FR": {
80
+ bold: "Gras",
81
+ italic: "Italique",
82
+ underline: "Souligné",
83
+ bulletList: "Liste à puces",
84
+ orderedList: "Liste numérotée",
85
+ heading: "Titre",
86
+ heading1: "Titre 1",
87
+ heading2: "Titre 2",
88
+ heading3: "Titre 3",
89
+ heading4: "Titre 4",
90
+ link: "Lien",
91
+ linkDisplayLabel: "Texte affiché",
92
+ linkDisplayPlaceholder: "Texte du lien",
93
+ linkLabel: "URL",
94
+ linkPlaceholder: "URL, e-mail ou tél",
95
+ removeLink: "Supprimer le lien",
96
+ save: "Enregistrer"
97
+ },
98
+ "nl-BE": {
99
+ bold: "Vet",
100
+ italic: "Cursief",
101
+ underline: "Onderstreept",
102
+ bulletList: "Opsommingslijst",
103
+ orderedList: "Genummerde lijst",
104
+ heading: "Kop",
105
+ heading1: "Kop 1",
106
+ heading2: "Kop 2",
107
+ heading3: "Kop 3",
108
+ heading4: "Kop 4",
109
+ link: "Link",
110
+ linkDisplayLabel: "Weergavetekst",
111
+ linkDisplayPlaceholder: "Linktekst",
112
+ linkLabel: "URL",
113
+ linkPlaceholder: "URL, e-mail of tel",
114
+ removeLink: "Link verwijderen",
115
+ save: "Opslaan"
116
+ }
117
+ };
118
+ export {
119
+ i as translations
120
+ };
@@ -0,0 +1,30 @@
1
+ import { ThemeStyleProps } from '../../theme/index.js';
2
+ import { Editor, JSONContent } from '@tiptap/core';
3
+ import { ReactNode } from 'react';
4
+ export type { JSONContent } from '@tiptap/core';
5
+ export type RichTextEditorLocale = "en-US" | "en-GB" | "sv-SE" | "nb-NO" | "da-DK" | "fr-FR" | "nl-BE";
6
+ export interface RichTextEditorRootProps {
7
+ editor: Editor | null;
8
+ children: ReactNode;
9
+ locale?: RichTextEditorLocale;
10
+ disabled?: boolean;
11
+ }
12
+ export interface RichTextEditorToolbarProps {
13
+ children: ReactNode;
14
+ }
15
+ export interface RichTextRendererProps extends ThemeStyleProps {
16
+ content: JSONContent;
17
+ }
18
+ export interface UseRichTextEditorOptions {
19
+ initialContent?: JSONContent;
20
+ onChange?: (content: JSONContent) => void;
21
+ autoFocus?: boolean;
22
+ }
23
+ export interface BooleanControlConfig {
24
+ label: string;
25
+ icon: ReactNode;
26
+ command: (editor: Editor) => void;
27
+ isActive: (editor: Editor) => boolean;
28
+ isDisabled?: (editor: Editor) => boolean;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvG,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC7D,OAAO,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACxC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC"}
@@ -0,0 +1,3 @@
1
+ import { UseRichTextEditorOptions } from './types.js';
2
+ export declare function useRichTextEditor({ initialContent, onChange, autoFocus, }?: UseRichTextEditorOptions): import('@tiptap/core').Editor;
3
+ //# sourceMappingURL=use-rich-text-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-rich-text-editor.d.ts","sourceRoot":"","sources":["../../../lib/components/rich-text-editor/use-rich-text-editor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,wBAAgB,iBAAiB,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,SAAiB,GACjB,GAAE,wBAA6B,iCAO/B"}
@@ -0,0 +1,17 @@
1
+ import { useEditor as r } from "../../packages/casper-ui-library/node_modules/@tiptap/react/dist/index.js";
2
+ import { richTextExtensions as n } from "./extensions.js";
3
+ function f({
4
+ initialContent: e,
5
+ onChange: t,
6
+ autoFocus: o = !1
7
+ } = {}) {
8
+ return r({
9
+ extensions: n,
10
+ content: e,
11
+ autofocus: o ? "end" : !1,
12
+ onUpdate: t ? ({ editor: i }) => t(i.getJSON()) : void 0
13
+ });
14
+ }
15
+ export {
16
+ f as useRichTextEditor
17
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"table-header-dropdown.d.ts","sourceRoot":"","sources":["../../../lib/components/table/table-header-dropdown.tsx"],"names":[],"mappings":"AAWA,OAAO,EAGN,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAQ,KAAK,GAAG,EAAwB,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,wBAAwB,CAAC,KAAK,SAAS,SAAS,IAAI;IACxD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,uBAAuB,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAClF,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;IACxF,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,gBAAgB,EAAE,eAAe,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,KAAK,SAAS,SAAS,EAAE,kKAW5D,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAAE,4CAiJhG,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAyC,OAAO,4BAA4B,CAAC"}
1
+ {"version":3,"file":"table-header-dropdown.d.ts","sourceRoot":"","sources":["../../../lib/components/table/table-header-dropdown.tsx"],"names":[],"mappings":"AAWA,OAAO,EAGN,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAQ,KAAK,GAAG,EAAwB,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,wBAAwB,CAAC,KAAK,SAAS,SAAS,IAAI;IACxD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,uBAAuB,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAClF,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;IACxF,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,gBAAgB,EAAE,eAAe,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,KAAK,SAAS,SAAS,EAAE,kKAW5D,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAAE,4CAqJhG,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAyC,OAAO,4BAA4B,CAAC"}