@operato/scene-table 1.2.66 → 1.2.76

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.2.76](https://github.com/things-scene/operato-scene/compare/v1.2.75...v1.2.76) (2023-10-28)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * scene-tab ([ad62f96](https://github.com/things-scene/operato-scene/commit/ad62f967b149eb5adf8f2e0714d79e8a9dc7186c))
12
+
13
+
14
+
15
+ ## [1.2.67](https://github.com/things-scene/operato-scene/compare/v1.2.66...v1.2.67) (2023-09-15)
16
+
17
+
18
+ ### :bug: Bug Fix
19
+
20
+ * table data-spread to cell ([f17b895](https://github.com/things-scene/operato-scene/commit/f17b895fcb9683a408510255fc0201fde8a7f3ac))
21
+
22
+
23
+
6
24
  ## [1.2.66](https://github.com/things-scene/operato-scene/compare/v1.2.65...v1.2.66) (2023-09-14)
7
25
 
8
26
  **Note:** Version bump only for package @operato/scene-table
package/dist/table.js CHANGED
@@ -25,7 +25,7 @@ const NATURE = {
25
25
  label: 'data-spread-to',
26
26
  name: 'spreadTo',
27
27
  property: {
28
- options: ['text', 'data']
28
+ options: ['', 'text']
29
29
  }
30
30
  }
31
31
  ],
@@ -339,9 +339,13 @@ export default class Table extends Container {
339
339
  cells.forEach(cell => {
340
340
  var dataKey = cell.model.dataKey;
341
341
  var dataIndex = cell.model.dataIndex;
342
- if (dataKey && dataIndex >= 0) {
343
- ;
344
- cell[spreadTo] = (data[dataIndex] || {})[dataKey];
342
+ if (dataIndex >= 0) {
343
+ const cellData = dataKey ? (data[dataIndex] || {})[dataKey] : data[dataIndex];
344
+ cell.data = cellData;
345
+ if (spreadTo != 'data') {
346
+ ;
347
+ cell[spreadTo] = cellData;
348
+ }
345
349
  }
346
350
  });
347
351
  }
package/dist/table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ComponentNature, Container, Control, Layout, State, Style } from '@hatiolab/things-scene'\n\nimport {\n above,\n after,\n array,\n before,\n below,\n buildCopiedCell,\n buildNewCell,\n CLEAR_STYLE,\n columnControlHandler,\n isBottomMost,\n isLeftMost,\n isRightMost,\n isTopMost,\n rowControlHandler,\n setCellBorder,\n WHERE\n} from './helper-functions'\nimport TableCell from './table-cell'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'rows',\n name: 'rows',\n property: 'rows'\n },\n {\n type: 'number',\n label: 'columns',\n name: 'columns',\n property: 'columns'\n },\n {\n type: 'select',\n label: 'data-spread-to',\n name: 'spreadTo',\n property: {\n options: ['text', 'data']\n }\n }\n ],\n 'value-property': 'data',\n help: 'scene/component/table'\n}\n\nexport default class Table extends Container {\n created() {\n var tobeSize = this.rows * this.columns\n var gap = this.size() - tobeSize\n\n if (this.data) {\n this.setCellsData()\n }\n\n if (gap == 0) {\n return\n } else if (gap > 0) {\n let removals = this.components.slice(gap)\n this.remove(removals)\n } else {\n let newbies = []\n\n for (let i = 0; i < -gap; i++) newbies.push(buildNewCell('table-cell', this.app))\n\n this.add(newbies)\n }\n\n var widths = this.getState('widths')\n var heights = this.getState('heights')\n\n if (!widths || widths.length < this.columns) this.set('widths', this.widths)\n if (!heights || heights.length < this.rows) this.set('heights', this.heights)\n }\n\n containable(component: Component) {\n return component.getState('type') == 'table-cell'\n }\n\n get focusible() {\n /* 이 컨테이너에는 컴포넌트를 임의로 추가 및 삭제할 수 없도록 함 */\n return false\n }\n\n get widths() {\n var widths = this.getState('widths')\n\n if (!widths) return array(1, this.columns)\n\n if (widths.length < this.columns) return widths.concat(array(1, this.columns - widths.length))\n else if (widths.length > this.columns) return widths.slice(0, this.columns)\n\n return widths\n }\n\n get heights() {\n var heights = this.getState('heights')\n\n if (!heights) return array(1, this.rows)\n\n if (heights.length < this.rows) return heights.concat(array(1, this.rows - heights.length))\n else if (heights.length > this.rows) return heights.slice(0, this.rows)\n\n return heights\n }\n\n buildCells(newrows: number, newcolumns: number, oldrows: number, oldcolumns: number) {\n if (newrows < oldrows) {\n let removals: TableCell[] = ([] = this.components.slice(oldcolumns * newrows) as TableCell[])\n\n // 지우려는 셀중에 병합된 셀을 찾는다.\n let mergedCells: TableCell[] = []\n removals.forEach(cell => {\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n })\n\n // 병합된 셀 중에서 슈퍼셀을 찾는다.\n if (mergedCells.length > 0) {\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.components.indexOf(cell) % oldcolumns\n row = Math.floor(this.components.indexOf(cell) / oldcolumns)\n index = row * oldcolumns + col + 1\n while (index) {\n --index\n let component: TableCell = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.components.indexOf(component) % oldcolumns\n let spColEnd = (this.components.indexOf(component) % oldcolumns) + component.colspan\n let spRowStart = Math.floor(this.components.indexOf(component) / oldcolumns)\n let spRowEnd = Math.floor(this.components.indexOf(component) / oldcolumns) + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n // 슈퍼셀에서 colspan 을 감소시킨다\n superCells.forEach(cell => {\n // newcolumns < oldcolumns 케이스와 이 부분만 다름\n cell.rowspan -= oldrows - newrows\n })\n }\n\n this.remove(removals)\n }\n\n var minrows = Math.min(newrows, oldrows)\n\n if (newcolumns > oldcolumns) {\n for (let r = 0; r < minrows; r++) {\n for (let c = oldcolumns; c < newcolumns; c++) {\n this.insertComponentAt(buildNewCell('table-cell', this.app), r * newcolumns + c)\n }\n }\n } else if (newcolumns < oldcolumns) {\n let removals: TableCell[] = []\n\n for (let r = 0; r < minrows; r++) {\n for (let c = newcolumns; c < oldcolumns; c++) {\n removals.push(this.components[r * oldcolumns + c] as TableCell)\n }\n }\n // 지우려는 셀중에 병합된 셀을 찾는다.\n let mergedCells: TableCell[] = []\n removals.forEach(cell => {\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n })\n\n // 병합된 셀 중에서 슈퍼셀을 찾는다.\n if (mergedCells.length > 0) {\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.components.indexOf(cell) % oldcolumns\n row = Math.floor(this.components.indexOf(cell) / oldcolumns)\n index = row * oldcolumns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.components.indexOf(component) % oldcolumns\n let spColEnd = (this.components.indexOf(component) % oldcolumns) + component.colspan\n let spRowStart = Math.floor(this.components.indexOf(component) / oldcolumns)\n let spRowEnd = Math.floor(this.components.indexOf(component) / oldcolumns) + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n // 슈퍼셀에서 colspan 을 감소시킨다\n superCells.forEach(cell => {\n cell.colspan -= oldcolumns - newcolumns\n })\n }\n\n this.remove(removals)\n }\n\n if (newrows > oldrows) {\n let newbies = []\n\n for (let r = oldrows; r < newrows; r++) {\n for (let i = 0; i < newcolumns; i++) {\n newbies.push(buildNewCell('table-cell', this.app))\n }\n }\n this.add(newbies)\n }\n\n this.set({\n widths: this.widths,\n heights: this.heights\n })\n }\n\n get layout() {\n return Layout.get('table')\n }\n\n get rows() {\n return Number(this.getState('rows'))\n }\n\n setCellsStyle(cells: TableCell[], style: Style, where: WHERE, clearBefore = true) {\n var components = this.components\n var total = components.length\n var columns = this.getState('columns')\n\n // 병합된 셀도 포함시킨다.\n var _cells: TableCell[] = []\n cells.forEach(c => {\n _cells.push(c)\n if (c.colspan || c.rowspan) {\n let col = this.getRowColumn(c).column\n let row = this.getRowColumn(c).row\n for (let i = row; i < row + c.rowspan; i++)\n for (let j = col; j < col + c.colspan; j++)\n if (i != row || j != col) _cells.push(this.components[i * this.columns + j] as TableCell)\n }\n })\n var indices = _cells.map(cell => components.indexOf(cell))\n indices.forEach(i => {\n var cell = components[i]\n clearBefore && setCellBorder(cell, CLEAR_STYLE, 'all')\n\n switch (where) {\n case 'all':\n setCellBorder(cell, style, where)\n\n if (isLeftMost(total, columns, indices, i)) setCellBorder(components[before(columns, i)], style, 'right')\n if (isRightMost(total, columns, indices, i)) setCellBorder(components[after(columns, i)], style, 'left')\n if (isTopMost(total, columns, indices, i)) setCellBorder(components[above(columns, i)], style, 'bottom')\n if (isBottomMost(total, columns, indices, i)) setCellBorder(components[below(columns, i)], style, 'top')\n break\n case 'in':\n if (!isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n }\n if (!isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n }\n if (!isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n }\n if (!isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n }\n break\n case 'out':\n if (isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n setCellBorder(components[before(columns, i)], style, 'right')\n }\n if (isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n setCellBorder(components[after(columns, i)], style, 'left')\n }\n if (isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n setCellBorder(components[above(columns, i)], style, 'bottom')\n }\n if (isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n setCellBorder(components[below(columns, i)], style, 'top')\n }\n break\n case 'left':\n if (isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n setCellBorder(components[before(columns, i)], style, 'right')\n }\n break\n case 'right':\n if (isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n setCellBorder(components[after(columns, i)], style, 'left')\n }\n break\n case 'center':\n if (!isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n }\n if (!isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n }\n break\n case 'middle':\n if (!isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n }\n if (!isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n }\n break\n case 'top':\n if (isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n setCellBorder(components[above(columns, i)], style, 'bottom')\n }\n break\n case 'bottom':\n if (isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n setCellBorder(components[below(columns, i)], style, 'top')\n }\n break\n case 'clear':\n setCellBorder(cell, CLEAR_STYLE, 'all')\n\n if (isLeftMost(total, columns, indices, i))\n setCellBorder(components[before(columns, i)], CLEAR_STYLE, 'right')\n if (isRightMost(total, columns, indices, i)) setCellBorder(components[after(columns, i)], CLEAR_STYLE, 'left')\n if (isTopMost(total, columns, indices, i)) setCellBorder(components[above(columns, i)], CLEAR_STYLE, 'bottom')\n if (isBottomMost(total, columns, indices, i)) setCellBorder(components[below(columns, i)], CLEAR_STYLE, 'top')\n }\n })\n }\n\n setCellsData() {\n var data = this.data\n\n if (!data) return\n\n data = this.toObjectArrayValue(data) || []\n\n var cells = this.components as TableCell[]\n\n var { spreadTo = 'text' } = this.state\n\n cells.forEach(cell => {\n var dataKey = cell.model.dataKey\n var dataIndex = cell.model.dataIndex\n if (dataKey && dataIndex >= 0) {\n ;(cell as any)[spreadTo] = (data[dataIndex] || {})[dataKey]\n }\n })\n }\n\n getRowColumn(cell: TableCell): { column: number; row: number } {\n var idx = this.components.indexOf(cell)\n\n return {\n column: idx % this.columns,\n row: Math.floor(idx / this.columns)\n }\n }\n\n getCellsByRow(row: number) {\n return this.components.slice(row * this.columns, (row + 1) * this.columns)\n }\n\n getCellsByColumn(column: number) {\n var cells = []\n for (var i = 0; i < this.rows; i++) cells.push(this.components[this.columns * i + column])\n\n return cells\n }\n\n // 한 개의 행을 매개변수로 받아서 첫 번째 셀부터 우측으로 이동하면서 병합된 셀이 있는지 검사한다.\n findMergedCellByX(row: number) {\n let mergedCells: TableCell[] = []\n let cell: TableCell\n for (let i = 0; i < this.columns; i++) {\n cell = this.components[row * this.columns + i] as TableCell\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n }\n return mergedCells\n }\n\n // 한 개의 열을 매개변수로 받아서 첫 번째 셀부터 아래로 이동하면서 병합된 셀이 있는지 검사한다.\n findMergedCellByY(column: number) {\n let mergedCells: TableCell[] = []\n let cell: TableCell\n for (let i = 0; i < this.rows; i++) {\n cell = this.components[i * this.columns + column] as TableCell\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n }\n return mergedCells\n }\n\n mergeCells(cells: TableCell[]) {\n // 선택한 셀이 들어있는 행\n let mergeableRows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == mergeableRows.indexOf(row)) mergeableRows.push(row)\n })\n\n // 선택한 셀의 행이 연속적인 숫자가 아니라면 병합하지 않는다.\n if (mergeableRows.length - 1 !== mergeableRows[mergeableRows.length - 1] - mergeableRows[0]) return false\n\n // 선택한 셀이 들어있는 열\n let mergeableColumns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == mergeableColumns.indexOf(column)) mergeableColumns.push(column)\n })\n\n // 선택한 셀의 열이 연속적인 숫자가 아니라면 병합하지 않는다.\n if (mergeableColumns.length - 1 !== mergeableColumns[mergeableColumns.length - 1] - mergeableColumns[0])\n return false\n\n // 병합할 행의 수\n let numberOfRows = mergeableRows.length\n\n // 병합할 열의 수\n let numberOfColumns = mergeableColumns.length\n\n // 선택된 셀의 수\n let numberOfCells = cells.length\n\n // 병합될 조건 검사\n // 행과 열의 곱이 셀의 수가 아니거나 셀의 수가 2보다 작은 경우는 병합하지 않는다.\n if (numberOfCells !== numberOfRows * numberOfColumns || numberOfCells < 2) return false\n\n // 선택한 셀들을 index 값이 낮은 것부터 순서대로 재정렬\n cells.sort((a, b) => {\n return (\n this.getRowColumn(a).row * this.columns +\n this.getRowColumn(a).column -\n (this.getRowColumn(b).row * this.columns + this.getRowColumn(b).column)\n )\n })\n\n // 셀을 병합함\n let firstCell = cells[0]\n firstCell.set({\n colspan: numberOfColumns,\n rowspan: numberOfRows\n })\n\n // 첫 번째 셀을 제외한 나머지 셀을 true로 지정\n for (let i = 1; i < numberOfCells; i++) cells[i].merged = true\n\n // 병합 후에는 첫 번째 셀을 선택하도록 함\n this.root.selected = [firstCell]\n }\n\n splitCells(cells: TableCell[]) {\n // 선택한 병합된 셀의 정보를 가져온다.\n let firstCellRowColumn = this.getRowColumn(cells[0])\n let firstCell = cells[0]\n let firstCellIndex = this.components.indexOf(cells[0])\n let length = this.components.length\n let lastCell = this.components[length - 1] as TableCell\n let lastCellRowColumn = this.getRowColumn(lastCell)\n let startIndex = length / (lastCellRowColumn.row + 1)\n\n // 병합된 셀들을 구해서 merged를 false로 설정한다.\n // 자식 셀이 갖고 있는 부모 셀의 위치를 초기화 한다.\n for (let j = 0; j < firstCell.rowspan; j++) {\n let index\n let nextCell: TableCell\n for (let i = firstCellIndex; i < firstCellIndex + firstCell.colspan; i++) {\n index = startIndex * j + i\n nextCell = this.components[index] as TableCell\n nextCell.merged = false\n }\n }\n\n // 첫 번째 셀의 rowspan, colspan = 1로 지정한다.\n firstCell.colspan = 1\n firstCell.rowspan = 1\n }\n\n deleteRows(cells: TableCell[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n if (cells[0].merged == true) return false\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n var heights = this.heights.slice()\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 지운다.\n if (mergedCells.length === 0) {\n this.remove(this.getCellsByRow(row))\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 지워야 한다.\n //\n else {\n // 삭제할 행에서 병합된 셀을 삭제할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n let superCellRow = Math.floor(index / this.columns)\n // 지우려는 행이 슈퍼셀을 포함한 경우이면서 슈퍼셀이 마지막 행의 셀이 아닌 경우\n // 그리고 슈퍼셀의 rowspan이 1보다 큰 경우\n let aCell: TableCell = this.components[index + this.columns] as TableCell\n let bCell: TableCell = this.components[index] as TableCell\n if (row === superCellRow && superCellRow !== this.rows - 1 && bCell.rowspan > 1) {\n aCell.rowspan = bCell.rowspan - 1\n aCell.colspan = bCell.colspan\n aCell.merged = false\n aCell.set('text', bCell.getState('text'))\n } else {\n bCell.rowspan -= 1\n }\n })\n this.remove(this.getCellsByRow(row))\n }\n })\n\n rows.forEach(row => heights.splice(row, 1))\n\n this.model.rows -= rows.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n this.set('heights', heights)\n }\n\n deleteColumns(cells: TableCell[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n if (cells[0].merged == true) return false\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n\n columns.forEach(column => {\n var widths = this.widths.slice()\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 지운다.\n if (mergedCells.length === 0) {\n this.remove(this.getCellsByColumn(column))\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 지워야 한다.\n else {\n // 삭제할 열에서 병합된 셀을 삭제할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n let superCellColumn = index % this.columns\n\n let aCell: TableCell = this.components[index + 1] as TableCell\n let bCell: TableCell = this.components[index] as TableCell\n // 지우려는 열이 슈퍼셀을 포함한 경우이면서 슈퍼셀이 마지막 열의 셀이 아닌 경우\n // 그리고 슈퍼셀의 colspan이 1보다 큰 경우\n if (column === superCellColumn && superCellColumn !== this.columns - 1 && bCell.colspan > 1) {\n aCell.rowspan = bCell.rowspan\n aCell.colspan = bCell.colspan - 1\n aCell.merged = false\n aCell.set('text', bCell.getState('text'))\n } else {\n bCell.colspan -= 1\n }\n })\n this.remove(this.getCellsByColumn(column))\n }\n widths.splice(column, 1)\n this.model.columns -= 1 // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n this.set('widths', widths)\n })\n }\n\n insertCellsAbove(cells: TableCell[]) {\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n // 행 2개 이상은 추가 안함. 임시로 막아놓음\n if (rows.length >= 2) return false\n let insertionRowPosition = rows[0]\n let newbieRowHeights: number[] = []\n let newbieCells: TableCell[] = []\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 위에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += rows.length\n\n this.clearCache()\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 추가해야 한다.\n else {\n // 선택한 행이 2개 이상 있고 그 중에 병합된 셀이 적어도 한 개라도 있으면\n // 병합된 셀이 포함된 행의 추가는 무시한다. 임시방편으로 막아놈\n if (rows.length > 1) return false\n // 추가할 행에서 병합된 셀을 추가할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let cell: TableCell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n\n // 추가하려는 행이 슈퍼셀을 포함한 경우\n if (superCellRow === row) {\n for (let i = 0; i < this.columns; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n let addedCell = this.components[index + this.columns] as TableCell\n\n addedCell.rowspan = superCellObj.rowspan\n addedCell.colspan = superCellObj.colspan\n addedCell.set('text', superCellObj.text)\n addedCell.merged = superCellObj.merged\n } else {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n cell.rowspan += 1\n }\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += rows.length\n\n this.clearCache()\n })\n }\n })\n }\n\n insertCellsBelow(cells: TableCell[]) {\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n\n // 행 2개 이상은 추가 안함. 임시로 막아놓음\n if (rows.length >= 2) return false\n let insertionRowPosition = rows[rows.length - 1] + 1\n let newbieRowHeights: number[] = []\n let newbieCells: TableCell[] = []\n\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 아래에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += 1\n\n this.clearCache()\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 추가해야 한다.\n else {\n // 추가할 행에서 병합된 셀을 추가할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 행이 병합된 셀중 마지막 행인 경우\n if (superCellRow + superCellObj.rowspan - 1 === row) {\n for (let i = 0; i < this.columns; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n } else if (superCellRow === row) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n cell.rowspan += 1\n\n let newbieCell = this.components[index + this.columns] as TableCell\n // 슈퍼셀이 복사됐으므로 그 해당 셀을 병합된 셀로 설정한다.\n newbieCell.rowspan = 1\n newbieCell.colspan = 1\n newbieCell.merged = true\n newbieCell.set('text', '')\n } else {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n cell.rowspan += 1\n }\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += 1\n\n this.clearCache()\n })\n }\n })\n }\n\n insertCellsLeft(cells: TableCell[]) {\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[0]\n let newbieColumnWidths: number[] = []\n let newbieCells: TableCell[] = []\n columns.forEach(column => {\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 왼쪽에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let index = this.rows\n newbieCells.reverse().forEach(cell => {\n if (index == 0) {\n index = this.rows\n increasedColumns++\n }\n\n index--\n this.insertComponentAt(cell, insertionColumnPosition + index * increasedColumns)\n })\n\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 추가해야 한다.\n else {\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellColumn = index % this.columns\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 열이 슈퍼셀을 포함한 경우\n if (superCellColumn === column) {\n for (let i = 0; i < this.rows; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n } else {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n }\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n })\n }\n })\n }\n\n insertCellsRight(cells: TableCell[]) {\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[columns.length - 1] + 1\n let newbieColumnWidths: number[] = []\n let newbieCells: TableCell[] = []\n columns.forEach(column => {\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 오른쪽에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let index = this.rows\n newbieCells.reverse().forEach(cell => {\n if (index == 0) {\n index = this.rows\n increasedColumns++\n }\n\n index--\n this.insertComponentAt(cell, insertionColumnPosition + index * increasedColumns)\n })\n\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 추가해야 한다.\n else {\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let superCellColumn = index % this.columns\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 열이 병합된 셀중 마지막 열인 경우\n if (superCellColumn + superCellObj.colspan - 1 === column) {\n for (let i = 0; i < this.rows; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n } else if (superCellColumn === column) {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n // 슈퍼셀이 복사됐으므로 그 해당 셀을 병합된 셀로 설정한다.\n let newbieCell = this.components[index + superCellRow + 1] as TableCell\n newbieCell.rowspan = 1\n newbieCell.colspan = 1\n newbieCell.merged = true\n newbieCell.set('text', '')\n } else {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n }\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n })\n }\n })\n }\n\n distributeHorizontal(cells: TableCell[]) {\n var columns: number[] = []\n\n cells.forEach(cell => {\n let rowcolumn = this.getRowColumn(cell)\n\n if (-1 == columns.indexOf(rowcolumn.column)) columns.push(rowcolumn.column)\n })\n\n var sum = columns.reduce((sum, column) => {\n return sum + this.widths[column]\n }, 0)\n\n var newval = Math.round((sum / columns.length) * 100) / 100\n var widths = this.widths.slice()\n columns.forEach(column => {\n widths[column] = newval\n })\n\n this.set('widths', widths)\n }\n\n distributeVertical(cells: TableCell[]) {\n var rows: number[] = []\n\n cells.forEach((cell: TableCell) => {\n let rowcolumn = this.getRowColumn(cell)\n\n if (-1 == rows.indexOf(rowcolumn.row)) rows.push(rowcolumn.row)\n })\n\n var sum: number = rows.reduce((sum, row) => {\n return sum + this.heights[row]\n }, 0)\n\n var newval = Math.round((sum / rows.length) * 100) / 100\n var heights = this.heights.slice()\n rows.forEach(row => {\n heights[row] = newval\n })\n\n this.set('heights', heights)\n }\n\n toObjectArrayValue(array: any[]) {\n if (!array || array.length === 0) return null\n\n if (!array[0].hasOwnProperty('__field1')) {\n return array\n }\n\n let indexKeyMap: { [key: string]: any } = {}\n let value = []\n\n for (let key in array[0]) {\n indexKeyMap[key] = array[0][key]\n }\n\n for (var i = 1; i < array.length; i++) {\n let object: { [key: string]: any } = {}\n let thisObject = array[i]\n for (let key in indexKeyMap) {\n let k = indexKeyMap[key]\n let v = thisObject[key]\n object[k] = v\n }\n\n value.push(object)\n }\n\n return value\n }\n\n get columns() {\n return Number(this.getState('columns'))\n }\n\n get lefts() {\n return this.components.filter((c, i) => {\n return !(i % this.columns)\n })\n }\n\n get centers() {\n return this.components.filter((c, i) => {\n return i % this.columns && (i + 1) % this.columns\n })\n }\n\n get rights() {\n return this.components.filter((c, i) => {\n return !((i + 1) % this.columns)\n })\n }\n\n get tops() {\n return this.components.slice(0, this.columns)\n }\n\n get middles() {\n return this.components.slice(this.columns, this.columns * (this.rows - 1))\n }\n\n get bottoms() {\n return this.components.slice(this.columns * (this.rows - 1))\n }\n\n get widths_sum(): number {\n var widths = this.widths\n return widths\n ? widths\n .filter((width: number, i: number) => i < this.columns)\n .reduce((sum: number, width: number) => sum + width, 0)\n : this.columns\n }\n\n get heights_sum(): number {\n var heights = this.heights\n return heights\n ? heights\n .filter((height: number, i: number) => i < this.rows)\n .reduce((sum: number, height: number) => sum + height, 0)\n : this.rows\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n\n get controls(): Control[] {\n var widths = this.widths\n var heights = this.heights\n var inside = this.textBounds\n\n var width_unit = inside!.width / this.widths_sum\n var height_unit = inside!.height / this.heights_sum\n\n var x = inside!.left\n var y = inside!.top\n\n var controls: Control[] = []\n\n widths.slice(0, this.columns - 1).forEach((width: number) => {\n x += width * width_unit\n controls.push({\n x: x,\n y: inside!.top,\n handler: columnControlHandler\n })\n })\n\n heights.slice(0, this.rows - 1).forEach((height: number) => {\n y += height * height_unit\n controls.push({\n x: inside!.left,\n y: y,\n handler: rowControlHandler\n })\n })\n\n return controls\n }\n\n onchange(after: State, before: State) {\n if ('rows' in after || 'columns' in after) {\n let { rows, columns } = this\n\n this.buildCells(\n rows,\n columns,\n 'rows' in before ? before.rows : rows,\n 'columns' in before ? before.columns : columns\n )\n }\n\n if ('data' in after) {\n this.setCellsData()\n }\n }\n\n get eventMap() {\n return {\n '(self)': {\n '(descendant)': {\n change: this.oncellchanged\n }\n }\n }\n }\n\n oncellchanged(after: State, before: State) {\n if ('dataKey' in after || 'dataIndex' in after) {\n this.setCellsData()\n }\n }\n}\n\n;['rows', 'columns', 'widths', 'heights', 'widths_sum', 'heights_sum', 'controls'].forEach(getter =>\n Component.memoize(Table.prototype, getter, false)\n)\n\nComponent.register('table', Table)\n"]}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ComponentNature, Container, Control, Layout, State, Style } from '@hatiolab/things-scene'\n\nimport {\n above,\n after,\n array,\n before,\n below,\n buildCopiedCell,\n buildNewCell,\n CLEAR_STYLE,\n columnControlHandler,\n isBottomMost,\n isLeftMost,\n isRightMost,\n isTopMost,\n rowControlHandler,\n setCellBorder,\n WHERE\n} from './helper-functions'\nimport TableCell from './table-cell'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'rows',\n name: 'rows',\n property: 'rows'\n },\n {\n type: 'number',\n label: 'columns',\n name: 'columns',\n property: 'columns'\n },\n {\n type: 'select',\n label: 'data-spread-to',\n name: 'spreadTo',\n property: {\n options: ['', 'text']\n }\n }\n ],\n 'value-property': 'data',\n help: 'scene/component/table'\n}\n\nexport default class Table extends Container {\n created() {\n var tobeSize = this.rows * this.columns\n var gap = this.size() - tobeSize\n\n if (this.data) {\n this.setCellsData()\n }\n\n if (gap == 0) {\n return\n } else if (gap > 0) {\n let removals = this.components.slice(gap)\n this.remove(removals)\n } else {\n let newbies = []\n\n for (let i = 0; i < -gap; i++) newbies.push(buildNewCell('table-cell', this.app))\n\n this.add(newbies)\n }\n\n var widths = this.getState('widths')\n var heights = this.getState('heights')\n\n if (!widths || widths.length < this.columns) this.set('widths', this.widths)\n if (!heights || heights.length < this.rows) this.set('heights', this.heights)\n }\n\n containable(component: Component) {\n return component.getState('type') == 'table-cell'\n }\n\n get focusible() {\n /* 이 컨테이너에는 컴포넌트를 임의로 추가 및 삭제할 수 없도록 함 */\n return false\n }\n\n get widths() {\n var widths = this.getState('widths')\n\n if (!widths) return array(1, this.columns)\n\n if (widths.length < this.columns) return widths.concat(array(1, this.columns - widths.length))\n else if (widths.length > this.columns) return widths.slice(0, this.columns)\n\n return widths\n }\n\n get heights() {\n var heights = this.getState('heights')\n\n if (!heights) return array(1, this.rows)\n\n if (heights.length < this.rows) return heights.concat(array(1, this.rows - heights.length))\n else if (heights.length > this.rows) return heights.slice(0, this.rows)\n\n return heights\n }\n\n buildCells(newrows: number, newcolumns: number, oldrows: number, oldcolumns: number) {\n if (newrows < oldrows) {\n let removals: TableCell[] = ([] = this.components.slice(oldcolumns * newrows) as TableCell[])\n\n // 지우려는 셀중에 병합된 셀을 찾는다.\n let mergedCells: TableCell[] = []\n removals.forEach(cell => {\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n })\n\n // 병합된 셀 중에서 슈퍼셀을 찾는다.\n if (mergedCells.length > 0) {\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.components.indexOf(cell) % oldcolumns\n row = Math.floor(this.components.indexOf(cell) / oldcolumns)\n index = row * oldcolumns + col + 1\n while (index) {\n --index\n let component: TableCell = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.components.indexOf(component) % oldcolumns\n let spColEnd = (this.components.indexOf(component) % oldcolumns) + component.colspan\n let spRowStart = Math.floor(this.components.indexOf(component) / oldcolumns)\n let spRowEnd = Math.floor(this.components.indexOf(component) / oldcolumns) + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n // 슈퍼셀에서 colspan 을 감소시킨다\n superCells.forEach(cell => {\n // newcolumns < oldcolumns 케이스와 이 부분만 다름\n cell.rowspan -= oldrows - newrows\n })\n }\n\n this.remove(removals)\n }\n\n var minrows = Math.min(newrows, oldrows)\n\n if (newcolumns > oldcolumns) {\n for (let r = 0; r < minrows; r++) {\n for (let c = oldcolumns; c < newcolumns; c++) {\n this.insertComponentAt(buildNewCell('table-cell', this.app), r * newcolumns + c)\n }\n }\n } else if (newcolumns < oldcolumns) {\n let removals: TableCell[] = []\n\n for (let r = 0; r < minrows; r++) {\n for (let c = newcolumns; c < oldcolumns; c++) {\n removals.push(this.components[r * oldcolumns + c] as TableCell)\n }\n }\n // 지우려는 셀중에 병합된 셀을 찾는다.\n let mergedCells: TableCell[] = []\n removals.forEach(cell => {\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n })\n\n // 병합된 셀 중에서 슈퍼셀을 찾는다.\n if (mergedCells.length > 0) {\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.components.indexOf(cell) % oldcolumns\n row = Math.floor(this.components.indexOf(cell) / oldcolumns)\n index = row * oldcolumns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.components.indexOf(component) % oldcolumns\n let spColEnd = (this.components.indexOf(component) % oldcolumns) + component.colspan\n let spRowStart = Math.floor(this.components.indexOf(component) / oldcolumns)\n let spRowEnd = Math.floor(this.components.indexOf(component) / oldcolumns) + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n // 슈퍼셀에서 colspan 을 감소시킨다\n superCells.forEach(cell => {\n cell.colspan -= oldcolumns - newcolumns\n })\n }\n\n this.remove(removals)\n }\n\n if (newrows > oldrows) {\n let newbies = []\n\n for (let r = oldrows; r < newrows; r++) {\n for (let i = 0; i < newcolumns; i++) {\n newbies.push(buildNewCell('table-cell', this.app))\n }\n }\n this.add(newbies)\n }\n\n this.set({\n widths: this.widths,\n heights: this.heights\n })\n }\n\n get layout() {\n return Layout.get('table')\n }\n\n get rows() {\n return Number(this.getState('rows'))\n }\n\n setCellsStyle(cells: TableCell[], style: Style, where: WHERE, clearBefore = true) {\n var components = this.components\n var total = components.length\n var columns = this.getState('columns')\n\n // 병합된 셀도 포함시킨다.\n var _cells: TableCell[] = []\n cells.forEach(c => {\n _cells.push(c)\n if (c.colspan || c.rowspan) {\n let col = this.getRowColumn(c).column\n let row = this.getRowColumn(c).row\n for (let i = row; i < row + c.rowspan; i++)\n for (let j = col; j < col + c.colspan; j++)\n if (i != row || j != col) _cells.push(this.components[i * this.columns + j] as TableCell)\n }\n })\n var indices = _cells.map(cell => components.indexOf(cell))\n indices.forEach(i => {\n var cell = components[i]\n clearBefore && setCellBorder(cell, CLEAR_STYLE, 'all')\n\n switch (where) {\n case 'all':\n setCellBorder(cell, style, where)\n\n if (isLeftMost(total, columns, indices, i)) setCellBorder(components[before(columns, i)], style, 'right')\n if (isRightMost(total, columns, indices, i)) setCellBorder(components[after(columns, i)], style, 'left')\n if (isTopMost(total, columns, indices, i)) setCellBorder(components[above(columns, i)], style, 'bottom')\n if (isBottomMost(total, columns, indices, i)) setCellBorder(components[below(columns, i)], style, 'top')\n break\n case 'in':\n if (!isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n }\n if (!isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n }\n if (!isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n }\n if (!isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n }\n break\n case 'out':\n if (isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n setCellBorder(components[before(columns, i)], style, 'right')\n }\n if (isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n setCellBorder(components[after(columns, i)], style, 'left')\n }\n if (isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n setCellBorder(components[above(columns, i)], style, 'bottom')\n }\n if (isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n setCellBorder(components[below(columns, i)], style, 'top')\n }\n break\n case 'left':\n if (isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n setCellBorder(components[before(columns, i)], style, 'right')\n }\n break\n case 'right':\n if (isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n setCellBorder(components[after(columns, i)], style, 'left')\n }\n break\n case 'center':\n if (!isLeftMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'left')\n }\n if (!isRightMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'right')\n }\n break\n case 'middle':\n if (!isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n }\n if (!isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n }\n break\n case 'top':\n if (isTopMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'top')\n setCellBorder(components[above(columns, i)], style, 'bottom')\n }\n break\n case 'bottom':\n if (isBottomMost(total, columns, indices, i)) {\n setCellBorder(cell, style, 'bottom')\n setCellBorder(components[below(columns, i)], style, 'top')\n }\n break\n case 'clear':\n setCellBorder(cell, CLEAR_STYLE, 'all')\n\n if (isLeftMost(total, columns, indices, i))\n setCellBorder(components[before(columns, i)], CLEAR_STYLE, 'right')\n if (isRightMost(total, columns, indices, i)) setCellBorder(components[after(columns, i)], CLEAR_STYLE, 'left')\n if (isTopMost(total, columns, indices, i)) setCellBorder(components[above(columns, i)], CLEAR_STYLE, 'bottom')\n if (isBottomMost(total, columns, indices, i)) setCellBorder(components[below(columns, i)], CLEAR_STYLE, 'top')\n }\n })\n }\n\n setCellsData() {\n var data = this.data\n\n if (!data) return\n\n data = this.toObjectArrayValue(data) || []\n\n var cells = this.components as TableCell[]\n\n var { spreadTo = 'text' } = this.state\n\n cells.forEach(cell => {\n var dataKey = cell.model.dataKey\n var dataIndex = cell.model.dataIndex\n\n if (dataIndex >= 0) {\n const cellData = dataKey ? (data[dataIndex] || {})[dataKey] : data[dataIndex]\n\n ;(cell as any).data = cellData\n if (spreadTo != 'data') {\n ;(cell as any)[spreadTo] = cellData\n }\n }\n })\n }\n\n getRowColumn(cell: TableCell): { column: number; row: number } {\n var idx = this.components.indexOf(cell)\n\n return {\n column: idx % this.columns,\n row: Math.floor(idx / this.columns)\n }\n }\n\n getCellsByRow(row: number) {\n return this.components.slice(row * this.columns, (row + 1) * this.columns)\n }\n\n getCellsByColumn(column: number) {\n var cells = []\n for (var i = 0; i < this.rows; i++) cells.push(this.components[this.columns * i + column])\n\n return cells\n }\n\n // 한 개의 행을 매개변수로 받아서 첫 번째 셀부터 우측으로 이동하면서 병합된 셀이 있는지 검사한다.\n findMergedCellByX(row: number) {\n let mergedCells: TableCell[] = []\n let cell: TableCell\n for (let i = 0; i < this.columns; i++) {\n cell = this.components[row * this.columns + i] as TableCell\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n }\n return mergedCells\n }\n\n // 한 개의 열을 매개변수로 받아서 첫 번째 셀부터 아래로 이동하면서 병합된 셀이 있는지 검사한다.\n findMergedCellByY(column: number) {\n let mergedCells: TableCell[] = []\n let cell: TableCell\n for (let i = 0; i < this.rows; i++) {\n cell = this.components[i * this.columns + column] as TableCell\n if (cell.merged === true || cell.rowspan > 1 || cell.colspan > 1) mergedCells.push(cell)\n }\n return mergedCells\n }\n\n mergeCells(cells: TableCell[]) {\n // 선택한 셀이 들어있는 행\n let mergeableRows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == mergeableRows.indexOf(row)) mergeableRows.push(row)\n })\n\n // 선택한 셀의 행이 연속적인 숫자가 아니라면 병합하지 않는다.\n if (mergeableRows.length - 1 !== mergeableRows[mergeableRows.length - 1] - mergeableRows[0]) return false\n\n // 선택한 셀이 들어있는 열\n let mergeableColumns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == mergeableColumns.indexOf(column)) mergeableColumns.push(column)\n })\n\n // 선택한 셀의 열이 연속적인 숫자가 아니라면 병합하지 않는다.\n if (mergeableColumns.length - 1 !== mergeableColumns[mergeableColumns.length - 1] - mergeableColumns[0])\n return false\n\n // 병합할 행의 수\n let numberOfRows = mergeableRows.length\n\n // 병합할 열의 수\n let numberOfColumns = mergeableColumns.length\n\n // 선택된 셀의 수\n let numberOfCells = cells.length\n\n // 병합될 조건 검사\n // 행과 열의 곱이 셀의 수가 아니거나 셀의 수가 2보다 작은 경우는 병합하지 않는다.\n if (numberOfCells !== numberOfRows * numberOfColumns || numberOfCells < 2) return false\n\n // 선택한 셀들을 index 값이 낮은 것부터 순서대로 재정렬\n cells.sort((a, b) => {\n return (\n this.getRowColumn(a).row * this.columns +\n this.getRowColumn(a).column -\n (this.getRowColumn(b).row * this.columns + this.getRowColumn(b).column)\n )\n })\n\n // 셀을 병합함\n let firstCell = cells[0]\n firstCell.set({\n colspan: numberOfColumns,\n rowspan: numberOfRows\n })\n\n // 첫 번째 셀을 제외한 나머지 셀을 true로 지정\n for (let i = 1; i < numberOfCells; i++) cells[i].merged = true\n\n // 병합 후에는 첫 번째 셀을 선택하도록 함\n this.root.selected = [firstCell]\n }\n\n splitCells(cells: TableCell[]) {\n // 선택한 병합된 셀의 정보를 가져온다.\n let firstCellRowColumn = this.getRowColumn(cells[0])\n let firstCell = cells[0]\n let firstCellIndex = this.components.indexOf(cells[0])\n let length = this.components.length\n let lastCell = this.components[length - 1] as TableCell\n let lastCellRowColumn = this.getRowColumn(lastCell)\n let startIndex = length / (lastCellRowColumn.row + 1)\n\n // 병합된 셀들을 구해서 merged를 false로 설정한다.\n // 자식 셀이 갖고 있는 부모 셀의 위치를 초기화 한다.\n for (let j = 0; j < firstCell.rowspan; j++) {\n let index\n let nextCell: TableCell\n for (let i = firstCellIndex; i < firstCellIndex + firstCell.colspan; i++) {\n index = startIndex * j + i\n nextCell = this.components[index] as TableCell\n nextCell.merged = false\n }\n }\n\n // 첫 번째 셀의 rowspan, colspan = 1로 지정한다.\n firstCell.colspan = 1\n firstCell.rowspan = 1\n }\n\n deleteRows(cells: TableCell[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n if (cells[0].merged == true) return false\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n var heights = this.heights.slice()\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 지운다.\n if (mergedCells.length === 0) {\n this.remove(this.getCellsByRow(row))\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 지워야 한다.\n //\n else {\n // 삭제할 행에서 병합된 셀을 삭제할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n let superCellRow = Math.floor(index / this.columns)\n // 지우려는 행이 슈퍼셀을 포함한 경우이면서 슈퍼셀이 마지막 행의 셀이 아닌 경우\n // 그리고 슈퍼셀의 rowspan이 1보다 큰 경우\n let aCell: TableCell = this.components[index + this.columns] as TableCell\n let bCell: TableCell = this.components[index] as TableCell\n if (row === superCellRow && superCellRow !== this.rows - 1 && bCell.rowspan > 1) {\n aCell.rowspan = bCell.rowspan - 1\n aCell.colspan = bCell.colspan\n aCell.merged = false\n aCell.set('text', bCell.getState('text'))\n } else {\n bCell.rowspan -= 1\n }\n })\n this.remove(this.getCellsByRow(row))\n }\n })\n\n rows.forEach(row => heights.splice(row, 1))\n\n this.model.rows -= rows.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n this.set('heights', heights)\n }\n\n deleteColumns(cells: TableCell[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n if (cells[0].merged == true) return false\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n\n columns.forEach(column => {\n var widths = this.widths.slice()\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 지운다.\n if (mergedCells.length === 0) {\n this.remove(this.getCellsByColumn(column))\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 지워야 한다.\n else {\n // 삭제할 열에서 병합된 셀을 삭제할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스를 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n let superCellColumn = index % this.columns\n\n let aCell: TableCell = this.components[index + 1] as TableCell\n let bCell: TableCell = this.components[index] as TableCell\n // 지우려는 열이 슈퍼셀을 포함한 경우이면서 슈퍼셀이 마지막 열의 셀이 아닌 경우\n // 그리고 슈퍼셀의 colspan이 1보다 큰 경우\n if (column === superCellColumn && superCellColumn !== this.columns - 1 && bCell.colspan > 1) {\n aCell.rowspan = bCell.rowspan\n aCell.colspan = bCell.colspan - 1\n aCell.merged = false\n aCell.set('text', bCell.getState('text'))\n } else {\n bCell.colspan -= 1\n }\n })\n this.remove(this.getCellsByColumn(column))\n }\n widths.splice(column, 1)\n this.model.columns -= 1 // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n this.set('widths', widths)\n })\n }\n\n insertCellsAbove(cells: TableCell[]) {\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n // 행 2개 이상은 추가 안함. 임시로 막아놓음\n if (rows.length >= 2) return false\n let insertionRowPosition = rows[0]\n let newbieRowHeights: number[] = []\n let newbieCells: TableCell[] = []\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 위에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += rows.length\n\n this.clearCache()\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 추가해야 한다.\n else {\n // 선택한 행이 2개 이상 있고 그 중에 병합된 셀이 적어도 한 개라도 있으면\n // 병합된 셀이 포함된 행의 추가는 무시한다. 임시방편으로 막아놈\n if (rows.length > 1) return false\n // 추가할 행에서 병합된 셀을 추가할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let cell: TableCell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n\n // 추가하려는 행이 슈퍼셀을 포함한 경우\n if (superCellRow === row) {\n for (let i = 0; i < this.columns; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n let addedCell = this.components[index + this.columns] as TableCell\n\n addedCell.rowspan = superCellObj.rowspan\n addedCell.colspan = superCellObj.colspan\n addedCell.set('text', superCellObj.text)\n addedCell.merged = superCellObj.merged\n } else {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n cell.rowspan += 1\n }\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += rows.length\n\n this.clearCache()\n })\n }\n })\n }\n\n insertCellsBelow(cells: TableCell[]) {\n // 먼저 cells 위치의 행을 구한다.\n let rows: number[] = []\n cells.forEach(cell => {\n let row = this.getRowColumn(cell).row\n if (-1 == rows.indexOf(row)) rows.push(row)\n })\n rows.sort((a, b) => {\n return a - b\n })\n rows.reverse()\n\n // 행 2개 이상은 추가 안함. 임시로 막아놓음\n if (rows.length >= 2) return false\n let insertionRowPosition = rows[rows.length - 1] + 1\n let newbieRowHeights: number[] = []\n let newbieCells: TableCell[] = []\n\n rows.forEach(row => {\n // rows에서 가로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByX(row)\n // mergedCells.length가 0이면 일반적으로 행을 아래에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += 1\n\n this.clearCache()\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 행을 추가해야 한다.\n else {\n // 추가할 행에서 병합된 셀을 추가할 때 해당 셀을 임시로 저장\n let temp = []\n // 부모 셀을 저장\n let superCells: TableCell[] = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 행이 병합된 셀중 마지막 행인 경우\n if (superCellRow + superCellObj.rowspan - 1 === row) {\n for (let i = 0; i < this.columns; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n } else if (superCellRow === row) {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n\n cell.rowspan += 1\n\n let newbieCell = this.components[index + this.columns] as TableCell\n // 슈퍼셀이 복사됐으므로 그 해당 셀을 병합된 셀로 설정한다.\n newbieCell.rowspan = 1\n newbieCell.colspan = 1\n newbieCell.merged = true\n newbieCell.set('text', '')\n } else {\n for (let i = 0; i < this.columns; i++)\n newbieCells.push(buildCopiedCell(this.components[row * this.columns + i].model, this.app))\n newbieRowHeights.push(this.heights[row])\n\n newbieCells.reverse().forEach(cell => {\n this.insertComponentAt(cell, insertionRowPosition * this.columns)\n })\n cell.rowspan += 1\n }\n\n let heights = this.heights.slice()\n heights.splice(insertionRowPosition, 0, ...newbieRowHeights)\n this.set('heights', heights)\n\n this.model.rows += 1\n\n this.clearCache()\n })\n }\n })\n }\n\n insertCellsLeft(cells: TableCell[]) {\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[0]\n let newbieColumnWidths: number[] = []\n let newbieCells: TableCell[] = []\n columns.forEach(column => {\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 왼쪽에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let index = this.rows\n newbieCells.reverse().forEach(cell => {\n if (index == 0) {\n index = this.rows\n increasedColumns++\n }\n\n index--\n this.insertComponentAt(cell, insertionColumnPosition + index * increasedColumns)\n })\n\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 추가해야 한다.\n else {\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellColumn = index % this.columns\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 열이 슈퍼셀을 포함한 경우\n if (superCellColumn === column) {\n for (let i = 0; i < this.rows; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n } else {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n }\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n })\n }\n })\n }\n\n insertCellsRight(cells: TableCell[]) {\n // 먼저 cells 위치의 열을 구한다.\n let columns: number[] = []\n cells.forEach(cell => {\n let column = this.getRowColumn(cell).column\n if (-1 == columns.indexOf(column)) columns.push(column)\n })\n columns.sort((a, b) => {\n return a - b\n })\n columns.reverse()\n // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[columns.length - 1] + 1\n let newbieColumnWidths: number[] = []\n let newbieCells: TableCell[] = []\n columns.forEach(column => {\n // columns에서 세로 방향으로 이동하면서 병합된 셀을 찾는다.\n let mergedCells = this.findMergedCellByY(column)\n // mergedCells.length가 0이면 일반적으로 열을 오른쪽에 추가한다.\n if (mergedCells.length === 0) {\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let index = this.rows\n newbieCells.reverse().forEach(cell => {\n if (index == 0) {\n index = this.rows\n increasedColumns++\n }\n\n index--\n this.insertComponentAt(cell, insertionColumnPosition + index * increasedColumns)\n })\n\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n }\n // mergedCells.length가 0이 아니면 병합된 셀을 고려하여 열을 추가해야 한다.\n else {\n // 부모 셀을 저장\n let superCells = []\n // 부모 셀의 인덱스 값을 저장\n let superCellIndexes: number[] = []\n mergedCells.forEach(cell => {\n let col, row, index\n col = this.getRowColumn(cell).column\n row = this.getRowColumn(cell).row\n index = row * this.columns + col + 1\n while (index) {\n --index\n let component = this.components[index] as TableCell\n // 슈퍼셀을 찾고 슈퍼셀의 위치에서 rowspan, colspan 거리만큼 이동하면서 cell이 있는지 검증해야함\n if (component.rowspan > 1 || component.colspan > 1) {\n let spColStart = this.getRowColumn(component).column\n let spColEnd = this.getRowColumn(component).column + component.colspan\n let spRowStart = this.getRowColumn(component).row\n let spRowEnd = this.getRowColumn(component).row + component.rowspan\n // 슈퍼셀 영역 안에 자식 셀이 있으면 superCells에 부모셀을 추가\n if (col >= spColStart && col < spColEnd && row >= spRowStart && row < spRowEnd) {\n if (-1 == superCellIndexes.indexOf(index)) {\n superCellIndexes.push(index)\n superCells.push(component)\n }\n }\n }\n }\n })\n superCellIndexes.forEach(index => {\n // 추가하려는 셀은 일반 셀인데 그 위치에 다른 병합된 셀이 있는 문제로 임시로 막아 놓음. 수정해야함\n if (superCellIndexes.length >= 2) return false\n let superCellRow = Math.floor(index / this.columns)\n let superCellColumn = index % this.columns\n let cell = this.components[index] as TableCell\n\n let superCellObj = {\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n text: cell.getState('text'),\n merged: cell.merged\n }\n // 추가하려는 열이 병합된 셀중 마지막 열인 경우\n if (superCellColumn + superCellObj.colspan - 1 === column) {\n for (let i = 0; i < this.rows; i++) newbieCells.push(buildNewCell('table-cell', this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n } else if (superCellColumn === column) {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n // 슈퍼셀이 복사됐으므로 그 해당 셀을 병합된 셀로 설정한다.\n let newbieCell = this.components[index + superCellRow + 1] as TableCell\n newbieCell.rowspan = 1\n newbieCell.colspan = 1\n newbieCell.merged = true\n newbieCell.set('text', '')\n } else {\n cell.colspan += 1\n for (let i = 0; i < this.rows; i++)\n newbieCells.push(buildCopiedCell(this.components[column + this.columns * i].model, this.app))\n newbieColumnWidths.push(this.widths[column])\n\n let increasedColumns = this.columns\n let rowIndex = this.rows\n newbieCells.reverse().forEach(cell => {\n if (rowIndex == 0) {\n rowIndex = this.rows\n increasedColumns++\n }\n\n rowIndex--\n this.insertComponentAt(cell, insertionColumnPosition + rowIndex * increasedColumns)\n })\n }\n let widths = this.widths.slice()\n this.model.columns += columns.length // 고의적으로, change 이벤트가 발생하지 않도록 set(..)을 사용하지 않음.\n\n widths.splice(insertionColumnPosition, 0, ...newbieColumnWidths)\n\n this.set('widths', widths)\n })\n }\n })\n }\n\n distributeHorizontal(cells: TableCell[]) {\n var columns: number[] = []\n\n cells.forEach(cell => {\n let rowcolumn = this.getRowColumn(cell)\n\n if (-1 == columns.indexOf(rowcolumn.column)) columns.push(rowcolumn.column)\n })\n\n var sum = columns.reduce((sum, column) => {\n return sum + this.widths[column]\n }, 0)\n\n var newval = Math.round((sum / columns.length) * 100) / 100\n var widths = this.widths.slice()\n columns.forEach(column => {\n widths[column] = newval\n })\n\n this.set('widths', widths)\n }\n\n distributeVertical(cells: TableCell[]) {\n var rows: number[] = []\n\n cells.forEach((cell: TableCell) => {\n let rowcolumn = this.getRowColumn(cell)\n\n if (-1 == rows.indexOf(rowcolumn.row)) rows.push(rowcolumn.row)\n })\n\n var sum: number = rows.reduce((sum, row) => {\n return sum + this.heights[row]\n }, 0)\n\n var newval = Math.round((sum / rows.length) * 100) / 100\n var heights = this.heights.slice()\n rows.forEach(row => {\n heights[row] = newval\n })\n\n this.set('heights', heights)\n }\n\n toObjectArrayValue(array: any[]) {\n if (!array || array.length === 0) return null\n\n if (!array[0].hasOwnProperty('__field1')) {\n return array\n }\n\n let indexKeyMap: { [key: string]: any } = {}\n let value = []\n\n for (let key in array[0]) {\n indexKeyMap[key] = array[0][key]\n }\n\n for (var i = 1; i < array.length; i++) {\n let object: { [key: string]: any } = {}\n let thisObject = array[i]\n for (let key in indexKeyMap) {\n let k = indexKeyMap[key]\n let v = thisObject[key]\n object[k] = v\n }\n\n value.push(object)\n }\n\n return value\n }\n\n get columns() {\n return Number(this.getState('columns'))\n }\n\n get lefts() {\n return this.components.filter((c, i) => {\n return !(i % this.columns)\n })\n }\n\n get centers() {\n return this.components.filter((c, i) => {\n return i % this.columns && (i + 1) % this.columns\n })\n }\n\n get rights() {\n return this.components.filter((c, i) => {\n return !((i + 1) % this.columns)\n })\n }\n\n get tops() {\n return this.components.slice(0, this.columns)\n }\n\n get middles() {\n return this.components.slice(this.columns, this.columns * (this.rows - 1))\n }\n\n get bottoms() {\n return this.components.slice(this.columns * (this.rows - 1))\n }\n\n get widths_sum(): number {\n var widths = this.widths\n return widths\n ? widths\n .filter((width: number, i: number) => i < this.columns)\n .reduce((sum: number, width: number) => sum + width, 0)\n : this.columns\n }\n\n get heights_sum(): number {\n var heights = this.heights\n return heights\n ? heights\n .filter((height: number, i: number) => i < this.rows)\n .reduce((sum: number, height: number) => sum + height, 0)\n : this.rows\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n\n get controls(): Control[] {\n var widths = this.widths\n var heights = this.heights\n var inside = this.textBounds\n\n var width_unit = inside!.width / this.widths_sum\n var height_unit = inside!.height / this.heights_sum\n\n var x = inside!.left\n var y = inside!.top\n\n var controls: Control[] = []\n\n widths.slice(0, this.columns - 1).forEach((width: number) => {\n x += width * width_unit\n controls.push({\n x: x,\n y: inside!.top,\n handler: columnControlHandler\n })\n })\n\n heights.slice(0, this.rows - 1).forEach((height: number) => {\n y += height * height_unit\n controls.push({\n x: inside!.left,\n y: y,\n handler: rowControlHandler\n })\n })\n\n return controls\n }\n\n onchange(after: State, before: State) {\n if ('rows' in after || 'columns' in after) {\n let { rows, columns } = this\n\n this.buildCells(\n rows,\n columns,\n 'rows' in before ? before.rows : rows,\n 'columns' in before ? before.columns : columns\n )\n }\n\n if ('data' in after) {\n this.setCellsData()\n }\n }\n\n get eventMap() {\n return {\n '(self)': {\n '(descendant)': {\n change: this.oncellchanged\n }\n }\n }\n }\n\n oncellchanged(after: State, before: State) {\n if ('dataKey' in after || 'dataIndex' in after) {\n this.setCellsData()\n }\n }\n}\n\n;['rows', 'columns', 'widths', 'heights', 'widths_sum', 'heights_sum', 'controls'].forEach(getter =>\n Component.memoize(Table.prototype, getter, false)\n)\n\nComponent.register('table', Table)\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@operato/scene-table",
3
3
  "description": "Things Scene Table Component.",
4
- "version": "1.2.66",
4
+ "version": "1.2.76",
5
5
  "author": "heartyoh",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -58,5 +58,5 @@
58
58
  "prettier --write"
59
59
  ]
60
60
  },
61
- "gitHead": "7216f5867ad09928146234ddad5fb188023f66fe"
61
+ "gitHead": "c134e8af29c863a4eaaf5e9d9dd309a41c334c44"
62
62
  }
package/schema.gql CHANGED
@@ -286,6 +286,7 @@ type Board {
286
286
  model: String
287
287
  name: String!
288
288
  playGroups: [PlayGroup!]
289
+ state: String
289
290
  thumbnail: String
290
291
  updatedAt: Timestamp
291
292
  updater: User
@@ -304,6 +305,7 @@ type BoardFavorite {
304
305
  model: String
305
306
  name: String!
306
307
  playGroups: [PlayGroup!]
308
+ state: String
307
309
  thumbnail: String
308
310
  updatedAt: Timestamp
309
311
  updater: User
@@ -1843,6 +1845,9 @@ type Mutation {
1843
1845
 
1844
1846
  """To refresh oauth2 access token"""
1845
1847
  refreshOauth2AccessToken(id: String!): Oauth2Client!
1848
+
1849
+ """To release Board information"""
1850
+ releaseBoard(id: String!): Board!
1846
1851
  renewApplicationAccessToken(id: String!, scope: String!): AccessToken!
1847
1852
 
1848
1853
  """To reset password to default"""
@@ -3251,6 +3256,9 @@ type Query {
3251
3256
  """To fetch a PlayGroup"""
3252
3257
  playGroup(id: String!): PlayGroup
3253
3258
 
3259
+ """To fetch a PlayGroup by name"""
3260
+ playGroupByName(name: String!): PlayGroup
3261
+
3254
3262
  """To fetch multiple PlayGroups"""
3255
3263
  playGroups(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): PlayGroupList!
3256
3264
 
@@ -3415,6 +3423,7 @@ type ScenarioInstance {
3415
3423
  scenarioName: String
3416
3424
  state: String
3417
3425
  timestamp: Timestamp
3426
+ user: User
3418
3427
  variables: Object
3419
3428
  }
3420
3429
 
package/src/table.ts CHANGED
@@ -46,7 +46,7 @@ const NATURE: ComponentNature = {
46
46
  label: 'data-spread-to',
47
47
  name: 'spreadTo',
48
48
  property: {
49
- options: ['text', 'data']
49
+ options: ['', 'text']
50
50
  }
51
51
  }
52
52
  ],
@@ -379,8 +379,14 @@ export default class Table extends Container {
379
379
  cells.forEach(cell => {
380
380
  var dataKey = cell.model.dataKey
381
381
  var dataIndex = cell.model.dataIndex
382
- if (dataKey && dataIndex >= 0) {
383
- ;(cell as any)[spreadTo] = (data[dataIndex] || {})[dataKey]
382
+
383
+ if (dataIndex >= 0) {
384
+ const cellData = dataKey ? (data[dataIndex] || {})[dataKey] : data[dataIndex]
385
+
386
+ ;(cell as any).data = cellData
387
+ if (spreadTo != 'data') {
388
+ ;(cell as any)[spreadTo] = cellData
389
+ }
384
390
  }
385
391
  })
386
392
  }
package/tsconfig.json CHANGED
@@ -16,6 +16,7 @@
16
16
  "rootDir": "src",
17
17
  "declaration": true,
18
18
  "incremental": true,
19
+ "skipLibCheck": true,
19
20
  "types": []
20
21
  },
21
22
  "include": ["**/*.ts", "*.d.ts"]
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/lodash-es/merge.d.ts","./src/table-cell.ts","./src/table.ts","./src/helper-functions.ts","./src/data-list/data-cell.ts","./src/data-list/data-list-layout.ts","./src/data-list/data-list.ts","./src/index.ts","./src/types.ts","./src/templates/data-list.ts","./src/templates/table.ts","./src/templates/index.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","f32044e28142d7080c318268058e6a3de42be0252512491d2fc9bf0fa07c3e65","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384","a957ad4bd562be0662fb99599dbcf0e16d1631f857e5e1a83a3f3afb6c226059",{"version":"788225a56c6b6415159dc5b44dc161cf4520be5eee9204ca367f5c3815dc6170","signature":"8de99cc34384570330ba19781c23b0d6aa555e4cf3d016ba4f8139c78e1c3e40"},{"version":"a7fb1d58d838a70684c40b1f03bdd02fb05d9c39caeeb05b33fcfbc86d5e8e17","signature":"d5500f555ab59021c48381573ca7fa2861d35663cca5c39265512868a9a12695"},{"version":"2f42fc631a6e1a1de4226885b557c22a684790ef359adb97ca8085ead48c02a0","signature":"ee8b1adc2ecf6cd62ef6ef0e3353f03e04a84b780ac15bf1cbc3d81af94cd1b2"},{"version":"b3ff423135d373a82c875df559573d94f9384fc596605cbb7aa54dd2dd949a26","signature":"e1c2b72c82d4b574bdfc7040fa1bf9ebac600104d61481824d3cef6b09de5dd1"},{"version":"77bd6e9bc8261369e74fcf648938ee878a75b9d126e19ee414fd452abaf5d272","signature":"592c7e5ea2df68aa407be1398a544900b41b58ee0345428d34223fc30d978240"},{"version":"b6a65a72a26258fc64ea452ab73e6855fc1e984f2fca1f8a42a481ee847170e5","signature":"eecc3ca9156ee760957a9b522f3c154ecc95d318de05a314379b0a02097e8d3c"},{"version":"0f1377d787433323434405a062d09a1398f5d33e1576f9c613673d9f469a7e0f","signature":"7d02d97a7a65065e1d520da2d020a3f25be2e84759bc46753477fe9a9f8b538c"},{"version":"baa275c80f50945517e25fc292e3e96f84b484282ebbeb3cdc15a12249f855f9","signature":"66bcab35d001493a84cdf682f0e313872d10b6ed388efe767bb21fd883c4eac6"},{"version":"3fc4d42c1027b356c77c522b7a3daca6e87e23d89c111a432fce43e7c1d58e09","signature":"66ec166d01b5aea41847fb62680d88b5688b0aaf9496c73951a4a6239bcb878f"},{"version":"652be17ef64607e9eb0a0e87d9ffb1325f461a20362c877e0003f196b217f762","signature":"72d84e028e717c9076493b4a96f9523d24f3ebd0e08744c18d3ef714c70c2eaf"},{"version":"02b675f5beeeaf581b1b21b7bc72a1d67964dd9bccfb69ae19a79731e26f92c1","signature":"5ec5bde912e6a83d79b62a2d034bd2daf05071307bb667da8562163381f57662"}],"root":[[52,62]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[50],[38,40,41,42,43,44,45,46,47,48,49,50],[38,39,41,42,43,44,45,46,47,48,49,50],[39,40,41,42,43,44,45,46,47,48,49,50],[38,39,40,42,43,44,45,46,47,48,49,50],[38,39,40,41,43,44,45,46,47,48,49,50],[38,39,40,41,42,44,45,46,47,48,49,50],[38,39,40,41,42,43,45,46,47,48,49,50],[38,39,40,41,42,43,44,46,47,48,49,50],[38,39,40,41,42,43,44,45,47,48,49,50],[38,39,40,41,42,43,44,45,46,48,49,50],[38,39,40,41,42,43,44,45,46,47,49,50],[38,39,40,41,42,43,44,45,46,47,48,50],[38,39,40,41,42,43,44,45,46,47,48,49],[36,37,58],[36,37,55,57],[36,37,54,55,56],[36,37,51,52,53],[36,52,53,57],[36,37,53],[36,37,52,54],[36],[36,60,61],[36,37,54],[37],[37,54,55,56],[37,52,53],[52,53,57],[37,52,54],[37,54]],"referencedMap":[[51,1],[39,2],[40,3],[38,4],[41,5],[42,6],[43,7],[44,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[55,15],[56,16],[57,17],[54,18],[58,19],[52,20],[53,21],[60,22],[62,23],[61,22],[59,24]],"exportedModulesMap":[[51,1],[39,2],[40,3],[38,4],[41,5],[42,6],[43,7],[44,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[55,25],[56,25],[57,26],[54,27],[58,28],[52,25],[53,29],[59,30]],"semanticDiagnosticsPerFile":[37,51,39,40,38,41,42,43,44,45,46,47,48,49,50,36,34,35,7,9,8,2,10,11,12,13,14,15,16,17,3,4,18,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,1,55,56,57,54,58,52,53,60,62,61,59]},"version":"5.2.2"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/lodash-es/merge.d.ts","./src/table-cell.ts","./src/table.ts","./src/helper-functions.ts","./src/data-list/data-cell.ts","./src/data-list/data-list-layout.ts","./src/data-list/data-list.ts","./src/index.ts","./src/types.ts","./src/templates/data-list.ts","./src/templates/table.ts","./src/templates/index.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","7a32eb197b39b1829c1e0490e89203a439c1a363991af2475c08b2fc53acf8da","32ab25b7b28b24a138d879ca371b18c8fdfdd564ad5107e1333c5aa5d5fea494","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","b82fc740467e59abe3d6170417e461527d2a95610f55915fc59557c4b7be55ba","a957ad4bd562be0662fb99599dbcf0e16d1631f857e5e1a83a3f3afb6c226059",{"version":"788225a56c6b6415159dc5b44dc161cf4520be5eee9204ca367f5c3815dc6170","signature":"8de99cc34384570330ba19781c23b0d6aa555e4cf3d016ba4f8139c78e1c3e40"},{"version":"de7a5acfac275891dd6002e767ee3f1432257f3df99d09c1afbda433783fa8eb","signature":"d5500f555ab59021c48381573ca7fa2861d35663cca5c39265512868a9a12695"},{"version":"2f42fc631a6e1a1de4226885b557c22a684790ef359adb97ca8085ead48c02a0","signature":"ee8b1adc2ecf6cd62ef6ef0e3353f03e04a84b780ac15bf1cbc3d81af94cd1b2"},{"version":"b3ff423135d373a82c875df559573d94f9384fc596605cbb7aa54dd2dd949a26","signature":"e1c2b72c82d4b574bdfc7040fa1bf9ebac600104d61481824d3cef6b09de5dd1"},{"version":"77bd6e9bc8261369e74fcf648938ee878a75b9d126e19ee414fd452abaf5d272","signature":"592c7e5ea2df68aa407be1398a544900b41b58ee0345428d34223fc30d978240"},{"version":"b6a65a72a26258fc64ea452ab73e6855fc1e984f2fca1f8a42a481ee847170e5","signature":"eecc3ca9156ee760957a9b522f3c154ecc95d318de05a314379b0a02097e8d3c"},{"version":"0f1377d787433323434405a062d09a1398f5d33e1576f9c613673d9f469a7e0f","signature":"7d02d97a7a65065e1d520da2d020a3f25be2e84759bc46753477fe9a9f8b538c"},{"version":"baa275c80f50945517e25fc292e3e96f84b484282ebbeb3cdc15a12249f855f9","signature":"66bcab35d001493a84cdf682f0e313872d10b6ed388efe767bb21fd883c4eac6"},{"version":"3fc4d42c1027b356c77c522b7a3daca6e87e23d89c111a432fce43e7c1d58e09","signature":"66ec166d01b5aea41847fb62680d88b5688b0aaf9496c73951a4a6239bcb878f"},{"version":"652be17ef64607e9eb0a0e87d9ffb1325f461a20362c877e0003f196b217f762","signature":"72d84e028e717c9076493b4a96f9523d24f3ebd0e08744c18d3ef714c70c2eaf"},{"version":"02b675f5beeeaf581b1b21b7bc72a1d67964dd9bccfb69ae19a79731e26f92c1","signature":"5ec5bde912e6a83d79b62a2d034bd2daf05071307bb667da8562163381f57662"}],"root":[[52,62]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[50],[38,40,41,42,43,44,45,46,47,48,49,50],[38,39,41,42,43,44,45,46,47,48,49,50],[39,40,41,42,43,44,45,46,47,48,49,50],[38,39,40,42,43,44,45,46,47,48,49,50],[38,39,40,41,43,44,45,46,47,48,49,50],[38,39,40,41,42,44,45,46,47,48,49,50],[38,39,40,41,42,43,45,46,47,48,49,50],[38,39,40,41,42,43,44,46,47,48,49,50],[38,39,40,41,42,43,44,45,47,48,49,50],[38,39,40,41,42,43,44,45,46,48,49,50],[38,39,40,41,42,43,44,45,46,47,49,50],[38,39,40,41,42,43,44,45,46,47,48,50],[38,39,40,41,42,43,44,45,46,47,48,49],[36,37,58],[36,37,55,57],[36,37,54,55,56],[36,37,51,52,53],[36,52,53,57],[36,37,53],[36,37,52,54],[36],[36,60,61],[36,37,54],[37],[37,54,55,56],[37,52,53],[52,53,57],[37,52,54],[37,54]],"referencedMap":[[51,1],[39,2],[40,3],[38,4],[41,5],[42,6],[43,7],[44,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[55,15],[56,16],[57,17],[54,18],[58,19],[52,20],[53,21],[60,22],[62,23],[61,22],[59,24]],"exportedModulesMap":[[51,1],[39,2],[40,3],[38,4],[41,5],[42,6],[43,7],[44,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[55,25],[56,25],[57,26],[54,27],[58,28],[52,25],[53,29],[59,30]],"semanticDiagnosticsPerFile":[37,51,39,40,38,41,42,43,44,45,46,47,48,49,50,36,34,35,7,9,8,2,10,11,12,13,14,15,16,17,3,4,18,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,1,55,56,57,54,58,52,53,60,62,61,59]},"version":"5.2.2"}