@hello-ai-company/editor-publish 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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yuki Shibata
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # `@hello-ai-company/editor-publish`
2
+
3
+ Safe HTML, Markdown, presentation, and DOCX output plus public knowledge projections for OpenEditor documents.
4
+
5
+ ```ts
6
+ import {
7
+ getPublicKnowledgeContext,
8
+ renderOpenEditorDocx,
9
+ renderOpenEditorMarkdown,
10
+ renderOpenEditorPdfPrintHtml,
11
+ renderOpenEditorPresentation,
12
+ renderOpenEditorSite
13
+ } from "@hello-ai-company/editor-publish";
14
+
15
+ const html = renderOpenEditorSite(document, {
16
+ title: "Project update",
17
+ description: "A public summary",
18
+ canonicalUrl: "https://example.com/project",
19
+ canvasSpec
20
+ });
21
+ const markdown = renderOpenEditorMarkdown(document);
22
+ const docxBlob = await renderOpenEditorDocx(document);
23
+ const printHtml = renderOpenEditorPdfPrintHtml(document, { canvasSpec });
24
+ const context = getPublicKnowledgeContext(document);
25
+ const presentation = renderOpenEditorPresentation(document);
26
+ ```
27
+
28
+ `context.trust` is always `"untrusted"`. Keep its document-derived text separate from trusted model instructions; a public page can contain prompt-injection text.
29
+
30
+ The HTML renderer uses the same semantic allowlist and omits hidden/private content and unknown blocks. When a Canvas spec is provided, it validates the layout and renders responsive containers and allowlisted theme tokens. Without it, the existing article layout is unchanged. Native columnList and column blocks are transparent responsive wrappers, retaining ordered child content and relative widths.
31
+
32
+ The presentation renderer builds accessible heading-grouped slides with previous/next controls, arrow/space/escape keys, mobile sizing, and optional browser fullscreen. Both HTML renderers escape document text and attributes, validate URLs, and never render document-provided HTML, CSS, or JavaScript. Chart and embed references render placeholders; presentations are grouped from semantic headings rather than the Canvas tree.
33
+
34
+ The shared internal Export IR feeds HTML, Markdown, and a clean-room DOCX renderer. DOCX keeps semantic headings, paragraphs, lists, quotes, callouts, code, and public column child order; external images become safe text labels. The renderer uses the MIT-licensed docx package.
35
+
36
+ Markdown escapes inline text as literal content, omits arbitrary links, validates and encodes image destinations, and uses fenced code blocks. The PDF helper returns deterministic A4 print HTML that a host can open and pass to the browser's Save as PDF flow; it does not generate PDF bytes. These projections are intentionally lossy; review output before publishing. Hosting and publishing remain host responsibilities.
@@ -0,0 +1,47 @@
1
+ import { type EditorDocument } from "@hello-ai-company/editor-core";
2
+ import { type CanvasLayoutSpec } from "@hello-ai-company/editor-canvas";
3
+ export type OpenEditorSiteOptions = {
4
+ title?: string;
5
+ description?: string;
6
+ canonicalUrl?: string;
7
+ ogImageUrl?: string;
8
+ siteName?: string;
9
+ language?: string;
10
+ /** Validated responsive Canvas layout; omitted for the legacy article layout. */
11
+ canvasSpec?: CanvasLayoutSpec;
12
+ /** Publication-visible subset of Canvas view state. Unknown/stale node IDs are ignored. */
13
+ canvasRenderState?: CanvasRenderState;
14
+ };
15
+ export type CanvasRenderState = {
16
+ hiddenNodeIds?: readonly string[];
17
+ alignmentByNodeId?: Readonly<Record<string, "left" | "center" | "right" | "stretch">>;
18
+ };
19
+ export type PublicKnowledgeBlock = {
20
+ type: "heading" | "paragraph" | "bulletListItem" | "numberedListItem" | "quote" | "codeBlock" | "callout" | "image" | "status";
21
+ text: string;
22
+ };
23
+ export type PublicKnowledgeContext = {
24
+ /** Document-derived content is untrusted source material, not model instructions. */
25
+ trust: "untrusted";
26
+ title: string;
27
+ description: string;
28
+ text: string;
29
+ blocks: PublicKnowledgeBlock[];
30
+ };
31
+ export type OpenEditorDocxOptions = {
32
+ title?: string;
33
+ author?: string;
34
+ };
35
+ /** Render a deliberately small, dependency-free, static site from public document content. */
36
+ export declare function renderOpenEditorSite(document: EditorDocument, options?: OpenEditorSiteOptions): string;
37
+ /** Render a keyboard-accessible, static presentation player with no document-provided script. */
38
+ export declare function renderOpenEditorPresentation(document: EditorDocument, options?: OpenEditorSiteOptions): string;
39
+ /** Return only visible, allowlisted document text for a public-page Q&A adapter. */
40
+ export declare function getPublicKnowledgeContext(document: EditorDocument, options?: Pick<OpenEditorSiteOptions, "title" | "description" | "canvasSpec" | "canvasRenderState">): PublicKnowledgeContext;
41
+ /** Export visible, allowlisted document content as Markdown without emitting raw HTML or links. */
42
+ export declare function renderOpenEditorMarkdown(document: EditorDocument): string;
43
+ /** Build a clean-room DOCX from the same public Export IR used by HTML and Markdown. */
44
+ export declare function renderOpenEditorDocx(document: EditorDocument, options?: OpenEditorDocxOptions): Promise<Blob>;
45
+ /** Return the same Site HTML with stable print CSS; the host/browser owns Save as PDF. */
46
+ export declare function renderOpenEditorPdfPrintHtml(document: EditorDocument, options?: OpenEditorSiteOptions): string;
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAOL,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CACvF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/H,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,qFAAqF;IACrF,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAgDF,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAwCR;AAED,iGAAiG;AACjG,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAkBR;AAED,oFAAoF;AACpF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,mBAAmB,CAAM,GACtG,sBAAsB,CAqBxB;AAED,mGAAmG;AACnG,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAEzE;AAED,wFAAwF;AACxF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAgGf;AAED,0FAA0F;AAC1F,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAER"}
package/dist/index.js ADDED
@@ -0,0 +1,975 @@
1
+ import { isEditorDocument } from "@hello-ai-company/editor-core";
2
+ import { CANVAS_THEME_PRESETS, CanvasLayoutValidationError, flattenCanvasNodes, validateCanvasLayoutSpec } from "@hello-ai-company/editor-canvas";
3
+ const SITE_CSS = `:root{color-scheme:light dark;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#292524;background:#fafaf9}*{box-sizing:border-box}body{margin:0}.oe-site{padding:clamp(1.25rem,5vw,4rem) 1rem}.oe-site__article{max-width:48rem;margin:0 auto}.oe-site__header{margin:0 0 2rem}.oe-site__title{font-size:clamp(2rem,6vw,3.25rem);line-height:1.1;overflow-wrap:anywhere}.oe-site__content{font-size:1.0625rem;line-height:1.7;overflow-wrap:anywhere}.oe-site__content img{display:block;max-width:100%;height:auto;margin:1rem auto;border-radius:.5rem}.oe-site__content pre{max-width:100%;overflow:auto;padding:1rem;border-radius:.5rem;background:#f5f5f4}.oe-site__content blockquote,.oe-site__callout{margin:1.25rem 0;padding:.25rem 1rem;border-left:3px solid #0f766e}.oe-site__callout-title{font-weight:650}.oe-site__content a{color:#0f766e;text-decoration-thickness:.08em;text-underline-offset:.15em}.oe-site__content figure{margin:1.5rem 0}.oe-site__content figcaption{font-size:.9rem;color:#57534e;text-align:center}.oe-site__content hr{border:0;border-top:1px solid #d6d3d1;margin:2rem 0}.oe-site__legacy-columns{display:grid;grid-template-columns:var(--oe-site-column-tracks);gap:1rem}.oe-site__article--canvas{max-width:none}.oe-site__article--canvas .oe-site__header{max-width:var(--oe-site-max-width);margin:0 auto 2rem}.oe-site__canvas{max-width:var(--oe-site-max-width);margin:0 auto;padding:clamp(1.25rem,4vw,3.5rem);border-radius:var(--oe-site-radius);background:var(--oe-site-background);color:var(--oe-site-text);font-family:var(--oe-site-body-font);font-size:calc(1rem * var(--oe-site-body-scale));box-shadow:var(--oe-site-shadow)}.oe-site__canvas h1,.oe-site__canvas h2,.oe-site__canvas h3,.oe-site__canvas h4,.oe-site__canvas h5,.oe-site__canvas h6{font-family:var(--oe-site-heading-font);line-height:1.2}.oe-site__canvas .oe-site__callout,.oe-site__canvas blockquote{border-color:var(--oe-site-accent)}.oe-site__canvas a{color:var(--oe-site-accent)}.oe-site__canvas img{max-width:100%}.oe-site__canvas .oe-site__layout-stack{display:flex;min-width:0}.oe-site__canvas .oe-site__layout-grid,.oe-site__canvas .oe-site__layout-columns{display:grid;min-width:0}.oe-site__canvas .oe-site__legacy-columns{grid-template-columns:var(--oe-site-column-tracks);gap:var(--oe-site-gap,1rem)}.oe-site__canvas .oe-site__column{min-width:0}.oe-site__canvas .oe-site__layout-group{min-width:0;padding:var(--oe-site-space-md);border:1px solid var(--oe-site-border);border-radius:calc(var(--oe-site-radius) * .8);background:var(--oe-site-surface)}.oe-site__canvas .oe-site__layout-group[data-kind=frame]{box-shadow:var(--oe-site-frame-shadow)}.oe-site__canvas .oe-site__card{min-width:0;padding:var(--oe-site-space-md);border:1px solid var(--oe-site-border);border-radius:var(--oe-site-radius);background:var(--oe-site-surface)}.oe-site__canvas .oe-site__button{display:inline-flex;align-items:center;min-height:2.5rem;padding:.5rem 1rem;border-radius:999px;background:var(--oe-site-accent);color:white;font-weight:650}.oe-site__canvas .oe-site__placeholder{padding:1rem;border:1px dashed var(--oe-site-border);border-radius:var(--oe-site-radius);background:var(--oe-site-surface);color:var(--oe-site-muted);text-align:center}.oe-site__canvas .oe-site__layout-absolute{position:relative;min-height:15rem}.oe-site__canvas .oe-site__absolute-item{position:absolute;overflow:hidden}.oe-site__canvas .oe-site__layout-divider{border:0;border-top:1px solid var(--oe-site-border);margin:var(--oe-site-space-md) 0}@media(max-width:640px){.oe-site__legacy-columns{grid-template-columns:1fr!important}}@media(prefers-reduced-motion:reduce){.oe-site__presentation-slide{transition:none!important}}@media(prefers-color-scheme:dark){:root{color:#fafaf9;background:#1c1917}.oe-site__content pre{background:#292524}.oe-site__content figcaption{color:#d6d3d1}.oe-site__content hr{border-color:#57534e}.oe-site__content a{color:#5eead4}}`;
4
+ const PRESENTATION_CSS = `.oe-presentation{--oe-presentation-bg:#171b18;--oe-presentation-ink:#f6f7f5;min-height:100vh;display:flex;flex-direction:column;background:var(--oe-presentation-bg);color:var(--oe-presentation-ink);font:16px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}.oe-presentation__header,.oe-presentation__controls{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem clamp(1rem,3vw,2rem)}.oe-presentation__title{margin:0;font-size:1rem}.oe-presentation__stage{width:min(100% - 2rem,72rem);min-height:min(68vh,48rem);margin:auto;display:grid;place-items:center}.oe-presentation__slide{width:100%;max-height:72vh;overflow:auto;padding:clamp(1.25rem,6vw,5rem);border-radius:1rem;background:#fff;color:#202520;box-shadow:0 1rem 4rem #0004}.oe-presentation__slide h2,.oe-presentation__slide h3{font-size:clamp(2rem,6vw,4.5rem);line-height:1.08}.oe-presentation__slide p,.oe-presentation__slide li{font-size:clamp(1rem,2vw,1.5rem)}.oe-presentation__controls button{min-width:7rem;min-height:2.75rem;padding:.5rem .9rem;border:1px solid #758078;border-radius:.65rem;background:#262d28;color:inherit;font:inherit;cursor:pointer}.oe-presentation__controls button:focus-visible{outline:3px solid #a7f3c3;outline-offset:3px}.oe-presentation__controls button:disabled{opacity:.45;cursor:not-allowed}.oe-presentation__counter{min-width:6rem;text-align:center;font-variant-numeric:tabular-nums}.oe-presentation--active{position:fixed;z-index:2147483647;inset:0}.oe-presentation[hidden]{display:none}.oe-presentation__empty{margin:0;color:#667167}@media(max-width:600px){.oe-presentation__stage{width:100%;min-height:65vh;padding:.75rem}.oe-presentation__slide{max-height:68vh;padding:1.25rem;border-radius:.65rem}.oe-presentation__header,.oe-presentation__controls{padding:.75rem;gap:.5rem}.oe-presentation__controls button{min-width:5.5rem}}@media(prefers-reduced-motion:reduce){.oe-presentation__slide{scroll-behavior:auto;transition:none}}`;
5
+ const PRESENTATION_SCRIPT = `(()=>{const root=document.querySelector("[data-presentation]");if(!root)return;const slides=Array.from(root.querySelectorAll("[data-slide]"));const counter=root.querySelector("[data-counter]");const previous=root.querySelector("[data-previous]");const next=root.querySelector("[data-next]");const toggle=root.querySelector("[data-fullscreen]");let index=0;const show=(value)=>{index=Math.max(0,Math.min(slides.length-1,value));slides.forEach((slide,i)=>{slide.hidden=i!==index;slide.setAttribute("aria-hidden",String(i!==index));});counter.textContent=(index+1)+" / "+slides.length;previous.disabled=index===0;next.disabled=index===slides.length-1;};const exit=()=>{root.classList.remove("oe-presentation--active");toggle.textContent="Enter presentation";toggle.setAttribute("aria-label","Enter presentation mode");if(document.fullscreenElement===root&&document.exitFullscreen)document.exitFullscreen().catch(()=>{});};previous.addEventListener("click",()=>show(index-1));next.addEventListener("click",()=>show(index+1));toggle.addEventListener("click",async()=>{if(root.classList.contains("oe-presentation--active")){exit();return;}root.classList.add("oe-presentation--active");toggle.textContent="Exit presentation";toggle.setAttribute("aria-label","Exit presentation mode");root.focus();if(root.requestFullscreen){try{await root.requestFullscreen();}catch{}}});document.addEventListener("fullscreenchange",()=>{if(!document.fullscreenElement&&root.classList.contains("oe-presentation--active"))exit();});document.addEventListener("keydown",event=>{if(event.key==="Escape"){if(root.classList.contains("oe-presentation--active"))exit();return;}const target=event.target;if(target instanceof Element&&target.closest("a,input,textarea,select,[contenteditable=true]"))return;if(event.key==="ArrowRight"||event.key==="PageDown"){event.preventDefault();show(index+1);}else if(event.key==="ArrowLeft"||event.key==="PageUp"){event.preventDefault();show(index-1);}else if(event.key===" "){if(target instanceof Element&&target.closest("button"))return;event.preventDefault();show(index+1);}});show(0);})();`;
6
+ const PRESENTATION_BUTTON_CSS = `.oe-presentation__header button{min-height:2.75rem;padding:.5rem .9rem;border:1px solid #758078;border-radius:.65rem;background:#262d28;color:inherit;font:inherit;cursor:pointer}.oe-presentation__header button:focus-visible{outline:3px solid #a7f3c3;outline-offset:3px}`;
7
+ const PRINT_CSS = `@page{size:A4;margin:18mm}@media print{html,body{background:#fff!important;color:#111!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.oe-site{padding:0}.oe-site__article{max-width:none}.oe-site__article--canvas .oe-site__header{margin:0 0 12mm}.oe-site__canvas{max-width:none;box-shadow:none!important;border-radius:0;padding:0;background:#fff!important;color:#111!important}.oe-site__content{font-size:10.5pt;line-height:1.5}.oe-site__layout-group,.oe-site__card,figure,blockquote,pre{break-inside:avoid-page}.oe-site__legacy-columns{break-inside:avoid-page}.oe-site__content a{color:inherit;text-decoration:none}.oe-site__content img{max-width:100%;max-height:240mm;object-fit:contain}}`;
8
+ const ALLOWED_TYPES = new Set([
9
+ "heading",
10
+ "paragraph",
11
+ "bulletListItem",
12
+ "numberedListItem",
13
+ "quote",
14
+ "codeBlock",
15
+ "callout",
16
+ "image",
17
+ "status",
18
+ "divider"
19
+ ]);
20
+ const MAX_BLOCK_DEPTH = 64;
21
+ const MAX_INLINE_DEPTH = 32;
22
+ const STATUS_LABELS = {
23
+ todo: "To do",
24
+ doing: "In progress",
25
+ done: "Done",
26
+ blocked: "Blocked"
27
+ };
28
+ /** Render a deliberately small, dependency-free, static site from public document content. */
29
+ export function renderOpenEditorSite(document, options = {}) {
30
+ const nodes = projectExportIR(document);
31
+ const canvas = options.canvasSpec
32
+ ? renderCanvasLayout(options.canvasSpec, document, nodes, options.canvasRenderState)
33
+ : null;
34
+ const context = knowledgeFromNodes(nodes, options);
35
+ const title = cleanText(options.title) || context.title;
36
+ const description = cleanText(options.description) || context.description;
37
+ const siteName = cleanText(options.siteName) || title;
38
+ const language = safeLanguage(options.language);
39
+ const canonical = safeAbsoluteHttpUrl(options.canonicalUrl);
40
+ const ogImage = safeMediaUrl(options.ogImageUrl);
41
+ const metadata = [
42
+ `<title>${escapeHtml(title)}</title>`,
43
+ `<meta name="description" content="${escapeHtml(description)}">`,
44
+ `<meta property="og:title" content="${escapeHtml(title)}">`,
45
+ `<meta property="og:description" content="${escapeHtml(description)}">`,
46
+ `<meta property="og:site_name" content="${escapeHtml(siteName)}">`,
47
+ `<meta property="og:type" content="website">`,
48
+ `<meta name="twitter:card" content="${ogImage ? "summary_large_image" : "summary"}">`
49
+ ];
50
+ if (canonical) {
51
+ metadata.push(`<link rel="canonical" href="${escapeHtml(canonical)}">`, `<meta property="og:url" content="${escapeHtml(canonical)}">`);
52
+ }
53
+ if (ogImage) {
54
+ metadata.push(`<meta property="og:image" content="${escapeHtml(ogImage)}">`);
55
+ }
56
+ const articleClass = canvas ? "oe-site__article oe-site__article--canvas" : "oe-site__article";
57
+ const articleStyle = canvas ? ` style="--oe-site-max-width:${canvas.maxWidth}px"` : "";
58
+ const content = canvas?.html ?? renderNodes(nodes);
59
+ const titleIsInCanvas = canvas?.html
60
+ ? [...canvas.html.matchAll(/<h([1-6])\b[^>]*>([\s\S]*?)<\/h\1\s*>/gi)]
61
+ .some((heading) => heading[2]?.replace(/<[^>]+>/g, "") === escapeHtml(title))
62
+ : false;
63
+ const titleHeader = titleIsInCanvas ? "" : `<header class="oe-site__header"><h1 class="oe-site__title">${escapeHtml(title)}</h1></header>`;
64
+ return `<!doctype html><html lang="${escapeHtml(language)}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">${metadata.join("")}<style>${SITE_CSS}${canvas?.css ?? ""}</style></head><body><main class="oe-site"><article class="${articleClass}"${articleStyle}>${titleHeader}<div class="oe-site__content">${content}</div></article></main></body></html>`;
65
+ }
66
+ /** Render a keyboard-accessible, static presentation player with no document-provided script. */
67
+ export function renderOpenEditorPresentation(document, options = {}) {
68
+ const nodes = projectExportIR(document);
69
+ const context = knowledgeFromNodes(nodes, options);
70
+ const title = cleanText(options.title) || context.title;
71
+ const canvasRoots = options.canvasSpec
72
+ ? presentationCanvasRoots(options.canvasSpec) ?? [options.canvasSpec.root]
73
+ : null;
74
+ const canvas = options.canvasSpec
75
+ ? renderCanvasLayout(options.canvasSpec, document, nodes, options.canvasRenderState, canvasRoots ?? undefined)
76
+ : null;
77
+ const slides = canvasRoots
78
+ ? (canvas?.parts.filter((part) => part !== null) ?? [])
79
+ : presentationSlides(nodes).map((slide) => renderNodes(slide));
80
+ const slideContents = slides.length > 0 ? slides : ["<p class=\"oe-presentation__empty\">No public content in this slide.</p>"];
81
+ const renderedSlides = slideContents.map((content, index) => `<section class="oe-presentation__slide" data-slide aria-label="Slide ${index + 1} of ${slideContents.length}" tabindex="-1"${index > 0 ? " hidden" : ""}>${content}</section>`).join("");
82
+ return `<!doctype html><html lang="${escapeHtml(safeLanguage(options.language))}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>${escapeHtml(title)} — Presentation</title><style>${SITE_CSS}${PRESENTATION_CSS}${PRESENTATION_BUTTON_CSS}${canvas?.css ?? ""}</style></head><body><main class="oe-presentation" data-presentation tabindex="-1"><header class="oe-presentation__header"><h1 class="oe-presentation__title">${escapeHtml(title)}</h1><button type="button" data-fullscreen aria-label="Enter presentation mode">Enter presentation</button></header><div class="oe-presentation__stage" data-stage>${renderedSlides}</div><nav class="oe-presentation__controls" aria-label="Presentation controls"><button type="button" data-previous aria-label="Previous slide">Previous</button><output class="oe-presentation__counter" data-counter aria-live="polite">1 / ${slideContents.length}</output><button type="button" data-next aria-label="Next slide">Next</button></nav></main><script>${PRESENTATION_SCRIPT}</script></body></html>`;
83
+ }
84
+ /** Return only visible, allowlisted document text for a public-page Q&A adapter. */
85
+ export function getPublicKnowledgeContext(document, options = {}) {
86
+ const nodes = projectExportIR(document);
87
+ if (!options.canvasSpec)
88
+ return knowledgeFromNodes(nodes, options);
89
+ const issues = validateCanvasLayoutSpec(options.canvasSpec, document).filter(({ code }) => code !== "MISSING_BLOCK_REFERENCE");
90
+ if (issues.length > 0)
91
+ throw new CanvasLayoutValidationError(issues);
92
+ const state = normalizeCanvasRenderState(options.canvasRenderState, options.canvasSpec);
93
+ const publicBlocks = new Map();
94
+ const pending = [...nodes];
95
+ while (pending.length > 0) {
96
+ const block = pending.pop();
97
+ if (!block)
98
+ continue;
99
+ if (block.id)
100
+ publicBlocks.set(block.id, block);
101
+ pending.push(...block.children);
102
+ }
103
+ const references = collectCanvasBlockReferences(options.canvasSpec.root);
104
+ const visibleReferences = canvasKnowledgeReferences(options.canvasSpec.root, state.hiddenNodeIds);
105
+ const visibleNodes = visibleReferences.flatMap((blockId) => {
106
+ const block = publicBlocks.get(blockId);
107
+ return block ? [withoutNestedCanvasReferences(block, blockId, references)] : [];
108
+ });
109
+ return knowledgeFromNodes(visibleNodes, options);
110
+ }
111
+ /** Export visible, allowlisted document content as Markdown without emitting raw HTML or links. */
112
+ export function renderOpenEditorMarkdown(document) {
113
+ return renderMarkdownNodes(projectExportIR(document)).trim();
114
+ }
115
+ /** Build a clean-room DOCX from the same public Export IR used by HTML and Markdown. */
116
+ export async function renderOpenEditorDocx(document, options = {}) {
117
+ const nodes = projectExportIR(document);
118
+ const context = knowledgeFromNodes(nodes, options);
119
+ const title = cleanText(options.title) || context.title;
120
+ const docx = await import("docx");
121
+ const paragraphs = [
122
+ new docx.Paragraph({ text: title, heading: docx.HeadingLevel.TITLE })
123
+ ];
124
+ const headingLevels = [
125
+ docx.HeadingLevel.HEADING_1,
126
+ docx.HeadingLevel.HEADING_2,
127
+ docx.HeadingLevel.HEADING_3,
128
+ docx.HeadingLevel.HEADING_4,
129
+ docx.HeadingLevel.HEADING_5,
130
+ docx.HeadingLevel.HEADING_6
131
+ ];
132
+ function append(nodesToAppend, depth = 0) {
133
+ for (let index = 0; index < nodesToAppend.length; index += 1) {
134
+ const node = nodesToAppend[index];
135
+ if (node.type === "bulletListItem" || node.type === "numberedListItem") {
136
+ const type = node.type;
137
+ let number = 1;
138
+ while (nodesToAppend[index]?.type === type) {
139
+ const item = nodesToAppend[index];
140
+ const marker = type === "bulletListItem" ? "• " : number + ". ";
141
+ paragraphs.push(new docx.Paragraph({
142
+ text: marker + item.text,
143
+ indent: { left: Math.min(depth + 1, 8) * 360, hanging: 180 }
144
+ }));
145
+ append(item.children, depth + 1);
146
+ number += 1;
147
+ index += 1;
148
+ }
149
+ index -= 1;
150
+ continue;
151
+ }
152
+ switch (node.type) {
153
+ case "heading":
154
+ paragraphs.push(new docx.Paragraph({
155
+ text: node.text,
156
+ heading: headingLevels[headingLevel(node.level) - 1]
157
+ }));
158
+ break;
159
+ case "paragraph":
160
+ paragraphs.push(new docx.Paragraph({ text: node.text }));
161
+ break;
162
+ case "quote":
163
+ paragraphs.push(new docx.Paragraph({
164
+ children: [new docx.TextRun({ text: node.text, italics: true })],
165
+ indent: { left: 360 }
166
+ }));
167
+ break;
168
+ case "codeBlock":
169
+ paragraphs.push(new docx.Paragraph({
170
+ children: [new docx.TextRun({ text: node.text, font: "Consolas" })]
171
+ }));
172
+ break;
173
+ case "callout":
174
+ paragraphs.push(new docx.Paragraph({
175
+ children: [
176
+ ...(node.title ? [new docx.TextRun({ text: node.title + " ", bold: true })] : []),
177
+ new docx.TextRun({ text: node.text })
178
+ ],
179
+ indent: { left: 240 }
180
+ }));
181
+ break;
182
+ case "image":
183
+ paragraphs.push(new docx.Paragraph({
184
+ text: "[Image" + (node.alt ? ": " + node.alt : "") + (node.caption ? " — " + node.caption : "") + "]"
185
+ }));
186
+ break;
187
+ case "status":
188
+ paragraphs.push(new docx.Paragraph({ text: "Status: " + node.text }));
189
+ break;
190
+ case "divider":
191
+ paragraphs.push(new docx.Paragraph({ text: "————————————————" }));
192
+ break;
193
+ default:
194
+ break;
195
+ }
196
+ append(node.children, depth);
197
+ }
198
+ }
199
+ append(nodes);
200
+ const result = new docx.Document({
201
+ creator: cleanText(options.author) || "OpenEditor",
202
+ title,
203
+ sections: [{
204
+ properties: { page: { margin: { top: 1080, right: 1080, bottom: 1080, left: 1080 } } },
205
+ children: paragraphs
206
+ }]
207
+ });
208
+ return docx.Packer.toBlob(result);
209
+ }
210
+ /** Return the same Site HTML with stable print CSS; the host/browser owns Save as PDF. */
211
+ export function renderOpenEditorPdfPrintHtml(document, options = {}) {
212
+ return renderOpenEditorSite(document, options).replace("</style>", PRINT_CSS + "</style>");
213
+ }
214
+ function projectExportIR(document) {
215
+ if (!isEditorDocument(document)) {
216
+ throw new TypeError("Expected a valid EditorDocument with schemaVersion 1.");
217
+ }
218
+ return projectList(document.blocks, 0);
219
+ }
220
+ function projectList(blocks, depth) {
221
+ if (depth > MAX_BLOCK_DEPTH)
222
+ return [];
223
+ const output = [];
224
+ for (const block of blocks) {
225
+ if (isPrivateBlock(block))
226
+ continue;
227
+ const node = projectBlock(block, depth);
228
+ if (node)
229
+ output.push(node);
230
+ }
231
+ return output;
232
+ }
233
+ function projectBlock(block, depth) {
234
+ const props = block.props ?? {};
235
+ const children = projectList(block.children ?? [], depth + 1);
236
+ const inlineContent = block.type === "codeBlock"
237
+ ? plainInlineText(block.content)
238
+ : inlineText(block.content);
239
+ const content = inlineContent || stringProp(props.text);
240
+ if (block.type === "columnList" || block.type === "column") {
241
+ return {
242
+ id: block.id,
243
+ type: block.type,
244
+ text: "",
245
+ ...(block.type === "column" ? { columnWidth: safeColumnWidth(props.columnWidth ?? props.width) } : {}),
246
+ children
247
+ };
248
+ }
249
+ if (!ALLOWED_TYPES.has(block.type))
250
+ return null;
251
+ switch (block.type) {
252
+ case "heading":
253
+ return { id: block.id, type: "heading", text: content, level: headingLevel(props.level), children };
254
+ case "paragraph":
255
+ case "bulletListItem":
256
+ case "numberedListItem":
257
+ case "quote":
258
+ case "codeBlock":
259
+ return { id: block.id, type: block.type, text: content, children };
260
+ case "callout": {
261
+ const title = stringProp(props.title);
262
+ const variant = calloutVariant(props.variant);
263
+ return {
264
+ id: block.id,
265
+ type: "callout",
266
+ text: content,
267
+ ...(title ? { title } : {}),
268
+ variant,
269
+ children
270
+ };
271
+ }
272
+ case "image": {
273
+ const src = safeMediaUrl(props.url ?? props.src);
274
+ const alt = stringProp(props.alt);
275
+ const caption = stringProp(props.caption);
276
+ return {
277
+ id: block.id,
278
+ type: "image",
279
+ text: [alt, caption].filter(Boolean).join(" "),
280
+ ...(src ? { src } : {}),
281
+ ...(alt ? { alt } : {}),
282
+ ...(caption ? { caption } : {}),
283
+ children
284
+ };
285
+ }
286
+ case "status": {
287
+ const state = statusState(props.state);
288
+ const label = stringProp(props.label) || STATUS_LABELS[state];
289
+ return { id: block.id, type: "status", text: label, state, children };
290
+ }
291
+ case "divider":
292
+ return { id: block.id, type: "divider", text: "", children };
293
+ default:
294
+ return null;
295
+ }
296
+ }
297
+ function isPrivateBlock(block) {
298
+ const props = block.props ?? {};
299
+ const markers = block;
300
+ return markers.hidden === true
301
+ || markers.private === true
302
+ || markers.isPrivate === true
303
+ || markers.public === false
304
+ || markers.visibility === "private"
305
+ || markers.visibility === "hidden"
306
+ || markers.visibility === "internal"
307
+ || props.hidden === true
308
+ || props.private === true
309
+ || props.isPrivate === true
310
+ || props.public === false
311
+ || props.visibility === "private"
312
+ || props.visibility === "hidden"
313
+ || props.visibility === "internal";
314
+ }
315
+ function renderNodes(nodes, depth = 0, skipBlockIds = new Set()) {
316
+ if (depth > MAX_BLOCK_DEPTH)
317
+ return "";
318
+ let html = "";
319
+ const visibleNodes = skipBlockIds.size > 0
320
+ ? nodes.filter((node) => !node.id || !skipBlockIds.has(node.id))
321
+ : nodes;
322
+ for (let index = 0; index < visibleNodes.length; index += 1) {
323
+ const node = visibleNodes[index];
324
+ if (node.type === "bulletListItem" || node.type === "numberedListItem") {
325
+ const listType = node.type;
326
+ const items = [];
327
+ while (visibleNodes[index]?.type === listType) {
328
+ const item = visibleNodes[index];
329
+ items.push("<li>" + renderInline(item.text) + renderNodes(item.children, depth + 1, skipBlockIds) + "</li>");
330
+ index += 1;
331
+ }
332
+ index -= 1;
333
+ html += `<${listType === "bulletListItem" ? "ul" : "ol"}>${items.join("")}</${listType === "bulletListItem" ? "ul" : "ol"}>`;
334
+ continue;
335
+ }
336
+ const children = renderNodes(node.children, depth + 1, skipBlockIds);
337
+ switch (node.type) {
338
+ case "heading": {
339
+ const level = Math.min((node.level ?? 2) + 1, 6);
340
+ html += `<h${level}>${renderInline(node.text)}</h${level}>${children}`;
341
+ break;
342
+ }
343
+ case "paragraph":
344
+ html += `<p>${renderInline(node.text)}</p>${children}`;
345
+ break;
346
+ case "quote":
347
+ html += `<blockquote>${renderInline(node.text)}${children}</blockquote>`;
348
+ break;
349
+ case "codeBlock":
350
+ html += `<pre><code>${escapeHtml(node.text)}</code></pre>${children}`;
351
+ break;
352
+ case "callout":
353
+ html += `<aside class="oe-site__callout oe-site__callout--${node.variant ?? "info"}">${node.title ? `<p class="oe-site__callout-title">${escapeHtml(node.title)}</p>` : ""}<div>${renderInline(node.text)}${children}</div></aside>`;
354
+ break;
355
+ case "image":
356
+ html += node.src
357
+ ? `<figure><img src="${escapeHtml(node.src)}" alt="${escapeHtml(node.alt ?? "")}" loading="lazy" referrerpolicy="no-referrer">${node.caption ? `<figcaption>${escapeHtml(node.caption)}</figcaption>` : ""}${children}</figure>`
358
+ : node.caption
359
+ ? `<figure><figcaption>${escapeHtml(node.caption)}</figcaption>${children}</figure>`
360
+ : children;
361
+ break;
362
+ case "status":
363
+ html += `<p class="oe-site-status"><strong>Status:</strong> ${escapeHtml(node.text)}</p>${children}`;
364
+ break;
365
+ case "columnList": {
366
+ const tracks = node.children.map((column) => "minmax(0," + safeColumnWidth(column.columnWidth) + "fr)").join(" ") || "minmax(0,1fr)";
367
+ html += "<div class=\"oe-site__legacy-columns\" style=\"--oe-site-column-tracks:" + tracks + "\">" + children + "</div>";
368
+ break;
369
+ }
370
+ case "column":
371
+ html += "<div class=\"oe-site__column\">" + children + "</div>";
372
+ break;
373
+ case "divider":
374
+ html += `<hr>${children}`;
375
+ break;
376
+ default:
377
+ break;
378
+ }
379
+ }
380
+ return html;
381
+ }
382
+ function presentationSlides(nodes) {
383
+ const slides = [];
384
+ let current;
385
+ for (const node of nodes) {
386
+ if (node.type === "heading") {
387
+ current = [node];
388
+ slides.push(current);
389
+ }
390
+ else if (current) {
391
+ current.push(node);
392
+ }
393
+ else {
394
+ current = [node];
395
+ slides.push(current);
396
+ }
397
+ }
398
+ return slides.length ? slides : [[]];
399
+ }
400
+ function renderCanvasLayout(spec, document, nodes, renderState, roots = [spec.root]) {
401
+ const issues = validateCanvasLayoutSpec(spec, document);
402
+ const fatal = issues.filter(({ code }) => code !== "MISSING_BLOCK_REFERENCE");
403
+ if (fatal.length > 0)
404
+ throw new CanvasLayoutValidationError(fatal);
405
+ const state = normalizeCanvasRenderState(renderState, spec);
406
+ const tokens = typeof spec.theme === "string"
407
+ ? CANVAS_THEME_PRESETS[spec.theme]
408
+ : spec.theme;
409
+ const publicBlocks = new Map();
410
+ const projected = [...nodes];
411
+ while (projected.length > 0) {
412
+ const block = projected.pop();
413
+ if (!block)
414
+ continue;
415
+ if (block.id)
416
+ publicBlocks.set(block.id, block);
417
+ projected.push(...block.children);
418
+ }
419
+ const referencedBlockIds = collectCanvasBlockReferences(spec.root);
420
+ const rules = [];
421
+ let classId = 0;
422
+ function cssClass(declarations) {
423
+ classId += 1;
424
+ const name = "oe-site__layout-" + classId;
425
+ const selector = ".oe-site__canvas ." + name;
426
+ const cssDeclarations = (value) => Object.entries(value).map(([property, entry]) => property + ":" + entry).join(";");
427
+ rules.push(selector + "{" + cssDeclarations(declarations.mobile) + "}");
428
+ if (declarations.tablet) {
429
+ rules.push("@media(min-width:" + spec.breakpoints.tablet + "px){" + selector + "{" + cssDeclarations(declarations.tablet) + "}}");
430
+ }
431
+ if (declarations.desktop) {
432
+ rules.push("@media(min-width:" + spec.breakpoints.desktop + "px){" + selector + "{" + cssDeclarations(declarations.desktop) + "}}");
433
+ }
434
+ return name;
435
+ }
436
+ function alignmentClass(nodeId) {
437
+ const value = state.alignmentByNodeId.get(nodeId);
438
+ if (!value)
439
+ return "";
440
+ const declarations = {
441
+ "justify-self": value === "left" ? "start" : value === "right" ? "end" : value,
442
+ "align-self": value === "left" ? "flex-start" : value === "right" ? "flex-end" : value,
443
+ "text-align": value === "stretch" ? "left" : value,
444
+ "margin-left": value === "center" || value === "right" ? "auto" : "0",
445
+ "margin-right": value === "center" || value === "left" ? "auto" : "0"
446
+ };
447
+ return cssClass({ mobile: declarations });
448
+ }
449
+ function withClass(base, extra) {
450
+ return extra ? base + " " + extra : base;
451
+ }
452
+ function renderBlock(blockId) {
453
+ const block = publicBlocks.get(blockId);
454
+ if (!block)
455
+ return '<div class="oe-site__placeholder" role="note">Content unavailable.</div>';
456
+ const nestedRefs = new Set(referencedBlockIds);
457
+ nestedRefs.delete(blockId);
458
+ return renderNodes([block], 0, nestedRefs);
459
+ }
460
+ function renderElement(node) {
461
+ if (state.hiddenNodeIds.has(node.id))
462
+ return "";
463
+ const block = publicBlocks.get(node.blockId);
464
+ const content = renderBlock(node.blockId);
465
+ let rendered;
466
+ if (node.type === "card")
467
+ rendered = '<article class="oe-site__card">' + content + "</article>";
468
+ else if (node.type === "button")
469
+ rendered = '<span class="oe-site__button">' + (block ? content : "Button") + "</span>";
470
+ else if (node.type === "divider")
471
+ rendered = block && block.text.trim() ? content : '<hr class="oe-site__layout-divider">';
472
+ else if (node.type === "image" && (block?.type !== "image" || !block.src))
473
+ rendered = '<div class="oe-site__placeholder" role="img" aria-label="Image preview">Image preview</div>';
474
+ else if (node.type === "chart" || node.type === "embed") {
475
+ rendered = '<div class="oe-site__placeholder" role="img" aria-label="' + (node.type === "chart" ? "Chart" : "Embed") + ' preview">' + (node.type === "chart" ? "Chart" : "Embed") + " preview</div>";
476
+ }
477
+ else
478
+ rendered = content;
479
+ return '<div class="oe-site__canvas-element ' + alignmentClass(node.id) + '">' + rendered + "</div>";
480
+ }
481
+ function renderLayoutNode(node, depth = 0) {
482
+ if (depth > 32 || state.hiddenNodeIds.has(node.id))
483
+ return "";
484
+ const alignClass = alignmentClass(node.id);
485
+ if (node.type === "stack") {
486
+ const cls = cssClass({
487
+ mobile: {
488
+ display: "flex",
489
+ "flex-direction": "column",
490
+ gap: (node.gap?.mobile ?? 0) + "px",
491
+ padding: (node.padding?.mobile ?? 0) + "px"
492
+ },
493
+ tablet: {
494
+ "flex-direction": node.direction === "horizontal" ? "row" : "column",
495
+ gap: (node.gap?.tablet ?? node.gap?.mobile ?? 0) + "px",
496
+ padding: (node.padding?.tablet ?? node.padding?.mobile ?? 0) + "px"
497
+ },
498
+ desktop: {
499
+ "flex-direction": node.direction === "horizontal" ? "row" : "column",
500
+ gap: (node.gap?.desktop ?? node.gap?.tablet ?? node.gap?.mobile ?? 0) + "px",
501
+ padding: (node.padding?.desktop ?? node.padding?.tablet ?? node.padding?.mobile ?? 0) + "px"
502
+ }
503
+ });
504
+ return '<div class="' + withClass("oe-site__layout-stack " + cls, alignClass) + '">' + node.children.map((child) => renderLayoutNode(child, depth + 1)).join("") + "</div>";
505
+ }
506
+ if (node.type === "grid" || node.type === "columns") {
507
+ const isGrid = node.type === "grid";
508
+ const columns = isGrid ? node.columns : { mobile: 1, tablet: Math.min(2, node.columns.length), desktop: node.columns.length };
509
+ const gap = node.gap;
510
+ const cls = cssClass({
511
+ mobile: {
512
+ display: "grid",
513
+ "grid-template-columns": "repeat(" + columns.mobile + ",minmax(0,1fr))",
514
+ gap: (gap?.mobile ?? 0) + "px"
515
+ },
516
+ tablet: {
517
+ "grid-template-columns": "repeat(" + (columns.tablet ?? columns.mobile) + ",minmax(0,1fr))",
518
+ gap: (gap?.tablet ?? gap?.mobile ?? 0) + "px"
519
+ },
520
+ desktop: {
521
+ "grid-template-columns": "repeat(" + (columns.desktop ?? columns.tablet ?? columns.mobile) + ",minmax(0,1fr))",
522
+ gap: (gap?.desktop ?? gap?.tablet ?? gap?.mobile ?? 0) + "px"
523
+ }
524
+ });
525
+ const children = isGrid
526
+ ? node.children.map((child) => renderLayoutNode(child, depth + 1)).join("")
527
+ : node.columns.map((column) => '<div class="oe-site__column">' + column.map((child) => renderLayoutNode(child, depth + 1)).join("") + "</div>").join("");
528
+ return '<div class="' + withClass("oe-site__layout-" + (isGrid ? "grid" : "columns") + " " + cls, alignClass) + '">' + children + "</div>";
529
+ }
530
+ if (node.type === "section" || node.type === "frame") {
531
+ const anchoredBlock = node.blockId ? publicBlocks.get(node.blockId) : undefined;
532
+ const children = node.children.map((child) => renderLayoutNode(child, depth + 1)).join("");
533
+ const childRefs = collectCanvasBlockReferencesFromNodes(node.children);
534
+ const anchor = anchoredBlock && node.blockId && !childRefs.has(node.blockId)
535
+ ? renderBlock(node.blockId)
536
+ : "";
537
+ return '<section class="' + withClass("oe-site__layout-group", alignClass) + '" data-kind="' + node.type + '">' + anchor + children + "</section>";
538
+ }
539
+ if (node.type === "absolute") {
540
+ const cls = cssClass({ mobile: { position: "relative" } });
541
+ const items = node.items.map(({ element, rect }) => {
542
+ const value = rect.mobile;
543
+ const itemClass = cssClass({
544
+ mobile: {
545
+ left: value.x + "%",
546
+ top: value.y + "%",
547
+ width: value.width + "%",
548
+ height: value.height + "%"
549
+ },
550
+ tablet: rect.tablet ? {
551
+ left: rect.tablet.x + "%",
552
+ top: rect.tablet.y + "%",
553
+ width: rect.tablet.width + "%",
554
+ height: rect.tablet.height + "%"
555
+ } : undefined,
556
+ desktop: rect.desktop ? {
557
+ left: rect.desktop.x + "%",
558
+ top: rect.desktop.y + "%",
559
+ width: rect.desktop.width + "%",
560
+ height: rect.desktop.height + "%"
561
+ } : undefined
562
+ });
563
+ return '<div class="oe-site__absolute-item ' + itemClass + '">' + renderElement(element) + "</div>";
564
+ }).join("");
565
+ return '<div class="' + withClass("oe-site__layout-absolute " + cls, alignClass) + '">' + items + "</div>";
566
+ }
567
+ return isCanvasBlockElement(node) ? renderElement(node) : "";
568
+ }
569
+ const fontStacks = {
570
+ sans: "system-ui,-apple-system,Segoe UI,sans-serif",
571
+ serif: "Georgia,Times New Roman,serif",
572
+ mono: "ui-monospace,SFMono-Regular,Consolas,monospace"
573
+ };
574
+ const shadow = tokens.shadow === "strong"
575
+ ? "0 12px 36px rgb(25 35 27 / 12%)"
576
+ : tokens.shadow === "soft"
577
+ ? "0 2px 12px rgb(25 35 27 / 5%)"
578
+ : "none";
579
+ const themeCss = ".oe-site__canvas{--oe-site-background:" + tokens.colors.background
580
+ + ";--oe-site-surface:" + tokens.colors.surface
581
+ + ";--oe-site-text:" + tokens.colors.text
582
+ + ";--oe-site-muted:" + tokens.colors.muted
583
+ + ";--oe-site-accent:" + tokens.colors.accent
584
+ + ";--oe-site-border:" + tokens.colors.border
585
+ + ";--oe-site-body-font:" + fontStacks[tokens.fonts.body]
586
+ + ";--oe-site-heading-font:" + fontStacks[tokens.fonts.heading]
587
+ + ";--oe-site-body-scale:" + tokens.typeScale.body
588
+ + ";--oe-site-heading-scale:" + tokens.typeScale.heading
589
+ + ";--oe-site-radius:" + tokens.radius + "px"
590
+ + ";--oe-site-max-width:" + tokens.maxWidth + "px"
591
+ + ";--oe-site-space-xs:" + tokens.spacing.xs + "px"
592
+ + ";--oe-site-space-sm:" + tokens.spacing.sm + "px"
593
+ + ";--oe-site-space-md:" + tokens.spacing.md + "px"
594
+ + ";--oe-site-space-lg:" + tokens.spacing.lg + "px"
595
+ + ";--oe-site-space-xl:" + tokens.spacing.xl + "px"
596
+ + ";--oe-site-shadow:" + shadow
597
+ + ";--oe-site-frame-shadow:" + (tokens.shadow === "strong" ? "0 5px 18px rgb(25 35 27 / 12%)" : tokens.shadow === "soft" ? "0 3px 12px rgb(25 35 27 / 7%)" : "none")
598
+ + "}";
599
+ const parts = roots.map((root) => state.hiddenNodeIds.has(root.id)
600
+ ? null
601
+ : '<div class="oe-site__canvas">' + renderLayoutNode(root) + "</div>");
602
+ return {
603
+ html: roots.length === 1 && roots[0] === spec.root
604
+ ? parts[0] ?? '<div class="oe-site__canvas"></div>'
605
+ : "",
606
+ css: themeCss + rules.join(""),
607
+ maxWidth: tokens.maxWidth,
608
+ parts
609
+ };
610
+ }
611
+ const MAX_CANVAS_RENDER_STATE_ENTRIES = 1000;
612
+ function normalizeCanvasRenderState(state, spec) {
613
+ const nodeIds = new Set(flattenCanvasNodes(spec.root).map(({ id }) => id));
614
+ const hiddenNodeIds = new Set();
615
+ const alignmentByNodeId = new Map();
616
+ if (state === undefined)
617
+ return { hiddenNodeIds, alignmentByNodeId };
618
+ if (!state || typeof state !== "object" || Array.isArray(state)) {
619
+ throw new TypeError("Canvas render state must be an object.");
620
+ }
621
+ if (state.hiddenNodeIds !== undefined) {
622
+ if (!Array.isArray(state.hiddenNodeIds) || state.hiddenNodeIds.length > MAX_CANVAS_RENDER_STATE_ENTRIES) {
623
+ throw new TypeError("Canvas render state has an invalid hidden-node list.");
624
+ }
625
+ for (const id of state.hiddenNodeIds) {
626
+ if (typeof id !== "string")
627
+ throw new TypeError("Canvas render state node IDs must be strings.");
628
+ if (nodeIds.has(id))
629
+ hiddenNodeIds.add(id);
630
+ }
631
+ }
632
+ if (state.alignmentByNodeId !== undefined) {
633
+ const alignments = state.alignmentByNodeId;
634
+ if (!alignments || typeof alignments !== "object" || Array.isArray(alignments)) {
635
+ throw new TypeError("Canvas render state has an invalid alignment map.");
636
+ }
637
+ let count = 0;
638
+ for (const id in alignments) {
639
+ if (!Object.hasOwn(alignments, id))
640
+ continue;
641
+ count += 1;
642
+ if (count > MAX_CANVAS_RENDER_STATE_ENTRIES)
643
+ throw new TypeError("Canvas render state has too many alignments.");
644
+ const value = alignments[id];
645
+ if (!nodeIds.has(id))
646
+ continue;
647
+ if (value !== "left" && value !== "center" && value !== "right" && value !== "stretch") {
648
+ throw new TypeError("Canvas render state contains an invalid alignment.");
649
+ }
650
+ alignmentByNodeId.set(id, value);
651
+ }
652
+ }
653
+ return { hiddenNodeIds, alignmentByNodeId };
654
+ }
655
+ function presentationCanvasRoots(spec) {
656
+ const root = spec.root;
657
+ if ((root.type !== "stack" && root.type !== "grid") || root.children.length === 0)
658
+ return null;
659
+ return root.children;
660
+ }
661
+ function collectCanvasBlockReferences(root) {
662
+ const references = new Set();
663
+ const pending = [root];
664
+ while (pending.length > 0) {
665
+ const node = pending.pop();
666
+ if (!node)
667
+ continue;
668
+ if ("blockId" in node && node.blockId)
669
+ references.add(node.blockId);
670
+ if (node.type === "absolute") {
671
+ node.items.forEach(({ element }) => {
672
+ references.add(element.blockId);
673
+ });
674
+ }
675
+ else if (node.type === "columns") {
676
+ node.columns.forEach((column) => pending.push(...column));
677
+ }
678
+ else if (node.type === "stack" || node.type === "grid" || node.type === "section" || node.type === "frame") {
679
+ pending.push(...node.children);
680
+ }
681
+ }
682
+ return references;
683
+ }
684
+ function canvasKnowledgeReferences(node, hiddenNodeIds) {
685
+ if (hiddenNodeIds.has(node.id))
686
+ return [];
687
+ if (node.type === "absolute") {
688
+ return node.items.filter(({ element }) => !hiddenNodeIds.has(element.id)).map(({ element }) => element.blockId);
689
+ }
690
+ if (node.type === "columns")
691
+ return node.columns.flatMap((column) => column.flatMap((child) => canvasKnowledgeReferences(child, hiddenNodeIds)));
692
+ if (node.type === "stack" || node.type === "grid") {
693
+ return node.children.flatMap((child) => canvasKnowledgeReferences(child, hiddenNodeIds));
694
+ }
695
+ if (node.type === "section" || node.type === "frame") {
696
+ const childReferences = collectCanvasBlockReferencesFromNodes(node.children);
697
+ const anchor = node.blockId && !childReferences.has(node.blockId) ? [node.blockId] : [];
698
+ return [...anchor, ...node.children.flatMap((child) => canvasKnowledgeReferences(child, hiddenNodeIds))];
699
+ }
700
+ return isCanvasBlockElement(node) ? [node.blockId] : [];
701
+ }
702
+ function withoutNestedCanvasReferences(node, rootBlockId, references) {
703
+ return {
704
+ ...node,
705
+ children: node.children
706
+ .filter((child) => !child.id || child.id === rootBlockId || !references.has(child.id))
707
+ .map((child) => withoutNestedCanvasReferences(child, rootBlockId, references))
708
+ };
709
+ }
710
+ function isCanvasBlockElement(node) {
711
+ return node.type === "text"
712
+ || node.type === "image"
713
+ || node.type === "card"
714
+ || node.type === "divider"
715
+ || node.type === "button"
716
+ || node.type === "chart"
717
+ || node.type === "embed";
718
+ }
719
+ function collectCanvasBlockReferencesFromNodes(nodes) {
720
+ const references = new Set();
721
+ for (const node of nodes) {
722
+ for (const blockId of collectCanvasBlockReferences(node))
723
+ references.add(blockId);
724
+ }
725
+ return references;
726
+ }
727
+ function renderMarkdownNodes(nodes, depth = 0) {
728
+ if (depth > MAX_BLOCK_DEPTH)
729
+ return "";
730
+ const output = [];
731
+ for (let index = 0; index < nodes.length; index += 1) {
732
+ const node = nodes[index];
733
+ if (node.type === "bulletListItem" || node.type === "numberedListItem") {
734
+ const listType = node.type;
735
+ const items = [];
736
+ let itemNumber = 1;
737
+ while (nodes[index]?.type === listType) {
738
+ const item = nodes[index];
739
+ const marker = listType === "bulletListItem" ? "- " : itemNumber + ". ";
740
+ const itemText = markdownText(item.text);
741
+ const children = renderMarkdownNodes(item.children, depth + 1);
742
+ items.push(marker + itemText + (children ? "\n" + indentMarkdown(children, " ") : ""));
743
+ itemNumber += 1;
744
+ index += 1;
745
+ }
746
+ index -= 1;
747
+ output.push(items.join("\n"));
748
+ continue;
749
+ }
750
+ const children = renderMarkdownNodes(node.children, depth + 1);
751
+ let rendered = "";
752
+ switch (node.type) {
753
+ case "heading":
754
+ rendered = "#".repeat(headingLevel(node.level)) + " " + markdownText(node.text);
755
+ break;
756
+ case "paragraph":
757
+ rendered = markdownText(node.text);
758
+ break;
759
+ case "quote":
760
+ rendered = quoteMarkdown([markdownText(node.text), children].filter(Boolean).join("\n\n"));
761
+ break;
762
+ case "codeBlock":
763
+ rendered = fencedMarkdownCode(node.text);
764
+ break;
765
+ case "callout": {
766
+ const title = node.title ? markdownText(node.title) : "";
767
+ const body = markdownText(node.text);
768
+ rendered = quoteMarkdown([title, body, children].filter(Boolean).join("\n\n"));
769
+ break;
770
+ }
771
+ case "image": {
772
+ const url = node.src ? markdownDestination(node.src) : null;
773
+ if (url) {
774
+ rendered = "![" + markdownText(node.alt ?? "") + "](" + url + ")";
775
+ if (node.caption)
776
+ rendered += "\n\n" + markdownText(node.caption);
777
+ }
778
+ else {
779
+ rendered = markdownText(node.caption || node.alt || "");
780
+ }
781
+ break;
782
+ }
783
+ case "status":
784
+ rendered = "Status: " + markdownText(node.text);
785
+ break;
786
+ case "divider":
787
+ rendered = "---";
788
+ break;
789
+ case "columnList":
790
+ case "column":
791
+ rendered = "";
792
+ break;
793
+ default:
794
+ break;
795
+ }
796
+ if (children && node.type !== "quote" && node.type !== "callout") {
797
+ rendered = [rendered, children].filter(Boolean).join("\n\n");
798
+ }
799
+ if (rendered)
800
+ output.push(rendered);
801
+ }
802
+ return output.join("\n\n");
803
+ }
804
+ function markdownText(value) {
805
+ const normalized = value.replace(/\s+/g, " ").trim();
806
+ const htmlSafe = normalized.replace(/[&<>]/g, (character) => {
807
+ if (character === "&")
808
+ return "&amp;";
809
+ if (character === "<")
810
+ return "&lt;";
811
+ return "&gt;";
812
+ });
813
+ const escaped = new Set("\\*_{}[]()#+-.!|~".split(""));
814
+ escaped.add(String.fromCharCode(96));
815
+ return Array.from(htmlSafe, (character) => escaped.has(character) ? "\\" + character : character).join("");
816
+ }
817
+ function markdownDestination(value) {
818
+ const unsafe = new Set(["<", ">", '"', "'", "(", ")", "[", "]", "\\"]);
819
+ // A Markdown consumer may decode character references before using a URL.
820
+ if (/&(?:#(?:x[0-9a-f]+|\d+)|[a-z][a-z0-9]+);/i.test(value))
821
+ return null;
822
+ try {
823
+ return Array.from(value, (character) => /\s/u.test(character) || unsafe.has(character)
824
+ ? percentEncodeMarkdownCharacter(character)
825
+ : character).join("");
826
+ }
827
+ catch {
828
+ // A malformed surrogate cannot form a portable Markdown destination.
829
+ return null;
830
+ }
831
+ }
832
+ function percentEncodeMarkdownCharacter(character) {
833
+ const codePoint = character.codePointAt(0);
834
+ if (codePoint !== undefined && codePoint <= 0x7f) {
835
+ return "%" + codePoint.toString(16).padStart(2, "0").toUpperCase();
836
+ }
837
+ return encodeURIComponent(character);
838
+ }
839
+ function fencedMarkdownCode(value) {
840
+ const fenceCharacter = String.fromCharCode(96);
841
+ let longestFence = 0;
842
+ let currentFence = 0;
843
+ for (const character of value) {
844
+ if (character === fenceCharacter) {
845
+ currentFence += 1;
846
+ longestFence = Math.max(longestFence, currentFence);
847
+ }
848
+ else {
849
+ currentFence = 0;
850
+ }
851
+ }
852
+ const fence = fenceCharacter.repeat(Math.max(3, longestFence + 1));
853
+ return fence + "\n" + value + "\n" + fence;
854
+ }
855
+ function quoteMarkdown(value) {
856
+ return value.split("\n").map((line) => line ? "> " + line : ">").join("\n");
857
+ }
858
+ function indentMarkdown(value, prefix) {
859
+ return value.split("\n").map((line) => prefix + line).join("\n");
860
+ }
861
+ function knowledgeFromNodes(nodes, options) {
862
+ const blocks = flattenNodes(nodes)
863
+ .filter((node) => node.text.trim().length > 0)
864
+ .map((node) => ({ type: node.type, text: node.text.trim() }));
865
+ const text = blocks.map((block) => block.text).join("\n\n");
866
+ const documentTitle = blocks.find((block) => block.type === "heading")?.text;
867
+ const title = cleanText(options.title) || documentTitle || "Untitled document";
868
+ const description = cleanText(options.description)
869
+ || excerpt(blocks.find((block) => block.type === "paragraph")?.text ?? text)
870
+ || "A published document.";
871
+ return { trust: "untrusted", title, description, text, blocks };
872
+ }
873
+ function flattenNodes(nodes) {
874
+ return nodes.flatMap((node) => [node, ...flattenNodes(node.children)]);
875
+ }
876
+ function inlineText(value, depth = 0) {
877
+ if (depth > MAX_INLINE_DEPTH)
878
+ return "";
879
+ if (typeof value === "string")
880
+ return value;
881
+ if (!Array.isArray(value))
882
+ return "";
883
+ return value.map((item) => {
884
+ if (!item || typeof item !== "object" || Array.isArray(item))
885
+ return "";
886
+ const inline = item;
887
+ if (inline.type === "text" && typeof inline.text === "string")
888
+ return inline.text;
889
+ if (inline.type === "link")
890
+ return inlineText(inline.content, depth + 1);
891
+ return "";
892
+ }).join("");
893
+ }
894
+ function plainInlineText(value, depth = 0) {
895
+ return inlineText(value, depth);
896
+ }
897
+ function renderInline(value, depth = 0) {
898
+ if (depth > MAX_INLINE_DEPTH)
899
+ return "";
900
+ return escapeHtml(value);
901
+ }
902
+ function headingLevel(value) {
903
+ return typeof value === "number" && Number.isInteger(value) && value >= 1 && value <= 6
904
+ ? value
905
+ : 2;
906
+ }
907
+ function calloutVariant(value) {
908
+ return value === "warning" || value === "success" || value === "danger" ? value : "info";
909
+ }
910
+ function statusState(value) {
911
+ return value === "doing" || value === "done" || value === "blocked" ? value : "todo";
912
+ }
913
+ function stringProp(value) {
914
+ return typeof value === "string" ? value : "";
915
+ }
916
+ function cleanText(value) {
917
+ return typeof value === "string" ? value.trim() : "";
918
+ }
919
+ function excerpt(text) {
920
+ const normalized = text.replace(/\s+/g, " ").trim();
921
+ const characters = Array.from(normalized);
922
+ return characters.length > 160 ? `${characters.slice(0, 157).join("")}…` : normalized;
923
+ }
924
+ function safeLanguage(value) {
925
+ const language = cleanText(value);
926
+ return /^[a-z]{2,3}(?:-[a-z0-9]{2,8})*$/i.test(language) ? language : "en";
927
+ }
928
+ function safeColumnWidth(value) {
929
+ return typeof value === "number" && Number.isFinite(value) && value > 0
930
+ ? Math.min(value, 1000)
931
+ : 1;
932
+ }
933
+ function safeMediaUrl(value) {
934
+ if (typeof value !== "string")
935
+ return null;
936
+ const url = value.trim();
937
+ if (!url || url.startsWith("//") || /[\\\u0000-\u001f]/.test(url))
938
+ return null;
939
+ const scheme = /^([a-z][a-z\d+.-]*):/i.exec(url)?.[1]?.toLowerCase();
940
+ if (!scheme)
941
+ return url;
942
+ if (scheme !== "http" && scheme !== "https")
943
+ return null;
944
+ return safeAbsoluteHttpUrl(url);
945
+ }
946
+ function safeAbsoluteHttpUrl(value) {
947
+ if (typeof value !== "string")
948
+ return null;
949
+ const url = value.trim();
950
+ if (!url || /[\\\u0000-\u001f]/.test(url))
951
+ return null;
952
+ try {
953
+ const parsed = new URL(url);
954
+ if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") || !parsed.hostname || parsed.username || parsed.password) {
955
+ return null;
956
+ }
957
+ return url;
958
+ }
959
+ catch {
960
+ return null;
961
+ }
962
+ }
963
+ function escapeHtml(value) {
964
+ return value.replace(/[&<>"']/g, (character) => {
965
+ switch (character) {
966
+ case "&": return "&amp;";
967
+ case "<": return "&lt;";
968
+ case ">": return "&gt;";
969
+ case '"': return "&quot;";
970
+ case "'": return "&#39;";
971
+ default: return character;
972
+ }
973
+ });
974
+ }
975
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@hello-ai-company/editor-publish",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "description": "Safe HTML, Markdown, presentation, DOCX, and PDF-print exports for OpenEditor documents.",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "LICENSE",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "npm run build -w @hello-ai-company/editor-core && npm run build -w @hello-ai-company/editor-canvas && tsc -p tsconfig.build.json",
22
+ "typecheck": "npm run build -w @hello-ai-company/editor-core && npm run build -w @hello-ai-company/editor-canvas && tsc -p tsconfig.json --noEmit",
23
+ "prepack": "npm run build",
24
+ "test": "vitest run"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/hello-ai-company/open-editor.git",
29
+ "directory": "packages/publish"
30
+ },
31
+ "dependencies": {
32
+ "@hello-ai-company/editor-canvas": "^0.1.0",
33
+ "@hello-ai-company/editor-core": "^0.1.1",
34
+ "docx": "^9.7.2"
35
+ },
36
+ "publishConfig": {
37
+ "registry": "https://registry.npmjs.org",
38
+ "access": "public"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.9.2",
42
+ "vitest": "^3.2.4"
43
+ },
44
+ "engines": {
45
+ "node": ">=20"
46
+ }
47
+ }