@clubmed/usg-chat-ui 1.0.1 → 1.2.5
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/chunks/_commonjsHelpers.js +9 -0
- package/chunks/_commonjsHelpers.js.map +1 -0
- package/chunks/browser.js +579 -0
- package/chunks/browser.js.map +1 -0
- package/chunks/client.js +27323 -0
- package/chunks/client.js.map +1 -0
- package/chunks/index.js +59 -32
- package/chunks/index.js.map +1 -1
- package/chunks/index2.js +32 -59
- package/chunks/index2.js.map +1 -1
- package/chunks/index3.js +22 -740
- package/chunks/index3.js.map +1 -1
- package/chunks/index4.js +740 -22
- package/chunks/index4.js.map +1 -1
- package/chunks/index5.js +1 -1
- package/chunks/index6.js +144 -150
- package/chunks/index6.js.map +1 -1
- package/chunks/index7.js +14 -13
- package/chunks/index7.js.map +1 -1
- package/chunks/magic-string.es.js +664 -0
- package/chunks/magic-string.es.js.map +1 -0
- package/chunks/react.esm.js +10007 -0
- package/chunks/react.esm.js.map +1 -0
- package/chunks/{collaboration.js → useCollaboration.js} +536 -523
- package/chunks/useCollaboration.js.map +1 -0
- package/chunks/vi.2VT5v0um.js +10573 -0
- package/chunks/vi.2VT5v0um.js.map +1 -0
- package/contexts/ChatContext.d.ts +2 -1
- package/contexts/ChatContext.js +32 -30
- package/contexts/ChatContext.js.map +1 -1
- package/core/interfaces/ChatConfig.d.ts +4 -0
- package/core/interfaces/StoryVersion.d.ts +7 -2
- package/index.d.ts +1 -0
- package/molecules/AiElements/Message.js +1 -1
- package/molecules/AiElements/Response.js +15 -13
- package/molecules/AiElements/Response.js.map +1 -1
- package/molecules/AiElements/Sources.d.ts +2 -2
- package/molecules/AiElements/Sources.js.map +1 -1
- package/molecules/Buttons/Button.d.ts +1 -1
- package/molecules/Buttons/Button.js +2 -2
- package/molecules/{AiElements → CodeBlock}/CodeBlock.d.ts +5 -2
- package/molecules/CodeBlock/CodeBlock.js +128 -0
- package/molecules/CodeBlock/CodeBlock.js.map +1 -0
- package/molecules/CodeBlock/CodeBlock.test.d.ts +1 -0
- package/molecules/CodeBlock/CodeBlock.test.js +3158 -0
- package/molecules/CodeBlock/CodeBlock.test.js.map +1 -0
- package/molecules/CodeBlock/highlightCode.d.ts +2 -0
- package/molecules/CodeBlock/highlightCode.js +5850 -0
- package/molecules/CodeBlock/highlightCode.js.map +1 -0
- package/molecules/CodeBlock/highlightCode.test.d.ts +1 -0
- package/molecules/CodeBlock/highlightCode.test.js +47 -0
- package/molecules/CodeBlock/highlightCode.test.js.map +1 -0
- package/molecules/Collapsibles/Collapsible.js +1 -1
- package/molecules/Forms/InputGroups/InputGroup.js +1 -1
- package/molecules/Labels/Label.js +2 -2
- package/molecules/Notifications/{Sonner.js → Toaster.js} +2 -2
- package/molecules/Notifications/Toaster.js.map +1 -0
- package/molecules/Notifications/{use-toast.js → useToast.js} +1 -1
- package/molecules/Notifications/useToast.js.map +1 -0
- package/{organisms → molecules}/RichText/DynamicEditor.js.map +1 -1
- package/molecules/RichText/EditorWithAI.js +55854 -0
- package/molecules/RichText/EditorWithAI.js.map +1 -0
- package/molecules/RichText/useCollaboration.d.ts +9 -0
- package/molecules/RichText/useCollaboration.js +8 -0
- package/molecules/RichText/useCollaboration.js.map +1 -0
- package/molecules/RichText/useCollaboration.test.d.ts +1 -0
- package/molecules/RichText/useCollaboration.test.js +70 -0
- package/molecules/RichText/useCollaboration.test.js.map +1 -0
- package/molecules/Tabs/Tabs.js +1 -1
- package/organisms/canvas/ApiDocsCanvas.js +15 -15
- package/organisms/canvas/ApiDocsCanvas.js.map +1 -1
- package/organisms/canvas/ReleaseNoteCanvas.js +2 -2
- package/organisms/canvas/ReleaseNoteCanvas.js.map +1 -1
- package/organisms/canvas/StoryCanvas.js +2 -2
- package/organisms/canvas/StoryCanvas.js.map +1 -1
- package/organisms/chat/MessageActions.js +1 -1
- package/organisms/chat/MessageActions.js.map +1 -1
- package/organisms/chat/hooks/useChat.js +1 -1
- package/organisms/chat/hooks/useChat.js.map +1 -1
- package/organisms/chat/hooks/useChatKeyboardsShortcuts.js +16 -33
- package/organisms/chat/hooks/useChatKeyboardsShortcuts.js.map +1 -1
- package/organisms/chat/hooks/useConversations.js +1 -1
- package/organisms/chat/hooks/useConversations.js.map +1 -1
- package/organisms/settings/SettingsModal.js +1 -1
- package/package.json +3 -4
- package/.npm/_logs/2026-01-19T16_54_30_380Z-debug-0.log +0 -19
- package/.npm/_logs/2026-01-19T16_54_30_467Z-debug-0.log +0 -19
- package/.npm/_logs/2026-01-19T16_54_30_553Z-debug-0.log +0 -14
- package/chunks/collaboration.js.map +0 -1
- package/core/collaboration.d.ts +0 -6
- package/core/collaboration.js +0 -5
- package/core/collaboration.js.map +0 -1
- package/molecules/AiElements/CodeBlock.js +0 -6525
- package/molecules/AiElements/CodeBlock.js.map +0 -1
- package/molecules/Notifications/Sonner.js.map +0 -1
- package/molecules/Notifications/use-toast.js.map +0 -1
- package/molecules/index.d.ts +0 -28
- package/molecules/index.js +0 -88
- package/molecules/index.js.map +0 -1
- package/organisms/RichText/EditorWithAI.js +0 -83167
- package/organisms/RichText/EditorWithAI.js.map +0 -1
- /package/molecules/Notifications/{Sonner.d.ts → Toaster.d.ts} +0 -0
- /package/molecules/Notifications/{use-toast.d.ts → useToast.d.ts} +0 -0
- /package/{organisms → molecules}/RichText/DynamicEditor.d.ts +0 -0
- /package/{organisms → molecules}/RichText/DynamicEditor.js +0 -0
- /package/{organisms → molecules}/RichText/EditorWithAI.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { v as n, d, b as h, i as l, g as e } from "../../chunks/vi.2VT5v0um.js";
|
|
2
|
+
const a = n.fn(
|
|
3
|
+
async (o, t) => `<pre data-theme="${t.theme}">${o}</pre>`
|
|
4
|
+
), r = n.fn(
|
|
5
|
+
(o, t) => {
|
|
6
|
+
var i;
|
|
7
|
+
return `sanitized:${(i = t.ALLOWED_TAGS) == null ? void 0 : i.toString()}:${o}`;
|
|
8
|
+
}
|
|
9
|
+
);
|
|
10
|
+
n.mock("shiki", () => ({
|
|
11
|
+
codeToHtml: a
|
|
12
|
+
}));
|
|
13
|
+
n.mock("isomorphic-dompurify", () => ({
|
|
14
|
+
default: {
|
|
15
|
+
sanitize: r
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
18
|
+
const g = {
|
|
19
|
+
ALLOWED_TAGS: ["pre", "code", "span", "div"],
|
|
20
|
+
ALLOWED_ATTR: ["class", "style", "data-line"],
|
|
21
|
+
FORBID_TAGS: ["script", "iframe", "object", "embed", "link"],
|
|
22
|
+
FORBID_ATTR: ["onerror", "onload", "onclick", "onmouseover"]
|
|
23
|
+
}, m = async () => (await import("./highlightCode.js")).highlightCode;
|
|
24
|
+
d("highlightCode", () => {
|
|
25
|
+
h(() => {
|
|
26
|
+
n.resetModules(), a.mockClear(), r.mockClear();
|
|
27
|
+
}), l("sanitizes both light and dark HTML outputs from Shiki", async () => {
|
|
28
|
+
const o = await m(), [t, i] = await o(
|
|
29
|
+
"const value = 42;",
|
|
30
|
+
"tsx",
|
|
31
|
+
!1
|
|
32
|
+
);
|
|
33
|
+
e(a).toHaveBeenCalledTimes(2), e(a.mock.calls.map(([, s]) => s.theme)).toEqual([
|
|
34
|
+
"one-light",
|
|
35
|
+
"one-dark-pro"
|
|
36
|
+
]), e(r).toHaveBeenCalledTimes(2), e(r).toHaveBeenCalledWith(
|
|
37
|
+
e.stringContaining("const value = 42;"),
|
|
38
|
+
g
|
|
39
|
+
), e(t).toContain("sanitized"), e(i).toContain("sanitized");
|
|
40
|
+
}), l("includes the line number transformer when requested", async () => {
|
|
41
|
+
var c;
|
|
42
|
+
await (await m())("const another = 0;", "tsx", !0);
|
|
43
|
+
const [t] = a.mock.calls, s = ((t == null ? void 0 : t[1]) ?? {}).transformers ?? [];
|
|
44
|
+
e(s).toHaveLength(1), e(typeof ((c = s[0]) == null ? void 0 : c.line)).toBe("function");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=highlightCode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlightCode.test.js","sources":["../../../lib/molecules/CodeBlock/highlightCode.test.ts"],"sourcesContent":["import type {BundledLanguage} from \"shiki\";\nimport {beforeEach, describe, expect, it, vi} from \"vitest\";\n\nconst codeToHtmlMock = vi.fn(\n async (code: string, options: {theme: string; transformers?: unknown}) =>\n `<pre data-theme=\"${options.theme}\">${code}</pre>`\n);\nconst sanitizeMock = vi.fn(\n (html: string, config: Record<string, unknown>) => `sanitized:${config.ALLOWED_TAGS?.toString()}:${html}`\n);\n\nvi.mock(\"shiki\", () => ({\n codeToHtml: codeToHtmlMock,\n}));\n\nvi.mock(\"isomorphic-dompurify\", () => ({\n default: {\n sanitize: sanitizeMock,\n },\n}));\n\nconst SANITIZE_CONFIG_EXPECTATION = {\n ALLOWED_TAGS: [\"pre\", \"code\", \"span\", \"div\"],\n ALLOWED_ATTR: [\"class\", \"style\", \"data-line\"],\n FORBID_TAGS: [\"script\", \"iframe\", \"object\", \"embed\", \"link\"],\n FORBID_ATTR: [\"onerror\", \"onload\", \"onclick\", \"onmouseover\"],\n};\n\nconst importHighlightCode = async () => {\n const mod = await import(\"./highlightCode\");\n return mod.highlightCode;\n};\n\ndescribe(\"highlightCode\", () => {\n beforeEach(() => {\n vi.resetModules();\n codeToHtmlMock.mockClear();\n sanitizeMock.mockClear();\n });\n\n it(\"sanitizes both light and dark HTML outputs from Shiki\", async () => {\n const highlightCode = await importHighlightCode();\n\n const [lightHtml, darkHtml] = await highlightCode(\n \"const value = 42;\",\n \"tsx\" as BundledLanguage,\n false\n );\n\n expect(codeToHtmlMock).toHaveBeenCalledTimes(2);\n expect(codeToHtmlMock.mock.calls.map(([, args]) => args.theme)).toEqual([\n \"one-light\",\n \"one-dark-pro\",\n ]);\n expect(sanitizeMock).toHaveBeenCalledTimes(2);\n expect(sanitizeMock).toHaveBeenCalledWith(\n expect.stringContaining(\"const value = 42;\"),\n SANITIZE_CONFIG_EXPECTATION\n );\n expect(lightHtml).toContain(\"sanitized\");\n expect(darkHtml).toContain(\"sanitized\");\n });\n\n it(\"includes the line number transformer when requested\", async () => {\n const highlightCode = await importHighlightCode();\n\n await highlightCode(\"const another = 0;\", \"tsx\" as BundledLanguage, true);\n\n const [callArgs] = codeToHtmlMock.mock.calls;\n const transformerArgs = (callArgs?.[1] ?? {}) as {\n transformers?: Array<{line?: unknown}>;\n };\n const transformers = transformerArgs.transformers ?? [];\n expect(transformers).toHaveLength(1);\n expect(typeof transformers[0]?.line).toBe(\"function\");\n });\n});\n"],"names":["codeToHtmlMock","vi","code","options","sanitizeMock","html","config","_a","SANITIZE_CONFIG_EXPECTATION","importHighlightCode","describe","beforeEach","it","highlightCode","lightHtml","darkHtml","expect","args","callArgs","transformers"],"mappings":";AAGA,MAAMA,IAAiBC,EAAG;AAAA,EACxB,OAAOC,GAAcC,MACnB,oBAAoBA,EAAQ,KAAK,KAAKD,CAAI;AAC9C,GACME,IAAeH,EAAG;AAAA,EACtB,CAACI,GAAcC,MAAA;;AAAoC,yBAAaC,IAAAD,EAAO,iBAAP,gBAAAC,EAAqB,UAAU,IAAIF,CAAI;AAAA;AACzG;AAEAJ,EAAG,KAAK,SAAS,OAAO;AAAA,EACtB,YAAYD;AACd,EAAE;AAEFC,EAAG,KAAK,wBAAwB,OAAO;AAAA,EACrC,SAAS;AAAA,IACP,UAAUG;AAAA,EAAA;AAEd,EAAE;AAEF,MAAMI,IAA8B;AAAA,EAClC,cAAc,CAAC,OAAO,QAAQ,QAAQ,KAAK;AAAA,EAC3C,cAAc,CAAC,SAAS,SAAS,WAAW;AAAA,EAC5C,aAAa,CAAC,UAAU,UAAU,UAAU,SAAS,MAAM;AAAA,EAC3D,aAAa,CAAC,WAAW,UAAU,WAAW,aAAa;AAC7D,GAEMC,IAAsB,aACd,MAAM,OAAO,oBAAiB,GAC/B;AAGbC,EAAS,iBAAiB,MAAM;AAC9B,EAAAC,EAAW,MAAM;AACf,IAAAV,EAAG,aAAA,GACHD,EAAe,UAAA,GACfI,EAAa,UAAA;AAAA,EACf,CAAC,GAEDQ,EAAG,yDAAyD,YAAY;AACtE,UAAMC,IAAgB,MAAMJ,EAAA,GAEtB,CAACK,GAAWC,CAAQ,IAAI,MAAMF;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGFG,IAAAA,EAAOhB,CAAc,EAAE,sBAAsB,CAAC,GAC9CgB,EAAOhB,EAAe,KAAK,MAAM,IAAI,CAAC,GAAGiB,CAAI,MAAMA,EAAK,KAAK,CAAC,EAAE,QAAQ;AAAA,MACtE;AAAA,MACA;AAAA,IAAA,CACD,GACDD,EAAOZ,CAAY,EAAE,sBAAsB,CAAC,GAC5CY,EAAOZ,CAAY,EAAE;AAAA,MACnBY,EAAO,iBAAiB,mBAAmB;AAAA,MAC3CR;AAAA,IAAA,GAEFQ,EAAOF,CAAS,EAAE,UAAU,WAAW,GACvCE,EAAOD,CAAQ,EAAE,UAAU,WAAW;AAAA,EACxC,CAAC,GAEDH,EAAG,uDAAuD,YAAY;;AAGpE,WAFsB,MAAMH,EAAA,GAER,sBAAsB,OAA0B,EAAI;AAExE,UAAM,CAACS,CAAQ,IAAIlB,EAAe,KAAK,OAIjCmB,MAHmBD,KAAA,gBAAAA,EAAW,OAAM,CAAA,GAGL,gBAAgB,CAAA;AACrDF,IAAAA,EAAOG,CAAY,EAAE,aAAa,CAAC,GACnCH,EAAO,SAAOT,IAAAY,EAAa,CAAC,MAAd,gBAAAZ,EAAiB,KAAI,EAAE,KAAK,UAAU;AAAA,EACtD,CAAC;AACH,CAAC;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as s } from "react/jsx-runtime";
|
|
3
3
|
import * as n from "react";
|
|
4
4
|
import { c as T, P as g, a as S, b as D, u as M, d as $, e as L } from "../../chunks/index5.js";
|
|
5
|
-
import { u as k } from "../../chunks/
|
|
5
|
+
import { u as k } from "../../chunks/index3.js";
|
|
6
6
|
var f = "Collapsible", [F] = T(f), [B, v] = F(f), w = n.forwardRef(
|
|
7
7
|
(e, r) => {
|
|
8
8
|
const {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as r } from "react/jsx-runtime";
|
|
3
|
-
import { c as u } from "../../../chunks/
|
|
3
|
+
import { c as u } from "../../../chunks/index2.js";
|
|
4
4
|
import { cn as n } from "../../../utils/cn.js";
|
|
5
5
|
import { Button as p } from "../../Buttons/Button.js";
|
|
6
6
|
import { Input as l } from "../Inputs/Input.js";
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as o } from "react/jsx-runtime";
|
|
3
3
|
import * as l from "react";
|
|
4
4
|
import "react-dom";
|
|
5
|
-
import { c as u } from "../../chunks/
|
|
6
|
-
import { c as p } from "../../chunks/
|
|
5
|
+
import { c as u } from "../../chunks/index.js";
|
|
6
|
+
import { c as p } from "../../chunks/index2.js";
|
|
7
7
|
import { cn as b } from "../../utils/cn.js";
|
|
8
8
|
var v = [
|
|
9
9
|
"a",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
-
import { T as r } from "../../chunks/
|
|
3
|
+
import { T as r } from "../../chunks/index4.js";
|
|
4
4
|
import { Portal as e } from "../Portal/Portal.js";
|
|
5
5
|
const g = ({ ...o }) => /* @__PURE__ */ t(e, { target: "usg-chat-ui", children: /* @__PURE__ */ t(
|
|
6
6
|
r,
|
|
@@ -21,4 +21,4 @@ const g = ({ ...o }) => /* @__PURE__ */ t(e, { target: "usg-chat-ui", children:
|
|
|
21
21
|
export {
|
|
22
22
|
g as Toaster
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=Toaster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toaster.js","sources":["../../../lib/molecules/Notifications/Toaster.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps } from \"react\";\nimport { Toaster as Sonner } from \"sonner\";\nimport { Portal } from \"../Portal/Portal\";\n\ntype ToasterProps = ComponentProps<typeof Sonner>;\n\nexport const Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Portal target=\"usg-chat-ui\">\n <Sonner\n theme={\"system\"}\n className=\"usg-chat-ui toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton: \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton: \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\"\n }\n }}\n {...props}\n />\n </Portal>\n );\n};\n"],"names":["Toaster","props","jsx","Portal","Sonner"],"mappings":";;;;AAQO,MAAMA,IAAU,CAAC,EAAE,GAAGC,QAEzB,gBAAAC,EAACC,GAAA,EAAO,QAAO,eACb,UAAA,gBAAAD;AAAA,EAACE;AAAAA,EAAA;AAAA,IACC,OAAO;AAAA,IACP,WAAU;AAAA,IACV,cAAc;AAAA,MACZ,YAAY;AAAA,QACV,OACE;AAAA,QACF,aAAa;AAAA,QACb,cAAc;AAAA,QACd,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAED,GAAGH;AAAA,EAAA;AAAA,GAER;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToast.js","sources":["../../../lib/molecules/Notifications/useToast.ts"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = {\n id: string\n title?: string\n description?: string\n action?: React.ReactNode\n variant?: \"default\" | \"destructive\"\n}\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = {\n readonly ADD_TOAST: \"ADD_TOAST\",\n readonly UPDATE_TOAST: \"UPDATE_TOAST\",\n readonly DISMISS_TOAST: \"DISMISS_TOAST\",\n readonly REMOVE_TOAST: \"REMOVE_TOAST\",\n}\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss()\n },\n } as ToasterToast,\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n\n\n\n"],"names":["TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","React","index"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicEditor.js","sources":["../../../lib/
|
|
1
|
+
{"version":3,"file":"DynamicEditor.js","sources":["../../../lib/molecules/RichText/DynamicEditor.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense } from \"react\";\n\ninterface DynamicEditorProps {\n initialMarkdown: string;\n editable?: boolean;\n className?: string;\n onChange?: (markdown: string) => void;\n aiEnabled?: boolean;\n aiContext?: Record<string, unknown>;\n // Collaboration props\n collaborationEnabled?: boolean;\n documentId?: string;\n userName?: string;\n userColor?: string;\n}\n\nconst LazyEditor = lazy(() => import(\"./EditorWithAI\"));\n\nexport function DynamicEditor(props: DynamicEditorProps) {\n return (\n <Suspense\n fallback={\n <div className=\"p-4 text-sm text-muted-foreground\">\n Chargement de l'éditeur...\n </div>\n }\n >\n <LazyEditor {...props} />\n </Suspense>\n );\n}\n"],"names":["LazyEditor","lazy","DynamicEditor","props","jsx","Suspense"],"mappings":";;;AAkBA,MAAMA,IAAaC,EAAK,MAAM,OAAO,mBAAgB,CAAC;AAE/C,SAASC,EAAcC,GAA2B;AACvD,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UACE,gBAAAD,EAAC,OAAA,EAAI,WAAU,qCAAoC,UAAA,8BAEnD;AAAA,MAGF,UAAA,gBAAAA,EAACJ,GAAA,EAAY,GAAGG,EAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAG7B;"}
|