@dust-tt/sparkle 0.2.644 → 0.2.646-rc-1
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/dist/cjs/index.js +1 -1
- package/dist/esm/components/DataTable.d.ts +3 -6
- package/dist/esm/components/DataTable.d.ts.map +1 -1
- package/dist/esm/components/DataTable.js +8 -8
- package/dist/esm/components/DataTable.js.map +1 -1
- package/dist/esm/components/markdown/BlockquoteBlock.d.ts +3 -1
- package/dist/esm/components/markdown/BlockquoteBlock.d.ts.map +1 -1
- package/dist/esm/components/markdown/BlockquoteBlock.js +7 -3
- package/dist/esm/components/markdown/BlockquoteBlock.js.map +1 -1
- package/dist/esm/components/markdown/CodeBlockWithExtendedSupport.d.ts +4 -2
- package/dist/esm/components/markdown/CodeBlockWithExtendedSupport.d.ts.map +1 -1
- package/dist/esm/components/markdown/CodeBlockWithExtendedSupport.js +11 -6
- package/dist/esm/components/markdown/CodeBlockWithExtendedSupport.js.map +1 -1
- package/dist/esm/components/markdown/HeaderBlocks.d.ts +24 -0
- package/dist/esm/components/markdown/HeaderBlocks.d.ts.map +1 -0
- package/dist/esm/components/markdown/HeaderBlocks.js +54 -0
- package/dist/esm/components/markdown/HeaderBlocks.js.map +1 -0
- package/dist/esm/components/markdown/InputBlock.d.ts +10 -0
- package/dist/esm/components/markdown/InputBlock.d.ts.map +1 -0
- package/dist/esm/components/markdown/InputBlock.js +26 -0
- package/dist/esm/components/markdown/InputBlock.js.map +1 -0
- package/dist/esm/components/markdown/LinkBlock.d.ts +10 -0
- package/dist/esm/components/markdown/LinkBlock.d.ts.map +1 -0
- package/dist/esm/components/markdown/LinkBlock.js +11 -0
- package/dist/esm/components/markdown/LinkBlock.js.map +1 -0
- package/dist/esm/components/markdown/List.d.ts +17 -3
- package/dist/esm/components/markdown/List.d.ts.map +1 -1
- package/dist/esm/components/markdown/List.js +21 -7
- package/dist/esm/components/markdown/List.js.map +1 -1
- package/dist/esm/components/markdown/Markdown.d.ts +0 -8
- package/dist/esm/components/markdown/Markdown.d.ts.map +1 -1
- package/dist/esm/components/markdown/Markdown.js +39 -62
- package/dist/esm/components/markdown/Markdown.js.map +1 -1
- package/dist/esm/components/markdown/ParagraphBlock.d.ts +3 -1
- package/dist/esm/components/markdown/ParagraphBlock.d.ts.map +1 -1
- package/dist/esm/components/markdown/ParagraphBlock.js +7 -3
- package/dist/esm/components/markdown/ParagraphBlock.js.map +1 -1
- package/dist/esm/components/markdown/PreBlock.d.ts +3 -1
- package/dist/esm/components/markdown/PreBlock.d.ts.map +1 -1
- package/dist/esm/components/markdown/PreBlock.js +7 -3
- package/dist/esm/components/markdown/PreBlock.js.map +1 -1
- package/dist/esm/components/markdown/TableBlock.d.ts +17 -11
- package/dist/esm/components/markdown/TableBlock.d.ts.map +1 -1
- package/dist/esm/components/markdown/TableBlock.js +18 -14
- package/dist/esm/components/markdown/TableBlock.js.map +1 -1
- package/dist/esm/components/markdown/TextFormattingBlocks.d.ts +10 -0
- package/dist/esm/components/markdown/TextFormattingBlocks.d.ts.map +1 -0
- package/dist/esm/components/markdown/TextFormattingBlocks.js +12 -0
- package/dist/esm/components/markdown/TextFormattingBlocks.js.map +1 -0
- package/dist/esm/components/markdown/index.d.ts +4 -0
- package/dist/esm/components/markdown/index.d.ts.map +1 -1
- package/dist/esm/components/markdown/index.js +4 -0
- package/dist/esm/components/markdown/index.js.map +1 -1
- package/dist/esm/components/markdown/types.d.ts +13 -0
- package/dist/esm/components/markdown/types.d.ts.map +1 -0
- package/dist/esm/components/markdown/types.js +2 -0
- package/dist/esm/components/markdown/types.js.map +1 -0
- package/dist/esm/components/markdown/utils.d.ts +11 -0
- package/dist/esm/components/markdown/utils.d.ts.map +1 -1
- package/dist/esm/components/markdown/utils.js +21 -0
- package/dist/esm/components/markdown/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/components/DataTable.tsx +2 -18
- package/src/components/markdown/BlockquoteBlock.tsx +36 -29
- package/src/components/markdown/CodeBlockWithExtendedSupport.tsx +142 -131
- package/src/components/markdown/HeaderBlocks.tsx +160 -0
- package/src/components/markdown/InputBlock.tsx +60 -0
- package/src/components/markdown/LinkBlock.tsx +36 -0
- package/src/components/markdown/List.tsx +53 -30
- package/src/components/markdown/Markdown.tsx +97 -169
- package/src/components/markdown/ParagraphBlock.tsx +18 -12
- package/src/components/markdown/PreBlock.tsx +28 -18
- package/src/components/markdown/TableBlock.tsx +125 -95
- package/src/components/markdown/TextFormattingBlocks.tsx +31 -0
- package/src/components/markdown/index.ts +4 -0
- package/src/components/markdown/types.ts +5 -0
- package/src/components/markdown/utils.ts +37 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { memo } from "react";
|
|
2
|
+
import { sameNodePosition } from "../../components/markdown/utils";
|
|
3
|
+
export var MemoStrongBlock = memo(function (_a) {
|
|
4
|
+
var children = _a.children;
|
|
5
|
+
return (React.createElement("strong", { className: "s-font-semibold s-text-foreground dark:s-text-foreground-night" }, children));
|
|
6
|
+
}, function (prev, next) { return sameNodePosition(prev.node, next.node); });
|
|
7
|
+
MemoStrongBlock.displayName = "StrongBlock";
|
|
8
|
+
export var MemoHorizontalRuleBlock = memo(function () {
|
|
9
|
+
return (React.createElement("div", { className: "s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" }));
|
|
10
|
+
});
|
|
11
|
+
MemoHorizontalRuleBlock.displayName = "HorizontalRuleBlock";
|
|
12
|
+
//# sourceMappingURL=TextFormattingBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextFormattingBlocks.js","sourceRoot":"","sources":["../../../../src/components/markdown/TextFormattingBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAStE,MAAM,CAAC,IAAM,eAAe,GAAG,IAAI,CACjC,UAAC,EAA8B;QAA5B,QAAQ,cAAA;IACT,OAAO,CACL,gCAAQ,SAAS,EAAC,gEAAgE,IAC/E,QAAQ,CACF,CACV,CAAC;AACJ,CAAC,EACD,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAtC,CAAsC,CACvD,CAAC;AAEF,eAAe,CAAC,WAAW,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,IAAM,uBAAuB,GAAG,IAAI,CAAC;IAC1C,OAAO,CACL,6BAAK,SAAS,EAAC,wEAAwE,GAAG,CAC3F,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,uBAAuB,CAAC,WAAW,GAAG,qBAAqB,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export * from "./CodeBlock";
|
|
2
2
|
export * from "./CodeBlockWithExtendedSupport";
|
|
3
3
|
export * from "./ContentBlockWrapper";
|
|
4
|
+
export * from "./HeaderBlocks";
|
|
5
|
+
export * from "./InputBlock";
|
|
6
|
+
export * from "./LinkBlock";
|
|
4
7
|
export * from "./Markdown";
|
|
5
8
|
export * from "./MarkdownContentContext";
|
|
6
9
|
export * from "./PrettyJsonViewer";
|
|
7
10
|
export * from "./TableBlock";
|
|
11
|
+
export * from "./TextFormattingBlocks";
|
|
8
12
|
export * from "./utils";
|
|
9
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export * from "./CodeBlock";
|
|
2
2
|
export * from "./CodeBlockWithExtendedSupport";
|
|
3
3
|
export * from "./ContentBlockWrapper";
|
|
4
|
+
export * from "./HeaderBlocks";
|
|
5
|
+
export * from "./InputBlock";
|
|
6
|
+
export * from "./LinkBlock";
|
|
4
7
|
export * from "./Markdown";
|
|
5
8
|
export * from "./MarkdownContentContext";
|
|
6
9
|
export * from "./PrettyJsonViewer";
|
|
7
10
|
export * from "./TableBlock";
|
|
11
|
+
export * from "./TextFormattingBlocks";
|
|
8
12
|
export * from "./utils";
|
|
9
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/markdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/markdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type MarkdownPoint = {
|
|
2
|
+
line?: number;
|
|
3
|
+
column?: number;
|
|
4
|
+
};
|
|
5
|
+
type MarkdownPosition = {
|
|
6
|
+
start?: MarkdownPoint;
|
|
7
|
+
end?: MarkdownPoint;
|
|
8
|
+
};
|
|
9
|
+
export type MarkdownNode = {
|
|
10
|
+
position?: MarkdownPosition;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/types.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACxD,KAAK,gBAAgB,GAAG;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,GAAG,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/markdown/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { MarkdownNode } from "./types";
|
|
2
3
|
export declare function sanitizeContent(str: string): string;
|
|
3
4
|
export declare function detectLanguage(children: React.ReactNode): any;
|
|
5
|
+
export declare function sameNodePosition(prev?: MarkdownNode, next?: MarkdownNode): boolean;
|
|
6
|
+
export declare function sameTextStyling(prev: {
|
|
7
|
+
textColor?: string;
|
|
8
|
+
textSize?: string;
|
|
9
|
+
forcedTextSize?: string;
|
|
10
|
+
}, next: {
|
|
11
|
+
textColor?: string;
|
|
12
|
+
textSize?: string;
|
|
13
|
+
forcedTextSize?: string;
|
|
14
|
+
}): boolean;
|
|
4
15
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":";AAAA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,OAMvD"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,OAMvD;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,CAAC,EAAE,YAAY,EACnB,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAmBT;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE,OAAO,CAMT"}
|
|
@@ -39,4 +39,25 @@ export function detectLanguage(children) {
|
|
|
39
39
|
}
|
|
40
40
|
return "text";
|
|
41
41
|
}
|
|
42
|
+
export function sameNodePosition(prev, next) {
|
|
43
|
+
if (!((prev === null || prev === void 0 ? void 0 : prev.position) || (next === null || next === void 0 ? void 0 : next.position))) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (!((prev === null || prev === void 0 ? void 0 : prev.position) && (next === null || next === void 0 ? void 0 : next.position))) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
var prevStart = prev.position.start;
|
|
50
|
+
var nextStart = next.position.start;
|
|
51
|
+
var prevEnd = prev.position.end;
|
|
52
|
+
var nextEnd = next.position.end;
|
|
53
|
+
return ((prevStart === null || prevStart === void 0 ? void 0 : prevStart.line) === (nextStart === null || nextStart === void 0 ? void 0 : nextStart.line) &&
|
|
54
|
+
(prevStart === null || prevStart === void 0 ? void 0 : prevStart.column) === (nextStart === null || nextStart === void 0 ? void 0 : nextStart.column) &&
|
|
55
|
+
(prevEnd === null || prevEnd === void 0 ? void 0 : prevEnd.line) === (nextEnd === null || nextEnd === void 0 ? void 0 : nextEnd.line) &&
|
|
56
|
+
(prevEnd === null || prevEnd === void 0 ? void 0 : prevEnd.column) === (nextEnd === null || nextEnd === void 0 ? void 0 : nextEnd.column));
|
|
57
|
+
}
|
|
58
|
+
export function sameTextStyling(prev, next) {
|
|
59
|
+
return (prev.textColor === next.textColor &&
|
|
60
|
+
prev.textSize === next.textSize &&
|
|
61
|
+
prev.forcedTextSize === next.forcedTextSize);
|
|
62
|
+
}
|
|
42
63
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,2FAA2F;IAC3F,4BAA4B;IAE5B,0EAA0E;IAC1E,IAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,2DAA2D;IAC3D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACvB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IACD,qCAAqC;IACrC,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAyB;;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAA,MAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAI,MAAM,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAmB,EACnB,IAAmB;IAEnB,IAAI,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtC,IAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAClC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAElC,OAAO,CACL,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,OAAK,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAA;QACnC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,OAAK,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA;QACvC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,OAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA;QAC/B,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,OAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAwE,EACxE,IAAwE;IAExE,OAAO,CACL,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;QACjC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAC/B,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAC5C,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -961,14 +961,12 @@ export interface DataTableMoreButtonProps {
|
|
|
961
961
|
React.ComponentPropsWithoutRef<typeof DropdownMenu>,
|
|
962
962
|
"modal"
|
|
963
963
|
>;
|
|
964
|
-
disabled?: boolean;
|
|
965
964
|
}
|
|
966
965
|
|
|
967
966
|
DataTable.MoreButton = function MoreButton({
|
|
968
967
|
className,
|
|
969
968
|
menuItems,
|
|
970
969
|
dropdownMenuProps,
|
|
971
|
-
disabled,
|
|
972
970
|
}: DataTableMoreButtonProps) {
|
|
973
971
|
if (!menuItems?.length) {
|
|
974
972
|
return null;
|
|
@@ -986,15 +984,11 @@ DataTable.MoreButton = function MoreButton({
|
|
|
986
984
|
icon={MoreIcon}
|
|
987
985
|
size="mini"
|
|
988
986
|
variant="ghost-secondary"
|
|
989
|
-
|
|
990
|
-
className={cn(
|
|
991
|
-
disabled && "s-cursor-not-allowed s-opacity-50",
|
|
992
|
-
className
|
|
993
|
-
)}
|
|
987
|
+
className={cn(className)}
|
|
994
988
|
/>
|
|
995
989
|
</DropdownMenuTrigger>
|
|
996
990
|
|
|
997
|
-
<DropdownMenuContent align="end"
|
|
991
|
+
<DropdownMenuContent align="end">
|
|
998
992
|
<DropdownMenuGroup>
|
|
999
993
|
{menuItems.map((item, index) => renderMenuItem(item, index))}
|
|
1000
994
|
</DropdownMenuGroup>
|
|
@@ -1038,7 +1032,6 @@ interface CellContentProps extends React.TdHTMLAttributes<HTMLDivElement> {
|
|
|
1038
1032
|
children?: ReactNode;
|
|
1039
1033
|
description?: string;
|
|
1040
1034
|
grow?: boolean;
|
|
1041
|
-
disabled?: boolean;
|
|
1042
1035
|
}
|
|
1043
1036
|
|
|
1044
1037
|
DataTable.CellContent = function CellContent({
|
|
@@ -1051,7 +1044,6 @@ DataTable.CellContent = function CellContent({
|
|
|
1051
1044
|
iconClassName,
|
|
1052
1045
|
description,
|
|
1053
1046
|
grow = false,
|
|
1054
|
-
disabled,
|
|
1055
1047
|
...props
|
|
1056
1048
|
}: CellContentProps) {
|
|
1057
1049
|
return (
|
|
@@ -1059,10 +1051,8 @@ DataTable.CellContent = function CellContent({
|
|
|
1059
1051
|
className={cn(
|
|
1060
1052
|
"s-flex s-items-center",
|
|
1061
1053
|
grow ? "s-flex-grow" : "",
|
|
1062
|
-
disabled && "s-cursor-not-allowed s-opacity-50",
|
|
1063
1054
|
className
|
|
1064
1055
|
)}
|
|
1065
|
-
aria-disabled={disabled || undefined}
|
|
1066
1056
|
{...props}
|
|
1067
1057
|
>
|
|
1068
1058
|
{avatarUrl && avatarTooltipLabel && (
|
|
@@ -1127,7 +1117,6 @@ interface BasicCellContentProps extends React.TdHTMLAttributes<HTMLDivElement> {
|
|
|
1127
1117
|
label: string | number;
|
|
1128
1118
|
tooltip?: string | number;
|
|
1129
1119
|
textToCopy?: string | number;
|
|
1130
|
-
disabled?: boolean;
|
|
1131
1120
|
}
|
|
1132
1121
|
|
|
1133
1122
|
DataTable.BasicCellContent = function BasicCellContent({
|
|
@@ -1135,7 +1124,6 @@ DataTable.BasicCellContent = function BasicCellContent({
|
|
|
1135
1124
|
tooltip,
|
|
1136
1125
|
className,
|
|
1137
1126
|
textToCopy,
|
|
1138
|
-
disabled,
|
|
1139
1127
|
...props
|
|
1140
1128
|
}: BasicCellContentProps) {
|
|
1141
1129
|
const [isCopied, copyToClipboard] = useCopyToClipboard();
|
|
@@ -1162,10 +1150,8 @@ DataTable.BasicCellContent = function BasicCellContent({
|
|
|
1162
1150
|
cellHeight,
|
|
1163
1151
|
"s-group s-flex s-items-center s-gap-2 s-text-sm",
|
|
1164
1152
|
"s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
1165
|
-
disabled && "s-cursor-not-allowed s-opacity-50",
|
|
1166
1153
|
className
|
|
1167
1154
|
)}
|
|
1168
|
-
aria-disabled={disabled || undefined}
|
|
1169
1155
|
{...props}
|
|
1170
1156
|
>
|
|
1171
1157
|
<span className="s-truncate">{label}</span>
|
|
@@ -1191,10 +1177,8 @@ DataTable.BasicCellContent = function BasicCellContent({
|
|
|
1191
1177
|
cellHeight,
|
|
1192
1178
|
"s-group s-flex s-items-center s-gap-2 s-text-sm",
|
|
1193
1179
|
"s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
1194
|
-
disabled && "s-cursor-not-allowed s-opacity-50",
|
|
1195
1180
|
className
|
|
1196
1181
|
)}
|
|
1197
|
-
aria-disabled={disabled || undefined}
|
|
1198
1182
|
{...props}
|
|
1199
1183
|
>
|
|
1200
1184
|
<span className="s-truncate">{label}</span>
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { cva } from "class-variance-authority";
|
|
2
|
-
import React from "react";
|
|
2
|
+
import React, { memo } from "react";
|
|
3
3
|
|
|
4
4
|
import { ContentBlockWrapper } from "@sparkle/components";
|
|
5
5
|
|
|
6
|
+
import { MarkdownNode } from "./types";
|
|
7
|
+
import { sameNodePosition } from "./utils";
|
|
8
|
+
|
|
6
9
|
export const blockquoteVariants = cva(
|
|
7
10
|
["s-w-full s-text-base s-italic s-rounded-2xl s-py-3 s-pl-5 s-pr-12"],
|
|
8
11
|
{
|
|
@@ -20,33 +23,37 @@ export const blockquoteVariants = cva(
|
|
|
20
23
|
interface BlockquoteBlockProps {
|
|
21
24
|
children: React.ReactNode;
|
|
22
25
|
variant?: "surface";
|
|
26
|
+
node?: MarkdownNode;
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
export
|
|
26
|
-
children,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
|
|
29
|
+
export const MemoBlockquoteBlock = memo(
|
|
30
|
+
({ children, variant = "surface" }: BlockquoteBlockProps) => {
|
|
31
|
+
const elementAt1 = React.Children.toArray(children)[1];
|
|
32
|
+
const childrenContent =
|
|
33
|
+
elementAt1 && React.isValidElement(elementAt1)
|
|
34
|
+
? elementAt1.props.children
|
|
35
|
+
: null;
|
|
36
|
+
|
|
37
|
+
// Convert array content to string if necessary
|
|
38
|
+
const contentAsString = Array.isArray(childrenContent)
|
|
39
|
+
? childrenContent.join("")
|
|
40
|
+
: childrenContent;
|
|
41
|
+
|
|
42
|
+
// Only pass content if it exists
|
|
43
|
+
const clipboardContent = contentAsString
|
|
44
|
+
? { "text/plain": contentAsString }
|
|
45
|
+
: undefined;
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<ContentBlockWrapper content={clipboardContent} className="s-my-2">
|
|
49
|
+
<blockquote className={blockquoteVariants({ variant })}>
|
|
50
|
+
{children}
|
|
51
|
+
</blockquote>
|
|
52
|
+
</ContentBlockWrapper>
|
|
53
|
+
);
|
|
54
|
+
},
|
|
55
|
+
(prev, next) =>
|
|
56
|
+
sameNodePosition(prev.node, next.node) && prev.variant === next.variant
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
MemoBlockquoteBlock.displayName = "BlockquoteBlock";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import mermaid from "mermaid";
|
|
2
|
-
import React, { useContext, useEffect, useRef, useState } from "react";
|
|
2
|
+
import React, { memo, useContext, useEffect, useRef, useState } from "react";
|
|
3
3
|
import {
|
|
4
4
|
amber,
|
|
5
5
|
blue,
|
|
@@ -25,6 +25,8 @@ import {
|
|
|
25
25
|
JsonValueType,
|
|
26
26
|
PrettyJsonViewer,
|
|
27
27
|
} from "@sparkle/components/markdown/PrettyJsonViewer";
|
|
28
|
+
import { MarkdownNode } from "@sparkle/components/markdown/types";
|
|
29
|
+
import { sameNodePosition } from "@sparkle/components/markdown/utils";
|
|
28
30
|
import { CommandLineIcon, SparklesIcon } from "@sparkle/icons/app";
|
|
29
31
|
import { cn } from "@sparkle/lib/utils";
|
|
30
32
|
|
|
@@ -313,150 +315,159 @@ export function StyledMermaidGraph({
|
|
|
313
315
|
);
|
|
314
316
|
}
|
|
315
317
|
|
|
316
|
-
export
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
318
|
+
export const MemoCodeBlockWithExtendedSupport = memo(
|
|
319
|
+
({
|
|
320
|
+
children,
|
|
321
|
+
className,
|
|
322
|
+
inline,
|
|
323
|
+
}: {
|
|
324
|
+
children?: React.ReactNode;
|
|
325
|
+
className?: string;
|
|
326
|
+
inline?: boolean;
|
|
327
|
+
node?: MarkdownNode;
|
|
328
|
+
}) => {
|
|
329
|
+
const validChildrenContent = String(children).trim();
|
|
330
|
+
const [showMermaid, setShowMermaid] = useState<boolean>(false);
|
|
331
|
+
const [isValidMermaid, setIsValidMermaid] = useState<boolean>(false);
|
|
332
|
+
const [showPrettyJson, setShowPrettyJson] = useState<boolean>(false);
|
|
333
|
+
const [parsedJson, setParsedJson] = useState<JsonValueType | null>(null);
|
|
334
|
+
const { isStreaming } = useContext(MarkdownContentContext);
|
|
335
|
+
|
|
336
|
+
// Detect language from className
|
|
337
|
+
const language = className?.split("-")[1];
|
|
338
|
+
|
|
339
|
+
// Only create getContentToDownload when we actually want to enable downloads
|
|
340
|
+
const getContentToDownload: GetContentToDownloadFunction | undefined =
|
|
341
|
+
!inline &&
|
|
342
|
+
validChildrenContent &&
|
|
343
|
+
(language === "csv" || language === "json")
|
|
344
|
+
? async () => ({
|
|
345
|
+
content: validChildrenContent,
|
|
346
|
+
filename: `dust_output_${Date.now()}`,
|
|
347
|
+
type: language === "csv" ? "text/csv" : "application/json",
|
|
348
|
+
})
|
|
349
|
+
: undefined;
|
|
350
|
+
|
|
351
|
+
// Check for valid Mermaid and JSON.
|
|
352
|
+
useEffect(() => {
|
|
353
|
+
if (isStreaming || !validChildrenContent) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
if (language === "mermaid") {
|
|
357
|
+
const checkValidMermaid = async () => {
|
|
358
|
+
try {
|
|
359
|
+
await mermaid.parse(validChildrenContent);
|
|
360
|
+
setIsValidMermaid(true);
|
|
361
|
+
setShowMermaid(true);
|
|
362
|
+
} catch (e) {
|
|
363
|
+
setIsValidMermaid(false);
|
|
364
|
+
setShowMermaid(false);
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
void checkValidMermaid();
|
|
368
|
+
}
|
|
369
|
+
if (language === "json") {
|
|
354
370
|
try {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
371
|
+
const parsed = JSON.parse(validChildrenContent);
|
|
372
|
+
setParsedJson(parsed);
|
|
373
|
+
const prettyJsonPreference = getPrettyJsonPreference();
|
|
374
|
+
setShowPrettyJson(prettyJsonPreference);
|
|
358
375
|
} catch (e) {
|
|
359
|
-
|
|
360
|
-
|
|
376
|
+
setParsedJson(null);
|
|
377
|
+
setShowPrettyJson(false);
|
|
361
378
|
}
|
|
362
|
-
};
|
|
363
|
-
void checkValidMermaid();
|
|
364
|
-
}
|
|
365
|
-
if (language === "json") {
|
|
366
|
-
try {
|
|
367
|
-
const parsed = JSON.parse(validChildrenContent);
|
|
368
|
-
setParsedJson(parsed);
|
|
369
|
-
const prettyJsonPreference = getPrettyJsonPreference();
|
|
370
|
-
setShowPrettyJson(prettyJsonPreference);
|
|
371
|
-
} catch (e) {
|
|
372
|
-
setParsedJson(null);
|
|
373
|
-
setShowPrettyJson(false);
|
|
374
379
|
}
|
|
380
|
+
}, [isStreaming, language, validChildrenContent]);
|
|
381
|
+
|
|
382
|
+
if (inline) {
|
|
383
|
+
return (
|
|
384
|
+
<CodeBlock className={className} inline={inline}>
|
|
385
|
+
{children}
|
|
386
|
+
</CodeBlock>
|
|
387
|
+
);
|
|
375
388
|
}
|
|
376
|
-
}, [isStreaming, language, validChildrenContent]);
|
|
377
389
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
390
|
+
if (isValidMermaid) {
|
|
391
|
+
return (
|
|
392
|
+
<ContentBlockWrapper
|
|
393
|
+
content={validChildrenContent}
|
|
394
|
+
getContentToDownload={getContentToDownload}
|
|
395
|
+
actions={
|
|
396
|
+
<Button
|
|
397
|
+
className="s-font-sans"
|
|
398
|
+
size="xs"
|
|
399
|
+
variant={"outline"}
|
|
400
|
+
label={showMermaid ? "Markdown" : "Mermaid"}
|
|
401
|
+
icon={showMermaid ? CommandLineIcon : SparklesIcon}
|
|
402
|
+
onClick={() => setShowMermaid(!showMermaid)}
|
|
403
|
+
tooltip={showMermaid ? "Switch to Markdown" : "Switch to Mermaid"}
|
|
404
|
+
/>
|
|
405
|
+
}
|
|
406
|
+
>
|
|
407
|
+
{showMermaid ? (
|
|
408
|
+
<MermaidGraph chart={validChildrenContent} />
|
|
409
|
+
) : (
|
|
410
|
+
<CodeBlock className={className} inline={inline}>
|
|
411
|
+
{children}
|
|
412
|
+
</CodeBlock>
|
|
413
|
+
)}
|
|
414
|
+
</ContentBlockWrapper>
|
|
415
|
+
);
|
|
416
|
+
}
|
|
385
417
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
418
|
+
if (parsedJson !== null) {
|
|
419
|
+
return (
|
|
420
|
+
<ContentBlockWrapper
|
|
421
|
+
content={validChildrenContent}
|
|
422
|
+
getContentToDownload={getContentToDownload}
|
|
423
|
+
actions={
|
|
424
|
+
<Button
|
|
425
|
+
className="s-font-sans"
|
|
426
|
+
size="xs"
|
|
427
|
+
variant={"outline"}
|
|
428
|
+
label={showPrettyJson ? "Raw JSON" : "Pretty JSON"}
|
|
429
|
+
icon={showPrettyJson ? CommandLineIcon : SparklesIcon}
|
|
430
|
+
onClick={() => {
|
|
431
|
+
const newValue = !showPrettyJson;
|
|
432
|
+
setShowPrettyJson(newValue);
|
|
433
|
+
setPrettyJsonPreference(newValue);
|
|
434
|
+
}}
|
|
435
|
+
tooltip={
|
|
436
|
+
showPrettyJson ? "Switch to Raw JSON" : "Switch to Pretty View"
|
|
437
|
+
}
|
|
438
|
+
/>
|
|
439
|
+
}
|
|
440
|
+
displayActions="hover"
|
|
441
|
+
buttonDisplay="inside"
|
|
442
|
+
>
|
|
443
|
+
{showPrettyJson ? (
|
|
444
|
+
<PrettyJsonViewer data={parsedJson} />
|
|
445
|
+
) : (
|
|
446
|
+
<CodeBlock className={className} inline={inline}>
|
|
447
|
+
{children}
|
|
448
|
+
</CodeBlock>
|
|
449
|
+
)}
|
|
450
|
+
</ContentBlockWrapper>
|
|
451
|
+
);
|
|
452
|
+
}
|
|
413
453
|
|
|
414
|
-
if (parsedJson !== null) {
|
|
415
454
|
return (
|
|
416
455
|
<ContentBlockWrapper
|
|
417
456
|
content={validChildrenContent}
|
|
418
457
|
getContentToDownload={getContentToDownload}
|
|
419
|
-
actions={
|
|
420
|
-
<Button
|
|
421
|
-
className="s-font-sans"
|
|
422
|
-
size="xs"
|
|
423
|
-
variant={"outline"}
|
|
424
|
-
label={showPrettyJson ? "Raw JSON" : "Pretty JSON"}
|
|
425
|
-
icon={showPrettyJson ? CommandLineIcon : SparklesIcon}
|
|
426
|
-
onClick={() => {
|
|
427
|
-
const newValue = !showPrettyJson;
|
|
428
|
-
setShowPrettyJson(newValue);
|
|
429
|
-
setPrettyJsonPreference(newValue);
|
|
430
|
-
}}
|
|
431
|
-
tooltip={
|
|
432
|
-
showPrettyJson ? "Switch to Raw JSON" : "Switch to Pretty View"
|
|
433
|
-
}
|
|
434
|
-
/>
|
|
435
|
-
}
|
|
436
|
-
displayActions="hover"
|
|
437
458
|
buttonDisplay="inside"
|
|
459
|
+
displayActions="hover"
|
|
438
460
|
>
|
|
439
|
-
{
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
<CodeBlock className={className} inline={inline}>
|
|
443
|
-
{children}
|
|
444
|
-
</CodeBlock>
|
|
445
|
-
)}
|
|
461
|
+
<CodeBlock className={className} inline={inline}>
|
|
462
|
+
{children}
|
|
463
|
+
</CodeBlock>
|
|
446
464
|
</ContentBlockWrapper>
|
|
447
465
|
);
|
|
448
|
-
}
|
|
466
|
+
},
|
|
467
|
+
(prev, next) =>
|
|
468
|
+
sameNodePosition(prev.node, next.node) &&
|
|
469
|
+
prev.className === next.className &&
|
|
470
|
+
prev.inline === next.inline
|
|
471
|
+
);
|
|
449
472
|
|
|
450
|
-
|
|
451
|
-
<ContentBlockWrapper
|
|
452
|
-
content={validChildrenContent}
|
|
453
|
-
getContentToDownload={getContentToDownload}
|
|
454
|
-
buttonDisplay="inside"
|
|
455
|
-
displayActions="hover"
|
|
456
|
-
>
|
|
457
|
-
<CodeBlock className={className} inline={inline}>
|
|
458
|
-
{children}
|
|
459
|
-
</CodeBlock>
|
|
460
|
-
</ContentBlockWrapper>
|
|
461
|
-
);
|
|
462
|
-
}
|
|
473
|
+
MemoCodeBlockWithExtendedSupport.displayName = "CodeBlockWithExtendedSupport";
|