@leadertechie/md2html 0.1.0-alpha.17 → 0.1.0-alpha.19
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/README.md +152 -2
- package/dist/index.d.ts +283 -29
- package/dist/index.js +484 -436
- package/dist/index.js.map +1 -1
- package/dist/index2.js +4 -325
- package/dist/index2.js.map +1 -1
- package/dist/lit-renderer-Bp1Q6wYL.js +790 -0
- package/dist/lit-renderer-Bp1Q6wYL.js.map +1 -0
- package/dist/lit-renderer.d.ts +46 -2
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lit-renderer-Bp1Q6wYL.js","sources":["../src/types.ts","../src/renderer-strategies.ts","../src/renderer.ts","../node_modules/lit-html/lit-html.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/unsafe-html.js","../src/lit-strategies.ts","../src/lit-renderer.ts"],"sourcesContent":["export type ContentNodeType = \n | 'text' \n | 'heading' \n | 'paragraph' \n | 'list' \n | 'list-item' \n | 'image' \n | 'code' \n | 'container'\n | 'strong'\n | 'emphasis'\n | 'link';\n\nexport interface ContentNode {\n type: ContentNodeType;\n content?: string;\n children?: ContentNode[];\n attributes?: Record<string, unknown>;\n className?: string;\n src?: string;\n alt?: string;\n ordered?: boolean;\n /** Raw HTML content for passthrough mode */\n rawHTML?: string;\n /** Scope anchor value for data-md-scope */\n scope?: string;\n}\n\nexport interface MarkdownContent {\n title: string;\n metadata?: Record<string, unknown>;\n content: ContentNode[];\n}\n\nexport interface ParseOptions {\n gfm?: boolean;\n breaks?: boolean;\n pedantic?: boolean;\n}\n\nexport interface StyleConfig {\n classPrefix?: string;\n customCSS?: string;\n addHeadingIds?: boolean;\n}\n\n/**\n * v2: Extended StyleConfig with scope anchor support.\n */\nexport interface StyleConfigV2 extends StyleConfig {\n /** Emit data-md-scope attributes for CSS @scope anchoring (default: false) */\n emitScopeAnchors?: boolean;\n}\n\nexport interface PipelineConfig {\n imagePathPrefix?: string;\n imageBaseUrl?: string;\n parseOptions?: ParseOptions;\n styleOptions?: StyleConfig | StyleConfigV2;\n}\n\n/**\n * v2: Extended PipelineConfig with raw HTML passthrough, slot hooks, and error recovery.\n */\nexport interface PipelineConfigV2 extends PipelineConfig {\n /** Optional telemetry logger for observability. Pass your own or a default console logger is used. */\n logger?: import(\"@leadertechie/telemetry\").LoggerInterface;\n styleOptions?: StyleConfigV2;\n /** Preserve raw HTML tags in markdown (img, style, div, span, etc.) (default: false) */\n preserveRawHTML?: boolean;\n /** Regex pattern for slot placeholders like [[SLOT_NAME]] (default: /\\[\\[(.*?)\\]\\]/g) */\n slotPattern?: RegExp;\n /** Callback to resolve slot values. Called with the slot name, returns replacement string. */\n onSlot?: (name: string) => string;\n /** Error recovery mode (default: 'throw' — backward compatible) */\n errorRecovery?: 'throw' | 'warn' | 'silent';\n /** Max recursion depth to prevent stack overflow (default: 100) */\n maxRecursionDepth?: number;\n /** Additional allowed HTML tags for preserveRawHTML mode */\n allowedHTMLTags?: string[];\n /**\n * Allowed HTML attributes per tag for preserveRawHTML mode.\n * Key \"*\" applies to all tags. Key \"tag\" applies to specific tags.\n * Supports \"data-*\" wildcard prefix matching.\n * Example: { \"*\": [\"id\", \"class\"], \"script\": [\"type\", \"src\"] }\n */\n allowedAttributes?: Record<string, string[]>;\n}\n\n\n/** Default allowed HTML tags for preserveRawHTML mode */\nexport const defaultAllowedHTMLTags = [\n 'img', 'style', 'div', 'span', 'section', 'article',\n 'aside', 'header', 'footer', 'nav', 'main', 'figure',\n 'figcaption', 'details', 'summary', 'mark', 'time',\n 'video', 'audio', 'source', 'iframe', 'embed'\n];\n\n/** Scope hierarchy values for data-md-scope */\nexport type ScopeValue =\n | 'root'\n | 'heading'\n | 'paragraph'\n | 'list'\n | 'list-item'\n | 'image'\n | 'code'\n | 'strong'\n | 'emphasis'\n | 'link'\n | 'container';\n\n/** Maps ContentNodeType to ScopeValue */\nexport const nodeTypeToScope: Record<ContentNodeType, ScopeValue> = {\n 'text': 'root',\n 'heading': 'heading',\n 'paragraph': 'paragraph',\n 'list': 'list',\n 'list-item': 'list-item',\n 'image': 'image',\n 'code': 'code',\n 'container': 'container',\n 'strong': 'strong',\n 'emphasis': 'emphasis',\n 'link': 'link',\n};\n","import { ContentNode } from './types.js';\n\n/**\n * Strategy interface for rendering a specific ContentNode type to HTML.\n * This is the renderer-side equivalent of TokenHandler — each node type\n * gets its own strategy, eliminating the large switch statement.\n *\n * To add support for a new node type:\n * 1. Create a class implementing NodeRendererStrategy\n * 2. Register it with the RendererStrategyRegistry\n */\nexport interface NodeRendererStrategy {\n /** The node type this strategy handles */\n readonly type: string;\n /** Render a node of this type to an HTML string */\n render(node: ContentNode, renderChild: (child: ContentNode) => string, ctx: RenderContext): string;\n}\n\n/**\n * Context passed to every render strategy, providing access to\n * shared rendering services and configuration.\n */\nexport interface RenderContext {\n classPrefix: string;\n addHeadingIds: boolean;\n emitScopeAnchors: boolean;\n customCSS: string;\n getClass(baseClass: string, nodeClass?: string): string;\n getScopeAttr(node: ContentNode): string;\n generateHeadingId(content?: string): string;\n getContainerClass(tag: string): string;\n hasClassConfig(): boolean;\n}\n\n// ─── Heading Strategy ───────────────────────────────────────────────────\n\nexport class HeadingRendererStrategy implements NodeRendererStrategy {\n readonly type = 'heading';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const level = (node.attributes?.level as string) || '2';\n const headingId = ctx.addHeadingIds \n ? ` id=\"${ctx.generateHeadingId(node.content)}\"` \n : '';\n const scopeAttr = ctx.getScopeAttr(node);\n\n if (!ctx.hasClassConfig()) {\n return `<h${level}${headingId}${scopeAttr}>${node.content || ''}</h${level}>`;\n }\n\n const prefix = ctx.classPrefix;\n const levelClass = level === '1' ? 'h1' : level === '2' ? 'h2' : level === '3' ? 'h3' : level === '4' ? 'h4' : level === '5' ? 'h5' : 'h6';\n const headingClass = prefix ? `${prefix}${levelClass}` : levelClass;\n return `<h${level}${headingId}${scopeAttr} class=\"${headingClass}\">${node.content || ''}</h${level}>`;\n }\n}\n\n// ─── Paragraph Strategy ─────────────────────────────────────────────────\n\nexport class ParagraphRendererStrategy implements NodeRendererStrategy {\n readonly type = 'paragraph';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const scopeAttr = ctx.getScopeAttr(node);\n if (node.children) {\n const childrenHtml = node.children.map(renderChild).join('');\n return ctx.hasClassConfig() && ctx.classPrefix\n ? `<p class=\"${ctx.classPrefix}paragraph\"${scopeAttr}>${childrenHtml}</p>`\n : `<p${scopeAttr}>${childrenHtml}</p>`;\n }\n return ctx.hasClassConfig() && ctx.classPrefix\n ? `<p class=\"${ctx.classPrefix}paragraph\"${scopeAttr}>${node.content || ''}</p>`\n : `<p${scopeAttr}>${node.content || ''}</p>`;\n }\n}\n\n// ─── List Strategy ──────────────────────────────────────────────────────\n\nexport class ListRendererStrategy implements NodeRendererStrategy {\n readonly type = 'list';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const tag = node.ordered ? 'ol' : 'ul';\n const items = node.children?.map(renderChild).join('') || '';\n const scopeAttr = ctx.getScopeAttr(node);\n return ctx.hasClassConfig() && ctx.classPrefix\n ? `<${tag} class=\"${ctx.classPrefix}list\"${scopeAttr}>${items}</${tag}>`\n : `<${tag}${scopeAttr}>${items}</${tag}>`;\n }\n}\n\n// ─── List Item Strategy ─────────────────────────────────────────────────\n\nexport class ListItemRendererStrategy implements NodeRendererStrategy {\n readonly type = 'list-item';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const scopeAttr = ctx.getScopeAttr(node);\n return ctx.hasClassConfig() && ctx.classPrefix\n ? `<li class=\"${ctx.classPrefix}list-item\"${scopeAttr}>${node.content || ''}</li>`\n : `<li${scopeAttr}>${node.content || ''}</li>`;\n }\n}\n\n// ─── Image Strategy ─────────────────────────────────────────────────────\n\nexport class ImageRendererStrategy implements NodeRendererStrategy {\n readonly type = 'image';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const src = node.src || (node.attributes?.src as string) || '';\n const alt = node.alt || (node.attributes?.alt as string) || '';\n const scopeAttr = ctx.getScopeAttr(node);\n let classStr = '';\n if (ctx.hasClassConfig()) {\n const prefix = ctx.classPrefix;\n classStr = prefix ? `${prefix}image` : 'image';\n if (node.className) classStr += ` ${node.className}`;\n return `<img src=\"${src}\" alt=\"${alt}\" class=\"${classStr}\"${scopeAttr}>`;\n }\n if (node.className) {\n return `<img src=\"${src}\" alt=\"${alt}\" class=\"${node.className}\"${scopeAttr}>`;\n }\n return `<img src=\"${src}\" alt=\"${alt}\"${scopeAttr}>`;\n }\n}\n\n// ─── Code Strategy ──────────────────────────────────────────────────────\n\nexport class CodeRendererStrategy implements NodeRendererStrategy {\n readonly type = 'code';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const scopeAttr = ctx.getScopeAttr(node);\n const lang = (node.attributes?.lang as string) || '';\n if (ctx.hasClassConfig()) {\n const prefix = ctx.classPrefix;\n const codeClass = prefix ? `${prefix}code` : 'code';\n return `<pre${scopeAttr}><code class=\"${codeClass} language-${lang}\">${node.content || ''}</code></pre>`;\n }\n return `<pre${scopeAttr}><code class=\"language-${lang}\">${node.content || ''}</code></pre>`;\n }\n}\n\n// ─── Container Strategy ─────────────────────────────────────────────────\n\nexport class ContainerRendererStrategy implements NodeRendererStrategy {\n readonly type = 'container';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n // If node has rawHTML, emit it directly (passthrough mode)\n if (node.rawHTML) {\n return node.rawHTML;\n }\n\n const tag = (node.attributes?.tag as string) || 'div';\n const children = node.children?.map(renderChild).join('') || '';\n const id = node.attributes?.id as string;\n const idAttr = id ? ` id=\"${id}\"` : '';\n const scopeAttr = ctx.getScopeAttr(node);\n\n // Self-closing tags\n if (tag === 'hr') return '<hr>';\n\n if (ctx.hasClassConfig()) {\n const containerClass = ctx.getContainerClass(tag);\n const prefix = ctx.classPrefix;\n // If we have a classPrefix, use prefixed tag name as class\n if (prefix) {\n const classes = [prefix + (containerClass || 'container')];\n if (node.className) classes.push(node.className);\n return `<${tag} class=\"${classes.join(' ')}\"${idAttr}${scopeAttr}>${children}</${tag}>`;\n }\n // No prefix, use the default container class\n const classes = [containerClass || 'container'];\n if (node.className) classes.push(node.className);\n return `<${tag} class=\"${classes.join(' ')}\"${idAttr}${scopeAttr}>${children}</${tag}>`;\n }\n\n // No class config at all\n if (node.className) {\n return `<${tag} class=\"${node.className}\"${idAttr}${scopeAttr}>${children}</${tag}>`;\n }\n return `<${tag}${idAttr}${scopeAttr}>${children}</${tag}>`;\n }\n}\n\n// ─── Strong Strategy ────────────────────────────────────────────────────\n\nexport class StrongRendererStrategy implements NodeRendererStrategy {\n readonly type = 'strong';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n return `<strong${ctx.getScopeAttr(node)}>${node.content || ''}</strong>`;\n }\n}\n\n// ─── Emphasis Strategy ──────────────────────────────────────────────────\n\nexport class EmphasisRendererStrategy implements NodeRendererStrategy {\n readonly type = 'emphasis';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n return `<em${ctx.getScopeAttr(node)}>${node.content || ''}</em>`;\n }\n}\n\n// ─── Link Strategy ──────────────────────────────────────────────────────\n\nexport class LinkRendererStrategy implements NodeRendererStrategy {\n readonly type = 'link';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, ctx: RenderContext): string {\n const href = node.attributes?.href || '';\n return `<a href=\"${href}\"${ctx.getScopeAttr(node)}>${node.content || ''}</a>`;\n }\n}\n\n// ─── Text Strategy (fallback) ───────────────────────────────────────────\n\nexport class TextRendererStrategy implements NodeRendererStrategy {\n readonly type = 'text';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => string, _ctx: RenderContext): string {\n return node.content || '';\n }\n}\n\n// ─── Registry ───────────────────────────────────────────────────────────\n\n/**\n * Registry of renderer strategies. Maps ContentNode types to their\n * rendering strategy. This is the renderer-side equivalent of\n * TokenHandlerRegistry.\n *\n * The registry uses a two-tier lookup:\n * 1. Check for a dedicated strategy by node type\n * 2. Fall back to the catch-all strategy (registered as '*')\n */\nexport class RendererStrategyRegistry {\n private strategies = new Map<string, NodeRendererStrategy>();\n private fallback: NodeRendererStrategy;\n\n constructor() {\n // Register all built-in strategies\n this.register(new HeadingRendererStrategy());\n this.register(new ParagraphRendererStrategy());\n this.register(new ListRendererStrategy());\n this.register(new ListItemRendererStrategy());\n this.register(new ImageRendererStrategy());\n this.register(new CodeRendererStrategy());\n this.register(new ContainerRendererStrategy());\n this.register(new StrongRendererStrategy());\n this.register(new EmphasisRendererStrategy());\n this.register(new LinkRendererStrategy());\n this.register(new TextRendererStrategy());\n\n // Fallback renders the content as plain text\n this.fallback = new TextRendererStrategy();\n }\n\n /** Register a strategy for a node type. Overrides any existing strategy. */\n register(strategy: NodeRendererStrategy): void {\n this.strategies.set(strategy.type, strategy);\n }\n\n /** Unregister a strategy by node type. */\n unregister(type: string): void {\n this.strategies.delete(type);\n }\n\n /** Get a strategy for the given node type, falling back to catch-all. */\n get(type: string): NodeRendererStrategy {\n return this.strategies.get(type) ?? this.fallback;\n }\n\n /** Check if a dedicated strategy exists for the given node type. */\n has(type: string): boolean {\n return this.strategies.has(type);\n }\n\n /** Get all registered dedicated strategy types. */\n get types(): string[] {\n return Array.from(this.strategies.keys());\n }\n\n /** Replace the fallback strategy. */\n setFallback(strategy: NodeRendererStrategy): void {\n this.fallback = strategy;\n }\n}\n","import { ContentNode, StyleConfigV2, nodeTypeToScope } from './types.js';\nimport { RendererStrategyRegistry, RenderContext } from './renderer-strategies.js';\n\nexport { RendererStrategyRegistry } from './renderer-strategies.js';\nexport type { NodeRendererStrategy, RenderContext } from './renderer-strategies.js';\n\nexport class HTMLRenderer {\n private config: Required<StyleConfigV2>;\n private strategyRegistry: RendererStrategyRegistry;\n\n constructor(config: StyleConfigV2 = {}) {\n this.config = {\n classPrefix: config.classPrefix || '',\n customCSS: config.customCSS || '',\n addHeadingIds: config.addHeadingIds ?? false,\n emitScopeAnchors: config.emitScopeAnchors ?? false\n };\n this.strategyRegistry = new RendererStrategyRegistry();\n }\n\n /** Access the strategy registry for customization. */\n get strategies(): RendererStrategyRegistry {\n return this.strategyRegistry;\n }\n\n private hasClassConfig(): boolean {\n return this.config.classPrefix !== '' || this.config.addHeadingIds;\n }\n\n private getClass(baseClass: string, nodeClass?: string): string {\n if (!this.hasClassConfig()) {\n return nodeClass || '';\n }\n const prefix = this.config.classPrefix;\n const classes = [prefix ? `${prefix}${baseClass}` : baseClass];\n if (nodeClass) classes.push(nodeClass);\n return classes.join(' ');\n }\n\n private generateHeadingId(content?: string): string {\n if (!content) return '';\n return content\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/(^-|-$)/g, '');\n }\n\n /**\n * Get the scope attribute string for a node type.\n * Returns empty string if emitScopeAnchors is disabled.\n */\n private getScopeAttr(node: ContentNode): string {\n if (!this.config.emitScopeAnchors) return '';\n const scopeValue = node.scope || nodeTypeToScope[node.type] || 'container';\n return ` data-md-scope=\"${scopeValue}\"`;\n }\n\n /**\n * Get the CSS class for a container's tag-based rendering.\n * Returns just the tag name since renderWithClass applies the prefix.\n */\n private getContainerClass(tag: string): string {\n if (!this.hasClassConfig()) return '';\n return tag;\n }\n\n private buildRenderContext(): RenderContext {\n const self = this;\n return {\n get classPrefix() { return self.config.classPrefix; },\n get addHeadingIds() { return self.config.addHeadingIds; },\n get emitScopeAnchors() { return self.config.emitScopeAnchors; },\n get customCSS() { return self.config.customCSS; },\n hasClassConfig: () => self.hasClassConfig(),\n getClass: (baseClass: string, nodeClass?: string) => self.getClass(baseClass, nodeClass),\n getScopeAttr: (node: ContentNode) => self.getScopeAttr(node),\n generateHeadingId: (content?: string) => self.generateHeadingId(content),\n getContainerClass: (tag: string) => self.getContainerClass(tag)\n };\n }\n\n renderNode(node: ContentNode): string {\n const ctx = this.buildRenderContext();\n const strategy = this.strategyRegistry.get(node.type);\n return strategy.render(node, (child) => this.renderNode(child), ctx);\n }\n\n renderNodes(nodes: ContentNode[]): string {\n if (!nodes || nodes.length === 0) {\n return '';\n }\n // Wrap in scope root if emitScopeAnchors is enabled\n if (this.config.emitScopeAnchors) {\n const inner = nodes.map(node => this.renderNode(node)).join('\\n');\n return `<div data-md-scope=\"root\">\\n${inner}\\n</div>`;\n }\n return nodes.map(node => this.renderNode(node)).join('\\n');\n }\n\n renderToHTMLString(nodes: ContentNode[]): string {\n return this.renderNodes(nodes);\n }\n\n render(markdown: string): string {\n return markdown;\n }\n\n getCustomCSS(): string {\n return this.config.customCSS;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","/**\n * Lit Renderer Strategies\n *\n * Each ContentNode type gets its own Lit strategy for rendering to a\n * TemplateResult. This mirrors the NodeRendererStrategy pattern from\n * renderer-strategies.ts, but outputs Lit TemplateResult objects instead\n * of plain HTML strings.\n *\n * New node types can be supported by:\n * 1. Creating a class implementing LitNodeRendererStrategy\n * 2. Registering it with the LitStrategyRegistry\n */\n\nimport { TemplateResult, html } from 'lit';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { ContentNode } from './types.js';\n\n// ─── Strategy Interface ───────────────────────────────────────────────────────\n\nexport interface LitNodeRendererStrategy {\n /** The ContentNode type this strategy handles */\n readonly type: string;\n /** Render a node to a Lit TemplateResult */\n render(node: ContentNode, renderChild: (child: ContentNode) => TemplateResult): TemplateResult;\n}\n\n// ─── Registry ─────────────────────────────────────────────────────────────────\n\n/**\n * Registry of Lit renderer strategies.\n *\n * Two-tier lookup:\n * 1. Dedicated strategy by node type\n * 2. Fallback to a catch-all strategy (default: renders empty)\n */\nexport class LitStrategyRegistry {\n private strategies = new Map<string, LitNodeRendererStrategy>();\n private fallback: LitNodeRendererStrategy;\n\n constructor() {\n // Register all built-in strategies\n this.register(new LitHeadingStrategy());\n this.register(new LitParagraphStrategy());\n this.register(new LitListStrategy());\n this.register(new LitListItemStrategy());\n this.register(new LitImageStrategy());\n this.register(new LitCodeStrategy());\n this.register(new LitContainerStrategy());\n this.register(new LitStrongStrategy());\n this.register(new LitEmphasisStrategy());\n this.register(new LitLinkStrategy());\n this.register(new LitTextStrategy());\n\n this.fallback = new LitFallbackStrategy();\n }\n\n register(strategy: LitNodeRendererStrategy): void {\n this.strategies.set(strategy.type, strategy);\n }\n\n unregister(type: string): void {\n this.strategies.delete(type);\n }\n\n get(type: string): LitNodeRendererStrategy {\n return this.strategies.get(type) ?? this.fallback;\n }\n\n has(type: string): boolean {\n return this.strategies.has(type);\n }\n\n get types(): string[] {\n return Array.from(this.strategies.keys());\n }\n\n setFallback(strategy: LitNodeRendererStrategy): void {\n this.fallback = strategy;\n }\n}\n\n// ─── Heading Strategy ─────────────────────────────────────────────────────────\n\nexport class LitHeadingStrategy implements LitNodeRendererStrategy {\n readonly type = 'heading';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n const level = (node.attributes?.level as string) || '2';\n switch (level) {\n case '1': return html`<h1>${unsafeHTML(node.content || '')}</h1>`;\n case '2': return html`<h2>${unsafeHTML(node.content || '')}</h2>`;\n case '3': return html`<h3>${unsafeHTML(node.content || '')}</h3>`;\n default: return html`<h2>${unsafeHTML(node.content || '')}</h2>`;\n }\n }\n}\n\n// ─── Paragraph Strategy ───────────────────────────────────────────────────────\n\nexport class LitParagraphStrategy implements LitNodeRendererStrategy {\n readonly type = 'paragraph';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n if (node.children) {\n return html`<p>${node.children.map(child => renderChild(child))}</p>`;\n }\n return html`<p>${unsafeHTML(node.content || '')}</p>`;\n }\n}\n\n// ─── List Strategy ────────────────────────────────────────────────────────────\n\nexport class LitListStrategy implements LitNodeRendererStrategy {\n readonly type = 'list';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html`<ul>${node.children?.map(child => renderChild(child))}</ul>`;\n }\n}\n\n// ─── List Item Strategy ───────────────────────────────────────────────────────\n\nexport class LitListItemStrategy implements LitNodeRendererStrategy {\n readonly type = 'list-item';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html`<li>${unsafeHTML(node.content || '')}</li>`;\n }\n}\n\n// ─── Image Strategy ───────────────────────────────────────────────────────────\n\nexport class LitImageStrategy implements LitNodeRendererStrategy {\n readonly type = 'image';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n const src = node.src || (node.attributes?.src as string) || '';\n const alt = node.alt || (node.attributes?.alt as string) || '';\n const className = node.className || 'inline-image';\n return html`<img src=\"${src}\" alt=\"${alt}\" class=\"${className}\" style=\"max-width:100%;height:auto;\">`;\n }\n}\n\n// ─── Code Strategy ────────────────────────────────────────────────────────────\n\nexport class LitCodeStrategy implements LitNodeRendererStrategy {\n readonly type = 'code';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n const lang = (node.attributes?.lang as string) || '';\n return html`<pre><code class=\"language-${lang}\">${node.content || ''}</code></pre>`;\n }\n}\n\n// ─── Container Strategy ───────────────────────────────────────────────────────\n\nexport class LitContainerStrategy implements LitNodeRendererStrategy {\n readonly type = 'container';\n\n render(node: ContentNode, renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n const className = node.className || '';\n const style = (node.attributes?.style as string) || '';\n return html`<div class=\"${className}\" style=\"${style}\">\n ${node.children?.map(child => renderChild(child))}\n </div>`;\n }\n}\n\n// ─── Strong Strategy ──────────────────────────────────────────────────────────\n\nexport class LitStrongStrategy implements LitNodeRendererStrategy {\n readonly type = 'strong';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html`<strong>${unsafeHTML(node.content || '')}</strong>`;\n }\n}\n\n// ─── Emphasis Strategy ────────────────────────────────────────────────────────\n\nexport class LitEmphasisStrategy implements LitNodeRendererStrategy {\n readonly type = 'emphasis';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html`<em>${unsafeHTML(node.content || '')}</em>`;\n }\n}\n\n// ─── Link Strategy ────────────────────────────────────────────────────────────\n\nexport class LitLinkStrategy implements LitNodeRendererStrategy {\n readonly type = 'link';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n const href = node.attributes?.href || '';\n return html`<a href=\"${href}\">${unsafeHTML(node.content || '')}</a>`;\n }\n}\n\n// ─── Text Strategy ────────────────────────────────────────────────────────────\n\nexport class LitTextStrategy implements LitNodeRendererStrategy {\n readonly type = 'text';\n\n render(node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html`${node.content || ''}`;\n }\n}\n\n// ─── Fallback Strategy ────────────────────────────────────────────────────────\n\nexport class LitFallbackStrategy implements LitNodeRendererStrategy {\n readonly type = '*';\n\n render(_node: ContentNode, _renderChild: (child: ContentNode) => TemplateResult): TemplateResult {\n return html``;\n }\n}\n","/**\n * Lit Renderer\n *\n * Renders ContentNode trees to Lit TemplateResult objects using the\n * LitNodeRendererStrategy pattern. This mirrors HTMLRenderer but\n * outputs Lit-compatible template results for use in Lit elements.\n *\n * Uses the same Strategy + Registry pattern as renderer-strategies.ts,\n * eliminating the previous switch-based duplication.\n *\n * To extend with custom node types, register your strategy with:\n * litRenderer.strategies.register(new MyLitStrategy());\n */\n\nimport { TemplateResult, html } from 'lit';\nimport { ContentNode } from './types.js';\nimport { LitStrategyRegistry } from './lit-strategies.js';\nimport { HTMLRenderer } from './renderer.js';\n\nexport { LitStrategyRegistry } from './lit-strategies.js';\nexport type { LitNodeRendererStrategy } from './lit-strategies.js';\n\nexport class LitRenderer {\n private strategyRegistry: LitStrategyRegistry;\n /** Lazily created HTMLRenderer for string output, sharing the same config */\n private htmlRenderer?: HTMLRenderer;\n\n constructor() {\n this.strategyRegistry = new LitStrategyRegistry();\n }\n\n /** Access the strategy registry for customization. */\n get strategies(): LitStrategyRegistry {\n return this.strategyRegistry;\n }\n\n /**\n * Render a single node to a Lit TemplateResult.\n */\n renderNode(node: ContentNode): TemplateResult {\n const strategy = this.strategyRegistry.get(node.type);\n return strategy.render(node, (child) => this.renderNode(child));\n }\n\n /**\n * Render an array of nodes to a single Lit TemplateResult.\n */\n renderNodes(nodes: ContentNode[]): TemplateResult {\n if (!nodes || nodes.length === 0) {\n return html``;\n }\n return html`${nodes.map(node => this.renderNode(node))}`;\n }\n\n /**\n * Render nodes to a plain HTML string.\n * Delegates to HTMLRenderer to avoid duplicating string rendering logic.\n *\n * Note: Uses default HTMLRenderer config (no classPrefix, scope anchors,\n * or heading IDs). For full HTML rendering with those features,\n * use HTMLRenderer directly.\n */\n renderToHTMLString(nodes: ContentNode[]): string {\n if (!nodes || nodes.length === 0) {\n return '';\n }\n if (!this.htmlRenderer) {\n this.htmlRenderer = new HTMLRenderer();\n }\n return this.htmlRenderer.renderNodes(nodes);\n }\n}\n\n"],"names":["classes","t","i","e","o","s","n","l","c","a","u","d","f","r","v","h","unsafeHTML"],"mappings":"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","x_google_ignoreList":[3,4,5]}
|
package/dist/lit-renderer.d.ts
CHANGED
|
@@ -17,12 +17,56 @@ declare interface ContentNode {
|
|
|
17
17
|
|
|
18
18
|
declare type ContentNodeType = 'text' | 'heading' | 'paragraph' | 'list' | 'list-item' | 'image' | 'code' | 'container' | 'strong' | 'emphasis' | 'link';
|
|
19
19
|
|
|
20
|
+
export declare interface LitNodeRendererStrategy {
|
|
21
|
+
/** The ContentNode type this strategy handles */
|
|
22
|
+
readonly type: string;
|
|
23
|
+
/** Render a node to a Lit TemplateResult */
|
|
24
|
+
render(node: ContentNode, renderChild: (child: ContentNode) => TemplateResult): TemplateResult;
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
export declare class LitRenderer {
|
|
21
|
-
private
|
|
28
|
+
private strategyRegistry;
|
|
29
|
+
/** Lazily created HTMLRenderer for string output, sharing the same config */
|
|
30
|
+
private htmlRenderer?;
|
|
31
|
+
constructor();
|
|
32
|
+
/** Access the strategy registry for customization. */
|
|
33
|
+
get strategies(): LitStrategyRegistry;
|
|
34
|
+
/**
|
|
35
|
+
* Render a single node to a Lit TemplateResult.
|
|
36
|
+
*/
|
|
22
37
|
renderNode(node: ContentNode): TemplateResult;
|
|
38
|
+
/**
|
|
39
|
+
* Render an array of nodes to a single Lit TemplateResult.
|
|
40
|
+
*/
|
|
23
41
|
renderNodes(nodes: ContentNode[]): TemplateResult;
|
|
42
|
+
/**
|
|
43
|
+
* Render nodes to a plain HTML string.
|
|
44
|
+
* Delegates to HTMLRenderer to avoid duplicating string rendering logic.
|
|
45
|
+
*
|
|
46
|
+
* Note: Uses default HTMLRenderer config (no classPrefix, scope anchors,
|
|
47
|
+
* or heading IDs). For full HTML rendering with those features,
|
|
48
|
+
* use HTMLRenderer directly.
|
|
49
|
+
*/
|
|
24
50
|
renderToHTMLString(nodes: ContentNode[]): string;
|
|
25
|
-
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Registry of Lit renderer strategies.
|
|
55
|
+
*
|
|
56
|
+
* Two-tier lookup:
|
|
57
|
+
* 1. Dedicated strategy by node type
|
|
58
|
+
* 2. Fallback to a catch-all strategy (default: renders empty)
|
|
59
|
+
*/
|
|
60
|
+
export declare class LitStrategyRegistry {
|
|
61
|
+
private strategies;
|
|
62
|
+
private fallback;
|
|
63
|
+
constructor();
|
|
64
|
+
register(strategy: LitNodeRendererStrategy): void;
|
|
65
|
+
unregister(type: string): void;
|
|
66
|
+
get(type: string): LitNodeRendererStrategy;
|
|
67
|
+
has(type: string): boolean;
|
|
68
|
+
get types(): string[];
|
|
69
|
+
setFallback(strategy: LitNodeRendererStrategy): void;
|
|
26
70
|
}
|
|
27
71
|
|
|
28
72
|
export { }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leadertechie/md2html",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
4
|
"description": "Markdown to HTML pipeline - parse markdown to AST, render to HTML or Lit templates",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"test": "vitest run"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"@leadertechie/telemetry": "^0.0.0",
|
|
25
26
|
"marked": "^15.0.0"
|
|
26
27
|
},
|
|
27
28
|
"peerDependencies": {
|