@omegagrid/grid-core 0.10.2 → 0.10.4

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 (201) hide show
  1. package/dist/__generated/functions.d.ts +4 -0
  2. package/dist/__generated/functions.d.ts.map +1 -0
  3. package/dist/__generated/functions.js +45 -0
  4. package/dist/__generated/functions.js.map +1 -0
  5. package/dist/calculations/autofill.d.ts +7 -0
  6. package/dist/calculations/autofill.d.ts.map +1 -0
  7. package/dist/calculations/autofill.js +84 -0
  8. package/dist/calculations/autofill.js.map +1 -0
  9. package/dist/calculations/conditions.d.ts +4 -0
  10. package/dist/calculations/conditions.d.ts.map +1 -0
  11. package/dist/calculations/conditions.js +41 -0
  12. package/dist/calculations/conditions.js.map +1 -0
  13. package/dist/calculations/context.d.ts +53 -0
  14. package/dist/calculations/context.d.ts.map +1 -0
  15. package/dist/calculations/context.js +85 -0
  16. package/dist/calculations/context.js.map +1 -0
  17. package/dist/calculations/formula.d.ts +89 -0
  18. package/dist/calculations/formula.d.ts.map +1 -0
  19. package/dist/calculations/formula.js +443 -0
  20. package/dist/calculations/formula.js.map +1 -0
  21. package/dist/calculations/functions/dates.d.ts +13 -0
  22. package/dist/calculations/functions/dates.d.ts.map +1 -0
  23. package/dist/calculations/functions/dates.js +58 -0
  24. package/dist/calculations/functions/dates.js.map +1 -0
  25. package/dist/calculations/functions/index.d.ts +11 -0
  26. package/dist/calculations/functions/index.d.ts.map +1 -0
  27. package/dist/calculations/functions/index.js +21 -0
  28. package/dist/calculations/functions/index.js.map +1 -0
  29. package/dist/calculations/functions/logical.d.ts +11 -0
  30. package/dist/calculations/functions/logical.d.ts.map +1 -0
  31. package/dist/calculations/functions/logical.js +50 -0
  32. package/dist/calculations/functions/logical.js.map +1 -0
  33. package/dist/calculations/functions/lookup.d.ts +18 -0
  34. package/dist/calculations/functions/lookup.d.ts.map +1 -0
  35. package/dist/calculations/functions/lookup.js +169 -0
  36. package/dist/calculations/functions/lookup.js.map +1 -0
  37. package/dist/calculations/functions/math.d.ts +72 -0
  38. package/dist/calculations/functions/math.d.ts.map +1 -0
  39. package/dist/calculations/functions/math.js +182 -0
  40. package/dist/calculations/functions/math.js.map +1 -0
  41. package/dist/calculations/functions/special.d.ts +2 -0
  42. package/dist/calculations/functions/special.d.ts.map +1 -0
  43. package/dist/calculations/functions/special.js +51 -0
  44. package/dist/calculations/functions/special.js.map +1 -0
  45. package/dist/calculations/functions/statistical.d.ts +7 -0
  46. package/dist/calculations/functions/statistical.d.ts.map +1 -0
  47. package/dist/calculations/functions/statistical.js +47 -0
  48. package/dist/calculations/functions/statistical.js.map +1 -0
  49. package/dist/calculations/functions/text.d.ts +29 -0
  50. package/dist/calculations/functions/text.d.ts.map +1 -0
  51. package/dist/calculations/functions/text.js +58 -0
  52. package/dist/calculations/functions/text.js.map +1 -0
  53. package/dist/calculations/helpers.d.ts +13 -0
  54. package/dist/calculations/helpers.d.ts.map +1 -0
  55. package/dist/calculations/helpers.js +32 -0
  56. package/dist/calculations/helpers.js.map +1 -0
  57. package/dist/calculations/index.d.ts +7 -0
  58. package/dist/calculations/index.d.ts.map +1 -0
  59. package/dist/calculations/index.js +7 -0
  60. package/dist/calculations/index.js.map +1 -0
  61. package/dist/calculations/operators.d.ts +19 -0
  62. package/dist/calculations/operators.d.ts.map +1 -0
  63. package/dist/calculations/operators.js +58 -0
  64. package/dist/calculations/operators.js.map +1 -0
  65. package/dist/calculations/tokenization.d.ts +36 -0
  66. package/dist/calculations/tokenization.d.ts.map +1 -0
  67. package/dist/calculations/tokenization.js +203 -0
  68. package/dist/calculations/tokenization.js.map +1 -0
  69. package/dist/common/index.d.ts +2 -0
  70. package/dist/common/index.d.ts.map +1 -0
  71. package/dist/common/index.js +2 -0
  72. package/dist/common/index.js.map +1 -0
  73. package/dist/common/range.d.ts +66 -0
  74. package/dist/common/range.d.ts.map +1 -0
  75. package/dist/common/range.js +222 -0
  76. package/dist/common/range.js.map +1 -0
  77. package/dist/constants.d.ts +68 -0
  78. package/dist/constants.d.ts.map +1 -0
  79. package/dist/constants.js +127 -0
  80. package/dist/constants.js.map +1 -0
  81. package/dist/index.d.ts +8 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +8 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/model/calculationModel.d.ts +30 -0
  86. package/dist/model/calculationModel.d.ts.map +1 -0
  87. package/dist/model/calculationModel.js +206 -0
  88. package/dist/model/calculationModel.js.map +1 -0
  89. package/dist/model/cellModel.d.ts +134 -0
  90. package/dist/model/cellModel.d.ts.map +1 -0
  91. package/dist/model/cellModel.js +371 -0
  92. package/dist/model/cellModel.js.map +1 -0
  93. package/dist/model/columnModel.d.ts +160 -0
  94. package/dist/model/columnModel.d.ts.map +1 -0
  95. package/dist/model/columnModel.js +159 -0
  96. package/dist/model/columnModel.js.map +1 -0
  97. package/dist/model/commentModel.d.ts +58 -0
  98. package/dist/model/commentModel.d.ts.map +1 -0
  99. package/dist/model/commentModel.js +81 -0
  100. package/dist/model/commentModel.js.map +1 -0
  101. package/dist/model/conditionalFormats.d.ts +104 -0
  102. package/dist/model/conditionalFormats.d.ts.map +1 -0
  103. package/dist/model/conditionalFormats.js +414 -0
  104. package/dist/model/conditionalFormats.js.map +1 -0
  105. package/dist/model/cssStyle.d.ts +20 -0
  106. package/dist/model/cssStyle.d.ts.map +1 -0
  107. package/dist/model/cssStyle.js +301 -0
  108. package/dist/model/cssStyle.js.map +1 -0
  109. package/dist/model/dependencies.d.ts +30 -0
  110. package/dist/model/dependencies.d.ts.map +1 -0
  111. package/dist/model/dependencies.js +139 -0
  112. package/dist/model/dependencies.js.map +1 -0
  113. package/dist/model/dependencyModel.d.ts +9 -0
  114. package/dist/model/dependencyModel.d.ts.map +1 -0
  115. package/dist/model/dependencyModel.js +9 -0
  116. package/dist/model/dependencyModel.js.map +1 -0
  117. package/dist/model/elementModel.d.ts +103 -0
  118. package/dist/model/elementModel.d.ts.map +1 -0
  119. package/dist/model/elementModel.js +181 -0
  120. package/dist/model/elementModel.js.map +1 -0
  121. package/dist/model/filterModel.d.ts +35 -0
  122. package/dist/model/filterModel.d.ts.map +1 -0
  123. package/dist/model/filterModel.js +153 -0
  124. package/dist/model/filterModel.js.map +1 -0
  125. package/dist/model/gridModel.d.ts +181 -0
  126. package/dist/model/gridModel.d.ts.map +1 -0
  127. package/dist/model/gridModel.js +797 -0
  128. package/dist/model/gridModel.js.map +1 -0
  129. package/dist/model/groupModel.d.ts +26 -0
  130. package/dist/model/groupModel.d.ts.map +1 -0
  131. package/dist/model/groupModel.js +112 -0
  132. package/dist/model/groupModel.js.map +1 -0
  133. package/dist/model/history.d.ts +24 -0
  134. package/dist/model/history.d.ts.map +1 -0
  135. package/dist/model/history.js +35 -0
  136. package/dist/model/history.js.map +1 -0
  137. package/dist/model/index.d.ts +23 -0
  138. package/dist/model/index.d.ts.map +1 -0
  139. package/dist/model/index.js +23 -0
  140. package/dist/model/index.js.map +1 -0
  141. package/dist/model/iterableRange.d.ts +49 -0
  142. package/dist/model/iterableRange.d.ts.map +1 -0
  143. package/dist/model/iterableRange.js +108 -0
  144. package/dist/model/iterableRange.js.map +1 -0
  145. package/dist/model/merges.d.ts +34 -0
  146. package/dist/model/merges.d.ts.map +1 -0
  147. package/dist/model/merges.js +123 -0
  148. package/dist/model/merges.js.map +1 -0
  149. package/dist/model/namingModel.d.ts +25 -0
  150. package/dist/model/namingModel.d.ts.map +1 -0
  151. package/dist/model/namingModel.js +77 -0
  152. package/dist/model/namingModel.js.map +1 -0
  153. package/dist/model/options.d.ts +257 -0
  154. package/dist/model/options.d.ts.map +1 -0
  155. package/dist/model/options.js +35 -0
  156. package/dist/model/options.js.map +1 -0
  157. package/dist/model/rowModel.d.ts +104 -0
  158. package/dist/model/rowModel.d.ts.map +1 -0
  159. package/dist/model/rowModel.js +155 -0
  160. package/dist/model/rowModel.js.map +1 -0
  161. package/dist/model/selectionModel.d.ts +19 -0
  162. package/dist/model/selectionModel.d.ts.map +1 -0
  163. package/dist/model/selectionModel.js +40 -0
  164. package/dist/model/selectionModel.js.map +1 -0
  165. package/dist/model/sortingModel.d.ts +46 -0
  166. package/dist/model/sortingModel.d.ts.map +1 -0
  167. package/dist/model/sortingModel.js +157 -0
  168. package/dist/model/sortingModel.js.map +1 -0
  169. package/dist/model/style.d.ts +90 -0
  170. package/dist/model/style.d.ts.map +1 -0
  171. package/dist/model/style.js +34 -0
  172. package/dist/model/style.js.map +1 -0
  173. package/dist/model/styleModel.d.ts +22 -0
  174. package/dist/model/styleModel.d.ts.map +1 -0
  175. package/dist/model/styleModel.js +91 -0
  176. package/dist/model/styleModel.js.map +1 -0
  177. package/dist/model/tableTheme.d.ts +46 -0
  178. package/dist/model/tableTheme.d.ts.map +1 -0
  179. package/dist/model/tableTheme.js +93 -0
  180. package/dist/model/tableTheme.js.map +1 -0
  181. package/dist/model/validations.d.ts +5 -0
  182. package/dist/model/validations.d.ts.map +1 -0
  183. package/dist/model/validations.js +24 -0
  184. package/dist/model/validations.js.map +1 -0
  185. package/dist/sparklines/index.d.ts +2 -0
  186. package/dist/sparklines/index.d.ts.map +1 -0
  187. package/dist/sparklines/index.js +2 -0
  188. package/dist/sparklines/index.js.map +1 -0
  189. package/dist/sparklines/sparklines.d.ts +59 -0
  190. package/dist/sparklines/sparklines.d.ts.map +1 -0
  191. package/dist/sparklines/sparklines.js +176 -0
  192. package/dist/sparklines/sparklines.js.map +1 -0
  193. package/dist/types.d.ts +103 -0
  194. package/dist/types.d.ts.map +1 -0
  195. package/dist/types.js +2 -0
  196. package/dist/types.js.map +1 -0
  197. package/dist/utils.d.ts +4 -0
  198. package/dist/utils.d.ts.map +1 -0
  199. package/dist/utils.js +11 -0
  200. package/dist/utils.js.map +1 -0
  201. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridModel.js","sourceRoot":"","sources":["../../src/model/gridModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, tree, CustomProperties, Location, Model } from \"@omegagrid/core\";\nimport { log } from \"@omegagrid/core\";\nimport { CellValueType, ShiftOptions, SpillOptions, SpillResult, TabOptions } from \"../types\";\nimport { CalculationModel } from \"./calculationModel\";\nimport { CellRange } from \"../common/range\";\nimport { ConditionalFormats, ConditionalFormatSource } from \"./conditionalFormats\";\nimport { Sparklines, SparklineSource } from \"../sparklines/sparklines\";\nimport { CellModel, CellSource } from \"./cellModel\";\nimport { ColumnModel, ColumnHeaderModel, ColumnSource } from \"./columnModel\";\nimport { GroupModel } from \"./groupModel\";\nimport { CommentModel, CommentSource } from \"./commentModel\";\nimport { IterableAxisRange, IterableRange } from \"./iterableRange\";\nimport { NameSource, NamingModel } from \"./namingModel\";\nimport { initOptions, Options, OptionSource } from \"./options\";\nimport { RowModel, RowSource } from \"./rowModel\";\nimport { Style } from \"./style\";\nimport { StyleModel } from \"./styleModel\";\nimport { TableTheme, applyCellTheme, applyRowTheme, applyTheme } from \"./tableTheme\";\nimport { SortingModel } from \"./sortingModel\";\nimport { Merge, Merges } from \"./merges\";\nimport { FilterModel } from \"./filterModel\";\n\n\n/** Source object type for grid */\nexport type GridSource = {\n\t/** grid index with group (readonly) */\n\tindex?: number,\n\t/** sheet name */\n\tname?: string,\n\t/** row array */\n\trows?: RowSource[],\n\t/** column array */\n\tcolumns?: ColumnSource[],\n\t/** cell array */\n\tcells?: CellSource[],\n\t/** grid options */\n\toptions?: OptionSource,\n\t/** sprakline definitions */\n\tsparklines?: SparklineSource[],\n\t/** conditional format definitions */\n\trules?: ConditionalFormatSource,\n\t/** comment array */\n\tcomments?: CommentSource[],\n\t/** style array */\n\tstyles?: Style[],\n\t/** renge names */\n\tnames?: NameSource[],\n\t/** custom properties */\n\tprops?: CustomProperties,\n\t/** tab settings used when grid is within group */\n\ttab?: TabOptions,\n\t/** table theme */\n\ttheme?: TableTheme,\n\t/** additional properties */\n\t[key: string]: unknown\n};\n\nconst DEFAULT_SOURCE_KEYS = [\n\t'index', 'name', 'rows', 'columns', 'cells', 'options', 'sparklines',\n\t'rules', 'comments', 'styles', 'names', 'props', 'tab', 'theme'\n];\n\nexport type Viewport = {\n\trows: RowModel[];\n\tcolumns: ColumnModel[];\n};\n\nexport class GridModel implements Model<GridSource> {\n\t\n\tindex: number;\n\tname: string;\n\ttab: TabOptions;\n\trows: RowModel[];\n\tvisibleRows: RowModel[];\n\trowRoot: RowModel;\n\tcolRoot: ColumnModel;\n\tcolumns: ColumnModel[];\n\tvisibleColumns: ColumnModel[];\n\tvisibleColumnIndex: Record<number, number>;\n\totherSourceData: Record<string, unknown>;\n\totherModels: Record<string, Set<Model>> = {};\n\tautofitColumns: Set<number> = new Set();\n\tautofitRows: Set<number> = new Set();\n\n\treadonly merges = new Merges(this);\n\treadonly styles = new StyleModel(this);\n\treadonly comments = new CommentModel(this);\n\treadonly calculations = new CalculationModel(this);\n\treadonly names = new NamingModel(this);\n\treadonly sorting = new SortingModel(this);\n\treadonly filter = new FilterModel(this);\n\treadonly sparklines = new Sparklines(this);\n\treadonly conditionalFormats = new ConditionalFormats(this);\n\n\tprivate _mergedHeaders: (Merge & {h: ColumnHeaderModel})[];\n\tget mergedHeaders() { return this._mergedHeaders }\n\t\n\tprivate _filter = false\n\tget hasFilter() { return this._filter }\n\t\n\tprivate _maxRowLevel = 0;\n\tget hasRowTree() { return this._maxRowLevel > 0 }\n\tget hasRowTreeEnabled() { return this.hasRowTree && this.options.rowTree.enabled }\n\tget maxRowLevel() { return this._maxRowLevel }\n\t\n\tprivate _maxColumnLevel = 0;\n\tget hasColumnTree() { return this._maxColumnLevel > 0 }\n\tget hasColumnTreeEnabled() { return this.hasColumnTree && this.options.columnTree.enabled }\n\tget maxColumnLevel() { return this._maxColumnLevel }\n\t\n\tprivate _headerCount = 0;\n\tprivate _headerHeights: number[];\n\tget headerCount() { return this._headerCount }\n\tget columnHeaderCount() { return this.headerCount + (this.hasColumnTreeEnabled ? 1 : 0) + (this.hasFilter ? 1 : 0) }\n\n\tprivate _viewport: Viewport;\n\tprivate _levelBasedRowTree = true;\n\tprivate _levelBasedColTree = true;\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tprotected _theme: TableTheme;\n\tget theme() { return this._theme }\n\tset theme(v: TableTheme) { this._theme = v }\n\n\tpublic readonly logger: log.Logger;\n\tpublic options: Options;\n\tpublic group: GroupModel;\n\n\tconstructor(source: GridSource, options?: Options, logger?: log.Logger) {\n\t\tthis.logger = logger;\n\t\tthis.options = options ?? initOptions(source.options);\n\t\tthis.populate(source);\n\t}\n\n\tgetConnectedModel(name: string) {\n\t\treturn this.group ? this.group.get(name) : null;\n\t}\n\n\tgetModelByRange(range: CellRange) {\n\t\treturn range.sheet ? this.getConnectedModel(range.sheet) : this;\n\t}\n\n\tgetCellByA1(a1: string) {\n\t\treturn this.getCellByRange(CellRange.fromA1(a1));\n\t}\n\n\tgetCellByRange(r: CellRange) {\n\t\treturn this.getCellByCoords(r.r1, r.c1);\n\t}\n\n\tgetCellByCoords(r: number, c: number) {\n\t\treturn this.rows[r]?.cell(c);\n\t}\n\n\tcell(coord1: string|number|CellRange, coord2?: number) {\n\t\tif (!isNaN(coord1 as number)) return this.getCellByCoords(coord1 as number, coord2 || 0);\n\t\tif (coord1 instanceof CellRange) return this.getCellByRange(coord1);\n\t\tif (typeof coord1 === 'string') return this.getCellByA1(coord1);\n\t\treturn null;\n\t}\n\n\tcreateRows(source: RowSource[], root = new RowModel(this, {l: -1}), indexOffset = 0) : [RowModel, RowModel[], number, boolean] {\n\t\tlet hasRowLevelBasedTree = false;\n\t\tlet hasRowParentBasedTree = false;\n\t\tthis.autofitRows.clear();\n\n\t\tconst rows = source.map((rowSource, r) => {\n\t\t\tif (!rowSource) rowSource = {};\n\t\t\tif (!isNaN(rowSource.l)) hasRowLevelBasedTree = true;\n\t\t\tif (rowSource.p != null) hasRowParentBasedTree = true;\n\t\t\tif (rowSource.h == 'auto') this.autofitRows.add(r);\n\t\t\tconst rowModel = new RowModel(this, rowSource);\n\t\t\trowModel.origIndex = r + indexOffset;\n\t\t\tif (rowModel.name) this.names.set(rowModel.name, CellRange.fullRow(r));\n\t\t\treturn rowModel;\n\t\t});\n\t\t\n\t\tlet maxRowLevel = -1;\n\t\tif (hasRowLevelBasedTree) maxRowLevel = tree.buildLevelBasedTree(rows, root, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\telse if (hasRowParentBasedTree) maxRowLevel = tree.buildParentBasedTree(rows, root);\n\t\telse root.children = rows;\n\n\t\tif (!hasRowParentBasedTree) hasRowLevelBasedTree = true; // default to level based tree\n\t\treturn [root, rows, maxRowLevel, hasRowLevelBasedTree];\n\t}\n\n\tinsertRowData(parent: RowModel, offset: number, source: RowSource[]) {\n\t\tconst res = this.createRows(source, new RowModel(this, {l: parent.level}), offset);\n\t\tthis._maxRowLevel = Math.max(this._maxRowLevel, res[2]);\n\t\tparent.insertChildren(res[0].children, offset);\n\t\tthis.indexRowsByTree();\n\t\tif (this.theme) {\n\t\t\tconst newRows = res[1];\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t}\n\n\tapplyTheme(theme: TableTheme, invalidateCellStyles?: boolean) {\n\t\tif (invalidateCellStyles) {\n\t\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\t\tcell.invalidateStyle();\n\t\t\t}\n\t\t}\n\t\tapplyTheme(theme, this);\n\t}\n\n\tpopulate(source: GridSource) {\n\t\tthis.index = source.index;\n\t\tthis.name = source.name ?? this.name;\n\t\tthis.tab = source.tab;\n\t\t\n\t\tlet hasColLevelBasedTree = false;\n\t\tlet hasColParentBasedTree = false;\n\n\t\tif (!source.columns) source.columns = new Array(this.options.columns).fill({});\n\t\tif (!source.rows) source.rows = new Array(this.options.rows).fill({});\n\n\t\t// styles\n\t\tif (source.styles) this.styles.populate(source.styles);\n\t\t\n\t\t// columns\n\t\tthis.autofitColumns.clear();\n\t\tthis.columns = source.columns.map((columnSource, c) => {\n\t\t\tif (!columnSource) columnSource = {};\n\t\t\tif (columnSource.l > 0) hasColLevelBasedTree = true;\n\t\t\tif (columnSource.p != null) hasColParentBasedTree = true;\n\t\t\tif (columnSource.w == 'auto') this.autofitColumns.add(c);\n\t\t\tconst colModel = new ColumnModel(this, columnSource);\n\t\t\tthis._filter = colModel.hasFilter || this._filter;\n\t\t\tif (colModel.name) this.names.set(colModel.name, CellRange.fullColumn(c));\n\t\t\treturn colModel;\n\t\t});\n \n\t\tthis._levelBasedColTree = hasColLevelBasedTree;\n\t\tthis._maxColumnLevel = -1;\n\t\tthis.colRoot = new ColumnModel(this, {l: -1});\n\t\tif (hasColLevelBasedTree) this._maxColumnLevel = tree.buildLevelBasedTree(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\telse if (hasColParentBasedTree) this._maxColumnLevel = tree.buildParentBasedTree(this.columns, this.colRoot);\n\t\telse this.colRoot.children = this.columns;\n\t\t\n\t\tif (!hasColParentBasedTree) this._levelBasedColTree = true; // default to level based tree\n\n\t\tthis.indexColumns();\n\t\tthis.indexVisibleColumns();\n\n\t\t// rows\n\t\t[this.rowRoot, this.rows, this._maxRowLevel, this._levelBasedRowTree] = this.createRows(source.rows);\n\t\tthis.indexRows();\n\t\tthis.indexVisibleRows();\n\t\tif (this.options.pageSize && this.options.pageSize <= this.rows.length) this.rowRoot.count = Infinity;\n\n\t\t// cells\n\t\tthis.merges.clear();\n\t\tsource.comments = source.comments || [];\n\t\tsource.cells?.forEach((cellSource, i) => {\n\t\t\tconst cell = this.rows[cellSource.r] ? this.rows[cellSource.r].cell(cellSource.c, cellSource) : null;\n\t\t\tif (!cell) {\n\t\t\t\tthis.logger?.error(`invalid cell definition (index ${i}): ${JSON.stringify(cellSource)}`);\n\t\t\t} else if (cellSource.cs > 1 || cellSource.rs > 1) {\n\t\t\t\tthis.merges.add({r: cell.r, c: cell.c, rs: cellSource.rs || 1, cs: cellSource.cs || 1});\n\t\t\t}\n\n\t\t\tif (cell && cellSource.comment) {\n\t\t\t\tsource.comments.push(Object.assign(cellSource.comment, {c: cellSource.c, r: cellSource.r}));\n\t\t\t}\n\t\t});\n\t\t\n\t\t// sparklines\n\t\tif (source.sparklines) {\n\t\t\ttry {\n\t\t\t\tthis.sparklines.populate(source.sparklines);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Sparkline init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// names\n\t\tif (source.names) {\n\t\t\ttry {\n\t\t\t\tthis.names.populate(source.names);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Named range init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// conditional formats\n\t\tif (source.rules) {\n\t\t\ttry {\n\t\t\t\tthis.conditionalFormats.populate(source.rules);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Conditional formats init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// theme\n\t\tif (source.theme) {\n\t\t\ttry {\n\t\t\t\tthis.applyTheme(source.theme);\n\t\t\t\tthis._theme = source.theme;\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Theme init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// comments\n\t\tif (source.comments) {\n\t\t\ttry {\n\t\t\t\tthis.comments.populate(source.comments);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Comment init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// custom properties\n\t\tthis._properties = source.props;\n\n\t\t// additional properties\n\t\tthis.otherSourceData = {};\n\t\tconst defaultKeys = new Set(DEFAULT_SOURCE_KEYS);\n\t\tconst keys = Object.keys(source).filter(k => !defaultKeys.has(k));\n\t\tkeys.forEach(k => this.otherSourceData[k] = source[k]);\n\n\t\t// default sort\n\t\tif (this.options.sorting?.defaultSettings) {\n\t\t\tthis.sorting.settings = this.options.sorting.defaultSettings;\n\t\t}\n\n\t\t// default filter\n\t\tif (this.options.filters?.defaultSettings) {\n\t\t\tthis.filter.settings = this.options.filters.defaultSettings;\n\t\t}\n\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tgetSourceData() {\n\t\tconst data = {\n\t\t\tindex: this.index,\n\t\t\tname: this.name,\n\t\t\ttab: this.tab,\n\t\t\tcolumns: this.columns.map(col => col.getSourceData()),\n\t\t\trows: this.rows.map(row => row.getSourceData()),\n\t\t\tstyles: this.styles.getSourceData(),\n\t\t\trules: this.conditionalFormats.getSourceData(),\n\t\t\tsparklines: this.sparklines.getSourceData(),\n\t\t\tnames: this.names.getSourceData(),\n\t\t\toptions: this.options,\n\t\t} as GridSource;\n\n\t\tif (this._properties) data.props = this._properties;\n\n\t\tconst cells = [];\n\t\tlet cellData: CellSource;\n\t\tfor (let r = 0; r < this.rows.length; r++) {\n\t\t\tfor (let c = 0; c < this.columns.length; c++) {\n\t\t\t\tcellData = this.rows[r].cell(c).getSourceData();\n\t\t\t\tif (Object.keys(cellData).length > 0) {\n\t\t\t\t\tcellData.r = r;\n\t\t\t\t\tcellData.c = c;\n\t\t\t\t\tcells.push(cellData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (cells.length > 0) data.cells = cells;\n\t\t\n\t\tconst styles = [] as Style[];\n\t\tthis.styles.clean();\n\t\tthis.styles.map.forEach(style => styles.push(style));\n\t\tif (styles.length > 0) data.styles = styles;\n\n\t\tconst otherModelKeys = new Set([\n\t\t\t...Object.keys(this.otherModels ?? {}),\n\t\t\t...Object.keys(this.otherSourceData ?? {})\n\t\t]);\n\t\totherModelKeys.forEach(k => data[k] = this.otherModels[k] \n\t\t\t? Array.from(this.otherModels[k]).map(m => m.getSourceData())\n\t\t\t: this.otherSourceData[k]\n\t\t);\n\n\t\treturn data;\n\t}\n\n\tcalcHeaderHeights() {\n\t\tthis._headerCount = 0;\n\t\tthis._headerHeights = [];\n\t\tthis.columns.forEach((column) => {\n\t\t\tthis._headerCount = column.header ? column.header.length : this._headerCount;\n\t\t\tif (this._headerHeights.length < this._headerCount) {\n\t\t\t\tthis._headerHeights.push(...Array(this._headerCount - this._headerHeights.length).fill(0));\n\t\t\t}\n\n\t\t\tcolumn.header?.forEach((h: ColumnHeaderModel, r) => {\n\t\t\t\tif (r >= this._headerHeights.length) {\n\t\t\t\t\tthis._headerHeights.push(0);\n\t\t\t\t}\n\t\t\t\tthis._headerHeights[r] = Math.max(this._headerHeights[r], h.height ?? 0);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexRows() {\n\t\tthis.visibleRows = [];\n\t\tthis.rows.forEach((row, r) => {\n\t\t\trow.index = r;\n\t\t\tif (!row.isLoaded) row.collapsed = true;\n\t\t\tif (!row.hidden && row.filterState != tree.FilterState.Filtered) {\n\t\t\t\trow.visibleIndex = this.visibleRows.length;\n\t\t\t\tthis.visibleRows.push(row);\n\t\t\t}\n\t\t});\n\t}\n\n\tindexVisibleRows() {\n\t\tthis.visibleRows = [];\n\t\tlet r = 0;\n\t\tif (this._levelBasedRowTree) {\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => {\n\t\t\t\tnode.visibleIndex = r++;\n\t\t\t\tthis.visibleRows.push(node)\n\t\t\t});\n\n\t\t\t// reverse order of row index\n\t\t\tif (this.options.rowTree.reversed) {\n\t\t\t\tconst reversedVisibleRows = new Array(this.visibleRows.length);\n\t\t\t\tthis.visibleRows.forEach((row, i) => {\n\t\t\t\t\tr = this.visibleRows.length - i - 1;\n\t\t\t\t\trow.visibleIndex = r;\n\t\t\t\t\treversedVisibleRows[r] = row;\n\t\t\t\t});\n\t\t\t\tthis.visibleRows = reversedVisibleRows;\n\t\t\t}\n\t\t} else {\n\t\t\t// in parent based node rows do not have to respect tree order\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => this.visibleRows[node.index] = node);\n\t\t\tthis.visibleRows = this.visibleRows.filter(row => {\n\t\t\t\tif (row) {\n\t\t\t\t\trow.visibleIndex = r++;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t}\n\n\tindexRowsByTree() {\n\t\tthis.rows = [];\n\t\tlet r = 0;\n\t\tthis.rowRoot.walk((row: RowModel) => {\n\t\t\trow.index = r++;\n\t\t\tthis.rows.push(row);\n\t\t});\n\t\tif (this.options.rowTree.reversed) this.rows.reverse();\n\t\tthis.indexVisibleRows();\n\t}\n\n\tindexColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.columns.forEach((column, c) => {\n\t\t\tcolumn.index = c;\n\t\t\tif (!column.hidden) this.visibleColumns.push(column);\n\t\t});\n\t}\n\n\tindexVisibleColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.visibleColumnIndex = {};\n\t\tlet c = 0;\n\t\tthis.colRoot.walkVisible((node: ColumnModel) => {\n\t\t\tnode.visibleIndex = c;\n\t\t\tthis.visibleColumnIndex[node.index] = c++;\n\t\t\tthis.visibleColumns.push(node);\n\t\t});\n\n\t\t// reverse order of column index\n\t\tif (this.options.columnTree.reversed) {\n\t\t\tthis.visibleColumnIndex = {};\n\t\t\tconst reversedVisibleColumns = new Array(this.visibleColumns.length);\n\t\t\tthis.visibleColumns.forEach((column, i) => {\n\t\t\t\tc = this.visibleColumns.length - i - 1;\n\t\t\t\tcolumn.visibleIndex = c;\n\t\t\t\tthis.visibleColumnIndex[column.index] = c;\n\t\t\t\treversedVisibleColumns[c] = column;\n\t\t\t});\n\t\t\tthis.visibleColumns = reversedVisibleColumns;\n\t\t}\n\n\t\tthis.indexHeaders();\n\t}\n\n\tindexHeaders() {\n\t\tthis._mergedHeaders = [];\n\t\tthis._headerCount = 0;\n\t\tthis.colRoot.walkVisible((column: ColumnModel) => {\n\t\t\tthis._headerCount = Math.max(column.header ? column.header.length : 0, this._headerCount);\n\t\t\tcolumn.mergedHeaders.forEach(h => this._mergedHeaders.push({\n\t\t\t\th: h,\n\t\t\t\tc: column.index,\n\t\t\t\tr: h.r,\n\t\t\t\tcs: column.calculateRealColspan(h.cs ?? 1),\n\t\t\t\trs: h.rs ?? 1\n\t\t\t}));\n\t\t});\n\n\t\t// hidden header cells\n\t\tthis._mergedHeaders.forEach(h => {\n\t\t\tif (h.h.hidden) return;\n\t\t\t\n\t\t\tfor (let c = h.c; c < h.c + h.cs; c++) {\n\t\t\t\tfor (let r = h.r; r < h.r + h.rs; r++) {\n\t\t\t\t\tif ((r > h.r || c > h.c) && this.columns[c] && this.columns[c].header[r]) {\n\t\t\t\t\t\tthis.columns[c].header[r].hidden = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tremoveHeader(r: number) {\n\t\tthis.columns.forEach(column => {\n\t\t\tif (r < column.header.length) column.header.splice(r, 1);\n\t\t});\n\t\tthis.indexHeaders();\n\t}\n\n\tclearRows = () : RowModel[] => {\n\t\tthis.rowRoot.clearChildren();\n\t\tthis.rows = [];\n\t\treturn this.rows;\n\t}\n\t\n\tclearColumns = () : ColumnModel[] => this.columns = [];\n\n\tclear() {\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t\tthis.resetViewport();\n\t}\n\n\tresetViewport() {\n\t\tthis._viewport = null;\n\t\treturn this;\n\t}\n\n\tgetViewport(\n\t\toffset: {c: number, r: number}, \n\t\tviewportSize: {w: number, h: number}, \n\t\tfreeze: {t: number, l: number, b: number, r: number},\n\t) : Viewport {\n\t\tconst viewportRows: RowModel[] = [];\n\t\tconst viewportColumns: ColumnModel[] = [];\n\n\t\tlet row: RowModel;\n\t\tlet remainingHeight = viewportSize.h;\n\t\tlet r = 0;\n\t\t// top rows\n\t\tfor (r = 0; r < freeze.t; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t}\n\n\t\t// center rows\n\t\tr = freeze.t + offset.r;\n\t\twhile (remainingHeight > 0 && r < this.visibleRows.length) {\n\t\t\trow = this.visibleRows[r++];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows again\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\tviewportRows.push(this.visibleRows[r]);\n\t\t}\n\n\t\tlet column: ColumnModel;\n\t\tlet remainingWidth = viewportSize.w;\n\t\tlet c = 0;\n\n\t\t// left columns\n\t\tfor (c = 0; c < freeze.l; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t}\n\n\t\t// center columns\n\t\tc = freeze.l + offset.c;\n\t\twhile (remainingWidth > 0 && c < this.visibleColumns.length) {\n\t\t\tcolumn = this.visibleColumns[c++];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns again\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tviewportColumns.push(this.visibleColumns[c]);\n\t\t}\n\n\t\treturn (this._viewport = {rows: viewportRows, columns: viewportColumns});\n\t}\n\n\tcalculateViewport() {\n\t\treturn this._viewport ? this.calculations.calculateViewport(this._viewport) : [];\n\t}\n\n\tgetValuesInRange(range: CellRange, formattedValues = false) {\n\t\trange = range.intersect(this.gridRange);\n\t\tif (!range) return [];\n\t\tconst {columns, rows} = range.size;\n\t\tconst values: Matrix<unknown> = new Array(rows);\n\t\tlet i = 0, j = 0;\n\t\tlet row: RowModel;\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\tvalues[i] = new Array(columns);\n\t\t\tj = 0;\n\t\t\trow = this.rows[r];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tvalues[i][j++] = formattedValues ? row.cell(c).formattedValue : row.cell(c).value;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn values;\n\t}\n\n\tsetRowExpandLevel(level: number) {\n\t\tthis.rows.forEach(row => {\n\t\t\trow.collapsed = (!row.isLoaded && !row.isPartialyLoaded) || row.level >= level;\n\t\t\tif (row.level <= level) row.hidden = false; // remove hidden flag for visible rows\n\t\t});\n\t\tthis.indexVisibleRows();\n\t}\n\t\n\tsetColumnExpandLevel(level: number) {\n\t\tthis.columns.forEach(column => column.collapsed = column.level >= level);\n\t\tthis.indexVisibleColumns();\n\t}\n\n\tgetViewportRange() {\n\t\treturn this._viewport ? new CellRange(\n\t\t\tthis._viewport.columns[0].index,\n\t\t\tthis._viewport.rows[0].index,\n\t\t\tthis._viewport.columns[this._viewport.columns.length - 1].index,\n\t\t\tthis._viewport.rows[this._viewport.rows.length - 1].index,\n\t\t) : null;\n\t}\n\n\tget gridRange() {\n\t\treturn new CellRange(0, 0, this.columns.length - 1, this.rows.length - 1);\n\t}\n\n\tgetRangeIterator(range: CellRange, withinViewport = false) {\n\t\treturn new IterableRange(this, withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange()) \n\t\t\t: range.intersect(this.gridRange)\n\t\t);\n\t}\n\n\tgetInitializedCellIterator() {\n\t\treturn new IterableRange(this, this.gridRange, true);\n\t}\n\n\tgetRowIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<RowModel>(this, range, 'rows');\n\t}\n\n\tgetColumnIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport\n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<ColumnModel>(this, range, 'columns');\n\t}\n\n\tgetCellArray(range: CellRange) {\n\t\tconst cells: CellModel[] = [];\n\t\tfor (const cell of this.getRangeIterator(range)) {\n\t\t\tcells.push(cell);\n\t\t}\n\t\treturn cells;\n\t}\n\n\ttransformRangeToMatrix<T>(range: CellRange, transform: (cell: CellModel) => T): Matrix<T> {\n\t\tlet row: RowModel, cell: CellModel, rowValues: T[];\n\t\trange = range.intersect(this.gridRange);\n\t\tconst cells: Matrix<T> = [];\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\trowValues = [];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tcell = row.cell(c);\n\t\t\t\tif (cell) rowValues.push(transform(cell));\n\t\t\t}\t\n\t\t\tcells.push(rowValues);\n\t\t}\n\t\treturn cells;\n\t}\n\n\tgetCellMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c);\n\t}\n\n\tgetValueMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c.value);\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\toptions.sheet = this.name;\n\t\tthis.merges.shift(options);\n\t\tthis.calculations.shift(options);\n\t\tthis.names.shift(options);\n\t\tthis.comments.shift(options);\n\t\tthis.sparklines.shift(options);\n\t}\n\n\tclearCalculations(all = false) {\n\t\tif (all && this.group) this.group.models.forEach(m => m.calculations.refresh());\n\t\telse this.calculations.refresh();\n\t}\n\n\trefreshSparklines() {\n\t\tthis.sparklines.updateRangeMaps();\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tclearCalculatedStyles() {\n\t\tthis.conditionalFormats.refresh();\n\t\tconst cells = [] as CellModel[];\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcells.push(cell);\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tinsertColumns(index: number, count: number, after = false) {\n\t\tconst parent = this.columns[Math.min(this.columns.length - 1, index)].parent;\n\t\tif (after) ++index;\n\t\tthis.shift({index: index, offset: count, direction: 'right'});\n\t\tfor (let r = 0; r < this.rows.length; r++) this.rows[r].insertColumns(index, count, false);\n\t\tconst newColumns = (new Array(count)).fill(null).map(() => new ColumnModel(this));\n\t\tthis.columns.splice(index, 0, ...newColumns);\n\t\tif (this.maxColumnLevel > 0) parent.insertChildren(newColumns, index - (parent.index || -1) - 1);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn newColumns;\n\t}\n\n\tdeleteColumns(index: number, count: number) {\n\t\tconst parent = this.columns[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'left'});\n\t\tconst deletedCells: CellModel[][] = [];\n\t\tfor (let r = 0; r < this.rows.length; r++)\n\t\t\tdeletedCells.push(this.rows[r].deleteColumns(index, count, false));\n\t\t// const deletedColumns: [ColumnModel, CellModel[]][] = this.columns.splice(index, count)\n\t\t// \t.map((column, i) => [column, deletedCells[i]]);\n\t\tconst deletedColumns = this.columns.splice(index, count);\n\t\tparent?.deleteChildren(deletedColumns);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedColumns;\n\t}\n\n\tinsertRows(index: number, rows: number|RowModel[], after = false) {\n\t\tconst parentIndex = Math.min(this.rows.length - 1, index);\n\t\tconst parent = parentIndex < 0 ? this.rowRoot : this.rows[parentIndex].parent;\n\t\tif (after) ++index;\n\t\tconst count = isNaN(rows as number) ? (rows as RowModel[]).length : rows as number;\n\t\tthis.shift({index: index, offset: count, direction: 'down'});\n\t\tconst newRows = isNaN(rows as number) ? (rows as RowModel[]) : (new Array(count)).fill(null).map(() => new RowModel(this));\n\t\tthis.rows.splice(index, 0, ...newRows);\n\t\tif (this.maxRowLevel > 0) parent.insertChildren(newRows, index - (parent.index || -1) - 1);\n\t\tthis.indexRows();\n\t\tif (this.theme) {\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t\tthis.clearCalculations(true);\n\t\treturn newRows;\n\t}\n\n\tdeleteRows(index: number, count: number) {\n\t\tconst parent = this.rows[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'up'});\n\t\tconst deletedRows = this.rows.splice(index, count);\n\t\tparent?.deleteChildren(deletedRows);\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedRows;\n\t}\n\n\tmoveRows(index: number, count: number, targetIndex: number) {\n\t\tconst movingRows = this.rows.splice(index, count);\n\t\tthis.rows.splice(targetIndex, 0, ...movingRows);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'down', maxIndex: index + count - 1});\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn movingRows;\n\t}\n\n\tmoveColumns(index: number, count: number, targetIndex: number) {\n\t\tconst movingColumns = this.columns.splice(index, count);\n\t\tthis.columns.splice(targetIndex, 0, ...movingColumns);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'right', maxIndex: index + count - 1});\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn movingColumns;\n\t}\n\n\tspillValues(opt: SpillOptions): SpillResult {\n\t\tconst {cell, values, displayValues, propertyCell} = opt;\n\t\tconst cells: CellModel[] = [];\n\t\tconst oldValues: CellValueType[] = [];\n\t\tconst empty = values.length === 0 || values[0].length === 0;\n\t\tlet row: RowModel, spillCell: CellModel;\n\n\t\tconst range = empty ? null : new CellRange(\n\t\t\tcell.c, cell.r,\n\t\t\tcell.c + values[0].length - 1,\n\t\t\tcell.r + values.length - 1\n\t\t)\n\n\t\tif (cell.spillRange) {\n\t\t\t// clear values from previous evaluations not contained in the new spill range\n\t\t\tthis.getRangeIterator(cell.spillRange, true).forEach(c => {\n\t\t\t\tif (cell != c && !range?.contains(c.range)) c.clearSpilledValue();\n\t\t\t});\n\t\t}\n\n\t\tcell.spillRange = range;\n\t\tif (empty) return {cells, oldValues, range: null};\n\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\tconst r2 = r - range.r1;\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tconst c2 = c - range.c1;\n\t\t\t\tspillCell = row.cell(c);\n\t\t\t\tif (spillCell.editable) {\n\t\t\t\t\toldValues.push(spillCell.value2 as CellValueType);\n\t\t\t\t\tspillCell.spillValue(values[r2][c2], cell);\n\t\t\t\t\tif (propertyCell) {\n\t\t\t\t\t\tspillCell.format = propertyCell.format;\n\t\t\t\t\t\tspillCell.type = propertyCell.type;\n\t\t\t\t\t}\n\t\t\t\t\tif (displayValues && displayValues[r2][c2] != null) spillCell.displayValue = displayValues[r2][c2];\n\t\t\t\t\tcells.push(spillCell);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {cells, oldValues, range};\n\t}\n\n\tgetCellByName(name: string, contextRange: CellRange, searchGroup = true): CellModel {\n\t\tconst cell = this.names.getCellByName(name, contextRange);\n\t\tif (cell) return cell;\n\t\telse if (this.group && searchGroup) return this.group.getCellByName(name, contextRange);\n\t\treturn null;\n\t}\n\n\tgetRangeByName(name: string, searchGroup = true): CellRange {\n\t\tconst range = this.names.getRangeByName(name);\n\t\tif (range) return range;\n\t\telse if (this.group && searchGroup) return this.group.getRangeByName(name);\n\t\treturn null;\n\t}\n\n\tgetValueMatrixByName(name: string, searchGroup = true): Matrix<unknown> {\n\t\tconst matrix = this.names.getRangeByName(name);\n\t\tif (matrix) return this.getValueMatrix(matrix);\n\t\telse if (this.group && searchGroup) return this.group.getValueMatrixByName(name);\n\t\treturn null;\n\t}\n\n\trebuildRowTree() {\n\t\tconst buildFunction = this._levelBasedRowTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxRowLevel = buildFunction(this.rows, this.rowRoot, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\tthis.indexRowsByTree();\n\t}\n\n\trebuildColumnTree() {\n\t\tconst buildFunction = this._levelBasedColTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxColumnLevel = buildFunction(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\tthis.indexColumns();\n\t}\n\n\tcalculateCellOffset(cell: CellRange) : Location {\n\t\tlet x = 0, y = 0;\n\t\tfor (let c = 0; c < cell.c1; c++) {\n\t\t\tif (!this.columns[c]) break;\n\t\t\tx += this.columns[c].width;\n\t\t}\n\t\tfor (let r = 0; r < cell.r1; r++) {\n\t\t\tif (!this.rows[r]) break;\n\t\t\ty += this.rows[r].height;\n\t\t}\n\t\treturn { x, y };\n\t}\n\n}"]}
@@ -0,0 +1,26 @@
1
+ import { CellRange } from "../common";
2
+ import { BaseGroupModelSource } from "../types";
3
+ import { GridModel } from "./gridModel";
4
+ import { TableTheme } from "./tableTheme";
5
+ export declare class GroupModel {
6
+ private _max;
7
+ readonly models: Map<string, GridModel>;
8
+ readonly themes: Map<string, TableTheme>;
9
+ private _errors;
10
+ get errors(): Error[];
11
+ get(name: string): GridModel;
12
+ has(name: string): boolean;
13
+ getNewName(): string;
14
+ add(model: GridModel): GridModel;
15
+ duplicate(name: string): GridModel;
16
+ remove(name: string): this;
17
+ rename(name: string, newName: string): this;
18
+ clear(): void;
19
+ constructor(sourceData?: BaseGroupModelSource);
20
+ populate(sourceData: BaseGroupModelSource): void;
21
+ getSourceData(): BaseGroupModelSource;
22
+ getCellByName(name: string, contextRange: CellRange): import("./cellModel").CellModel;
23
+ getRangeByName(name: string): CellRange;
24
+ getValueMatrixByName(name: string): import("@omegagrid/core").Matrix<unknown>;
25
+ }
26
+ //# sourceMappingURL=groupModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupModel.d.ts","sourceRoot":"","sources":["../../src/model/groupModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,UAAU;IAEtB,OAAO,CAAC,IAAI,CAAK;IACjB,SAAgB,MAAM,yBAAgC;IACtD,SAAgB,MAAM,0BAAiC;IAEvD,OAAO,CAAE,OAAO,CAAe;IAC/B,IAAI,MAAM,YAA0B;IAEpC,GAAG,CAAC,IAAI,EAAE,MAAM;IAChB,GAAG,CAAC,IAAI,EAAE,MAAM;IAEhB,UAAU;IAOV,GAAG,CAAC,KAAK,EAAE,SAAS;IAcpB,SAAS,CAAC,IAAI,EAAE,MAAM;IAWtB,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAcpC,KAAK;gBAKO,UAAU,CAAC,EAAE,oBAAoB;IAI7C,QAAQ,CAAC,UAAU,EAAE,oBAAoB;IAgBzC,aAAa,IAAK,oBAAoB;IAMtC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;IAQnD,cAAc,CAAC,IAAI,EAAE,MAAM;IAQ3B,oBAAoB,CAAC,IAAI,EAAE,MAAM;CAQjC"}
@@ -0,0 +1,112 @@
1
+ import { GridModel } from "./gridModel";
2
+ export class GroupModel {
3
+ get errors() { return this._errors; }
4
+ get(name) { return this.models.get(name); }
5
+ has(name) { return this.models.has(name); }
6
+ getNewName() {
7
+ let name;
8
+ do
9
+ name = `sheet${this._max}`;
10
+ while (this.models.has(name));
11
+ return name;
12
+ }
13
+ add(model) {
14
+ model.index = model.index ?? this._max;
15
+ ++this._max;
16
+ model.name = model.name || this.getNewName();
17
+ if (this.models.has(model.name)) {
18
+ throw Error(`sheet "${model.name}" already exists`);
19
+ }
20
+ this.models.set(model.name, model);
21
+ model.group = this;
22
+ return model;
23
+ }
24
+ duplicate(name) {
25
+ const model = this.get(name);
26
+ if (!model)
27
+ return;
28
+ const newModel = new GridModel(model.getSourceData(), model.options);
29
+ let index = 1;
30
+ while (this.models.has(`${name}_${index}`))
31
+ ++index;
32
+ newModel.name = `${name}_${index}`;
33
+ this.add(newModel);
34
+ return newModel;
35
+ }
36
+ remove(name) {
37
+ this.models.delete(name);
38
+ return this;
39
+ }
40
+ rename(name, newName) {
41
+ if (this.has(name)) {
42
+ if (this.has(newName))
43
+ throw new Error(`Model '${newName}' already exists`);
44
+ const model = this.get(name);
45
+ model.name = newName;
46
+ this.models.set(newName, model);
47
+ this.models.delete(name);
48
+ this.models.forEach(m => {
49
+ if (m.calculations.renameSheet(name, newName))
50
+ m.calculateViewport();
51
+ });
52
+ }
53
+ return this;
54
+ }
55
+ clear() {
56
+ this.models.clear();
57
+ this._errors = [];
58
+ }
59
+ constructor(sourceData) {
60
+ this._max = 0;
61
+ this.models = new Map();
62
+ this.themes = new Map();
63
+ this._errors = [];
64
+ if (sourceData)
65
+ this.populate(sourceData);
66
+ }
67
+ populate(sourceData) {
68
+ this.clear();
69
+ sourceData.models.forEach(m => {
70
+ const model = new GridModel(m);
71
+ try {
72
+ this.add(model);
73
+ }
74
+ catch (error) {
75
+ this.errors.push(error);
76
+ }
77
+ });
78
+ if (sourceData.themes) {
79
+ sourceData.themes.forEach(t => this.themes.set(t.name, t));
80
+ }
81
+ }
82
+ getSourceData() {
83
+ const data = { models: [] };
84
+ this.models.forEach(model => data.models.push(model.getSourceData()));
85
+ return data;
86
+ }
87
+ getCellByName(name, contextRange) {
88
+ for (const m of this.models.values()) {
89
+ const cell = m.getCellByName(name, contextRange, false);
90
+ if (cell)
91
+ return cell;
92
+ }
93
+ return null;
94
+ }
95
+ getRangeByName(name) {
96
+ for (const m of this.models.values()) {
97
+ const range = m.getRangeByName(name, false);
98
+ if (range)
99
+ return range;
100
+ }
101
+ return null;
102
+ }
103
+ getValueMatrixByName(name) {
104
+ for (const m of this.models.values()) {
105
+ const matrix = m.getValueMatrixByName(name, false);
106
+ if (matrix)
107
+ return matrix;
108
+ }
109
+ return null;
110
+ }
111
+ }
112
+ //# sourceMappingURL=groupModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupModel.js","sourceRoot":"","sources":["../../src/model/groupModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CellRange } from \"../common\";\nimport { BaseGroupModelSource } from \"../types\";\nimport { GridModel } from \"./gridModel\";\nimport { TableTheme } from \"./tableTheme\";\n\nexport class GroupModel {\n\n\tprivate _max = 0;\n\tpublic readonly models = new Map<string, GridModel>();\n\tpublic readonly themes = new Map<string, TableTheme>();\n\n\tprivate _errors: Error[] = [];\n\tget errors() { return this._errors }\n\n\tget(name: string) { return this.models.get(name) }\n\thas(name: string) { return this.models.has(name) }\n\n\tgetNewName() {\n\t\tlet name: string;\n\t\tdo name = `sheet${this._max}`;\n\t\twhile (this.models.has(name));\n\t\treturn name;\n\t}\n\n\tadd(model: GridModel) {\n\t\tmodel.index = model.index ?? this._max;\n\t\t++this._max;\n\t\tmodel.name = model.name || this.getNewName();\n\n\t\tif (this.models.has(model.name)) {\n\t\t\tthrow Error(`sheet \"${model.name}\" already exists`);\n\t\t}\n\n\t\tthis.models.set(model.name, model);\n\t\tmodel.group = this;\n\t\treturn model;\n\t}\n\n\tduplicate(name: string) {\n\t\tconst model = this.get(name);\n\t\tif (!model) return;\n\t\tconst newModel = new GridModel(model.getSourceData(), model.options);\n\t\tlet index = 1;\n\t\twhile (this.models.has(`${name}_${index}`)) ++index;\n\t\tnewModel.name = `${name}_${index}`;\n\t\tthis.add(newModel);\n\t\treturn newModel;\n\t}\n\n\tremove(name: string) {\n\t\tthis.models.delete(name);\n\t\treturn this;\n\t}\n\n\trename(name: string, newName: string) {\n\t\tif (this.has(name)) {\n\t\t\tif (this.has(newName)) throw new Error(`Model '${newName}' already exists`);\n\t\t\tconst model = this.get(name);\n\t\t\tmodel.name = newName;\n\t\t\tthis.models.set(newName, model);\n\t\t\tthis.models.delete(name);\n\t\t\tthis.models.forEach(m => {\n\t\t\t\tif (m.calculations.renameSheet(name, newName)) m.calculateViewport();\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\tclear() {\n\t\tthis.models.clear();\n\t\tthis._errors = [];\n\t}\n\n\tconstructor(sourceData?: BaseGroupModelSource) {\n\t\tif (sourceData) this.populate(sourceData);\n\t}\n\n\tpopulate(sourceData: BaseGroupModelSource) {\n\t\tthis.clear();\n\t\tsourceData.models.forEach(m => {\n\t\t\tconst model = new GridModel(m);\n\t\t\ttry {\n\t\t\t\tthis.add(model);\n\t\t\t} catch (error) {\n\t\t\t\tthis.errors.push(error);\n\t\t\t}\n\t\t});\n\n\t\tif (sourceData.themes) {\n\t\t\tsourceData.themes.forEach(t => this.themes.set(t.name, t));\n\t\t}\n\t}\n\n\tgetSourceData() : BaseGroupModelSource {\n\t\tconst data: BaseGroupModelSource = {models: []};\n\t\tthis.models.forEach(model => data.models.push(model.getSourceData()));\n\t\treturn data;\n\t}\n\n\tgetCellByName(name: string, contextRange: CellRange) {\n\t\tfor (const m of this.models.values()) {\n\t\t\tconst cell = m.getCellByName(name, contextRange, false);\n\t\t\tif (cell) return cell;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetRangeByName(name: string) {\n\t\tfor (const m of this.models.values()) {\n\t\t\tconst range = m.getRangeByName(name, false);\n\t\t\tif (range) return range;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetValueMatrixByName(name: string) {\n\t\tfor (const m of this.models.values()) {\n\t\t\tconst matrix = m.getValueMatrixByName(name, false);\n\t\t\tif (matrix) return matrix;\n\t\t}\n\t\treturn null;\n\t}\n\n}"]}
@@ -0,0 +1,24 @@
1
+ import { CellAddress } from "../common";
2
+ import { EditType, CellValueType } from "../types";
3
+ import { CellSource } from "./cellModel";
4
+ import { GridModel } from "./gridModel";
5
+ export type HistoryItem = {
6
+ type: EditType;
7
+ addresses: CellAddress[];
8
+ names: string[];
9
+ oldValues?: CellValueType[];
10
+ oldProps?: Partial<CellSource>[];
11
+ newValues?: CellValueType[];
12
+ newProps?: Partial<CellSource>[];
13
+ timestamp?: number;
14
+ };
15
+ export declare class History {
16
+ readonly model: GridModel;
17
+ stack: HistoryItem[];
18
+ restack: HistoryItem[];
19
+ constructor(model: GridModel);
20
+ push(item: HistoryItem): this;
21
+ pop(count?: number): HistoryItem[];
22
+ pop2(count?: number): HistoryItem[];
23
+ }
24
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/model/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qBAAa,OAAO;aAKS,KAAK,EAAE,SAAS;IAHrC,KAAK,EAAE,WAAW,EAAE,CAAM;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAM;gBAEP,KAAK,EAAE,SAAS;IAE5C,IAAI,CAAC,IAAI,EAAE,WAAW;IAOtB,GAAG,CAAC,KAAK,SAAI;IAWb,IAAI,CAAC,KAAK,SAAI;CAWd"}
@@ -0,0 +1,35 @@
1
+ export class History {
2
+ constructor(model) {
3
+ this.model = model;
4
+ this.stack = [];
5
+ this.restack = [];
6
+ }
7
+ push(item) {
8
+ this.restack = [];
9
+ if (!item.timestamp)
10
+ item.timestamp = Date.now();
11
+ this.stack.push(item);
12
+ return this;
13
+ }
14
+ pop(count = 1) {
15
+ let i = 0;
16
+ const items = [];
17
+ while (i++ < count && this.stack.length > 0) {
18
+ const item = this.stack.pop();
19
+ items.push(item);
20
+ this.restack.push(item);
21
+ }
22
+ return items;
23
+ }
24
+ pop2(count = 1) {
25
+ let i = 0;
26
+ const items = [];
27
+ while (i++ < count && this.restack.length > 0) {
28
+ const item = this.restack.pop();
29
+ items.push(item);
30
+ this.stack.push(item);
31
+ }
32
+ return items;
33
+ }
34
+ }
35
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/model/history.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,OAAO;IAKnB,YAA4B,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;QAHrC,UAAK,GAAkB,EAAE,CAAC;QAC1B,YAAO,GAAkB,EAAE,CAAC;IAEa,CAAC;IAEjD,IAAI,CAAC,IAAiB;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG,CAAC,KAAK,GAAG,CAAC;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CAED","sourcesContent":["import { CellAddress } from \"../common\";\nimport { EditType, CellValueType } from \"../types\";\nimport { CellSource } from \"./cellModel\";\nimport { GridModel } from \"./gridModel\";\n\nexport type HistoryItem = {\n\ttype: EditType,\n\taddresses: CellAddress[],\n\tnames: string[],\n\toldValues?: CellValueType[],\n\toldProps?: Partial<CellSource>[],\n\tnewValues?: CellValueType[],\n\tnewProps?: Partial<CellSource>[],\n\ttimestamp?: number\n}\n\nexport class History {\n\n\tpublic stack: HistoryItem[] = [];\n\tpublic restack: HistoryItem[] = [];\n\n\tconstructor(public readonly model: GridModel) { }\n\n\tpush(item: HistoryItem) {\n\t\tthis.restack = [];\n\t\tif (!item.timestamp) item.timestamp = Date.now();\n\t\tthis.stack.push(item);\n\t\treturn this;\n\t}\n\n\tpop(count = 1) {\n\t\tlet i = 0;\n\t\tconst items: HistoryItem[] = [];\n\t\twhile (i++ < count && this.stack.length > 0) {\n\t\t\tconst item = this.stack.pop();\n\t\t\titems.push(item);\n\t\t\tthis.restack.push(item);\n\t\t}\n\t\treturn items;\n\t}\n\n\tpop2(count = 1) {\n\t\tlet i = 0;\n\t\tconst items: HistoryItem[] = [];\n\t\twhile (i++ < count && this.restack.length > 0) {\n\t\t\tconst item = this.restack.pop();\n\t\t\titems.push(item);\n\t\t\tthis.stack.push(item);\n\t\t}\n\t\treturn items;\n\t}\n\n}"]}
@@ -0,0 +1,23 @@
1
+ export * from './cellModel';
2
+ export * from './columnModel';
3
+ export * from './sortingModel';
4
+ export * from './commentModel';
5
+ export * from './calculationModel';
6
+ export * from './conditionalFormats';
7
+ export * from './cssStyle';
8
+ export * from './dependencies';
9
+ export * from './elementModel';
10
+ export * from './filterModel';
11
+ export * from './gridModel';
12
+ export * from './groupModel';
13
+ export * from './history';
14
+ export * from './iterableRange';
15
+ export * from './options';
16
+ export * from './rowModel';
17
+ export * from './namingModel';
18
+ export * from './selectionModel';
19
+ export * from './style';
20
+ export * from './tableTheme';
21
+ export * from './validations';
22
+ export * from './merges';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ export * from './cellModel';
2
+ export * from './columnModel';
3
+ export * from './sortingModel';
4
+ export * from './commentModel';
5
+ export * from './calculationModel';
6
+ export * from './conditionalFormats';
7
+ export * from './cssStyle';
8
+ export * from './dependencies';
9
+ export * from './elementModel';
10
+ export * from './filterModel';
11
+ export * from './gridModel';
12
+ export * from './groupModel';
13
+ export * from './history';
14
+ export * from './iterableRange';
15
+ export * from './options';
16
+ export * from './rowModel';
17
+ export * from './namingModel';
18
+ export * from './selectionModel';
19
+ export * from './style';
20
+ export * from './tableTheme';
21
+ export * from './validations';
22
+ export * from './merges';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC","sourcesContent":["export * from './cellModel';\nexport * from './columnModel';\nexport * from './sortingModel';\nexport * from './commentModel';\nexport * from './calculationModel';\nexport * from './conditionalFormats';\nexport * from './cssStyle';\nexport * from './dependencies';\nexport * from './elementModel';\nexport * from './filterModel';\nexport * from './gridModel';\nexport * from './groupModel';\nexport * from './history';\nexport * from './iterableRange';\nexport * from './options';\nexport * from './rowModel';\nexport * from './namingModel';\nexport * from './selectionModel';\nexport * from './style';\nexport * from './tableTheme';\nexport * from './validations';\nexport * from './merges';\n"]}
@@ -0,0 +1,49 @@
1
+ import { CellRange } from "../common/range";
2
+ import { CellModel } from "./cellModel";
3
+ import { ColumnModel } from "./columnModel";
4
+ import { GridModel } from "./gridModel";
5
+ import { RowModel } from "./rowModel";
6
+ export declare class IterableRange extends CellRange {
7
+ private model;
8
+ private initializedOnly;
9
+ private r;
10
+ private c;
11
+ private done;
12
+ constructor(model: GridModel, range: CellRange, initializedOnly?: boolean);
13
+ [Symbol.iterator](): this;
14
+ nextInitialized(): CellModel;
15
+ next(): {
16
+ done: boolean;
17
+ value?: CellModel;
18
+ };
19
+ forEach(callback: (cell: CellModel) => void): void;
20
+ }
21
+ export declare class IterableAddressRange extends CellRange {
22
+ private r;
23
+ private c;
24
+ private done;
25
+ constructor(range: CellRange);
26
+ [Symbol.iterator](): this;
27
+ next(): {
28
+ done: boolean;
29
+ value?: undefined;
30
+ } | {
31
+ done: boolean;
32
+ value: CellRange;
33
+ };
34
+ }
35
+ export declare class IterableAxisRange<TModel extends RowModel | ColumnModel> extends CellRange {
36
+ private model;
37
+ private i;
38
+ private key;
39
+ private axis;
40
+ private done;
41
+ constructor(model: GridModel, range: CellRange, axis: 'rows' | 'columns');
42
+ [Symbol.iterator](): this;
43
+ next(): {
44
+ done: boolean;
45
+ value?: TModel;
46
+ };
47
+ forEach(callback: (cell: TModel) => void): void;
48
+ }
49
+ //# sourceMappingURL=iterableRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterableRange.d.ts","sourceRoot":"","sources":["../../src/model/iterableRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,aAAc,SAAQ,SAAS;IAM/B,OAAO,CAAC,KAAK;IAA+B,OAAO,CAAC,eAAe;IAJ/E,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,CAAC,CAAM;IACf,OAAO,CAAC,IAAI,CAAS;gBAED,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAU,eAAe,UAAQ;IAIvF,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB,eAAe;IAeZ,IAAI,IAAI;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAC;IAiB7C,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI;CAO3C;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAElD,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,CAAC,CAAM;IACf,OAAO,CAAC,IAAI,CAAS;gBAET,KAAK,EAAE,SAAS;IAI5B,CAAC,MAAM,CAAC,QAAQ,CAAC;IAId,IAAI;;;;;;;CAcP;AAED,qBAAa,iBAAiB,CAAC,MAAM,SAAS,QAAQ,GAAC,WAAW,CAAE,SAAQ,SAAS;IAOxE,OAAO,CAAC,KAAK;IALzB,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,IAAI,CAAS;gBAED,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAC,SAAS;IAM9E,CAAC,MAAM,CAAC,QAAQ,CAAC;IAId,IAAI,IAAI;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC;IAY1C,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;CAOxC"}
@@ -0,0 +1,108 @@
1
+ import { CellRange } from "../common/range";
2
+ export class IterableRange extends CellRange {
3
+ constructor(model, range, initializedOnly = false) {
4
+ super(range.c1, range.r1, range.c2, range.r2);
5
+ this.model = model;
6
+ this.initializedOnly = initializedOnly;
7
+ this.r = 0;
8
+ this.c = -1;
9
+ this.done = false;
10
+ }
11
+ [Symbol.iterator]() {
12
+ return this;
13
+ }
14
+ nextInitialized() {
15
+ let cell;
16
+ while (!this.done && !cell) {
17
+ if (this.c < this.size.columns - 1) {
18
+ this.c++;
19
+ }
20
+ else if (this.r < this.size.rows - 1) {
21
+ this.c = 0;
22
+ this.r++;
23
+ }
24
+ cell = this.model.rows[this.r].cells[this.c];
25
+ this.done = this.c >= this.size.columns - 1 && this.r >= this.size.rows - 1;
26
+ }
27
+ return cell;
28
+ }
29
+ next() {
30
+ if (this.done) {
31
+ return { done: true };
32
+ }
33
+ else if (this.c < this.size.columns - 1) {
34
+ this.c++;
35
+ }
36
+ else if (this.r < this.size.rows - 1) {
37
+ this.c = 0;
38
+ this.r++;
39
+ }
40
+ this.done = this.c >= this.size.columns - 1 && this.r >= this.size.rows - 1;
41
+ const row = this.model.rows[this.r + this.r1];
42
+ const c = this.c + this.c1;
43
+ const cell = this.initializedOnly && !row.isCellInitialized(c) ? this.nextInitialized() : row?.cell(c);
44
+ return cell ? { done: false, value: cell } : { done: true };
45
+ }
46
+ forEach(callback) {
47
+ let cell;
48
+ while ((cell = this.next().value)) {
49
+ callback(cell);
50
+ }
51
+ }
52
+ }
53
+ export class IterableAddressRange extends CellRange {
54
+ constructor(range) {
55
+ super(range.c1, range.r1, range.c2, range.r2);
56
+ this.r = 0;
57
+ this.c = -1;
58
+ this.done = false;
59
+ }
60
+ [Symbol.iterator]() {
61
+ return this;
62
+ }
63
+ next() {
64
+ if (this.done) {
65
+ return { done: true };
66
+ }
67
+ else if (this.c < this.size.columns - 1) {
68
+ this.c++;
69
+ }
70
+ else if (this.r < this.size.rows - 1) {
71
+ this.c = 0;
72
+ this.r++;
73
+ }
74
+ this.done = this.c == this.size.columns - 1 && this.r == this.size.rows - 1;
75
+ return { done: false, value: new CellRange(this.c + this.c1, this.r + this.r1) };
76
+ }
77
+ }
78
+ export class IterableAxisRange extends CellRange {
79
+ constructor(model, range, axis) {
80
+ super(range.c1, range.r1, range.c2, range.r2);
81
+ this.model = model;
82
+ this.i = 0;
83
+ this.done = false;
84
+ this.axis = axis;
85
+ this.key = axis === 'rows' ? 'r1' : 'c1';
86
+ }
87
+ [Symbol.iterator]() {
88
+ return this;
89
+ }
90
+ next() {
91
+ if (this.done) {
92
+ return { done: true };
93
+ }
94
+ else if (this.i < this.size[this.axis] - 1) {
95
+ this.i++;
96
+ }
97
+ this.done = this.i >= this.size[this.axis] - 1;
98
+ const row = this.model[this.axis][this.i + this[this.key]];
99
+ return row ? { done: false, value: row } : { done: true };
100
+ }
101
+ forEach(callback) {
102
+ let axis;
103
+ while ((axis = this.next().value)) {
104
+ callback(axis);
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=iterableRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterableRange.js","sourceRoot":"","sources":["../../src/model/iterableRange.ts"],"names":[],"mappings":"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","sourcesContent":["import { CellRange } from \"../common/range\";\nimport { CellModel } from \"./cellModel\";\nimport { ColumnModel } from \"./columnModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\n\nexport class IterableRange extends CellRange {\n\t\n\tprivate r = 0;\n\tprivate c = -1;\n\tprivate done = false;\n\n\tconstructor(private model: GridModel, range: CellRange, private initializedOnly = false) { \n\t\tsuper(range.c1, range.r1, range.c2, range.r2);\n\t}\n\n\t[Symbol.iterator]() {\n return this;\n }\n\n\tnextInitialized() {\n\t\tlet cell: CellModel;\n\t\twhile (!this.done && !cell) {\n\t\t\tif (this.c < this.size.columns - 1) {\n\t\t\t\tthis.c++;\n\t\t\t} else if (this.r < this.size.rows - 1) {\n\t\t\t\tthis.c = 0;\n\t\t\t\tthis.r++;\n\t\t\t}\n\t\t\tcell = this.model.rows[this.r].cells[this.c];\n\t\t\tthis.done = this.c >= this.size.columns - 1 && this.r >= this.size.rows - 1;\n\t\t}\n\t\treturn cell;\n\t}\n\n next(): {done: boolean, value?: CellModel} {\n if (this.done) {\n\t\t\treturn {done: true};\n\t\t} else if (this.c < this.size.columns - 1) {\n\t\t\tthis.c++;\n\t\t} else if (this.r < this.size.rows - 1) {\n\t\t\tthis.c = 0;\n\t\t\tthis.r++;\n\t\t}\n\n\t\tthis.done = this.c >= this.size.columns - 1 && this.r >= this.size.rows - 1;\n\t\tconst row = this.model.rows[this.r + this.r1];\n\t\tconst c = this.c + this.c1;\n\t\tconst cell = this.initializedOnly && !row.isCellInitialized(c) ? this.nextInitialized() : row?.cell(c);\n\t\treturn cell ? {done: false, value: cell} : {done: true};\n\t}\n\n\tforEach(callback: (cell: CellModel) => void) {\n\t\tlet cell: CellModel;\n\t\twhile ((cell = this.next().value)) {\n\t\t\tcallback(cell);\n\t\t}\n\t}\n\n}\n\nexport class IterableAddressRange extends CellRange {\n\t\n\tprivate r = 0;\n\tprivate c = -1;\n\tprivate done = false;\n\n\tconstructor(range: CellRange) { \n\t\tsuper(range.c1, range.r1, range.c2, range.r2);\n\t}\n\n\t[Symbol.iterator]() {\n return this;\n }\n\n next() {\n if (this.done) {\n\t\t\treturn {done: true};\n\t\t} else if (this.c < this.size.columns - 1) {\n\t\t\tthis.c++;\n\t\t} else if (this.r < this.size.rows - 1) {\n\t\t\tthis.c = 0;\n\t\t\tthis.r++;\n\t\t}\n\n\t\tthis.done = this.c == this.size.columns - 1 && this.r == this.size.rows - 1;\n\t\treturn {done: false, value: new CellRange(this.c + this.c1, this.r + this.r1)};\n }\n\n}\n\nexport class IterableAxisRange<TModel extends RowModel|ColumnModel> extends CellRange {\n\t\n\tprivate i = 0;\n\tprivate key: 'r1'|'c1';\n\tprivate axis: 'rows'|'columns';\n\tprivate done = false;\n\n\tconstructor(private model: GridModel, range: CellRange, axis: 'rows'|'columns') { \n\t\tsuper(range.c1, range.r1, range.c2, range.r2);\n\t\tthis.axis = axis;\n\t\tthis.key = axis === 'rows' ? 'r1' : 'c1';\n\t}\n\n\t[Symbol.iterator]() {\n return this;\n }\n\n next(): {done: boolean, value?: TModel} {\n if (this.done) {\n\t\t\treturn {done: true};\n\t\t} else if (this.i < this.size[this.axis] - 1) {\n\t\t\tthis.i++;\n\t\t}\n\n\t\tthis.done = this.i >= this.size[this.axis] - 1;\n\t\tconst row = this.model[this.axis][this.i + this[this.key]] as TModel;\n\t\treturn row ? {done: false, value: row} : {done: true};\n\t}\n\n\tforEach(callback: (cell: TModel) => void) {\n\t\tlet axis: TModel;\n\t\twhile ((axis = this.next().value)) {\n\t\t\tcallback(axis);\n\t\t}\n\t}\n\n}\n"]}