mardora 1.2.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 +21 -0
- package/README.md +113 -0
- package/dist/chunk-3OCUX4OO.js +7690 -0
- package/dist/chunk-3OCUX4OO.js.map +1 -0
- package/dist/chunk-3ZOCCFDL.cjs +74 -0
- package/dist/chunk-3ZOCCFDL.cjs.map +1 -0
- package/dist/chunk-7JOEPNEV.cjs +7740 -0
- package/dist/chunk-7JOEPNEV.cjs.map +1 -0
- package/dist/chunk-BIKZQZ6W.js +33 -0
- package/dist/chunk-BIKZQZ6W.js.map +1 -0
- package/dist/chunk-EQJESPP2.js +234 -0
- package/dist/chunk-EQJESPP2.js.map +1 -0
- package/dist/chunk-G4SE26YY.js +70 -0
- package/dist/chunk-G4SE26YY.js.map +1 -0
- package/dist/chunk-KNDWF2DP.cjs +35 -0
- package/dist/chunk-KNDWF2DP.cjs.map +1 -0
- package/dist/chunk-MLBEBFHB.cjs +2971 -0
- package/dist/chunk-MLBEBFHB.cjs.map +1 -0
- package/dist/chunk-P7JFCYU3.js +905 -0
- package/dist/chunk-P7JFCYU3.js.map +1 -0
- package/dist/chunk-SWFUKJDO.cjs +243 -0
- package/dist/chunk-SWFUKJDO.cjs.map +1 -0
- package/dist/chunk-WFVCG4LD.cjs +926 -0
- package/dist/chunk-WFVCG4LD.cjs.map +1 -0
- package/dist/chunk-XL6WFGJT.js +2901 -0
- package/dist/chunk-XL6WFGJT.js.map +1 -0
- package/dist/editor/index.cjs +277 -0
- package/dist/editor/index.cjs.map +1 -0
- package/dist/editor/index.d.cts +186 -0
- package/dist/editor/index.d.ts +186 -0
- package/dist/editor/index.js +4 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/index.cjs +405 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/index.cjs +12 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.cts +16 -0
- package/dist/lib/index.d.ts +16 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/mardora-DCwjomil.d.cts +640 -0
- package/dist/mardora-DCwjomil.d.ts +640 -0
- package/dist/plugins/index.cjs +104 -0
- package/dist/plugins/index.cjs.map +1 -0
- package/dist/plugins/index.d.cts +740 -0
- package/dist/plugins/index.d.ts +740 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/preview/index.cjs +38 -0
- package/dist/preview/index.cjs.map +1 -0
- package/dist/preview/index.d.cts +101 -0
- package/dist/preview/index.d.ts +101 -0
- package/dist/preview/index.js +5 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/types-NBsaxl4d.d.cts +71 -0
- package/dist/types-Pw2SWWAR.d.ts +71 -0
- package/package.json +92 -0
- package/src/editor/attachments/extension.ts +181 -0
- package/src/editor/attachments/format.ts +63 -0
- package/src/editor/attachments/index.ts +3 -0
- package/src/editor/attachments/types.ts +37 -0
- package/src/editor/heading-fold/config.ts +25 -0
- package/src/editor/heading-fold/extension.ts +268 -0
- package/src/editor/heading-fold/extract.ts +88 -0
- package/src/editor/heading-fold/index.ts +5 -0
- package/src/editor/heading-fold/theme.ts +85 -0
- package/src/editor/heading-fold/types.ts +24 -0
- package/src/editor/i18n.ts +13 -0
- package/src/editor/icons/index.ts +367 -0
- package/src/editor/index.ts +16 -0
- package/src/editor/mardora.ts +257 -0
- package/src/editor/media-lightbox-theme.ts +146 -0
- package/src/editor/media-lightbox.ts +125 -0
- package/src/editor/plugin.ts +294 -0
- package/src/editor/selection-toolbar/activation.ts +123 -0
- package/src/editor/selection-toolbar/commands.ts +279 -0
- package/src/editor/selection-toolbar/extension.ts +564 -0
- package/src/editor/selection-toolbar/i18n.ts +164 -0
- package/src/editor/selection-toolbar/index.ts +7 -0
- package/src/editor/selection-toolbar/menu.ts +252 -0
- package/src/editor/selection-toolbar/position.ts +43 -0
- package/src/editor/selection-toolbar/theme.ts +195 -0
- package/src/editor/selection-toolbar/types.ts +155 -0
- package/src/editor/slash/default-commands.ts +190 -0
- package/src/editor/slash/extension.ts +319 -0
- package/src/editor/slash/index.ts +7 -0
- package/src/editor/slash/insertions.ts +26 -0
- package/src/editor/slash/menu.ts +123 -0
- package/src/editor/slash/position.ts +61 -0
- package/src/editor/slash/query.ts +33 -0
- package/src/editor/slash/theme.ts +113 -0
- package/src/editor/slash/types.ts +40 -0
- package/src/editor/table-of-contents/extension.ts +202 -0
- package/src/editor/table-of-contents/extract.ts +53 -0
- package/src/editor/table-of-contents/index.ts +7 -0
- package/src/editor/table-of-contents/panel.ts +83 -0
- package/src/editor/table-of-contents/slug.ts +50 -0
- package/src/editor/table-of-contents/storage.ts +35 -0
- package/src/editor/table-of-contents/theme.ts +153 -0
- package/src/editor/table-of-contents/types.ts +44 -0
- package/src/editor/theme.ts +72 -0
- package/src/editor/utils.ts +176 -0
- package/src/editor/view-plugin.ts +189 -0
- package/src/index.ts +5 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/input-handler.ts +47 -0
- package/src/plugins/code-plugin.theme.ts +545 -0
- package/src/plugins/code-plugin.ts +1892 -0
- package/src/plugins/emoji-plugin.ts +140 -0
- package/src/plugins/heading-plugin.ts +194 -0
- package/src/plugins/hr-plugin.ts +102 -0
- package/src/plugins/html-plugin.ts +353 -0
- package/src/plugins/image-plugin.ts +806 -0
- package/src/plugins/index.ts +71 -0
- package/src/plugins/inline-plugin.ts +311 -0
- package/src/plugins/link-plugin.ts +509 -0
- package/src/plugins/list-plugin.ts +492 -0
- package/src/plugins/math-plugin.ts +526 -0
- package/src/plugins/mermaid-plugin.ts +513 -0
- package/src/plugins/paragraph-plugin.ts +38 -0
- package/src/plugins/quote-plugin.ts +733 -0
- package/src/plugins/table-controls-theme.ts +126 -0
- package/src/plugins/table-controls.ts +423 -0
- package/src/plugins/table-model.ts +661 -0
- package/src/plugins/table-plugin.ts +2111 -0
- package/src/preview/context.ts +45 -0
- package/src/preview/css-generator.ts +64 -0
- package/src/preview/default-renderers.ts +29 -0
- package/src/preview/index.ts +29 -0
- package/src/preview/preview.ts +41 -0
- package/src/preview/renderer.ts +184 -0
- package/src/preview/syntax-theme.ts +112 -0
- package/src/preview/toc.ts +23 -0
- package/src/preview/types.ts +89 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkSWFUKJDO_cjs = require('./chunk-SWFUKJDO.cjs');
|
|
4
|
+
var chunkWFVCG4LD_cjs = require('./chunk-WFVCG4LD.cjs');
|
|
5
|
+
var langMarkdown = require('@codemirror/lang-markdown');
|
|
6
|
+
var state = require('@codemirror/state');
|
|
7
|
+
|
|
8
|
+
// src/preview/preview.ts
|
|
9
|
+
async function preview(markdown2, config = {}) {
|
|
10
|
+
const {
|
|
11
|
+
plugins = [],
|
|
12
|
+
markdown: markdownConfig = [],
|
|
13
|
+
wrapperClass = "mardora-preview",
|
|
14
|
+
wrapperTag = "article",
|
|
15
|
+
sanitize = true,
|
|
16
|
+
theme = "auto" /* AUTO */,
|
|
17
|
+
syntaxTheme
|
|
18
|
+
} = config;
|
|
19
|
+
const renderer = new chunkSWFUKJDO_cjs.PreviewRenderer(markdown2, plugins, markdownConfig, theme, sanitize, syntaxTheme);
|
|
20
|
+
const content = await renderer.render();
|
|
21
|
+
const classAttr = wrapperClass ? ` class="${wrapperClass}"` : "";
|
|
22
|
+
return `<${wrapperTag}${classAttr}>
|
|
23
|
+
${content}</${wrapperTag}>`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// src/preview/css-generator.ts
|
|
27
|
+
var baseStyles = `.mardora-preview {
|
|
28
|
+
padding: 0 0.5rem;
|
|
29
|
+
}`;
|
|
30
|
+
function generateCSS(config = {}) {
|
|
31
|
+
const {
|
|
32
|
+
plugins = [],
|
|
33
|
+
theme = "auto" /* AUTO */,
|
|
34
|
+
wrapperClass = "mardora-preview",
|
|
35
|
+
includeBase = true,
|
|
36
|
+
syntaxTheme
|
|
37
|
+
} = config;
|
|
38
|
+
const cssChunks = [];
|
|
39
|
+
if (includeBase) {
|
|
40
|
+
if (wrapperClass !== "mardora-preview") {
|
|
41
|
+
cssChunks.push(baseStyles.replace(/\.mardora-preview/g, `.${wrapperClass}`));
|
|
42
|
+
} else {
|
|
43
|
+
cssChunks.push(baseStyles);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const syntaxCSS = chunkSWFUKJDO_cjs.generateSyntaxThemeCSS(syntaxTheme, wrapperClass);
|
|
47
|
+
if (syntaxCSS) {
|
|
48
|
+
cssChunks.push("/* syntax-theme */\n" + syntaxCSS);
|
|
49
|
+
}
|
|
50
|
+
for (const plugin of plugins) {
|
|
51
|
+
const pluginCSS = plugin.getPreviewStyles(theme, wrapperClass);
|
|
52
|
+
if (pluginCSS) cssChunks.push(`/* ${plugin.name} - ${plugin.version} */
|
|
53
|
+
` + pluginCSS);
|
|
54
|
+
}
|
|
55
|
+
return cssChunks.join("\n\n");
|
|
56
|
+
}
|
|
57
|
+
function extractPreviewTocFromMarkdown(doc, config = {}, markdownConfig = []) {
|
|
58
|
+
const state$1 = state.EditorState.create({
|
|
59
|
+
doc,
|
|
60
|
+
extensions: [langMarkdown.markdown({ base: langMarkdown.markdownLanguage, extensions: markdownConfig })]
|
|
61
|
+
});
|
|
62
|
+
return chunkWFVCG4LD_cjs.extractTocItemsFromState(state$1, config).map((item) => ({
|
|
63
|
+
id: item.id,
|
|
64
|
+
level: item.level,
|
|
65
|
+
text: item.text,
|
|
66
|
+
active: item.active
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
exports.extractPreviewTocFromMarkdown = extractPreviewTocFromMarkdown;
|
|
71
|
+
exports.generateCSS = generateCSS;
|
|
72
|
+
exports.preview = preview;
|
|
73
|
+
//# sourceMappingURL=chunk-3ZOCCFDL.cjs.map
|
|
74
|
+
//# sourceMappingURL=chunk-3ZOCCFDL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/preview/preview.ts","../src/preview/css-generator.ts","../src/preview/toc.ts"],"names":["markdown","PreviewRenderer","generateSyntaxThemeCSS","state","EditorState","markdownLanguage","extractTocItemsFromState"],"mappings":";;;;;;;;AAsBA,eAAsB,OAAA,CAAQA,SAAAA,EAAkB,MAAA,GAAwB,EAAC,EAAoB;AAC3F,EAAA,MAAM;AAAA,IACJ,UAAU,EAAC;AAAA,IACX,QAAA,EAAU,iBAAiB,EAAC;AAAA,IAC5B,YAAA,GAAe,iBAAA;AAAA,IACf,UAAA,GAAa,SAAA;AAAA,IACb,QAAA,GAAW,IAAA;AAAA,IACX,KAAA,GAAA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AAGJ,EAAA,MAAM,QAAA,GAAW,IAAIC,iCAAA,CAAgBD,SAAAA,EAAU,SAAS,cAAA,EAAgB,KAAA,EAAO,UAAU,WAAW,CAAA;AACpG,EAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,MAAA,EAAO;AAGtC,EAAA,MAAM,SAAA,GAAY,YAAA,GAAe,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAA,GAAM,EAAA;AAC9D,EAAA,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,EAAG,SAAS,CAAA;AAAA,EAAM,OAAO,KAAK,UAAU,CAAA,CAAA,CAAA;AAC/D;;;ACjCA,IAAM,UAAA,GAAa,CAAA;AAAA;AAAA,CAAA,CAAA;AAsBZ,SAAS,WAAA,CAAY,MAAA,GAA4B,EAAC,EAAW;AAClE,EAAA,MAAM;AAAA,IACJ,UAAU,EAAC;AAAA,IACX,KAAA,GAAA,MAAA;AAAA,IACA,YAAA,GAAe,iBAAA;AAAA,IACf,WAAA,GAAc,IAAA;AAAA,IACd;AAAA,GACF,GAAI,MAAA;AAEJ,EAAA,MAAM,YAAsB,EAAC;AAG7B,EAAA,IAAI,WAAA,EAAa;AAEf,IAAA,IAAI,iBAAiB,iBAAA,EAAmB;AACtC,MAAA,SAAA,CAAU,KAAK,UAAA,CAAW,OAAA,CAAQ,sBAAsB,CAAA,CAAA,EAAI,YAAY,EAAE,CAAC,CAAA;AAAA,IAC7E,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,KAAK,UAAU,CAAA;AAAA,IAC3B;AAAA,EACF;AAGA,EAAA,MAAM,SAAA,GAAYE,wCAAA,CAAuB,WAAA,EAAa,YAAY,CAAA;AAClE,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,SAAA,CAAU,IAAA,CAAK,yBAAyB,SAAS,CAAA;AAAA,EACnD;AAGA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,gBAAA,CAAiB,KAAA,EAAO,YAAY,CAAA;AAC7D,IAAA,IAAI,SAAA,YAAqB,IAAA,CAAK,CAAA,GAAA,EAAM,OAAO,IAAI,CAAA,GAAA,EAAM,OAAO,OAAO,CAAA;AAAA,CAAA,GAAU,SAAS,CAAA;AAAA,EACxF;AAEA,EAAA,OAAO,SAAA,CAAU,KAAK,MAAM,CAAA;AAC9B;ACzDO,SAAS,8BACd,GAAA,EACA,MAAA,GAA2B,EAAC,EAC5B,cAAA,GAAmC,EAAC,EAClB;AAClB,EAAA,MAAMC,OAAA,GAAQC,kBAAY,MAAA,CAAO;AAAA,IAC/B,GAAA;AAAA,IACA,UAAA,EAAY,CAACJ,qBAAA,CAAS,EAAE,MAAMK,6BAAA,EAAkB,UAAA,EAAY,cAAA,EAAgB,CAAC;AAAA,GAC9E,CAAA;AAED,EAAA,OAAOC,2CAAyBH,OAAA,EAAO,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IAC5D,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,QAAQ,IAAA,CAAK;AAAA,GACf,CAAE,CAAA;AACJ","file":"chunk-3ZOCCFDL.cjs","sourcesContent":["import { ThemeEnum } from \"../editor/utils\";\nimport { PreviewRenderer } from \"./renderer\";\nimport { PreviewConfig } from \"./types\";\n\n/**\n * Render markdown to semantic HTML\n *\n * @param markdown - Markdown string to render\n * @param config - Preview configuration\n * @returns HTML string\n *\n * @example\n * ```ts\n * import { preview } from 'mardora/preview';\n * import { HeadingPlugin, ListPlugin } from 'mardora/plugins';\n *\n * const html = preview('# Hello World', {\n * plugins: [new HeadingPlugin(), new ListPlugin()],\n * wrapperClass: 'mardora-preview',\n * });\n * ```\n */\nexport async function preview(markdown: string, config: PreviewConfig = {}): Promise<string> {\n const {\n plugins = [],\n markdown: markdownConfig = [],\n wrapperClass = \"mardora-preview\",\n wrapperTag = \"article\",\n sanitize = true,\n theme = ThemeEnum.AUTO,\n syntaxTheme,\n } = config;\n\n // Create renderer and generate HTML\n const renderer = new PreviewRenderer(markdown, plugins, markdownConfig, theme, sanitize, syntaxTheme);\n const content = await renderer.render();\n\n // Wrap in container\n const classAttr = wrapperClass ? ` class=\"${wrapperClass}\"` : \"\";\n return `<${wrapperTag}${classAttr}>\\n${content}</${wrapperTag}>`;\n}\n","import { ThemeEnum } from \"../editor/utils\";\nimport { GenerateCSSConfig } from \"./types\";\nimport { generateSyntaxThemeCSS } from \"./syntax-theme\";\n\n/**\n * Base CSS styles for preview rendering\n */\nconst baseStyles = `.mardora-preview {\n padding: 0 0.5rem;\n}`;\n\n/**\n * Generate CSS for preview rendering\n *\n * @param config - CSS generation configuration\n * @returns CSS string\n *\n * @example\n * ```ts\n * import { generateCSS } from 'mardora/preview';\n * import { HeadingPlugin, ListPlugin } from 'mardora/plugins';\n *\n * const css = generateCSS({\n * plugins: [new HeadingPlugin(), new ListPlugin()],\n * theme: ThemeEnum.AUTO,\n * includeBase: true,\n * });\n * ```\n */\nexport function generateCSS(config: GenerateCSSConfig = {}): string {\n const {\n plugins = [],\n theme = ThemeEnum.AUTO,\n wrapperClass = \"mardora-preview\",\n includeBase = true,\n syntaxTheme,\n } = config;\n\n const cssChunks: string[] = [];\n\n // Include base styles\n if (includeBase) {\n // Replace default wrapper class if custom one is provided\n if (wrapperClass !== \"mardora-preview\") {\n cssChunks.push(baseStyles.replace(/\\.mardora-preview/g, `.${wrapperClass}`));\n } else {\n cssChunks.push(baseStyles);\n }\n }\n\n // Collect syntax highlight styles (`tok-*` classes) from CodeMirror theme/extensions\n const syntaxCSS = generateSyntaxThemeCSS(syntaxTheme, wrapperClass);\n if (syntaxCSS) {\n cssChunks.push(\"/* syntax-theme */\\n\" + syntaxCSS);\n }\n\n // Collect styles from plugins\n for (const plugin of plugins) {\n const pluginCSS = plugin.getPreviewStyles(theme, wrapperClass);\n if (pluginCSS) cssChunks.push(`/* ${plugin.name} - ${plugin.version} */\\n` + pluginCSS);\n }\n\n return cssChunks.join(\"\\n\\n\");\n}\n","import { markdown, markdownLanguage } from \"@codemirror/lang-markdown\";\nimport { EditorState } from \"@codemirror/state\";\nimport type { MarkdownConfig } from \"@lezer/markdown\";\nimport type { MardoraTocConfig, MardoraTocItem } from \"../editor/table-of-contents\";\nimport { extractTocItemsFromState } from \"../editor/table-of-contents\";\n\nexport function extractPreviewTocFromMarkdown(\n doc: string,\n config: MardoraTocConfig = {},\n markdownConfig: MarkdownConfig[] = []\n): MardoraTocItem[] {\n const state = EditorState.create({\n doc,\n extensions: [markdown({ base: markdownLanguage, extensions: markdownConfig })],\n });\n\n return extractTocItemsFromState(state, config).map((item) => ({\n id: item.id,\n level: item.level,\n text: item.text,\n active: item.active,\n }));\n}\n"]}
|