@wireweave/markdown-plugin 1.0.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.
@@ -0,0 +1,122 @@
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/markdown-it.ts
21
+ var markdown_it_exports = {};
22
+ __export(markdown_it_exports, {
23
+ markdownItWireframe: () => markdownItWireframe
24
+ });
25
+ module.exports = __toCommonJS(markdown_it_exports);
26
+
27
+ // src/index.ts
28
+ var import_core = require("@wireweave/core");
29
+ var defaultOptions = {
30
+ format: "svg-img",
31
+ theme: "light",
32
+ containerClass: "wireframe-container",
33
+ errorHandling: "both",
34
+ containerWidth: 0,
35
+ // 0 means no scaling
36
+ maxScale: 1
37
+ };
38
+ function renderWireframe(code, options = {}) {
39
+ const opts = { ...defaultOptions, ...options };
40
+ try {
41
+ const doc = (0, import_core.parse)(code);
42
+ switch (opts.format) {
43
+ case "html": {
44
+ const { html, css } = (0, import_core.render)(doc, { theme: opts.theme });
45
+ return `
46
+ <div class="${opts.containerClass}">
47
+ <style>${css}</style>
48
+ ${html}
49
+ </div>
50
+ `.trim();
51
+ }
52
+ case "html-preview": {
53
+ const { html, css } = (0, import_core.render)(doc, { theme: opts.theme });
54
+ const firstPage = doc.children[0];
55
+ const viewport = (0, import_core.resolveViewport)(firstPage?.viewport, firstPage?.device);
56
+ const previewHtml = (0, import_core.wrapInPreviewContainer)(html, viewport, {
57
+ darkMode: opts.theme === "dark",
58
+ containerWidth: opts.containerWidth > 0 ? opts.containerWidth : void 0
59
+ });
60
+ return `
61
+ <div class="${opts.containerClass}">
62
+ <style>${css}</style>
63
+ ${previewHtml}
64
+ </div>
65
+ `.trim();
66
+ }
67
+ case "svg": {
68
+ const { svg } = (0, import_core.renderToSvg)(doc);
69
+ return `<div class="${opts.containerClass}">${svg}</div>`;
70
+ }
71
+ case "svg-img":
72
+ default: {
73
+ const { svg } = (0, import_core.renderToSvg)(doc);
74
+ const base64 = typeof Buffer !== "undefined" ? Buffer.from(svg).toString("base64") : btoa(svg);
75
+ return `
76
+ <div class="${opts.containerClass}">
77
+ <img src="data:image/svg+xml;base64,${base64}" alt="Wireframe" />
78
+ </div>
79
+ `.trim();
80
+ }
81
+ }
82
+ } catch (error) {
83
+ return renderError(code, error, opts);
84
+ }
85
+ }
86
+ function renderError(code, error, options) {
87
+ const errorHtml = `<pre class="wireframe-error">${escapeHtml(error.message)}</pre>`;
88
+ const codeHtml = `<pre class="wireframe-source"><code>${escapeHtml(code)}</code></pre>`;
89
+ switch (options.errorHandling) {
90
+ case "code":
91
+ return codeHtml;
92
+ case "error":
93
+ return errorHtml;
94
+ case "both":
95
+ default:
96
+ return `<div class="${options.containerClass} wireframe-error-container">${errorHtml}${codeHtml}</div>`;
97
+ }
98
+ }
99
+ function escapeHtml(text) {
100
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
101
+ }
102
+
103
+ // src/markdown-it.ts
104
+ function markdownItWireframe(md, options = {}) {
105
+ const defaultFence = md.renderer.rules.fence;
106
+ md.renderer.rules.fence = (tokens, idx, opts, env, self) => {
107
+ const token = tokens[idx];
108
+ const info = token.info.trim();
109
+ if (info === "wireframe" || info === "wf") {
110
+ return renderWireframe(token.content, options);
111
+ }
112
+ if (defaultFence) {
113
+ return defaultFence(tokens, idx, opts, env, self);
114
+ }
115
+ return `<pre><code class="language-${info}">${md.utils.escapeHtml(token.content)}</code></pre>`;
116
+ };
117
+ }
118
+ // Annotate the CommonJS export names for ESM import in node:
119
+ 0 && (module.exports = {
120
+ markdownItWireframe
121
+ });
122
+ //# sourceMappingURL=markdown-it.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/markdown-it.ts","../src/index.ts"],"sourcesContent":["/**\n * markdown-it plugin for wireweave\n */\n\nimport type MarkdownIt from 'markdown-it';\nimport { renderWireframe, WireframePluginOptions } from './index';\n\n/**\n * markdown-it plugin\n *\n * @example\n * ```typescript\n * import MarkdownIt from 'markdown-it';\n * import { markdownItWireframe } from '@wireweave/markdown-plugin/markdown-it';\n *\n * const md = new MarkdownIt();\n * md.use(markdownItWireframe, { format: 'svg' });\n *\n * const html = md.render('```wireframe\\npage { text \"Hello\" }\\n```');\n * ```\n */\nexport function markdownItWireframe(\n md: MarkdownIt,\n options: WireframePluginOptions = {}\n): void {\n const defaultFence = md.renderer.rules.fence;\n\n md.renderer.rules.fence = (tokens, idx, opts, env, self) => {\n const token = tokens[idx];\n const info = token.info.trim();\n\n if (info === 'wireframe' || info === 'wf') {\n return renderWireframe(token.content, options);\n }\n\n // Use default renderer for other code blocks\n if (defaultFence) {\n return defaultFence(tokens, idx, opts, env, self);\n }\n\n return `<pre><code class=\"language-${info}\">${md.utils.escapeHtml(token.content)}</code></pre>`;\n };\n}\n","/**\n * @wireweave/markdown-plugin\n *\n * Markdown plugins for wireweave\n */\n\nimport {\n parse,\n render,\n renderToSvg,\n resolveViewport,\n wrapInPreviewContainer,\n} from '@wireweave/core';\n\nexport interface WireframePluginOptions {\n /**\n * Output format\n * - 'html': HTML/CSS rendering (inline styles)\n * - 'html-preview': HTML with preview container (supports scaling)\n * - 'svg': SVG image\n * - 'svg-img': base64 encoded img tag\n */\n format?: 'html' | 'html-preview' | 'svg' | 'svg-img';\n\n /**\n * Theme for rendering\n * - 'light': Light theme\n * - 'dark': Dark theme\n */\n theme?: 'light' | 'dark';\n\n /**\n * Container class for wrapping SVG/HTML\n */\n containerClass?: string;\n\n /**\n * Error handling mode\n * - 'code': Show original code\n * - 'error': Show error message\n * - 'both': Show both\n */\n errorHandling?: 'code' | 'error' | 'both';\n\n /**\n * Container width for preview scaling (in pixels)\n * When set, the wireframe will be scaled to fit this width\n */\n containerWidth?: number;\n\n /**\n * Maximum scale factor (default: 1)\n * Prevents the preview from being scaled up beyond this value\n */\n maxScale?: number;\n}\n\nconst defaultOptions: Required<WireframePluginOptions> = {\n format: 'svg-img',\n theme: 'light',\n containerClass: 'wireframe-container',\n errorHandling: 'both',\n containerWidth: 0, // 0 means no scaling\n maxScale: 1,\n};\n\n/**\n * Render wireframe code to output format\n */\nexport function renderWireframe(\n code: string,\n options: WireframePluginOptions = {}\n): string {\n const opts = { ...defaultOptions, ...options };\n\n try {\n const doc = parse(code);\n\n switch (opts.format) {\n case 'html': {\n const { html, css } = render(doc, { theme: opts.theme });\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${html}\n </div>\n `.trim();\n }\n\n case 'html-preview': {\n const { html, css } = render(doc, { theme: opts.theme });\n const firstPage = doc.children[0];\n const viewport = resolveViewport(firstPage?.viewport, firstPage?.device);\n\n const previewHtml = wrapInPreviewContainer(html, viewport, {\n darkMode: opts.theme === 'dark',\n containerWidth: opts.containerWidth > 0 ? opts.containerWidth : undefined,\n });\n\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${previewHtml}\n </div>\n `.trim();\n }\n\n case 'svg': {\n const { svg } = renderToSvg(doc);\n return `<div class=\"${opts.containerClass}\">${svg}</div>`;\n }\n\n case 'svg-img':\n default: {\n const { svg } = renderToSvg(doc);\n // Use btoa for browser compatibility, Buffer for Node.js\n const base64 =\n typeof Buffer !== 'undefined'\n ? Buffer.from(svg).toString('base64')\n : btoa(svg);\n return `\n <div class=\"${opts.containerClass}\">\n <img src=\"data:image/svg+xml;base64,${base64}\" alt=\"Wireframe\" />\n </div>\n `.trim();\n }\n }\n } catch (error) {\n return renderError(code, error as Error, opts);\n }\n}\n\nfunction renderError(\n code: string,\n error: Error,\n options: Required<WireframePluginOptions>\n): string {\n const errorHtml = `<pre class=\"wireframe-error\">${escapeHtml(error.message)}</pre>`;\n const codeHtml = `<pre class=\"wireframe-source\"><code>${escapeHtml(code)}</code></pre>`;\n\n switch (options.errorHandling) {\n case 'code':\n return codeHtml;\n case 'error':\n return errorHtml;\n case 'both':\n default:\n return `<div class=\"${options.containerClass} wireframe-error-container\">${errorHtml}${codeHtml}</div>`;\n }\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n}\n\nexport { markdownItWireframe } from './markdown-it';\nexport { markedWireframe } from './marked';\nexport { remarkableWireframe } from './remarkable';\n"],"mappings":"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","names":[]}
@@ -0,0 +1,113 @@
1
+ import MarkdownIt from 'markdown-it';
2
+ import { MarkedExtension } from 'marked';
3
+
4
+ /**
5
+ * markdown-it plugin for wireweave
6
+ */
7
+
8
+ /**
9
+ * markdown-it plugin
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import MarkdownIt from 'markdown-it';
14
+ * import { markdownItWireframe } from '@wireweave/markdown-plugin/markdown-it';
15
+ *
16
+ * const md = new MarkdownIt();
17
+ * md.use(markdownItWireframe, { format: 'svg' });
18
+ *
19
+ * const html = md.render('```wireframe\npage { text "Hello" }\n```');
20
+ * ```
21
+ */
22
+ declare function markdownItWireframe(md: MarkdownIt, options?: WireframePluginOptions): void;
23
+
24
+ /**
25
+ * marked extension for wireweave
26
+ */
27
+
28
+ /**
29
+ * marked extension
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { marked } from 'marked';
34
+ * import { markedWireframe } from '@wireweave/markdown-plugin/marked';
35
+ *
36
+ * marked.use(markedWireframe({ format: 'svg' }));
37
+ *
38
+ * const html = marked.parse('```wireframe\npage { text "Hello" }\n```');
39
+ * ```
40
+ */
41
+ declare function markedWireframe(options?: WireframePluginOptions): MarkedExtension;
42
+
43
+ /**
44
+ * remarkable plugin for wireweave
45
+ */
46
+
47
+ interface RemarkableToken {
48
+ type: string;
49
+ params: string;
50
+ content: string;
51
+ }
52
+ interface RemarkableRenderer {
53
+ rules: {
54
+ fence: (tokens: RemarkableToken[], idx: number, options: Record<string, unknown>, env: Record<string, unknown>) => string;
55
+ };
56
+ }
57
+ interface RemarkableUtils {
58
+ escapeHtml: (text: string) => string;
59
+ }
60
+ interface Remarkable {
61
+ renderer: RemarkableRenderer;
62
+ utils: RemarkableUtils;
63
+ }
64
+ declare function remarkableWireframe(options?: WireframePluginOptions): (md: Remarkable) => void;
65
+
66
+ /**
67
+ * @wireweave/markdown-plugin
68
+ *
69
+ * Markdown plugins for wireweave
70
+ */
71
+ interface WireframePluginOptions {
72
+ /**
73
+ * Output format
74
+ * - 'html': HTML/CSS rendering (inline styles)
75
+ * - 'html-preview': HTML with preview container (supports scaling)
76
+ * - 'svg': SVG image
77
+ * - 'svg-img': base64 encoded img tag
78
+ */
79
+ format?: 'html' | 'html-preview' | 'svg' | 'svg-img';
80
+ /**
81
+ * Theme for rendering
82
+ * - 'light': Light theme
83
+ * - 'dark': Dark theme
84
+ */
85
+ theme?: 'light' | 'dark';
86
+ /**
87
+ * Container class for wrapping SVG/HTML
88
+ */
89
+ containerClass?: string;
90
+ /**
91
+ * Error handling mode
92
+ * - 'code': Show original code
93
+ * - 'error': Show error message
94
+ * - 'both': Show both
95
+ */
96
+ errorHandling?: 'code' | 'error' | 'both';
97
+ /**
98
+ * Container width for preview scaling (in pixels)
99
+ * When set, the wireframe will be scaled to fit this width
100
+ */
101
+ containerWidth?: number;
102
+ /**
103
+ * Maximum scale factor (default: 1)
104
+ * Prevents the preview from being scaled up beyond this value
105
+ */
106
+ maxScale?: number;
107
+ }
108
+ /**
109
+ * Render wireframe code to output format
110
+ */
111
+ declare function renderWireframe(code: string, options?: WireframePluginOptions): string;
112
+
113
+ export { type WireframePluginOptions as W, renderWireframe as a, markedWireframe as m, markdownItWireframe, remarkableWireframe as r };
@@ -0,0 +1,113 @@
1
+ import MarkdownIt from 'markdown-it';
2
+ import { MarkedExtension } from 'marked';
3
+
4
+ /**
5
+ * markdown-it plugin for wireweave
6
+ */
7
+
8
+ /**
9
+ * markdown-it plugin
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import MarkdownIt from 'markdown-it';
14
+ * import { markdownItWireframe } from '@wireweave/markdown-plugin/markdown-it';
15
+ *
16
+ * const md = new MarkdownIt();
17
+ * md.use(markdownItWireframe, { format: 'svg' });
18
+ *
19
+ * const html = md.render('```wireframe\npage { text "Hello" }\n```');
20
+ * ```
21
+ */
22
+ declare function markdownItWireframe(md: MarkdownIt, options?: WireframePluginOptions): void;
23
+
24
+ /**
25
+ * marked extension for wireweave
26
+ */
27
+
28
+ /**
29
+ * marked extension
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { marked } from 'marked';
34
+ * import { markedWireframe } from '@wireweave/markdown-plugin/marked';
35
+ *
36
+ * marked.use(markedWireframe({ format: 'svg' }));
37
+ *
38
+ * const html = marked.parse('```wireframe\npage { text "Hello" }\n```');
39
+ * ```
40
+ */
41
+ declare function markedWireframe(options?: WireframePluginOptions): MarkedExtension;
42
+
43
+ /**
44
+ * remarkable plugin for wireweave
45
+ */
46
+
47
+ interface RemarkableToken {
48
+ type: string;
49
+ params: string;
50
+ content: string;
51
+ }
52
+ interface RemarkableRenderer {
53
+ rules: {
54
+ fence: (tokens: RemarkableToken[], idx: number, options: Record<string, unknown>, env: Record<string, unknown>) => string;
55
+ };
56
+ }
57
+ interface RemarkableUtils {
58
+ escapeHtml: (text: string) => string;
59
+ }
60
+ interface Remarkable {
61
+ renderer: RemarkableRenderer;
62
+ utils: RemarkableUtils;
63
+ }
64
+ declare function remarkableWireframe(options?: WireframePluginOptions): (md: Remarkable) => void;
65
+
66
+ /**
67
+ * @wireweave/markdown-plugin
68
+ *
69
+ * Markdown plugins for wireweave
70
+ */
71
+ interface WireframePluginOptions {
72
+ /**
73
+ * Output format
74
+ * - 'html': HTML/CSS rendering (inline styles)
75
+ * - 'html-preview': HTML with preview container (supports scaling)
76
+ * - 'svg': SVG image
77
+ * - 'svg-img': base64 encoded img tag
78
+ */
79
+ format?: 'html' | 'html-preview' | 'svg' | 'svg-img';
80
+ /**
81
+ * Theme for rendering
82
+ * - 'light': Light theme
83
+ * - 'dark': Dark theme
84
+ */
85
+ theme?: 'light' | 'dark';
86
+ /**
87
+ * Container class for wrapping SVG/HTML
88
+ */
89
+ containerClass?: string;
90
+ /**
91
+ * Error handling mode
92
+ * - 'code': Show original code
93
+ * - 'error': Show error message
94
+ * - 'both': Show both
95
+ */
96
+ errorHandling?: 'code' | 'error' | 'both';
97
+ /**
98
+ * Container width for preview scaling (in pixels)
99
+ * When set, the wireframe will be scaled to fit this width
100
+ */
101
+ containerWidth?: number;
102
+ /**
103
+ * Maximum scale factor (default: 1)
104
+ * Prevents the preview from being scaled up beyond this value
105
+ */
106
+ maxScale?: number;
107
+ }
108
+ /**
109
+ * Render wireframe code to output format
110
+ */
111
+ declare function renderWireframe(code: string, options?: WireframePluginOptions): string;
112
+
113
+ export { type WireframePluginOptions as W, renderWireframe as a, markedWireframe as m, markdownItWireframe, remarkableWireframe as r };
@@ -0,0 +1,101 @@
1
+ // src/index.ts
2
+ import {
3
+ parse,
4
+ render,
5
+ renderToSvg,
6
+ resolveViewport,
7
+ wrapInPreviewContainer
8
+ } from "@wireweave/core";
9
+ var defaultOptions = {
10
+ format: "svg-img",
11
+ theme: "light",
12
+ containerClass: "wireframe-container",
13
+ errorHandling: "both",
14
+ containerWidth: 0,
15
+ // 0 means no scaling
16
+ maxScale: 1
17
+ };
18
+ function renderWireframe(code, options = {}) {
19
+ const opts = { ...defaultOptions, ...options };
20
+ try {
21
+ const doc = parse(code);
22
+ switch (opts.format) {
23
+ case "html": {
24
+ const { html, css } = render(doc, { theme: opts.theme });
25
+ return `
26
+ <div class="${opts.containerClass}">
27
+ <style>${css}</style>
28
+ ${html}
29
+ </div>
30
+ `.trim();
31
+ }
32
+ case "html-preview": {
33
+ const { html, css } = render(doc, { theme: opts.theme });
34
+ const firstPage = doc.children[0];
35
+ const viewport = resolveViewport(firstPage?.viewport, firstPage?.device);
36
+ const previewHtml = wrapInPreviewContainer(html, viewport, {
37
+ darkMode: opts.theme === "dark",
38
+ containerWidth: opts.containerWidth > 0 ? opts.containerWidth : void 0
39
+ });
40
+ return `
41
+ <div class="${opts.containerClass}">
42
+ <style>${css}</style>
43
+ ${previewHtml}
44
+ </div>
45
+ `.trim();
46
+ }
47
+ case "svg": {
48
+ const { svg } = renderToSvg(doc);
49
+ return `<div class="${opts.containerClass}">${svg}</div>`;
50
+ }
51
+ case "svg-img":
52
+ default: {
53
+ const { svg } = renderToSvg(doc);
54
+ const base64 = typeof Buffer !== "undefined" ? Buffer.from(svg).toString("base64") : btoa(svg);
55
+ return `
56
+ <div class="${opts.containerClass}">
57
+ <img src="data:image/svg+xml;base64,${base64}" alt="Wireframe" />
58
+ </div>
59
+ `.trim();
60
+ }
61
+ }
62
+ } catch (error) {
63
+ return renderError(code, error, opts);
64
+ }
65
+ }
66
+ function renderError(code, error, options) {
67
+ const errorHtml = `<pre class="wireframe-error">${escapeHtml(error.message)}</pre>`;
68
+ const codeHtml = `<pre class="wireframe-source"><code>${escapeHtml(code)}</code></pre>`;
69
+ switch (options.errorHandling) {
70
+ case "code":
71
+ return codeHtml;
72
+ case "error":
73
+ return errorHtml;
74
+ case "both":
75
+ default:
76
+ return `<div class="${options.containerClass} wireframe-error-container">${errorHtml}${codeHtml}</div>`;
77
+ }
78
+ }
79
+ function escapeHtml(text) {
80
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
81
+ }
82
+
83
+ // src/markdown-it.ts
84
+ function markdownItWireframe(md, options = {}) {
85
+ const defaultFence = md.renderer.rules.fence;
86
+ md.renderer.rules.fence = (tokens, idx, opts, env, self) => {
87
+ const token = tokens[idx];
88
+ const info = token.info.trim();
89
+ if (info === "wireframe" || info === "wf") {
90
+ return renderWireframe(token.content, options);
91
+ }
92
+ if (defaultFence) {
93
+ return defaultFence(tokens, idx, opts, env, self);
94
+ }
95
+ return `<pre><code class="language-${info}">${md.utils.escapeHtml(token.content)}</code></pre>`;
96
+ };
97
+ }
98
+ export {
99
+ markdownItWireframe
100
+ };
101
+ //# sourceMappingURL=markdown-it.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/markdown-it.ts"],"sourcesContent":["/**\n * @wireweave/markdown-plugin\n *\n * Markdown plugins for wireweave\n */\n\nimport {\n parse,\n render,\n renderToSvg,\n resolveViewport,\n wrapInPreviewContainer,\n} from '@wireweave/core';\n\nexport interface WireframePluginOptions {\n /**\n * Output format\n * - 'html': HTML/CSS rendering (inline styles)\n * - 'html-preview': HTML with preview container (supports scaling)\n * - 'svg': SVG image\n * - 'svg-img': base64 encoded img tag\n */\n format?: 'html' | 'html-preview' | 'svg' | 'svg-img';\n\n /**\n * Theme for rendering\n * - 'light': Light theme\n * - 'dark': Dark theme\n */\n theme?: 'light' | 'dark';\n\n /**\n * Container class for wrapping SVG/HTML\n */\n containerClass?: string;\n\n /**\n * Error handling mode\n * - 'code': Show original code\n * - 'error': Show error message\n * - 'both': Show both\n */\n errorHandling?: 'code' | 'error' | 'both';\n\n /**\n * Container width for preview scaling (in pixels)\n * When set, the wireframe will be scaled to fit this width\n */\n containerWidth?: number;\n\n /**\n * Maximum scale factor (default: 1)\n * Prevents the preview from being scaled up beyond this value\n */\n maxScale?: number;\n}\n\nconst defaultOptions: Required<WireframePluginOptions> = {\n format: 'svg-img',\n theme: 'light',\n containerClass: 'wireframe-container',\n errorHandling: 'both',\n containerWidth: 0, // 0 means no scaling\n maxScale: 1,\n};\n\n/**\n * Render wireframe code to output format\n */\nexport function renderWireframe(\n code: string,\n options: WireframePluginOptions = {}\n): string {\n const opts = { ...defaultOptions, ...options };\n\n try {\n const doc = parse(code);\n\n switch (opts.format) {\n case 'html': {\n const { html, css } = render(doc, { theme: opts.theme });\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${html}\n </div>\n `.trim();\n }\n\n case 'html-preview': {\n const { html, css } = render(doc, { theme: opts.theme });\n const firstPage = doc.children[0];\n const viewport = resolveViewport(firstPage?.viewport, firstPage?.device);\n\n const previewHtml = wrapInPreviewContainer(html, viewport, {\n darkMode: opts.theme === 'dark',\n containerWidth: opts.containerWidth > 0 ? opts.containerWidth : undefined,\n });\n\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${previewHtml}\n </div>\n `.trim();\n }\n\n case 'svg': {\n const { svg } = renderToSvg(doc);\n return `<div class=\"${opts.containerClass}\">${svg}</div>`;\n }\n\n case 'svg-img':\n default: {\n const { svg } = renderToSvg(doc);\n // Use btoa for browser compatibility, Buffer for Node.js\n const base64 =\n typeof Buffer !== 'undefined'\n ? Buffer.from(svg).toString('base64')\n : btoa(svg);\n return `\n <div class=\"${opts.containerClass}\">\n <img src=\"data:image/svg+xml;base64,${base64}\" alt=\"Wireframe\" />\n </div>\n `.trim();\n }\n }\n } catch (error) {\n return renderError(code, error as Error, opts);\n }\n}\n\nfunction renderError(\n code: string,\n error: Error,\n options: Required<WireframePluginOptions>\n): string {\n const errorHtml = `<pre class=\"wireframe-error\">${escapeHtml(error.message)}</pre>`;\n const codeHtml = `<pre class=\"wireframe-source\"><code>${escapeHtml(code)}</code></pre>`;\n\n switch (options.errorHandling) {\n case 'code':\n return codeHtml;\n case 'error':\n return errorHtml;\n case 'both':\n default:\n return `<div class=\"${options.containerClass} wireframe-error-container\">${errorHtml}${codeHtml}</div>`;\n }\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n}\n\nexport { markdownItWireframe } from './markdown-it';\nexport { markedWireframe } from './marked';\nexport { remarkableWireframe } from './remarkable';\n","/**\n * markdown-it plugin for wireweave\n */\n\nimport type MarkdownIt from 'markdown-it';\nimport { renderWireframe, WireframePluginOptions } from './index';\n\n/**\n * markdown-it plugin\n *\n * @example\n * ```typescript\n * import MarkdownIt from 'markdown-it';\n * import { markdownItWireframe } from '@wireweave/markdown-plugin/markdown-it';\n *\n * const md = new MarkdownIt();\n * md.use(markdownItWireframe, { format: 'svg' });\n *\n * const html = md.render('```wireframe\\npage { text \"Hello\" }\\n```');\n * ```\n */\nexport function markdownItWireframe(\n md: MarkdownIt,\n options: WireframePluginOptions = {}\n): void {\n const defaultFence = md.renderer.rules.fence;\n\n md.renderer.rules.fence = (tokens, idx, opts, env, self) => {\n const token = tokens[idx];\n const info = token.info.trim();\n\n if (info === 'wireframe' || info === 'wf') {\n return renderWireframe(token.content, options);\n }\n\n // Use default renderer for other code blocks\n if (defaultFence) {\n return defaultFence(tokens, idx, opts, env, self);\n }\n\n return `<pre><code class=\"language-${info}\">${md.utils.escapeHtml(token.content)}</code></pre>`;\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,120 @@
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/marked.ts
21
+ var marked_exports = {};
22
+ __export(marked_exports, {
23
+ markedWireframe: () => markedWireframe
24
+ });
25
+ module.exports = __toCommonJS(marked_exports);
26
+
27
+ // src/index.ts
28
+ var import_core = require("@wireweave/core");
29
+ var defaultOptions = {
30
+ format: "svg-img",
31
+ theme: "light",
32
+ containerClass: "wireframe-container",
33
+ errorHandling: "both",
34
+ containerWidth: 0,
35
+ // 0 means no scaling
36
+ maxScale: 1
37
+ };
38
+ function renderWireframe(code, options = {}) {
39
+ const opts = { ...defaultOptions, ...options };
40
+ try {
41
+ const doc = (0, import_core.parse)(code);
42
+ switch (opts.format) {
43
+ case "html": {
44
+ const { html, css } = (0, import_core.render)(doc, { theme: opts.theme });
45
+ return `
46
+ <div class="${opts.containerClass}">
47
+ <style>${css}</style>
48
+ ${html}
49
+ </div>
50
+ `.trim();
51
+ }
52
+ case "html-preview": {
53
+ const { html, css } = (0, import_core.render)(doc, { theme: opts.theme });
54
+ const firstPage = doc.children[0];
55
+ const viewport = (0, import_core.resolveViewport)(firstPage?.viewport, firstPage?.device);
56
+ const previewHtml = (0, import_core.wrapInPreviewContainer)(html, viewport, {
57
+ darkMode: opts.theme === "dark",
58
+ containerWidth: opts.containerWidth > 0 ? opts.containerWidth : void 0
59
+ });
60
+ return `
61
+ <div class="${opts.containerClass}">
62
+ <style>${css}</style>
63
+ ${previewHtml}
64
+ </div>
65
+ `.trim();
66
+ }
67
+ case "svg": {
68
+ const { svg } = (0, import_core.renderToSvg)(doc);
69
+ return `<div class="${opts.containerClass}">${svg}</div>`;
70
+ }
71
+ case "svg-img":
72
+ default: {
73
+ const { svg } = (0, import_core.renderToSvg)(doc);
74
+ const base64 = typeof Buffer !== "undefined" ? Buffer.from(svg).toString("base64") : btoa(svg);
75
+ return `
76
+ <div class="${opts.containerClass}">
77
+ <img src="data:image/svg+xml;base64,${base64}" alt="Wireframe" />
78
+ </div>
79
+ `.trim();
80
+ }
81
+ }
82
+ } catch (error) {
83
+ return renderError(code, error, opts);
84
+ }
85
+ }
86
+ function renderError(code, error, options) {
87
+ const errorHtml = `<pre class="wireframe-error">${escapeHtml(error.message)}</pre>`;
88
+ const codeHtml = `<pre class="wireframe-source"><code>${escapeHtml(code)}</code></pre>`;
89
+ switch (options.errorHandling) {
90
+ case "code":
91
+ return codeHtml;
92
+ case "error":
93
+ return errorHtml;
94
+ case "both":
95
+ default:
96
+ return `<div class="${options.containerClass} wireframe-error-container">${errorHtml}${codeHtml}</div>`;
97
+ }
98
+ }
99
+ function escapeHtml(text) {
100
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
101
+ }
102
+
103
+ // src/marked.ts
104
+ function markedWireframe(options = {}) {
105
+ return {
106
+ renderer: {
107
+ code(token) {
108
+ if (token.lang === "wireframe" || token.lang === "wf") {
109
+ return renderWireframe(token.text, options);
110
+ }
111
+ return false;
112
+ }
113
+ }
114
+ };
115
+ }
116
+ // Annotate the CommonJS export names for ESM import in node:
117
+ 0 && (module.exports = {
118
+ markedWireframe
119
+ });
120
+ //# sourceMappingURL=marked.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marked.ts","../src/index.ts"],"sourcesContent":["/**\n * marked extension for wireweave\n */\n\nimport type { MarkedExtension, Tokens } from 'marked';\nimport { renderWireframe, WireframePluginOptions } from './index';\n\n/**\n * marked extension\n *\n * @example\n * ```typescript\n * import { marked } from 'marked';\n * import { markedWireframe } from '@wireweave/markdown-plugin/marked';\n *\n * marked.use(markedWireframe({ format: 'svg' }));\n *\n * const html = marked.parse('```wireframe\\npage { text \"Hello\" }\\n```');\n * ```\n */\nexport function markedWireframe(\n options: WireframePluginOptions = {}\n): MarkedExtension {\n return {\n renderer: {\n code(token: Tokens.Code): string | false {\n if (token.lang === 'wireframe' || token.lang === 'wf') {\n return renderWireframe(token.text, options);\n }\n return false; // Use default renderer\n },\n },\n };\n}\n","/**\n * @wireweave/markdown-plugin\n *\n * Markdown plugins for wireweave\n */\n\nimport {\n parse,\n render,\n renderToSvg,\n resolveViewport,\n wrapInPreviewContainer,\n} from '@wireweave/core';\n\nexport interface WireframePluginOptions {\n /**\n * Output format\n * - 'html': HTML/CSS rendering (inline styles)\n * - 'html-preview': HTML with preview container (supports scaling)\n * - 'svg': SVG image\n * - 'svg-img': base64 encoded img tag\n */\n format?: 'html' | 'html-preview' | 'svg' | 'svg-img';\n\n /**\n * Theme for rendering\n * - 'light': Light theme\n * - 'dark': Dark theme\n */\n theme?: 'light' | 'dark';\n\n /**\n * Container class for wrapping SVG/HTML\n */\n containerClass?: string;\n\n /**\n * Error handling mode\n * - 'code': Show original code\n * - 'error': Show error message\n * - 'both': Show both\n */\n errorHandling?: 'code' | 'error' | 'both';\n\n /**\n * Container width for preview scaling (in pixels)\n * When set, the wireframe will be scaled to fit this width\n */\n containerWidth?: number;\n\n /**\n * Maximum scale factor (default: 1)\n * Prevents the preview from being scaled up beyond this value\n */\n maxScale?: number;\n}\n\nconst defaultOptions: Required<WireframePluginOptions> = {\n format: 'svg-img',\n theme: 'light',\n containerClass: 'wireframe-container',\n errorHandling: 'both',\n containerWidth: 0, // 0 means no scaling\n maxScale: 1,\n};\n\n/**\n * Render wireframe code to output format\n */\nexport function renderWireframe(\n code: string,\n options: WireframePluginOptions = {}\n): string {\n const opts = { ...defaultOptions, ...options };\n\n try {\n const doc = parse(code);\n\n switch (opts.format) {\n case 'html': {\n const { html, css } = render(doc, { theme: opts.theme });\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${html}\n </div>\n `.trim();\n }\n\n case 'html-preview': {\n const { html, css } = render(doc, { theme: opts.theme });\n const firstPage = doc.children[0];\n const viewport = resolveViewport(firstPage?.viewport, firstPage?.device);\n\n const previewHtml = wrapInPreviewContainer(html, viewport, {\n darkMode: opts.theme === 'dark',\n containerWidth: opts.containerWidth > 0 ? opts.containerWidth : undefined,\n });\n\n return `\n <div class=\"${opts.containerClass}\">\n <style>${css}</style>\n ${previewHtml}\n </div>\n `.trim();\n }\n\n case 'svg': {\n const { svg } = renderToSvg(doc);\n return `<div class=\"${opts.containerClass}\">${svg}</div>`;\n }\n\n case 'svg-img':\n default: {\n const { svg } = renderToSvg(doc);\n // Use btoa for browser compatibility, Buffer for Node.js\n const base64 =\n typeof Buffer !== 'undefined'\n ? Buffer.from(svg).toString('base64')\n : btoa(svg);\n return `\n <div class=\"${opts.containerClass}\">\n <img src=\"data:image/svg+xml;base64,${base64}\" alt=\"Wireframe\" />\n </div>\n `.trim();\n }\n }\n } catch (error) {\n return renderError(code, error as Error, opts);\n }\n}\n\nfunction renderError(\n code: string,\n error: Error,\n options: Required<WireframePluginOptions>\n): string {\n const errorHtml = `<pre class=\"wireframe-error\">${escapeHtml(error.message)}</pre>`;\n const codeHtml = `<pre class=\"wireframe-source\"><code>${escapeHtml(code)}</code></pre>`;\n\n switch (options.errorHandling) {\n case 'code':\n return codeHtml;\n case 'error':\n return errorHtml;\n case 'both':\n default:\n return `<div class=\"${options.containerClass} wireframe-error-container\">${errorHtml}${codeHtml}</div>`;\n }\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n}\n\nexport { markdownItWireframe } from './markdown-it';\nexport { markedWireframe } from './marked';\nexport { remarkableWireframe } from './remarkable';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,kBAMO;AA6CP,IAAM,iBAAmD;AAAA,EACvD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,gBAAgB;AAAA;AAAA,EAChB,UAAU;AACZ;AAKO,SAAS,gBACd,MACA,UAAkC,CAAC,GAC3B;AACR,QAAM,OAAO,EAAE,GAAG,gBAAgB,GAAG,QAAQ;AAE7C,MAAI;AACF,UAAM,UAAM,mBAAM,IAAI;AAEtB,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK,QAAQ;AACX,cAAM,EAAE,MAAM,IAAI,QAAI,oBAAO,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;AACvD,eAAO;AAAA,wBACS,KAAK,cAAc;AAAA,qBACtB,GAAG;AAAA,cACV,IAAI;AAAA;AAAA,UAER,KAAK;AAAA,MACT;AAAA,MAEA,KAAK,gBAAgB;AACnB,cAAM,EAAE,MAAM,IAAI,QAAI,oBAAO,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;AACvD,cAAM,YAAY,IAAI,SAAS,CAAC;AAChC,cAAM,eAAW,6BAAgB,WAAW,UAAU,WAAW,MAAM;AAEvE,cAAM,kBAAc,oCAAuB,MAAM,UAAU;AAAA,UACzD,UAAU,KAAK,UAAU;AAAA,UACzB,gBAAgB,KAAK,iBAAiB,IAAI,KAAK,iBAAiB;AAAA,QAClE,CAAC;AAED,eAAO;AAAA,wBACS,KAAK,cAAc;AAAA,qBACtB,GAAG;AAAA,cACV,WAAW;AAAA;AAAA,UAEf,KAAK;AAAA,MACT;AAAA,MAEA,KAAK,OAAO;AACV,cAAM,EAAE,IAAI,QAAI,yBAAY,GAAG;AAC/B,eAAO,eAAe,KAAK,cAAc,KAAK,GAAG;AAAA,MACnD;AAAA,MAEA,KAAK;AAAA,MACL,SAAS;AACP,cAAM,EAAE,IAAI,QAAI,yBAAY,GAAG;AAE/B,cAAM,SACJ,OAAO,WAAW,cACd,OAAO,KAAK,GAAG,EAAE,SAAS,QAAQ,IAClC,KAAK,GAAG;AACd,eAAO;AAAA,wBACS,KAAK,cAAc;AAAA,kDACO,MAAM;AAAA;AAAA,UAE9C,KAAK;AAAA,MACT;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,WAAO,YAAY,MAAM,OAAgB,IAAI;AAAA,EAC/C;AACF;AAEA,SAAS,YACP,MACA,OACA,SACQ;AACR,QAAM,YAAY,gCAAgC,WAAW,MAAM,OAAO,CAAC;AAC3E,QAAM,WAAW,uCAAuC,WAAW,IAAI,CAAC;AAExE,UAAQ,QAAQ,eAAe;AAAA,IAC7B,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO,eAAe,QAAQ,cAAc,+BAA+B,SAAS,GAAG,QAAQ;AAAA,EACnG;AACF;AAEA,SAAS,WAAW,MAAsB;AACxC,SAAO,KACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAC3B;;;AD1IO,SAAS,gBACd,UAAkC,CAAC,GAClB;AACjB,SAAO;AAAA,IACL,UAAU;AAAA,MACR,KAAK,OAAoC;AACvC,YAAI,MAAM,SAAS,eAAe,MAAM,SAAS,MAAM;AACrD,iBAAO,gBAAgB,MAAM,MAAM,OAAO;AAAA,QAC5C;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,3 @@
1
+ import 'marked';
2
+ export { m as markedWireframe } from './markdown-it.cjs';
3
+ import 'markdown-it';
@@ -0,0 +1,3 @@
1
+ import 'marked';
2
+ export { m as markedWireframe } from './markdown-it.js';
3
+ import 'markdown-it';