@hyperbook/markdown 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +17 -0
- package/dist/Code.d.ts +2 -0
- package/dist/Headings.d.ts +3 -0
- package/dist/Image.d.ts +2 -0
- package/dist/Link.d.ts +2 -0
- package/dist/Markdown.d.ts +5 -0
- package/dist/Table.d.ts +5 -0
- package/dist/assets/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/assets/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/assets/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/assets/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/assets/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/assets/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/assets/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/assets/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/assets/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/assets/katex.min.css +1105 -0
- package/dist/index.cjs.js +263 -0
- package/dist/index.cjs.js.map +7 -0
- package/dist/index.css +494 -0
- package/dist/index.css.map +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.mjs +237 -0
- package/dist/index.esm.mjs.map +7 -0
- package/package.json +68 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b ||= {})
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __export = (target, all) => {
|
|
26
|
+
for (var name in all)
|
|
27
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
28
|
+
};
|
|
29
|
+
var __copyProps = (to, from, except, desc) => {
|
|
30
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
31
|
+
for (let key of __getOwnPropNames(from))
|
|
32
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
33
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
34
|
+
}
|
|
35
|
+
return to;
|
|
36
|
+
};
|
|
37
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
38
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
39
|
+
mod
|
|
40
|
+
));
|
|
41
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
42
|
+
|
|
43
|
+
// src/index.ts
|
|
44
|
+
var src_exports = {};
|
|
45
|
+
__export(src_exports, {
|
|
46
|
+
Markdown: () => Markdown
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(src_exports);
|
|
49
|
+
|
|
50
|
+
// src/Markdown.tsx
|
|
51
|
+
var import_react_markdown = __toESM(require("react-markdown"));
|
|
52
|
+
var import_remark_directive = __toESM(require("remark-directive"));
|
|
53
|
+
var import_remark_directive_rehype = __toESM(require("remark-directive-rehype"));
|
|
54
|
+
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
55
|
+
var import_remark_math = __toESM(require("remark-math"));
|
|
56
|
+
var import_remark_gemoji = __toESM(require("remark-gemoji"));
|
|
57
|
+
var import_remark_unwrap_images = __toESM(require("remark-unwrap-images"));
|
|
58
|
+
var import_rehype_katex = __toESM(require("rehype-katex"));
|
|
59
|
+
var import_rehype_highlight = __toESM(require("rehype-highlight"));
|
|
60
|
+
var import_provider5 = require("@hyperbook/provider");
|
|
61
|
+
|
|
62
|
+
// src/Code.tsx
|
|
63
|
+
var import_provider = require("@hyperbook/provider");
|
|
64
|
+
var import_react = require("react");
|
|
65
|
+
var import_md = require("react-icons/md");
|
|
66
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
67
|
+
var Code = ({ children, className }) => {
|
|
68
|
+
const directives = (0, import_provider.useDirectives)();
|
|
69
|
+
if (className === "language-mermaid" && directives["mermaid"]) {
|
|
70
|
+
const Mermaid = directives["mermaid"];
|
|
71
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Mermaid, {
|
|
72
|
+
children
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const ref = (0, import_react.useRef)(null);
|
|
76
|
+
const [copied, setCopied] = (0, import_react.useState)(false);
|
|
77
|
+
const copyCode = () => {
|
|
78
|
+
if (navigator.clipboard && ref.current) {
|
|
79
|
+
const text = ref.current.innerText;
|
|
80
|
+
navigator.clipboard.writeText(text);
|
|
81
|
+
setCopied(true);
|
|
82
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, {
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
88
|
+
ref,
|
|
89
|
+
className,
|
|
90
|
+
children
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
93
|
+
className: "copy",
|
|
94
|
+
onClick: copyCode,
|
|
95
|
+
"aria-label": "Copy Code",
|
|
96
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_md.MdDone, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_md.MdContentCopy, {})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/Link.tsx
|
|
103
|
+
var import_provider2 = require("@hyperbook/provider");
|
|
104
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
105
|
+
var Link = ({ href, title, children }) => {
|
|
106
|
+
const L = (0, import_provider2.useLink)();
|
|
107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(L, {
|
|
108
|
+
href,
|
|
109
|
+
title,
|
|
110
|
+
children
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// src/Table.tsx
|
|
115
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
116
|
+
var tableHeaders = [];
|
|
117
|
+
var tdIndex = 0;
|
|
118
|
+
var Table = ({ children, style }) => {
|
|
119
|
+
tableHeaders = [];
|
|
120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("table", {
|
|
121
|
+
style,
|
|
122
|
+
children
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
var Tr = ({ children, style }) => {
|
|
126
|
+
tdIndex = 0;
|
|
127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("tr", {
|
|
128
|
+
style,
|
|
129
|
+
children
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
var Td = ({ children, style }) => {
|
|
133
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", {
|
|
134
|
+
"data-label": tableHeaders[tdIndex++],
|
|
135
|
+
style,
|
|
136
|
+
children
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
var Th = ({ children, style }) => {
|
|
140
|
+
tableHeaders.push(children);
|
|
141
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", {
|
|
142
|
+
style,
|
|
143
|
+
children
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// src/Headings.tsx
|
|
148
|
+
var import_provider3 = require("@hyperbook/provider");
|
|
149
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
150
|
+
var makeAnchor = (heading) => {
|
|
151
|
+
let anchor = heading.toLowerCase();
|
|
152
|
+
anchor = anchor.replace(/[^a-zA-Z0-9 ]/g, "");
|
|
153
|
+
anchor = anchor.replace(/ /g, "-");
|
|
154
|
+
return anchor;
|
|
155
|
+
};
|
|
156
|
+
var Headings = ({ level, children }) => {
|
|
157
|
+
const heading = children[0];
|
|
158
|
+
let anchor = typeof heading === "string" ? makeAnchor(heading) : "";
|
|
159
|
+
const label = typeof heading === "string" ? heading : anchor;
|
|
160
|
+
const [bookmark, toggleBookmark] = (0, import_provider3.useBookmark)(anchor, label);
|
|
161
|
+
const container = (children2) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, {
|
|
162
|
+
children: [
|
|
163
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("a", {
|
|
164
|
+
className: "heading",
|
|
165
|
+
id: anchor,
|
|
166
|
+
href: `#${anchor}`,
|
|
167
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", {
|
|
168
|
+
children: children2
|
|
169
|
+
})
|
|
170
|
+
}),
|
|
171
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", {
|
|
172
|
+
className: bookmark ? "bookmark active" : "bookmark",
|
|
173
|
+
onClick: () => toggleBookmark(),
|
|
174
|
+
title: "Bookmark",
|
|
175
|
+
children: "\u{1F516}"
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
});
|
|
179
|
+
switch (level) {
|
|
180
|
+
case 1:
|
|
181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h1", {
|
|
182
|
+
children: container(children)
|
|
183
|
+
});
|
|
184
|
+
case 2:
|
|
185
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", {
|
|
186
|
+
children: container(children)
|
|
187
|
+
});
|
|
188
|
+
case 3:
|
|
189
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", {
|
|
190
|
+
children: container(children)
|
|
191
|
+
});
|
|
192
|
+
case 4:
|
|
193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h4", {
|
|
194
|
+
children: container(children)
|
|
195
|
+
});
|
|
196
|
+
case 5:
|
|
197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h5", {
|
|
198
|
+
children: container(children)
|
|
199
|
+
});
|
|
200
|
+
default:
|
|
201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h6", {
|
|
202
|
+
children: container(children)
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
// src/Image.tsx
|
|
208
|
+
var import_provider4 = require("@hyperbook/provider");
|
|
209
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
210
|
+
var Image = ({ src, title, alt }) => {
|
|
211
|
+
const makeUrl = (0, import_provider4.useMakeUrl)();
|
|
212
|
+
src = makeUrl(src, "public");
|
|
213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("figure", {
|
|
214
|
+
children: [
|
|
215
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", {
|
|
216
|
+
src,
|
|
217
|
+
alt
|
|
218
|
+
}),
|
|
219
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("figcaption", {
|
|
220
|
+
children: title
|
|
221
|
+
})
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// src/Markdown.tsx
|
|
227
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
228
|
+
var Markdown = ({ children }) => {
|
|
229
|
+
const directives = (0, import_provider5.useDirectives)();
|
|
230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_markdown.default, {
|
|
231
|
+
className: "hyperbook-markdown",
|
|
232
|
+
components: __spreadProps(__spreadValues({}, directives), {
|
|
233
|
+
a: Link,
|
|
234
|
+
code: Code,
|
|
235
|
+
td: Td,
|
|
236
|
+
th: Th,
|
|
237
|
+
table: Table,
|
|
238
|
+
tr: Tr,
|
|
239
|
+
h1: Headings,
|
|
240
|
+
h2: Headings,
|
|
241
|
+
h3: Headings,
|
|
242
|
+
h4: Headings,
|
|
243
|
+
h5: Headings,
|
|
244
|
+
h6: Headings,
|
|
245
|
+
img: Image
|
|
246
|
+
}),
|
|
247
|
+
remarkPlugins: [
|
|
248
|
+
import_remark_directive.default,
|
|
249
|
+
import_remark_directive_rehype.default,
|
|
250
|
+
import_remark_gfm.default,
|
|
251
|
+
import_remark_math.default,
|
|
252
|
+
import_remark_gemoji.default,
|
|
253
|
+
import_remark_unwrap_images.default
|
|
254
|
+
],
|
|
255
|
+
rehypePlugins: [
|
|
256
|
+
import_rehype_katex.default,
|
|
257
|
+
[import_rehype_highlight.default, { ignoreMissing: true, plainText: ["mermaid"] }]
|
|
258
|
+
],
|
|
259
|
+
skipHtml: false,
|
|
260
|
+
children
|
|
261
|
+
});
|
|
262
|
+
};
|
|
263
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/Markdown.tsx", "../src/Code.tsx", "../src/Link.tsx", "../src/Table.tsx", "../src/Headings.tsx", "../src/Image.tsx"],
|
|
4
|
+
"sourcesContent": ["export * from \"./Markdown\";\n", "import ReactMarkdown from \"react-markdown\";\nimport remarkDirective from \"remark-directive\";\nimport remarkDirectiveRehype from \"remark-directive-rehype\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport remarkGemoji from \"remark-gemoji\";\nimport remarkUnwrapImages from \"remark-unwrap-images\";\nimport rehypeKatex from \"rehype-katex\";\nimport rehypeHighlight from \"rehype-highlight\";\nimport { useDirectives } from \"@hyperbook/provider\";\nimport { Code } from \"./Code\";\nimport { Link } from \"./Link\";\nimport { Table, Td, Th, Tr } from \"./Table\";\nimport { Headings } from \"./Headings\";\nimport { Image } from \"./Image\";\n\nimport \"./index.css\";\n\nexport type MarkdownProps = {\n children: string;\n};\n\nexport const Markdown = ({ children }: MarkdownProps) => {\n const directives = useDirectives();\n\n return (\n <ReactMarkdown\n className=\"hyperbook-markdown\"\n components={{\n ...directives,\n a: Link,\n code: Code,\n td: Td,\n th: Th,\n table: Table,\n tr: Tr,\n h1: Headings,\n h2: Headings,\n h3: Headings,\n h4: Headings,\n h5: Headings,\n h6: Headings,\n img: Image,\n }}\n remarkPlugins={[\n remarkDirective,\n remarkDirectiveRehype,\n remarkGfm,\n remarkMath,\n remarkGemoji,\n remarkUnwrapImages,\n ]}\n rehypePlugins={[\n rehypeKatex,\n [rehypeHighlight, { ignoreMissing: true, plainText: [\"mermaid\"] }],\n ]}\n skipHtml={false}\n >\n {children}\n </ReactMarkdown>\n );\n};\n", "import { useDirectives } from \"@hyperbook/provider\";\nimport React, { Fragment, useRef, useState } from \"react\";\nimport { Components } from \"react-markdown\";\nimport { MdContentCopy, MdDone } from \"react-icons/md\";\n\nexport const Code: Components[\"code\"] = ({ children, className }) => {\n const directives = useDirectives();\n if (className === \"language-mermaid\" && directives[\"mermaid\"]) {\n const Mermaid = directives[\"mermaid\"];\n return <Mermaid children={children} />;\n }\n\n const ref = useRef<HTMLElement>(null);\n const [copied, setCopied] = useState(false);\n const copyCode = () => {\n if (navigator.clipboard && ref.current) {\n const text = ref.current.innerText;\n navigator.clipboard.writeText(text);\n\n setCopied(true);\n\n setTimeout(() => setCopied(false), 2000);\n }\n };\n\n return (\n <Fragment>\n <code ref={ref} className={className}>\n {children}\n </code>\n <button className=\"copy\" onClick={copyCode} aria-label=\"Copy Code\">\n {copied ? <MdDone /> : <MdContentCopy />}\n </button>\n </Fragment>\n );\n};\n", "import { useLink } from \"@hyperbook/provider\";\nimport { Components } from \"react-markdown\";\n\nexport const Link: Components[\"a\"] = ({ href, title, children }) => {\n const L = useLink();\n return (\n <L href={href} title={title}>\n {children}\n </L>\n );\n};\n", "import { ReactNode } from \"react\";\nimport { Components } from \"react-markdown\";\n\nlet tableHeaders: ReactNode[][] = [];\nlet tdIndex = 0;\n\nexport const Table: Components[\"table\"] = ({ children, style }) => {\n tableHeaders = [];\n return <table style={style}>{children}</table>;\n};\n\nexport const Tr: Components[\"tr\"] = ({ children, style }) => {\n tdIndex = 0;\n return <tr style={style}>{children}</tr>;\n};\n\nexport const Td: Components[\"td\"] = ({ children, style }) => {\n return (\n <td data-label={tableHeaders[tdIndex++]} style={style}>\n {children}\n </td>\n );\n};\n\nexport const Th: Components[\"th\"] = ({ children, style }) => {\n tableHeaders.push(children);\n return <th style={style}>{children}</th>;\n};\n", "import { useBookmark } from \"@hyperbook/provider\";\nimport { Components } from \"react-markdown\";\n\nexport const makeAnchor = (heading: string) => {\n // If we have a heading, make it lower case\n let anchor = heading.toLowerCase();\n\n // Clean anchor (replace special characters whitespaces).\n // Alternatively, use encodeURIComponent() if you don't care about\n // pretty anchor links\n anchor = anchor.replace(/[^a-zA-Z0-9 ]/g, \"\");\n anchor = anchor.replace(/ /g, \"-\");\n\n return anchor;\n};\n\nexport const Headings: Components[\"h1\"] = ({ level, children }) => {\n // Access actual (string) value of heading\n const heading = children[0];\n\n // If we have a heading, make it lower case\n let anchor = typeof heading === \"string\" ? makeAnchor(heading) : \"\";\n\n const label = typeof heading === \"string\" ? heading : anchor;\n\n const [bookmark, toggleBookmark] = useBookmark(anchor, label);\n\n // Utility\n const container = (children: React.ReactNode): JSX.Element => (\n <>\n <a className=\"heading\" id={anchor} href={`#${anchor}`}>\n <span>{children}</span>\n </a>\n <button\n className={bookmark ? \"bookmark active\" : \"bookmark\"}\n onClick={() => toggleBookmark()}\n title=\"Bookmark\"\n >\n \uD83D\uDD16\n </button>\n </>\n );\n\n switch (level) {\n case 1:\n return <h1>{container(children)}</h1>;\n case 2:\n return <h2>{container(children)}</h2>;\n case 3:\n return <h3>{container(children)}</h3>;\n case 4:\n return <h4>{container(children)}</h4>;\n case 5:\n return <h5>{container(children)}</h5>;\n\n default:\n return <h6>{container(children)}</h6>;\n }\n};\n", "import { useMakeUrl } from \"@hyperbook/provider\";\nimport { Components } from \"react-markdown\";\n\nexport const Image: Components[\"img\"] = ({ src, title, alt }) => {\n const makeUrl = useMakeUrl();\n src = makeUrl(src, \"public\");\n\n return (\n <figure>\n <img src={src} alt={alt} />\n {title && <figcaption>{title}</figcaption>}\n </figure>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_provider", "import_provider", "import_jsx_runtime", "import_jsx_runtime", "import_provider", "import_jsx_runtime", "children", "import_provider", "import_jsx_runtime", "import_jsx_runtime", "ReactMarkdown", "remarkDirective", "remarkDirectiveRehype", "remarkGfm", "remarkMath", "remarkGemoji", "remarkUnwrapImages", "rehypeKatex", "rehypeHighlight"]
|
|
7
|
+
}
|