UNPKG

exceljs

Version:

Excel Workbook Manager - Read and Write xlsx and csv Files.

64 lines (55 loc) 1.64 kB
const BaseXform = require('../base-xform'); // Color encapsulates translation from color model to/from xlsx class ColorXform extends BaseXform { constructor(name) { super(); // this.name controls the xm node name this.name = name || 'color'; } get tag() { return this.name; } render(xmlStream, model) { if (model) { xmlStream.openNode(this.name); if (model.argb) { xmlStream.addAttribute('rgb', model.argb); } else if (model.theme !== undefined) { xmlStream.addAttribute('theme', model.theme); if (model.tint !== undefined) { xmlStream.addAttribute('tint', model.tint); } } else if (model.indexed !== undefined) { xmlStream.addAttribute('indexed', model.indexed); } else { xmlStream.addAttribute('auto', '1'); } xmlStream.closeNode(); return true; } return false; } parseOpen(node) { if (node.name === this.name) { if (node.attributes.rgb) { this.model = {argb: node.attributes.rgb}; } else if (node.attributes.theme) { this.model = {theme: parseInt(node.attributes.theme, 10)}; if (node.attributes.tint) { this.model.tint = parseFloat(node.attributes.tint); } } else if (node.attributes.indexed) { this.model = {indexed: parseInt(node.attributes.indexed, 10)}; } else { this.model = undefined; } return true; } return false; } parseText() {} parseClose() { return false; } } module.exports = ColorXform;