@assistant-ui/react-markdown 0.7.12 → 0.7.14

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 (49) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +2 -0
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/memoization.d.ts +22 -0
  8. package/dist/memoization.d.ts.map +1 -0
  9. package/dist/memoization.js +60 -0
  10. package/dist/memoization.js.map +1 -0
  11. package/dist/memoization.mjs +33 -0
  12. package/dist/memoization.mjs.map +1 -0
  13. package/dist/overrides/CodeBlock.d.ts +0 -2
  14. package/dist/overrides/CodeBlock.d.ts.map +1 -1
  15. package/dist/overrides/CodeBlock.js +2 -4
  16. package/dist/overrides/CodeBlock.js.map +1 -1
  17. package/dist/overrides/CodeBlock.mjs +2 -4
  18. package/dist/overrides/CodeBlock.mjs.map +1 -1
  19. package/dist/overrides/CodeOverride.d.ts +2 -2
  20. package/dist/overrides/CodeOverride.d.ts.map +1 -1
  21. package/dist/overrides/CodeOverride.js +10 -8
  22. package/dist/overrides/CodeOverride.js.map +1 -1
  23. package/dist/overrides/CodeOverride.mjs +15 -10
  24. package/dist/overrides/CodeOverride.mjs.map +1 -1
  25. package/dist/overrides/PreOverride.d.ts +3 -2
  26. package/dist/overrides/PreOverride.d.ts.map +1 -1
  27. package/dist/overrides/PreOverride.js +3 -1
  28. package/dist/overrides/PreOverride.js.map +1 -1
  29. package/dist/overrides/PreOverride.mjs +8 -2
  30. package/dist/overrides/PreOverride.mjs.map +1 -1
  31. package/dist/overrides/defaultComponents.d.ts +0 -2
  32. package/dist/overrides/defaultComponents.d.ts.map +1 -1
  33. package/dist/overrides/defaultComponents.js +1 -1
  34. package/dist/overrides/defaultComponents.js.map +1 -1
  35. package/dist/overrides/defaultComponents.mjs +1 -1
  36. package/dist/overrides/defaultComponents.mjs.map +1 -1
  37. package/dist/primitives/MarkdownText.d.ts.map +1 -1
  38. package/dist/primitives/MarkdownText.js +32 -20
  39. package/dist/primitives/MarkdownText.js.map +1 -1
  40. package/dist/primitives/MarkdownText.mjs +34 -21
  41. package/dist/primitives/MarkdownText.mjs.map +1 -1
  42. package/package.json +6 -3
  43. package/src/index.ts +2 -0
  44. package/src/memoization.tsx +47 -0
  45. package/src/overrides/CodeBlock.tsx +0 -4
  46. package/src/overrides/CodeOverride.tsx +20 -8
  47. package/src/overrides/PreOverride.tsx +10 -2
  48. package/src/overrides/defaultComponents.tsx +3 -5
  49. package/src/primitives/MarkdownText.tsx +32 -18
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export type { CodeHeaderProps, SyntaxHighlighterProps, } from "./overrides/types
3
3
  export { useIsMarkdownCodeBlock } from "./overrides/PreOverride";
4
4
  export { makeMarkdownText, type MakeMarkdownTextProps, } from "./ui/markdown-text";
5
5
  export { CodeHeader } from "./ui/code-header";
6
+ export { memoizeMarkdownComponents as unstable_memoizeMarkdownComponents } from "./memoization";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ __export(index_exports, {
23
23
  CodeHeader: () => import_code_header.CodeHeader,
24
24
  MarkdownTextPrimitive: () => import_MarkdownText.MarkdownTextPrimitive,
25
25
  makeMarkdownText: () => import_markdown_text.makeMarkdownText,
26
+ unstable_memoizeMarkdownComponents: () => import_memoization.memoizeMarkdownComponents,
26
27
  useIsMarkdownCodeBlock: () => import_PreOverride.useIsMarkdownCodeBlock
27
28
  });
28
29
  module.exports = __toCommonJS(index_exports);
@@ -30,11 +31,13 @@ var import_MarkdownText = require("./primitives/MarkdownText.js");
30
31
  var import_PreOverride = require("./overrides/PreOverride.js");
31
32
  var import_markdown_text = require("./ui/markdown-text.js");
32
33
  var import_code_header = require("./ui/code-header.js");
34
+ var import_memoization = require("./memoization.js");
33
35
  // Annotate the CommonJS export names for ESM import in node:
34
36
  0 && (module.exports = {
35
37
  CodeHeader,
36
38
  MarkdownTextPrimitive,
37
39
  makeMarkdownText,
40
+ unstable_memoizeMarkdownComponents,
38
41
  useIsMarkdownCodeBlock
39
42
  });
40
43
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n MarkdownTextPrimitive,\n type MarkdownTextPrimitiveProps,\n} from \"./primitives/MarkdownText\";\n\nexport type {\n CodeHeaderProps,\n SyntaxHighlighterProps,\n} from \"./overrides/types\";\n\nexport { useIsMarkdownCodeBlock } from \"./overrides/PreOverride\";\n\nexport {\n makeMarkdownText,\n type MakeMarkdownTextProps,\n} from \"./ui/markdown-text\";\n\nexport { CodeHeader } from \"./ui/code-header\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAGO;AAOP,yBAAuC;AAEvC,2BAGO;AAEP,yBAA2B;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n MarkdownTextPrimitive,\n type MarkdownTextPrimitiveProps,\n} from \"./primitives/MarkdownText\";\n\nexport type {\n CodeHeaderProps,\n SyntaxHighlighterProps,\n} from \"./overrides/types\";\n\nexport { useIsMarkdownCodeBlock } from \"./overrides/PreOverride\";\n\nexport {\n makeMarkdownText,\n type MakeMarkdownTextProps,\n} from \"./ui/markdown-text\";\n\nexport { CodeHeader } from \"./ui/code-header\";\n\nexport { memoizeMarkdownComponents as unstable_memoizeMarkdownComponents } from \"./memoization\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAGO;AAOP,yBAAuC;AAEvC,2BAGO;AAEP,yBAA2B;AAE3B,yBAAgF;","names":[]}
package/dist/index.mjs CHANGED
@@ -7,10 +7,12 @@ import {
7
7
  makeMarkdownText
8
8
  } from "./ui/markdown-text.mjs";
9
9
  import { CodeHeader } from "./ui/code-header.mjs";
10
+ import { memoizeMarkdownComponents } from "./memoization.mjs";
10
11
  export {
11
12
  CodeHeader,
12
13
  MarkdownTextPrimitive,
13
14
  makeMarkdownText,
15
+ memoizeMarkdownComponents as unstable_memoizeMarkdownComponents,
14
16
  useIsMarkdownCodeBlock
15
17
  };
16
18
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n MarkdownTextPrimitive,\n type MarkdownTextPrimitiveProps,\n} from \"./primitives/MarkdownText\";\n\nexport type {\n CodeHeaderProps,\n SyntaxHighlighterProps,\n} from \"./overrides/types\";\n\nexport { useIsMarkdownCodeBlock } from \"./overrides/PreOverride\";\n\nexport {\n makeMarkdownText,\n type MakeMarkdownTextProps,\n} from \"./ui/markdown-text\";\n\nexport { CodeHeader } from \"./ui/code-header\";\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAEK;AAOP,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,kBAAkB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n MarkdownTextPrimitive,\n type MarkdownTextPrimitiveProps,\n} from \"./primitives/MarkdownText\";\n\nexport type {\n CodeHeaderProps,\n SyntaxHighlighterProps,\n} from \"./overrides/types\";\n\nexport { useIsMarkdownCodeBlock } from \"./overrides/PreOverride\";\n\nexport {\n makeMarkdownText,\n type MakeMarkdownTextProps,\n} from \"./ui/markdown-text\";\n\nexport { CodeHeader } from \"./ui/code-header\";\n\nexport { memoizeMarkdownComponents as unstable_memoizeMarkdownComponents } from \"./memoization\";\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAEK;AAOP,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,kBAAkB;AAE3B,SAAsC,iCAA0C;","names":[]}
@@ -0,0 +1,22 @@
1
+ import { Element } from "hast";
2
+ import { ComponentProps, ComponentType, ElementType } from "react";
3
+ import { CodeHeaderProps, SyntaxHighlighterProps } from "./overrides/types";
4
+ type Components = {
5
+ [Key in Extract<ElementType, string>]?: ComponentType<ComponentProps<Key>>;
6
+ } & {
7
+ SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;
8
+ CodeHeader?: ComponentType<CodeHeaderProps> | undefined;
9
+ };
10
+ export declare const areNodesEqual: (prev: Element | undefined, next: Element | undefined) => boolean;
11
+ export declare const memoCompareNodes: (prev: {
12
+ node?: Element | undefined;
13
+ }, next: {
14
+ node?: Element | undefined;
15
+ }) => boolean;
16
+ export declare const memoizeMarkdownComponents: (components?: Components) => {
17
+ [k: string]: import("react").MemoExoticComponent<({ node, ...props }: {
18
+ node?: Element;
19
+ }) => import("react/jsx-runtime").JSX.Element> | undefined;
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=memoization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoization.d.ts","sourceRoot":"","sources":["../src/memoization.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAQ,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,KAAK,UAAU,GAAG;KACf,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CAC3E,GAAG;IACF,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;IACtE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;CACzD,CAAC;AAOF,eAAO,MAAM,aAAa,SAClB,OAAO,GAAG,SAAS,QACnB,OAAO,GAAG,SAAS,YAO1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,SACrB;IAAE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,QAC9B;IAAE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,YAGrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,gBAAgB,UAAU;0EAMjB;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;CAMhE,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/memoization.tsx
21
+ var memoization_exports = {};
22
+ __export(memoization_exports, {
23
+ areNodesEqual: () => areNodesEqual,
24
+ memoCompareNodes: () => memoCompareNodes,
25
+ memoizeMarkdownComponents: () => memoizeMarkdownComponents
26
+ });
27
+ module.exports = __toCommonJS(memoization_exports);
28
+ var import_react = require("react");
29
+ var import_jsx_runtime = require("react/jsx-runtime");
30
+ var areChildrenEqual = (prev, next) => {
31
+ if (typeof prev === "string") return prev === next;
32
+ return JSON.stringify(prev) === JSON.stringify(next);
33
+ };
34
+ var areNodesEqual = (prev, next) => {
35
+ if (!prev || !next) return prev === next;
36
+ const isEqual = JSON.stringify(prev?.properties) === JSON.stringify(next?.properties) && areChildrenEqual(prev?.children, next?.children);
37
+ return isEqual;
38
+ };
39
+ var memoCompareNodes = (prev, next) => {
40
+ return areNodesEqual(prev.node, next.node);
41
+ };
42
+ var memoizeMarkdownComponents = (components = {}) => {
43
+ return Object.fromEntries(
44
+ Object.entries(components ?? {}).map(([key, value]) => {
45
+ if (!value) return [key, value];
46
+ const Component = value;
47
+ const WithoutNode = ({ node, ...props }) => {
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
49
+ };
50
+ return [key, (0, import_react.memo)(WithoutNode, memoCompareNodes)];
51
+ })
52
+ );
53
+ };
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ areNodesEqual,
57
+ memoCompareNodes,
58
+ memoizeMarkdownComponents
59
+ });
60
+ //# sourceMappingURL=memoization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/memoization.tsx"],"sourcesContent":["import { Element } from \"hast\";\nimport { ComponentProps, ComponentType, ElementType, memo } from \"react\";\nimport { CodeHeaderProps, SyntaxHighlighterProps } from \"./overrides/types\";\n\ntype Components = {\n [Key in Extract<ElementType, string>]?: ComponentType<ComponentProps<Key>>;\n} & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n};\n\nconst areChildrenEqual = (prev: string | unknown, next: string | unknown) => {\n if (typeof prev === \"string\") return prev === next;\n return JSON.stringify(prev) === JSON.stringify(next);\n};\n\nexport const areNodesEqual = (\n prev: Element | undefined,\n next: Element | undefined,\n) => {\n if (!prev || !next) return prev === next;\n const isEqual =\n JSON.stringify(prev?.properties) === JSON.stringify(next?.properties) &&\n areChildrenEqual(prev?.children, next?.children);\n return isEqual;\n};\n\nexport const memoCompareNodes = (\n prev: { node?: Element | undefined },\n next: { node?: Element | undefined },\n) => {\n return areNodesEqual(prev.node, next.node);\n};\n\nexport const memoizeMarkdownComponents = (components: Components = {}) => {\n return Object.fromEntries(\n Object.entries(components ?? {}).map(([key, value]) => {\n if (!value) return [key, value];\n\n const Component = value as ComponentType;\n const WithoutNode = ({ node, ...props }: { node?: Element }) => {\n return <Component {...props} />;\n };\n return [key, memo(WithoutNode, memoCompareNodes)];\n }),\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiE;AAwClD;AA9Bf,IAAM,mBAAmB,CAAC,MAAwB,SAA2B;AAC3E,MAAI,OAAO,SAAS,SAAU,QAAO,SAAS;AAC9C,SAAO,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI;AACrD;AAEO,IAAM,gBAAgB,CAC3B,MACA,SACG;AACH,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO,SAAS;AACpC,QAAM,UACJ,KAAK,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,UAAU,KACpE,iBAAiB,MAAM,UAAU,MAAM,QAAQ;AACjD,SAAO;AACT;AAEO,IAAM,mBAAmB,CAC9B,MACA,SACG;AACH,SAAO,cAAc,KAAK,MAAM,KAAK,IAAI;AAC3C;AAEO,IAAM,4BAA4B,CAAC,aAAyB,CAAC,MAAM;AACxE,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,UAAI,CAAC,MAAO,QAAO,CAAC,KAAK,KAAK;AAE9B,YAAM,YAAY;AAClB,YAAM,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,MAA0B;AAC9D,eAAO,4CAAC,aAAW,GAAG,OAAO;AAAA,MAC/B;AACA,aAAO,CAAC,SAAK,mBAAK,aAAa,gBAAgB,CAAC;AAAA,IAClD,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,33 @@
1
+ // src/memoization.tsx
2
+ import { memo } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ var areChildrenEqual = (prev, next) => {
5
+ if (typeof prev === "string") return prev === next;
6
+ return JSON.stringify(prev) === JSON.stringify(next);
7
+ };
8
+ var areNodesEqual = (prev, next) => {
9
+ if (!prev || !next) return prev === next;
10
+ const isEqual = JSON.stringify(prev?.properties) === JSON.stringify(next?.properties) && areChildrenEqual(prev?.children, next?.children);
11
+ return isEqual;
12
+ };
13
+ var memoCompareNodes = (prev, next) => {
14
+ return areNodesEqual(prev.node, next.node);
15
+ };
16
+ var memoizeMarkdownComponents = (components = {}) => {
17
+ return Object.fromEntries(
18
+ Object.entries(components ?? {}).map(([key, value]) => {
19
+ if (!value) return [key, value];
20
+ const Component = value;
21
+ const WithoutNode = ({ node, ...props }) => {
22
+ return /* @__PURE__ */ jsx(Component, { ...props });
23
+ };
24
+ return [key, memo(WithoutNode, memoCompareNodes)];
25
+ })
26
+ );
27
+ };
28
+ export {
29
+ areNodesEqual,
30
+ memoCompareNodes,
31
+ memoizeMarkdownComponents
32
+ };
33
+ //# sourceMappingURL=memoization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/memoization.tsx"],"sourcesContent":["import { Element } from \"hast\";\nimport { ComponentProps, ComponentType, ElementType, memo } from \"react\";\nimport { CodeHeaderProps, SyntaxHighlighterProps } from \"./overrides/types\";\n\ntype Components = {\n [Key in Extract<ElementType, string>]?: ComponentType<ComponentProps<Key>>;\n} & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n};\n\nconst areChildrenEqual = (prev: string | unknown, next: string | unknown) => {\n if (typeof prev === \"string\") return prev === next;\n return JSON.stringify(prev) === JSON.stringify(next);\n};\n\nexport const areNodesEqual = (\n prev: Element | undefined,\n next: Element | undefined,\n) => {\n if (!prev || !next) return prev === next;\n const isEqual =\n JSON.stringify(prev?.properties) === JSON.stringify(next?.properties) &&\n areChildrenEqual(prev?.children, next?.children);\n return isEqual;\n};\n\nexport const memoCompareNodes = (\n prev: { node?: Element | undefined },\n next: { node?: Element | undefined },\n) => {\n return areNodesEqual(prev.node, next.node);\n};\n\nexport const memoizeMarkdownComponents = (components: Components = {}) => {\n return Object.fromEntries(\n Object.entries(components ?? {}).map(([key, value]) => {\n if (!value) return [key, value];\n\n const Component = value as ComponentType;\n const WithoutNode = ({ node, ...props }: { node?: Element }) => {\n return <Component {...props} />;\n };\n return [key, memo(WithoutNode, memoCompareNodes)];\n }),\n );\n};\n"],"mappings":";AACA,SAAqD,YAAY;AAwClD;AA9Bf,IAAM,mBAAmB,CAAC,MAAwB,SAA2B;AAC3E,MAAI,OAAO,SAAS,SAAU,QAAO,SAAS;AAC9C,SAAO,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI;AACrD;AAEO,IAAM,gBAAgB,CAC3B,MACA,SACG;AACH,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO,SAAS;AACpC,QAAM,UACJ,KAAK,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,UAAU,KACpE,iBAAiB,MAAM,UAAU,MAAM,QAAQ;AACjD,SAAO;AACT;AAEO,IAAM,mBAAmB,CAC9B,MACA,SACG;AACH,SAAO,cAAc,KAAK,MAAM,KAAK,IAAI;AAC3C;AAEO,IAAM,4BAA4B,CAAC,aAAyB,CAAC,MAAM;AACxE,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,UAAI,CAAC,MAAO,QAAO,CAAC,KAAK,KAAK;AAE9B,YAAM,YAAY;AAClB,YAAM,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,MAA0B;AAC9D,eAAO,oBAAC,aAAW,GAAG,OAAO;AAAA,MAC/B;AACA,aAAO,CAAC,KAAK,KAAK,aAAa,gBAAgB,CAAC;AAAA,IAClD,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,6 +1,5 @@
1
1
  import { ComponentType, FC } from "react";
2
2
  import { CodeComponent, CodeHeaderProps, PreComponent, SyntaxHighlighterProps } from "./types";
3
- import { Element } from "hast";
4
3
  export type CodeBlockProps = {
5
4
  language: string;
6
5
  code: string;
@@ -10,7 +9,6 @@ export type CodeBlockProps = {
10
9
  CodeHeader: ComponentType<CodeHeaderProps>;
11
10
  SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;
12
11
  };
13
- node: Element | undefined;
14
12
  };
15
13
  export declare const DefaultCodeBlock: FC<CodeBlockProps>;
16
14
  //# sourceMappingURL=CodeBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC1D,CAAC;IACF,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAqB/C,CAAC"}
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC1D,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAmB/C,CAAC"}
@@ -29,8 +29,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
29
29
  var DefaultCodeBlock = ({
30
30
  components: { Pre, Code, SyntaxHighlighter, CodeHeader },
31
31
  language,
32
- code,
33
- node
32
+ code
34
33
  }) => {
35
34
  const components = (0, import_react.useMemo)(() => ({ Pre, Code }), [Pre, Code]);
36
35
  const SH = !!language ? SyntaxHighlighter : import_defaultComponents.DefaultCodeBlockContent;
@@ -41,8 +40,7 @@ var DefaultCodeBlock = ({
41
40
  {
42
41
  components,
43
42
  language: language ?? "unknown",
44
- code,
45
- node
43
+ code
46
44
  }
47
45
  )
48
46
  ] });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\nimport { Element } from \"hast\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n node: Element | undefined;\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n node,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n node={node}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAQ3C,+BAAwC;AA0BpC;AAXG,IAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAa,sBAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,4EACE;AAAA,gDAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA,QACA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAQ3C,+BAAwC;AAuBpC;AAVG,IAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAa,sBAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,4EACE;AAAA,gDAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -5,8 +5,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  var DefaultCodeBlock = ({
6
6
  components: { Pre, Code, SyntaxHighlighter, CodeHeader },
7
7
  language,
8
- code,
9
- node
8
+ code
10
9
  }) => {
11
10
  const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);
12
11
  const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;
@@ -17,8 +16,7 @@ var DefaultCodeBlock = ({
17
16
  {
18
17
  components,
19
18
  language: language ?? "unknown",
20
- code,
21
- node
19
+ code
22
20
  }
23
21
  )
24
22
  ] });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\nimport { Element } from \"hast\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n node: Element | undefined;\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n node,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n node={node}\n />\n </>\n );\n};\n"],"mappings":";AAAA,SAA4B,eAAe;AAQ3C,SAAS,+BAA+B;AA0BpC,mBACE,KADF;AAXG,IAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,aAAa,QAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,iCACE;AAAA,wBAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA,QACA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n />\n </>\n );\n};\n"],"mappings":";AAAA,SAA4B,eAAe;AAQ3C,SAAS,+BAA+B;AAuBpC,mBACE,KADF;AAVG,IAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,aAAa,QAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,iCACE;AAAA,wBAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, ComponentType, FC } from "react";
1
+ import { ComponentPropsWithoutRef, ComponentType } from "react";
2
2
  import { CodeComponent, CodeHeaderProps, PreComponent, SyntaxHighlighterProps } from "./types";
3
3
  export type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {
4
4
  components: {
@@ -12,5 +12,5 @@ export type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {
12
12
  SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;
13
13
  }> | undefined;
14
14
  };
15
- export declare const CodeOverride: FC<CodeOverrideProps>;
15
+ export declare const CodeOverride: import("react").NamedExoticComponent<CodeOverrideProps>;
16
16
  //# sourceMappingURL=CodeOverride.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeOverride.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeOverride.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,EAAE,EAAc,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAgEjB,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,GAAG;IACxE,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC1D,CAAC;IACF,oBAAoB,CAAC,EACjB,MAAM,CACJ,MAAM,EACN;QACE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC3D,CACF,GACD,SAAS,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAc9C,CAAC"}
1
+ {"version":3,"file":"CodeOverride.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeOverride.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,aAAa,EAId,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AA8DjB,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,GAAG;IACxE,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC1D,CAAC;IACF,oBAAoB,CAAC,EACjB,MAAM,CACJ,MAAM,EACN;QACE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC3D,CACF,GACD,SAAS,CAAC;CACf,CAAC;AAkBF,eAAO,MAAM,YAAY,yDAMvB,CAAC"}
@@ -29,6 +29,7 @@ var import_CodeBlock = require("./CodeBlock.js");
29
29
  var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
30
30
  var import_withDefaults = require("./withDefaults.js");
31
31
  var import_defaultComponents = require("./defaultComponents.js");
32
+ var import_memoization = require("../memoization.js");
32
33
  var import_jsx_runtime = require("react/jsx-runtime");
33
34
  var CodeBlockOverride = ({
34
35
  components: {
@@ -39,7 +40,6 @@ var CodeBlockOverride = ({
39
40
  },
40
41
  componentsByLanguage = {},
41
42
  children,
42
- node,
43
43
  ...codeProps
44
44
  }) => {
45
45
  const preProps = (0, import_react.useContext)(import_PreOverride.PreContext);
@@ -53,8 +53,7 @@ var CodeBlockOverride = ({
53
53
  import_defaultComponents.DefaultCodeBlockContent,
54
54
  {
55
55
  components: { Pre: WrappedPre, Code: WrappedCode },
56
- code: children,
57
- node
56
+ code: children
58
57
  }
59
58
  );
60
59
  }
@@ -70,18 +69,17 @@ var CodeBlockOverride = ({
70
69
  CodeHeader
71
70
  },
72
71
  language: language || "unknown",
73
- code: children,
74
- node
72
+ code: children
75
73
  }
76
74
  );
77
75
  };
78
- var CodeOverride = ({
76
+ var CodeOverrideImpl = ({
79
77
  components,
80
78
  componentsByLanguage,
81
79
  ...props
82
80
  }) => {
83
- const preProps = (0, import_react.useContext)(import_PreOverride.PreContext);
84
- if (!preProps) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(components.Code, { ...props });
81
+ const isCodeBlock = (0, import_PreOverride.useIsMarkdownCodeBlock)();
82
+ if (!isCodeBlock) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(components.Code, { ...props });
85
83
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
86
84
  CodeBlockOverride,
87
85
  {
@@ -91,6 +89,10 @@ var CodeOverride = ({
91
89
  }
92
90
  );
93
91
  };
92
+ var CodeOverride = (0, import_react.memo)(CodeOverrideImpl, (prev, next) => {
93
+ const isEqual = prev.components === next.components && prev.componentsByLanguage === next.componentsByLanguage && (0, import_memoization.memoCompareNodes)(prev, next);
94
+ return isEqual;
95
+ });
94
96
  // Annotate the CommonJS export names for ESM import in node:
95
97
  0 && (module.exports = {
96
98
  CodeOverride
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/CodeOverride.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ComponentType, FC, useContext } from \"react\";\nimport { PreContext } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n },\n componentsByLanguage = {},\n children,\n node,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n node={node}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n componentsByLanguage[language]?.SyntaxHighlighter ??\n FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n componentsByLanguage[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n node={node}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >\n | undefined;\n};\n\nexport const CodeOverride: FC<CodeOverrideProps> = ({\n components,\n componentsByLanguage,\n ...props\n}) => {\n const preProps = useContext(PreContext);\n if (!preProps) return <components.Code {...props} />;\n return (\n <CodeBlockOverride\n components={components}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwE;AACxE,yBAA2B;AAO3B,uBAAiC;AACjC,oCAA+B;AAC/B,0BAAiC;AACjC,+BAAwC;AAiBpC;AAfJ,IAAM,oBAA2C,CAAC;AAAA,EAChD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,YAAY;AAAA,EACd;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAW,yBAAW,6BAAU;AACtC,QAAM,kBAAc,sCAAsB,QAAQ;AAClD,QAAM,iBAA2B,8CAAe,CAAC,UAC/C,4CAAC,OAAK,GAAG,YAAY,KAAK,GAAG,CAC9B;AAED,QAAM,mBAAe,sCAAsB,SAAS;AACpD,QAAM,kBAA6B,8CAAe,CAAC,UACjD,4CAAC,QAAM,GAAG,aAAa,KAAK,GAAG,CAChC;AAED,QAAM,WAAW,iBAAiB,KAAK,UAAU,aAAa,EAAE,IAAI,CAAC,KAAK;AAG1E,MAAI,OAAO,aAAa,UAAU;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,KAAK,YAAY,MAAM,YAAY;AAAA,QACjD,MAAM;AAAA,QACN;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,oBACJ,qBAAqB,QAAQ,GAAG,qBAChC;AAEF,QAAM,aACJ,qBAAqB,QAAQ,GAAG,cAAc;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAY;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,MAAM;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAoBO,IAAM,eAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAW,yBAAW,6BAAU;AACtC,MAAI,CAAC,SAAU,QAAO,4CAAC,WAAW,MAAX,EAAiB,GAAG,OAAO;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/CodeOverride.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ComponentType,\n FC,\n memo,\n useContext,\n} from \"react\";\nimport { PreContext, useIsMarkdownCodeBlock } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\nimport { memoCompareNodes } from \"../memoization\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n },\n componentsByLanguage = {},\n children,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n componentsByLanguage[language]?.SyntaxHighlighter ??\n FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n componentsByLanguage[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >\n | undefined;\n};\n\nconst CodeOverrideImpl: FC<CodeOverrideProps> = ({\n components,\n componentsByLanguage,\n ...props\n}) => {\n const isCodeBlock = useIsMarkdownCodeBlock();\n if (!isCodeBlock) return <components.Code {...props} />;\n return (\n <CodeBlockOverride\n components={components}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n );\n};\n\nexport const CodeOverride = memo(CodeOverrideImpl, (prev, next) => {\n const isEqual =\n prev.components === next.components &&\n prev.componentsByLanguage === next.componentsByLanguage &&\n memoCompareNodes(prev, next);\n return isEqual;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAMO;AACP,yBAAmD;AAOnD,uBAAiC;AACjC,oCAA+B;AAC/B,0BAAiC;AACjC,+BAAwC;AACxC,yBAAiC;AAgB7B;AAdJ,IAAM,oBAA2C,CAAC;AAAA,EAChD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,YAAY;AAAA,EACd;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAW,yBAAW,6BAAU;AACtC,QAAM,kBAAc,sCAAsB,QAAQ;AAClD,QAAM,iBAA2B,8CAAe,CAAC,UAC/C,4CAAC,OAAK,GAAG,YAAY,KAAK,GAAG,CAC9B;AAED,QAAM,mBAAe,sCAAsB,SAAS;AACpD,QAAM,kBAA6B,8CAAe,CAAC,UACjD,4CAAC,QAAM,GAAG,aAAa,KAAK,GAAG,CAChC;AAED,QAAM,WAAW,iBAAiB,KAAK,UAAU,aAAa,EAAE,IAAI,CAAC,KAAK;AAG1E,MAAI,OAAO,aAAa,UAAU;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,KAAK,YAAY,MAAM,YAAY;AAAA,QACjD,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AAEA,QAAM,oBACJ,qBAAqB,QAAQ,GAAG,qBAChC;AAEF,QAAM,aACJ,qBAAqB,QAAQ,GAAG,cAAc;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAY;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,MAAM;AAAA;AAAA,EACR;AAEJ;AAoBA,IAAM,mBAA0C,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,kBAAc,2CAAuB;AAC3C,MAAI,CAAC,YAAa,QAAO,4CAAC,WAAW,MAAX,EAAiB,GAAG,OAAO;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,IAAM,mBAAe,mBAAK,kBAAkB,CAAC,MAAM,SAAS;AACjE,QAAM,UACJ,KAAK,eAAe,KAAK,cACzB,KAAK,yBAAyB,KAAK,4BACnC,qCAAiB,MAAM,IAAI;AAC7B,SAAO;AACT,CAAC;","names":[]}
@@ -1,10 +1,14 @@
1
1
  // src/overrides/CodeOverride.tsx
2
- import { useContext } from "react";
3
- import { PreContext } from "./PreOverride.mjs";
2
+ import {
3
+ memo,
4
+ useContext
5
+ } from "react";
6
+ import { PreContext, useIsMarkdownCodeBlock } from "./PreOverride.mjs";
4
7
  import { DefaultCodeBlock } from "./CodeBlock.mjs";
5
8
  import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
6
9
  import { withDefaultProps } from "./withDefaults.mjs";
7
10
  import { DefaultCodeBlockContent } from "./defaultComponents.mjs";
11
+ import { memoCompareNodes } from "../memoization.mjs";
8
12
  import { jsx } from "react/jsx-runtime";
9
13
  var CodeBlockOverride = ({
10
14
  components: {
@@ -15,7 +19,6 @@ var CodeBlockOverride = ({
15
19
  },
16
20
  componentsByLanguage = {},
17
21
  children,
18
- node,
19
22
  ...codeProps
20
23
  }) => {
21
24
  const preProps = useContext(PreContext);
@@ -29,8 +32,7 @@ var CodeBlockOverride = ({
29
32
  DefaultCodeBlockContent,
30
33
  {
31
34
  components: { Pre: WrappedPre, Code: WrappedCode },
32
- code: children,
33
- node
35
+ code: children
34
36
  }
35
37
  );
36
38
  }
@@ -46,18 +48,17 @@ var CodeBlockOverride = ({
46
48
  CodeHeader
47
49
  },
48
50
  language: language || "unknown",
49
- code: children,
50
- node
51
+ code: children
51
52
  }
52
53
  );
53
54
  };
54
- var CodeOverride = ({
55
+ var CodeOverrideImpl = ({
55
56
  components,
56
57
  componentsByLanguage,
57
58
  ...props
58
59
  }) => {
59
- const preProps = useContext(PreContext);
60
- if (!preProps) return /* @__PURE__ */ jsx(components.Code, { ...props });
60
+ const isCodeBlock = useIsMarkdownCodeBlock();
61
+ if (!isCodeBlock) return /* @__PURE__ */ jsx(components.Code, { ...props });
61
62
  return /* @__PURE__ */ jsx(
62
63
  CodeBlockOverride,
63
64
  {
@@ -67,6 +68,10 @@ var CodeOverride = ({
67
68
  }
68
69
  );
69
70
  };
71
+ var CodeOverride = memo(CodeOverrideImpl, (prev, next) => {
72
+ const isEqual = prev.components === next.components && prev.componentsByLanguage === next.componentsByLanguage && memoCompareNodes(prev, next);
73
+ return isEqual;
74
+ });
70
75
  export {
71
76
  CodeOverride
72
77
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/CodeOverride.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ComponentType, FC, useContext } from \"react\";\nimport { PreContext } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n },\n componentsByLanguage = {},\n children,\n node,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n node={node}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n componentsByLanguage[language]?.SyntaxHighlighter ??\n FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n componentsByLanguage[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n node={node}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >\n | undefined;\n};\n\nexport const CodeOverride: FC<CodeOverrideProps> = ({\n components,\n componentsByLanguage,\n ...props\n}) => {\n const preProps = useContext(PreContext);\n if (!preProps) return <components.Code {...props} />;\n return (\n <CodeBlockOverride\n components={components}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n );\n};\n"],"mappings":";AAAA,SAAsD,kBAAkB;AACxE,SAAS,kBAAkB;AAO3B,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AAiBpC;AAfJ,IAAM,oBAA2C,CAAC;AAAA,EAChD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,YAAY;AAAA,EACd;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,WAAW,WAAW,UAAU;AACtC,QAAM,cAAc,iBAAsB,QAAQ;AAClD,QAAM,aAA2B,eAAe,CAAC,UAC/C,oBAAC,OAAK,GAAG,YAAY,KAAK,GAAG,CAC9B;AAED,QAAM,eAAe,iBAAsB,SAAS;AACpD,QAAM,cAA6B,eAAe,CAAC,UACjD,oBAAC,QAAM,GAAG,aAAa,KAAK,GAAG,CAChC;AAED,QAAM,WAAW,iBAAiB,KAAK,UAAU,aAAa,EAAE,IAAI,CAAC,KAAK;AAG1E,MAAI,OAAO,aAAa,UAAU;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,KAAK,YAAY,MAAM,YAAY;AAAA,QACjD,MAAM;AAAA,QACN;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,oBACJ,qBAAqB,QAAQ,GAAG,qBAChC;AAEF,QAAM,aACJ,qBAAqB,QAAQ,GAAG,cAAc;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAY;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,MAAM;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAoBO,IAAM,eAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,WAAW,WAAW,UAAU;AACtC,MAAI,CAAC,SAAU,QAAO,oBAAC,WAAW,MAAX,EAAiB,GAAG,OAAO;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/CodeOverride.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ComponentType,\n FC,\n memo,\n useContext,\n} from \"react\";\nimport { PreContext, useIsMarkdownCodeBlock } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\nimport { memoCompareNodes } from \"../memoization\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n },\n componentsByLanguage = {},\n children,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n componentsByLanguage[language]?.SyntaxHighlighter ??\n FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n componentsByLanguage[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >\n | undefined;\n};\n\nconst CodeOverrideImpl: FC<CodeOverrideProps> = ({\n components,\n componentsByLanguage,\n ...props\n}) => {\n const isCodeBlock = useIsMarkdownCodeBlock();\n if (!isCodeBlock) return <components.Code {...props} />;\n return (\n <CodeBlockOverride\n components={components}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n );\n};\n\nexport const CodeOverride = memo(CodeOverrideImpl, (prev, next) => {\n const isEqual =\n prev.components === next.components &&\n prev.componentsByLanguage === next.componentsByLanguage &&\n memoCompareNodes(prev, next);\n return isEqual;\n});\n"],"mappings":";AAAA;AAAA,EAIE;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAY,8BAA8B;AAOnD,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,wBAAwB;AAgB7B;AAdJ,IAAM,oBAA2C,CAAC;AAAA,EAChD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,YAAY;AAAA,EACd;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,WAAW,WAAW,UAAU;AACtC,QAAM,cAAc,iBAAsB,QAAQ;AAClD,QAAM,aAA2B,eAAe,CAAC,UAC/C,oBAAC,OAAK,GAAG,YAAY,KAAK,GAAG,CAC9B;AAED,QAAM,eAAe,iBAAsB,SAAS;AACpD,QAAM,cAA6B,eAAe,CAAC,UACjD,oBAAC,QAAM,GAAG,aAAa,KAAK,GAAG,CAChC;AAED,QAAM,WAAW,iBAAiB,KAAK,UAAU,aAAa,EAAE,IAAI,CAAC,KAAK;AAG1E,MAAI,OAAO,aAAa,UAAU;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,KAAK,YAAY,MAAM,YAAY;AAAA,QACjD,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AAEA,QAAM,oBACJ,qBAAqB,QAAQ,GAAG,qBAChC;AAEF,QAAM,aACJ,qBAAqB,QAAQ,GAAG,cAAc;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAY;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,MAAM;AAAA;AAAA,EACR;AAEJ;AAoBA,IAAM,mBAA0C,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,uBAAuB;AAC3C,MAAI,CAAC,YAAa,QAAO,oBAAC,WAAW,MAAX,EAAiB,GAAG,OAAO;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,IAAM,eAAe,KAAK,kBAAkB,CAAC,MAAM,SAAS;AACjE,QAAM,UACJ,KAAK,eAAe,KAAK,cACzB,KAAK,yBAAyB,KAAK,wBACnC,iBAAiB,MAAM,IAAI;AAC7B,SAAO;AACT,CAAC;","names":[]}
@@ -1,7 +1,8 @@
1
- import { PreComponent } from "./types";
2
1
  export declare const PreContext: import("react").Context<Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, "ref"> & {
3
2
  node?: import("hast").Element | undefined;
4
3
  }, "children"> | null>;
5
4
  export declare const useIsMarkdownCodeBlock: () => boolean;
6
- export declare const PreOverride: PreComponent;
5
+ export declare const PreOverride: import("react").NamedExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, "ref"> & {
6
+ node?: import("hast").Element | undefined;
7
+ }>;
7
8
  //# sourceMappingURL=PreOverride.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreOverride.d.ts","sourceRoot":"","sources":["../../src/overrides/PreOverride.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,UAAU;;sBAGR,CAAC;AAEhB,eAAO,MAAM,sBAAsB,eAElC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,YAEzB,CAAC"}
1
+ {"version":3,"file":"PreOverride.d.ts","sourceRoot":"","sources":["../../src/overrides/PreOverride.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU;;sBAGR,CAAC;AAEhB,eAAO,MAAM,sBAAsB,eAElC,CAAC;AAMF,eAAO,MAAM,WAAW;;EAA0C,CAAC"}
@@ -26,14 +26,16 @@ __export(PreOverride_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(PreOverride_exports);
28
28
  var import_react = require("react");
29
+ var import_memoization = require("../memoization.js");
29
30
  var import_jsx_runtime = require("react/jsx-runtime");
30
31
  var PreContext = (0, import_react.createContext)(null);
31
32
  var useIsMarkdownCodeBlock = () => {
32
33
  return (0, import_react.useContext)(PreContext) !== null;
33
34
  };
34
- var PreOverride = ({ children, ...rest }) => {
35
+ var PreOverrideImpl = ({ children, ...rest }) => {
35
36
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PreContext.Provider, { value: rest, children });
36
37
  };
38
+ var PreOverride = (0, import_react.memo)(PreOverrideImpl, import_memoization.memoCompareNodes);
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
39
41
  PreContext,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/PreOverride.tsx"],"sourcesContent":["import { createContext, ComponentPropsWithoutRef, useContext } from \"react\";\nimport { PreComponent } from \"./types\";\n\nexport const PreContext = createContext<Omit<\n ComponentPropsWithoutRef<PreComponent>,\n \"children\"\n> | null>(null);\n\nexport const useIsMarkdownCodeBlock = () => {\n return useContext(PreContext) !== null;\n};\n\nexport const PreOverride: PreComponent = ({ children, ...rest }) => {\n return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoE;AAa3D;AAVF,IAAM,iBAAa,4BAGhB,IAAI;AAEP,IAAM,yBAAyB,MAAM;AAC1C,aAAO,yBAAW,UAAU,MAAM;AACpC;AAEO,IAAM,cAA4B,CAAC,EAAE,UAAU,GAAG,KAAK,MAAM;AAClE,SAAO,4CAAC,WAAW,UAAX,EAAoB,OAAO,MAAO,UAAS;AACrD;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/PreOverride.tsx"],"sourcesContent":["import {\n createContext,\n ComponentPropsWithoutRef,\n useContext,\n memo,\n} from \"react\";\nimport { PreComponent } from \"./types\";\nimport { memoCompareNodes } from \"../memoization\";\n\nexport const PreContext = createContext<Omit<\n ComponentPropsWithoutRef<PreComponent>,\n \"children\"\n> | null>(null);\n\nexport const useIsMarkdownCodeBlock = () => {\n return useContext(PreContext) !== null;\n};\n\nconst PreOverrideImpl: PreComponent = ({ children, ...rest }) => {\n return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;\n};\n\nexport const PreOverride = memo(PreOverrideImpl, memoCompareNodes);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKO;AAEP,yBAAiC;AAYxB;AAVF,IAAM,iBAAa,4BAGhB,IAAI;AAEP,IAAM,yBAAyB,MAAM;AAC1C,aAAO,yBAAW,UAAU,MAAM;AACpC;AAEA,IAAM,kBAAgC,CAAC,EAAE,UAAU,GAAG,KAAK,MAAM;AAC/D,SAAO,4CAAC,WAAW,UAAX,EAAoB,OAAO,MAAO,UAAS;AACrD;AAEO,IAAM,kBAAc,mBAAK,iBAAiB,mCAAgB;","names":[]}
@@ -1,13 +1,19 @@
1
1
  // src/overrides/PreOverride.tsx
2
- import { createContext, useContext } from "react";
2
+ import {
3
+ createContext,
4
+ useContext,
5
+ memo
6
+ } from "react";
7
+ import { memoCompareNodes } from "../memoization.mjs";
3
8
  import { jsx } from "react/jsx-runtime";
4
9
  var PreContext = createContext(null);
5
10
  var useIsMarkdownCodeBlock = () => {
6
11
  return useContext(PreContext) !== null;
7
12
  };
8
- var PreOverride = ({ children, ...rest }) => {
13
+ var PreOverrideImpl = ({ children, ...rest }) => {
9
14
  return /* @__PURE__ */ jsx(PreContext.Provider, { value: rest, children });
10
15
  };
16
+ var PreOverride = memo(PreOverrideImpl, memoCompareNodes);
11
17
  export {
12
18
  PreContext,
13
19
  PreOverride,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/PreOverride.tsx"],"sourcesContent":["import { createContext, ComponentPropsWithoutRef, useContext } from \"react\";\nimport { PreComponent } from \"./types\";\n\nexport const PreContext = createContext<Omit<\n ComponentPropsWithoutRef<PreComponent>,\n \"children\"\n> | null>(null);\n\nexport const useIsMarkdownCodeBlock = () => {\n return useContext(PreContext) !== null;\n};\n\nexport const PreOverride: PreComponent = ({ children, ...rest }) => {\n return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;\n};\n"],"mappings":";AAAA,SAAS,eAAyC,kBAAkB;AAa3D;AAVF,IAAM,aAAa,cAGhB,IAAI;AAEP,IAAM,yBAAyB,MAAM;AAC1C,SAAO,WAAW,UAAU,MAAM;AACpC;AAEO,IAAM,cAA4B,CAAC,EAAE,UAAU,GAAG,KAAK,MAAM;AAClE,SAAO,oBAAC,WAAW,UAAX,EAAoB,OAAO,MAAO,UAAS;AACrD;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/PreOverride.tsx"],"sourcesContent":["import {\n createContext,\n ComponentPropsWithoutRef,\n useContext,\n memo,\n} from \"react\";\nimport { PreComponent } from \"./types\";\nimport { memoCompareNodes } from \"../memoization\";\n\nexport const PreContext = createContext<Omit<\n ComponentPropsWithoutRef<PreComponent>,\n \"children\"\n> | null>(null);\n\nexport const useIsMarkdownCodeBlock = () => {\n return useContext(PreContext) !== null;\n};\n\nconst PreOverrideImpl: PreComponent = ({ children, ...rest }) => {\n return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;\n};\n\nexport const PreOverride = memo(PreOverrideImpl, memoCompareNodes);\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,wBAAwB;AAYxB;AAVF,IAAM,aAAa,cAGhB,IAAI;AAEP,IAAM,yBAAyB,MAAM;AAC1C,SAAO,WAAW,UAAU,MAAM;AACpC;AAEA,IAAM,kBAAgC,CAAC,EAAE,UAAU,GAAG,KAAK,MAAM;AAC/D,SAAO,oBAAC,WAAW,UAAX,EAAoB,OAAO,MAAO,UAAS;AACrD;AAEO,IAAM,cAAc,KAAK,iBAAiB,gBAAgB;","names":[]}
@@ -1,5 +1,4 @@
1
1
  import type { ComponentType, ReactNode } from "react";
2
- import { Element } from "hast";
3
2
  import { PreComponent, CodeComponent, CodeHeaderProps } from "./types";
4
3
  export declare const DefaultPre: PreComponent;
5
4
  export declare const DefaultCode: CodeComponent;
@@ -9,7 +8,6 @@ export declare const DefaultCodeBlockContent: ComponentType<{
9
8
  Code: CodeComponent;
10
9
  };
11
10
  code: string | ReactNode | undefined;
12
- node: Element | undefined;
13
11
  }>;
14
12
  export declare const DefaultCodeHeader: ComponentType<CodeHeaderProps>;
15
13
  //# sourceMappingURL=defaultComponents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultComponents.d.ts","sourceRoot":"","sources":["../../src/overrides/defaultComponents.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvE,eAAO,MAAM,UAAU,EAAE,YAExB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,aAEzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC;IAClD,UAAU,EAAE;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC;IACvD,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B,CAIA,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,eAAe,CAAc,CAAC"}
1
+ {"version":3,"file":"defaultComponents.d.ts","sourceRoot":"","sources":["../../src/overrides/defaultComponents.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvE,eAAO,MAAM,UAAU,EAAE,YAExB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,aAEzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC;IAClD,UAAU,EAAE;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC;IACvD,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CACtC,CAIA,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,eAAe,CAAc,CAAC"}
@@ -29,7 +29,7 @@ module.exports = __toCommonJS(defaultComponents_exports);
29
29
  var import_jsx_runtime = require("react/jsx-runtime");
30
30
  var DefaultPre = ({ node, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { ...rest });
31
31
  var DefaultCode = ({ node, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { ...rest });
32
- var DefaultCodeBlockContent = ({ components: { Pre, Code }, code, node }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pre, { node, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Code, { node, children: code }) });
32
+ var DefaultCodeBlockContent = ({ components: { Pre, Code }, code }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pre, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Code, { children: code }) });
33
33
  var DefaultCodeHeader = () => null;
34
34
  // Annotate the CommonJS export names for ESM import in node:
35
35
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/defaultComponents.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport { Element } from \"hast\";\nimport { PreComponent, CodeComponent, CodeHeaderProps } from \"./types\";\n\nexport const DefaultPre: PreComponent = ({ node, ...rest }) => (\n <pre {...rest} />\n);\n\nexport const DefaultCode: CodeComponent = ({ node, ...rest }) => (\n <code {...rest} />\n);\n\nexport const DefaultCodeBlockContent: ComponentType<{\n components: { Pre: PreComponent; Code: CodeComponent };\n code: string | ReactNode | undefined;\n node: Element | undefined;\n}> = ({ components: { Pre, Code }, code, node }) => (\n <Pre node={node}>\n <Code node={node}>{code}</Code>\n </Pre>\n);\n\nexport const DefaultCodeHeader: ComponentType<CodeHeaderProps> = () => null;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKE;AADK,IAAM,aAA2B,CAAC,EAAE,MAAM,GAAG,KAAK,MACvD,4CAAC,SAAK,GAAG,MAAM;AAGV,IAAM,cAA6B,CAAC,EAAE,MAAM,GAAG,KAAK,MACzD,4CAAC,UAAM,GAAG,MAAM;AAGX,IAAM,0BAIR,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,GAAG,MAAM,KAAK,MAC5C,4CAAC,OAAI,MACH,sDAAC,QAAK,MAAa,gBAAK,GAC1B;AAGK,IAAM,oBAAoD,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/defaultComponents.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport { PreComponent, CodeComponent, CodeHeaderProps } from \"./types\";\n\nexport const DefaultPre: PreComponent = ({ node, ...rest }) => (\n <pre {...rest} />\n);\n\nexport const DefaultCode: CodeComponent = ({ node, ...rest }) => (\n <code {...rest} />\n);\n\nexport const DefaultCodeBlockContent: ComponentType<{\n components: { Pre: PreComponent; Code: CodeComponent };\n code: string | ReactNode | undefined;\n}> = ({ components: { Pre, Code }, code }) => (\n <Pre>\n <Code>{code}</Code>\n </Pre>\n);\n\nexport const DefaultCodeHeader: ComponentType<CodeHeaderProps> = () => null;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIE;AADK,IAAM,aAA2B,CAAC,EAAE,MAAM,GAAG,KAAK,MACvD,4CAAC,SAAK,GAAG,MAAM;AAGV,IAAM,cAA6B,CAAC,EAAE,MAAM,GAAG,KAAK,MACzD,4CAAC,UAAM,GAAG,MAAM;AAGX,IAAM,0BAGR,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,GAAG,KAAK,MACtC,4CAAC,OACC,sDAAC,QAAM,gBAAK,GACd;AAGK,IAAM,oBAAoD,MAAM;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  var DefaultPre = ({ node, ...rest }) => /* @__PURE__ */ jsx("pre", { ...rest });
4
4
  var DefaultCode = ({ node, ...rest }) => /* @__PURE__ */ jsx("code", { ...rest });
5
- var DefaultCodeBlockContent = ({ components: { Pre, Code }, code, node }) => /* @__PURE__ */ jsx(Pre, { node, children: /* @__PURE__ */ jsx(Code, { node, children: code }) });
5
+ var DefaultCodeBlockContent = ({ components: { Pre, Code }, code }) => /* @__PURE__ */ jsx(Pre, { children: /* @__PURE__ */ jsx(Code, { children: code }) });
6
6
  var DefaultCodeHeader = () => null;
7
7
  export {
8
8
  DefaultCode,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/overrides/defaultComponents.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport { Element } from \"hast\";\nimport { PreComponent, CodeComponent, CodeHeaderProps } from \"./types\";\n\nexport const DefaultPre: PreComponent = ({ node, ...rest }) => (\n <pre {...rest} />\n);\n\nexport const DefaultCode: CodeComponent = ({ node, ...rest }) => (\n <code {...rest} />\n);\n\nexport const DefaultCodeBlockContent: ComponentType<{\n components: { Pre: PreComponent; Code: CodeComponent };\n code: string | ReactNode | undefined;\n node: Element | undefined;\n}> = ({ components: { Pre, Code }, code, node }) => (\n <Pre node={node}>\n <Code node={node}>{code}</Code>\n </Pre>\n);\n\nexport const DefaultCodeHeader: ComponentType<CodeHeaderProps> = () => null;\n"],"mappings":";AAKE;AADK,IAAM,aAA2B,CAAC,EAAE,MAAM,GAAG,KAAK,MACvD,oBAAC,SAAK,GAAG,MAAM;AAGV,IAAM,cAA6B,CAAC,EAAE,MAAM,GAAG,KAAK,MACzD,oBAAC,UAAM,GAAG,MAAM;AAGX,IAAM,0BAIR,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,GAAG,MAAM,KAAK,MAC5C,oBAAC,OAAI,MACH,8BAAC,QAAK,MAAa,gBAAK,GAC1B;AAGK,IAAM,oBAAoD,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../src/overrides/defaultComponents.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport { PreComponent, CodeComponent, CodeHeaderProps } from \"./types\";\n\nexport const DefaultPre: PreComponent = ({ node, ...rest }) => (\n <pre {...rest} />\n);\n\nexport const DefaultCode: CodeComponent = ({ node, ...rest }) => (\n <code {...rest} />\n);\n\nexport const DefaultCodeBlockContent: ComponentType<{\n components: { Pre: PreComponent; Code: CodeComponent };\n code: string | ReactNode | undefined;\n}> = ({ components: { Pre, Code }, code }) => (\n <Pre>\n <Code>{code}</Code>\n </Pre>\n);\n\nexport const DefaultCodeHeader: ComponentType<CodeHeaderProps> = () => null;\n"],"mappings":";AAIE;AADK,IAAM,aAA2B,CAAC,EAAE,MAAM,GAAG,KAAK,MACvD,oBAAC,SAAK,GAAG,MAAM;AAGV,IAAM,cAA6B,CAAC,EAAE,MAAM,GAAG,KAAK,MACzD,oBAAC,UAAM,GAAG,MAAM;AAGX,IAAM,0BAGR,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,GAAG,KAAK,MACtC,oBAAC,OACC,8BAAC,QAAM,gBAAK,GACd;AAGK,IAAM,oBAAoD,MAAM;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownText.d.ts","sourceRoot":"","sources":["../../src/primitives/MarkdownText.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,yBAAyB,EACzB,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AACf,OAAsB,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAU7E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAKtD,KAAK,4BAA4B,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACvE,KAAK,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAExE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,OAAO,EACP,YAAY,GAAG,UAAU,CAC1B,GAAG;IACF,cAAc,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC7E,kBAAkB,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EACP,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;QACpC,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;QACtE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QACxD;;YAEI;QACJ,WAAW,CAAC,EAAE,SAAS,CAAC;KACzB,CAAC,GACF,SAAS,CAAC;IACd,oBAAoB,CAAC,EACjB,MAAM,CACJ,MAAM,EACN;QACE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QACxD,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;KACvE,CACF,GACD,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,yBAAyB,CAAC,0BAA0B,CAAC,GACvF,aAAa,CAAC,4BAA4B,CAwD3C,CAAC"}
1
+ {"version":3,"file":"MarkdownText.d.ts","sourceRoot":"","sources":["../../src/primitives/MarkdownText.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,yBAAyB,EACzB,aAAa,EAEb,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AACf,OAAsB,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAU7E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAKtD,KAAK,4BAA4B,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACvE,KAAK,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAExE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,OAAO,EACP,YAAY,GAAG,UAAU,CAC1B,GAAG;IACF,cAAc,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC7E,kBAAkB,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EACP,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;QACpC,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;QACtE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QACxD;;YAEI;QACJ,WAAW,CAAC,EAAE,SAAS,CAAC;KACzB,CAAC,GACF,SAAS,CAAC;IACd,oBAAoB,CAAC,EACjB,MAAM,CACJ,MAAM,EACN;QACE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QACxD,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;KACvE,CACF,GACD,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,yBAAyB,CAAC,0BAA0B,CAAC,GACvF,aAAa,CAAC,4BAA4B,CAqE3C,CAAC"}
@@ -59,27 +59,39 @@ var MarkdownTextPrimitive = (0, import_react2.forwardRef)(
59
59
  pre = import_defaultComponents.DefaultPre,
60
60
  code = import_defaultComponents.DefaultCode,
61
61
  SyntaxHighlighter = import_defaultComponents.DefaultCodeBlockContent,
62
- CodeHeader = import_defaultComponents.DefaultCodeHeader,
63
- by_language,
64
- ...componentsRest
62
+ CodeHeader = import_defaultComponents.DefaultCodeHeader
65
63
  } = userComponents ?? {};
66
- const components = {
67
- ...componentsRest,
68
- pre: import_PreOverride.PreOverride,
69
- code: (0, import_react_use_callback_ref.useCallbackRef)((props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
70
- import_CodeOverride.CodeOverride,
71
- {
72
- components: {
73
- Pre: pre,
74
- Code: code,
75
- SyntaxHighlighter,
76
- CodeHeader
77
- },
78
- componentsByLanguage,
79
- ...props
80
- }
81
- ))
82
- };
64
+ const useCodeOverrideComponents = (0, import_react2.useMemo)(() => {
65
+ return {
66
+ Pre: pre,
67
+ Code: code,
68
+ SyntaxHighlighter,
69
+ CodeHeader
70
+ };
71
+ }, [pre, code, SyntaxHighlighter, CodeHeader]);
72
+ const CodeComponent = (0, import_react_use_callback_ref.useCallbackRef)((props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
+ import_CodeOverride.CodeOverride,
74
+ {
75
+ components: useCodeOverrideComponents,
76
+ componentsByLanguage,
77
+ ...props
78
+ }
79
+ ));
80
+ const components = (0, import_react2.useMemo)(() => {
81
+ const {
82
+ pre: pre2 = import_defaultComponents.DefaultPre,
83
+ code: code2 = import_defaultComponents.DefaultCode,
84
+ SyntaxHighlighter: SyntaxHighlighter2 = import_defaultComponents.DefaultCodeBlockContent,
85
+ CodeHeader: CodeHeader2 = import_defaultComponents.DefaultCodeHeader,
86
+ by_language,
87
+ ...componentsRest
88
+ } = userComponents ?? {};
89
+ return {
90
+ ...componentsRest,
91
+ pre: import_PreOverride.PreOverride,
92
+ code: CodeComponent
93
+ };
94
+ }, [CodeComponent, userComponents, componentsByLanguage]);
83
95
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
84
96
  Container,
85
97
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/primitives/MarkdownText.tsx"],"sourcesContent":["\"use client\";\n\nimport { INTERNAL, useContentPartText } from \"@assistant-ui/react\";\nimport {\n ComponentRef,\n ElementType,\n forwardRef,\n ForwardRefExoticComponent,\n RefAttributes,\n type ComponentPropsWithoutRef,\n type ComponentType,\n} from \"react\";\nimport ReactMarkdown, { type Options } from \"react-markdown\";\nimport { SyntaxHighlighterProps, CodeHeaderProps } from \"../overrides/types\";\nimport { PreOverride } from \"../overrides/PreOverride\";\nimport {\n DefaultPre,\n DefaultCode,\n DefaultCodeBlockContent,\n DefaultCodeHeader,\n} from \"../overrides/defaultComponents\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { CodeOverride } from \"../overrides/CodeOverride\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport classNames from \"classnames\";\n\nconst { useSmooth } = INTERNAL;\n\ntype MarkdownTextPrimitiveElement = ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;\n\nexport type MarkdownTextPrimitiveProps = Omit<\n Options,\n \"components\" | \"children\"\n> & {\n containerProps?: Omit<PrimitiveDivProps, \"children\" | \"asChild\"> | undefined;\n containerComponent?: ElementType | undefined;\n components?:\n | (NonNullable<Options[\"components\"]> & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n /**\n * @deprecated Use `componentsByLanguage` instead of `components.by_language`. This will be removed in the next major version.\n **/\n by_language?: undefined;\n })\n | undefined;\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n }\n >\n | undefined;\n smooth?: boolean | undefined;\n};\n\nexport const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &\n RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<\n MarkdownTextPrimitiveElement,\n MarkdownTextPrimitiveProps\n>(\n (\n {\n components: userComponents,\n componentsByLanguage = userComponents?.by_language,\n className,\n containerProps,\n containerComponent: Container = \"div\",\n smooth = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const { text, status } = useSmooth(useContentPartText(), smooth);\n\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n by_language,\n ...componentsRest\n } = userComponents ?? {};\n const components: Options[\"components\"] = {\n ...componentsRest,\n pre: PreOverride,\n code: useCallbackRef((props) => (\n <CodeOverride\n components={{\n Pre: pre,\n Code: code,\n SyntaxHighlighter,\n CodeHeader,\n }}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n )),\n };\n\n return (\n <Container\n data-status={status.type}\n {...containerProps}\n className={classNames(className, containerProps?.className)}\n ref={forwardedRef}\n >\n <ReactMarkdown components={components} {...rest}>\n {text}\n </ReactMarkdown>\n </Container>\n );\n },\n);\n\nMarkdownTextPrimitive.displayName = \"MarkdownTextPrimitive\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6C;AAC7C,IAAAA,gBAQO;AACP,4BAA4C;AAE5C,yBAA4B;AAC5B,+BAKO;AACP,oCAA+B;AAC/B,0BAA6B;AAE7B,wBAAuB;AAkEf;AAhER,IAAM,EAAE,UAAU,IAAI;AAiCf,IAAM,4BACmC;AAAA,EAI9C,CACE;AAAA,IACE,YAAY;AAAA,IACZ,uBAAuB,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY;AAAA,IAChC,SAAS;AAAA,IACT,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,EAAE,MAAM,OAAO,IAAI,cAAU,iCAAmB,GAAG,MAAM;AAE/D,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb;AAAA,MACA,GAAG;AAAA,IACL,IAAI,kBAAkB,CAAC;AACvB,UAAM,aAAoC;AAAA,MACxC,GAAG;AAAA,MACH,KAAK;AAAA,MACL,UAAM,8CAAe,CAAC,UACpB;AAAA,QAAC;AAAA;AAAA,UACC,YAAY;AAAA,YACV,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UACC,GAAG;AAAA;AAAA,MACN,CACD;AAAA,IACH;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa,OAAO;AAAA,QACnB,GAAG;AAAA,QACJ,eAAW,kBAAAC,SAAW,WAAW,gBAAgB,SAAS;AAAA,QAC1D,KAAK;AAAA,QAEL,sDAAC,sBAAAC,SAAA,EAAc,YAAyB,GAAG,MACxC,gBACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,sBAAsB,cAAc;","names":["import_react","classNames","ReactMarkdown"]}
1
+ {"version":3,"sources":["../../src/primitives/MarkdownText.tsx"],"sourcesContent":["\"use client\";\n\nimport { INTERNAL, useContentPartText } from \"@assistant-ui/react\";\nimport {\n ComponentRef,\n ElementType,\n forwardRef,\n ForwardRefExoticComponent,\n RefAttributes,\n useMemo,\n type ComponentPropsWithoutRef,\n type ComponentType,\n} from \"react\";\nimport ReactMarkdown, { type Options } from \"react-markdown\";\nimport { SyntaxHighlighterProps, CodeHeaderProps } from \"../overrides/types\";\nimport { PreOverride } from \"../overrides/PreOverride\";\nimport {\n DefaultPre,\n DefaultCode,\n DefaultCodeBlockContent,\n DefaultCodeHeader,\n} from \"../overrides/defaultComponents\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { CodeOverride } from \"../overrides/CodeOverride\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport classNames from \"classnames\";\n\nconst { useSmooth } = INTERNAL;\n\ntype MarkdownTextPrimitiveElement = ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;\n\nexport type MarkdownTextPrimitiveProps = Omit<\n Options,\n \"components\" | \"children\"\n> & {\n containerProps?: Omit<PrimitiveDivProps, \"children\" | \"asChild\"> | undefined;\n containerComponent?: ElementType | undefined;\n components?:\n | (NonNullable<Options[\"components\"]> & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n /**\n * @deprecated Use `componentsByLanguage` instead of `components.by_language`. This will be removed in the next major version.\n **/\n by_language?: undefined;\n })\n | undefined;\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n }\n >\n | undefined;\n smooth?: boolean | undefined;\n};\n\nexport const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &\n RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<\n MarkdownTextPrimitiveElement,\n MarkdownTextPrimitiveProps\n>(\n (\n {\n components: userComponents,\n componentsByLanguage = userComponents?.by_language,\n className,\n containerProps,\n containerComponent: Container = \"div\",\n smooth = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const { text, status } = useSmooth(useContentPartText(), smooth);\n\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n } = userComponents ?? {};\n const useCodeOverrideComponents = useMemo(() => {\n return {\n Pre: pre,\n Code: code,\n SyntaxHighlighter,\n CodeHeader,\n };\n }, [pre, code, SyntaxHighlighter, CodeHeader]);\n const CodeComponent = useCallbackRef((props) => (\n <CodeOverride\n components={useCodeOverrideComponents}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n ));\n\n const components: Options[\"components\"] = useMemo(() => {\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n by_language,\n ...componentsRest\n } = userComponents ?? {};\n return {\n ...componentsRest,\n pre: PreOverride,\n code: CodeComponent,\n };\n }, [CodeComponent, userComponents, componentsByLanguage]);\n\n return (\n <Container\n data-status={status.type}\n {...containerProps}\n className={classNames(className, containerProps?.className)}\n ref={forwardedRef}\n >\n <ReactMarkdown components={components} {...rest}>\n {text}\n </ReactMarkdown>\n </Container>\n );\n },\n);\n\nMarkdownTextPrimitive.displayName = \"MarkdownTextPrimitive\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6C;AAC7C,IAAAA,gBASO;AACP,4BAA4C;AAE5C,yBAA4B;AAC5B,+BAKO;AACP,oCAA+B;AAC/B,0BAA6B;AAE7B,wBAAuB;AAqEjB;AAnEN,IAAM,EAAE,UAAU,IAAI;AAiCf,IAAM,4BACmC;AAAA,EAI9C,CACE;AAAA,IACE,YAAY;AAAA,IACZ,uBAAuB,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY;AAAA,IAChC,SAAS;AAAA,IACT,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,EAAE,MAAM,OAAO,IAAI,cAAU,iCAAmB,GAAG,MAAM;AAE/D,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,oBAAoB;AAAA,MACpB,aAAa;AAAA,IACf,IAAI,kBAAkB,CAAC;AACvB,UAAM,gCAA4B,uBAAQ,MAAM;AAC9C,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,IACF,GAAG,CAAC,KAAK,MAAM,mBAAmB,UAAU,CAAC;AAC7C,UAAM,oBAAgB,8CAAe,CAAC,UACpC;AAAA,MAAC;AAAA;AAAA,QACC,YAAY;AAAA,QACZ;AAAA,QACC,GAAG;AAAA;AAAA,IACN,CACD;AAED,UAAM,iBAAoC,uBAAQ,MAAM;AACtD,YAAM;AAAA,QACJ,KAAAC,OAAM;AAAA,QACN,MAAAC,QAAO;AAAA,QACP,mBAAAC,qBAAoB;AAAA,QACpB,YAAAC,cAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,MACL,IAAI,kBAAkB,CAAC;AACvB,aAAO;AAAA,QACL,GAAG;AAAA,QACH,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF,GAAG,CAAC,eAAe,gBAAgB,oBAAoB,CAAC;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa,OAAO;AAAA,QACnB,GAAG;AAAA,QACJ,eAAW,kBAAAC,SAAW,WAAW,gBAAgB,SAAS;AAAA,QAC1D,KAAK;AAAA,QAEL,sDAAC,sBAAAC,SAAA,EAAc,YAAyB,GAAG,MACxC,gBACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,sBAAsB,cAAc;","names":["import_react","pre","code","SyntaxHighlighter","CodeHeader","classNames","ReactMarkdown"]}
@@ -3,7 +3,8 @@
3
3
  // src/primitives/MarkdownText.tsx
4
4
  import { INTERNAL, useContentPartText } from "@assistant-ui/react";
5
5
  import {
6
- forwardRef
6
+ forwardRef,
7
+ useMemo
7
8
  } from "react";
8
9
  import ReactMarkdown from "react-markdown";
9
10
  import { PreOverride } from "../overrides/PreOverride.mjs";
@@ -33,27 +34,39 @@ var MarkdownTextPrimitive = forwardRef(
33
34
  pre = DefaultPre,
34
35
  code = DefaultCode,
35
36
  SyntaxHighlighter = DefaultCodeBlockContent,
36
- CodeHeader = DefaultCodeHeader,
37
- by_language,
38
- ...componentsRest
37
+ CodeHeader = DefaultCodeHeader
39
38
  } = userComponents ?? {};
40
- const components = {
41
- ...componentsRest,
42
- pre: PreOverride,
43
- code: useCallbackRef((props) => /* @__PURE__ */ jsx(
44
- CodeOverride,
45
- {
46
- components: {
47
- Pre: pre,
48
- Code: code,
49
- SyntaxHighlighter,
50
- CodeHeader
51
- },
52
- componentsByLanguage,
53
- ...props
54
- }
55
- ))
56
- };
39
+ const useCodeOverrideComponents = useMemo(() => {
40
+ return {
41
+ Pre: pre,
42
+ Code: code,
43
+ SyntaxHighlighter,
44
+ CodeHeader
45
+ };
46
+ }, [pre, code, SyntaxHighlighter, CodeHeader]);
47
+ const CodeComponent = useCallbackRef((props) => /* @__PURE__ */ jsx(
48
+ CodeOverride,
49
+ {
50
+ components: useCodeOverrideComponents,
51
+ componentsByLanguage,
52
+ ...props
53
+ }
54
+ ));
55
+ const components = useMemo(() => {
56
+ const {
57
+ pre: pre2 = DefaultPre,
58
+ code: code2 = DefaultCode,
59
+ SyntaxHighlighter: SyntaxHighlighter2 = DefaultCodeBlockContent,
60
+ CodeHeader: CodeHeader2 = DefaultCodeHeader,
61
+ by_language,
62
+ ...componentsRest
63
+ } = userComponents ?? {};
64
+ return {
65
+ ...componentsRest,
66
+ pre: PreOverride,
67
+ code: CodeComponent
68
+ };
69
+ }, [CodeComponent, userComponents, componentsByLanguage]);
57
70
  return /* @__PURE__ */ jsx(
58
71
  Container,
59
72
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/primitives/MarkdownText.tsx"],"sourcesContent":["\"use client\";\n\nimport { INTERNAL, useContentPartText } from \"@assistant-ui/react\";\nimport {\n ComponentRef,\n ElementType,\n forwardRef,\n ForwardRefExoticComponent,\n RefAttributes,\n type ComponentPropsWithoutRef,\n type ComponentType,\n} from \"react\";\nimport ReactMarkdown, { type Options } from \"react-markdown\";\nimport { SyntaxHighlighterProps, CodeHeaderProps } from \"../overrides/types\";\nimport { PreOverride } from \"../overrides/PreOverride\";\nimport {\n DefaultPre,\n DefaultCode,\n DefaultCodeBlockContent,\n DefaultCodeHeader,\n} from \"../overrides/defaultComponents\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { CodeOverride } from \"../overrides/CodeOverride\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport classNames from \"classnames\";\n\nconst { useSmooth } = INTERNAL;\n\ntype MarkdownTextPrimitiveElement = ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;\n\nexport type MarkdownTextPrimitiveProps = Omit<\n Options,\n \"components\" | \"children\"\n> & {\n containerProps?: Omit<PrimitiveDivProps, \"children\" | \"asChild\"> | undefined;\n containerComponent?: ElementType | undefined;\n components?:\n | (NonNullable<Options[\"components\"]> & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n /**\n * @deprecated Use `componentsByLanguage` instead of `components.by_language`. This will be removed in the next major version.\n **/\n by_language?: undefined;\n })\n | undefined;\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n }\n >\n | undefined;\n smooth?: boolean | undefined;\n};\n\nexport const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &\n RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<\n MarkdownTextPrimitiveElement,\n MarkdownTextPrimitiveProps\n>(\n (\n {\n components: userComponents,\n componentsByLanguage = userComponents?.by_language,\n className,\n containerProps,\n containerComponent: Container = \"div\",\n smooth = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const { text, status } = useSmooth(useContentPartText(), smooth);\n\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n by_language,\n ...componentsRest\n } = userComponents ?? {};\n const components: Options[\"components\"] = {\n ...componentsRest,\n pre: PreOverride,\n code: useCallbackRef((props) => (\n <CodeOverride\n components={{\n Pre: pre,\n Code: code,\n SyntaxHighlighter,\n CodeHeader,\n }}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n )),\n };\n\n return (\n <Container\n data-status={status.type}\n {...containerProps}\n className={classNames(className, containerProps?.className)}\n ref={forwardedRef}\n >\n <ReactMarkdown components={components} {...rest}>\n {text}\n </ReactMarkdown>\n </Container>\n );\n },\n);\n\nMarkdownTextPrimitive.displayName = \"MarkdownTextPrimitive\";\n"],"mappings":";;;AAEA,SAAS,UAAU,0BAA0B;AAC7C;AAAA,EAGE;AAAA,OAKK;AACP,OAAO,mBAAqC;AAE5C,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAE7B,OAAO,gBAAgB;AAkEf;AAhER,IAAM,EAAE,UAAU,IAAI;AAiCf,IAAM,wBACmC;AAAA,EAI9C,CACE;AAAA,IACE,YAAY;AAAA,IACZ,uBAAuB,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY;AAAA,IAChC,SAAS;AAAA,IACT,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,EAAE,MAAM,OAAO,IAAI,UAAU,mBAAmB,GAAG,MAAM;AAE/D,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb;AAAA,MACA,GAAG;AAAA,IACL,IAAI,kBAAkB,CAAC;AACvB,UAAM,aAAoC;AAAA,MACxC,GAAG;AAAA,MACH,KAAK;AAAA,MACL,MAAM,eAAe,CAAC,UACpB;AAAA,QAAC;AAAA;AAAA,UACC,YAAY;AAAA,YACV,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UACC,GAAG;AAAA;AAAA,MACN,CACD;AAAA,IACH;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa,OAAO;AAAA,QACnB,GAAG;AAAA,QACJ,WAAW,WAAW,WAAW,gBAAgB,SAAS;AAAA,QAC1D,KAAK;AAAA,QAEL,8BAAC,iBAAc,YAAyB,GAAG,MACxC,gBACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,sBAAsB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/primitives/MarkdownText.tsx"],"sourcesContent":["\"use client\";\n\nimport { INTERNAL, useContentPartText } from \"@assistant-ui/react\";\nimport {\n ComponentRef,\n ElementType,\n forwardRef,\n ForwardRefExoticComponent,\n RefAttributes,\n useMemo,\n type ComponentPropsWithoutRef,\n type ComponentType,\n} from \"react\";\nimport ReactMarkdown, { type Options } from \"react-markdown\";\nimport { SyntaxHighlighterProps, CodeHeaderProps } from \"../overrides/types\";\nimport { PreOverride } from \"../overrides/PreOverride\";\nimport {\n DefaultPre,\n DefaultCode,\n DefaultCodeBlockContent,\n DefaultCodeHeader,\n} from \"../overrides/defaultComponents\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { CodeOverride } from \"../overrides/CodeOverride\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport classNames from \"classnames\";\n\nconst { useSmooth } = INTERNAL;\n\ntype MarkdownTextPrimitiveElement = ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;\n\nexport type MarkdownTextPrimitiveProps = Omit<\n Options,\n \"components\" | \"children\"\n> & {\n containerProps?: Omit<PrimitiveDivProps, \"children\" | \"asChild\"> | undefined;\n containerComponent?: ElementType | undefined;\n components?:\n | (NonNullable<Options[\"components\"]> & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n /**\n * @deprecated Use `componentsByLanguage` instead of `components.by_language`. This will be removed in the next major version.\n **/\n by_language?: undefined;\n })\n | undefined;\n componentsByLanguage?:\n | Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps> | undefined;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;\n }\n >\n | undefined;\n smooth?: boolean | undefined;\n};\n\nexport const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &\n RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<\n MarkdownTextPrimitiveElement,\n MarkdownTextPrimitiveProps\n>(\n (\n {\n components: userComponents,\n componentsByLanguage = userComponents?.by_language,\n className,\n containerProps,\n containerComponent: Container = \"div\",\n smooth = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const { text, status } = useSmooth(useContentPartText(), smooth);\n\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n } = userComponents ?? {};\n const useCodeOverrideComponents = useMemo(() => {\n return {\n Pre: pre,\n Code: code,\n SyntaxHighlighter,\n CodeHeader,\n };\n }, [pre, code, SyntaxHighlighter, CodeHeader]);\n const CodeComponent = useCallbackRef((props) => (\n <CodeOverride\n components={useCodeOverrideComponents}\n componentsByLanguage={componentsByLanguage}\n {...props}\n />\n ));\n\n const components: Options[\"components\"] = useMemo(() => {\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n by_language,\n ...componentsRest\n } = userComponents ?? {};\n return {\n ...componentsRest,\n pre: PreOverride,\n code: CodeComponent,\n };\n }, [CodeComponent, userComponents, componentsByLanguage]);\n\n return (\n <Container\n data-status={status.type}\n {...containerProps}\n className={classNames(className, containerProps?.className)}\n ref={forwardedRef}\n >\n <ReactMarkdown components={components} {...rest}>\n {text}\n </ReactMarkdown>\n </Container>\n );\n },\n);\n\nMarkdownTextPrimitive.displayName = \"MarkdownTextPrimitive\";\n"],"mappings":";;;AAEA,SAAS,UAAU,0BAA0B;AAC7C;AAAA,EAGE;AAAA,EAGA;AAAA,OAGK;AACP,OAAO,mBAAqC;AAE5C,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAE7B,OAAO,gBAAgB;AAqEjB;AAnEN,IAAM,EAAE,UAAU,IAAI;AAiCf,IAAM,wBACmC;AAAA,EAI9C,CACE;AAAA,IACE,YAAY;AAAA,IACZ,uBAAuB,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY;AAAA,IAChC,SAAS;AAAA,IACT,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,EAAE,MAAM,OAAO,IAAI,UAAU,mBAAmB,GAAG,MAAM;AAE/D,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,oBAAoB;AAAA,MACpB,aAAa;AAAA,IACf,IAAI,kBAAkB,CAAC;AACvB,UAAM,4BAA4B,QAAQ,MAAM;AAC9C,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,IACF,GAAG,CAAC,KAAK,MAAM,mBAAmB,UAAU,CAAC;AAC7C,UAAM,gBAAgB,eAAe,CAAC,UACpC;AAAA,MAAC;AAAA;AAAA,QACC,YAAY;AAAA,QACZ;AAAA,QACC,GAAG;AAAA;AAAA,IACN,CACD;AAED,UAAM,aAAoC,QAAQ,MAAM;AACtD,YAAM;AAAA,QACJ,KAAAA,OAAM;AAAA,QACN,MAAAC,QAAO;AAAA,QACP,mBAAAC,qBAAoB;AAAA,QACpB,YAAAC,cAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,MACL,IAAI,kBAAkB,CAAC;AACvB,aAAO;AAAA,QACL,GAAG;AAAA,QACH,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF,GAAG,CAAC,eAAe,gBAAgB,oBAAoB,CAAC;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa,OAAO;AAAA,QACnB,GAAG;AAAA,QACJ,WAAW,WAAW,WAAW,gBAAgB,SAAS;AAAA,QAC1D,KAAK;AAAA,QAEL,8BAAC,iBAAc,YAAyB,GAAG,MACxC,gBACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,sBAAsB,cAAc;","names":["pre","code","SyntaxHighlighter","CodeHeader"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-markdown",
3
- "version": "0.7.12",
3
+ "version": "0.7.14",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": {
@@ -13,6 +13,9 @@
13
13
  "import": "./dist/tailwindcss/index.mjs",
14
14
  "require": "./dist/tailwindcss/index.js"
15
15
  },
16
+ "./styles/dot.css": {
17
+ "default": "./styles/dot.css"
18
+ },
16
19
  "./styles/*": {
17
20
  "default": "./dist/styles/*"
18
21
  }
@@ -63,9 +66,9 @@
63
66
  "tailwindcss-animate": "^1.0.7",
64
67
  "tsx": "^4.19.2",
65
68
  "@assistant-ui/react": "0.7.61",
66
- "@assistant-ui/tsbuildutils": "^0.0.1",
67
69
  "@assistant-ui/tailwindcss-transformer": "0.1.0",
68
- "@assistant-ui/tsconfig": "0.0.0"
70
+ "@assistant-ui/tsconfig": "0.0.0",
71
+ "@assistant-ui/tsbuildutils": "^0.0.1"
69
72
  },
70
73
  "publishConfig": {
71
74
  "access": "public",
package/src/index.ts CHANGED
@@ -16,3 +16,5 @@ export {
16
16
  } from "./ui/markdown-text";
17
17
 
18
18
  export { CodeHeader } from "./ui/code-header";
19
+
20
+ export { memoizeMarkdownComponents as unstable_memoizeMarkdownComponents } from "./memoization";
@@ -0,0 +1,47 @@
1
+ import { Element } from "hast";
2
+ import { ComponentProps, ComponentType, ElementType, memo } from "react";
3
+ import { CodeHeaderProps, SyntaxHighlighterProps } from "./overrides/types";
4
+
5
+ type Components = {
6
+ [Key in Extract<ElementType, string>]?: ComponentType<ComponentProps<Key>>;
7
+ } & {
8
+ SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps> | undefined;
9
+ CodeHeader?: ComponentType<CodeHeaderProps> | undefined;
10
+ };
11
+
12
+ const areChildrenEqual = (prev: string | unknown, next: string | unknown) => {
13
+ if (typeof prev === "string") return prev === next;
14
+ return JSON.stringify(prev) === JSON.stringify(next);
15
+ };
16
+
17
+ export const areNodesEqual = (
18
+ prev: Element | undefined,
19
+ next: Element | undefined,
20
+ ) => {
21
+ if (!prev || !next) return prev === next;
22
+ const isEqual =
23
+ JSON.stringify(prev?.properties) === JSON.stringify(next?.properties) &&
24
+ areChildrenEqual(prev?.children, next?.children);
25
+ return isEqual;
26
+ };
27
+
28
+ export const memoCompareNodes = (
29
+ prev: { node?: Element | undefined },
30
+ next: { node?: Element | undefined },
31
+ ) => {
32
+ return areNodesEqual(prev.node, next.node);
33
+ };
34
+
35
+ export const memoizeMarkdownComponents = (components: Components = {}) => {
36
+ return Object.fromEntries(
37
+ Object.entries(components ?? {}).map(([key, value]) => {
38
+ if (!value) return [key, value];
39
+
40
+ const Component = value as ComponentType;
41
+ const WithoutNode = ({ node, ...props }: { node?: Element }) => {
42
+ return <Component {...props} />;
43
+ };
44
+ return [key, memo(WithoutNode, memoCompareNodes)];
45
+ }),
46
+ );
47
+ };
@@ -7,7 +7,6 @@ import {
7
7
  SyntaxHighlighterProps,
8
8
  } from "./types";
9
9
  import { DefaultCodeBlockContent } from "./defaultComponents";
10
- import { Element } from "hast";
11
10
 
12
11
  export type CodeBlockProps = {
13
12
  language: string;
@@ -18,14 +17,12 @@ export type CodeBlockProps = {
18
17
  CodeHeader: ComponentType<CodeHeaderProps>;
19
18
  SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;
20
19
  };
21
- node: Element | undefined;
22
20
  };
23
21
 
24
22
  export const DefaultCodeBlock: FC<CodeBlockProps> = ({
25
23
  components: { Pre, Code, SyntaxHighlighter, CodeHeader },
26
24
  language,
27
25
  code,
28
- node,
29
26
  }) => {
30
27
  const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);
31
28
 
@@ -38,7 +35,6 @@ export const DefaultCodeBlock: FC<CodeBlockProps> = ({
38
35
  components={components}
39
36
  language={language ?? "unknown"}
40
37
  code={code}
41
- node={node}
42
38
  />
43
39
  </>
44
40
  );
@@ -1,5 +1,11 @@
1
- import { ComponentPropsWithoutRef, ComponentType, FC, useContext } from "react";
2
- import { PreContext } from "./PreOverride";
1
+ import {
2
+ ComponentPropsWithoutRef,
3
+ ComponentType,
4
+ FC,
5
+ memo,
6
+ useContext,
7
+ } from "react";
8
+ import { PreContext, useIsMarkdownCodeBlock } from "./PreOverride";
3
9
  import {
4
10
  CodeComponent,
5
11
  CodeHeaderProps,
@@ -10,6 +16,7 @@ import { DefaultCodeBlock } from "./CodeBlock";
10
16
  import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
11
17
  import { withDefaultProps } from "./withDefaults";
12
18
  import { DefaultCodeBlockContent } from "./defaultComponents";
19
+ import { memoCompareNodes } from "../memoization";
13
20
 
14
21
  const CodeBlockOverride: FC<CodeOverrideProps> = ({
15
22
  components: {
@@ -20,7 +27,6 @@ const CodeBlockOverride: FC<CodeOverrideProps> = ({
20
27
  },
21
28
  componentsByLanguage = {},
22
29
  children,
23
- node,
24
30
  ...codeProps
25
31
  }) => {
26
32
  const preProps = useContext(PreContext)!;
@@ -42,7 +48,6 @@ const CodeBlockOverride: FC<CodeOverrideProps> = ({
42
48
  <DefaultCodeBlockContent
43
49
  components={{ Pre: WrappedPre, Code: WrappedCode }}
44
50
  code={children}
45
- node={node}
46
51
  />
47
52
  );
48
53
  }
@@ -64,7 +69,6 @@ const CodeBlockOverride: FC<CodeOverrideProps> = ({
64
69
  }}
65
70
  language={language || "unknown"}
66
71
  code={children}
67
- node={node}
68
72
  />
69
73
  );
70
74
  };
@@ -87,13 +91,13 @@ export type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {
87
91
  | undefined;
88
92
  };
89
93
 
90
- export const CodeOverride: FC<CodeOverrideProps> = ({
94
+ const CodeOverrideImpl: FC<CodeOverrideProps> = ({
91
95
  components,
92
96
  componentsByLanguage,
93
97
  ...props
94
98
  }) => {
95
- const preProps = useContext(PreContext);
96
- if (!preProps) return <components.Code {...props} />;
99
+ const isCodeBlock = useIsMarkdownCodeBlock();
100
+ if (!isCodeBlock) return <components.Code {...props} />;
97
101
  return (
98
102
  <CodeBlockOverride
99
103
  components={components}
@@ -102,3 +106,11 @@ export const CodeOverride: FC<CodeOverrideProps> = ({
102
106
  />
103
107
  );
104
108
  };
109
+
110
+ export const CodeOverride = memo(CodeOverrideImpl, (prev, next) => {
111
+ const isEqual =
112
+ prev.components === next.components &&
113
+ prev.componentsByLanguage === next.componentsByLanguage &&
114
+ memoCompareNodes(prev, next);
115
+ return isEqual;
116
+ });
@@ -1,5 +1,11 @@
1
- import { createContext, ComponentPropsWithoutRef, useContext } from "react";
1
+ import {
2
+ createContext,
3
+ ComponentPropsWithoutRef,
4
+ useContext,
5
+ memo,
6
+ } from "react";
2
7
  import { PreComponent } from "./types";
8
+ import { memoCompareNodes } from "../memoization";
3
9
 
4
10
  export const PreContext = createContext<Omit<
5
11
  ComponentPropsWithoutRef<PreComponent>,
@@ -10,6 +16,8 @@ export const useIsMarkdownCodeBlock = () => {
10
16
  return useContext(PreContext) !== null;
11
17
  };
12
18
 
13
- export const PreOverride: PreComponent = ({ children, ...rest }) => {
19
+ const PreOverrideImpl: PreComponent = ({ children, ...rest }) => {
14
20
  return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;
15
21
  };
22
+
23
+ export const PreOverride = memo(PreOverrideImpl, memoCompareNodes);
@@ -1,5 +1,4 @@
1
1
  import type { ComponentType, ReactNode } from "react";
2
- import { Element } from "hast";
3
2
  import { PreComponent, CodeComponent, CodeHeaderProps } from "./types";
4
3
 
5
4
  export const DefaultPre: PreComponent = ({ node, ...rest }) => (
@@ -13,10 +12,9 @@ export const DefaultCode: CodeComponent = ({ node, ...rest }) => (
13
12
  export const DefaultCodeBlockContent: ComponentType<{
14
13
  components: { Pre: PreComponent; Code: CodeComponent };
15
14
  code: string | ReactNode | undefined;
16
- node: Element | undefined;
17
- }> = ({ components: { Pre, Code }, code, node }) => (
18
- <Pre node={node}>
19
- <Code node={node}>{code}</Code>
15
+ }> = ({ components: { Pre, Code }, code }) => (
16
+ <Pre>
17
+ <Code>{code}</Code>
20
18
  </Pre>
21
19
  );
22
20
 
@@ -7,6 +7,7 @@ import {
7
7
  forwardRef,
8
8
  ForwardRefExoticComponent,
9
9
  RefAttributes,
10
+ useMemo,
10
11
  type ComponentPropsWithoutRef,
11
12
  type ComponentType,
12
13
  } from "react";
@@ -81,25 +82,38 @@ export const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimit
81
82
  code = DefaultCode,
82
83
  SyntaxHighlighter = DefaultCodeBlockContent,
83
84
  CodeHeader = DefaultCodeHeader,
84
- by_language,
85
- ...componentsRest
86
85
  } = userComponents ?? {};
87
- const components: Options["components"] = {
88
- ...componentsRest,
89
- pre: PreOverride,
90
- code: useCallbackRef((props) => (
91
- <CodeOverride
92
- components={{
93
- Pre: pre,
94
- Code: code,
95
- SyntaxHighlighter,
96
- CodeHeader,
97
- }}
98
- componentsByLanguage={componentsByLanguage}
99
- {...props}
100
- />
101
- )),
102
- };
86
+ const useCodeOverrideComponents = useMemo(() => {
87
+ return {
88
+ Pre: pre,
89
+ Code: code,
90
+ SyntaxHighlighter,
91
+ CodeHeader,
92
+ };
93
+ }, [pre, code, SyntaxHighlighter, CodeHeader]);
94
+ const CodeComponent = useCallbackRef((props) => (
95
+ <CodeOverride
96
+ components={useCodeOverrideComponents}
97
+ componentsByLanguage={componentsByLanguage}
98
+ {...props}
99
+ />
100
+ ));
101
+
102
+ const components: Options["components"] = useMemo(() => {
103
+ const {
104
+ pre = DefaultPre,
105
+ code = DefaultCode,
106
+ SyntaxHighlighter = DefaultCodeBlockContent,
107
+ CodeHeader = DefaultCodeHeader,
108
+ by_language,
109
+ ...componentsRest
110
+ } = userComponents ?? {};
111
+ return {
112
+ ...componentsRest,
113
+ pre: PreOverride,
114
+ code: CodeComponent,
115
+ };
116
+ }, [CodeComponent, userComponents, componentsByLanguage]);
103
117
 
104
118
  return (
105
119
  <Container