UNPKG

docxml

Version:

TypeScript (component) library for building and parsing a DOCX file

40 lines (39 loc) 1.66 kB
import { create } from '../utilities/dom.js'; import { QNS } from '../utilities/namespaces.js'; import { evaluateXPathToMap } from '../utilities/xquery.js'; import { paragraphPropertiesFromNode, paragraphPropertiesToNode, } from './paragraph-properties.js'; import { tableCellPropertiesFromNode, tableCellPropertiesToNode, } from './table-cell-properties.js'; import { tablePropertiesFromNode, tablePropertiesToNode, } from './table-properties.js'; import { textPropertiesFromNode, textPropertiesToNode } from './text-properties.js'; export function tableConditionalPropertiesFromNode(node) { const { pPr, rPr, tblPr, tcPr, ...rest } = evaluateXPathToMap(`map { "type": ./@${QNS.w}type/string(), "pPr": ./${QNS.w}pPr, "rPr": ./${QNS.w}rPr, "tblPr": ./${QNS.w}tblPr, "tcPr": ./${QNS.w}tcPr }`, node); const properties = { ...rest, paragraph: pPr ? paragraphPropertiesFromNode(pPr) : null, text: rPr ? textPropertiesFromNode(rPr) : null, table: tblPr ? tablePropertiesFromNode(tblPr) : null, cell: tcPr ? tableCellPropertiesFromNode(tcPr) : null, }; return properties; } export function tableConditionalPropertiesToNode(tblpr) { return create(`element ${QNS.w}tblStylePr { attribute ${QNS.w}type { $type }, $pPr, $rPr, $tblPr, $tcPr }`, { ...tblpr, pPr: tblpr.paragraph ? paragraphPropertiesToNode(tblpr.paragraph) : null, rPr: tblpr.text ? textPropertiesToNode(tblpr.text) : null, tblPr: tblpr.table ? tablePropertiesToNode(tblpr.table) : null, tcPr: tblpr.cell ? tableCellPropertiesToNode(tblpr.cell, false) : null, }); }