@gilav21/shadcn-angular-rte 0.1.2 → 0.2.1
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 +43 -27
- package/fesm2022/{gilav21-shadcn-angular-rte-docx-parser-B8BeJWtY.mjs → gilav21-shadcn-angular-rte-docx-parser-DiBPweI4.mjs} +63 -38
- package/fesm2022/gilav21-shadcn-angular-rte-docx-parser-DiBPweI4.mjs.map +1 -0
- package/fesm2022/{gilav21-shadcn-angular-rte-docx-to-editor-html-Cl9eIhkC.mjs → gilav21-shadcn-angular-rte-docx-to-editor-html-BreagmS_.mjs} +43 -33
- package/fesm2022/gilav21-shadcn-angular-rte-docx-to-editor-html-BreagmS_.mjs.map +1 -0
- package/fesm2022/{gilav21-shadcn-angular-rte-gilav21-shadcn-angular-rte-CfjU_y-y.mjs → gilav21-shadcn-angular-rte-gilav21-shadcn-angular-rte-BnEAQOuU.mjs} +3561 -1901
- package/fesm2022/gilav21-shadcn-angular-rte-gilav21-shadcn-angular-rte-BnEAQOuU.mjs.map +1 -0
- package/fesm2022/gilav21-shadcn-angular-rte-markup-safety-qJk8EoPk.mjs +69 -0
- package/fesm2022/gilav21-shadcn-angular-rte-markup-safety-qJk8EoPk.mjs.map +1 -0
- package/fesm2022/{gilav21-shadcn-angular-rte-pdf-readable-DmE-CIxv.mjs → gilav21-shadcn-angular-rte-pdf-readable-JvCpuNQH.mjs} +445 -124
- package/fesm2022/gilav21-shadcn-angular-rte-pdf-readable-JvCpuNQH.mjs.map +1 -0
- package/fesm2022/gilav21-shadcn-angular-rte.mjs +1 -1
- package/package.json +6 -2
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.cjs +169 -0
- package/schematics/ng-add/schema.json +13 -0
- package/styles.css +2 -0
- package/types/gilav21-shadcn-angular-rte.d.ts +365 -114
- package/types/gilav21-shadcn-angular-rte.d.ts.map +1 -1
- package/fesm2022/gilav21-shadcn-angular-rte-docx-parser-B8BeJWtY.mjs.map +0 -1
- package/fesm2022/gilav21-shadcn-angular-rte-docx-to-editor-html-Cl9eIhkC.mjs.map +0 -1
- package/fesm2022/gilav21-shadcn-angular-rte-gilav21-shadcn-angular-rte-CfjU_y-y.mjs.map +0 -1
- package/fesm2022/gilav21-shadcn-angular-rte-pdf-readable-DmE-CIxv.mjs.map +0 -1
- package/theme.css +0 -159
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gilav21-shadcn-angular-rte-docx-to-editor-html-Cl9eIhkC.mjs","sources":["../../../packages/rte-package/src/lib/parsers/docx-to-editor-html.ts"],"sourcesContent":["import type {\n DocxParseResult,\n DocxElement,\n DocxParagraph,\n DocxTable,\n DocxImage,\n DocxRun,\n DocxRunStyle,\n DocxTableCell,\n DocxTableRow,\n DocxBorder,\n DocxTableBorder,\n DocxParagraphBorders,\n DocxTableCellStyle,\n DocxTableStyle,\n} from './docx-parser';\n\n/**\n * Renders a DocxParseResult into inline-styled HTML suitable for\n * insertion into the rich text editor. Uses only inline styles\n * (no Tailwind classes) so the editor sanitizer preserves them.\n */\nexport function renderDocxForEditor(result: DocxParseResult): string {\n return renderElements(result.elements);\n}\n\nfunction renderElements(elements: ReadonlyArray<DocxElement>): string {\n const parts: string[] = [];\n let i = 0;\n\n while (i < elements.length) {\n const el = elements[i];\n\n if (el.type === 'paragraph' && el.listLevel != null && el.listType) {\n i = renderListGroup(elements, i, parts);\n } else if (el.type === 'paragraph') {\n parts.push(renderParagraph(el));\n i++;\n } else if (el.type === 'table') {\n parts.push(renderTable(el));\n i++;\n } else {\n parts.push(renderImage(el));\n i++;\n }\n }\n\n return parts.join('');\n}\n\n// --- List grouping ---\n\nfunction hasNestedListChild(\n elements: ReadonlyArray<DocxElement>,\n index: number,\n baseLevel: number,\n): boolean {\n if (index + 1 >= elements.length) return false;\n const next = elements[index + 1];\n return next.type === 'paragraph' &&\n next.listLevel != null &&\n next.listType != null &&\n next.listLevel > baseLevel;\n}\n\nfunction renderListGroup(\n elements: ReadonlyArray<DocxElement>,\n startIndex: number,\n output: string[],\n): number {\n const first = elements[startIndex];\n if (first.type !== 'paragraph') return startIndex;\n const listType = first.listType ?? 'bullet';\n const baseLevel = first.listLevel ?? 0;\n const tag = listType === 'numbered' ? 'ol' : 'ul';\n\n output.push(`<${tag}>`);\n let i = startIndex;\n\n while (i < elements.length) {\n const el = elements[i];\n if (el.type !== 'paragraph' || el.listLevel == null || el.listType == null) break;\n if (el.listLevel < baseLevel) break;\n\n if (el.listLevel === baseLevel && el.listType === listType) {\n i = renderListItem(elements, i, baseLevel, output);\n } else if (el.listLevel > baseLevel) {\n i = renderListGroup(elements, i, output);\n } else {\n break;\n }\n }\n\n output.push(`</${tag}>`);\n return i;\n}\n\nfunction renderListItem(\n elements: ReadonlyArray<DocxElement>,\n index: number,\n baseLevel: number,\n output: string[],\n): number {\n const el = elements[index];\n if (el.type !== 'paragraph') return index + 1;\n output.push(`<li>${renderRuns(el.runs)}`);\n\n if (hasNestedListChild(elements, index, baseLevel)) {\n const nextIndex = renderListGroup(elements, index + 1, output);\n output.push('</li>');\n return nextIndex;\n }\n\n output.push('</li>');\n return index + 1;\n}\n\n// --- Paragraph rendering ---\n\nfunction renderParagraph(p: DocxParagraph): string {\n const pageBreak = p.runs.some(r => r.breakType === 'page');\n let prefix = '';\n if (pageBreak) {\n prefix = '<hr>';\n }\n\n const dirAttr = p.rtl ? ' dir=\"rtl\"' : '';\n const content = renderRuns(p.runs) || '<br>';\n\n const headingMatch = /^Heading(\\d)$/i.exec(p.style);\n if (headingMatch) {\n const level = Math.min(Number(headingMatch[1]), 6);\n const tag = `h${level}`;\n const styleAttr = buildParagraphStyle(p);\n const styleStr = styleAttr ? ` style=\"${styleAttr}\"` : '';\n return `${prefix}<${tag}${dirAttr}${styleStr}>${content}</${tag}>`;\n }\n\n const styleAttr = buildParagraphStyle(p);\n const styleStr = styleAttr ? ` style=\"${styleAttr}\"` : '';\n return `${prefix}<p${dirAttr}${styleStr}>${content}</p>`;\n}\n\nfunction buildParagraphStyle(p: DocxParagraph): string {\n const styles: string[] = [];\n\n if (p.alignment) {\n styles.push(`text-align:${p.alignment}`);\n }\n if (p.spacingBefore != null) {\n styles.push(`margin-top:${formatPt(p.spacingBefore)}pt`);\n }\n if (p.spacingAfter != null) {\n styles.push(`margin-bottom:${formatPt(p.spacingAfter)}pt`);\n }\n if (p.indentLeft != null) {\n styles.push(`margin-left:${formatPt(p.indentLeft)}pt`);\n }\n if (p.indentRight != null) {\n styles.push(`margin-right:${formatPt(p.indentRight)}pt`);\n }\n if (p.indentFirstLine != null) {\n styles.push(`text-indent:${formatPt(p.indentFirstLine)}pt`);\n }\n if (p.indentHanging != null && p.indentFirstLine == null) {\n styles.push(`text-indent:-${formatPt(p.indentHanging)}pt`);\n }\n if (p.lineSpacing != null) {\n if (p.lineSpacing > 4) {\n styles.push(`line-height:${p.lineSpacing.toFixed(1)}pt`);\n } else {\n styles.push(`line-height:${p.lineSpacing.toFixed(2)}`);\n }\n }\n if (p.shading) {\n styles.push(`background-color:${p.shading}`);\n }\n if (p.borders) {\n appendParagraphBorders(styles, p.borders);\n }\n\n return styles.join(';');\n}\n\nfunction appendParagraphBorders(styles: string[], borders: DocxParagraphBorders): void {\n if (borders.top) styles.push(`border-top:${formatBorder(borders.top)}`);\n if (borders.bottom) styles.push(`border-bottom:${formatBorder(borders.bottom)}`);\n if (borders.left) styles.push(`border-left:${formatBorder(borders.left)}`);\n if (borders.right) styles.push(`border-right:${formatBorder(borders.right)}`);\n if (borders.top || borders.bottom || borders.left || borders.right) {\n styles.push('padding:2pt 4pt');\n }\n}\n\nfunction formatBorder(b: DocxBorder | DocxTableBorder): string {\n const widthPt = Math.max(b.size, 0.5);\n const style = mapBorderStyle(b.style);\n return `${widthPt}pt ${style} ${b.color}`;\n}\n\nconst DASHED_BORDER_STYLES = new Set(['dashed', 'dashDotStroked', 'dashSmallGap']);\nconst DOTTED_BORDER_STYLES = new Set(['dotted', 'dotDash', 'dotDotDash']);\nconst DOUBLE_BORDER_STYLES = new Set([\n 'double', 'triple', 'thinThickSmallGap', 'thickThinSmallGap',\n 'thinThickMediumGap', 'thickThinMediumGap', 'thinThickLargeGap', 'thickThinLargeGap',\n]);\n\nfunction mapBorderStyle(docxStyle: string): string {\n if (DASHED_BORDER_STYLES.has(docxStyle)) return 'dashed';\n if (DOTTED_BORDER_STYLES.has(docxStyle)) return 'dotted';\n if (DOUBLE_BORDER_STYLES.has(docxStyle)) return 'double';\n if (docxStyle === 'none' || docxStyle === 'nil') return 'none';\n return 'solid';\n}\n\n// --- Run rendering ---\n\nfunction renderRuns(runs: ReadonlyArray<DocxRun>): string {\n const parts: string[] = [];\n\n for (const run of runs) {\n if (run.style.hidden) continue;\n if (run.breakType === 'page') continue;\n if (run.breakType === 'textWrapping' || run.breakType === 'column') {\n parts.push('<br>');\n continue;\n }\n\n let html = escapeHtml(run.text);\n\n html = applyRunFormatting(html, run.style);\n html = applyTrackChanges(html, run);\n html = applyHyperlink(html, run);\n\n parts.push(html);\n }\n\n return parts.join('');\n}\n\nfunction applyRunFormatting(html: string, style: DocxRunStyle): string {\n let result = html;\n\n if (style.bold) result = `<strong>${result}</strong>`;\n if (style.italic) result = `<em>${result}</em>`;\n if (style.underline) result = `<u>${result}</u>`;\n if (style.strikethrough) result = `<s>${result}</s>`;\n if (style.doubleStrikethrough) {\n result = `<s style=\"text-decoration-style:double\">${result}</s>`;\n }\n if (style.vertAlign === 'superscript') result = `<sup>${result}</sup>`;\n if (style.vertAlign === 'subscript') result = `<sub>${result}</sub>`;\n\n const spanStyle = buildRunSpanStyle(style);\n const dirAttr = style.rtl ? ' dir=\"rtl\"' : '';\n if (spanStyle || dirAttr) {\n const styleAttr = spanStyle ? ` style=\"${spanStyle}\"` : '';\n result = `<span${dirAttr}${styleAttr}>${result}</span>`;\n }\n\n return result;\n}\n\nfunction buildRunSpanStyle(style: DocxRunStyle): string {\n const parts: string[] = [];\n\n if (style.color) parts.push(`color:${style.color}`);\n if (style.fontSize) parts.push(`font-size:${style.fontSize}pt`);\n if (style.fontFamily) parts.push(`font-family:${escapeAttr(style.fontFamily)}`);\n if (style.highlight) parts.push(`background-color:${style.highlight}`);\n if (style.backgroundColor) parts.push(`background-color:${style.backgroundColor}`);\n if (style.charSpacing) parts.push(`letter-spacing:${formatPt(style.charSpacing)}pt`);\n if (style.smallCaps) parts.push('font-variant:small-caps');\n if (style.caps) parts.push('text-transform:uppercase');\n\n return parts.join(';');\n}\n\nfunction applyTrackChanges(html: string, run: DocxRun): string {\n if (run.isInserted) return `<ins>${html}</ins>`;\n if (run.isDeleted) return `<del>${html}</del>`;\n return html;\n}\n\nfunction applyHyperlink(html: string, run: DocxRun): string {\n if (run.href) {\n return `<a href=\"${escapeAttr(run.href)}\" target=\"_blank\" rel=\"noopener noreferrer\">${html}</a>`;\n }\n return html;\n}\n\n// --- Image rendering ---\n\nfunction renderImage(img: DocxImage): string {\n const widthAttr = img.width > 0 ? ` width=\"${img.width}\"` : '';\n const heightAttr = img.height > 0 ? ` height=\"${img.height}\"` : '';\n const alt = escapeAttr(img.altText || 'image');\n return `<img src=\"${escapeAttr(img.dataUrl)}\"${widthAttr}${heightAttr} alt=\"${alt}\">`;\n}\n\n// --- Table rendering ---\n\nfunction buildBorderFallbacks(table: DocxTable): TableBorderFallbacks {\n return {\n insideH: table.tableStyle?.borders?.insideH,\n insideV: table.tableStyle?.borders?.insideV,\n top: table.tableStyle?.borders?.top,\n bottom: table.tableStyle?.borders?.bottom,\n left: table.tableStyle?.borders?.left,\n right: table.tableStyle?.borders?.right,\n };\n}\n\nfunction splitTableRows(rows: readonly DocxTableRow[]): { headerRows: DocxTableRow[]; bodyRows: DocxTableRow[] } {\n const headerRows: DocxTableRow[] = [];\n const bodyRows: DocxTableRow[] = [];\n for (const row of rows) {\n if (row.rowStyle?.isHeader) { headerRows.push(row); } else { bodyRows.push(row); }\n }\n return { headerRows, bodyRows };\n}\n\nfunction renderTable(table: DocxTable): string {\n const tableStyle = buildTableStyle(table.tableStyle);\n const styleStr = tableStyle ? ` style=\"${tableStyle}\"` : '';\n const borderFallbacks = buildBorderFallbacks(table);\n const { headerRows, bodyRows } = splitTableRows(table.rows);\n const totalRows = table.rows.length;\n const parts: string[] = [`<table${styleStr}>`];\n let rowIndex = 0;\n\n if (headerRows.length > 0) {\n parts.push('<thead>');\n for (const row of headerRows) {\n parts.push(renderTableRow(row, true, borderFallbacks, rowIndex, totalRows));\n rowIndex++;\n }\n parts.push('</thead>');\n }\n\n parts.push('<tbody>');\n for (const row of bodyRows) {\n parts.push(renderTableRow(row, false, borderFallbacks, rowIndex, totalRows));\n rowIndex++;\n }\n parts.push('</tbody>', '</table>');\n return parts.join('');\n}\n\nfunction buildTableStyle(style?: DocxTableStyle): string {\n const parts: string[] = ['border-collapse:collapse'];\n\n if (style?.width) {\n const unit = style.widthUnit === 'pct' ? '%' : 'pt';\n const value = unit === '%' ? (style.width / 50).toFixed(1) : twipsToPt(style.width);\n parts.push(`width:${value}${unit}`);\n }\n\n return parts.join(';');\n}\n\ninterface TableBorderFallbacks {\n readonly insideH?: DocxTableBorder;\n readonly insideV?: DocxTableBorder;\n readonly top?: DocxTableBorder;\n readonly bottom?: DocxTableBorder;\n readonly left?: DocxTableBorder;\n readonly right?: DocxTableBorder;\n}\n\nfunction renderTableRow(\n row: DocxTableRow, isHeader: boolean,\n fallbacks: TableBorderFallbacks, rowIndex: number, totalRows: number,\n): string {\n const heightStyle = row.rowStyle?.height\n ? ` style=\"height:${formatPt(row.rowStyle.height)}pt\"`\n : '';\n const tag = isHeader ? 'th' : 'td';\n const totalCols = row.cells.reduce((sum, c) => sum + c.colSpan, 0);\n\n let colIndex = 0;\n const cellsHtml: string[] = [];\n for (const cell of row.cells) {\n cellsHtml.push(renderTableCell(cell, tag, fallbacks, rowIndex, colIndex, totalRows, totalCols));\n colIndex += cell.colSpan;\n }\n return `<tr${heightStyle}>${cellsHtml.join('')}</tr>`;\n}\n\nfunction renderTableCell(\n cell: DocxTableCell, tag: string,\n fallbacks: TableBorderFallbacks, rowIndex: number, colIndex: number,\n totalRows: number, totalCols: number,\n): string {\n const attrs: string[] = [];\n\n if (cell.colSpan > 1) attrs.push(`colspan=\"${cell.colSpan}\"`);\n if (cell.rowSpan > 1) attrs.push(`rowspan=\"${cell.rowSpan}\"`);\n\n const cellStyle = buildCellStyle(cell.cellStyle, fallbacks, rowIndex, colIndex, totalRows, totalCols);\n if (cellStyle) attrs.push(`style=\"${cellStyle}\"`);\n\n const attrStr = attrs.length > 0 ? ` ${attrs.join(' ')}` : '';\n const content = renderCellContent(cell.elements);\n return `<${tag}${attrStr}>${content}</${tag}>`;\n}\n\nfunction buildCellStyle(\n style: DocxTableCellStyle | undefined,\n fallbacks: TableBorderFallbacks, rowIndex: number, colIndex: number,\n totalRows: number, totalCols: number,\n): string {\n const parts: string[] = [];\n\n if (style?.backgroundColor) parts.push(`background-color:${style.backgroundColor}`);\n if (style?.verticalAlign) parts.push(`vertical-align:${style.verticalAlign}`);\n if (style?.width) {\n const unit = style.widthUnit === 'pct' ? '%' : 'pt';\n const value = unit === '%' ? (style.width / 50).toFixed(1) : twipsToPt(style.width);\n parts.push(`width:${value}${unit}`);\n }\n\n appendCellBorders(parts, style, fallbacks, rowIndex, colIndex, totalRows, totalCols);\n if (style) appendCellPaddings(parts, style);\n\n return parts.join(';');\n}\n\nfunction resolveCellBorder(\n own: DocxTableBorder | undefined,\n isEdge: boolean,\n edgeFallback: DocxTableBorder | undefined,\n innerFallback: DocxTableBorder | undefined,\n): DocxTableBorder | undefined {\n return own ?? (isEdge ? edgeFallback : innerFallback);\n}\n\nfunction appendCellBorders(\n parts: string[], style: DocxTableCellStyle | undefined,\n fallbacks: TableBorderFallbacks, rowIndex: number, colIndex: number,\n totalRows: number, totalCols: number,\n): void {\n const top = resolveCellBorder(style?.borders?.top, rowIndex === 0, fallbacks.top, fallbacks.insideH);\n const bottom = resolveCellBorder(style?.borders?.bottom, rowIndex === totalRows - 1, fallbacks.bottom, fallbacks.insideH);\n const left = resolveCellBorder(style?.borders?.left, colIndex === 0, fallbacks.left, fallbacks.insideV);\n const right = resolveCellBorder(style?.borders?.right, colIndex === totalCols - 1, fallbacks.right, fallbacks.insideV);\n\n if (top) parts.push(`border-top:${formatBorder(top)}`);\n if (bottom) parts.push(`border-bottom:${formatBorder(bottom)}`);\n if (left) parts.push(`border-left:${formatBorder(left)}`);\n if (right) parts.push(`border-right:${formatBorder(right)}`);\n}\n\nfunction appendCellPaddings(parts: string[], style: DocxTableCellStyle): void {\n if (!style.paddings) return;\n if (style.paddings.top != null) parts.push(`padding-top:${formatPt(style.paddings.top)}pt`);\n if (style.paddings.bottom != null) parts.push(`padding-bottom:${formatPt(style.paddings.bottom)}pt`);\n if (style.paddings.left != null) parts.push(`padding-left:${formatPt(style.paddings.left)}pt`);\n if (style.paddings.right != null) parts.push(`padding-right:${formatPt(style.paddings.right)}pt`);\n}\n\nfunction renderCellContent(elements: ReadonlyArray<DocxParagraph | DocxTable>): string {\n return elements.map(el => {\n if (el.type === 'table') return renderTable(el);\n return renderParagraph(el);\n }).join('');\n}\n\n// --- Utilities ---\n\nfunction formatPt(pts: number): string {\n return pts.toFixed(1).replace(/\\.0$/, '');\n}\n\nfunction twipsToPt(twips: number): string {\n return (twips / 20).toFixed(1).replace(/\\.0$/, '');\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll('\\t', '\\u2003');\n}\n\nfunction escapeAttr(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('\"', '"')\n .replaceAll('<', '<')\n .replaceAll('>', '>');\n}\n"],"names":[],"mappings":"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"}
|