@operato/scene-table 9.2.1 → 10.0.0-beta.2

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.
@@ -2,7 +2,243 @@ import { Component, ComponentNature } from '@hatiolab/things-scene';
2
2
  type Style = {
3
3
  [style: string]: any;
4
4
  };
5
- declare const TableCell_base: typeof Component;
5
+ declare const TableCell_base: (new (...args: any[]) => {
6
+ contains(x: number, y: number): boolean;
7
+ get path(): {
8
+ x: any;
9
+ y: any;
10
+ }[];
11
+ set path(path: {
12
+ x: any;
13
+ y: any;
14
+ }[]): any;
15
+ get anchors(): {
16
+ name: string;
17
+ position: {
18
+ x: any;
19
+ y: any;
20
+ };
21
+ }[];
22
+ get bounds(): any;
23
+ set bounds(bounds: any): any;
24
+ render(ctx: CanvasRenderingContext2D): void;
25
+ _app: any;
26
+ _model: any;
27
+ _state: any;
28
+ _delta: any;
29
+ _animation: any;
30
+ _animate: any;
31
+ _parent: any;
32
+ _disposed: any;
33
+ _textHidden: any;
34
+ _text_substitutor: any;
35
+ _value_substitutor: any;
36
+ _mappings: any;
37
+ _realObject: import("@hatiolab/things-scene").IRealObject | undefined;
38
+ _cachedState: any;
39
+ updatedAt: any;
40
+ fontSize: any;
41
+ __cache__: any;
42
+ created(): void;
43
+ added(parent: any): void;
44
+ removed(parent: any): void;
45
+ ready(): Promise<void>;
46
+ touch(): void;
47
+ clearCache(...attrs: any[]): void;
48
+ removeSelf(completely: any): void;
49
+ resetAnimation(): void;
50
+ dispose(): void;
51
+ get nature(): import("@hatiolab/things-scene").ComponentNature;
52
+ get disposed(): boolean;
53
+ isLayer(): boolean;
54
+ isGroup(): boolean;
55
+ isContainer(): this is import("@hatiolab/things-scene/dist-types/types/component.js").Container;
56
+ isLine(): boolean;
57
+ isRoot(): boolean;
58
+ isRootModel(): boolean;
59
+ is3dish(): boolean;
60
+ get is3dMode(): boolean;
61
+ isIn3DSpace(): boolean;
62
+ isTemplate(): boolean;
63
+ isHTMLElement(): boolean;
64
+ isConnectable(): boolean;
65
+ isIdentifiable(): boolean;
66
+ isPositionable(): boolean;
67
+ replaceRefids(replaceMap: any): void;
68
+ get(property: any): any;
69
+ set(props: any, propval?: any): any;
70
+ getState(property: any): any;
71
+ setState(props: any, propval?: any): any;
72
+ get model(): any;
73
+ get state(): any;
74
+ get hierarchy(): any;
75
+ get volatile(): never[];
76
+ _applyProps(target: any, props: any, options: any): any;
77
+ move(offset: {
78
+ x: number;
79
+ y: number;
80
+ }, ...args: boolean[]): void;
81
+ symmetryX(x?: number): void;
82
+ symmetryY(y: number): void;
83
+ adjustResize(bounds: import("@hatiolab/things-scene").BOUNDS, origin_bounds: import("@hatiolab/things-scene").BOUNDS, diagonal: boolean): {
84
+ left: any;
85
+ top: any;
86
+ width: any;
87
+ height: any;
88
+ };
89
+ adjustRotation(rotation: number, step: boolean): number;
90
+ outline(progress: number): any;
91
+ get center(): import("@hatiolab/things-scene").POINT;
92
+ set center(p: import("@hatiolab/things-scene").POINT): any;
93
+ get location(): import("@hatiolab/things-scene").POINT;
94
+ set location(l: import("@hatiolab/things-scene").POINT): any;
95
+ get rotate(): import("@hatiolab/things-scene").POINT;
96
+ set rotate(r: import("@hatiolab/things-scene").POINT): any;
97
+ get dimension(): import("@hatiolab/things-scene").DIMENSION;
98
+ set dimension(d: import("@hatiolab/things-scene").DIMENSION): any;
99
+ get drawPath(): import("@hatiolab/things-scene").POINT[];
100
+ get rotatePoint(): import("@hatiolab/things-scene").POINT;
101
+ get mutable(): boolean;
102
+ get resizable(): boolean;
103
+ get rotatable(): boolean;
104
+ buildRealObject(): import("@hatiolab/things-scene").IRealObject | undefined;
105
+ get realObject(): import("@hatiolab/things-scene").IRealObject | undefined;
106
+ draw(context?: import("@hatiolab/things-scene").SceneRenderContext): void;
107
+ prerender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
108
+ postrender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
109
+ prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
110
+ prepareIf(condition: boolean): void;
111
+ drawText(context: import("@hatiolab/things-scene").SceneRenderContext): void;
112
+ drawStroke(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
113
+ drawFill(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
114
+ get strokeStyle(): any;
115
+ set strokeStyle(v: any): any;
116
+ get fillStyle(): any;
117
+ set fillStyle(v: any): any;
118
+ get fontColor(): string;
119
+ set fontColor(v: string): any;
120
+ get rotation(): number;
121
+ set rotation(v: number): any;
122
+ get decorators(): string[];
123
+ get decotag(): string;
124
+ get hidden(): boolean;
125
+ set hidden(v: boolean): any;
126
+ get tag(): string;
127
+ set tag(v: string): any;
128
+ get appendum(): any;
129
+ set appendum(v: any): any;
130
+ defaultTextSubstitutor(): string;
131
+ textLines(context?: import("@hatiolab/things-scene").SceneRenderContext): any[][];
132
+ get font(): string;
133
+ get lineHeight(): number;
134
+ get textSubstitutor(): () => string;
135
+ get text(): string;
136
+ set text(v: string): any;
137
+ get textBounds(): import("@hatiolab/things-scene").BOUNDS;
138
+ get textRotation(): number;
139
+ get textHidden(): boolean;
140
+ set textHidden(v: boolean): any;
141
+ get hasTextProperty(): boolean;
142
+ animate(opts: import("@hatiolab/things-scene").AnimationConfig): any;
143
+ effect(context: import("@hatiolab/things-scene").SceneRenderContext, model: any): void;
144
+ serialize(...others: any[]): string;
145
+ trim(): void;
146
+ closeScene(data: any): void;
147
+ delta(attr?: string | object, value?: any): any;
148
+ invalidate(): void;
149
+ get value(): any;
150
+ set value(v: any): any;
151
+ get data(): any;
152
+ set data(v: any): any;
153
+ set tap(v: any): any;
154
+ get mappings(): any[];
155
+ get retention(): number;
156
+ get animation(): import("@hatiolab/things-scene").AnimationController | undefined;
157
+ get started(): boolean;
158
+ set started(v: boolean): any;
159
+ get controls(): import("@hatiolab/things-scene").Control[] | undefined;
160
+ findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
161
+ findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
162
+ capture(x: number, y: number, except?: (c: Component) => boolean): any;
163
+ findAnchor(name: string): any;
164
+ isDescendible(container: Component): boolean;
165
+ getContext(component?: unknown): any;
166
+ get root(): Component;
167
+ get rootModel(): Component;
168
+ get parent(): Component;
169
+ set parent(v: Component): any;
170
+ get scalable(): boolean;
171
+ get stuck(): boolean;
172
+ get capturable(): boolean;
173
+ get position(): string;
174
+ get origin(): string;
175
+ get offset(): import("@hatiolab/things-scene").POINT;
176
+ get app(): import("@hatiolab/things-scene").ApplicationContext;
177
+ drawEffect(context: import("@hatiolab/things-scene").SceneRenderContext): void;
178
+ prepareFill(resolve: Function, reject: Function): void;
179
+ prepareFillIf(condition: boolean): void;
180
+ onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
181
+ drawImage(context: import("@hatiolab/things-scene").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
182
+ mutateBounds(logic: ((bounds: import("@hatiolab/things-scene").BOUNDS) => import("@hatiolab/things-scene").BOUNDS | void) | null, context?: any): void;
183
+ mutatePath(beforeLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, afterLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, context?: any): void;
184
+ access(accessor: string): any;
185
+ substitute(template: string, data: any): string | undefined;
186
+ onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
187
+ onchangeData(after: Record<string, any>, before: Record<string, any>): void;
188
+ buildMappings(): void;
189
+ executeMappings(force?: boolean): void;
190
+ disposeMappings(): void;
191
+ ondropfile(transfered: FileList, files: string[]): void;
192
+ transcoordS2P(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
193
+ transcoordP2S(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
194
+ transcoordS2T(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
195
+ transcoordT2P(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
196
+ transcoordT2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
197
+ transcoordS2TR(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
198
+ transcoordS2O(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
199
+ transcoordC2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
200
+ transcoordS2C(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
201
+ toParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
202
+ fromParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
203
+ toScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
204
+ fromScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
205
+ toLocal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
206
+ toGlobal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
207
+ toOther(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
208
+ on(name: string | object, callback: Function, context?: any): any;
209
+ off(name?: string | object, callback?: Function, context?: any): any;
210
+ once(name: string | object, callback: Function, context?: any): any;
211
+ trigger(name: string, ...args: any[]): any;
212
+ delegate_on(delegator: any): any;
213
+ delegate_off(delegator: any): any;
214
+ onchange(after: Record<string, any>, before: Record<string, any>): void;
215
+ calculateBounds?(): void;
216
+ oncreate_element?(element: HTMLElement): void;
217
+ removeComponent(component: Component, ghost?: boolean): void;
218
+ addComponent(component: Component, ghost?: boolean): void;
219
+ insertComponentAt(component: Component, index: number, ghost?: boolean): void;
220
+ getOverlay(component: Component): HTMLElement | undefined;
221
+ findById(id: string): Component | undefined;
222
+ findByRefid(ref: string | number): Component | undefined;
223
+ findAllById(id: string): Component[];
224
+ resize(): void;
225
+ fit(type?: string): void;
226
+ get components(): Component[] | undefined;
227
+ get layout(): any;
228
+ get auxOverlay(): HTMLElement | undefined;
229
+ get isReady(): boolean;
230
+ get unitScale(): number;
231
+ get selected(): Component[];
232
+ set selected(_v: Component[]): any;
233
+ get focused(): Component | null;
234
+ set focused(_v: Component | null): any;
235
+ get hasSameParentForAllSelected(): boolean;
236
+ set hasSameParentForAllSelected(_v: boolean): any;
237
+ get fitMode(): string | undefined;
238
+ set fitMode(_v: string | undefined): any;
239
+ get element(): HTMLElement | null;
240
+ set element(_v: HTMLElement | null): any;
241
+ }) & typeof Component;
6
242
  /**
7
243
  * 1. 스타일을 상속 받아야 함. (cascade-style)
8
244
  * 2. 스타일을 동적처리할 수 있음. (로직처리)
@@ -78,7 +78,7 @@ let TableCell = class TableCell extends RectPath(Component) {
78
78
  lineWidth && (style.lineWidth = lineWidth);
79
79
  lineDash && (style.lineDash = lineDash);
80
80
  const table = this.parent;
81
- table === null || table === void 0 ? void 0 : table.setCellsStyle([this], style, 'out', false /* not clear before */);
81
+ table?.setCellsStyle([this], style, 'out', false /* not clear before */);
82
82
  }
83
83
  _drawBorder(context, x, y, to_x, to_y, style) {
84
84
  if (style && style.strokeStyle && style.lineWidth && style.lineDash) {
@@ -91,7 +91,7 @@ let TableCell = class TableCell extends RectPath(Component) {
91
91
  render(context) {
92
92
  var { left, top, width, height } = this.state;
93
93
  var { border } = this.state;
94
- border || (border = {});
94
+ border ||= {};
95
95
  // Cell 채우기.
96
96
  context.beginPath();
97
97
  context.lineWidth = 0;
@@ -1 +1 @@
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, sceneComponent } from '@hatiolab/things-scene'\n\nimport Table from './table.js'\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 */\n@sceneComponent('table-cell')\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"]}
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, sceneComponent } from '@hatiolab/things-scene'\n\nimport Table from './table.js'\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 */\n@sceneComponent('table-cell')\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"]}
package/dist/table.d.ts CHANGED
@@ -9,7 +9,7 @@ export default class Table extends Container {
9
9
  get widths(): any;
10
10
  get heights(): any;
11
11
  buildCells(newrows: number, newcolumns: number, oldrows: number, oldcolumns: number): void;
12
- get layout(): import("@hatiolab/things-scene").LAYOUT;
12
+ get layout(): any;
13
13
  get rows(): number;
14
14
  setCellsStyle(cells: TableCell[], style: Style, where: WHERE, clearBefore?: boolean): void;
15
15
  setCellsData(): void;
package/dist/table.js CHANGED
@@ -34,10 +34,7 @@ const NATURE = {
34
34
  help: 'scene/component/table'
35
35
  };
36
36
  let Table = class Table extends Container {
37
- constructor() {
38
- super(...arguments);
39
- this.reflowing = false;
40
- }
37
+ reflowing = false;
41
38
  created() {
42
39
  var tobeSize = this.rows * this.columns;
43
40
  var gap = this.size() - tobeSize;
@@ -93,7 +90,7 @@ let Table = class Table extends Container {
93
90
  }
94
91
  buildCells(newrows, newcolumns, oldrows, oldcolumns) {
95
92
  if (newrows < oldrows) {
96
- let removals = ([] = this.components.slice(oldcolumns * newrows));
93
+ let removals = this.components.slice(oldcolumns * newrows);
97
94
  // 지우려는 셀중에 병합된 셀을 찾는다.
98
95
  let mergedCells = [];
99
96
  removals.forEach(cell => {