devextreme-exceljs-fork 4.4.7 → 4.4.8

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.
Files changed (109) hide show
  1. package/dist/dx-exceljs-fork.bare.js +445 -541
  2. package/dist/dx-exceljs-fork.bare.js.map +18 -18
  3. package/dist/dx-exceljs-fork.bare.min.js +7 -7
  4. package/dist/dx-exceljs-fork.bare.min.js.map +1 -1
  5. package/dist/dx-exceljs-fork.js +445 -541
  6. package/dist/dx-exceljs-fork.js.map +18 -18
  7. package/dist/dx-exceljs-fork.min.js +6 -6
  8. package/dist/dx-exceljs-fork.min.js.map +1 -1
  9. package/dist/es5/csv/csv.js +1 -1
  10. package/dist/es5/csv/csv.js.map +1 -1
  11. package/dist/es5/doc/cell.js +5 -5
  12. package/dist/es5/doc/cell.js.map +1 -1
  13. package/dist/es5/doc/pivot-table.js +1 -1
  14. package/dist/es5/doc/pivot-table.js.map +1 -1
  15. package/dist/es5/doc/range.js +7 -7
  16. package/dist/es5/doc/range.js.map +1 -1
  17. package/dist/es5/doc/row.js +1 -1
  18. package/dist/es5/doc/row.js.map +1 -1
  19. package/dist/es5/doc/table.js +10 -10
  20. package/dist/es5/doc/table.js.map +1 -1
  21. package/dist/es5/doc/worksheet.js +7 -6
  22. package/dist/es5/doc/worksheet.js.map +1 -1
  23. package/dist/es5/stream/xlsx/hyperlink-reader.js +26 -49
  24. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -1
  25. package/dist/es5/stream/xlsx/sheet-comments-writer.js +6 -6
  26. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -1
  27. package/dist/es5/stream/xlsx/sheet-rels-writer.js +6 -5
  28. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -1
  29. package/dist/es5/stream/xlsx/workbook-reader.js +215 -320
  30. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -1
  31. package/dist/es5/stream/xlsx/workbook-writer.js +8 -8
  32. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -1
  33. package/dist/es5/stream/xlsx/worksheet-reader.js +265 -341
  34. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -1
  35. package/dist/es5/stream/xlsx/worksheet-writer.js +9 -13
  36. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -1
  37. package/dist/es5/utils/col-cache.js +14 -18
  38. package/dist/es5/utils/col-cache.js.map +1 -1
  39. package/dist/es5/utils/copy-style.js +12 -10
  40. package/dist/es5/utils/copy-style.js.map +1 -1
  41. package/dist/es5/utils/encryptor.js +1 -1
  42. package/dist/es5/utils/encryptor.js.map +1 -1
  43. package/dist/es5/utils/iterate-stream.js +26 -37
  44. package/dist/es5/utils/iterate-stream.js.map +1 -1
  45. package/dist/es5/utils/parse-sax.js +34 -67
  46. package/dist/es5/utils/parse-sax.js.map +1 -1
  47. package/dist/es5/utils/utils.js +1 -1
  48. package/dist/es5/utils/utils.js.map +1 -1
  49. package/dist/es5/utils/xml-stream.js +1 -1
  50. package/dist/es5/utils/xml-stream.js.map +1 -1
  51. package/dist/es5/xlsx/xform/base-xform.js +12 -35
  52. package/dist/es5/xlsx/xform/base-xform.js.map +1 -1
  53. package/dist/es5/xlsx/xform/book/defined-name-xform.js +2 -2
  54. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -1
  55. package/dist/es5/xlsx/xform/book/workbook-xform.js +5 -5
  56. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -1
  57. package/dist/es5/xlsx/xform/comment/comment-xform.js +4 -8
  58. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -1
  59. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +1 -1
  60. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -1
  61. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  62. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -1
  63. package/dist/es5/xlsx/xform/core/content-types-xform.js +5 -5
  64. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -1
  65. package/dist/es5/xlsx/xform/core/core-xform.js +2 -2
  66. package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -1
  67. package/dist/es5/xlsx/xform/core/relationships-xform.js +2 -2
  68. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -1
  69. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +1 -1
  70. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -1
  71. package/dist/es5/xlsx/xform/list-xform.js +1 -1
  72. package/dist/es5/xlsx/xform/list-xform.js.map +1 -1
  73. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +8 -2
  74. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -1
  75. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +3 -7
  76. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -1
  77. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +7 -11
  78. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -1
  79. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +70 -10
  80. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -1
  81. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +1 -1
  82. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -1
  83. package/dist/es5/xlsx/xform/sheet/cell-xform.js +4 -8
  84. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -1
  85. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +18 -22
  86. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -1
  87. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -2
  88. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -1
  89. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +11 -13
  90. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -1
  91. package/dist/es5/xlsx/xform/sheet/merges.js +1 -1
  92. package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -1
  93. package/dist/es5/xlsx/xform/sheet/row-xform.js +2 -2
  94. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -1
  95. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +10 -10
  96. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -1
  97. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +2 -2
  98. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -1
  99. package/dist/es5/xlsx/xform/style/border-xform.js +3 -7
  100. package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -1
  101. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +2 -2
  102. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -1
  103. package/dist/es5/xlsx/xform/table/filter-column-xform.js +1 -1
  104. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -1
  105. package/dist/es5/xlsx/xform/table/table-xform.js +3 -7
  106. package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -1
  107. package/dist/es5/xlsx/xlsx.js +22 -45
  108. package/dist/es5/xlsx/xlsx.js.map +1 -1
  109. package/package.json +13 -14
@@ -1 +1 @@
1
- {"version":3,"file":"cell-xform.js","names":["utils","require","BaseXform","Range","Enums","RichTextXform","getValueType","v","undefined","ValueType","Null","String","Number","Boolean","Date","text","hyperlink","Hyperlink","formula","Formula","error","Error","getEffectiveCellType","cell","type","result","CellXform","constructor","richTextXForm","tag","prepare","model","options","styleId","styles","addStyleModel","style","comment","comments","push","_objectSpread","ref","address","RichText","sharedStrings","ssId","add","value","date1904","hyperlinks","target","tooltip","Merge","merges","shareType","si","siFormulae","formulae","sharedFormula","master","concat","range","expandToAddress","renderFormula","xmlStream","attrs","t","leafNode","addAttribute","dateToExcel","render","openNode","richText","forEach","closeNode","parseOpen","node","parser","name","attributes","r","s","parseInt","currentNode","parseText","parseClose","xmlDecode","parseFloat","reconcile","getStyleModel","getString","isDateFmt","numFmt","excelToDate","hyperlinkMap","commentsMap","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/cell-xform.js"],"sourcesContent":["const utils = require('../../../utils/utils');\nconst BaseXform = require('../base-xform');\nconst Range = require('../../../doc/range');\nconst Enums = require('../../../doc/enums');\n\nconst RichTextXform = require('../strings/rich-text-xform');\n\nfunction getValueType(v) {\n if (v === null || v === undefined) {\n return Enums.ValueType.Null;\n }\n if (v instanceof String || typeof v === 'string') {\n return Enums.ValueType.String;\n }\n if (typeof v === 'number') {\n return Enums.ValueType.Number;\n }\n if (typeof v === 'boolean') {\n return Enums.ValueType.Boolean;\n }\n if (v instanceof Date) {\n return Enums.ValueType.Date;\n }\n if (v.text && v.hyperlink) {\n return Enums.ValueType.Hyperlink;\n }\n if (v.formula) {\n return Enums.ValueType.Formula;\n }\n if (v.error) {\n return Enums.ValueType.Error;\n }\n throw new Error('I could not understand type of value');\n}\n\nfunction getEffectiveCellType(cell) {\n switch (cell.type) {\n case Enums.ValueType.Formula:\n return getValueType(cell.result);\n default:\n return cell.type;\n }\n}\n\nclass CellXform extends BaseXform {\n constructor() {\n super();\n\n this.richTextXForm = new RichTextXform();\n }\n\n get tag() {\n return 'c';\n }\n\n prepare(model, options) {\n const styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model));\n if (styleId) {\n model.styleId = styleId;\n }\n\n if (model.comment) {\n options.comments.push({...model.comment, ref: model.address});\n }\n\n switch (model.type) {\n case Enums.ValueType.String:\n case Enums.ValueType.RichText:\n if (options.sharedStrings) {\n model.ssId = options.sharedStrings.add(model.value);\n }\n break;\n\n case Enums.ValueType.Date:\n if (options.date1904) {\n model.date1904 = true;\n }\n break;\n\n case Enums.ValueType.Hyperlink:\n if (options.sharedStrings && model.text !== undefined && model.text !== null) {\n model.ssId = options.sharedStrings.add(model.text);\n }\n options.hyperlinks.push({\n address: model.address,\n target: model.hyperlink,\n tooltip: model.tooltip,\n });\n break;\n\n case Enums.ValueType.Merge:\n options.merges.add(model);\n break;\n\n case Enums.ValueType.Formula:\n if (options.date1904) {\n // in case valueType is date\n model.date1904 = true;\n }\n\n if (model.shareType === 'shared') {\n model.si = options.siFormulae++;\n }\n\n if (model.formula) {\n options.formulae[model.address] = model;\n } else if (model.sharedFormula) {\n const master = options.formulae[model.sharedFormula];\n if (!master) {\n throw new Error(\n `Shared Formula master must exist above and or left of clone for cell ${model.address}`\n );\n }\n if (master.si === undefined) {\n master.shareType = 'shared';\n master.si = options.siFormulae++;\n master.range = new Range(master.address, model.address);\n } else if (master.range) {\n master.range.expandToAddress(model.address);\n }\n model.si = master.si;\n }\n break;\n\n default:\n break;\n }\n }\n\n renderFormula(xmlStream, model) {\n let attrs = null;\n switch (model.shareType) {\n case 'shared':\n attrs = {\n t: 'shared',\n ref: model.ref || model.range.range,\n si: model.si,\n };\n break;\n\n case 'array':\n attrs = {\n t: 'array',\n ref: model.ref,\n };\n break;\n\n default:\n if (model.si !== undefined) {\n attrs = {\n t: 'shared',\n si: model.si,\n };\n }\n break;\n }\n\n switch (getValueType(model.result)) {\n case Enums.ValueType.Null: // ?\n xmlStream.leafNode('f', attrs, model.formula);\n break;\n\n case Enums.ValueType.String:\n // oddly, formula results don't ever use shared strings\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result);\n break;\n\n case Enums.ValueType.Number:\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result);\n break;\n\n case Enums.ValueType.Boolean:\n xmlStream.addAttribute('t', 'b');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result ? 1 : 0);\n break;\n\n case Enums.ValueType.Error:\n xmlStream.addAttribute('t', 'e');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result.error);\n break;\n\n case Enums.ValueType.Date:\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904));\n break;\n\n // case Enums.ValueType.Hyperlink: // ??\n // case Enums.ValueType.Formula:\n default:\n throw new Error('I could not understand type of value');\n }\n }\n\n render(xmlStream, model) {\n if (model.type === Enums.ValueType.Null && !model.styleId) {\n // if null and no style, exit\n return;\n }\n\n xmlStream.openNode('c');\n xmlStream.addAttribute('r', model.address);\n\n if (model.styleId) {\n xmlStream.addAttribute('s', model.styleId);\n }\n\n switch (model.type) {\n case Enums.ValueType.Null:\n break;\n\n case Enums.ValueType.Number:\n xmlStream.leafNode('v', null, model.value);\n break;\n\n case Enums.ValueType.Boolean:\n xmlStream.addAttribute('t', 'b');\n xmlStream.leafNode('v', null, model.value ? '1' : '0');\n break;\n\n case Enums.ValueType.Error:\n xmlStream.addAttribute('t', 'e');\n xmlStream.leafNode('v', null, model.value.error);\n break;\n\n case Enums.ValueType.String:\n case Enums.ValueType.RichText:\n if (model.ssId !== undefined) {\n xmlStream.addAttribute('t', 's');\n xmlStream.leafNode('v', null, model.ssId);\n } else if (model.value && model.value.richText) {\n xmlStream.addAttribute('t', 'inlineStr');\n xmlStream.openNode('is');\n model.value.richText.forEach(text => {\n this.richTextXForm.render(xmlStream, text);\n });\n xmlStream.closeNode('is');\n } else {\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('v', null, model.value);\n }\n break;\n\n case Enums.ValueType.Date:\n xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904));\n break;\n\n case Enums.ValueType.Hyperlink:\n if (model.ssId !== undefined) {\n xmlStream.addAttribute('t', 's');\n xmlStream.leafNode('v', null, model.ssId);\n } else {\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('v', null, model.text);\n }\n break;\n\n case Enums.ValueType.Formula:\n this.renderFormula(xmlStream, model);\n break;\n\n case Enums.ValueType.Merge:\n // nothing to add\n break;\n\n default:\n break;\n }\n\n xmlStream.closeNode(); // </c>\n }\n\n parseOpen(node) {\n if (this.parser) {\n this.parser.parseOpen(node);\n return true;\n }\n switch (node.name) {\n case 'c':\n // const address = colCache.decodeAddress(node.attributes.r);\n this.model = {\n address: node.attributes.r,\n };\n this.t = node.attributes.t;\n if (node.attributes.s) {\n this.model.styleId = parseInt(node.attributes.s, 10);\n }\n return true;\n\n case 'f':\n this.currentNode = 'f';\n this.model.si = node.attributes.si;\n this.model.shareType = node.attributes.t;\n this.model.ref = node.attributes.ref;\n return true;\n\n case 'v':\n this.currentNode = 'v';\n return true;\n\n case 't':\n this.currentNode = 't';\n return true;\n\n case 'r':\n this.parser = this.richTextXForm;\n this.parser.parseOpen(node);\n return true;\n\n default:\n return false;\n }\n }\n\n parseText(text) {\n if (this.parser) {\n this.parser.parseText(text);\n return;\n }\n switch (this.currentNode) {\n case 'f':\n this.model.formula = this.model.formula ? this.model.formula + text : text;\n break;\n case 'v':\n case 't':\n if (this.model.value && this.model.value.richText) {\n this.model.value.richText.text = this.model.value.richText.text\n ? this.model.value.richText.text + text\n : text;\n } else {\n this.model.value = this.model.value ? this.model.value + text : text;\n }\n break;\n default:\n break;\n }\n }\n\n parseClose(name) {\n switch (name) {\n case 'c': {\n const {model} = this;\n\n // first guess on cell type\n if (model.formula || model.shareType) {\n model.type = Enums.ValueType.Formula;\n if (model.value) {\n if (this.t === 'str') {\n model.result = utils.xmlDecode(model.value);\n } else if (this.t === 'b') {\n model.result = parseInt(model.value, 10) !== 0;\n } else if (this.t === 'e') {\n model.result = {error: model.value};\n } else {\n model.result = parseFloat(model.value);\n }\n model.value = undefined;\n }\n } else if (model.value !== undefined) {\n switch (this.t) {\n case 's':\n model.type = Enums.ValueType.String;\n model.value = parseInt(model.value, 10);\n break;\n case 'str':\n model.type = Enums.ValueType.String;\n model.value = utils.xmlDecode(model.value);\n break;\n case 'inlineStr':\n model.type = Enums.ValueType.String;\n break;\n case 'b':\n model.type = Enums.ValueType.Boolean;\n model.value = parseInt(model.value, 10) !== 0;\n break;\n case 'e':\n model.type = Enums.ValueType.Error;\n model.value = {error: model.value};\n break;\n default:\n model.type = Enums.ValueType.Number;\n model.value = parseFloat(model.value);\n break;\n }\n } else if (model.styleId) {\n model.type = Enums.ValueType.Null;\n } else {\n model.type = Enums.ValueType.Merge;\n }\n return false;\n }\n\n case 'f':\n case 'v':\n case 'is':\n this.currentNode = undefined;\n return true;\n\n case 't':\n if (this.parser) {\n this.parser.parseClose(name);\n return true;\n }\n this.currentNode = undefined;\n return true;\n\n case 'r':\n this.model.value = this.model.value || {};\n this.model.value.richText = this.model.value.richText || [];\n this.model.value.richText.push(this.parser.model);\n this.parser = undefined;\n this.currentNode = undefined;\n return true;\n\n default:\n if (this.parser) {\n this.parser.parseClose(name);\n return true;\n }\n return false;\n }\n }\n\n reconcile(model, options) {\n const style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId);\n if (style) {\n model.style = style;\n }\n if (model.styleId !== undefined) {\n model.styleId = undefined;\n }\n\n switch (model.type) {\n case Enums.ValueType.String:\n if (typeof model.value === 'number') {\n if (options.sharedStrings) {\n model.value = options.sharedStrings.getString(model.value);\n }\n }\n if (model.value.richText) {\n model.type = Enums.ValueType.RichText;\n }\n break;\n\n case Enums.ValueType.Number:\n if (style && utils.isDateFmt(style.numFmt)) {\n model.type = Enums.ValueType.Date;\n model.value = utils.excelToDate(model.value, options.date1904);\n }\n break;\n\n case Enums.ValueType.Formula:\n if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) {\n model.result = utils.excelToDate(model.result, options.date1904);\n }\n if (model.shareType === 'shared') {\n if (model.ref) {\n // master\n options.formulae[model.si] = model.address;\n } else {\n // slave\n model.sharedFormula = options.formulae[model.si];\n delete model.shareType;\n }\n delete model.si;\n }\n break;\n\n default:\n break;\n }\n\n // look for hyperlink\n const hyperlink = options.hyperlinkMap[model.address];\n if (hyperlink) {\n if (model.type === Enums.ValueType.Formula) {\n model.text = model.result;\n model.result = undefined;\n } else {\n model.text = model.value;\n model.value = undefined;\n }\n model.type = Enums.ValueType.Hyperlink;\n model.hyperlink = hyperlink;\n }\n\n const comment = options.commentsMap && options.commentsMap[model.address];\n if (comment) {\n model.comment = comment;\n }\n }\n}\n\nmodule.exports = CellXform;\n"],"mappings":";;;;;;;AAAA,MAAMA,KAAK,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC7C,MAAMC,SAAS,GAAGD,OAAO,CAAC,eAAe,CAAC;AAC1C,MAAME,KAAK,GAAGF,OAAO,CAAC,oBAAoB,CAAC;AAC3C,MAAMG,KAAK,GAAGH,OAAO,CAAC,oBAAoB,CAAC;AAE3C,MAAMI,aAAa,GAAGJ,OAAO,CAAC,4BAA4B,CAAC;AAE3D,SAASK,YAAYA,CAACC,CAAC,EAAE;EACvB,IAAIA,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;IACjC,OAAOJ,KAAK,CAACK,SAAS,CAACC,IAAI;EAC7B;EACA,IAAIH,CAAC,YAAYI,MAAM,IAAI,OAAOJ,CAAC,KAAK,QAAQ,EAAE;IAChD,OAAOH,KAAK,CAACK,SAAS,CAACE,MAAM;EAC/B;EACA,IAAI,OAAOJ,CAAC,KAAK,QAAQ,EAAE;IACzB,OAAOH,KAAK,CAACK,SAAS,CAACG,MAAM;EAC/B;EACA,IAAI,OAAOL,CAAC,KAAK,SAAS,EAAE;IAC1B,OAAOH,KAAK,CAACK,SAAS,CAACI,OAAO;EAChC;EACA,IAAIN,CAAC,YAAYO,IAAI,EAAE;IACrB,OAAOV,KAAK,CAACK,SAAS,CAACK,IAAI;EAC7B;EACA,IAAIP,CAAC,CAACQ,IAAI,IAAIR,CAAC,CAACS,SAAS,EAAE;IACzB,OAAOZ,KAAK,CAACK,SAAS,CAACQ,SAAS;EAClC;EACA,IAAIV,CAAC,CAACW,OAAO,EAAE;IACb,OAAOd,KAAK,CAACK,SAAS,CAACU,OAAO;EAChC;EACA,IAAIZ,CAAC,CAACa,KAAK,EAAE;IACX,OAAOhB,KAAK,CAACK,SAAS,CAACY,KAAK;EAC9B;EACA,MAAM,IAAIA,KAAK,CAAC,sCAAsC,CAAC;AACzD;AAEA,SAASC,oBAAoBA,CAACC,IAAI,EAAE;EAClC,QAAQA,IAAI,CAACC,IAAI;IACf,KAAKpB,KAAK,CAACK,SAAS,CAACU,OAAO;MAC1B,OAAOb,YAAY,CAACiB,IAAI,CAACE,MAAM,CAAC;IAClC;MACE,OAAOF,IAAI,CAACC,IAAI;EACpB;AACF;AAEA,MAAME,SAAS,SAASxB,SAAS,CAAC;EAChCyB,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,aAAa,GAAG,IAAIvB,aAAa,CAAC,CAAC;EAC1C;EAEA,IAAIwB,GAAGA,CAAA,EAAG;IACR,OAAO,GAAG;EACZ;EAEAC,OAAOA,CAACC,KAAK,EAAEC,OAAO,EAAE;IACtB,MAAMC,OAAO,GAAGD,OAAO,CAACE,MAAM,CAACC,aAAa,CAACJ,KAAK,CAACK,KAAK,IAAI,CAAC,CAAC,EAAEd,oBAAoB,CAACS,KAAK,CAAC,CAAC;IAC5F,IAAIE,OAAO,EAAE;MACXF,KAAK,CAACE,OAAO,GAAGA,OAAO;IACzB;IAEA,IAAIF,KAAK,CAACM,OAAO,EAAE;MACjBL,OAAO,CAACM,QAAQ,CAACC,IAAI,CAAAC,aAAA,CAAAA,aAAA,KAAKT,KAAK,CAACM,OAAO;QAAEI,GAAG,EAAEV,KAAK,CAACW;MAAO,EAAC,CAAC;IAC/D;IAEA,QAAQX,KAAK,CAACP,IAAI;MAChB,KAAKpB,KAAK,CAACK,SAAS,CAACE,MAAM;MAC3B,KAAKP,KAAK,CAACK,SAAS,CAACkC,QAAQ;QAC3B,IAAIX,OAAO,CAACY,aAAa,EAAE;UACzBb,KAAK,CAACc,IAAI,GAAGb,OAAO,CAACY,aAAa,CAACE,GAAG,CAACf,KAAK,CAACgB,KAAK,CAAC;QACrD;QACA;MAEF,KAAK3C,KAAK,CAACK,SAAS,CAACK,IAAI;QACvB,IAAIkB,OAAO,CAACgB,QAAQ,EAAE;UACpBjB,KAAK,CAACiB,QAAQ,GAAG,IAAI;QACvB;QACA;MAEF,KAAK5C,KAAK,CAACK,SAAS,CAACQ,SAAS;QAC5B,IAAIe,OAAO,CAACY,aAAa,IAAIb,KAAK,CAAChB,IAAI,KAAKP,SAAS,IAAIuB,KAAK,CAAChB,IAAI,KAAK,IAAI,EAAE;UAC5EgB,KAAK,CAACc,IAAI,GAAGb,OAAO,CAACY,aAAa,CAACE,GAAG,CAACf,KAAK,CAAChB,IAAI,CAAC;QACpD;QACAiB,OAAO,CAACiB,UAAU,CAACV,IAAI,CAAC;UACtBG,OAAO,EAAEX,KAAK,CAACW,OAAO;UACtBQ,MAAM,EAAEnB,KAAK,CAACf,SAAS;UACvBmC,OAAO,EAAEpB,KAAK,CAACoB;QACjB,CAAC,CAAC;QACF;MAEF,KAAK/C,KAAK,CAACK,SAAS,CAAC2C,KAAK;QACxBpB,OAAO,CAACqB,MAAM,CAACP,GAAG,CAACf,KAAK,CAAC;QACzB;MAEF,KAAK3B,KAAK,CAACK,SAAS,CAACU,OAAO;QAC1B,IAAIa,OAAO,CAACgB,QAAQ,EAAE;UACpB;UACAjB,KAAK,CAACiB,QAAQ,GAAG,IAAI;QACvB;QAEA,IAAIjB,KAAK,CAACuB,SAAS,KAAK,QAAQ,EAAE;UAChCvB,KAAK,CAACwB,EAAE,GAAGvB,OAAO,CAACwB,UAAU,EAAE;QACjC;QAEA,IAAIzB,KAAK,CAACb,OAAO,EAAE;UACjBc,OAAO,CAACyB,QAAQ,CAAC1B,KAAK,CAACW,OAAO,CAAC,GAAGX,KAAK;QACzC,CAAC,MAAM,IAAIA,KAAK,CAAC2B,aAAa,EAAE;UAC9B,MAAMC,MAAM,GAAG3B,OAAO,CAACyB,QAAQ,CAAC1B,KAAK,CAAC2B,aAAa,CAAC;UACpD,IAAI,CAACC,MAAM,EAAE;YACX,MAAM,IAAItC,KAAK,yEAAAuC,MAAA,CAC2D7B,KAAK,CAACW,OAAO,CACvF,CAAC;UACH;UACA,IAAIiB,MAAM,CAACJ,EAAE,KAAK/C,SAAS,EAAE;YAC3BmD,MAAM,CAACL,SAAS,GAAG,QAAQ;YAC3BK,MAAM,CAACJ,EAAE,GAAGvB,OAAO,CAACwB,UAAU,EAAE;YAChCG,MAAM,CAACE,KAAK,GAAG,IAAI1D,KAAK,CAACwD,MAAM,CAACjB,OAAO,EAAEX,KAAK,CAACW,OAAO,CAAC;UACzD,CAAC,MAAM,IAAIiB,MAAM,CAACE,KAAK,EAAE;YACvBF,MAAM,CAACE,KAAK,CAACC,eAAe,CAAC/B,KAAK,CAACW,OAAO,CAAC;UAC7C;UACAX,KAAK,CAACwB,EAAE,GAAGI,MAAM,CAACJ,EAAE;QACtB;QACA;MAEF;QACE;IACJ;EACF;EAEAQ,aAAaA,CAACC,SAAS,EAAEjC,KAAK,EAAE;IAC9B,IAAIkC,KAAK,GAAG,IAAI;IAChB,QAAQlC,KAAK,CAACuB,SAAS;MACrB,KAAK,QAAQ;QACXW,KAAK,GAAG;UACNC,CAAC,EAAE,QAAQ;UACXzB,GAAG,EAAEV,KAAK,CAACU,GAAG,IAAIV,KAAK,CAAC8B,KAAK,CAACA,KAAK;UACnCN,EAAE,EAAExB,KAAK,CAACwB;QACZ,CAAC;QACD;MAEF,KAAK,OAAO;QACVU,KAAK,GAAG;UACNC,CAAC,EAAE,OAAO;UACVzB,GAAG,EAAEV,KAAK,CAACU;QACb,CAAC;QACD;MAEF;QACE,IAAIV,KAAK,CAACwB,EAAE,KAAK/C,SAAS,EAAE;UAC1ByD,KAAK,GAAG;YACNC,CAAC,EAAE,QAAQ;YACXX,EAAE,EAAExB,KAAK,CAACwB;UACZ,CAAC;QACH;QACA;IACJ;IAEA,QAAQjD,YAAY,CAACyB,KAAK,CAACN,MAAM,CAAC;MAChC,KAAKrB,KAAK,CAACK,SAAS,CAACC,IAAI;QAAE;QACzBsD,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C;MAEF,KAAKd,KAAK,CAACK,SAAS,CAACE,MAAM;QACzB;QACAqD,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;QAClCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C8C,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACN,MAAM,CAAC;QAC3C;MAEF,KAAKrB,KAAK,CAACK,SAAS,CAACG,MAAM;QACzBoD,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C8C,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACN,MAAM,CAAC;QAC3C;MAEF,KAAKrB,KAAK,CAACK,SAAS,CAACI,OAAO;QAC1BmD,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;QAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C8C,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACN,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACnD;MAEF,KAAKrB,KAAK,CAACK,SAAS,CAACY,KAAK;QACxB2C,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;QAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C8C,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACN,MAAM,CAACL,KAAK,CAAC;QACjD;MAEF,KAAKhB,KAAK,CAACK,SAAS,CAACK,IAAI;QACvBkD,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAEF,KAAK,EAAElC,KAAK,CAACb,OAAO,CAAC;QAC7C8C,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEnE,KAAK,CAACqE,WAAW,CAACtC,KAAK,CAACN,MAAM,EAAEM,KAAK,CAACiB,QAAQ,CAAC,CAAC;QAC9E;;MAEF;MACA;MACA;QACE,MAAM,IAAI3B,KAAK,CAAC,sCAAsC,CAAC;IAC3D;EACF;EAEAiD,MAAMA,CAACN,SAAS,EAAEjC,KAAK,EAAE;IACvB,IAAIA,KAAK,CAACP,IAAI,KAAKpB,KAAK,CAACK,SAAS,CAACC,IAAI,IAAI,CAACqB,KAAK,CAACE,OAAO,EAAE;MACzD;MACA;IACF;IAEA+B,SAAS,CAACO,QAAQ,CAAC,GAAG,CAAC;IACvBP,SAAS,CAACI,YAAY,CAAC,GAAG,EAAErC,KAAK,CAACW,OAAO,CAAC;IAE1C,IAAIX,KAAK,CAACE,OAAO,EAAE;MACjB+B,SAAS,CAACI,YAAY,CAAC,GAAG,EAAErC,KAAK,CAACE,OAAO,CAAC;IAC5C;IAEA,QAAQF,KAAK,CAACP,IAAI;MAChB,KAAKpB,KAAK,CAACK,SAAS,CAACC,IAAI;QACvB;MAEF,KAAKN,KAAK,CAACK,SAAS,CAACG,MAAM;QACzBoD,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACgB,KAAK,CAAC;QAC1C;MAEF,KAAK3C,KAAK,CAACK,SAAS,CAACI,OAAO;QAC1BmD,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;QAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACgB,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QACtD;MAEF,KAAK3C,KAAK,CAACK,SAAS,CAACY,KAAK;QACxB2C,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;QAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACgB,KAAK,CAAC3B,KAAK,CAAC;QAChD;MAEF,KAAKhB,KAAK,CAACK,SAAS,CAACE,MAAM;MAC3B,KAAKP,KAAK,CAACK,SAAS,CAACkC,QAAQ;QAC3B,IAAIZ,KAAK,CAACc,IAAI,KAAKrC,SAAS,EAAE;UAC5BwD,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;UAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACc,IAAI,CAAC;QAC3C,CAAC,MAAM,IAAId,KAAK,CAACgB,KAAK,IAAIhB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,EAAE;UAC9CR,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC;UACxCJ,SAAS,CAACO,QAAQ,CAAC,IAAI,CAAC;UACxBxC,KAAK,CAACgB,KAAK,CAACyB,QAAQ,CAACC,OAAO,CAAC1D,IAAI,IAAI;YACnC,IAAI,CAACa,aAAa,CAAC0C,MAAM,CAACN,SAAS,EAAEjD,IAAI,CAAC;UAC5C,CAAC,CAAC;UACFiD,SAAS,CAACU,SAAS,CAAC,IAAI,CAAC;QAC3B,CAAC,MAAM;UACLV,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;UAClCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACgB,KAAK,CAAC;QAC5C;QACA;MAEF,KAAK3C,KAAK,CAACK,SAAS,CAACK,IAAI;QACvBkD,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEnE,KAAK,CAACqE,WAAW,CAACtC,KAAK,CAACgB,KAAK,EAAEhB,KAAK,CAACiB,QAAQ,CAAC,CAAC;QAC7E;MAEF,KAAK5C,KAAK,CAACK,SAAS,CAACQ,SAAS;QAC5B,IAAIc,KAAK,CAACc,IAAI,KAAKrC,SAAS,EAAE;UAC5BwD,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;UAChCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAACc,IAAI,CAAC;QAC3C,CAAC,MAAM;UACLmB,SAAS,CAACI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;UAClCJ,SAAS,CAACG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAEpC,KAAK,CAAChB,IAAI,CAAC;QAC3C;QACA;MAEF,KAAKX,KAAK,CAACK,SAAS,CAACU,OAAO;QAC1B,IAAI,CAAC4C,aAAa,CAACC,SAAS,EAAEjC,KAAK,CAAC;QACpC;MAEF,KAAK3B,KAAK,CAACK,SAAS,CAAC2C,KAAK;QACxB;QACA;MAEF;QACE;IACJ;IAEAY,SAAS,CAACU,SAAS,CAAC,CAAC,CAAC,CAAC;EACzB;EAEAC,SAASA,CAACC,IAAI,EAAE;IACd,IAAI,IAAI,CAACC,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACF,SAAS,CAACC,IAAI,CAAC;MAC3B,OAAO,IAAI;IACb;IACA,QAAQA,IAAI,CAACE,IAAI;MACf,KAAK,GAAG;QACN;QACA,IAAI,CAAC/C,KAAK,GAAG;UACXW,OAAO,EAAEkC,IAAI,CAACG,UAAU,CAACC;QAC3B,CAAC;QACD,IAAI,CAACd,CAAC,GAAGU,IAAI,CAACG,UAAU,CAACb,CAAC;QAC1B,IAAIU,IAAI,CAACG,UAAU,CAACE,CAAC,EAAE;UACrB,IAAI,CAAClD,KAAK,CAACE,OAAO,GAAGiD,QAAQ,CAACN,IAAI,CAACG,UAAU,CAACE,CAAC,EAAE,EAAE,CAAC;QACtD;QACA,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,CAACE,WAAW,GAAG,GAAG;QACtB,IAAI,CAACpD,KAAK,CAACwB,EAAE,GAAGqB,IAAI,CAACG,UAAU,CAACxB,EAAE;QAClC,IAAI,CAACxB,KAAK,CAACuB,SAAS,GAAGsB,IAAI,CAACG,UAAU,CAACb,CAAC;QACxC,IAAI,CAACnC,KAAK,CAACU,GAAG,GAAGmC,IAAI,CAACG,UAAU,CAACtC,GAAG;QACpC,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,CAAC0C,WAAW,GAAG,GAAG;QACtB,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,CAACA,WAAW,GAAG,GAAG;QACtB,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,CAACN,MAAM,GAAG,IAAI,CAACjD,aAAa;QAChC,IAAI,CAACiD,MAAM,CAACF,SAAS,CAACC,IAAI,CAAC;QAC3B,OAAO,IAAI;MAEb;QACE,OAAO,KAAK;IAChB;EACF;EAEAQ,SAASA,CAACrE,IAAI,EAAE;IACd,IAAI,IAAI,CAAC8D,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACO,SAAS,CAACrE,IAAI,CAAC;MAC3B;IACF;IACA,QAAQ,IAAI,CAACoE,WAAW;MACtB,KAAK,GAAG;QACN,IAAI,CAACpD,KAAK,CAACb,OAAO,GAAG,IAAI,CAACa,KAAK,CAACb,OAAO,GAAG,IAAI,CAACa,KAAK,CAACb,OAAO,GAAGH,IAAI,GAAGA,IAAI;QAC1E;MACF,KAAK,GAAG;MACR,KAAK,GAAG;QACN,IAAI,IAAI,CAACgB,KAAK,CAACgB,KAAK,IAAI,IAAI,CAAChB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,EAAE;UACjD,IAAI,CAACzC,KAAK,CAACgB,KAAK,CAACyB,QAAQ,CAACzD,IAAI,GAAG,IAAI,CAACgB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,CAACzD,IAAI,GAC3D,IAAI,CAACgB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,CAACzD,IAAI,GAAGA,IAAI,GACrCA,IAAI;QACV,CAAC,MAAM;UACL,IAAI,CAACgB,KAAK,CAACgB,KAAK,GAAG,IAAI,CAAChB,KAAK,CAACgB,KAAK,GAAG,IAAI,CAAChB,KAAK,CAACgB,KAAK,GAAGhC,IAAI,GAAGA,IAAI;QACtE;QACA;MACF;QACE;IACJ;EACF;EAEAsE,UAAUA,CAACP,IAAI,EAAE;IACf,QAAQA,IAAI;MACV,KAAK,GAAG;QAAE;UACR,MAAM;YAAC/C;UAAK,CAAC,GAAG,IAAI;;UAEpB;UACA,IAAIA,KAAK,CAACb,OAAO,IAAIa,KAAK,CAACuB,SAAS,EAAE;YACpCvB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACU,OAAO;YACpC,IAAIY,KAAK,CAACgB,KAAK,EAAE;cACf,IAAI,IAAI,CAACmB,CAAC,KAAK,KAAK,EAAE;gBACpBnC,KAAK,CAACN,MAAM,GAAGzB,KAAK,CAACsF,SAAS,CAACvD,KAAK,CAACgB,KAAK,CAAC;cAC7C,CAAC,MAAM,IAAI,IAAI,CAACmB,CAAC,KAAK,GAAG,EAAE;gBACzBnC,KAAK,CAACN,MAAM,GAAGyD,QAAQ,CAACnD,KAAK,CAACgB,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;cAChD,CAAC,MAAM,IAAI,IAAI,CAACmB,CAAC,KAAK,GAAG,EAAE;gBACzBnC,KAAK,CAACN,MAAM,GAAG;kBAACL,KAAK,EAAEW,KAAK,CAACgB;gBAAK,CAAC;cACrC,CAAC,MAAM;gBACLhB,KAAK,CAACN,MAAM,GAAG8D,UAAU,CAACxD,KAAK,CAACgB,KAAK,CAAC;cACxC;cACAhB,KAAK,CAACgB,KAAK,GAAGvC,SAAS;YACzB;UACF,CAAC,MAAM,IAAIuB,KAAK,CAACgB,KAAK,KAAKvC,SAAS,EAAE;YACpC,QAAQ,IAAI,CAAC0D,CAAC;cACZ,KAAK,GAAG;gBACNnC,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACE,MAAM;gBACnCoB,KAAK,CAACgB,KAAK,GAAGmC,QAAQ,CAACnD,KAAK,CAACgB,KAAK,EAAE,EAAE,CAAC;gBACvC;cACF,KAAK,KAAK;gBACRhB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACE,MAAM;gBACnCoB,KAAK,CAACgB,KAAK,GAAG/C,KAAK,CAACsF,SAAS,CAACvD,KAAK,CAACgB,KAAK,CAAC;gBAC1C;cACF,KAAK,WAAW;gBACdhB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACE,MAAM;gBACnC;cACF,KAAK,GAAG;gBACNoB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACI,OAAO;gBACpCkB,KAAK,CAACgB,KAAK,GAAGmC,QAAQ,CAACnD,KAAK,CAACgB,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;gBAC7C;cACF,KAAK,GAAG;gBACNhB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACY,KAAK;gBAClCU,KAAK,CAACgB,KAAK,GAAG;kBAAC3B,KAAK,EAAEW,KAAK,CAACgB;gBAAK,CAAC;gBAClC;cACF;gBACEhB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACG,MAAM;gBACnCmB,KAAK,CAACgB,KAAK,GAAGwC,UAAU,CAACxD,KAAK,CAACgB,KAAK,CAAC;gBACrC;YACJ;UACF,CAAC,MAAM,IAAIhB,KAAK,CAACE,OAAO,EAAE;YACxBF,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACC,IAAI;UACnC,CAAC,MAAM;YACLqB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAAC2C,KAAK;UACpC;UACA,OAAO,KAAK;QACd;MAEA,KAAK,GAAG;MACR,KAAK,GAAG;MACR,KAAK,IAAI;QACP,IAAI,CAAC+B,WAAW,GAAG3E,SAAS;QAC5B,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,IAAI,CAACqE,MAAM,EAAE;UACf,IAAI,CAACA,MAAM,CAACQ,UAAU,CAACP,IAAI,CAAC;UAC5B,OAAO,IAAI;QACb;QACA,IAAI,CAACK,WAAW,GAAG3E,SAAS;QAC5B,OAAO,IAAI;MAEb,KAAK,GAAG;QACN,IAAI,CAACuB,KAAK,CAACgB,KAAK,GAAG,IAAI,CAAChB,KAAK,CAACgB,KAAK,IAAI,CAAC,CAAC;QACzC,IAAI,CAAChB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,GAAG,IAAI,CAACzC,KAAK,CAACgB,KAAK,CAACyB,QAAQ,IAAI,EAAE;QAC3D,IAAI,CAACzC,KAAK,CAACgB,KAAK,CAACyB,QAAQ,CAACjC,IAAI,CAAC,IAAI,CAACsC,MAAM,CAAC9C,KAAK,CAAC;QACjD,IAAI,CAAC8C,MAAM,GAAGrE,SAAS;QACvB,IAAI,CAAC2E,WAAW,GAAG3E,SAAS;QAC5B,OAAO,IAAI;MAEb;QACE,IAAI,IAAI,CAACqE,MAAM,EAAE;UACf,IAAI,CAACA,MAAM,CAACQ,UAAU,CAACP,IAAI,CAAC;UAC5B,OAAO,IAAI;QACb;QACA,OAAO,KAAK;IAChB;EACF;EAEAU,SAASA,CAACzD,KAAK,EAAEC,OAAO,EAAE;IACxB,MAAMI,KAAK,GAAGL,KAAK,CAACE,OAAO,IAAID,OAAO,CAACE,MAAM,IAAIF,OAAO,CAACE,MAAM,CAACuD,aAAa,CAAC1D,KAAK,CAACE,OAAO,CAAC;IAC5F,IAAIG,KAAK,EAAE;MACTL,KAAK,CAACK,KAAK,GAAGA,KAAK;IACrB;IACA,IAAIL,KAAK,CAACE,OAAO,KAAKzB,SAAS,EAAE;MAC/BuB,KAAK,CAACE,OAAO,GAAGzB,SAAS;IAC3B;IAEA,QAAQuB,KAAK,CAACP,IAAI;MAChB,KAAKpB,KAAK,CAACK,SAAS,CAACE,MAAM;QACzB,IAAI,OAAOoB,KAAK,CAACgB,KAAK,KAAK,QAAQ,EAAE;UACnC,IAAIf,OAAO,CAACY,aAAa,EAAE;YACzBb,KAAK,CAACgB,KAAK,GAAGf,OAAO,CAACY,aAAa,CAAC8C,SAAS,CAAC3D,KAAK,CAACgB,KAAK,CAAC;UAC5D;QACF;QACA,IAAIhB,KAAK,CAACgB,KAAK,CAACyB,QAAQ,EAAE;UACxBzC,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACkC,QAAQ;QACvC;QACA;MAEF,KAAKvC,KAAK,CAACK,SAAS,CAACG,MAAM;QACzB,IAAIwB,KAAK,IAAIpC,KAAK,CAAC2F,SAAS,CAACvD,KAAK,CAACwD,MAAM,CAAC,EAAE;UAC1C7D,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACK,IAAI;UACjCiB,KAAK,CAACgB,KAAK,GAAG/C,KAAK,CAAC6F,WAAW,CAAC9D,KAAK,CAACgB,KAAK,EAAEf,OAAO,CAACgB,QAAQ,CAAC;QAChE;QACA;MAEF,KAAK5C,KAAK,CAACK,SAAS,CAACU,OAAO;QAC1B,IAAIY,KAAK,CAACN,MAAM,KAAKjB,SAAS,IAAI4B,KAAK,IAAIpC,KAAK,CAAC2F,SAAS,CAACvD,KAAK,CAACwD,MAAM,CAAC,EAAE;UACxE7D,KAAK,CAACN,MAAM,GAAGzB,KAAK,CAAC6F,WAAW,CAAC9D,KAAK,CAACN,MAAM,EAAEO,OAAO,CAACgB,QAAQ,CAAC;QAClE;QACA,IAAIjB,KAAK,CAACuB,SAAS,KAAK,QAAQ,EAAE;UAChC,IAAIvB,KAAK,CAACU,GAAG,EAAE;YACb;YACAT,OAAO,CAACyB,QAAQ,CAAC1B,KAAK,CAACwB,EAAE,CAAC,GAAGxB,KAAK,CAACW,OAAO;UAC5C,CAAC,MAAM;YACL;YACAX,KAAK,CAAC2B,aAAa,GAAG1B,OAAO,CAACyB,QAAQ,CAAC1B,KAAK,CAACwB,EAAE,CAAC;YAChD,OAAOxB,KAAK,CAACuB,SAAS;UACxB;UACA,OAAOvB,KAAK,CAACwB,EAAE;QACjB;QACA;MAEF;QACE;IACJ;;IAEA;IACA,MAAMvC,SAAS,GAAGgB,OAAO,CAAC8D,YAAY,CAAC/D,KAAK,CAACW,OAAO,CAAC;IACrD,IAAI1B,SAAS,EAAE;MACb,IAAIe,KAAK,CAACP,IAAI,KAAKpB,KAAK,CAACK,SAAS,CAACU,OAAO,EAAE;QAC1CY,KAAK,CAAChB,IAAI,GAAGgB,KAAK,CAACN,MAAM;QACzBM,KAAK,CAACN,MAAM,GAAGjB,SAAS;MAC1B,CAAC,MAAM;QACLuB,KAAK,CAAChB,IAAI,GAAGgB,KAAK,CAACgB,KAAK;QACxBhB,KAAK,CAACgB,KAAK,GAAGvC,SAAS;MACzB;MACAuB,KAAK,CAACP,IAAI,GAAGpB,KAAK,CAACK,SAAS,CAACQ,SAAS;MACtCc,KAAK,CAACf,SAAS,GAAGA,SAAS;IAC7B;IAEA,MAAMqB,OAAO,GAAGL,OAAO,CAAC+D,WAAW,IAAI/D,OAAO,CAAC+D,WAAW,CAAChE,KAAK,CAACW,OAAO,CAAC;IACzE,IAAIL,OAAO,EAAE;MACXN,KAAK,CAACM,OAAO,GAAGA,OAAO;IACzB;EACF;AACF;AAEA2D,MAAM,CAACC,OAAO,GAAGvE,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"cell-xform.js","names":["utils","require","BaseXform","Range","Enums","RichTextXform","getValueType","v","undefined","ValueType","Null","String","Number","Boolean","Date","text","hyperlink","Hyperlink","formula","Formula","error","Error","getEffectiveCellType","cell","type","result","CellXform","constructor","richTextXForm","tag","prepare","model","options","styleId","styles","addStyleModel","style","comment","comments","push","ref","address","RichText","sharedStrings","ssId","add","value","date1904","hyperlinks","target","tooltip","Merge","merges","shareType","si","siFormulae","formulae","sharedFormula","master","range","expandToAddress","renderFormula","xmlStream","attrs","t","leafNode","addAttribute","dateToExcel","render","openNode","richText","forEach","closeNode","parseOpen","node","parser","name","attributes","r","s","parseInt","currentNode","parseText","parseClose","xmlDecode","parseFloat","reconcile","getStyleModel","getString","isDateFmt","numFmt","excelToDate","hyperlinkMap","commentsMap","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/cell-xform.js"],"sourcesContent":["const utils = require('../../../utils/utils');\nconst BaseXform = require('../base-xform');\nconst Range = require('../../../doc/range');\nconst Enums = require('../../../doc/enums');\n\nconst RichTextXform = require('../strings/rich-text-xform');\n\nfunction getValueType(v) {\n if (v === null || v === undefined) {\n return Enums.ValueType.Null;\n }\n if (v instanceof String || typeof v === 'string') {\n return Enums.ValueType.String;\n }\n if (typeof v === 'number') {\n return Enums.ValueType.Number;\n }\n if (typeof v === 'boolean') {\n return Enums.ValueType.Boolean;\n }\n if (v instanceof Date) {\n return Enums.ValueType.Date;\n }\n if (v.text && v.hyperlink) {\n return Enums.ValueType.Hyperlink;\n }\n if (v.formula) {\n return Enums.ValueType.Formula;\n }\n if (v.error) {\n return Enums.ValueType.Error;\n }\n throw new Error('I could not understand type of value');\n}\n\nfunction getEffectiveCellType(cell) {\n switch (cell.type) {\n case Enums.ValueType.Formula:\n return getValueType(cell.result);\n default:\n return cell.type;\n }\n}\n\nclass CellXform extends BaseXform {\n constructor() {\n super();\n\n this.richTextXForm = new RichTextXform();\n }\n\n get tag() {\n return 'c';\n }\n\n prepare(model, options) {\n const styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model));\n if (styleId) {\n model.styleId = styleId;\n }\n\n if (model.comment) {\n options.comments.push({...model.comment, ref: model.address});\n }\n\n switch (model.type) {\n case Enums.ValueType.String:\n case Enums.ValueType.RichText:\n if (options.sharedStrings) {\n model.ssId = options.sharedStrings.add(model.value);\n }\n break;\n\n case Enums.ValueType.Date:\n if (options.date1904) {\n model.date1904 = true;\n }\n break;\n\n case Enums.ValueType.Hyperlink:\n if (options.sharedStrings && model.text !== undefined && model.text !== null) {\n model.ssId = options.sharedStrings.add(model.text);\n }\n options.hyperlinks.push({\n address: model.address,\n target: model.hyperlink,\n tooltip: model.tooltip,\n });\n break;\n\n case Enums.ValueType.Merge:\n options.merges.add(model);\n break;\n\n case Enums.ValueType.Formula:\n if (options.date1904) {\n // in case valueType is date\n model.date1904 = true;\n }\n\n if (model.shareType === 'shared') {\n model.si = options.siFormulae++;\n }\n\n if (model.formula) {\n options.formulae[model.address] = model;\n } else if (model.sharedFormula) {\n const master = options.formulae[model.sharedFormula];\n if (!master) {\n throw new Error(\n `Shared Formula master must exist above and or left of clone for cell ${model.address}`\n );\n }\n if (master.si === undefined) {\n master.shareType = 'shared';\n master.si = options.siFormulae++;\n master.range = new Range(master.address, model.address);\n } else if (master.range) {\n master.range.expandToAddress(model.address);\n }\n model.si = master.si;\n }\n break;\n\n default:\n break;\n }\n }\n\n renderFormula(xmlStream, model) {\n let attrs = null;\n switch (model.shareType) {\n case 'shared':\n attrs = {\n t: 'shared',\n ref: model.ref || model.range.range,\n si: model.si,\n };\n break;\n\n case 'array':\n attrs = {\n t: 'array',\n ref: model.ref,\n };\n break;\n\n default:\n if (model.si !== undefined) {\n attrs = {\n t: 'shared',\n si: model.si,\n };\n }\n break;\n }\n\n switch (getValueType(model.result)) {\n case Enums.ValueType.Null: // ?\n xmlStream.leafNode('f', attrs, model.formula);\n break;\n\n case Enums.ValueType.String:\n // oddly, formula results don't ever use shared strings\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result);\n break;\n\n case Enums.ValueType.Number:\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result);\n break;\n\n case Enums.ValueType.Boolean:\n xmlStream.addAttribute('t', 'b');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result ? 1 : 0);\n break;\n\n case Enums.ValueType.Error:\n xmlStream.addAttribute('t', 'e');\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, model.result.error);\n break;\n\n case Enums.ValueType.Date:\n xmlStream.leafNode('f', attrs, model.formula);\n xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904));\n break;\n\n // case Enums.ValueType.Hyperlink: // ??\n // case Enums.ValueType.Formula:\n default:\n throw new Error('I could not understand type of value');\n }\n }\n\n render(xmlStream, model) {\n if (model.type === Enums.ValueType.Null && !model.styleId) {\n // if null and no style, exit\n return;\n }\n\n xmlStream.openNode('c');\n xmlStream.addAttribute('r', model.address);\n\n if (model.styleId) {\n xmlStream.addAttribute('s', model.styleId);\n }\n\n switch (model.type) {\n case Enums.ValueType.Null:\n break;\n\n case Enums.ValueType.Number:\n xmlStream.leafNode('v', null, model.value);\n break;\n\n case Enums.ValueType.Boolean:\n xmlStream.addAttribute('t', 'b');\n xmlStream.leafNode('v', null, model.value ? '1' : '0');\n break;\n\n case Enums.ValueType.Error:\n xmlStream.addAttribute('t', 'e');\n xmlStream.leafNode('v', null, model.value.error);\n break;\n\n case Enums.ValueType.String:\n case Enums.ValueType.RichText:\n if (model.ssId !== undefined) {\n xmlStream.addAttribute('t', 's');\n xmlStream.leafNode('v', null, model.ssId);\n } else if (model.value && model.value.richText) {\n xmlStream.addAttribute('t', 'inlineStr');\n xmlStream.openNode('is');\n model.value.richText.forEach(text => {\n this.richTextXForm.render(xmlStream, text);\n });\n xmlStream.closeNode('is');\n } else {\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('v', null, model.value);\n }\n break;\n\n case Enums.ValueType.Date:\n xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904));\n break;\n\n case Enums.ValueType.Hyperlink:\n if (model.ssId !== undefined) {\n xmlStream.addAttribute('t', 's');\n xmlStream.leafNode('v', null, model.ssId);\n } else {\n xmlStream.addAttribute('t', 'str');\n xmlStream.leafNode('v', null, model.text);\n }\n break;\n\n case Enums.ValueType.Formula:\n this.renderFormula(xmlStream, model);\n break;\n\n case Enums.ValueType.Merge:\n // nothing to add\n break;\n\n default:\n break;\n }\n\n xmlStream.closeNode(); // </c>\n }\n\n parseOpen(node) {\n if (this.parser) {\n this.parser.parseOpen(node);\n return true;\n }\n switch (node.name) {\n case 'c':\n // const address = colCache.decodeAddress(node.attributes.r);\n this.model = {\n address: node.attributes.r,\n };\n this.t = node.attributes.t;\n if (node.attributes.s) {\n this.model.styleId = parseInt(node.attributes.s, 10);\n }\n return true;\n\n case 'f':\n this.currentNode = 'f';\n this.model.si = node.attributes.si;\n this.model.shareType = node.attributes.t;\n this.model.ref = node.attributes.ref;\n return true;\n\n case 'v':\n this.currentNode = 'v';\n return true;\n\n case 't':\n this.currentNode = 't';\n return true;\n\n case 'r':\n this.parser = this.richTextXForm;\n this.parser.parseOpen(node);\n return true;\n\n default:\n return false;\n }\n }\n\n parseText(text) {\n if (this.parser) {\n this.parser.parseText(text);\n return;\n }\n switch (this.currentNode) {\n case 'f':\n this.model.formula = this.model.formula ? this.model.formula + text : text;\n break;\n case 'v':\n case 't':\n if (this.model.value && this.model.value.richText) {\n this.model.value.richText.text = this.model.value.richText.text\n ? this.model.value.richText.text + text\n : text;\n } else {\n this.model.value = this.model.value ? this.model.value + text : text;\n }\n break;\n default:\n break;\n }\n }\n\n parseClose(name) {\n switch (name) {\n case 'c': {\n const {model} = this;\n\n // first guess on cell type\n if (model.formula || model.shareType) {\n model.type = Enums.ValueType.Formula;\n if (model.value) {\n if (this.t === 'str') {\n model.result = utils.xmlDecode(model.value);\n } else if (this.t === 'b') {\n model.result = parseInt(model.value, 10) !== 0;\n } else if (this.t === 'e') {\n model.result = {error: model.value};\n } else {\n model.result = parseFloat(model.value);\n }\n model.value = undefined;\n }\n } else if (model.value !== undefined) {\n switch (this.t) {\n case 's':\n model.type = Enums.ValueType.String;\n model.value = parseInt(model.value, 10);\n break;\n case 'str':\n model.type = Enums.ValueType.String;\n model.value = utils.xmlDecode(model.value);\n break;\n case 'inlineStr':\n model.type = Enums.ValueType.String;\n break;\n case 'b':\n model.type = Enums.ValueType.Boolean;\n model.value = parseInt(model.value, 10) !== 0;\n break;\n case 'e':\n model.type = Enums.ValueType.Error;\n model.value = {error: model.value};\n break;\n default:\n model.type = Enums.ValueType.Number;\n model.value = parseFloat(model.value);\n break;\n }\n } else if (model.styleId) {\n model.type = Enums.ValueType.Null;\n } else {\n model.type = Enums.ValueType.Merge;\n }\n return false;\n }\n\n case 'f':\n case 'v':\n case 'is':\n this.currentNode = undefined;\n return true;\n\n case 't':\n if (this.parser) {\n this.parser.parseClose(name);\n return true;\n }\n this.currentNode = undefined;\n return true;\n\n case 'r':\n this.model.value = this.model.value || {};\n this.model.value.richText = this.model.value.richText || [];\n this.model.value.richText.push(this.parser.model);\n this.parser = undefined;\n this.currentNode = undefined;\n return true;\n\n default:\n if (this.parser) {\n this.parser.parseClose(name);\n return true;\n }\n return false;\n }\n }\n\n reconcile(model, options) {\n const style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId);\n if (style) {\n model.style = style;\n }\n if (model.styleId !== undefined) {\n model.styleId = undefined;\n }\n\n switch (model.type) {\n case Enums.ValueType.String:\n if (typeof model.value === 'number') {\n if (options.sharedStrings) {\n model.value = options.sharedStrings.getString(model.value);\n }\n }\n if (model.value.richText) {\n model.type = Enums.ValueType.RichText;\n }\n break;\n\n case Enums.ValueType.Number:\n if (style && utils.isDateFmt(style.numFmt)) {\n model.type = Enums.ValueType.Date;\n model.value = utils.excelToDate(model.value, options.date1904);\n }\n break;\n\n case Enums.ValueType.Formula:\n if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) {\n model.result = utils.excelToDate(model.result, options.date1904);\n }\n if (model.shareType === 'shared') {\n if (model.ref) {\n // master\n options.formulae[model.si] = model.address;\n } else {\n // slave\n model.sharedFormula = options.formulae[model.si];\n delete model.shareType;\n }\n delete model.si;\n }\n break;\n\n default:\n break;\n }\n\n // look for hyperlink\n const hyperlink = options.hyperlinkMap[model.address];\n if (hyperlink) {\n if (model.type === Enums.ValueType.Formula) {\n model.text = model.result;\n model.result = undefined;\n } else {\n model.text = model.value;\n model.value = undefined;\n }\n model.type = Enums.ValueType.Hyperlink;\n model.hyperlink = hyperlink;\n }\n\n const comment = options.commentsMap && options.commentsMap[model.address];\n if (comment) {\n model.comment = comment;\n }\n }\n}\n\nmodule.exports = CellXform;\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
3
  const BaseXform = require('../../base-xform');
9
4
  const CompositeXform = require('../../composite-xform');
10
5
  const Range = require('../../../../doc/range');
@@ -28,15 +23,15 @@ const getTextFormula = model => {
28
23
  } = range;
29
24
  switch (model.operator) {
30
25
  case 'containsText':
31
- return "NOT(ISERROR(SEARCH(\"".concat(model.text, "\",").concat(tl, ")))");
26
+ return `NOT(ISERROR(SEARCH("${model.text}",${tl})))`;
32
27
  case 'containsBlanks':
33
- return "LEN(TRIM(".concat(tl, "))=0");
28
+ return `LEN(TRIM(${tl}))=0`;
34
29
  case 'notContainsBlanks':
35
- return "LEN(TRIM(".concat(tl, "))>0");
30
+ return `LEN(TRIM(${tl}))>0`;
36
31
  case 'containsErrors':
37
- return "ISERROR(".concat(tl, ")");
32
+ return `ISERROR(${tl})`;
38
33
  case 'notContainsErrors':
39
- return "NOT(ISERROR(".concat(tl, "))");
34
+ return `NOT(ISERROR(${tl}))`;
40
35
  default:
41
36
  return undefined;
42
37
  }
@@ -51,25 +46,25 @@ const getTimePeriodFormula = model => {
51
46
  } = range;
52
47
  switch (model.timePeriod) {
53
48
  case 'thisWeek':
54
- return "AND(TODAY()-ROUNDDOWN(".concat(tl, ",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(tl, ",0)-TODAY()<=7-WEEKDAY(TODAY()))");
49
+ return `AND(TODAY()-ROUNDDOWN(${tl},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${tl},0)-TODAY()<=7-WEEKDAY(TODAY()))`;
55
50
  case 'lastWeek':
56
- return "AND(TODAY()-ROUNDDOWN(".concat(tl, ",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(tl, ",0)<(WEEKDAY(TODAY())+7))");
51
+ return `AND(TODAY()-ROUNDDOWN(${tl},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${tl},0)<(WEEKDAY(TODAY())+7))`;
57
52
  case 'nextWeek':
58
- return "AND(ROUNDDOWN(".concat(tl, ",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(tl, ",0)-TODAY()<(15-WEEKDAY(TODAY())))");
53
+ return `AND(ROUNDDOWN(${tl},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${tl},0)-TODAY()<(15-WEEKDAY(TODAY())))`;
59
54
  case 'yesterday':
60
- return "FLOOR(".concat(tl, ",1)=TODAY()-1");
55
+ return `FLOOR(${tl},1)=TODAY()-1`;
61
56
  case 'today':
62
- return "FLOOR(".concat(tl, ",1)=TODAY()");
57
+ return `FLOOR(${tl},1)=TODAY()`;
63
58
  case 'tomorrow':
64
- return "FLOOR(".concat(tl, ",1)=TODAY()+1");
59
+ return `FLOOR(${tl},1)=TODAY()+1`;
65
60
  case 'last7Days':
66
- return "AND(TODAY()-FLOOR(".concat(tl, ",1)<=6,FLOOR(").concat(tl, ",1)<=TODAY())");
61
+ return `AND(TODAY()-FLOOR(${tl},1)<=6,FLOOR(${tl},1)<=TODAY())`;
67
62
  case 'lastMonth':
68
- return "AND(MONTH(".concat(tl, ")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(tl, ")=YEAR(EDATE(TODAY(),0-1)))");
63
+ return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0-1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0-1)))`;
69
64
  case 'thisMonth':
70
- return "AND(MONTH(".concat(tl, ")=MONTH(TODAY()),YEAR(").concat(tl, ")=YEAR(TODAY()))");
65
+ return `AND(MONTH(${tl})=MONTH(TODAY()),YEAR(${tl})=YEAR(TODAY()))`;
71
66
  case 'nextMonth':
72
- return "AND(MONTH(".concat(tl, ")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(tl, ")=YEAR(EDATE(TODAY(),0+1)))");
67
+ return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0+1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0+1)))`;
73
68
  default:
74
69
  return undefined;
75
70
  }
@@ -248,7 +243,8 @@ class CfRuleXform extends CompositeXform {
248
243
  let {
249
244
  attributes
250
245
  } = _ref;
251
- return _objectSpread(_objectSpread({}, opType(attributes)), {}, {
246
+ return {
247
+ ...opType(attributes),
252
248
  dxfId: BaseXform.toIntValue(attributes.dxfId),
253
249
  priority: BaseXform.toIntValue(attributes.priority),
254
250
  timePeriod: attributes.timePeriod,
@@ -256,7 +252,7 @@ class CfRuleXform extends CompositeXform {
256
252
  bottom: BaseXform.toBoolValue(attributes.bottom),
257
253
  rank: BaseXform.toIntValue(attributes.rank),
258
254
  aboveAverage: BaseXform.toBoolValue(attributes.aboveAverage)
259
- });
255
+ };
260
256
  }
261
257
  onParserClose(name, parser) {
262
258
  switch (name) {
@@ -1 +1 @@
1
- {"version":3,"file":"cf-rule-xform.js","names":["BaseXform","require","CompositeXform","Range","DatabarXform","ExtLstRefXform","FormulaXform","ColorScaleXform","IconSetXform","extIcons","getTextFormula","model","formulae","range","ref","tl","operator","concat","text","undefined","getTimePeriodFormula","timePeriod","opType","attributes","type","CfRuleXform","constructor","map","dataBar","databarXform","extLst","extLstRefXform","formula","formulaXform","colorScale","colorScaleXform","iconSet","iconSetXform","tag","isPrimitive","rule","custom","render","xmlStream","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderDataBar","renderColorScale","renderIconSet","renderText","renderTimePeriod","openNode","dxfId","priority","closeNode","forEach","leafNode","percent","toBoolAttribute","bottom","rank","toIntValue","aboveAverage","toStringAttribute","createNewModel","_ref","_objectSpread","toBoolValue","onParserClose","name","parser","Object","assign","push","module","exports"],"sources":["../../../../../../lib/xlsx/xform/sheet/cf/cf-rule-xform.js"],"sourcesContent":["const BaseXform = require('../../base-xform');\nconst CompositeXform = require('../../composite-xform');\n\nconst Range = require('../../../../doc/range');\n\nconst DatabarXform = require('./databar-xform');\nconst ExtLstRefXform = require('./ext-lst-ref-xform');\nconst FormulaXform = require('./formula-xform');\nconst ColorScaleXform = require('./color-scale-xform');\nconst IconSetXform = require('./icon-set-xform');\n\nconst extIcons = {\n '3Triangles': true,\n '3Stars': true,\n '5Boxes': true,\n};\n\nconst getTextFormula = model => {\n if (model.formulae && model.formulae[0]) {\n return model.formulae[0];\n }\n\n const range = new Range(model.ref);\n const {tl} = range;\n switch (model.operator) {\n case 'containsText':\n return `NOT(ISERROR(SEARCH(\"${model.text}\",${tl})))`;\n case 'containsBlanks':\n return `LEN(TRIM(${tl}))=0`;\n case 'notContainsBlanks':\n return `LEN(TRIM(${tl}))>0`;\n case 'containsErrors':\n return `ISERROR(${tl})`;\n case 'notContainsErrors':\n return `NOT(ISERROR(${tl}))`;\n default:\n return undefined;\n }\n};\n\nconst getTimePeriodFormula = model => {\n if (model.formulae && model.formulae[0]) {\n return model.formulae[0];\n }\n\n const range = new Range(model.ref);\n const {tl} = range;\n switch (model.timePeriod) {\n case 'thisWeek':\n return `AND(TODAY()-ROUNDDOWN(${tl},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${tl},0)-TODAY()<=7-WEEKDAY(TODAY()))`;\n case 'lastWeek':\n return `AND(TODAY()-ROUNDDOWN(${tl},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${tl},0)<(WEEKDAY(TODAY())+7))`;\n case 'nextWeek':\n return `AND(ROUNDDOWN(${tl},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${tl},0)-TODAY()<(15-WEEKDAY(TODAY())))`;\n case 'yesterday':\n return `FLOOR(${tl},1)=TODAY()-1`;\n case 'today':\n return `FLOOR(${tl},1)=TODAY()`;\n case 'tomorrow':\n return `FLOOR(${tl},1)=TODAY()+1`;\n case 'last7Days':\n return `AND(TODAY()-FLOOR(${tl},1)<=6,FLOOR(${tl},1)<=TODAY())`;\n case 'lastMonth':\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0-1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0-1)))`;\n case 'thisMonth':\n return `AND(MONTH(${tl})=MONTH(TODAY()),YEAR(${tl})=YEAR(TODAY()))`;\n case 'nextMonth':\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0+1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0+1)))`;\n default:\n return undefined;\n }\n};\n\nconst opType = attributes => {\n const {type, operator} = attributes;\n switch (type) {\n case 'containsText':\n case 'containsBlanks':\n case 'notContainsBlanks':\n case 'containsErrors':\n case 'notContainsErrors':\n return {\n type: 'containsText',\n operator: type,\n };\n\n default:\n return {type, operator};\n }\n};\n\nclass CfRuleXform extends CompositeXform {\n constructor() {\n super();\n\n this.map = {\n dataBar: (this.databarXform = new DatabarXform()),\n extLst: (this.extLstRefXform = new ExtLstRefXform()),\n formula: (this.formulaXform = new FormulaXform()),\n colorScale: (this.colorScaleXform = new ColorScaleXform()),\n iconSet: (this.iconSetXform = new IconSetXform()),\n };\n }\n\n get tag() {\n return 'cfRule';\n }\n\n static isPrimitive(rule) {\n // is this rule primitive?\n if (rule.type === 'iconSet') {\n if (rule.custom || extIcons[rule.iconSet]) {\n return false;\n }\n }\n return true;\n }\n\n render(xmlStream, model) {\n switch (model.type) {\n case 'expression':\n this.renderExpression(xmlStream, model);\n break;\n case 'cellIs':\n this.renderCellIs(xmlStream, model);\n break;\n case 'top10':\n this.renderTop10(xmlStream, model);\n break;\n case 'aboveAverage':\n this.renderAboveAverage(xmlStream, model);\n break;\n case 'dataBar':\n this.renderDataBar(xmlStream, model);\n break;\n case 'colorScale':\n this.renderColorScale(xmlStream, model);\n break;\n case 'iconSet':\n this.renderIconSet(xmlStream, model);\n break;\n case 'containsText':\n this.renderText(xmlStream, model);\n break;\n case 'timePeriod':\n this.renderTimePeriod(xmlStream, model);\n break;\n }\n }\n\n renderExpression(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'expression',\n dxfId: model.dxfId,\n priority: model.priority,\n });\n\n this.formulaXform.render(xmlStream, model.formulae[0]);\n\n xmlStream.closeNode();\n }\n\n renderCellIs(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'cellIs',\n dxfId: model.dxfId,\n priority: model.priority,\n operator: model.operator,\n });\n\n model.formulae.forEach(formula => {\n this.formulaXform.render(xmlStream, formula);\n });\n\n xmlStream.closeNode();\n }\n\n renderTop10(xmlStream, model) {\n xmlStream.leafNode(this.tag, {\n type: 'top10',\n dxfId: model.dxfId,\n priority: model.priority,\n percent: BaseXform.toBoolAttribute(model.percent, false),\n bottom: BaseXform.toBoolAttribute(model.bottom, false),\n rank: BaseXform.toIntValue(model.rank, 10, true),\n });\n }\n\n renderAboveAverage(xmlStream, model) {\n xmlStream.leafNode(this.tag, {\n type: 'aboveAverage',\n dxfId: model.dxfId,\n priority: model.priority,\n aboveAverage: BaseXform.toBoolAttribute(model.aboveAverage, true),\n });\n }\n\n renderDataBar(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'dataBar',\n priority: model.priority,\n });\n\n this.databarXform.render(xmlStream, model);\n this.extLstRefXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderColorScale(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'colorScale',\n priority: model.priority,\n });\n\n this.colorScaleXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderIconSet(xmlStream, model) {\n // iconset is all primitive or all extLst\n if (!CfRuleXform.isPrimitive(model)) {\n return;\n }\n\n xmlStream.openNode(this.tag, {\n type: 'iconSet',\n priority: model.priority,\n });\n\n this.iconSetXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderText(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: model.operator,\n dxfId: model.dxfId,\n priority: model.priority,\n operator: BaseXform.toStringAttribute(model.operator, 'containsText'),\n });\n\n const formula = getTextFormula(model);\n if (formula) {\n this.formulaXform.render(xmlStream, formula);\n }\n\n xmlStream.closeNode();\n }\n\n renderTimePeriod(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'timePeriod',\n dxfId: model.dxfId,\n priority: model.priority,\n timePeriod: model.timePeriod,\n });\n\n const formula = getTimePeriodFormula(model);\n if (formula) {\n this.formulaXform.render(xmlStream, formula);\n }\n\n xmlStream.closeNode();\n }\n\n createNewModel({attributes}) {\n return {\n ...opType(attributes),\n dxfId: BaseXform.toIntValue(attributes.dxfId),\n priority: BaseXform.toIntValue(attributes.priority),\n timePeriod: attributes.timePeriod,\n percent: BaseXform.toBoolValue(attributes.percent),\n bottom: BaseXform.toBoolValue(attributes.bottom),\n rank: BaseXform.toIntValue(attributes.rank),\n aboveAverage: BaseXform.toBoolValue(attributes.aboveAverage),\n };\n }\n\n onParserClose(name, parser) {\n switch (name) {\n case 'dataBar':\n case 'extLst':\n case 'colorScale':\n case 'iconSet':\n // merge parser model with ours\n Object.assign(this.model, parser.model);\n break;\n\n case 'formula':\n // except - formula is a string and appends to formulae\n this.model.formulae = this.model.formulae || [];\n this.model.formulae.push(parser.model);\n break;\n }\n }\n}\n\nmodule.exports = CfRuleXform;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"cf-rule-xform.js","names":["BaseXform","require","CompositeXform","Range","DatabarXform","ExtLstRefXform","FormulaXform","ColorScaleXform","IconSetXform","extIcons","getTextFormula","model","formulae","range","ref","tl","operator","text","undefined","getTimePeriodFormula","timePeriod","opType","attributes","type","CfRuleXform","constructor","map","dataBar","databarXform","extLst","extLstRefXform","formula","formulaXform","colorScale","colorScaleXform","iconSet","iconSetXform","tag","isPrimitive","rule","custom","render","xmlStream","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderDataBar","renderColorScale","renderIconSet","renderText","renderTimePeriod","openNode","dxfId","priority","closeNode","forEach","leafNode","percent","toBoolAttribute","bottom","rank","toIntValue","aboveAverage","toStringAttribute","createNewModel","_ref","toBoolValue","onParserClose","name","parser","Object","assign","push","module","exports"],"sources":["../../../../../../lib/xlsx/xform/sheet/cf/cf-rule-xform.js"],"sourcesContent":["const BaseXform = require('../../base-xform');\nconst CompositeXform = require('../../composite-xform');\n\nconst Range = require('../../../../doc/range');\n\nconst DatabarXform = require('./databar-xform');\nconst ExtLstRefXform = require('./ext-lst-ref-xform');\nconst FormulaXform = require('./formula-xform');\nconst ColorScaleXform = require('./color-scale-xform');\nconst IconSetXform = require('./icon-set-xform');\n\nconst extIcons = {\n '3Triangles': true,\n '3Stars': true,\n '5Boxes': true,\n};\n\nconst getTextFormula = model => {\n if (model.formulae && model.formulae[0]) {\n return model.formulae[0];\n }\n\n const range = new Range(model.ref);\n const {tl} = range;\n switch (model.operator) {\n case 'containsText':\n return `NOT(ISERROR(SEARCH(\"${model.text}\",${tl})))`;\n case 'containsBlanks':\n return `LEN(TRIM(${tl}))=0`;\n case 'notContainsBlanks':\n return `LEN(TRIM(${tl}))>0`;\n case 'containsErrors':\n return `ISERROR(${tl})`;\n case 'notContainsErrors':\n return `NOT(ISERROR(${tl}))`;\n default:\n return undefined;\n }\n};\n\nconst getTimePeriodFormula = model => {\n if (model.formulae && model.formulae[0]) {\n return model.formulae[0];\n }\n\n const range = new Range(model.ref);\n const {tl} = range;\n switch (model.timePeriod) {\n case 'thisWeek':\n return `AND(TODAY()-ROUNDDOWN(${tl},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${tl},0)-TODAY()<=7-WEEKDAY(TODAY()))`;\n case 'lastWeek':\n return `AND(TODAY()-ROUNDDOWN(${tl},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${tl},0)<(WEEKDAY(TODAY())+7))`;\n case 'nextWeek':\n return `AND(ROUNDDOWN(${tl},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${tl},0)-TODAY()<(15-WEEKDAY(TODAY())))`;\n case 'yesterday':\n return `FLOOR(${tl},1)=TODAY()-1`;\n case 'today':\n return `FLOOR(${tl},1)=TODAY()`;\n case 'tomorrow':\n return `FLOOR(${tl},1)=TODAY()+1`;\n case 'last7Days':\n return `AND(TODAY()-FLOOR(${tl},1)<=6,FLOOR(${tl},1)<=TODAY())`;\n case 'lastMonth':\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0-1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0-1)))`;\n case 'thisMonth':\n return `AND(MONTH(${tl})=MONTH(TODAY()),YEAR(${tl})=YEAR(TODAY()))`;\n case 'nextMonth':\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0+1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0+1)))`;\n default:\n return undefined;\n }\n};\n\nconst opType = attributes => {\n const {type, operator} = attributes;\n switch (type) {\n case 'containsText':\n case 'containsBlanks':\n case 'notContainsBlanks':\n case 'containsErrors':\n case 'notContainsErrors':\n return {\n type: 'containsText',\n operator: type,\n };\n\n default:\n return {type, operator};\n }\n};\n\nclass CfRuleXform extends CompositeXform {\n constructor() {\n super();\n\n this.map = {\n dataBar: (this.databarXform = new DatabarXform()),\n extLst: (this.extLstRefXform = new ExtLstRefXform()),\n formula: (this.formulaXform = new FormulaXform()),\n colorScale: (this.colorScaleXform = new ColorScaleXform()),\n iconSet: (this.iconSetXform = new IconSetXform()),\n };\n }\n\n get tag() {\n return 'cfRule';\n }\n\n static isPrimitive(rule) {\n // is this rule primitive?\n if (rule.type === 'iconSet') {\n if (rule.custom || extIcons[rule.iconSet]) {\n return false;\n }\n }\n return true;\n }\n\n render(xmlStream, model) {\n switch (model.type) {\n case 'expression':\n this.renderExpression(xmlStream, model);\n break;\n case 'cellIs':\n this.renderCellIs(xmlStream, model);\n break;\n case 'top10':\n this.renderTop10(xmlStream, model);\n break;\n case 'aboveAverage':\n this.renderAboveAverage(xmlStream, model);\n break;\n case 'dataBar':\n this.renderDataBar(xmlStream, model);\n break;\n case 'colorScale':\n this.renderColorScale(xmlStream, model);\n break;\n case 'iconSet':\n this.renderIconSet(xmlStream, model);\n break;\n case 'containsText':\n this.renderText(xmlStream, model);\n break;\n case 'timePeriod':\n this.renderTimePeriod(xmlStream, model);\n break;\n }\n }\n\n renderExpression(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'expression',\n dxfId: model.dxfId,\n priority: model.priority,\n });\n\n this.formulaXform.render(xmlStream, model.formulae[0]);\n\n xmlStream.closeNode();\n }\n\n renderCellIs(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'cellIs',\n dxfId: model.dxfId,\n priority: model.priority,\n operator: model.operator,\n });\n\n model.formulae.forEach(formula => {\n this.formulaXform.render(xmlStream, formula);\n });\n\n xmlStream.closeNode();\n }\n\n renderTop10(xmlStream, model) {\n xmlStream.leafNode(this.tag, {\n type: 'top10',\n dxfId: model.dxfId,\n priority: model.priority,\n percent: BaseXform.toBoolAttribute(model.percent, false),\n bottom: BaseXform.toBoolAttribute(model.bottom, false),\n rank: BaseXform.toIntValue(model.rank, 10, true),\n });\n }\n\n renderAboveAverage(xmlStream, model) {\n xmlStream.leafNode(this.tag, {\n type: 'aboveAverage',\n dxfId: model.dxfId,\n priority: model.priority,\n aboveAverage: BaseXform.toBoolAttribute(model.aboveAverage, true),\n });\n }\n\n renderDataBar(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'dataBar',\n priority: model.priority,\n });\n\n this.databarXform.render(xmlStream, model);\n this.extLstRefXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderColorScale(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'colorScale',\n priority: model.priority,\n });\n\n this.colorScaleXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderIconSet(xmlStream, model) {\n // iconset is all primitive or all extLst\n if (!CfRuleXform.isPrimitive(model)) {\n return;\n }\n\n xmlStream.openNode(this.tag, {\n type: 'iconSet',\n priority: model.priority,\n });\n\n this.iconSetXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderText(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: model.operator,\n dxfId: model.dxfId,\n priority: model.priority,\n operator: BaseXform.toStringAttribute(model.operator, 'containsText'),\n });\n\n const formula = getTextFormula(model);\n if (formula) {\n this.formulaXform.render(xmlStream, formula);\n }\n\n xmlStream.closeNode();\n }\n\n renderTimePeriod(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'timePeriod',\n dxfId: model.dxfId,\n priority: model.priority,\n timePeriod: model.timePeriod,\n });\n\n const formula = getTimePeriodFormula(model);\n if (formula) {\n this.formulaXform.render(xmlStream, formula);\n }\n\n xmlStream.closeNode();\n }\n\n createNewModel({attributes}) {\n return {\n ...opType(attributes),\n dxfId: BaseXform.toIntValue(attributes.dxfId),\n priority: BaseXform.toIntValue(attributes.priority),\n timePeriod: attributes.timePeriod,\n percent: BaseXform.toBoolValue(attributes.percent),\n bottom: BaseXform.toBoolValue(attributes.bottom),\n rank: BaseXform.toIntValue(attributes.rank),\n aboveAverage: BaseXform.toBoolValue(attributes.aboveAverage),\n };\n }\n\n onParserClose(name, parser) {\n switch (name) {\n case 'dataBar':\n case 'extLst':\n case 'colorScale':\n case 'iconSet':\n // merge parser model with ours\n Object.assign(this.model, parser.model);\n break;\n\n case 'formula':\n // except - formula is a string and appends to formulae\n this.model.formulae = this.model.formulae || [];\n this.model.formulae.push(parser.model);\n break;\n }\n }\n}\n\nmodule.exports = CfRuleXform;\n"],"mappings":"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","ignoreList":[]}
@@ -37,7 +37,7 @@ class CfRuleExtXform extends CompositeXform {
37
37
  }
38
38
  prepare(model) {
39
39
  if (CfRuleExtXform.isExt(model)) {
40
- model.x14Id = "{".concat(uuidv4(), "}").toUpperCase();
40
+ model.x14Id = `{${uuidv4()}}`.toUpperCase();
41
41
  }
42
42
  }
43
43
  render(xmlStream, model) {
@@ -65,7 +65,7 @@ class CfRuleExtXform extends CompositeXform {
65
65
  xmlStream.openNode(this.tag, {
66
66
  type: 'iconSet',
67
67
  priority: model.priority,
68
- id: model.x14Id || "{".concat(uuidv4(), "}")
68
+ id: model.x14Id || `{${uuidv4()}}`
69
69
  });
70
70
  this.iconSetXform.render(xmlStream, model);
71
71
  xmlStream.closeNode();
@@ -1 +1 @@
1
- {"version":3,"file":"cf-rule-ext-xform.js","names":["v4","uuidv4","require","BaseXform","CompositeXform","DatabarExtXform","IconSetExtXform","extIcons","CfRuleExtXform","constructor","map","databarXform","iconSetXform","tag","isExt","rule","type","custom","iconSet","prepare","model","x14Id","concat","toUpperCase","render","xmlStream","renderDataBar","renderIconSet","openNode","id","closeNode","priority","createNewModel","_ref","attributes","toIntValue","onParserClose","name","parser","Object","assign","module","exports"],"sources":["../../../../../../lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js"],"sourcesContent":["const {v4: uuidv4} = require('uuid');\nconst BaseXform = require('../../base-xform');\nconst CompositeXform = require('../../composite-xform');\n\nconst DatabarExtXform = require('./databar-ext-xform');\nconst IconSetExtXform = require('./icon-set-ext-xform');\n\nconst extIcons = {\n '3Triangles': true,\n '3Stars': true,\n '5Boxes': true,\n};\n\nclass CfRuleExtXform extends CompositeXform {\n constructor() {\n super();\n\n this.map = {\n 'x14:dataBar': (this.databarXform = new DatabarExtXform()),\n 'x14:iconSet': (this.iconSetXform = new IconSetExtXform()),\n };\n }\n\n get tag() {\n return 'x14:cfRule';\n }\n\n static isExt(rule) {\n // is this rule primitive?\n if (rule.type === 'dataBar') {\n return DatabarExtXform.isExt(rule);\n }\n if (rule.type === 'iconSet') {\n if (rule.custom || extIcons[rule.iconSet]) {\n return true;\n }\n }\n return false;\n }\n\n prepare(model) {\n if (CfRuleExtXform.isExt(model)) {\n model.x14Id = `{${uuidv4()}}`.toUpperCase();\n }\n }\n\n render(xmlStream, model) {\n if (!CfRuleExtXform.isExt(model)) {\n return;\n }\n\n switch (model.type) {\n case 'dataBar':\n this.renderDataBar(xmlStream, model);\n break;\n case 'iconSet':\n this.renderIconSet(xmlStream, model);\n break;\n }\n }\n\n renderDataBar(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'dataBar',\n id: model.x14Id,\n });\n\n this.databarXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderIconSet(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'iconSet',\n priority: model.priority,\n id: model.x14Id || `{${uuidv4()}}`,\n });\n\n this.iconSetXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n createNewModel({attributes}) {\n return {\n type: attributes.type,\n x14Id: attributes.id,\n priority: BaseXform.toIntValue(attributes.priority),\n };\n }\n\n onParserClose(name, parser) {\n Object.assign(this.model, parser.model);\n }\n}\n\nmodule.exports = CfRuleExtXform;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"cf-rule-ext-xform.js","names":["v4","uuidv4","require","BaseXform","CompositeXform","DatabarExtXform","IconSetExtXform","extIcons","CfRuleExtXform","constructor","map","databarXform","iconSetXform","tag","isExt","rule","type","custom","iconSet","prepare","model","x14Id","toUpperCase","render","xmlStream","renderDataBar","renderIconSet","openNode","id","closeNode","priority","createNewModel","_ref","attributes","toIntValue","onParserClose","name","parser","Object","assign","module","exports"],"sources":["../../../../../../lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js"],"sourcesContent":["const {v4: uuidv4} = require('uuid');\nconst BaseXform = require('../../base-xform');\nconst CompositeXform = require('../../composite-xform');\n\nconst DatabarExtXform = require('./databar-ext-xform');\nconst IconSetExtXform = require('./icon-set-ext-xform');\n\nconst extIcons = {\n '3Triangles': true,\n '3Stars': true,\n '5Boxes': true,\n};\n\nclass CfRuleExtXform extends CompositeXform {\n constructor() {\n super();\n\n this.map = {\n 'x14:dataBar': (this.databarXform = new DatabarExtXform()),\n 'x14:iconSet': (this.iconSetXform = new IconSetExtXform()),\n };\n }\n\n get tag() {\n return 'x14:cfRule';\n }\n\n static isExt(rule) {\n // is this rule primitive?\n if (rule.type === 'dataBar') {\n return DatabarExtXform.isExt(rule);\n }\n if (rule.type === 'iconSet') {\n if (rule.custom || extIcons[rule.iconSet]) {\n return true;\n }\n }\n return false;\n }\n\n prepare(model) {\n if (CfRuleExtXform.isExt(model)) {\n model.x14Id = `{${uuidv4()}}`.toUpperCase();\n }\n }\n\n render(xmlStream, model) {\n if (!CfRuleExtXform.isExt(model)) {\n return;\n }\n\n switch (model.type) {\n case 'dataBar':\n this.renderDataBar(xmlStream, model);\n break;\n case 'iconSet':\n this.renderIconSet(xmlStream, model);\n break;\n }\n }\n\n renderDataBar(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'dataBar',\n id: model.x14Id,\n });\n\n this.databarXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n renderIconSet(xmlStream, model) {\n xmlStream.openNode(this.tag, {\n type: 'iconSet',\n priority: model.priority,\n id: model.x14Id || `{${uuidv4()}}`,\n });\n\n this.iconSetXform.render(xmlStream, model);\n\n xmlStream.closeNode();\n }\n\n createNewModel({attributes}) {\n return {\n type: attributes.type,\n x14Id: attributes.id,\n priority: BaseXform.toIntValue(attributes.priority),\n };\n }\n\n onParserClose(name, parser) {\n Object.assign(this.model, parser.model);\n }\n}\n\nmodule.exports = CfRuleExtXform;\n"],"mappings":";;AAAA,MAAM;EAACA,EAAE,EAAEC;AAAM,CAAC,GAAGC,OAAO,CAAC,MAAM,CAAC;AACpC,MAAMC,SAAS,GAAGD,OAAO,CAAC,kBAAkB,CAAC;AAC7C,MAAME,cAAc,GAAGF,OAAO,CAAC,uBAAuB,CAAC;AAEvD,MAAMG,eAAe,GAAGH,OAAO,CAAC,qBAAqB,CAAC;AACtD,MAAMI,eAAe,GAAGJ,OAAO,CAAC,sBAAsB,CAAC;AAEvD,MAAMK,QAAQ,GAAG;EACf,YAAY,EAAE,IAAI;EAClB,QAAQ,EAAE,IAAI;EACd,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,cAAc,SAASJ,cAAc,CAAC;EAC1CK,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,GAAG,GAAG;MACT,aAAa,EAAG,IAAI,CAACC,YAAY,GAAG,IAAIN,eAAe,CAAC,CAAE;MAC1D,aAAa,EAAG,IAAI,CAACO,YAAY,GAAG,IAAIN,eAAe,CAAC;IAC1D,CAAC;EACH;EAEA,IAAIO,GAAGA,CAAA,EAAG;IACR,OAAO,YAAY;EACrB;EAEA,OAAOC,KAAKA,CAACC,IAAI,EAAE;IACjB;IACA,IAAIA,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;MAC3B,OAAOX,eAAe,CAACS,KAAK,CAACC,IAAI,CAAC;IACpC;IACA,IAAIA,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;MAC3B,IAAID,IAAI,CAACE,MAAM,IAAIV,QAAQ,CAACQ,IAAI,CAACG,OAAO,CAAC,EAAE;QACzC,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,OAAOA,CAACC,KAAK,EAAE;IACb,IAAIZ,cAAc,CAACM,KAAK,CAACM,KAAK,CAAC,EAAE;MAC/BA,KAAK,CAACC,KAAK,GAAG,IAAIpB,MAAM,CAAC,CAAC,GAAG,CAACqB,WAAW,CAAC,CAAC;IAC7C;EACF;EAEAC,MAAMA,CAACC,SAAS,EAAEJ,KAAK,EAAE;IACvB,IAAI,CAACZ,cAAc,CAACM,KAAK,CAACM,KAAK,CAAC,EAAE;MAChC;IACF;IAEA,QAAQA,KAAK,CAACJ,IAAI;MAChB,KAAK,SAAS;QACZ,IAAI,CAACS,aAAa,CAACD,SAAS,EAAEJ,KAAK,CAAC;QACpC;MACF,KAAK,SAAS;QACZ,IAAI,CAACM,aAAa,CAACF,SAAS,EAAEJ,KAAK,CAAC;QACpC;IACJ;EACF;EAEAK,aAAaA,CAACD,SAAS,EAAEJ,KAAK,EAAE;IAC9BI,SAAS,CAACG,QAAQ,CAAC,IAAI,CAACd,GAAG,EAAE;MAC3BG,IAAI,EAAE,SAAS;MACfY,EAAE,EAAER,KAAK,CAACC;IACZ,CAAC,CAAC;IAEF,IAAI,CAACV,YAAY,CAACY,MAAM,CAACC,SAAS,EAAEJ,KAAK,CAAC;IAE1CI,SAAS,CAACK,SAAS,CAAC,CAAC;EACvB;EAEAH,aAAaA,CAACF,SAAS,EAAEJ,KAAK,EAAE;IAC9BI,SAAS,CAACG,QAAQ,CAAC,IAAI,CAACd,GAAG,EAAE;MAC3BG,IAAI,EAAE,SAAS;MACfc,QAAQ,EAAEV,KAAK,CAACU,QAAQ;MACxBF,EAAE,EAAER,KAAK,CAACC,KAAK,IAAI,IAAIpB,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,IAAI,CAACW,YAAY,CAACW,MAAM,CAACC,SAAS,EAAEJ,KAAK,CAAC;IAE1CI,SAAS,CAACK,SAAS,CAAC,CAAC;EACvB;EAEAE,cAAcA,CAAAC,IAAA,EAAe;IAAA,IAAd;MAACC;IAAU,CAAC,GAAAD,IAAA;IACzB,OAAO;MACLhB,IAAI,EAAEiB,UAAU,CAACjB,IAAI;MACrBK,KAAK,EAAEY,UAAU,CAACL,EAAE;MACpBE,QAAQ,EAAE3B,SAAS,CAAC+B,UAAU,CAACD,UAAU,CAACH,QAAQ;IACpD,CAAC;EACH;EAEAK,aAAaA,CAACC,IAAI,EAAEC,MAAM,EAAE;IAC1BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAACnB,KAAK,EAAEiB,MAAM,CAACjB,KAAK,CAAC;EACzC;AACF;AAEAoB,MAAM,CAACC,OAAO,GAAGjC,cAAc","ignoreList":[]}
@@ -1,10 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
3
  const _ = require('../../../utils/under-dash');
9
4
  const utils = require('../../../utils/utils');
10
5
  const colCache = require('../../../utils/col-cache');
@@ -49,9 +44,10 @@ function optimiseDataValidations(model) {
49
44
  const addr = colCache.decodeEx(dv.address);
50
45
  if (addr.dimensions) {
51
46
  dvMap[addr.dimensions].marked = true;
52
- return _objectSpread(_objectSpread({}, dv.dataValidation), {}, {
47
+ return {
48
+ ...dv.dataValidation,
53
49
  sqref: dv.address
54
- });
50
+ };
55
51
  }
56
52
 
57
53
  // iterate downwards - finding matching cells
@@ -79,13 +75,15 @@ function optimiseDataValidations(model) {
79
75
  if (height > 1 || width > 1) {
80
76
  const bottom = addr.row + (height - 1);
81
77
  const right = addr.col + (width - 1);
82
- return _objectSpread(_objectSpread({}, dv.dataValidation), {}, {
83
- sqref: "".concat(dv.address, ":").concat(colCache.encodeAddress(bottom, right))
84
- });
78
+ return {
79
+ ...dv.dataValidation,
80
+ sqref: `${dv.address}:${colCache.encodeAddress(bottom, right)}`
81
+ };
85
82
  }
86
- return _objectSpread(_objectSpread({}, dv.dataValidation), {}, {
83
+ return {
84
+ ...dv.dataValidation,
87
85
  sqref: dv.address
88
- });
86
+ };
89
87
  }
90
88
  return null;
91
89
  }).filter(Boolean);
@@ -134,7 +132,7 @@ class DataValidationsXform extends BaseXform {
134
132
  }
135
133
  xmlStream.addAttribute('sqref', value.sqref);
136
134
  (value.formulae || []).forEach((formula, index) => {
137
- xmlStream.openNode("formula".concat(index + 1));
135
+ xmlStream.openNode(`formula${index + 1}`);
138
136
  if (value.type === 'date') {
139
137
  xmlStream.writeText(utils.dateToExcel(new Date(formula)));
140
138
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"data-validations-xform.js","names":["_","require","utils","colCache","BaseXform","Range","assign","definedName","attributes","name","defaultValue","value","undefined","assignBool","parseBoolean","optimiseDataValidations","model","dvList","map","dataValidation","address","marked","sort","a","b","strcmp","dvMap","keyBy","matchCol","addr","height","col","i","otherAddress","encodeAddress","row","isEqual","dv","decodeEx","dimensions","_objectSpread","sqref","width","j","bottom","right","concat","filter","Boolean","DataValidationsXform","tag","render","xmlStream","optimizedModel","length","openNode","count","forEach","type","addAttribute","operator","allowBlank","showInputMessage","promptTitle","prompt","showErrorMessage","errorStyle","errorTitle","error","formulae","formula","index","writeText","dateToExcel","Date","closeNode","parseOpen","node","_address","_dataValidation","_formula","parseText","text","push","parseClose","list","split","includes","range","forEachAddress","join","parseInt","parseFloat","excelToDate","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/data-validations-xform.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\nconst utils = require('../../../utils/utils');\nconst colCache = require('../../../utils/col-cache');\nconst BaseXform = require('../base-xform');\nconst Range = require('../../../doc/range');\n\nfunction assign(definedName, attributes, name, defaultValue) {\n const value = attributes[name];\n if (value !== undefined) {\n definedName[name] = value;\n } else if (defaultValue !== undefined) {\n definedName[name] = defaultValue;\n }\n}\n\nfunction assignBool(definedName, attributes, name, defaultValue) {\n const value = attributes[name];\n if (value !== undefined) {\n definedName[name] = utils.parseBoolean(value);\n } else if (defaultValue !== undefined) {\n definedName[name] = defaultValue;\n }\n}\n\nfunction optimiseDataValidations(model) {\n // Squeeze alike data validations together into rectangular ranges\n // to reduce file size and speed up Excel load time\n const dvList = _.map(model, (dataValidation, address) => ({\n address,\n dataValidation,\n marked: false,\n })).sort((a, b) => _.strcmp(a.address, b.address));\n const dvMap = _.keyBy(dvList, 'address');\n const matchCol = (addr, height, col) => {\n for (let i = 0; i < height; i++) {\n const otherAddress = colCache.encodeAddress(addr.row + i, col);\n if (!model[otherAddress] || !_.isEqual(model[addr.address], model[otherAddress])) {\n return false;\n }\n }\n return true;\n };\n return dvList\n .map(dv => {\n if (!dv.marked) {\n const addr = colCache.decodeEx(dv.address);\n if (addr.dimensions) {\n dvMap[addr.dimensions].marked = true;\n return {\n ...dv.dataValidation,\n sqref: dv.address,\n };\n }\n\n // iterate downwards - finding matching cells\n let height = 1;\n let otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\n while (model[otherAddress] && _.isEqual(dv.dataValidation, model[otherAddress])) {\n height++;\n otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\n }\n\n // iterate rightwards...\n\n let width = 1;\n while (matchCol(addr, height, addr.col + width)) {\n width++;\n }\n\n // mark all included addresses\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n otherAddress = colCache.encodeAddress(addr.row + i, addr.col + j);\n dvMap[otherAddress].marked = true;\n }\n }\n\n if (height > 1 || width > 1) {\n const bottom = addr.row + (height - 1);\n const right = addr.col + (width - 1);\n return {\n ...dv.dataValidation,\n sqref: `${dv.address}:${colCache.encodeAddress(bottom, right)}`,\n };\n }\n return {\n ...dv.dataValidation,\n sqref: dv.address,\n };\n }\n return null;\n })\n .filter(Boolean);\n}\n\nclass DataValidationsXform extends BaseXform {\n get tag() {\n return 'dataValidations';\n }\n\n render(xmlStream, model) {\n const optimizedModel = optimiseDataValidations(model);\n if (optimizedModel.length) {\n xmlStream.openNode('dataValidations', {count: optimizedModel.length});\n\n optimizedModel.forEach(value => {\n xmlStream.openNode('dataValidation');\n\n if (value.type !== 'any') {\n xmlStream.addAttribute('type', value.type);\n\n if (value.operator && value.type !== 'list' && value.operator !== 'between') {\n xmlStream.addAttribute('operator', value.operator);\n }\n if (value.allowBlank) {\n xmlStream.addAttribute('allowBlank', '1');\n }\n }\n if (value.showInputMessage) {\n xmlStream.addAttribute('showInputMessage', '1');\n }\n if (value.promptTitle) {\n xmlStream.addAttribute('promptTitle', value.promptTitle);\n }\n if (value.prompt) {\n xmlStream.addAttribute('prompt', value.prompt);\n }\n if (value.showErrorMessage) {\n xmlStream.addAttribute('showErrorMessage', '1');\n }\n if (value.errorStyle) {\n xmlStream.addAttribute('errorStyle', value.errorStyle);\n }\n if (value.errorTitle) {\n xmlStream.addAttribute('errorTitle', value.errorTitle);\n }\n if (value.error) {\n xmlStream.addAttribute('error', value.error);\n }\n xmlStream.addAttribute('sqref', value.sqref);\n (value.formulae || []).forEach((formula, index) => {\n xmlStream.openNode(`formula${index + 1}`);\n if (value.type === 'date') {\n xmlStream.writeText(utils.dateToExcel(new Date(formula)));\n } else {\n xmlStream.writeText(formula);\n }\n xmlStream.closeNode();\n });\n xmlStream.closeNode();\n });\n xmlStream.closeNode();\n }\n }\n\n parseOpen(node) {\n switch (node.name) {\n case 'dataValidations':\n this.model = {};\n return true;\n\n case 'dataValidation': {\n this._address = node.attributes.sqref;\n const dataValidation = {type: node.attributes.type || 'any', formulae: []};\n\n if (node.attributes.type) {\n assignBool(dataValidation, node.attributes, 'allowBlank');\n }\n assignBool(dataValidation, node.attributes, 'showInputMessage');\n assignBool(dataValidation, node.attributes, 'showErrorMessage');\n\n switch (dataValidation.type) {\n case 'any':\n case 'list':\n case 'custom':\n break;\n default:\n assign(dataValidation, node.attributes, 'operator', 'between');\n break;\n }\n assign(dataValidation, node.attributes, 'promptTitle');\n assign(dataValidation, node.attributes, 'prompt');\n assign(dataValidation, node.attributes, 'errorStyle');\n assign(dataValidation, node.attributes, 'errorTitle');\n assign(dataValidation, node.attributes, 'error');\n\n this._dataValidation = dataValidation;\n return true;\n }\n\n case 'formula1':\n case 'formula2':\n this._formula = [];\n return true;\n\n default:\n return false;\n }\n }\n\n parseText(text) {\n if (this._formula) {\n this._formula.push(text);\n }\n }\n\n parseClose(name) {\n switch (name) {\n case 'dataValidations':\n return false;\n case 'dataValidation': {\n if (!this._dataValidation.formulae || !this._dataValidation.formulae.length) {\n delete this._dataValidation.formulae;\n delete this._dataValidation.operator;\n }\n // The four known cases: 1. E4:L9 N4:U9 2.E4 L9 3. N4:U9 4. E4\n const list = this._address.split(/\\s+/g) || [];\n list.forEach(addr => {\n if (addr.includes(':')) {\n const range = new Range(addr);\n range.forEachAddress(address => {\n this.model[address] = this._dataValidation;\n });\n } else {\n this.model[addr] = this._dataValidation;\n }\n });\n return true;\n }\n case 'formula1':\n case 'formula2': {\n let formula = this._formula.join('');\n switch (this._dataValidation.type) {\n case 'whole':\n case 'textLength':\n formula = parseInt(formula, 10);\n break;\n case 'decimal':\n formula = parseFloat(formula);\n break;\n case 'date':\n formula = utils.excelToDate(parseFloat(formula));\n break;\n default:\n break;\n }\n this._dataValidation.formulae.push(formula);\n this._formula = undefined;\n return true;\n }\n default:\n return true;\n }\n }\n}\n\nmodule.exports = DataValidationsXform;\n"],"mappings":";;;;;;;AAAA,MAAMA,CAAC,GAAGC,OAAO,CAAC,2BAA2B,CAAC;AAC9C,MAAMC,KAAK,GAAGD,OAAO,CAAC,sBAAsB,CAAC;AAC7C,MAAME,QAAQ,GAAGF,OAAO,CAAC,0BAA0B,CAAC;AACpD,MAAMG,SAAS,GAAGH,OAAO,CAAC,eAAe,CAAC;AAC1C,MAAMI,KAAK,GAAGJ,OAAO,CAAC,oBAAoB,CAAC;AAE3C,SAASK,MAAMA,CAACC,WAAW,EAAEC,UAAU,EAAEC,IAAI,EAAEC,YAAY,EAAE;EAC3D,MAAMC,KAAK,GAAGH,UAAU,CAACC,IAAI,CAAC;EAC9B,IAAIE,KAAK,KAAKC,SAAS,EAAE;IACvBL,WAAW,CAACE,IAAI,CAAC,GAAGE,KAAK;EAC3B,CAAC,MAAM,IAAID,YAAY,KAAKE,SAAS,EAAE;IACrCL,WAAW,CAACE,IAAI,CAAC,GAAGC,YAAY;EAClC;AACF;AAEA,SAASG,UAAUA,CAACN,WAAW,EAAEC,UAAU,EAAEC,IAAI,EAAEC,YAAY,EAAE;EAC/D,MAAMC,KAAK,GAAGH,UAAU,CAACC,IAAI,CAAC;EAC9B,IAAIE,KAAK,KAAKC,SAAS,EAAE;IACvBL,WAAW,CAACE,IAAI,CAAC,GAAGP,KAAK,CAACY,YAAY,CAACH,KAAK,CAAC;EAC/C,CAAC,MAAM,IAAID,YAAY,KAAKE,SAAS,EAAE;IACrCL,WAAW,CAACE,IAAI,CAAC,GAAGC,YAAY;EAClC;AACF;AAEA,SAASK,uBAAuBA,CAACC,KAAK,EAAE;EACtC;EACA;EACA,MAAMC,MAAM,GAAGjB,CAAC,CAACkB,GAAG,CAACF,KAAK,EAAE,CAACG,cAAc,EAAEC,OAAO,MAAM;IACxDA,OAAO;IACPD,cAAc;IACdE,MAAM,EAAE;EACV,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKxB,CAAC,CAACyB,MAAM,CAACF,CAAC,CAACH,OAAO,EAAEI,CAAC,CAACJ,OAAO,CAAC,CAAC;EAClD,MAAMM,KAAK,GAAG1B,CAAC,CAAC2B,KAAK,CAACV,MAAM,EAAE,SAAS,CAAC;EACxC,MAAMW,QAAQ,GAAGA,CAACC,IAAI,EAAEC,MAAM,EAAEC,GAAG,KAAK;IACtC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,EAAEE,CAAC,EAAE,EAAE;MAC/B,MAAMC,YAAY,GAAG9B,QAAQ,CAAC+B,aAAa,CAACL,IAAI,CAACM,GAAG,GAAGH,CAAC,EAAED,GAAG,CAAC;MAC9D,IAAI,CAACf,KAAK,CAACiB,YAAY,CAAC,IAAI,CAACjC,CAAC,CAACoC,OAAO,CAACpB,KAAK,CAACa,IAAI,CAACT,OAAO,CAAC,EAAEJ,KAAK,CAACiB,YAAY,CAAC,CAAC,EAAE;QAChF,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb,CAAC;EACD,OAAOhB,MAAM,CACVC,GAAG,CAACmB,EAAE,IAAI;IACT,IAAI,CAACA,EAAE,CAAChB,MAAM,EAAE;MACd,MAAMQ,IAAI,GAAG1B,QAAQ,CAACmC,QAAQ,CAACD,EAAE,CAACjB,OAAO,CAAC;MAC1C,IAAIS,IAAI,CAACU,UAAU,EAAE;QACnBb,KAAK,CAACG,IAAI,CAACU,UAAU,CAAC,CAAClB,MAAM,GAAG,IAAI;QACpC,OAAAmB,aAAA,CAAAA,aAAA,KACKH,EAAE,CAAClB,cAAc;UACpBsB,KAAK,EAAEJ,EAAE,CAACjB;QAAO;MAErB;;MAEA;MACA,IAAIU,MAAM,GAAG,CAAC;MACd,IAAIG,YAAY,GAAG9B,QAAQ,CAAC+B,aAAa,CAACL,IAAI,CAACM,GAAG,GAAGL,MAAM,EAAED,IAAI,CAACE,GAAG,CAAC;MACtE,OAAOf,KAAK,CAACiB,YAAY,CAAC,IAAIjC,CAAC,CAACoC,OAAO,CAACC,EAAE,CAAClB,cAAc,EAAEH,KAAK,CAACiB,YAAY,CAAC,CAAC,EAAE;QAC/EH,MAAM,EAAE;QACRG,YAAY,GAAG9B,QAAQ,CAAC+B,aAAa,CAACL,IAAI,CAACM,GAAG,GAAGL,MAAM,EAAED,IAAI,CAACE,GAAG,CAAC;MACpE;;MAEA;;MAEA,IAAIW,KAAK,GAAG,CAAC;MACb,OAAOd,QAAQ,CAACC,IAAI,EAAEC,MAAM,EAAED,IAAI,CAACE,GAAG,GAAGW,KAAK,CAAC,EAAE;QAC/CA,KAAK,EAAE;MACT;;MAEA;MACA,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,EAAEE,CAAC,EAAE,EAAE;QAC/B,KAAK,IAAIW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,EAAEC,CAAC,EAAE,EAAE;UAC9BV,YAAY,GAAG9B,QAAQ,CAAC+B,aAAa,CAACL,IAAI,CAACM,GAAG,GAAGH,CAAC,EAAEH,IAAI,CAACE,GAAG,GAAGY,CAAC,CAAC;UACjEjB,KAAK,CAACO,YAAY,CAAC,CAACZ,MAAM,GAAG,IAAI;QACnC;MACF;MAEA,IAAIS,MAAM,GAAG,CAAC,IAAIY,KAAK,GAAG,CAAC,EAAE;QAC3B,MAAME,MAAM,GAAGf,IAAI,CAACM,GAAG,IAAIL,MAAM,GAAG,CAAC,CAAC;QACtC,MAAMe,KAAK,GAAGhB,IAAI,CAACE,GAAG,IAAIW,KAAK,GAAG,CAAC,CAAC;QACpC,OAAAF,aAAA,CAAAA,aAAA,KACKH,EAAE,CAAClB,cAAc;UACpBsB,KAAK,KAAAK,MAAA,CAAKT,EAAE,CAACjB,OAAO,OAAA0B,MAAA,CAAI3C,QAAQ,CAAC+B,aAAa,CAACU,MAAM,EAAEC,KAAK,CAAC;QAAE;MAEnE;MACA,OAAAL,aAAA,CAAAA,aAAA,KACKH,EAAE,CAAClB,cAAc;QACpBsB,KAAK,EAAEJ,EAAE,CAACjB;MAAO;IAErB;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACD2B,MAAM,CAACC,OAAO,CAAC;AACpB;AAEA,MAAMC,oBAAoB,SAAS7C,SAAS,CAAC;EAC3C,IAAI8C,GAAGA,CAAA,EAAG;IACR,OAAO,iBAAiB;EAC1B;EAEAC,MAAMA,CAACC,SAAS,EAAEpC,KAAK,EAAE;IACvB,MAAMqC,cAAc,GAAGtC,uBAAuB,CAACC,KAAK,CAAC;IACrD,IAAIqC,cAAc,CAACC,MAAM,EAAE;MACzBF,SAAS,CAACG,QAAQ,CAAC,iBAAiB,EAAE;QAACC,KAAK,EAAEH,cAAc,CAACC;MAAM,CAAC,CAAC;MAErED,cAAc,CAACI,OAAO,CAAC9C,KAAK,IAAI;QAC9ByC,SAAS,CAACG,QAAQ,CAAC,gBAAgB,CAAC;QAEpC,IAAI5C,KAAK,CAAC+C,IAAI,KAAK,KAAK,EAAE;UACxBN,SAAS,CAACO,YAAY,CAAC,MAAM,EAAEhD,KAAK,CAAC+C,IAAI,CAAC;UAE1C,IAAI/C,KAAK,CAACiD,QAAQ,IAAIjD,KAAK,CAAC+C,IAAI,KAAK,MAAM,IAAI/C,KAAK,CAACiD,QAAQ,KAAK,SAAS,EAAE;YAC3ER,SAAS,CAACO,YAAY,CAAC,UAAU,EAAEhD,KAAK,CAACiD,QAAQ,CAAC;UACpD;UACA,IAAIjD,KAAK,CAACkD,UAAU,EAAE;YACpBT,SAAS,CAACO,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC;UAC3C;QACF;QACA,IAAIhD,KAAK,CAACmD,gBAAgB,EAAE;UAC1BV,SAAS,CAACO,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC;QACjD;QACA,IAAIhD,KAAK,CAACoD,WAAW,EAAE;UACrBX,SAAS,CAACO,YAAY,CAAC,aAAa,EAAEhD,KAAK,CAACoD,WAAW,CAAC;QAC1D;QACA,IAAIpD,KAAK,CAACqD,MAAM,EAAE;UAChBZ,SAAS,CAACO,YAAY,CAAC,QAAQ,EAAEhD,KAAK,CAACqD,MAAM,CAAC;QAChD;QACA,IAAIrD,KAAK,CAACsD,gBAAgB,EAAE;UAC1Bb,SAAS,CAACO,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC;QACjD;QACA,IAAIhD,KAAK,CAACuD,UAAU,EAAE;UACpBd,SAAS,CAACO,YAAY,CAAC,YAAY,EAAEhD,KAAK,CAACuD,UAAU,CAAC;QACxD;QACA,IAAIvD,KAAK,CAACwD,UAAU,EAAE;UACpBf,SAAS,CAACO,YAAY,CAAC,YAAY,EAAEhD,KAAK,CAACwD,UAAU,CAAC;QACxD;QACA,IAAIxD,KAAK,CAACyD,KAAK,EAAE;UACfhB,SAAS,CAACO,YAAY,CAAC,OAAO,EAAEhD,KAAK,CAACyD,KAAK,CAAC;QAC9C;QACAhB,SAAS,CAACO,YAAY,CAAC,OAAO,EAAEhD,KAAK,CAAC8B,KAAK,CAAC;QAC5C,CAAC9B,KAAK,CAAC0D,QAAQ,IAAI,EAAE,EAAEZ,OAAO,CAAC,CAACa,OAAO,EAAEC,KAAK,KAAK;UACjDnB,SAAS,CAACG,QAAQ,WAAAT,MAAA,CAAWyB,KAAK,GAAG,CAAC,CAAE,CAAC;UACzC,IAAI5D,KAAK,CAAC+C,IAAI,KAAK,MAAM,EAAE;YACzBN,SAAS,CAACoB,SAAS,CAACtE,KAAK,CAACuE,WAAW,CAAC,IAAIC,IAAI,CAACJ,OAAO,CAAC,CAAC,CAAC;UAC3D,CAAC,MAAM;YACLlB,SAAS,CAACoB,SAAS,CAACF,OAAO,CAAC;UAC9B;UACAlB,SAAS,CAACuB,SAAS,CAAC,CAAC;QACvB,CAAC,CAAC;QACFvB,SAAS,CAACuB,SAAS,CAAC,CAAC;MACvB,CAAC,CAAC;MACFvB,SAAS,CAACuB,SAAS,CAAC,CAAC;IACvB;EACF;EAEAC,SAASA,CAACC,IAAI,EAAE;IACd,QAAQA,IAAI,CAACpE,IAAI;MACf,KAAK,iBAAiB;QACpB,IAAI,CAACO,KAAK,GAAG,CAAC,CAAC;QACf,OAAO,IAAI;MAEb,KAAK,gBAAgB;QAAE;UACrB,IAAI,CAAC8D,QAAQ,GAAGD,IAAI,CAACrE,UAAU,CAACiC,KAAK;UACrC,MAAMtB,cAAc,GAAG;YAACuC,IAAI,EAAEmB,IAAI,CAACrE,UAAU,CAACkD,IAAI,IAAI,KAAK;YAAEW,QAAQ,EAAE;UAAE,CAAC;UAE1E,IAAIQ,IAAI,CAACrE,UAAU,CAACkD,IAAI,EAAE;YACxB7C,UAAU,CAACM,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,YAAY,CAAC;UAC3D;UACAK,UAAU,CAACM,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,kBAAkB,CAAC;UAC/DK,UAAU,CAACM,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,kBAAkB,CAAC;UAE/D,QAAQW,cAAc,CAACuC,IAAI;YACzB,KAAK,KAAK;YACV,KAAK,MAAM;YACX,KAAK,QAAQ;cACX;YACF;cACEpD,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC;cAC9D;UACJ;UACAF,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,aAAa,CAAC;UACtDF,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,QAAQ,CAAC;UACjDF,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,YAAY,CAAC;UACrDF,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,YAAY,CAAC;UACrDF,MAAM,CAACa,cAAc,EAAE0D,IAAI,CAACrE,UAAU,EAAE,OAAO,CAAC;UAEhD,IAAI,CAACuE,eAAe,GAAG5D,cAAc;UACrC,OAAO,IAAI;QACb;MAEA,KAAK,UAAU;MACf,KAAK,UAAU;QACb,IAAI,CAAC6D,QAAQ,GAAG,EAAE;QAClB,OAAO,IAAI;MAEb;QACE,OAAO,KAAK;IAChB;EACF;EAEAC,SAASA,CAACC,IAAI,EAAE;IACd,IAAI,IAAI,CAACF,QAAQ,EAAE;MACjB,IAAI,CAACA,QAAQ,CAACG,IAAI,CAACD,IAAI,CAAC;IAC1B;EACF;EAEAE,UAAUA,CAAC3E,IAAI,EAAE;IACf,QAAQA,IAAI;MACV,KAAK,iBAAiB;QACpB,OAAO,KAAK;MACd,KAAK,gBAAgB;QAAE;UACrB,IAAI,CAAC,IAAI,CAACsE,eAAe,CAACV,QAAQ,IAAI,CAAC,IAAI,CAACU,eAAe,CAACV,QAAQ,CAACf,MAAM,EAAE;YAC3E,OAAO,IAAI,CAACyB,eAAe,CAACV,QAAQ;YACpC,OAAO,IAAI,CAACU,eAAe,CAACnB,QAAQ;UACtC;UACA;UACA,MAAMyB,IAAI,GAAG,IAAI,CAACP,QAAQ,CAACQ,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;UAC9CD,IAAI,CAAC5B,OAAO,CAAC5B,IAAI,IAAI;YACnB,IAAIA,IAAI,CAAC0D,QAAQ,CAAC,GAAG,CAAC,EAAE;cACtB,MAAMC,KAAK,GAAG,IAAInF,KAAK,CAACwB,IAAI,CAAC;cAC7B2D,KAAK,CAACC,cAAc,CAACrE,OAAO,IAAI;gBAC9B,IAAI,CAACJ,KAAK,CAACI,OAAO,CAAC,GAAG,IAAI,CAAC2D,eAAe;cAC5C,CAAC,CAAC;YACJ,CAAC,MAAM;cACL,IAAI,CAAC/D,KAAK,CAACa,IAAI,CAAC,GAAG,IAAI,CAACkD,eAAe;YACzC;UACF,CAAC,CAAC;UACF,OAAO,IAAI;QACb;MACA,KAAK,UAAU;MACf,KAAK,UAAU;QAAE;UACf,IAAIT,OAAO,GAAG,IAAI,CAACU,QAAQ,CAACU,IAAI,CAAC,EAAE,CAAC;UACpC,QAAQ,IAAI,CAACX,eAAe,CAACrB,IAAI;YAC/B,KAAK,OAAO;YACZ,KAAK,YAAY;cACfY,OAAO,GAAGqB,QAAQ,CAACrB,OAAO,EAAE,EAAE,CAAC;cAC/B;YACF,KAAK,SAAS;cACZA,OAAO,GAAGsB,UAAU,CAACtB,OAAO,CAAC;cAC7B;YACF,KAAK,MAAM;cACTA,OAAO,GAAGpE,KAAK,CAAC2F,WAAW,CAACD,UAAU,CAACtB,OAAO,CAAC,CAAC;cAChD;YACF;cACE;UACJ;UACA,IAAI,CAACS,eAAe,CAACV,QAAQ,CAACc,IAAI,CAACb,OAAO,CAAC;UAC3C,IAAI,CAACU,QAAQ,GAAGpE,SAAS;UACzB,OAAO,IAAI;QACb;MACA;QACE,OAAO,IAAI;IACf;EACF;AACF;AAEAkF,MAAM,CAACC,OAAO,GAAG9C,oBAAoB","ignoreList":[]}
1
+ {"version":3,"file":"data-validations-xform.js","names":["_","require","utils","colCache","BaseXform","Range","assign","definedName","attributes","name","defaultValue","value","undefined","assignBool","parseBoolean","optimiseDataValidations","model","dvList","map","dataValidation","address","marked","sort","a","b","strcmp","dvMap","keyBy","matchCol","addr","height","col","i","otherAddress","encodeAddress","row","isEqual","dv","decodeEx","dimensions","sqref","width","j","bottom","right","filter","Boolean","DataValidationsXform","tag","render","xmlStream","optimizedModel","length","openNode","count","forEach","type","addAttribute","operator","allowBlank","showInputMessage","promptTitle","prompt","showErrorMessage","errorStyle","errorTitle","error","formulae","formula","index","writeText","dateToExcel","Date","closeNode","parseOpen","node","_address","_dataValidation","_formula","parseText","text","push","parseClose","list","split","includes","range","forEachAddress","join","parseInt","parseFloat","excelToDate","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/data-validations-xform.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\nconst utils = require('../../../utils/utils');\nconst colCache = require('../../../utils/col-cache');\nconst BaseXform = require('../base-xform');\nconst Range = require('../../../doc/range');\n\nfunction assign(definedName, attributes, name, defaultValue) {\n const value = attributes[name];\n if (value !== undefined) {\n definedName[name] = value;\n } else if (defaultValue !== undefined) {\n definedName[name] = defaultValue;\n }\n}\n\nfunction assignBool(definedName, attributes, name, defaultValue) {\n const value = attributes[name];\n if (value !== undefined) {\n definedName[name] = utils.parseBoolean(value);\n } else if (defaultValue !== undefined) {\n definedName[name] = defaultValue;\n }\n}\n\nfunction optimiseDataValidations(model) {\n // Squeeze alike data validations together into rectangular ranges\n // to reduce file size and speed up Excel load time\n const dvList = _.map(model, (dataValidation, address) => ({\n address,\n dataValidation,\n marked: false,\n })).sort((a, b) => _.strcmp(a.address, b.address));\n const dvMap = _.keyBy(dvList, 'address');\n const matchCol = (addr, height, col) => {\n for (let i = 0; i < height; i++) {\n const otherAddress = colCache.encodeAddress(addr.row + i, col);\n if (!model[otherAddress] || !_.isEqual(model[addr.address], model[otherAddress])) {\n return false;\n }\n }\n return true;\n };\n return dvList\n .map(dv => {\n if (!dv.marked) {\n const addr = colCache.decodeEx(dv.address);\n if (addr.dimensions) {\n dvMap[addr.dimensions].marked = true;\n return {\n ...dv.dataValidation,\n sqref: dv.address,\n };\n }\n\n // iterate downwards - finding matching cells\n let height = 1;\n let otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\n while (model[otherAddress] && _.isEqual(dv.dataValidation, model[otherAddress])) {\n height++;\n otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\n }\n\n // iterate rightwards...\n\n let width = 1;\n while (matchCol(addr, height, addr.col + width)) {\n width++;\n }\n\n // mark all included addresses\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n otherAddress = colCache.encodeAddress(addr.row + i, addr.col + j);\n dvMap[otherAddress].marked = true;\n }\n }\n\n if (height > 1 || width > 1) {\n const bottom = addr.row + (height - 1);\n const right = addr.col + (width - 1);\n return {\n ...dv.dataValidation,\n sqref: `${dv.address}:${colCache.encodeAddress(bottom, right)}`,\n };\n }\n return {\n ...dv.dataValidation,\n sqref: dv.address,\n };\n }\n return null;\n })\n .filter(Boolean);\n}\n\nclass DataValidationsXform extends BaseXform {\n get tag() {\n return 'dataValidations';\n }\n\n render(xmlStream, model) {\n const optimizedModel = optimiseDataValidations(model);\n if (optimizedModel.length) {\n xmlStream.openNode('dataValidations', {count: optimizedModel.length});\n\n optimizedModel.forEach(value => {\n xmlStream.openNode('dataValidation');\n\n if (value.type !== 'any') {\n xmlStream.addAttribute('type', value.type);\n\n if (value.operator && value.type !== 'list' && value.operator !== 'between') {\n xmlStream.addAttribute('operator', value.operator);\n }\n if (value.allowBlank) {\n xmlStream.addAttribute('allowBlank', '1');\n }\n }\n if (value.showInputMessage) {\n xmlStream.addAttribute('showInputMessage', '1');\n }\n if (value.promptTitle) {\n xmlStream.addAttribute('promptTitle', value.promptTitle);\n }\n if (value.prompt) {\n xmlStream.addAttribute('prompt', value.prompt);\n }\n if (value.showErrorMessage) {\n xmlStream.addAttribute('showErrorMessage', '1');\n }\n if (value.errorStyle) {\n xmlStream.addAttribute('errorStyle', value.errorStyle);\n }\n if (value.errorTitle) {\n xmlStream.addAttribute('errorTitle', value.errorTitle);\n }\n if (value.error) {\n xmlStream.addAttribute('error', value.error);\n }\n xmlStream.addAttribute('sqref', value.sqref);\n (value.formulae || []).forEach((formula, index) => {\n xmlStream.openNode(`formula${index + 1}`);\n if (value.type === 'date') {\n xmlStream.writeText(utils.dateToExcel(new Date(formula)));\n } else {\n xmlStream.writeText(formula);\n }\n xmlStream.closeNode();\n });\n xmlStream.closeNode();\n });\n xmlStream.closeNode();\n }\n }\n\n parseOpen(node) {\n switch (node.name) {\n case 'dataValidations':\n this.model = {};\n return true;\n\n case 'dataValidation': {\n this._address = node.attributes.sqref;\n const dataValidation = {type: node.attributes.type || 'any', formulae: []};\n\n if (node.attributes.type) {\n assignBool(dataValidation, node.attributes, 'allowBlank');\n }\n assignBool(dataValidation, node.attributes, 'showInputMessage');\n assignBool(dataValidation, node.attributes, 'showErrorMessage');\n\n switch (dataValidation.type) {\n case 'any':\n case 'list':\n case 'custom':\n break;\n default:\n assign(dataValidation, node.attributes, 'operator', 'between');\n break;\n }\n assign(dataValidation, node.attributes, 'promptTitle');\n assign(dataValidation, node.attributes, 'prompt');\n assign(dataValidation, node.attributes, 'errorStyle');\n assign(dataValidation, node.attributes, 'errorTitle');\n assign(dataValidation, node.attributes, 'error');\n\n this._dataValidation = dataValidation;\n return true;\n }\n\n case 'formula1':\n case 'formula2':\n this._formula = [];\n return true;\n\n default:\n return false;\n }\n }\n\n parseText(text) {\n if (this._formula) {\n this._formula.push(text);\n }\n }\n\n parseClose(name) {\n switch (name) {\n case 'dataValidations':\n return false;\n case 'dataValidation': {\n if (!this._dataValidation.formulae || !this._dataValidation.formulae.length) {\n delete this._dataValidation.formulae;\n delete this._dataValidation.operator;\n }\n // The four known cases: 1. E4:L9 N4:U9 2.E4 L9 3. N4:U9 4. E4\n const list = this._address.split(/\\s+/g) || [];\n list.forEach(addr => {\n if (addr.includes(':')) {\n const range = new Range(addr);\n range.forEachAddress(address => {\n this.model[address] = this._dataValidation;\n });\n } else {\n this.model[addr] = this._dataValidation;\n }\n });\n return true;\n }\n case 'formula1':\n case 'formula2': {\n let formula = this._formula.join('');\n switch (this._dataValidation.type) {\n case 'whole':\n case 'textLength':\n formula = parseInt(formula, 10);\n break;\n case 'decimal':\n formula = parseFloat(formula);\n break;\n case 'date':\n formula = utils.excelToDate(parseFloat(formula));\n break;\n default:\n break;\n }\n this._dataValidation.formulae.push(formula);\n this._formula = undefined;\n return true;\n }\n default:\n return true;\n }\n }\n}\n\nmodule.exports = DataValidationsXform;\n"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,7 @@ class Merges {
14
14
  if (this.merges[merge.master]) {
15
15
  this.merges[merge.master].expandToAddress(merge.address);
16
16
  } else {
17
- const range = "".concat(merge.master, ":").concat(merge.address);
17
+ const range = `${merge.master}:${merge.address}`;
18
18
  this.merges[merge.master] = new Range(range);
19
19
  }
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merges.js","names":["_","require","Range","colCache","Enums","Merges","constructor","merges","add","merge","master","expandToAddress","address","range","concat","mergeCells","map","reconcile","rows","each","dimensions","decode","i","top","bottom","row","j","left","right","cell","cells","type","ValueType","Null","encodeAddress","Merge","tl","getMasterAddress","hash","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/merges.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\n\nconst Range = require('../../../doc/range');\nconst colCache = require('../../../utils/col-cache');\nconst Enums = require('../../../doc/enums');\n\nclass Merges {\n constructor() {\n // optional mergeCells is array of ranges (like the xml)\n this.merges = {};\n }\n\n add(merge) {\n // merge is {address, master}\n if (this.merges[merge.master]) {\n this.merges[merge.master].expandToAddress(merge.address);\n } else {\n const range = `${merge.master}:${merge.address}`;\n this.merges[merge.master] = new Range(range);\n }\n }\n\n get mergeCells() {\n return _.map(this.merges, merge => merge.range);\n }\n\n reconcile(mergeCells, rows) {\n // reconcile merge list with merge cells\n _.each(mergeCells, merge => {\n const dimensions = colCache.decode(merge);\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n const row = rows[i - 1];\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n const cell = row.cells[j - 1];\n if (!cell) {\n // nulls are not included in document - so if master cell has no value - add a null one here\n row.cells[j] = {\n type: Enums.ValueType.Null,\n address: colCache.encodeAddress(i, j),\n };\n } else if (cell.type === Enums.ValueType.Merge) {\n cell.master = dimensions.tl;\n }\n }\n }\n });\n }\n\n getMasterAddress(address) {\n // if address has been merged, return its master's address. Assumes reconcile has been called\n const range = this.hash[address];\n return range && range.tl;\n }\n}\n\nmodule.exports = Merges;\n"],"mappings":";;AAAA,MAAMA,CAAC,GAAGC,OAAO,CAAC,2BAA2B,CAAC;AAE9C,MAAMC,KAAK,GAAGD,OAAO,CAAC,oBAAoB,CAAC;AAC3C,MAAME,QAAQ,GAAGF,OAAO,CAAC,0BAA0B,CAAC;AACpD,MAAMG,KAAK,GAAGH,OAAO,CAAC,oBAAoB,CAAC;AAE3C,MAAMI,MAAM,CAAC;EACXC,WAAWA,CAAA,EAAG;IACZ;IACA,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;EAClB;EAEAC,GAAGA,CAACC,KAAK,EAAE;IACT;IACA,IAAI,IAAI,CAACF,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,EAAE;MAC7B,IAAI,CAACH,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,CAACC,eAAe,CAACF,KAAK,CAACG,OAAO,CAAC;IAC1D,CAAC,MAAM;MACL,MAAMC,KAAK,MAAAC,MAAA,CAAML,KAAK,CAACC,MAAM,OAAAI,MAAA,CAAIL,KAAK,CAACG,OAAO,CAAE;MAChD,IAAI,CAACL,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,GAAG,IAAIR,KAAK,CAACW,KAAK,CAAC;IAC9C;EACF;EAEA,IAAIE,UAAUA,CAAA,EAAG;IACf,OAAOf,CAAC,CAACgB,GAAG,CAAC,IAAI,CAACT,MAAM,EAAEE,KAAK,IAAIA,KAAK,CAACI,KAAK,CAAC;EACjD;EAEAI,SAASA,CAACF,UAAU,EAAEG,IAAI,EAAE;IAC1B;IACAlB,CAAC,CAACmB,IAAI,CAACJ,UAAU,EAAEN,KAAK,IAAI;MAC1B,MAAMW,UAAU,GAAGjB,QAAQ,CAACkB,MAAM,CAACZ,KAAK,CAAC;MACzC,KAAK,IAAIa,CAAC,GAAGF,UAAU,CAACG,GAAG,EAAED,CAAC,IAAIF,UAAU,CAACI,MAAM,EAAEF,CAAC,EAAE,EAAE;QACxD,MAAMG,GAAG,GAAGP,IAAI,CAACI,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,IAAII,CAAC,GAAGN,UAAU,CAACO,IAAI,EAAED,CAAC,IAAIN,UAAU,CAACQ,KAAK,EAAEF,CAAC,EAAE,EAAE;UACxD,MAAMG,IAAI,GAAGJ,GAAG,CAACK,KAAK,CAACJ,CAAC,GAAG,CAAC,CAAC;UAC7B,IAAI,CAACG,IAAI,EAAE;YACT;YACAJ,GAAG,CAACK,KAAK,CAACJ,CAAC,CAAC,GAAG;cACbK,IAAI,EAAE3B,KAAK,CAAC4B,SAAS,CAACC,IAAI;cAC1BrB,OAAO,EAAET,QAAQ,CAAC+B,aAAa,CAACZ,CAAC,EAAEI,CAAC;YACtC,CAAC;UACH,CAAC,MAAM,IAAIG,IAAI,CAACE,IAAI,KAAK3B,KAAK,CAAC4B,SAAS,CAACG,KAAK,EAAE;YAC9CN,IAAI,CAACnB,MAAM,GAAGU,UAAU,CAACgB,EAAE;UAC7B;QACF;MACF;IACF,CAAC,CAAC;EACJ;EAEAC,gBAAgBA,CAACzB,OAAO,EAAE;IACxB;IACA,MAAMC,KAAK,GAAG,IAAI,CAACyB,IAAI,CAAC1B,OAAO,CAAC;IAChC,OAAOC,KAAK,IAAIA,KAAK,CAACuB,EAAE;EAC1B;AACF;AAEAG,MAAM,CAACC,OAAO,GAAGnC,MAAM","ignoreList":[]}
1
+ {"version":3,"file":"merges.js","names":["_","require","Range","colCache","Enums","Merges","constructor","merges","add","merge","master","expandToAddress","address","range","mergeCells","map","reconcile","rows","each","dimensions","decode","i","top","bottom","row","j","left","right","cell","cells","type","ValueType","Null","encodeAddress","Merge","tl","getMasterAddress","hash","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/merges.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\n\nconst Range = require('../../../doc/range');\nconst colCache = require('../../../utils/col-cache');\nconst Enums = require('../../../doc/enums');\n\nclass Merges {\n constructor() {\n // optional mergeCells is array of ranges (like the xml)\n this.merges = {};\n }\n\n add(merge) {\n // merge is {address, master}\n if (this.merges[merge.master]) {\n this.merges[merge.master].expandToAddress(merge.address);\n } else {\n const range = `${merge.master}:${merge.address}`;\n this.merges[merge.master] = new Range(range);\n }\n }\n\n get mergeCells() {\n return _.map(this.merges, merge => merge.range);\n }\n\n reconcile(mergeCells, rows) {\n // reconcile merge list with merge cells\n _.each(mergeCells, merge => {\n const dimensions = colCache.decode(merge);\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n const row = rows[i - 1];\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n const cell = row.cells[j - 1];\n if (!cell) {\n // nulls are not included in document - so if master cell has no value - add a null one here\n row.cells[j] = {\n type: Enums.ValueType.Null,\n address: colCache.encodeAddress(i, j),\n };\n } else if (cell.type === Enums.ValueType.Merge) {\n cell.master = dimensions.tl;\n }\n }\n }\n });\n }\n\n getMasterAddress(address) {\n // if address has been merged, return its master's address. Assumes reconcile has been called\n const range = this.hash[address];\n return range && range.tl;\n }\n}\n\nmodule.exports = Merges;\n"],"mappings":";;AAAA,MAAMA,CAAC,GAAGC,OAAO,CAAC,2BAA2B,CAAC;AAE9C,MAAMC,KAAK,GAAGD,OAAO,CAAC,oBAAoB,CAAC;AAC3C,MAAME,QAAQ,GAAGF,OAAO,CAAC,0BAA0B,CAAC;AACpD,MAAMG,KAAK,GAAGH,OAAO,CAAC,oBAAoB,CAAC;AAE3C,MAAMI,MAAM,CAAC;EACXC,WAAWA,CAAA,EAAG;IACZ;IACA,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;EAClB;EAEAC,GAAGA,CAACC,KAAK,EAAE;IACT;IACA,IAAI,IAAI,CAACF,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,EAAE;MAC7B,IAAI,CAACH,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,CAACC,eAAe,CAACF,KAAK,CAACG,OAAO,CAAC;IAC1D,CAAC,MAAM;MACL,MAAMC,KAAK,GAAG,GAAGJ,KAAK,CAACC,MAAM,IAAID,KAAK,CAACG,OAAO,EAAE;MAChD,IAAI,CAACL,MAAM,CAACE,KAAK,CAACC,MAAM,CAAC,GAAG,IAAIR,KAAK,CAACW,KAAK,CAAC;IAC9C;EACF;EAEA,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOd,CAAC,CAACe,GAAG,CAAC,IAAI,CAACR,MAAM,EAAEE,KAAK,IAAIA,KAAK,CAACI,KAAK,CAAC;EACjD;EAEAG,SAASA,CAACF,UAAU,EAAEG,IAAI,EAAE;IAC1B;IACAjB,CAAC,CAACkB,IAAI,CAACJ,UAAU,EAAEL,KAAK,IAAI;MAC1B,MAAMU,UAAU,GAAGhB,QAAQ,CAACiB,MAAM,CAACX,KAAK,CAAC;MACzC,KAAK,IAAIY,CAAC,GAAGF,UAAU,CAACG,GAAG,EAAED,CAAC,IAAIF,UAAU,CAACI,MAAM,EAAEF,CAAC,EAAE,EAAE;QACxD,MAAMG,GAAG,GAAGP,IAAI,CAACI,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,IAAII,CAAC,GAAGN,UAAU,CAACO,IAAI,EAAED,CAAC,IAAIN,UAAU,CAACQ,KAAK,EAAEF,CAAC,EAAE,EAAE;UACxD,MAAMG,IAAI,GAAGJ,GAAG,CAACK,KAAK,CAACJ,CAAC,GAAG,CAAC,CAAC;UAC7B,IAAI,CAACG,IAAI,EAAE;YACT;YACAJ,GAAG,CAACK,KAAK,CAACJ,CAAC,CAAC,GAAG;cACbK,IAAI,EAAE1B,KAAK,CAAC2B,SAAS,CAACC,IAAI;cAC1BpB,OAAO,EAAET,QAAQ,CAAC8B,aAAa,CAACZ,CAAC,EAAEI,CAAC;YACtC,CAAC;UACH,CAAC,MAAM,IAAIG,IAAI,CAACE,IAAI,KAAK1B,KAAK,CAAC2B,SAAS,CAACG,KAAK,EAAE;YAC9CN,IAAI,CAAClB,MAAM,GAAGS,UAAU,CAACgB,EAAE;UAC7B;QACF;MACF;IACF,CAAC,CAAC;EACJ;EAEAC,gBAAgBA,CAACxB,OAAO,EAAE;IACxB;IACA,MAAMC,KAAK,GAAG,IAAI,CAACwB,IAAI,CAACzB,OAAO,CAAC;IAChC,OAAOC,KAAK,IAAIA,KAAK,CAACsB,EAAE;EAC1B;AACF;AAEAG,MAAM,CAACC,OAAO,GAAGlC,MAAM","ignoreList":[]}
@@ -35,7 +35,7 @@ class RowXform extends BaseXform {
35
35
  xmlStream.addAttribute('hidden', '1');
36
36
  }
37
37
  if (model.min > 0 && model.max > 0 && model.min <= model.max) {
38
- xmlStream.addAttribute('spans', "".concat(model.min, ":").concat(model.max));
38
+ xmlStream.addAttribute('spans', `${model.min}:${model.max}`);
39
39
  }
40
40
  if (model.styleId) {
41
41
  xmlStream.addAttribute('s', model.styleId);
@@ -105,7 +105,7 @@ class RowXform extends BaseXform {
105
105
  if (!this.parser.parseClose(name)) {
106
106
  this.model.cells.push(this.parser.model);
107
107
  if (this.maxItems && this.model.cells.length > this.maxItems) {
108
- throw new Error("Max column count (".concat(this.maxItems, ") exceeded"));
108
+ throw new Error(`Max column count (${this.maxItems}) exceeded`);
109
109
  }
110
110
  this.parser = undefined;
111
111
  }