@docubook/mdx-content 3.4.0 → 3.4.2

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 (212) hide show
  1. package/dist/adapters/next/index.d.ts +54 -5
  2. package/dist/adapters/next/index.js +420 -4
  3. package/dist/adapters/next/index.js.map +1 -1
  4. package/dist/chunk-PSDC53TU.js +1056 -0
  5. package/dist/chunk-PSDC53TU.js.map +1 -0
  6. package/dist/client.d.ts +91 -9
  7. package/dist/client.js +1191 -8
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.d.ts +91 -20
  10. package/dist/index.js +1245 -19
  11. package/dist/index.js.map +1 -1
  12. package/dist/server-BObcTM97.d.ts +100 -0
  13. package/dist/server.d.ts +3 -11
  14. package/dist/server.js +40 -10
  15. package/dist/server.js.map +1 -1
  16. package/package.json +5 -4
  17. package/dist/__test__/AccordionMdx.test.d.ts +0 -2
  18. package/dist/__test__/AccordionMdx.test.d.ts.map +0 -1
  19. package/dist/__test__/AccordionMdx.test.js +0 -21
  20. package/dist/__test__/AccordionMdx.test.js.map +0 -1
  21. package/dist/__test__/AccordionsMdx.test.d.ts +0 -2
  22. package/dist/__test__/AccordionsMdx.test.d.ts.map +0 -1
  23. package/dist/__test__/AccordionsMdx.test.js +0 -22
  24. package/dist/__test__/AccordionsMdx.test.js.map +0 -1
  25. package/dist/__test__/ButtonMdx.test.d.ts +0 -2
  26. package/dist/__test__/ButtonMdx.test.d.ts.map +0 -1
  27. package/dist/__test__/ButtonMdx.test.js +0 -20
  28. package/dist/__test__/ButtonMdx.test.js.map +0 -1
  29. package/dist/__test__/CardMdx.test.d.ts +0 -2
  30. package/dist/__test__/CardMdx.test.d.ts.map +0 -1
  31. package/dist/__test__/CardMdx.test.js +0 -29
  32. package/dist/__test__/CardMdx.test.js.map +0 -1
  33. package/dist/__test__/CardsMdx.test.d.ts +0 -2
  34. package/dist/__test__/CardsMdx.test.d.ts.map +0 -1
  35. package/dist/__test__/CardsMdx.test.js +0 -33
  36. package/dist/__test__/CardsMdx.test.js.map +0 -1
  37. package/dist/__test__/CodeBlockMdx.test.d.ts +0 -2
  38. package/dist/__test__/CodeBlockMdx.test.d.ts.map +0 -1
  39. package/dist/__test__/CodeBlockMdx.test.js +0 -48
  40. package/dist/__test__/CodeBlockMdx.test.js.map +0 -1
  41. package/dist/__test__/FileTreeMdx.test.d.ts +0 -2
  42. package/dist/__test__/FileTreeMdx.test.d.ts.map +0 -1
  43. package/dist/__test__/FileTreeMdx.test.js +0 -26
  44. package/dist/__test__/FileTreeMdx.test.js.map +0 -1
  45. package/dist/__test__/ImageMdx.test.d.ts +0 -2
  46. package/dist/__test__/ImageMdx.test.d.ts.map +0 -1
  47. package/dist/__test__/ImageMdx.test.js +0 -32
  48. package/dist/__test__/ImageMdx.test.js.map +0 -1
  49. package/dist/__test__/KbdMdx.test.d.ts +0 -2
  50. package/dist/__test__/KbdMdx.test.d.ts.map +0 -1
  51. package/dist/__test__/KbdMdx.test.js +0 -27
  52. package/dist/__test__/KbdMdx.test.js.map +0 -1
  53. package/dist/__test__/LinkMdx.test.d.ts +0 -2
  54. package/dist/__test__/LinkMdx.test.d.ts.map +0 -1
  55. package/dist/__test__/LinkMdx.test.js +0 -29
  56. package/dist/__test__/LinkMdx.test.js.map +0 -1
  57. package/dist/__test__/MermaidMdx.test.d.ts +0 -2
  58. package/dist/__test__/MermaidMdx.test.d.ts.map +0 -1
  59. package/dist/__test__/MermaidMdx.test.js +0 -207
  60. package/dist/__test__/MermaidMdx.test.js.map +0 -1
  61. package/dist/__test__/NoteMdx.test.d.ts +0 -2
  62. package/dist/__test__/NoteMdx.test.d.ts.map +0 -1
  63. package/dist/__test__/NoteMdx.test.js +0 -39
  64. package/dist/__test__/NoteMdx.test.js.map +0 -1
  65. package/dist/__test__/ReleaseMdx.test.d.ts +0 -2
  66. package/dist/__test__/ReleaseMdx.test.d.ts.map +0 -1
  67. package/dist/__test__/ReleaseMdx.test.js +0 -39
  68. package/dist/__test__/ReleaseMdx.test.js.map +0 -1
  69. package/dist/__test__/StepperMdx.test.d.ts +0 -2
  70. package/dist/__test__/StepperMdx.test.d.ts.map +0 -1
  71. package/dist/__test__/StepperMdx.test.js +0 -25
  72. package/dist/__test__/StepperMdx.test.js.map +0 -1
  73. package/dist/__test__/TableMdx.test.d.ts +0 -2
  74. package/dist/__test__/TableMdx.test.d.ts.map +0 -1
  75. package/dist/__test__/TableMdx.test.js +0 -25
  76. package/dist/__test__/TableMdx.test.js.map +0 -1
  77. package/dist/__test__/TabsMdx.test.d.ts +0 -2
  78. package/dist/__test__/TabsMdx.test.d.ts.map +0 -1
  79. package/dist/__test__/TabsMdx.test.js +0 -30
  80. package/dist/__test__/TabsMdx.test.js.map +0 -1
  81. package/dist/__test__/TooltipMdx.test.d.ts +0 -2
  82. package/dist/__test__/TooltipMdx.test.d.ts.map +0 -1
  83. package/dist/__test__/TooltipMdx.test.js +0 -23
  84. package/dist/__test__/TooltipMdx.test.js.map +0 -1
  85. package/dist/__test__/YoutubeMdx.test.d.ts +0 -2
  86. package/dist/__test__/YoutubeMdx.test.d.ts.map +0 -1
  87. package/dist/__test__/YoutubeMdx.test.js +0 -25
  88. package/dist/__test__/YoutubeMdx.test.js.map +0 -1
  89. package/dist/__test__/utils/ExpandableCode.test.d.ts +0 -2
  90. package/dist/__test__/utils/ExpandableCode.test.d.ts.map +0 -1
  91. package/dist/__test__/utils/ExpandableCode.test.js +0 -62
  92. package/dist/__test__/utils/ExpandableCode.test.js.map +0 -1
  93. package/dist/__test__/utils/Icon.test.d.ts +0 -2
  94. package/dist/__test__/utils/Icon.test.d.ts.map +0 -1
  95. package/dist/__test__/utils/Icon.test.js +0 -29
  96. package/dist/__test__/utils/Icon.test.js.map +0 -1
  97. package/dist/adapters/next/ButtonMdx.d.ts +0 -4
  98. package/dist/adapters/next/ButtonMdx.d.ts.map +0 -1
  99. package/dist/adapters/next/ButtonMdx.js +0 -8
  100. package/dist/adapters/next/ButtonMdx.js.map +0 -1
  101. package/dist/adapters/next/CardMdx.d.ts +0 -4
  102. package/dist/adapters/next/CardMdx.d.ts.map +0 -1
  103. package/dist/adapters/next/CardMdx.js +0 -8
  104. package/dist/adapters/next/CardMdx.js.map +0 -1
  105. package/dist/adapters/next/ImageMdx.d.ts +0 -8
  106. package/dist/adapters/next/ImageMdx.d.ts.map +0 -1
  107. package/dist/adapters/next/ImageMdx.js +0 -8
  108. package/dist/adapters/next/ImageMdx.js.map +0 -1
  109. package/dist/adapters/next/LinkMdx.d.ts +0 -3
  110. package/dist/adapters/next/LinkMdx.d.ts.map +0 -1
  111. package/dist/adapters/next/LinkMdx.js +0 -11
  112. package/dist/adapters/next/LinkMdx.js.map +0 -1
  113. package/dist/adapters/next/index.d.ts.map +0 -1
  114. package/dist/client.d.ts.map +0 -1
  115. package/dist/components/AccordionMdx.d.ts +0 -11
  116. package/dist/components/AccordionMdx.d.ts.map +0 -1
  117. package/dist/components/AccordionMdx.js +0 -64
  118. package/dist/components/AccordionMdx.js.map +0 -1
  119. package/dist/components/AccordionsMdx.d.ts +0 -7
  120. package/dist/components/AccordionsMdx.d.ts.map +0 -1
  121. package/dist/components/AccordionsMdx.js +0 -14
  122. package/dist/components/AccordionsMdx.js.map +0 -1
  123. package/dist/components/ButtonMdx.d.ts +0 -17
  124. package/dist/components/ButtonMdx.d.ts.map +0 -1
  125. package/dist/components/ButtonMdx.js +0 -57
  126. package/dist/components/ButtonMdx.js.map +0 -1
  127. package/dist/components/CardMdx.d.ts +0 -17
  128. package/dist/components/CardMdx.d.ts.map +0 -1
  129. package/dist/components/CardMdx.js +0 -52
  130. package/dist/components/CardMdx.js.map +0 -1
  131. package/dist/components/CardsMdx.d.ts +0 -9
  132. package/dist/components/CardsMdx.d.ts.map +0 -1
  133. package/dist/components/CardsMdx.js +0 -9
  134. package/dist/components/CardsMdx.js.map +0 -1
  135. package/dist/components/CodeBlockMdx.d.ts +0 -11
  136. package/dist/components/CodeBlockMdx.d.ts.map +0 -1
  137. package/dist/components/CodeBlockMdx.js +0 -135
  138. package/dist/components/CodeBlockMdx.js.map +0 -1
  139. package/dist/components/FileTreeMdx.d.ts +0 -19
  140. package/dist/components/FileTreeMdx.d.ts.map +0 -1
  141. package/dist/components/FileTreeMdx.js +0 -99
  142. package/dist/components/FileTreeMdx.js.map +0 -1
  143. package/dist/components/ImageMdx.d.ts +0 -8
  144. package/dist/components/ImageMdx.d.ts.map +0 -1
  145. package/dist/components/ImageMdx.js +0 -111
  146. package/dist/components/ImageMdx.js.map +0 -1
  147. package/dist/components/KbdMdx.d.ts +0 -9
  148. package/dist/components/KbdMdx.d.ts.map +0 -1
  149. package/dist/components/KbdMdx.js +0 -74
  150. package/dist/components/KbdMdx.js.map +0 -1
  151. package/dist/components/LinkMdx.d.ts +0 -4
  152. package/dist/components/LinkMdx.d.ts.map +0 -1
  153. package/dist/components/LinkMdx.js +0 -10
  154. package/dist/components/LinkMdx.js.map +0 -1
  155. package/dist/components/MermaidMdx.d.ts +0 -13
  156. package/dist/components/MermaidMdx.d.ts.map +0 -1
  157. package/dist/components/MermaidMdx.js +0 -211
  158. package/dist/components/MermaidMdx.js.map +0 -1
  159. package/dist/components/NoteMdx.d.ts +0 -13
  160. package/dist/components/NoteMdx.d.ts.map +0 -1
  161. package/dist/components/NoteMdx.js +0 -79
  162. package/dist/components/NoteMdx.js.map +0 -1
  163. package/dist/components/ReleaseMdx.d.ts +0 -16
  164. package/dist/components/ReleaseMdx.d.ts.map +0 -1
  165. package/dist/components/ReleaseMdx.js +0 -44
  166. package/dist/components/ReleaseMdx.js.map +0 -1
  167. package/dist/components/StepperMdx.d.ts +0 -17
  168. package/dist/components/StepperMdx.d.ts.map +0 -1
  169. package/dist/components/StepperMdx.js +0 -74
  170. package/dist/components/StepperMdx.js.map +0 -1
  171. package/dist/components/TableMdx.d.ts +0 -9
  172. package/dist/components/TableMdx.d.ts.map +0 -1
  173. package/dist/components/TableMdx.js +0 -56
  174. package/dist/components/TableMdx.js.map +0 -1
  175. package/dist/components/TabsMdx.d.ts +0 -13
  176. package/dist/components/TabsMdx.d.ts.map +0 -1
  177. package/dist/components/TabsMdx.js +0 -67
  178. package/dist/components/TabsMdx.js.map +0 -1
  179. package/dist/components/TooltipMdx.d.ts +0 -10
  180. package/dist/components/TooltipMdx.d.ts.map +0 -1
  181. package/dist/components/TooltipMdx.js +0 -36
  182. package/dist/components/TooltipMdx.js.map +0 -1
  183. package/dist/components/YoutubeMdx.d.ts +0 -7
  184. package/dist/components/YoutubeMdx.d.ts.map +0 -1
  185. package/dist/components/YoutubeMdx.js +0 -24
  186. package/dist/components/YoutubeMdx.js.map +0 -1
  187. package/dist/components/index.d.ts +0 -19
  188. package/dist/components/index.d.ts.map +0 -1
  189. package/dist/components/index.js +0 -19
  190. package/dist/components/index.js.map +0 -1
  191. package/dist/index.d.ts.map +0 -1
  192. package/dist/registry/index.d.ts +0 -4
  193. package/dist/registry/index.d.ts.map +0 -1
  194. package/dist/registry/index.js +0 -38
  195. package/dist/registry/index.js.map +0 -1
  196. package/dist/server.d.ts.map +0 -1
  197. package/dist/utils/AccordionGroupContext.d.ts +0 -8
  198. package/dist/utils/AccordionGroupContext.d.ts.map +0 -1
  199. package/dist/utils/AccordionGroupContext.js +0 -4
  200. package/dist/utils/AccordionGroupContext.js.map +0 -1
  201. package/dist/utils/CopyButton.d.ts +0 -6
  202. package/dist/utils/CopyButton.d.ts.map +0 -1
  203. package/dist/utils/CopyButton.js +0 -39
  204. package/dist/utils/CopyButton.js.map +0 -1
  205. package/dist/utils/ExpandableCode.d.ts +0 -11
  206. package/dist/utils/ExpandableCode.d.ts.map +0 -1
  207. package/dist/utils/ExpandableCode.js +0 -78
  208. package/dist/utils/ExpandableCode.js.map +0 -1
  209. package/dist/utils/Icon.d.ts +0 -6
  210. package/dist/utils/Icon.d.ts.map +0 -1
  211. package/dist/utils/Icon.js +0 -12
  212. package/dist/utils/Icon.js.map +0 -1
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect, afterEach } from "vitest";
3
- import { render, cleanup, act } from "@testing-library/react";
4
- import { CodeBlock } from "../components/CodeBlockMdx";
5
- afterEach(() => {
6
- cleanup();
7
- });
8
- describe("CodeBlock", () => {
9
- it("renders with raw code and language", async () => {
10
- let container;
11
- await act(async () => {
12
- ({ container } = render(_jsx(CodeBlock, { raw: "const x = 1;", "data-language": "typescript", "data-title": "example.ts", children: _jsx("code", { className: "language-typescript", children: "const x = 1;" }) })));
13
- });
14
- expect(container.querySelector(".code-block-container")).not.toBeNull();
15
- expect(container.textContent).toContain("const x = 1;");
16
- expect(container.textContent).toContain("example.ts");
17
- });
18
- it("renders without raw (no copy button)", async () => {
19
- let container;
20
- await act(async () => {
21
- ({ container } = render(_jsx(CodeBlock, { children: _jsx("code", { children: "hello" }) })));
22
- });
23
- expect(container.querySelector(".code-block-container")).not.toBeNull();
24
- });
25
- it("renders with expandable props", async () => {
26
- const lines = Array.from({ length: 30 }, (_, i) => `line ${i}`).join("\n");
27
- let container;
28
- await act(async () => {
29
- ({ container } = render(_jsx(CodeBlock, { raw: lines, "data-expandable": "true", "data-expandable-lines": "30", children: _jsx("code", { children: lines }) })));
30
- });
31
- expect(container.querySelector(".code-block-container")).not.toBeNull();
32
- });
33
- it("resolves language from className", async () => {
34
- let container;
35
- await act(async () => {
36
- ({ container } = render(_jsx(CodeBlock, { className: "language-python", raw: "print('hi')", children: _jsx("code", { children: "print('hi')" }) })));
37
- });
38
- expect(container.textContent).toContain("python");
39
- });
40
- it("does not crash with no children", async () => {
41
- let container;
42
- await act(async () => {
43
- ({ container } = render(_jsx(CodeBlock, { raw: "x" })));
44
- });
45
- expect(container.querySelector(".code-block-container")).not.toBeNull();
46
- });
47
- });
48
- //# sourceMappingURL=CodeBlockMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeBlockMdx.test.js","sourceRoot":"","sources":["../../src/__test__/CodeBlockMdx.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=FileTreeMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileTreeMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/FileTreeMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { FilesMdx, FolderMdx, FileMdx } from "../components/FileTreeMdx";
5
- describe("FileTreeMdx", () => {
6
- it("renders full tree structure", () => {
7
- const { container } = render(_jsx(FilesMdx, { children: _jsxs(FolderMdx, { name: "src", children: [_jsx(FileMdx, { name: "App.tsx" }), _jsx(FileMdx, { name: "index.tsx" }), _jsx(FolderMdx, { name: "components", children: _jsx(FileMdx, { name: "Button.tsx" }) })] }) }));
8
- expect(container.querySelector("[role='tree']")).not.toBeNull();
9
- expect(container.textContent).toContain("src");
10
- expect(container.textContent).toContain("App.tsx");
11
- expect(container.textContent).toContain("components");
12
- });
13
- it("FilesMdx accepts className and style", () => {
14
- const { container } = render(_jsx(FilesMdx, { className: "custom", style: { margin: 0 }, children: _jsx(FileMdx, { name: "test.ts" }) }));
15
- expect(container.querySelector("[role='tree']")?.className).toContain("custom");
16
- });
17
- it("FolderMdx renders without children (empty folder)", () => {
18
- const { container } = render(_jsx(FilesMdx, { children: _jsx(FolderMdx, { name: "empty" }) }));
19
- expect(container.textContent).toContain("empty");
20
- });
21
- it("FileMdx renders standalone", () => {
22
- const { container } = render(_jsx(FileMdx, { name: "readme.md" }));
23
- expect(container.textContent).toContain("readme.md");
24
- });
25
- });
26
- //# sourceMappingURL=FileTreeMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileTreeMdx.test.js","sourceRoot":"","sources":["../../src/__test__/FileTreeMdx.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,QAAQ,cACP,MAAC,SAAS,IAAC,IAAI,EAAC,KAAK,aACnB,KAAC,OAAO,IAAC,IAAI,EAAC,SAAS,GAAG,EAC1B,KAAC,OAAO,IAAC,IAAI,EAAC,WAAW,GAAG,EAC5B,KAAC,SAAS,IAAC,IAAI,EAAC,YAAY,YAC1B,KAAC,OAAO,IAAC,IAAI,EAAC,YAAY,GAAG,GACnB,IACF,GACH,CACZ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAC/C,KAAC,OAAO,IAAC,IAAI,EAAC,SAAS,GAAG,GACjB,CACZ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,QAAQ,cACP,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,GAAG,GACjB,CACZ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,WAAW,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ImageMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/ImageMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,32 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { ImageMdx } from "../components/ImageMdx";
5
- describe("ImageMdx", () => {
6
- it("renders image with src", () => {
7
- const { container } = render(_jsx(ImageMdx, { src: "/test.png", alt: "Test" }));
8
- const img = container.querySelector("img");
9
- expect(img).not.toBeNull();
10
- expect(img?.getAttribute("alt")).toBe("Test");
11
- });
12
- it("returns null when src is missing", () => {
13
- const { container } = render(_jsx(ImageMdx, {}));
14
- expect(container.querySelector("img")).toBeNull();
15
- });
16
- it("renders with zoom disabled", () => {
17
- const { container } = render(_jsx(ImageMdx, { src: "/img.png", zoom: false }));
18
- const button = container.querySelector("button");
19
- expect(button?.getAttribute("aria-label")).toBe("Image");
20
- });
21
- it("renders with custom width and height", () => {
22
- const { container } = render(_jsx(ImageMdx, { src: "/img.png", width: 400, height: 200 }));
23
- const img = container.querySelector("img");
24
- expect(img?.getAttribute("width")).toBe("400");
25
- expect(img?.getAttribute("height")).toBe("200");
26
- });
27
- it("renders with default alt text", () => {
28
- const { container } = render(_jsx(ImageMdx, { src: "/x.png" }));
29
- expect(container.querySelector("img")?.getAttribute("alt")).toBe("image");
30
- });
31
- });
32
- //# sourceMappingURL=ImageMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageMdx.test.js","sourceRoot":"","sources":["../../src/__test__/ImageMdx.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,QAAQ,IAAC,GAAG,EAAC,WAAW,EAAC,GAAG,EAAC,MAAM,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,QAAQ,KAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,QAAQ,IAAC,GAAG,EAAC,UAAU,EAAC,IAAI,EAAE,KAAK,GAAI,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,QAAQ,IAAC,GAAG,EAAC,UAAU,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,QAAQ,IAAC,GAAG,EAAC,QAAQ,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=KbdMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KbdMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/KbdMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { KbdMdx } from "../components/KbdMdx";
5
- describe("KbdMdx", () => {
6
- it("renders windows key", () => {
7
- const { container } = render(_jsx(KbdMdx, { show: "ctrl" }));
8
- expect(container.querySelector("kbd")?.textContent).toBe("Ctrl");
9
- });
10
- it("renders mac key", () => {
11
- const { container } = render(_jsx(KbdMdx, { show: "cmd", type: "mac" }));
12
- expect(container.querySelector("kbd")?.textContent).toBe("⌘");
13
- });
14
- it("renders single letter uppercase", () => {
15
- const { container } = render(_jsx(KbdMdx, { show: "v" }));
16
- expect(container.querySelector("kbd")?.textContent).toBe("V");
17
- });
18
- it("renders unknown key as-is", () => {
19
- const { container } = render(_jsx(KbdMdx, { show: "F12" }));
20
- expect(container.querySelector("kbd")?.textContent).toBe("F12");
21
- });
22
- it("passes style prop", () => {
23
- const { container } = render(_jsx(KbdMdx, { show: "a", style: { color: "red" } }));
24
- expect(container.querySelector("kbd")?.style.color).toBe("red");
25
- });
26
- });
27
- //# sourceMappingURL=KbdMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KbdMdx.test.js","sourceRoot":"","sources":["../../src/__test__/KbdMdx.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,MAAM,IAAC,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,MAAM,IAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,GAAG,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,MAAM,IAAC,IAAI,EAAC,GAAG,GAAG,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,MAAM,IAAC,IAAI,EAAC,KAAK,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,MAAM,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LinkMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/LinkMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { LinkMdx } from "../components/LinkMdx";
5
- describe("LinkMdx", () => {
6
- it("renders external link with target _blank", () => {
7
- const { container } = render(_jsx(LinkMdx, { href: "https://example.com", children: "Link" }));
8
- const a = container.querySelector("a");
9
- expect(a?.getAttribute("target")).toBe("_blank");
10
- expect(a?.getAttribute("rel")).toBe("noopener noreferrer");
11
- });
12
- it("renders internal link without target", () => {
13
- const { container } = render(_jsx(LinkMdx, { href: "/docs/intro", children: "Intro" }));
14
- const a = container.querySelector("a");
15
- expect(a?.getAttribute("target")).toBeNull();
16
- expect(a?.getAttribute("rel")).toBeNull();
17
- });
18
- it("returns null when href is missing", () => {
19
- const { container } = render(_jsx(LinkMdx, { children: "No href" }));
20
- expect(container.querySelector("a")).toBeNull();
21
- });
22
- it("respects custom target and rel", () => {
23
- const { container } = render(_jsx(LinkMdx, { href: "https://x.com", target: "_self", rel: "nofollow", children: "X" }));
24
- const a = container.querySelector("a");
25
- expect(a?.getAttribute("target")).toBe("_self");
26
- expect(a?.getAttribute("rel")).toBe("nofollow");
27
- });
28
- });
29
- //# sourceMappingURL=LinkMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkMdx.test.js","sourceRoot":"","sources":["../../src/__test__/LinkMdx.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,qBAAqB,qBAAe,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,aAAa,sBAAgB,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,OAAO,0BAAkB,CAAC,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,OAAO,IAAC,IAAI,EAAC,eAAe,EAAC,MAAM,EAAC,OAAO,EAAC,GAAG,EAAC,UAAU,kBAEjD,CACX,CAAC;QACF,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=MermaidMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MermaidMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/MermaidMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,207 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { describe, it, expect, vi, beforeEach } from "vitest";
3
- import { render, fireEvent } from "@testing-library/react";
4
- import { MermaidMdx } from "../components/MermaidMdx";
5
- // Mock mermaid module for client-side hydration tests
6
- const mockInitialize = vi.fn();
7
- const mockParse = vi.fn();
8
- const mockRun = vi.fn();
9
- vi.mock("mermaid", () => ({
10
- default: {
11
- initialize: (...args) => mockInitialize(...args),
12
- parse: (...args) => mockParse(...args),
13
- run: (...args) => mockRun(...args),
14
- },
15
- }));
16
- // jsdom does not provide IntersectionObserver. Stub it so that the lazy-render
17
- // callback fires immediately with isIntersecting=true, allowing mockRun to be
18
- // asserted in tests that reach the render path.
19
- class FakeIntersectionObserver {
20
- constructor(cb) {
21
- this.callback = cb;
22
- }
23
- observe(target) {
24
- // Immediately invoke as if the element is visible
25
- this.callback([{ isIntersecting: true, target }], this);
26
- }
27
- disconnect() { }
28
- unobserve() { }
29
- }
30
- vi.stubGlobal("IntersectionObserver", FakeIntersectionObserver);
31
- beforeEach(() => {
32
- vi.clearAllMocks();
33
- });
34
- describe("MermaidMdx", () => {
35
- it("renders pre.mermaid placeholder with chart text (SSR)", () => {
36
- const { container } = render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;" }));
37
- const pre = container.querySelector("pre.mermaid");
38
- expect(pre).not.toBeNull();
39
- expect(pre?.textContent).toBe("graph TD; A-->B;");
40
- expect(pre?.getAttribute("id")).toMatch(/^mermaid-/);
41
- });
42
- it("renders nothing for empty chart", () => {
43
- const { container } = render(_jsx(MermaidMdx, { chart: "" }));
44
- // Should render null — container should be empty
45
- expect(container.querySelector("pre")).toBeNull();
46
- expect(container.querySelector("div")).toBeNull();
47
- });
48
- it("accepts optional id prop", () => {
49
- const { container } = render(_jsx(MermaidMdx, { chart: "graph TD", id: "my-diagram" }));
50
- const pre = container.querySelector("pre.mermaid");
51
- expect(pre?.getAttribute("id")).toBe("my-diagram");
52
- });
53
- it("accepts optional className prop", () => {
54
- const { container } = render(_jsx(MermaidMdx, { chart: "graph TD", className: "extra-class" }));
55
- const pre = container.querySelector("pre.mermaid");
56
- expect(pre?.classList.contains("extra-class")).toBe(true);
57
- expect(pre?.classList.contains("not-prose")).toBe(true);
58
- });
59
- it("generates unique id per instance", () => {
60
- const { container } = render(_jsxs("div", { children: [_jsx(MermaidMdx, { chart: "graph TD" }), _jsx(MermaidMdx, { chart: "graph LR" })] }));
61
- const pres = container.querySelectorAll("pre.mermaid");
62
- expect(pres.length).toBe(2);
63
- expect(pres[0]?.getAttribute("id")).not.toBe(pres[1]?.getAttribute("id"));
64
- });
65
- it("renders error fallback when mermaid.parse throws", async () => {
66
- mockParse.mockRejectedValueOnce(new Error("syntax error"));
67
- const { container } = render(_jsx(MermaidMdx, { chart: "invalid syntax" }));
68
- // Wait for async useEffect to settle
69
- await vi.waitFor(() => {
70
- expect(container.textContent).toContain("Diagram rendering error");
71
- });
72
- expect(container.textContent).toContain("invalid syntax");
73
- });
74
- it("calls mermaid.initialize and parse on mount", async () => {
75
- mockParse.mockResolvedValueOnce(undefined);
76
- render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;" }));
77
- await vi.waitFor(() => {
78
- expect(mockInitialize).toHaveBeenCalledWith(expect.objectContaining({ startOnLoad: false }));
79
- });
80
- expect(mockParse).toHaveBeenCalledWith("graph TD; A-->B;");
81
- });
82
- it("renders not-prose class by default", () => {
83
- const { container } = render(_jsx(MermaidMdx, { chart: "graph TD" }));
84
- expect(container.querySelector("pre.mermaid.not-prose")).not.toBeNull();
85
- });
86
- it("calls mermaid.run when element becomes visible (IntersectionObserver)", async () => {
87
- mockParse.mockResolvedValueOnce(undefined);
88
- render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;" }));
89
- await vi.waitFor(() => {
90
- expect(mockRun).toHaveBeenCalledWith(expect.objectContaining({ nodes: expect.any(Array) }));
91
- });
92
- });
93
- it("removes data-processed attribute before re-render on theme change", async () => {
94
- mockParse.mockResolvedValue(undefined);
95
- vi.useFakeTimers({ shouldAdvanceTime: true });
96
- const { container, unmount } = render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;" }));
97
- // Let the async init run so the component's MutationObserver is attached
98
- await vi.waitFor(() => {
99
- expect(mockRun).toHaveBeenCalled();
100
- });
101
- const pre = container.querySelector("pre.mermaid");
102
- expect(pre).not.toBeNull();
103
- // Simulate mermaid setting data-processed after initial render
104
- pre.setAttribute("data-processed", "true");
105
- mockRun.mockClear();
106
- // Capture whether data-processed was absent when run() fires
107
- let dataProcessedAtCallTime = "not-called";
108
- mockRun.mockImplementation(() => {
109
- dataProcessedAtCallTime = pre.getAttribute("data-processed");
110
- });
111
- // Simulate a theme change on <html class>
112
- document.documentElement.classList.add("dark");
113
- // Advance past the 200ms debounce
114
- await vi.advanceTimersByTimeAsync(250);
115
- // data-processed must have been absent when run() was called (the fix being tested)
116
- expect(dataProcessedAtCallTime).toBeNull();
117
- // Cleanup
118
- document.documentElement.classList.remove("dark");
119
- unmount();
120
- vi.useRealTimers();
121
- });
122
- describe("pan/zoom controls", () => {
123
- async function renderWithControls() {
124
- mockParse.mockResolvedValueOnce(undefined);
125
- const result = render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;" }));
126
- await vi.waitFor(() => {
127
- expect(result.container.querySelector('[aria-label="Pan and zoom controls"]')).not.toBeNull();
128
- });
129
- return result;
130
- }
131
- it("shows all controls after the diagram renders", async () => {
132
- const { container } = await renderWithControls();
133
- const labels = [
134
- "Pan up",
135
- "Pan down",
136
- "Pan left",
137
- "Pan right",
138
- "Zoom in",
139
- "Zoom out",
140
- "Reset view",
141
- "Enter full screen",
142
- ];
143
- for (const label of labels) {
144
- expect(container.querySelector(`button[aria-label="${label}"]`)).not.toBeNull();
145
- }
146
- });
147
- it("does not show controls when panZoom is false", async () => {
148
- mockParse.mockResolvedValueOnce(undefined);
149
- const { container } = render(_jsx(MermaidMdx, { chart: "graph TD; A-->B;", panZoom: false }));
150
- await vi.waitFor(() => {
151
- expect(mockRun).toHaveBeenCalled();
152
- });
153
- expect(container.querySelector('[aria-label="Pan and zoom controls"]')).toBeNull();
154
- });
155
- it("zoom, pan, and reset buttons update the transform", async () => {
156
- const { container } = await renderWithControls();
157
- const layer = container.querySelector("pre.mermaid")?.parentElement;
158
- fireEvent.click(container.querySelector('button[aria-label="Zoom in"]'));
159
- expect(layer.style.transform).toBe("translate(0px, 0px) scale(1.2)");
160
- fireEvent.click(container.querySelector('button[aria-label="Pan right"]'));
161
- expect(layer.style.transform).toBe("translate(50px, 0px) scale(1.2)");
162
- fireEvent.click(container.querySelector('button[aria-label="Reset view"]'));
163
- expect(layer.style.transform).toBe("translate(0px, 0px) scale(1)");
164
- });
165
- it("clamps zoom at the maximum scale", async () => {
166
- const { container } = await renderWithControls();
167
- const layer = container.querySelector("pre.mermaid")?.parentElement;
168
- const zoomIn = container.querySelector('button[aria-label="Zoom in"]');
169
- for (let i = 0; i < 20; i++)
170
- fireEvent.click(zoomIn);
171
- expect(layer.style.transform).toBe("translate(0px, 0px) scale(4)");
172
- });
173
- it("pans with arrow keys on the focused container", async () => {
174
- const { container } = await renderWithControls();
175
- const viewport = container.querySelector('[tabindex="0"]');
176
- const layer = container.querySelector("pre.mermaid")?.parentElement;
177
- fireEvent.keyDown(viewport, { key: "ArrowRight" });
178
- expect(layer.style.transform).toBe("translate(50px, 0px) scale(1)");
179
- fireEvent.keyDown(viewport, { key: "ArrowUp" });
180
- expect(layer.style.transform).toBe("translate(50px, -50px) scale(1)");
181
- fireEvent.keyDown(viewport, { key: "0" });
182
- expect(layer.style.transform).toBe("translate(0px, 0px) scale(1)");
183
- });
184
- it("ignores key presses with modifier keys (browser shortcuts)", async () => {
185
- const { container } = await renderWithControls();
186
- const viewport = container.querySelector('[tabindex="0"]');
187
- const layer = container.querySelector("pre.mermaid")?.parentElement;
188
- fireEvent.keyDown(viewport, { key: "-", ctrlKey: true });
189
- fireEvent.keyDown(viewport, { key: "=", metaKey: true });
190
- fireEvent.keyDown(viewport, { key: "ArrowLeft", altKey: true });
191
- expect(layer.style.transform).toBe("translate(0px, 0px) scale(1)");
192
- });
193
- it("toggles the fullscreen lightbox via button and Escape", async () => {
194
- const { container } = await renderWithControls();
195
- const viewport = container.querySelector('[tabindex="0"]');
196
- fireEvent.click(container.querySelector('button[aria-label="Enter full screen"]'));
197
- expect(viewport.style.position).toBe("fixed");
198
- expect(document.body.style.overflow).toBe("hidden");
199
- expect(container.querySelector('button[aria-label="Exit full screen"]')).not.toBeNull();
200
- fireEvent.keyDown(viewport, { key: "Escape" });
201
- expect(viewport.style.position).toBe("relative");
202
- expect(document.body.style.overflow).toBe("");
203
- expect(container.querySelector('button[aria-label="Enter full screen"]')).not.toBeNull();
204
- });
205
- });
206
- });
207
- //# sourceMappingURL=MermaidMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MermaidMdx.test.js","sourceRoot":"","sources":["../../src/__test__/MermaidMdx.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=NoteMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/NoteMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { NoteMdx } from "../components/NoteMdx";
5
- describe("NoteMdx", () => {
6
- it("renders with default type", () => {
7
- const { container } = render(_jsx(NoteMdx, { children: "Hello" }));
8
- expect(container.querySelector("aside")).not.toBeNull();
9
- expect(container.textContent).toContain("Hello");
10
- });
11
- it("renders with valid type", () => {
12
- const { container } = render(_jsx(NoteMdx, { type: "warning", children: "Warn" }));
13
- const aside = container.querySelector("aside");
14
- expect(aside).not.toBeNull();
15
- expect(container.textContent).toContain("Warning");
16
- expect(container.textContent).toContain("Warn");
17
- });
18
- it("does not crash with invalid type", () => {
19
- // @ts-expect-error testing invalid type prop
20
- const { container } = render(_jsx(NoteMdx, { type: "hack-the-planet", children: "Content" }));
21
- expect(container.querySelector("aside")).not.toBeNull();
22
- expect(container.textContent).toContain("Content");
23
- });
24
- it("renders custom title", () => {
25
- const { container } = render(_jsx(NoteMdx, { title: "Custom Title", children: "Body" }));
26
- expect(container.textContent).toContain("Custom Title");
27
- });
28
- it("renders children content", () => {
29
- const { container } = render(_jsx(NoteMdx, { type: "success", children: _jsx("p", { children: "Nested child" }) }));
30
- expect(container.querySelector("p")?.textContent).toBe("Nested child");
31
- });
32
- it("passes className and style props", () => {
33
- const { container } = render(_jsx(NoteMdx, { className: "custom", style: { marginTop: 10 }, children: "Test" }));
34
- const aside = container.querySelector("aside");
35
- expect(aside?.className).toBe("custom");
36
- expect(aside?.style.marginTop).toBe("10px");
37
- });
38
- });
39
- //# sourceMappingURL=NoteMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteMdx.test.js","sourceRoot":"","sources":["../../src/__test__/NoteMdx.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ReleaseMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/ReleaseMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { ReleaseMdx, ChangesMdx } from "../components/ReleaseMdx";
5
- describe("ReleaseMdx", () => {
6
- it("renders with all props", () => {
7
- const { container } = render(_jsxs(ReleaseMdx, { version: "1.10.1", date: "2025-05-24", title: "Bug Fixes", children: [_jsx(ChangesMdx, { type: "added", children: "New feature" }), _jsx(ChangesMdx, { type: "fixed", children: "Bug fix" })] }));
8
- expect(container.textContent).toContain("v1.10.1");
9
- expect(container.textContent).toContain("Bug Fixes");
10
- expect(container.textContent).toContain("New feature");
11
- });
12
- it("prepends v to version", () => {
13
- const { container } = render(_jsx(ReleaseMdx, { version: "2.0.0", title: "Major" }));
14
- expect(container.textContent).toContain("v2.0.0");
15
- });
16
- it("does not double v prefix", () => {
17
- const { container } = render(_jsx(ReleaseMdx, { version: "v3.0.0", title: "X" }));
18
- expect(container.textContent).toContain("v3.0.0");
19
- expect(container.textContent).not.toContain("vv3.0.0");
20
- });
21
- it("renders without date", () => {
22
- const { container } = render(_jsx(ReleaseMdx, { version: "1.0.0", title: "Init" }));
23
- expect(container.querySelector("section")).not.toBeNull();
24
- });
25
- });
26
- describe("ChangesMdx", () => {
27
- it("renders all change types without crash", () => {
28
- const types = ["added", "changed", "fixed", "improved", "deprecated", "removed"];
29
- types.forEach((type) => {
30
- const { container } = render(_jsx(ChangesMdx, { type: type, children: "Content" }));
31
- expect(container.textContent).toContain("Content");
32
- });
33
- });
34
- it("defaults to changed type", () => {
35
- const { container } = render(_jsx(ChangesMdx, { children: "Default" }));
36
- expect(container.textContent).toContain("Changed");
37
- });
38
- });
39
- //# sourceMappingURL=ReleaseMdx.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseMdx.test.js","sourceRoot":"","sources":["../../src/__test__/ReleaseMdx.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=StepperMdx.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StepperMdx.test.d.ts","sourceRoot":"","sources":["../../src/__test__/StepperMdx.test.tsx"],"names":[],"mappings":""}
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { describe, it, expect } from "vitest";
3
- import { render } from "@testing-library/react";
4
- import { StepsMdx, StepMdx } from "../components/StepperMdx";
5
- describe("StepperMdx", () => {
6
- it("renders steps with auto-numbered items", () => {
7
- const { container } = render(_jsxs(StepsMdx, { children: [_jsx(StepMdx, { title: "Clone repo", children: "git clone ..." }), _jsx(StepMdx, { title: "Install deps", children: "pnpm install" }), _jsx(StepMdx, { title: "Run dev", children: "pnpm dev" })] }));
8
- expect(container.querySelector("ol")).not.toBeNull();
9
- expect(container.querySelectorAll("li")).toHaveLength(3);
10
- expect(container.textContent).toContain("Clone repo");
11
- });
12
- it("renders single step without vertical line", () => {
13
- const { container } = render(_jsx(StepsMdx, { children: _jsx(StepMdx, { title: "Only step", children: "Content" }) }));
14
- expect(container.querySelectorAll("li")).toHaveLength(1);
15
- });
16
- it("StepMdx renders without children", () => {
17
- const { container } = render(_jsx(StepsMdx, { children: _jsx(StepMdx, { title: "No content" }) }));
18
- expect(container.textContent).toContain("No content");
19
- });
20
- it("passes className and style", () => {
21
- const { container } = render(_jsx(StepsMdx, { className: "custom", style: { gap: 10 }, children: _jsx(StepMdx, { title: "A", children: "x" }) }));
22
- expect(container.querySelector("ol")?.className).toContain("custom");
23
- });
24
- });
25
- //# sourceMappingURL=StepperMdx.test.js.map