docxml
Version:
TypeScript (component) library for building and parsing a DOCX file
40 lines (39 loc) • 1.66 kB
JavaScript
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,
});
}