@operato/scene-table 1.2.87 → 2.0.0-alpha.0
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 +26 -0
- package/dist/data-list/data-cell.js.map +1 -1
- package/dist/data-list/data-list-layout.js.map +1 -1
- package/dist/data-list/data-list.js.map +1 -1
- package/dist/table-cell.js.map +1 -1
- package/dist/table.js +2 -2
- package/dist/table.js.map +1 -1
- package/package.json +4 -4
- package/src/table.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,32 @@
|
|
|
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
|
+
## [2.0.0-alpha.0](https://github.com/things-scene/operato-scene/compare/v1.3.9...v2.0.0-alpha.0) (2024-01-14)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :bug: Bug Fix
|
|
10
|
+
|
|
11
|
+
* 2.0.0-alpha.0 ([93274e3](https://github.com/things-scene/operato-scene/commit/93274e36c5d184f339f83899654dd48b4786ac2b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [1.2.90](https://github.com/things-scene/operato-scene/compare/v1.2.89...v1.2.90) (2023-11-22)
|
|
16
|
+
|
|
17
|
+
**Note:** Version bump only for package @operato/scene-table
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [1.2.89](https://github.com/things-scene/operato-scene/compare/v1.2.88...v1.2.89) (2023-11-22)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### :bug: Bug Fix
|
|
27
|
+
|
|
28
|
+
* table cell default text modify ([8ee865e](https://github.com/things-scene/operato-scene/commit/8ee865e7cdb18ddb50a4bde0eefb7b6e4fa304cb))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
6
32
|
## [1.2.87](https://github.com/things-scene/operato-scene/compare/v1.2.86...v1.2.87) (2023-11-10)
|
|
7
33
|
|
|
8
34
|
**Note:** Version bump only for package @operato/scene-table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-cell.js","sourceRoot":"","sources":["../../src/data-list/data-cell.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAmB,QAAQ,EAAS,MAAM,wBAAwB,CAAA;AAIpF,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACb;SACF;KACF;IACD,gBAAgB,EAAE,OAAO;IACzB,IAAI,EAAE,2BAA2B;CAClC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,QAAQ,CAAC,SAAS,CAAC;IACvD,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACb,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK;YACL,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAC,OAAiC,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,IAAY,EAAE,KAAY;QAC5G,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"data-cell.js","sourceRoot":"","sources":["../../src/data-list/data-cell.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, RectPath, Style } from '@hatiolab/things-scene'\n\nimport { Table } from '../'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'editor-table',\n label: '',\n name: '',\n property: {\n merge: false,\n split: false\n }\n }\n ],\n 'value-property': 'value',\n help: 'scene/component/data-cell'\n}\n\nexport default class DataCell extends RectPath(Component) {\n get nature() {\n return NATURE\n }\n\n get value() {\n return this.state.value\n }\n\n set value(value) {\n this.setState({\n value,\n data: value\n })\n }\n\n renderBorder(context: CanvasRenderingContext2D, x: number, y: number, to_x: number, to_y: number, style: Style) {\n if (style && style.strokeStyle && style.lineWidth && style.lineDash) {\n context.beginPath()\n context.moveTo(x, y)\n context.lineTo(to_x, to_y)\n Component.drawStroke(context, style)\n }\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n var { border } = this.state\n border ||= {}\n\n // Cell 채우기.\n context.beginPath()\n context.lineWidth = 0\n context.rect(left, top, width, height)\n this.drawFill(context)\n\n // Border 그리기\n var parent = this.parent as Table\n var idx = parent.components.indexOf(this)\n var columns = parent.columns || 1\n\n this.renderBorder(context, left, top, left + width, top, border.top)\n this.renderBorder(context, left, top + height, left, top, border.left)\n if ((idx + 1) % columns == 0) {\n /* if this filed is right most, draw right side border. */\n this.renderBorder(context, left + width, top, left + width, top + height, border.right)\n }\n this.renderBorder(context, left + width, top + height, left, top + height, border.bottom)\n }\n}\n\nComponent.register('data-cell', DataCell)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-list-layout.js","sourceRoot":"","sources":["../../src/data-list/data-list-layout.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"data-list-layout.js","sourceRoot":"","sources":["../../src/data-list/data-list-layout.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Container, Layout } from '@hatiolab/things-scene'\n\nimport DataCell from './data-cell'\nimport DataList from './data-list'\n\nvar DataListLayout = {\n reflow: function (container: Container) {\n var layoutConfig = container.getState('layoutConfig')\n\n var columns = (layoutConfig && layoutConfig.columns) || container.getState('columns')\n var rows = (layoutConfig && layoutConfig.rows) || container.getState('rows')\n var widths = (layoutConfig && layoutConfig.widths) || container.getState('widths')\n var heights = (layoutConfig && layoutConfig.heights) || container.getState('heights')\n var { offset = { x: 0, y: 0 } } = container.state\n\n var widths_sum = widths\n ? widths.filter((width: number, i: number) => i < columns).reduce((sum: number, width: number) => sum + width, 0)\n : columns\n var heights_sum = heights\n ? heights.filter((height: number, i: number) => i < rows).reduce((sum: number, height: number) => sum + height, 0)\n : rows\n\n var inside = container.textBounds\n var paddingLeft = container.getState('paddingLeft') || 0\n var paddingTop = container.getState('paddingTop') || 0\n\n var width_unit = inside.width / widths_sum\n var height_unit = inside.height / heights_sum\n\n var x = offset.x\n var y = offset.y\n var components = container.components\n\n components.forEach((component, idx) => {\n let w = widths ? widths[idx % columns] : 1\n let h = heights ? heights[0] : 1\n\n let left = paddingLeft + x\n let top = paddingTop + y\n let width = width_unit * w\n let height = height_unit * h\n\n component.bounds = {\n left,\n top,\n width,\n height\n }\n component.set('rotation', 0)\n\n if (idx % columns == columns - 1) {\n x = 0\n y += h * height_unit\n } else {\n x += w * width_unit\n }\n })\n },\n\n capturables: function (container: Container) {\n return container.components\n },\n\n drawables: function (container: Container) {\n return container.components\n },\n\n isStuck: function (component: Component) {\n return true\n },\n\n /*\n * 레이아웃별로, 키보드 방향키 등을 사용해서 네비게이션 할 수 있는 기능을 제공할 수 있다.\n * 하나의 컴포넌트만 선택되어있고, 키보드 이벤트가 발생했을 때 호출되게 된다.\n * keyNavigate 메쏘드가 정의되어 있지 않으면, 'Tab' 키에 대한 네비게이션만 작동한다.\n * 'Tab'키에 의한 네비게이션은 모든 레이아웃에 공통으로 적용된다.\n */\n keyNavigate: function (container: Container, component: Component, e: KeyboardEvent) {\n var layoutConfig = container.getState('layoutConfig')\n\n var columns = (layoutConfig && layoutConfig.columns) || container.getState('columns')\n var rows = (layoutConfig && layoutConfig.rows) || container.getState('rows')\n\n var { row, column } = (container as DataList).getRowColumn(component as DataCell)\n\n switch (e.code) {\n case 'ArrowUp':\n if (row > 0) return container.getAt((row - 1) * columns + column)\n break\n case 'ArrowDown':\n if (row < rows - 1) return container.getAt((row + 1) * columns + column)\n break\n case 'ArrowRight':\n if (column < columns - 1) return container.getAt(row * columns + column + 1)\n break\n case 'ArrowLeft':\n if (column > 0) return container.getAt(row * columns + column - 1)\n break\n default:\n return component\n }\n },\n\n /*\n * 하위 컴포넌트를 영역으로 선택하는 경우에, 바운드에 join만 되어도 선택된 것으로 판단하도록 한다.\n * joinType이 false이거나, 정의되어있지 않으면, 바운드에 포함되어야 선택된 것으로 판단한다.\n */\n joinType: true\n}\n\nLayout.register('data-list', DataListLayout)\n\nexport default DataListLayout\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-list.js","sourceRoot":"","sources":["../../src/data-list/data-list.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './data-cell'\nimport './data-list-layout'\n\nimport { Component, ComponentNature, Container, Control, Layout, Model, 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'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'columns',\n name: 'columns',\n property: 'columns'\n }\n ],\n 'value-property': 'data',\n help: 'scene/component/data-list'\n}\n\nexport default class DataList extends Container {\n postrender(context: CanvasRenderingContext2D) {\n super.postrender(context)\n\n // child component들을 다 그린 후에 scrollbar를 표현한다.\n if (this.app.isViewMode) {\n this.renderScrollbar(context)\n }\n }\n\n renderScrollbar(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n var { offset = { x: 0, y: 0 }, data } = this.state\n\n var fullHeight = ((data && data.length) || 0) * (this.heights[0] / this.heights_sum) * height\n\n if (fullHeight <= height) {\n return\n }\n\n var start = (-offset.y / fullHeight) * height\n var end = ((-offset.y + height) / fullHeight) * height\n\n context.strokeStyle = 'gray'\n context.lineWidth = 10\n context.globalAlpha = 0.3\n\n context.beginPath()\n context.moveTo(left + width - 10, top + start)\n context.lineTo(left + width - 10, top + end)\n\n context.stroke()\n }\n\n created() {\n this.set('rows', 2)\n\n var rows = 1\n\n var tobeSize = 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('data-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 < rows) this.set('heights', this.heights)\n }\n\n _onwheel(e: WheelEvent) {\n e.stopPropagation()\n\n var { height } = this.bounds\n var { offset = { x: 0, y: 0 } } = this.state\n\n var recordHeight = (this.heights[0] / this.heights.reduce((sum: number, height: number) => sum + height)) * height\n\n var minX = 0\n var minY = this.data && this.data.length ? Math.min(-recordHeight * this.data.length + height, 0) : 0\n\n /* shiftKey + wheel 은 deltaX 값을 변화시킨다. */\n if (e.deltaY == 0 && e.deltaX == 0) return\n\n var x = e.deltaX + offset.x\n var y = -e.deltaY + offset.y\n\n /* 휠을 밀면.. 화면은 위쪽으로 : scroll down */\n /* 휠을 당기면.. 화면은 아래쪽으로 : scroll up */\n\n this.setState({\n offset: {\n x: Math.max(Math.min(0, x), minX),\n y: Math.max(Math.min(0, y), minY)\n }\n })\n }\n\n private __START_OFFSET?: { x: number; y: number }\n private __START_Y?: number\n\n _ontouchstart(e: DragEvent) {\n this.__START_OFFSET = this.state.offset || {\n x: 0,\n y: 0\n }\n this.__START_Y = e.offsetY\n }\n\n _ontouchmove(e: DragEvent) {\n if (!this.__START_OFFSET) {\n return\n }\n\n var { height } = this.bounds\n\n var recordHeight = (this.heights[0] / this.heights.reduce((sum: number, height: number) => sum + height)) * height\n var minY = this.data && this.data.length ? Math.min(-recordHeight * this.data.length + height, 0) : 0\n\n var x = 0\n var y = this.__START_OFFSET.y + (e.offsetY - this.__START_Y!) / this.rootModel.state.scale.y\n y = Math.max(Math.min(0, y), minY)\n\n var offset = this.state.offset || { x: 0, y: 0 }\n if (offset.x !== x || offset.y !== y) {\n this.setState('offset', {\n x,\n y\n })\n\n e.stopPropagation()\n }\n }\n\n _ontouchend(e: DragEvent) {\n delete this.__START_OFFSET\n delete this.__START_Y\n }\n\n get layout() {\n return Layout.get('data-list')\n }\n\n containable(component: Component) {\n return component.getState('type') == 'data-cell'\n }\n\n get focusible() {\n /* 이 컨테이너에는 컴포넌트를 임의로 추가 및 삭제할 수 없도록 함 */\n return false\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 ? heights.filter((height, i) => i < this.rows).reduce((sum, height) => sum + height, 0) : this.rows\n }\n\n get widths(): number[] {\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(): number[] {\n var heights = this.getState('heights')\n var rows = 2\n\n if (!heights) {\n return array(1, rows)\n }\n\n if (heights.length < rows) return heights.concat(array(1, rows - heights.length))\n else if (heights.length > rows) return heights.slice(0, rows)\n\n return heights\n }\n\n get columns() {\n return Number(this.getState('columns'))\n }\n\n get rows(): number {\n /* 1 for first record fields, 1 for rest record fields */\n return 2\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 => {\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 => {\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 ('data' in after) {\n this.setCellsData()\n }\n\n if ('columns' in after) {\n let { columns } = this\n\n this.buildCells(columns, Number(before.columns))\n }\n }\n\n get eventMap() {\n return {\n '(self)': {\n '(all)': {\n wheel: this._onwheel,\n touchstart: this._ontouchstart,\n touchmove: this._ontouchmove,\n touchend: this._ontouchend\n }\n }\n }\n }\n\n setCellsData() {\n if (!this.app.isViewMode) {\n return\n }\n\n var data = this.data || []\n if (!(data instanceof Array)) {\n data = [data]\n }\n\n /* 기존의 레코드를 모두 삭제 (템플릿 레코드만 남긴다.) */\n this.remove(this.components.slice(this.columns), true /* silent - do not let root-container refreshMappings */)\n\n /* template 레코드의 데이타를 클리어시킨다 */\n var templates = this.getCellsByRow(0)\n templates.forEach(field => {\n field.data = ''\n })\n\n /* 데이타의 크기만큼 새로운 레코드를 만든다 */\n if (data.length > 1) {\n let newbies: Component[] = []\n\n for (let i = 1; i < data.length; i++) {\n newbies = newbies.concat(\n templates.map(field => {\n return Model.compile(\n {\n ...field.model,\n id: '',\n data: '',\n refid: null\n },\n this.app\n )\n })\n )\n }\n\n this.add(newbies, true /* silent - do not let root-container refreshMappings */)\n }\n\n data.forEach((record: any[], idx: number) => {\n let data = {\n _idx: idx,\n ...record\n }\n let row = this.getCellsByRow(idx)\n row.forEach(field => {\n // @ts-ignore TODO - remove this comment later\n field.value = data\n })\n })\n }\n\n setCellsStyle(cells: Component[], style: Style, where: WHERE, clearBefore = true) {\n var components = this.components\n var total = components.length\n var columns = this.getState('columns')\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 buildCells(newcolumns: number, oldcolumns: number) {\n var minrows = 1\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('data-cell', this.app), r * newcolumns + c)\n }\n }\n } else if (newcolumns < oldcolumns) {\n let removals = []\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])\n }\n }\n\n this.remove(removals)\n }\n\n this.set({\n widths: this.widths,\n heights: this.heights\n })\n\n this.setCellsData()\n }\n\n getRowColumn(cell: Component) {\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): Component[] {\n return this.components.slice(row * this.columns, (row + 1) * this.columns)\n }\n\n getCellsByColumn(column: number): Component[] {\n var cells = []\n for (let i = 0; i < this.rows; i++) cells.push(this.components[this.columns * i + column])\n\n return cells\n }\n\n mergeCells(cells: Component[]) {}\n\n splitCells(cells: Component[]) {}\n\n deleteRows(cells: Component[]) {}\n\n deleteColumns(cells: Component[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n // if (cells[0].merged == true) return false\n\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 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: Component[]) {}\n\n insertCellsBelow(cells: Component[]) {}\n\n insertCellsLeft(cells: Component[]) {\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 // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[0]\n let newbieColumnWidths: number[] = []\n let newbieCells: Component[] = []\n columns.forEach(column => {\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 }\n\n insertCellsRight(cells: Component[]) {\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: Component[] = []\n columns.forEach(column => {\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 }\n\n distributeHorizontal(cells: Component[]) {\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: Component[]) {}\n}\n\nComponent.register('data-list', DataList)\n"]}
|
|
1
|
+
{"version":3,"file":"data-list.js","sourceRoot":"","sources":["../../src/data-list/data-list.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './data-cell'\nimport './data-list-layout'\n\nimport { Component, ComponentNature, Container, Control, Layout, Model, 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'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'columns',\n name: 'columns',\n property: 'columns'\n }\n ],\n 'value-property': 'data',\n help: 'scene/component/data-list'\n}\n\nexport default class DataList extends Container {\n postrender(context: CanvasRenderingContext2D) {\n super.postrender(context)\n\n // child component들을 다 그린 후에 scrollbar를 표현한다.\n if (this.app.isViewMode) {\n this.renderScrollbar(context)\n }\n }\n\n renderScrollbar(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n var { offset = { x: 0, y: 0 }, data } = this.state\n\n var fullHeight = ((data && data.length) || 0) * (this.heights[0] / this.heights_sum) * height\n\n if (fullHeight <= height) {\n return\n }\n\n var start = (-offset.y / fullHeight) * height\n var end = ((-offset.y + height) / fullHeight) * height\n\n context.strokeStyle = 'gray'\n context.lineWidth = 10\n context.globalAlpha = 0.3\n\n context.beginPath()\n context.moveTo(left + width - 10, top + start)\n context.lineTo(left + width - 10, top + end)\n\n context.stroke()\n }\n\n created() {\n this.set('rows', 2)\n\n var rows = 1\n\n var tobeSize = 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('data-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 < rows) this.set('heights', this.heights)\n }\n\n _onwheel(e: WheelEvent) {\n e.stopPropagation()\n\n var { height } = this.bounds\n var { offset = { x: 0, y: 0 } } = this.state\n\n var recordHeight = (this.heights[0] / this.heights.reduce((sum: number, height: number) => sum + height)) * height\n\n var minX = 0\n var minY = this.data && this.data.length ? Math.min(-recordHeight * this.data.length + height, 0) : 0\n\n /* shiftKey + wheel 은 deltaX 값을 변화시킨다. */\n if (e.deltaY == 0 && e.deltaX == 0) return\n\n var x = e.deltaX + offset.x\n var y = -e.deltaY + offset.y\n\n /* 휠을 밀면.. 화면은 위쪽으로 : scroll down */\n /* 휠을 당기면.. 화면은 아래쪽으로 : scroll up */\n\n this.setState({\n offset: {\n x: Math.max(Math.min(0, x), minX),\n y: Math.max(Math.min(0, y), minY)\n }\n })\n }\n\n private __START_OFFSET?: { x: number; y: number }\n private __START_Y?: number\n\n _ontouchstart(e: DragEvent) {\n this.__START_OFFSET = this.state.offset || {\n x: 0,\n y: 0\n }\n this.__START_Y = e.offsetY\n }\n\n _ontouchmove(e: DragEvent) {\n if (!this.__START_OFFSET) {\n return\n }\n\n var { height } = this.bounds\n\n var recordHeight = (this.heights[0] / this.heights.reduce((sum: number, height: number) => sum + height)) * height\n var minY = this.data && this.data.length ? Math.min(-recordHeight * this.data.length + height, 0) : 0\n\n var x = 0\n var y = this.__START_OFFSET.y + (e.offsetY - this.__START_Y!) / this.rootModel.state.scale.y\n y = Math.max(Math.min(0, y), minY)\n\n var offset = this.state.offset || { x: 0, y: 0 }\n if (offset.x !== x || offset.y !== y) {\n this.setState('offset', {\n x,\n y\n })\n\n e.stopPropagation()\n }\n }\n\n _ontouchend(e: DragEvent) {\n delete this.__START_OFFSET\n delete this.__START_Y\n }\n\n get layout() {\n return Layout.get('data-list')\n }\n\n containable(component: Component) {\n return component.getState('type') == 'data-cell'\n }\n\n get focusible() {\n /* 이 컨테이너에는 컴포넌트를 임의로 추가 및 삭제할 수 없도록 함 */\n return false\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 ? heights.filter((height, i) => i < this.rows).reduce((sum, height) => sum + height, 0) : this.rows\n }\n\n get widths(): number[] {\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(): number[] {\n var heights = this.getState('heights')\n var rows = 2\n\n if (!heights) {\n return array(1, rows)\n }\n\n if (heights.length < rows) return heights.concat(array(1, rows - heights.length))\n else if (heights.length > rows) return heights.slice(0, rows)\n\n return heights\n }\n\n get columns() {\n return Number(this.getState('columns'))\n }\n\n get rows(): number {\n /* 1 for first record fields, 1 for rest record fields */\n return 2\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 => {\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 => {\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 ('data' in after) {\n this.setCellsData()\n }\n\n if ('columns' in after) {\n let { columns } = this\n\n this.buildCells(columns, Number(before.columns))\n }\n }\n\n get eventMap() {\n return {\n '(self)': {\n '(all)': {\n wheel: this._onwheel,\n touchstart: this._ontouchstart,\n touchmove: this._ontouchmove,\n touchend: this._ontouchend\n }\n }\n }\n }\n\n setCellsData() {\n if (!this.app.isViewMode) {\n return\n }\n\n var data = this.data || []\n if (!(data instanceof Array)) {\n data = [data]\n }\n\n /* 기존의 레코드를 모두 삭제 (템플릿 레코드만 남긴다.) */\n this.remove(this.components.slice(this.columns), true /* silent - do not let root-container refreshMappings */)\n\n /* template 레코드의 데이타를 클리어시킨다 */\n var templates = this.getCellsByRow(0)\n templates.forEach(field => {\n field.data = ''\n })\n\n /* 데이타의 크기만큼 새로운 레코드를 만든다 */\n if (data.length > 1) {\n let newbies: Component[] = []\n\n for (let i = 1; i < data.length; i++) {\n newbies = newbies.concat(\n templates.map(field => {\n return Model.compile(\n {\n ...field.model,\n id: '',\n data: '',\n refid: null\n },\n this.app\n )\n })\n )\n }\n\n this.add(newbies, true /* silent - do not let root-container refreshMappings */)\n }\n\n data.forEach((record: any[], idx: number) => {\n let data = {\n _idx: idx,\n ...record\n }\n let row = this.getCellsByRow(idx)\n row.forEach(field => {\n // @ts-ignore TODO - remove this comment later\n field.value = data\n })\n })\n }\n\n setCellsStyle(cells: Component[], style: Style, where: WHERE, clearBefore = true) {\n var components = this.components\n var total = components.length\n var columns = this.getState('columns')\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 buildCells(newcolumns: number, oldcolumns: number) {\n var minrows = 1\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('data-cell', this.app), r * newcolumns + c)\n }\n }\n } else if (newcolumns < oldcolumns) {\n let removals = []\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])\n }\n }\n\n this.remove(removals)\n }\n\n this.set({\n widths: this.widths,\n heights: this.heights\n })\n\n this.setCellsData()\n }\n\n getRowColumn(cell: Component) {\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): Component[] {\n return this.components.slice(row * this.columns, (row + 1) * this.columns)\n }\n\n getCellsByColumn(column: number): Component[] {\n var cells = []\n for (let i = 0; i < this.rows; i++) cells.push(this.components[this.columns * i + column])\n\n return cells\n }\n\n mergeCells(cells: Component[]) {}\n\n splitCells(cells: Component[]) {}\n\n deleteRows(cells: Component[]) {}\n\n deleteColumns(cells: Component[]) {\n // 만약 선택한 셀이 병합된 셀이라면 삭제하지 않는다.\n // if (cells[0].merged == true) return false\n\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 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: Component[]) {}\n\n insertCellsBelow(cells: Component[]) {}\n\n insertCellsLeft(cells: Component[]) {\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 // 열 2개 이상은 추가 안함. 임시로 막아놓음\n if (columns.length >= 2) return false\n let insertionColumnPosition = columns[0]\n let newbieColumnWidths: number[] = []\n let newbieCells: Component[] = []\n columns.forEach(column => {\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 }\n\n insertCellsRight(cells: Component[]) {\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: Component[] = []\n columns.forEach(column => {\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 }\n\n distributeHorizontal(cells: Component[]) {\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: Component[]) {}\n}\n\nComponent.register('data-list', DataList)\n"]}
|
package/dist/table-cell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-cell.js","sourceRoot":"","sources":["../src/table-cell.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"table-cell.js","sourceRoot":"","sources":["../src/table-cell.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, RectPath } from '@hatiolab/things-scene'\n\nimport Table from './table'\n\ntype Style = { [style: string]: any }\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'editor-table',\n label: '',\n name: '',\n property: {\n merge: true,\n split: true\n }\n },\n {\n type: 'string',\n label: 'data-key',\n name: 'dataKey',\n property: 'dataKey'\n },\n {\n type: 'number',\n label: 'data-index',\n name: 'dataIndex',\n property: 'dataIndex'\n }\n ],\n help: 'scene/component/table-cell'\n}\n\nconst EMPTY_BORDER = {}\n\nfunction isBottomMost(idx: number, rows: number, columns: number, components: Component[]) {\n return idx >= (rows - 1) * columns || (components[idx + columns] && components[idx + columns].hidden)\n}\n\nfunction isRightMost(idx: number, rows: number, columns: number, components: Component[]) {\n return (idx + 1) % columns == 0 || (components[idx + 1] && components[idx + 1].hidden)\n}\n\n/**\n * 1. 스타일을 상속 받아야 함. (cascade-style)\n * 2. 스타일을 동적처리할 수 있음. (로직처리)\n * 3. 데이타를 받을 수 있음.\n */\nexport default class TableCell extends RectPath(Component) {\n // export default class TableCell extends Container {\n\n // get layout() {\n // return Layout.getState(this.getState('layout') || 'card')\n // }\n\n get nature() {\n return NATURE\n }\n\n set merged(merged) {\n this.set('merged', !!merged)\n if (merged) this.set('text', '')\n }\n\n get merged() {\n return this.getState('merged')\n }\n\n set rowspan(rowspan) {\n this.set('rowspan', rowspan)\n }\n\n get rowspan() {\n return this.getState('rowspan')\n }\n\n set colspan(colspan) {\n this.set('colspan', colspan)\n }\n\n get colspan() {\n return this.getState('colspan')\n }\n\n set strokeStyle(strokeStyle: string) {\n const { lineWidth, lineDash } = this.state\n var style = { strokeStyle } as any\n\n lineWidth && (style.lineWidth = lineWidth)\n lineDash && (style.lineDash = lineDash)\n\n const table = this.parent as Table\n table?.setCellsStyle([this], style, 'out', false /* not clear before */)\n }\n\n _drawBorder(context: CanvasRenderingContext2D, x: number, y: number, to_x: number, to_y: number, style: Style) {\n if (style && style.strokeStyle && style.lineWidth && style.lineDash) {\n context.beginPath()\n context.moveTo(x, y)\n context.lineTo(to_x, to_y)\n Component.drawStroke(context, style)\n }\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.state\n\n var { border } = this.state\n border ||= {}\n\n // Cell 채우기.\n context.beginPath()\n context.lineWidth = 0\n context.rect(left, top, width, height)\n this.drawFill(context)\n\n // Border 그리기\n var parent = this.parent as Table\n var idx = parent.components.indexOf(this)\n var columns = parent.columns || 1\n var rows = parent.rows || 1\n\n this._drawBorder(context, left, top, left + width, top, border.top)\n this._drawBorder(context, left, top + height, left, top, border.left)\n if (isRightMost(idx, rows, columns, parent.components))\n this._drawBorder(context, left + width, top, left + width, top + height, border.right)\n if (isBottomMost(idx, rows, columns, parent.components))\n this._drawBorder(context, left + width, top + height, left, top + height, border.bottom)\n }\n}\n\nComponent.register('table-cell', TableCell)\n"]}
|
package/dist/table.js
CHANGED
|
@@ -335,14 +335,14 @@ export default class Table extends Container {
|
|
|
335
335
|
return;
|
|
336
336
|
data = this.toObjectArrayValue(data) || [];
|
|
337
337
|
var cells = this.components;
|
|
338
|
-
var { spreadTo
|
|
338
|
+
var { spreadTo } = this.state;
|
|
339
339
|
cells.forEach(cell => {
|
|
340
340
|
var dataKey = cell.model.dataKey;
|
|
341
341
|
var dataIndex = cell.model.dataIndex;
|
|
342
342
|
if (dataIndex >= 0) {
|
|
343
343
|
const cellData = dataKey ? (data[dataIndex] || {})[dataKey] : data[dataIndex];
|
|
344
344
|
cell.data = cellData;
|
|
345
|
-
if (spreadTo
|
|
345
|
+
if (spreadTo) {
|
|
346
346
|
;
|
|
347
347
|
cell[spreadTo] = cellData;
|
|
348
348
|
}
|
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']\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"]}
|
|
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 } = 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) {\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": "
|
|
4
|
+
"version": "2.0.0-alpha.0",
|
|
5
5
|
"author": "heartyoh",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@hatiolab/prettier-config": "^1.0.0",
|
|
34
|
-
"@things-factory/builder": "^
|
|
35
|
-
"@things-factory/operato-board": "^
|
|
34
|
+
"@things-factory/builder": "^7.0.0-alpha.0",
|
|
35
|
+
"@things-factory/operato-board": "^7.0.0-alpha.0",
|
|
36
36
|
"@types/chart.js": "2.9.34",
|
|
37
37
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
38
38
|
"@typescript-eslint/parser": "^4.33.0",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"prettier --write"
|
|
59
59
|
]
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "2268fc7a750dda9a342677a6acf4ef99afe1b90c"
|
|
62
62
|
}
|
package/src/table.ts
CHANGED
|
@@ -374,7 +374,7 @@ export default class Table extends Container {
|
|
|
374
374
|
|
|
375
375
|
var cells = this.components as TableCell[]
|
|
376
376
|
|
|
377
|
-
var { spreadTo
|
|
377
|
+
var { spreadTo } = this.state
|
|
378
378
|
|
|
379
379
|
cells.forEach(cell => {
|
|
380
380
|
var dataKey = cell.model.dataKey
|
|
@@ -384,7 +384,7 @@ export default class Table extends Container {
|
|
|
384
384
|
const cellData = dataKey ? (data[dataIndex] || {})[dataKey] : data[dataIndex]
|
|
385
385
|
|
|
386
386
|
;(cell as any).data = cellData
|
|
387
|
-
if (spreadTo
|
|
387
|
+
if (spreadTo) {
|
|
388
388
|
;(cell as any)[spreadTo] = cellData
|
|
389
389
|
}
|
|
390
390
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -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","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","skipLibCheck":true,"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":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","26d1ec00a52200684283272eaed524de74adc033bdff6522f72e03c796a46ff8","b8442e9db28157344d1bc5d8a5a256f1692de213f0c0ddeb84359834015a008c","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","68a0d0c508e1b6d8d23a519a8a0a3303dc5baa4849ca049f21e5bad41945e3fc","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","a957ad4bd562be0662fb99599dbcf0e16d1631f857e5e1a83a3f3afb6c226059",{"version":"788225a56c6b6415159dc5b44dc161cf4520be5eee9204ca367f5c3815dc6170","signature":"8de99cc34384570330ba19781c23b0d6aa555e4cf3d016ba4f8139c78e1c3e40"},{"version":"eb50fb0fe1a1ec87fb570386be025a27f22e6c469974c783c9824677d7fefff9","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","skipLibCheck":true,"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.3.3"}
|