@ai-table/grid 0.0.11 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- package/angular-konva/components/container.component.d.ts +7 -0
- package/angular-konva/components/container.component.d.ts.map +1 -0
- package/angular-konva/components/container.token.d.ts +3 -0
- package/angular-konva/components/container.token.d.ts.map +1 -0
- package/angular-konva/components/index.d.ts +4 -0
- package/angular-konva/components/index.d.ts.map +1 -0
- package/angular-konva/components/shape.component.d.ts +61 -0
- package/angular-konva/components/shape.component.d.ts.map +1 -0
- package/angular-konva/components/stage.component.d.ts +40 -0
- package/angular-konva/components/stage.component.d.ts.map +1 -0
- package/angular-konva/index.d.ts +5 -0
- package/angular-konva/index.d.ts.map +1 -0
- package/angular-konva/interfaces/component.d.ts +49 -0
- package/angular-konva/interfaces/component.d.ts.map +1 -0
- package/angular-konva/interfaces/config.d.ts +26 -0
- package/angular-konva/interfaces/config.d.ts.map +1 -0
- package/angular-konva/interfaces/event-object.d.ts +7 -0
- package/angular-konva/interfaces/event-object.d.ts.map +1 -0
- package/angular-konva/interfaces/index.d.ts +5 -0
- package/angular-konva/interfaces/index.d.ts.map +1 -0
- package/angular-konva/interfaces/shape.d.ts +42 -0
- package/angular-konva/interfaces/shape.d.ts.map +1 -0
- package/angular-konva/utils/apply-node-props.d.ts +4 -0
- package/angular-konva/utils/apply-node-props.d.ts.map +1 -0
- package/angular-konva/utils/common.d.ts +8 -0
- package/angular-konva/utils/common.d.ts.map +1 -0
- package/angular-konva/utils/index.d.ts +5 -0
- package/angular-konva/utils/index.d.ts.map +1 -0
- package/angular-konva/utils/types.d.ts +4 -0
- package/angular-konva/utils/types.d.ts.map +1 -0
- package/angular-konva/utils/update-picture.d.ts +4 -0
- package/angular-konva/utils/update-picture.d.ts.map +1 -0
- package/components/cell-editors/abstract-cell-editor.component.d.ts +7 -5
- package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
- package/components/cell-editors/cell-editor.scss +38 -25
- package/components/cell-editors/cell-editor.variables.scss +5 -0
- package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
- package/components/cell-editors/link/edit-link/edit-link.component.d.ts +33 -0
- package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -0
- package/components/cell-editors/link/link-editor.component.d.ts +36 -0
- package/components/cell-editors/link/link-editor.component.d.ts.map +1 -0
- package/components/cell-editors/link/link-editor.component.scss +21 -0
- package/components/cell-editors/progress/progress-editor.component.d.ts +0 -1
- package/components/cell-editors/progress/progress-editor.component.d.ts.map +1 -1
- package/components/cell-editors/progress/progress-editor.component.scss +12 -4
- package/components/cell-editors/rating/rating-editor.component.d.ts +0 -1
- package/components/cell-editors/rating/rating-editor.component.d.ts.map +1 -1
- package/components/cell-editors/rating/rating-editor.component.scss +10 -0
- package/components/cell-editors/select/select-editor.component.d.ts +1 -3
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
- package/components/cell-editors/text/text-editor.component.d.ts +0 -1
- package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
- package/components/cell-views/select/option.component.d.ts.map +1 -1
- package/components/cell-views/select/option.scss +10 -0
- package/components/field-menu/field-menu.component.d.ts +8 -3
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-property-editor/field-property-editor.component.d.ts +4 -2
- package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
- package/components/index.d.ts +3 -1
- package/components/index.d.ts.map +1 -1
- package/constants/colors.d.ts +18 -0
- package/constants/colors.d.ts.map +1 -0
- package/constants/grid.d.ts +17 -1
- package/constants/grid.d.ts.map +1 -1
- package/constants/icon.d.ts +19 -0
- package/constants/icon.d.ts.map +1 -0
- package/constants/index.d.ts +5 -1
- package/constants/index.d.ts.map +1 -1
- package/constants/table.d.ts +60 -0
- package/constants/table.d.ts.map +1 -0
- package/constants/text.d.ts +22 -0
- package/constants/text.d.ts.map +1 -0
- package/core/context.d.ts +14 -0
- package/core/context.d.ts.map +1 -0
- package/core/coordinate.d.ts +96 -0
- package/core/coordinate.d.ts.map +1 -0
- package/core/index.d.ts +3 -2
- package/core/index.d.ts.map +1 -1
- package/core/types/ai-table.d.ts +56 -0
- package/core/types/ai-table.d.ts.map +1 -0
- package/core/types/core.d.ts +29 -23
- package/core/types/core.d.ts.map +1 -1
- package/core/types/index.d.ts +1 -1
- package/core/types/index.d.ts.map +1 -1
- package/core/utils/common.d.ts +1 -2
- package/core/utils/common.d.ts.map +1 -1
- package/core/utils/field.d.ts +1 -1
- package/core/utils/field.d.ts.map +1 -1
- package/core/utils/index.d.ts +0 -1
- package/core/utils/index.d.ts.map +1 -1
- package/core/utils/queries.d.ts +5 -5
- package/core/utils/queries.d.ts.map +1 -1
- package/dom-grid.component.d.ts +11 -0
- package/dom-grid.component.d.ts.map +1 -0
- package/esm2022/angular-konva/components/container.component.mjs +29 -0
- package/esm2022/angular-konva/components/container.token.mjs +3 -0
- package/esm2022/angular-konva/components/index.mjs +4 -0
- package/esm2022/angular-konva/components/shape.component.mjs +142 -0
- package/esm2022/angular-konva/components/stage.component.mjs +123 -0
- package/esm2022/angular-konva/index.mjs +5 -0
- package/esm2022/angular-konva/interfaces/component.mjs +4 -0
- package/esm2022/angular-konva/interfaces/config.mjs +2 -0
- package/esm2022/angular-konva/interfaces/event-object.mjs +2 -0
- package/esm2022/angular-konva/interfaces/index.mjs +5 -0
- package/esm2022/angular-konva/interfaces/shape.mjs +42 -0
- package/esm2022/angular-konva/utils/apply-node-props.mjs +67 -0
- package/esm2022/angular-konva/utils/common.mjs +48 -0
- package/esm2022/angular-konva/utils/index.mjs +5 -0
- package/esm2022/angular-konva/utils/types.mjs +2 -0
- package/esm2022/angular-konva/utils/update-picture.mjs +7 -0
- package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +12 -7
- package/esm2022/components/cell-editors/date/date-editor.component.mjs +6 -3
- package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +66 -0
- package/esm2022/components/cell-editors/link/link-editor.component.mjs +117 -0
- package/esm2022/components/cell-editors/number/number-editor.component.mjs +2 -2
- package/esm2022/components/cell-editors/progress/progress-editor.component.mjs +3 -6
- package/esm2022/components/cell-editors/rating/rating-editor.component.mjs +4 -7
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +11 -16
- package/esm2022/components/cell-editors/text/text-editor.component.mjs +10 -11
- package/esm2022/components/cell-views/select/option.component.mjs +6 -5
- package/esm2022/components/field-menu/field-menu.component.mjs +11 -8
- package/esm2022/components/field-property-editor/field-property-editor.component.mjs +17 -12
- package/esm2022/components/index.mjs +4 -2
- package/esm2022/constants/colors.mjs +18 -0
- package/esm2022/constants/editor.mjs +2 -3
- package/esm2022/constants/grid.mjs +22 -4
- package/esm2022/constants/icon.mjs +26 -0
- package/esm2022/constants/index.mjs +6 -2
- package/esm2022/constants/table.mjs +62 -0
- package/esm2022/constants/text.mjs +23 -0
- package/esm2022/core/context.mjs +25 -0
- package/esm2022/core/coordinate.mjs +222 -0
- package/esm2022/core/index.mjs +4 -3
- package/esm2022/core/types/ai-table.mjs +44 -0
- package/esm2022/core/types/core.mjs +6 -1
- package/esm2022/core/types/index.mjs +2 -2
- package/esm2022/core/utils/common.mjs +3 -20
- package/esm2022/core/utils/field.mjs +9 -5
- package/esm2022/core/utils/index.mjs +1 -2
- package/esm2022/core/utils/queries.mjs +4 -4
- package/esm2022/dom-grid.component.mjs +82 -0
- package/esm2022/grid-base.component.mjs +154 -0
- package/esm2022/grid.component.mjs +336 -160
- package/esm2022/public-api.mjs +9 -5
- package/esm2022/renderer/components/add-field-column.component.mjs +68 -0
- package/esm2022/renderer/components/cells.component.mjs +35 -0
- package/esm2022/renderer/components/field-head.component.mjs +130 -0
- package/esm2022/renderer/components/field-icon.component.mjs +66 -0
- package/esm2022/renderer/components/frozen-cells.component.mjs +36 -0
- package/esm2022/renderer/components/frozen-heads.component.mjs +117 -0
- package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +38 -0
- package/esm2022/renderer/components/heads.component.mjs +38 -0
- package/esm2022/renderer/components/hover-row-heads.component.mjs +107 -0
- package/esm2022/renderer/components/icon.component.mjs +80 -0
- package/esm2022/renderer/components/index.mjs +14 -0
- package/esm2022/renderer/components/other-rows.component.mjs +68 -0
- package/esm2022/renderer/components/placeholder-cells.component.mjs +33 -0
- package/esm2022/renderer/components/text.component.mjs +45 -0
- package/esm2022/renderer/creations/create-active-cell-border.mjs +68 -0
- package/esm2022/renderer/creations/create-cells.mjs +135 -0
- package/esm2022/renderer/creations/create-heads.mjs +45 -0
- package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +97 -0
- package/esm2022/renderer/drawers/cell-drawer.mjs +586 -0
- package/esm2022/renderer/drawers/drawer.mjs +936 -0
- package/esm2022/renderer/drawers/layout-drawer.mjs +58 -0
- package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +101 -0
- package/esm2022/renderer/index.mjs +4 -0
- package/esm2022/renderer/renderer.component.mjs +174 -0
- package/esm2022/services/event.service.mjs +115 -11
- package/esm2022/services/field.service.mjs +28 -5
- package/esm2022/services/index.mjs +4 -0
- package/esm2022/services/selection.service.mjs +8 -1
- package/esm2022/types/avatar.mjs +27 -0
- package/esm2022/types/canvas.mjs +2 -0
- package/esm2022/types/cell.mjs +2 -0
- package/esm2022/types/component-config.mjs +7 -0
- package/esm2022/types/field.mjs +1 -1
- package/esm2022/types/grid.mjs +16 -2
- package/esm2022/types/index.mjs +8 -2
- package/esm2022/types/layout.mjs +2 -0
- package/esm2022/types/row.mjs +6 -0
- package/esm2022/utils/build.mjs +39 -0
- package/esm2022/utils/cell.mjs +71 -0
- package/esm2022/utils/common.mjs +49 -0
- package/esm2022/utils/get-placeholder-cells.mjs +66 -0
- package/esm2022/utils/get-text-width.mjs +30 -0
- package/esm2022/utils/image-cache.mjs +57 -0
- package/esm2022/utils/index.mjs +12 -0
- package/esm2022/utils/os.mjs +16 -0
- package/esm2022/utils/position.mjs +48 -0
- package/esm2022/utils/style.mjs +25 -0
- package/esm2022/utils/text-measure.mjs +122 -0
- package/esm2022/utils/visible-range.mjs +38 -0
- package/fesm2022/ai-table-grid.mjs +5526 -693
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid-base.component.d.ts +52 -0
- package/grid-base.component.d.ts.map +1 -0
- package/grid.component.d.ts +43 -40
- package/grid.component.d.ts.map +1 -1
- package/package.json +5 -2
- package/public-api.d.ts +8 -4
- package/public-api.d.ts.map +1 -1
- package/renderer/components/add-field-column.component.d.ts +16 -0
- package/renderer/components/add-field-column.component.d.ts.map +1 -0
- package/renderer/components/cells.component.d.ts +14 -0
- package/renderer/components/cells.component.d.ts.map +1 -0
- package/renderer/components/field-head.component.d.ts +73 -0
- package/renderer/components/field-head.component.d.ts.map +1 -0
- package/renderer/components/field-icon.component.d.ts +17 -0
- package/renderer/components/field-icon.component.d.ts.map +1 -0
- package/renderer/components/frozen-cells.component.d.ts +14 -0
- package/renderer/components/frozen-cells.component.d.ts.map +1 -0
- package/renderer/components/frozen-heads.component.d.ts +47 -0
- package/renderer/components/frozen-heads.component.d.ts.map +1 -0
- package/renderer/components/frozen-placeholder-cells.component.d.ts +22 -0
- package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -0
- package/renderer/components/heads.component.d.ts +9 -0
- package/renderer/components/heads.component.d.ts.map +1 -0
- package/renderer/components/hover-row-heads.component.d.ts +11 -0
- package/renderer/components/hover-row-heads.component.d.ts.map +1 -0
- package/renderer/components/icon.component.d.ts +37 -0
- package/renderer/components/icon.component.d.ts.map +1 -0
- package/renderer/components/index.d.ts +14 -0
- package/renderer/components/index.d.ts.map +1 -0
- package/renderer/components/other-rows.component.d.ts +31 -0
- package/renderer/components/other-rows.component.d.ts.map +1 -0
- package/renderer/components/placeholder-cells.component.d.ts +22 -0
- package/renderer/components/placeholder-cells.component.d.ts.map +1 -0
- package/renderer/components/text.component.d.ts +99 -0
- package/renderer/components/text.component.d.ts.map +1 -0
- package/renderer/creations/create-active-cell-border.d.ts +7 -0
- package/renderer/creations/create-active-cell-border.d.ts.map +1 -0
- package/renderer/creations/create-cells.d.ts +8 -0
- package/renderer/creations/create-cells.d.ts.map +1 -0
- package/renderer/creations/create-heads.d.ts +3 -0
- package/renderer/creations/create-heads.d.ts.map +1 -0
- package/renderer/drawers/add-row-layout-drawer.d.ts +12 -0
- package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -0
- package/renderer/drawers/cell-drawer.d.ts +22 -0
- package/renderer/drawers/cell-drawer.d.ts.map +1 -0
- package/renderer/drawers/drawer.d.ts +136 -0
- package/renderer/drawers/drawer.d.ts.map +1 -0
- package/renderer/drawers/layout-drawer.d.ts +22 -0
- package/renderer/drawers/layout-drawer.d.ts.map +1 -0
- package/renderer/drawers/record-row-layout-drawer.d.ts +14 -0
- package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -0
- package/renderer/index.d.ts +4 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/renderer.component.d.ts +64 -0
- package/renderer/renderer.component.d.ts.map +1 -0
- package/services/event.service.d.ts +17 -3
- package/services/event.service.d.ts.map +1 -1
- package/services/field.service.d.ts +5 -4
- package/services/field.service.d.ts.map +1 -1
- package/services/index.d.ts +4 -0
- package/services/index.d.ts.map +1 -0
- package/services/selection.service.d.ts.map +1 -1
- package/styles/styles.scss +71 -11
- package/types/avatar.d.ts +24 -0
- package/types/avatar.d.ts.map +1 -0
- package/types/canvas.d.ts +83 -0
- package/types/canvas.d.ts.map +1 -0
- package/types/cell.d.ts +43 -0
- package/types/cell.d.ts.map +1 -0
- package/types/component-config.d.ts +50 -0
- package/types/component-config.d.ts.map +1 -0
- package/types/field.d.ts +27 -1
- package/types/field.d.ts.map +1 -1
- package/types/grid.d.ts +80 -2
- package/types/grid.d.ts.map +1 -1
- package/types/index.d.ts +7 -1
- package/types/index.d.ts.map +1 -1
- package/types/layout.d.ts +11 -0
- package/types/layout.d.ts.map +1 -0
- package/types/row.d.ts +27 -0
- package/types/row.d.ts.map +1 -0
- package/utils/build.d.ts +5 -0
- package/utils/build.d.ts.map +1 -0
- package/utils/cell.d.ts +19 -0
- package/utils/cell.d.ts.map +1 -0
- package/utils/common.d.ts +20 -0
- package/utils/common.d.ts.map +1 -0
- package/utils/get-placeholder-cells.d.ts +16 -0
- package/utils/get-placeholder-cells.d.ts.map +1 -0
- package/utils/get-text-width.d.ts +9 -0
- package/utils/get-text-width.d.ts.map +1 -0
- package/utils/image-cache.d.ts +16 -0
- package/utils/image-cache.d.ts.map +1 -0
- package/utils/index.d.ts +12 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/os.d.ts +4 -0
- package/utils/os.d.ts.map +1 -0
- package/utils/position.d.ts +20 -0
- package/utils/position.d.ts.map +1 -0
- package/utils/style.d.ts +4 -0
- package/utils/style.d.ts.map +1 -0
- package/utils/text-measure.d.ts +32 -0
- package/utils/text-measure.d.ts.map +1 -0
- package/utils/visible-range.d.ts +13 -0
- package/utils/visible-range.d.ts.map +1 -0
- package/components/cell-editors/link/number-editor.component.d.ts +0 -8
- package/components/cell-editors/link/number-editor.component.d.ts.map +0 -1
- package/constants/field.d.ts +0 -20
- package/constants/field.d.ts.map +0 -1
- package/core/action/field.d.ts +0 -12
- package/core/action/field.d.ts.map +0 -1
- package/core/action/general.d.ts +0 -5
- package/core/action/general.d.ts.map +0 -1
- package/core/action/index.d.ts +0 -12
- package/core/action/index.d.ts.map +0 -1
- package/core/action/record.d.ts +0 -12
- package/core/action/record.d.ts.map +0 -1
- package/core/types/action.d.ts +0 -64
- package/core/types/action.d.ts.map +0 -1
- package/core/utils/weak-map.d.ts +0 -3
- package/core/utils/weak-map.d.ts.map +0 -1
- package/esm2022/components/cell-editors/link/number-editor.component.mjs +0 -25
- package/esm2022/constants/field.mjs +0 -25
- package/esm2022/core/action/field.mjs +0 -57
- package/esm2022/core/action/general.mjs +0 -116
- package/esm2022/core/action/index.mjs +0 -9
- package/esm2022/core/action/record.mjs +0 -44
- package/esm2022/core/types/action.mjs +0 -18
- package/esm2022/core/utils/weak-map.mjs +0 -2
@@ -0,0 +1,58 @@
|
|
1
|
+
import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH } from '../../constants/table';
|
2
|
+
import { Drawer } from './drawer';
|
3
|
+
/**
|
4
|
+
* 用于处理表格行或单元格的布局和绘制。
|
5
|
+
* 它提供了基本的布局信息(如位置、大小等),并定义了常用的绘图方法(如渲染缩进区域、添加新字段的空白区域等)。
|
6
|
+
* 该类继承自 Drawer,并被其他更具体的布局类(如 RecordRowLayout)扩展和使用
|
7
|
+
*/
|
8
|
+
export class Layout extends Drawer {
|
9
|
+
constructor() {
|
10
|
+
super(...arguments);
|
11
|
+
// 定义当前单元格或行的位置
|
12
|
+
this.x = 0;
|
13
|
+
this.y = 0;
|
14
|
+
// 行高
|
15
|
+
this.rowHeight = 0;
|
16
|
+
// 列宽
|
17
|
+
this.columnWidth = 0;
|
18
|
+
// 行索引
|
19
|
+
this.rowIndex = 0;
|
20
|
+
// 列索引
|
21
|
+
this.columnIndex = 0;
|
22
|
+
// 列数
|
23
|
+
this.columnCount = 0;
|
24
|
+
this.containerWidth = 0;
|
25
|
+
}
|
26
|
+
// 用于初始化或重置布局的基本属性。这个方法通常在每次渲染新的一行或单元格时调用,确保布局信息是最新的
|
27
|
+
init({ x, y, rowIndex, columnIndex, rowHeight, columnWidth, columnCount, containerWidth }) {
|
28
|
+
this.x = x;
|
29
|
+
this.y = y;
|
30
|
+
this.rowIndex = rowIndex;
|
31
|
+
this.columnIndex = columnIndex;
|
32
|
+
this.rowHeight = rowHeight;
|
33
|
+
this.columnWidth = columnWidth;
|
34
|
+
this.columnCount = columnCount;
|
35
|
+
this.containerWidth = containerWidth;
|
36
|
+
}
|
37
|
+
// 当前单元格是否是行的第一列
|
38
|
+
get isFirst() {
|
39
|
+
return this.columnIndex === 0;
|
40
|
+
}
|
41
|
+
// 当前单元格是否是行的最后一列
|
42
|
+
get isLast() {
|
43
|
+
return this.columnIndex === this.columnCount - 1;
|
44
|
+
}
|
45
|
+
renderAddFieldBlank() {
|
46
|
+
const width = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
47
|
+
const y = this.y;
|
48
|
+
const rowHeight = this.rowHeight;
|
49
|
+
this.rect({
|
50
|
+
x: this.x + 0.5,
|
51
|
+
y: y - 0.5,
|
52
|
+
width: this.containerWidth - this.x < width ? width : this.containerWidth - this.x,
|
53
|
+
height: rowHeight + 1,
|
54
|
+
fill: this.colors.transparent
|
55
|
+
});
|
56
|
+
}
|
57
|
+
}
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWRyYXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2RyYXdlcnMvbGF5b3V0LWRyYXdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLE1BQU07SUFBbEM7O1FBQ0ksZUFBZTtRQUNMLE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLEtBQUs7UUFDSyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUs7UUFDSyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNO1FBQ0ksYUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2QixNQUFNO1FBQ0ksZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUIsS0FBSztRQUNLLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO0lBb0NqQyxDQUFDO0lBbENHLG9EQUFvRDtJQUNwRCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFpQjtRQUNwRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDekMsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixJQUFjLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQWMsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLG1CQUFtQjtRQUN6QixNQUFNLEtBQUssR0FBRywrQkFBK0IsQ0FBQztRQUM5QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNOLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUc7WUFDZixDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUc7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFibGUnO1xuaW1wb3J0IHsgQUlUYWJsZUxheW91dCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IERyYXdlciB9IGZyb20gJy4vZHJhd2VyJztcblxuLyoqXG4gKiDnlKjkuo7lpITnkIbooajmoLzooYzmiJbljZXlhYPmoLznmoTluIPlsYDlkoznu5jliLbjgIJcbiAqIOWug+aPkOS+m+S6huWfuuacrOeahOW4g+WxgOS/oeaBr++8iOWmguS9jee9ruOAgeWkp+Wwj+etie+8ie+8jOW5tuWumuS5ieS6huW4uOeUqOeahOe7mOWbvuaWueazle+8iOWmgua4suafk+e8qei/m+WMuuWfn+OAgea3u+WKoOaWsOWtl+auteeahOepuueZveWMuuWfn+etie+8ieOAglxuICog6K+l57G757un5om/6IeqIERyYXdlcu+8jOW5tuiiq+WFtuS7luabtOWFt+S9k+eahOW4g+WxgOexu++8iOWmgiBSZWNvcmRSb3dMYXlvdXTvvInmianlsZXlkozkvb/nlKhcbiAqL1xuZXhwb3J0IGNsYXNzIExheW91dCBleHRlbmRzIERyYXdlciB7XG4gICAgLy8g5a6a5LmJ5b2T5YmN5Y2V5YWD5qC85oiW6KGM55qE5L2N572uXG4gICAgcHJvdGVjdGVkIHggPSAwO1xuICAgIHByb3RlY3RlZCB5ID0gMDtcbiAgICAvLyDooYzpq5hcbiAgICBwcm90ZWN0ZWQgcm93SGVpZ2h0ID0gMDtcbiAgICAvLyDliJflrr1cbiAgICBwcm90ZWN0ZWQgY29sdW1uV2lkdGggPSAwO1xuICAgIC8vIOihjOe0ouW8lVxuICAgIHByb3RlY3RlZCByb3dJbmRleCA9IDA7XG4gICAgLy8g5YiX57Si5byVXG4gICAgcHJvdGVjdGVkIGNvbHVtbkluZGV4ID0gMDtcbiAgICAvLyDliJfmlbBcbiAgICBwcm90ZWN0ZWQgY29sdW1uQ291bnQgPSAwO1xuXG4gICAgcHJvdGVjdGVkIGNvbnRhaW5lcldpZHRoID0gMDtcblxuICAgIC8vIOeUqOS6juWIneWni+WMluaIlumHjee9ruW4g+WxgOeahOWfuuacrOWxnuaAp+OAgui/meS4quaWueazlemAmuW4uOWcqOavj+asoea4suafk+aWsOeahOS4gOihjOaIluWNleWFg+agvOaXtuiwg+eUqO+8jOehruS/neW4g+WxgOS/oeaBr+aYr+acgOaWsOeahFxuICAgIGluaXQoeyB4LCB5LCByb3dJbmRleCwgY29sdW1uSW5kZXgsIHJvd0hlaWdodCwgY29sdW1uV2lkdGgsIGNvbHVtbkNvdW50LCBjb250YWluZXJXaWR0aCB9OiBBSVRhYmxlTGF5b3V0KSB7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHRoaXMucm93SW5kZXggPSByb3dJbmRleDtcbiAgICAgICAgdGhpcy5jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4O1xuICAgICAgICB0aGlzLnJvd0hlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgdGhpcy5jb2x1bW5XaWR0aCA9IGNvbHVtbldpZHRoO1xuICAgICAgICB0aGlzLmNvbHVtbkNvdW50ID0gY29sdW1uQ291bnQ7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSBjb250YWluZXJXaWR0aDtcbiAgICB9XG5cbiAgICAvLyDlvZPliY3ljZXlhYPmoLzmmK/lkKbmmK/ooYznmoTnrKzkuIDliJdcbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRmlyc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkluZGV4ID09PSAwO1xuICAgIH1cblxuICAgIC8vIOW9k+WJjeWNleWFg+agvOaYr+WQpuaYr+ihjOeahOacgOWQjuS4gOWIl1xuICAgIHByb3RlY3RlZCBnZXQgaXNMYXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5JbmRleCA9PT0gdGhpcy5jb2x1bW5Db3VudCAtIDE7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlbmRlckFkZEZpZWxkQmxhbmsoKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueTtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMucmVjdCh7XG4gICAgICAgICAgICB4OiB0aGlzLnggKyAwLjUsXG4gICAgICAgICAgICB5OiB5IC0gMC41LFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29udGFpbmVyV2lkdGggLSB0aGlzLnggPCB3aWR0aCA/IHdpZHRoIDogdGhpcy5jb250YWluZXJXaWR0aCAtIHRoaXMueCxcbiAgICAgICAgICAgIGhlaWdodDogcm93SGVpZ2h0ICsgMSxcbiAgICAgICAgICAgIGZpbGw6IHRoaXMuY29sb3JzLnRyYW5zcGFyZW50XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import { AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_ROW_HEAD_WIDTH, DEFAULT_FONT_SIZE } from '../../constants';
|
2
|
+
import { DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE } from '../../constants/text';
|
3
|
+
import { AITable } from '../../core';
|
4
|
+
import { Layout } from './layout-drawer';
|
5
|
+
/**
|
6
|
+
* 绘制行的布局,通过直接操作 Canvas 提供高效的渲染方法。
|
7
|
+
* 它继承自 Layout 类,包含了用于绘制行中单元格(尤其是首列和尾列)的几个方法
|
8
|
+
*/
|
9
|
+
export class RecordRowLayout extends Layout {
|
10
|
+
// 首列
|
11
|
+
renderFirstCell({ row, style, isHoverRow, isCheckedRow }) {
|
12
|
+
if (!this.isFirst)
|
13
|
+
return;
|
14
|
+
const { fill } = style;
|
15
|
+
const y = this.y;
|
16
|
+
const rowHeight = this.rowHeight;
|
17
|
+
const columnWidth = this.columnWidth;
|
18
|
+
const colors = AITable.getColors();
|
19
|
+
// 编号的上下边框
|
20
|
+
let fillBg = colors.transparent;
|
21
|
+
if (isCheckedRow) {
|
22
|
+
fillBg = colors.itemActiveBgColor;
|
23
|
+
}
|
24
|
+
else if (isHoverRow) {
|
25
|
+
fillBg = colors.gray80;
|
26
|
+
}
|
27
|
+
this.customRect({
|
28
|
+
x: AI_TABLE_OFFSET,
|
29
|
+
y,
|
30
|
+
width: AI_TABLE_ROW_HEAD_WIDTH - AI_TABLE_OFFSET,
|
31
|
+
height: rowHeight,
|
32
|
+
fill: fillBg,
|
33
|
+
strokes: {
|
34
|
+
right: colors.gray200,
|
35
|
+
bottom: colors.gray200
|
36
|
+
}
|
37
|
+
});
|
38
|
+
// 第一列单元格
|
39
|
+
this.rect({
|
40
|
+
x: AI_TABLE_ROW_HEAD_WIDTH,
|
41
|
+
y,
|
42
|
+
width: columnWidth + AI_TABLE_OFFSET,
|
43
|
+
height: rowHeight,
|
44
|
+
fill: fill,
|
45
|
+
stroke: colors.gray200
|
46
|
+
});
|
47
|
+
if (!isCheckedRow && !isHoverRow) {
|
48
|
+
// 设置字体样式,居中绘制行号
|
49
|
+
this.setStyle({ fontSize: DEFAULT_FONT_SIZE });
|
50
|
+
this.text({
|
51
|
+
x: AI_TABLE_ROW_HEAD_WIDTH / 2,
|
52
|
+
y: y + AI_TABLE_FIELD_HEAD_HEIGHT / 2,
|
53
|
+
text: String(row.displayIndex),
|
54
|
+
textAlign: DEFAULT_TEXT_ALIGN_CENTER,
|
55
|
+
verticalAlign: DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE
|
56
|
+
});
|
57
|
+
}
|
58
|
+
}
|
59
|
+
// 尾列
|
60
|
+
renderLastCell({ style }) {
|
61
|
+
if (!this.isLast || this.isFirst)
|
62
|
+
return;
|
63
|
+
const { fill, stroke } = style;
|
64
|
+
const columnWidth = this.columnWidth;
|
65
|
+
const width = columnWidth;
|
66
|
+
const colors = AITable.getColors();
|
67
|
+
// 背景、边框
|
68
|
+
this.rect({
|
69
|
+
x: this.x,
|
70
|
+
y: this.y,
|
71
|
+
width,
|
72
|
+
height: this.rowHeight,
|
73
|
+
fill: fill || colors.white,
|
74
|
+
stroke: stroke || colors.gray200
|
75
|
+
});
|
76
|
+
}
|
77
|
+
// 绘制中间的普通单元格
|
78
|
+
renderCommonCell({ style }) {
|
79
|
+
if (this.isFirst || this.isLast)
|
80
|
+
return;
|
81
|
+
const { fill, stroke } = style;
|
82
|
+
const colors = AITable.getColors();
|
83
|
+
// 背景、边框
|
84
|
+
this.rect({
|
85
|
+
x: this.x,
|
86
|
+
y: this.y,
|
87
|
+
width: this.columnWidth,
|
88
|
+
height: this.rowHeight,
|
89
|
+
fill: fill || colors.white,
|
90
|
+
stroke: stroke || colors.gray200
|
91
|
+
});
|
92
|
+
}
|
93
|
+
render(config) {
|
94
|
+
const { row, style, isCheckedRow, isHoverRow } = config;
|
95
|
+
this.renderFirstCell({ row, style, isCheckedRow, isHoverRow });
|
96
|
+
this.renderCommonCell({ style });
|
97
|
+
this.renderLastCell({ style });
|
98
|
+
}
|
99
|
+
}
|
100
|
+
export const recordRowLayout = new RecordRowLayout();
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXJvdy1sYXlvdXQtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvZHJhd2Vycy9yZWNvcmQtcm93LWxheW91dC1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLE1BQU07SUFDdkMsS0FBSztJQUNHLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBZTtRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDdkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25DLFVBQVU7UUFDVixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ2hDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJ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QUNQLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBbUI7UUFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsIEFJX1RBQkxFX09GRlNFVCwgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsIERFRkFVTFRfRk9OVF9TSVpFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERFRkFVTFRfVEVYVF9BTElHTl9DRU5URVIsIERFRkFVTFRfVEVYVF9WRVJUSUNBTF9BTElHTl9NSURETEUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGV4dCc7XG5pbXBvcnQgeyBBSVRhYmxlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlQ2VsbCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IExheW91dCB9IGZyb20gJy4vbGF5b3V0LWRyYXdlcic7XG5cbi8qKlxuICog57uY5Yi26KGM55qE5biD5bGA77yM6YCa6L+H55u05o6l5pON5L2cIENhbnZhcyDmj5Dkvpvpq5jmlYjnmoTmuLLmn5Pmlrnms5XjgIJcbiAqIOWug+e7p+aJv+iHqiBMYXlvdXQg57G777yM5YyF5ZCr5LqG55So5LqO57uY5Yi26KGM5Lit5Y2V5YWD5qC877yI5bCk5YW25piv6aaW5YiX5ZKM5bC+5YiX77yJ55qE5Yeg5Liq5pa55rOVXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWNvcmRSb3dMYXlvdXQgZXh0ZW5kcyBMYXlvdXQge1xuICAgIC8vIOmmluWIl1xuICAgIHByaXZhdGUgcmVuZGVyRmlyc3RDZWxsKHsgcm93LCBzdHlsZSwgaXNIb3ZlclJvdywgaXNDaGVja2VkUm93IH06IEFJVGFibGVDZWxsKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpcnN0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBmaWxsIH0gPSBzdHlsZTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueTtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gdGhpcy5jb2x1bW5XaWR0aDtcbiAgICAgICAgY29uc3QgY29sb3JzID0gQUlUYWJsZS5nZXRDb2xvcnMoKTtcbiAgICAgICAgLy8g57yW5Y+355qE5LiK5LiL6L655qGGXG4gICAgICAgIGxldCBmaWxsQmcgPSBjb2xvcnMudHJhbnNwYXJlbnQ7XG4gICAgICAgIGlmIChpc0NoZWNrZWRSb3cpIHtcbiAgICAgICAgICAgIGZpbGxCZyA9IGNvbG9ycy5pdGVtQWN0aXZlQmdDb2xvcjtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvdmVyUm93KSB7XG4gICAgICAgICAgICBmaWxsQmcgPSBjb2xvcnMuZ3JheTgwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VzdG9tUmVjdCh7XG4gICAgICAgICAgICB4OiBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgd2lkdGg6IEFJX1RBQkxFX1JPV19IRUFEX1dJRFRIIC0gQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgaGVpZ2h0OiByb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsOiBmaWxsQmcsXG4gICAgICAgICAgICBzdHJva2VzOiB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IGNvbG9ycy5ncmF5MjAwLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogY29sb3JzLmdyYXkyMDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOesrOS4gOWIl+WNleWFg+agvFxuICAgICAgICB0aGlzLnJlY3Qoe1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgd2lkdGg6IGNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgaGVpZ2h0OiByb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsOiBmaWxsLFxuICAgICAgICAgICAgc3Ryb2tlOiBjb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWlzQ2hlY2tlZFJvdyAmJiAhaXNIb3ZlclJvdykge1xuICAgICAgICAgICAgLy8g6K6+572u5a2X5L2T5qC35byP77yM5bGF5Lit57uY5Yi26KGM5Y+3XG4gICAgICAgICAgICB0aGlzLnNldFN0eWxlKHsgZm9udFNpemU6IERFRkFVTFRfRk9OVF9TSVpFIH0pO1xuICAgICAgICAgICAgdGhpcy50ZXh0KHtcbiAgICAgICAgICAgICAgICB4OiBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCAvIDIsXG4gICAgICAgICAgICAgICAgeTogeSArIEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hUIC8gMixcbiAgICAgICAgICAgICAgICB0ZXh0OiBTdHJpbmcocm93LmRpc3BsYXlJbmRleCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiBERUZBVUxUX1RFWFRfQUxJR05fQ0VOVEVSLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246IERFRkFVTFRfVEVYVF9WRVJUSUNBTF9BTElHTl9NSURETEVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8g5bC+5YiXXG4gICAgcHJpdmF0ZSByZW5kZXJMYXN0Q2VsbCh7IHN0eWxlIH06IFBpY2s8QUlUYWJsZUNlbGwsICdzdHlsZSc+KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xhc3QgfHwgdGhpcy5pc0ZpcnN0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBmaWxsLCBzdHJva2UgfSA9IHN0eWxlO1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IHRoaXMuY29sdW1uV2lkdGg7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gY29sdW1uV2lkdGg7XG4gICAgICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG5cbiAgICAgICAgLy8g6IOM5pmv44CB6L655qGGXG4gICAgICAgIHRoaXMucmVjdCh7XG4gICAgICAgICAgICB4OiB0aGlzLngsXG4gICAgICAgICAgICB5OiB0aGlzLnksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsOiBmaWxsIHx8IGNvbG9ycy53aGl0ZSxcbiAgICAgICAgICAgIHN0cm9rZTogc3Ryb2tlIHx8IGNvbG9ycy5ncmF5MjAwXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOe7mOWItuS4remXtOeahOaZrumAmuWNleWFg+agvFxuICAgIHByaXZhdGUgcmVuZGVyQ29tbW9uQ2VsbCh7IHN0eWxlIH06IFBpY2s8QUlUYWJsZUNlbGwsICdzdHlsZSc+KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3QgfHwgdGhpcy5pc0xhc3QpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IGZpbGwsIHN0cm9rZSB9ID0gc3R5bGU7XG4gICAgICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG5cbiAgICAgICAgLy8g6IOM5pmv44CB6L655qGGXG4gICAgICAgIHRoaXMucmVjdCh7XG4gICAgICAgICAgICB4OiB0aGlzLngsXG4gICAgICAgICAgICB5OiB0aGlzLnksXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5jb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICAgICAgICBmaWxsOiBmaWxsIHx8IGNvbG9ycy53aGl0ZSxcbiAgICAgICAgICAgIHN0cm9rZTogc3Ryb2tlIHx8IGNvbG9ycy5ncmF5MjAwXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlcihjb25maWc6IEFJVGFibGVDZWxsKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBzdHlsZSwgaXNDaGVja2VkUm93LCBpc0hvdmVyUm93IH0gPSBjb25maWc7XG4gICAgICAgIHRoaXMucmVuZGVyRmlyc3RDZWxsKHsgcm93LCBzdHlsZSwgaXNDaGVja2VkUm93LCBpc0hvdmVyUm93IH0pO1xuICAgICAgICB0aGlzLnJlbmRlckNvbW1vbkNlbGwoeyBzdHlsZSB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJMYXN0Q2VsbCh7IHN0eWxlIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlY29yZFJvd0xheW91dCA9IG5ldyBSZWNvcmRSb3dMYXlvdXQoKTtcbiJdfQ==
|
@@ -0,0 +1,4 @@
|
|
1
|
+
export * from './creations/create-active-cell-border';
|
2
|
+
export * from './creations/create-cells';
|
3
|
+
export * from './renderer.component';
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRpb25zL2NyZWF0ZS1hY3RpdmUtY2VsbC1ib3JkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGlvbnMvY3JlYXRlLWNlbGxzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVuZGVyZXIuY29tcG9uZW50JztcbiJdfQ==
|
@@ -0,0 +1,174 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';
|
2
|
+
import Konva from 'konva';
|
3
|
+
import { KoContainer, KoShape, KoStage } from '../angular-konva';
|
4
|
+
import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_ROW_HEAD_WIDTH } from '../constants';
|
5
|
+
import { AITable } from '../core';
|
6
|
+
import { getVisibleRangeInfo } from '../utils';
|
7
|
+
import { AITableAddField, AITableCells, AITableColumnHeads, AITableFieldHead, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenPlaceholderCells, AITableHoverRowHeads, AITableIcon, AITableOtherRows, AITablePlaceholderCells } from './components';
|
8
|
+
import { createActiveCellBorder } from './creations/create-active-cell-border';
|
9
|
+
import * as i0 from "@angular/core";
|
10
|
+
Konva.pixelRatio = 2;
|
11
|
+
export class AITableRenderer {
|
12
|
+
constructor() {
|
13
|
+
this.config = input.required();
|
14
|
+
this.koMousemove = output();
|
15
|
+
this.koMousedown = output();
|
16
|
+
this.koWheel = output();
|
17
|
+
this.koClick = output();
|
18
|
+
this.koDblclick = output();
|
19
|
+
this.fields = computed(() => {
|
20
|
+
return AITable.getVisibleFields(this.config().aiTable);
|
21
|
+
});
|
22
|
+
this.coordinate = computed(() => {
|
23
|
+
return this.config()?.coordinate;
|
24
|
+
});
|
25
|
+
this.containerWidth = computed(() => {
|
26
|
+
return this.config().containerWidth;
|
27
|
+
});
|
28
|
+
this.containerHeight = computed(() => {
|
29
|
+
return this.config().containerHeight;
|
30
|
+
});
|
31
|
+
this.scrollState = computed(() => {
|
32
|
+
return this.config()?.aiTable.context.scrollState();
|
33
|
+
});
|
34
|
+
this.visibleRangeInfo = computed(() => {
|
35
|
+
return getVisibleRangeInfo(this.coordinate(), this.scrollState());
|
36
|
+
});
|
37
|
+
this.frozenAreaWidth = computed(() => {
|
38
|
+
return AI_TABLE_ROW_HEAD_WIDTH + this.coordinate().frozenColumnWidth;
|
39
|
+
});
|
40
|
+
this.lastColumnWidth = computed(() => {
|
41
|
+
return this.coordinate().getColumnWidth(this.visibleRangeInfo().columnStopIndex);
|
42
|
+
});
|
43
|
+
this.lastColumnOffset = computed(() => {
|
44
|
+
return this.coordinate().getColumnOffset(this.visibleRangeInfo().columnStopIndex);
|
45
|
+
});
|
46
|
+
this.cellGroupClipWidth = computed(() => {
|
47
|
+
const { scrollLeft } = this.scrollState();
|
48
|
+
return Math.min(this.containerWidth() - this.frozenAreaWidth(), AI_TABLE_FIELD_ADD_BUTTON_WIDTH + this.lastColumnOffset() + this.lastColumnWidth() - scrollLeft - this.frozenAreaWidth());
|
49
|
+
});
|
50
|
+
this.stageConfig = computed(() => {
|
51
|
+
const { isScrolling } = this.scrollState();
|
52
|
+
return {
|
53
|
+
width: this.containerWidth(),
|
54
|
+
height: this.containerHeight(),
|
55
|
+
listening: isScrolling ? false : true
|
56
|
+
};
|
57
|
+
});
|
58
|
+
this.gridGroupConfig = computed(() => {
|
59
|
+
return {
|
60
|
+
clipX: 0,
|
61
|
+
clipY: 0,
|
62
|
+
clipWidth: this.containerWidth(),
|
63
|
+
clipHeight: this.containerHeight()
|
64
|
+
};
|
65
|
+
});
|
66
|
+
this.commonGroupConfig = computed(() => {
|
67
|
+
return {
|
68
|
+
clipX: this.frozenAreaWidth() + 1,
|
69
|
+
clipY: 0,
|
70
|
+
clipWidth: this.cellGroupClipWidth(),
|
71
|
+
clipHeight: this.containerHeight()
|
72
|
+
};
|
73
|
+
});
|
74
|
+
this.attachGroupConfig = computed(() => {
|
75
|
+
return {
|
76
|
+
clipX: this.frozenAreaWidth() - 1,
|
77
|
+
clipY: this.coordinate().rowInitSize - 1,
|
78
|
+
clipWidth: this.containerWidth() - this.frozenAreaWidth(),
|
79
|
+
clipHeight: this.containerHeight() - this.coordinate().rowInitSize
|
80
|
+
};
|
81
|
+
});
|
82
|
+
this.frozenAttachGroupConfig = computed(() => {
|
83
|
+
return {
|
84
|
+
clipX: 0,
|
85
|
+
clipY: this.coordinate().rowInitSize - 1,
|
86
|
+
clipWidth: this.frozenAreaWidth() + 4,
|
87
|
+
clipHeight: this.containerHeight() - this.coordinate().rowInitSize
|
88
|
+
};
|
89
|
+
});
|
90
|
+
this.offsetYConfig = computed(() => {
|
91
|
+
const { scrollTop } = this.scrollState();
|
92
|
+
return {
|
93
|
+
offsetY: scrollTop
|
94
|
+
};
|
95
|
+
});
|
96
|
+
this.offsetXConfig = computed(() => {
|
97
|
+
const { scrollLeft } = this.scrollState();
|
98
|
+
return {
|
99
|
+
offsetX: scrollLeft
|
100
|
+
};
|
101
|
+
});
|
102
|
+
this.offsetConfig = computed(() => {
|
103
|
+
const { scrollLeft, scrollTop } = this.scrollState();
|
104
|
+
return {
|
105
|
+
offsetX: scrollLeft,
|
106
|
+
offsetY: scrollTop
|
107
|
+
};
|
108
|
+
});
|
109
|
+
this.columnHeadConfig = computed(() => {
|
110
|
+
const { columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
|
111
|
+
const { aiTable, coordinate } = this.config();
|
112
|
+
const { pointPosition } = aiTable.context;
|
113
|
+
const fields = this.fields();
|
114
|
+
return {
|
115
|
+
aiTable,
|
116
|
+
coordinate,
|
117
|
+
fields,
|
118
|
+
columnStartIndex,
|
119
|
+
columnStopIndex,
|
120
|
+
pointPosition: pointPosition()
|
121
|
+
};
|
122
|
+
});
|
123
|
+
this.cellsConfig = computed(() => {
|
124
|
+
const { aiTable, coordinate, references } = this.config();
|
125
|
+
const { rowStartIndex, rowStopIndex, columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
|
126
|
+
return {
|
127
|
+
aiTable,
|
128
|
+
coordinate,
|
129
|
+
references,
|
130
|
+
rowStartIndex,
|
131
|
+
rowStopIndex,
|
132
|
+
columnStartIndex,
|
133
|
+
columnStopIndex
|
134
|
+
};
|
135
|
+
});
|
136
|
+
this.activeCellBorderConfig = computed(() => {
|
137
|
+
return createActiveCellBorder(this.cellsConfig());
|
138
|
+
});
|
139
|
+
}
|
140
|
+
stageMousemove(e) {
|
141
|
+
this.koMousemove.emit(e);
|
142
|
+
}
|
143
|
+
stageMousedown(e) {
|
144
|
+
this.koMousedown.emit(e);
|
145
|
+
}
|
146
|
+
stageClick(e) {
|
147
|
+
this.koClick.emit(e);
|
148
|
+
}
|
149
|
+
stageDblclick(e) {
|
150
|
+
this.koDblclick.emit(e);
|
151
|
+
}
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadConfig()\"></ai-table-column-heads>\n <ai-table-add-field\n [coordinate]=\"coordinate()\"\n [fields]=\"fields()\"\n [columnStopIndex]=\"visibleRangeInfo().columnStopIndex\"\n ></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["coordinate", "fields", "columnStopIndex"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
154
|
+
}
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableRenderer, decorators: [{
|
156
|
+
type: Component,
|
157
|
+
args: [{ selector: 'ai-table-renderer', standalone: true, imports: [
|
158
|
+
KoContainer,
|
159
|
+
KoStage,
|
160
|
+
KoShape,
|
161
|
+
AITableIcon,
|
162
|
+
AITableFieldHead,
|
163
|
+
AITableColumnHeads,
|
164
|
+
AITableFrozenColumnHeads,
|
165
|
+
AITableCells,
|
166
|
+
AITableFrozenCells,
|
167
|
+
AITableFrozenPlaceholderCells,
|
168
|
+
AITablePlaceholderCells,
|
169
|
+
AITableAddField,
|
170
|
+
AITableHoverRowHeads,
|
171
|
+
AITableOtherRows
|
172
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadConfig()\"></ai-table-column-heads>\n <ai-table-add-field\n [coordinate]=\"coordinate()\"\n [fields]=\"fields()\"\n [columnStopIndex]=\"visibleRangeInfo().columnStopIndex\"\n ></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
|
173
|
+
}] });
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFdBQVcsRUFBaUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFL0UsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUF3QnJCLE1BQU0sT0FBTyxlQUFlO0lBdEI1QjtRQXVCSSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztRQUVqRCxnQkFBVyxHQUFHLE1BQU0sRUFBNkIsQ0FBQztRQUVsRCxnQkFB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ZUFBZSwwVkMvQzVCLHFnRkF3REEsNENEMUJRLFdBQVcsNkVBQ1gsT0FBTyw2VkFDUCxPQUFPLCtoQkFHUCxrQkFBa0Isc0ZBQ2xCLHdCQUF3Qiw2RkFDeEIsWUFBWSwrRUFDWixrQkFBa0Isc0ZBQ2xCLDZCQUE2QixrR0FDN0IsdUJBQXVCLDJGQUN2QixlQUFlLG9IQUNmLG9CQUFvQix5RkFDcEIsZ0JBQWdCOzsyRkFJWCxlQUFlO2tCQXRCM0IsU0FBUzsrQkFDSSxtQkFBbUIsY0FFakIsSUFBSSxXQUNQO3dCQUNMLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLDZCQUE2Qjt3QkFDN0IsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3FCQUNuQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgS29udmEgZnJvbSAna29udmEnO1xuaW1wb3J0IHsgU3RhZ2VDb25maWcgfSBmcm9tICdrb252YS9saWIvU3RhZ2UnO1xuaW1wb3J0IHsgS29Db250YWluZXIsIEtvRXZlbnRPYmplY3QsIEtvU2hhcGUsIEtvU3RhZ2UgfSBmcm9tICcuLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEgsIEFJX1RBQkxFX1JPV19IRUFEX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVSZW5kZXJlckNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFZpc2libGVSYW5nZUluZm8gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVBZGRGaWVsZCxcbiAgICBBSVRhYmxlQ2VsbHMsXG4gICAgQUlUYWJsZUNvbHVtbkhlYWRzLFxuICAgIEFJVGFibGVGaWVsZEhlYWQsXG4gICAgQUlUYWJsZUZyb3plbkNlbGxzLFxuICAgIEFJVGFibGVGcm96ZW5Db2x1bW5IZWFkcyxcbiAgICBBSVRhYmxlRnJvemVuUGxhY2Vob2xkZXJDZWxscyxcbiAgICBBSVRhYmxlSG92ZXJSb3dIZWFkcyxcbiAgICBBSVRhYmxlSWNvbixcbiAgICBBSVRhYmxlT3RoZXJSb3dzLFxuICAgIEFJVGFibGVQbGFjZWhvbGRlckNlbGxzXG59IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVDZWxsQm9yZGVyIH0gZnJvbSAnLi9jcmVhdGlvbnMvY3JlYXRlLWFjdGl2ZS1jZWxsLWJvcmRlcic7XG5cbktvbnZhLnBpeGVsUmF0aW8gPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLXJlbmRlcmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLb0NvbnRhaW5lcixcbiAgICAgICAgS29TdGFnZSxcbiAgICAgICAgS29TaGFwZSxcbiAgICAgICAgQUlUYWJsZUljb24sXG4gICAgICAgIEFJVGFibGVGaWVsZEhlYWQsXG4gICAgICAgIEFJVGFibGVDb2x1bW5IZWFkcyxcbiAgICAgICAgQUlUYWJsZUZyb3plbkNvbHVtbkhlYWRzLFxuICAgICAgICBBSVRhYmxlQ2VsbHMsXG4gICAgICAgIEFJVGFibGVGcm96ZW5DZWxscyxcbiAgICAgICAgQUlUYWJsZUZyb3plblBsYWNlaG9sZGVyQ2VsbHMsXG4gICAgICAgIEFJVGFibGVQbGFjZWhvbGRlckNlbGxzLFxuICAgICAgICBBSVRhYmxlQWRkRmllbGQsXG4gICAgICAgIEFJVGFibGVIb3ZlclJvd0hlYWRzLFxuICAgICAgICBBSVRhYmxlT3RoZXJSb3dzXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlUmVuZGVyZXIge1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVSZW5kZXJlckNvbmZpZz4oKTtcblxuICAgIGtvTW91c2Vtb3ZlID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb01vdXNlZG93biA9IG91dHB1dDxLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAga29XaGVlbCA9IG91dHB1dDxLb0V2ZW50T2JqZWN0PFdoZWVsRXZlbnQ+PigpO1xuXG4gICAga29DbGljayA9IG91dHB1dDxLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAga29EYmxjbGljayA9IG91dHB1dDxLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAgZmllbGRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKHRoaXMuY29uZmlnKCkuYWlUYWJsZSk7XG4gICAgfSk7XG5cbiAgICBjb29yZGluYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8uY29vcmRpbmF0ZTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmNvbnRhaW5lcldpZHRoO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVySGVpZ2h0ID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmNvbnRhaW5lckhlaWdodDtcbiAgICB9KTtcblxuICAgIHNjcm9sbFN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8uYWlUYWJsZSEuY29udGV4dCEuc2Nyb2xsU3RhdGUoKTtcbiAgICB9KTtcblxuICAgIHZpc2libGVSYW5nZUluZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBnZXRWaXNpYmxlUmFuZ2VJbmZvKHRoaXMuY29vcmRpbmF0ZSgpISwgdGhpcy5zY3JvbGxTdGF0ZSgpISk7XG4gICAgfSk7XG5cbiAgICBmcm96ZW5BcmVhV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCArIHRoaXMuY29vcmRpbmF0ZSgpIS5mcm96ZW5Db2x1bW5XaWR0aCE7XG4gICAgfSk7XG5cbiAgICBsYXN0Q29sdW1uV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKSEuZ2V0Q29sdW1uV2lkdGgodGhpcy52aXNpYmxlUmFuZ2VJbmZvKCkuY29sdW1uU3RvcEluZGV4KTtcbiAgICB9KTtcblxuICAgIGxhc3RDb2x1bW5PZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKSEuZ2V0Q29sdW1uT2Zmc2V0KHRoaXMudmlzaWJsZVJhbmdlSW5mbygpLmNvbHVtblN0b3BJbmRleCk7XG4gICAgfSk7XG5cbiAgICBjZWxsR3JvdXBDbGlwV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCB9ID0gdGhpcy5zY3JvbGxTdGF0ZSgpITtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCgpIC0gdGhpcy5mcm96ZW5BcmVhV2lkdGgoKSxcbiAgICAgICAgICAgIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEggKyB0aGlzLmxhc3RDb2x1bW5PZmZzZXQoKSArIHRoaXMubGFzdENvbHVtbldpZHRoKCkgLSBzY3JvbGxMZWZ0IC0gdGhpcy5mcm96ZW5BcmVhV2lkdGgoKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgc3RhZ2VDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGlzU2Nyb2xsaW5nIH0gPSB0aGlzLnNjcm9sbFN0YXRlKCkhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29udGFpbmVyV2lkdGgoKSxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHQoKSxcbiAgICAgICAgICAgIGxpc3RlbmluZzogaXNTY3JvbGxpbmcgPyBmYWxzZSA6IHRydWVcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGdyaWRHcm91cENvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGlwWDogMCxcbiAgICAgICAgICAgIGNsaXBZOiAwLFxuICAgICAgICAgICAgY2xpcFdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoKCksXG4gICAgICAgICAgICBjbGlwSGVpZ2h0OiB0aGlzLmNvbnRhaW5lckhlaWdodCgpXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb21tb25Hcm91cENvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGlwWDogdGhpcy5mcm96ZW5BcmVhV2lkdGgoKSArIDEsXG4gICAgICAgICAgICBjbGlwWTogMCxcbiAgICAgICAgICAgIGNsaXBXaWR0aDogdGhpcy5jZWxsR3JvdXBDbGlwV2lkdGgoKSxcbiAgICAgICAgICAgIGNsaXBIZWlnaHQ6IHRoaXMuY29udGFpbmVySGVpZ2h0KClcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGF0dGFjaEdyb3VwQ29uZmlnID0gY29tcHV0ZWQ8UGFydGlhbDxTdGFnZUNvbmZpZz4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaXBYOiB0aGlzLmZyb3plbkFyZWFXaWR0aCgpIC0gMSxcbiAgICAgICAgICAgIGNsaXBZOiB0aGlzLmNvb3JkaW5hdGUoKSEucm93SW5pdFNpemUgLSAxLFxuICAgICAgICAgICAgY2xpcFdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoKCkgLSB0aGlzLmZyb3plbkFyZWFXaWR0aCgpLFxuICAgICAgICAgICAgY2xpcEhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHQoKSAtIHRoaXMuY29vcmRpbmF0ZSgpIS5yb3dJbml0U2l6ZVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgZnJvemVuQXR0YWNoR3JvdXBDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpcFg6IDAsXG4gICAgICAgICAgICBjbGlwWTogdGhpcy5jb29yZGluYXRlKCkhLnJvd0luaXRTaXplIC0gMSxcbiAgICAgICAgICAgIGNsaXBXaWR0aDogdGhpcy5mcm96ZW5BcmVhV2lkdGgoKSArIDQsXG4gICAgICAgICAgICBjbGlwSGVpZ2h0OiB0aGlzLmNvbnRhaW5lckhlaWdodCgpIC0gdGhpcy5jb29yZGluYXRlKCkhLnJvd0luaXRTaXplXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBvZmZzZXRZQ29uZmlnID0gY29tcHV0ZWQ8UGFydGlhbDxTdGFnZUNvbmZpZz4+KCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AgfSA9IHRoaXMuc2Nyb2xsU3RhdGUoKSE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvZmZzZXRZOiBzY3JvbGxUb3BcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIG9mZnNldFhDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IHRoaXMuc2Nyb2xsU3RhdGUoKSE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvZmZzZXRYOiBzY3JvbGxMZWZ0XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBvZmZzZXRDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gdGhpcy5zY3JvbGxTdGF0ZSgpITtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9mZnNldFg6IHNjcm9sbExlZnQsXG4gICAgICAgICAgICBvZmZzZXRZOiBzY3JvbGxUb3BcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbHVtbkhlYWRDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29sdW1uU3RhcnRJbmRleCwgY29sdW1uU3RvcEluZGV4IH0gPSB0aGlzLnZpc2libGVSYW5nZUluZm8oKTtcbiAgICAgICAgY29uc3QgeyBhaVRhYmxlLCBjb29yZGluYXRlIH0gPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBjb25zdCB7IHBvaW50UG9zaXRpb24gfSA9IGFpVGFibGUuY29udGV4dCE7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAgY29vcmRpbmF0ZSxcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIGNvbHVtblN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBjb2x1bW5TdG9wSW5kZXgsXG4gICAgICAgICAgICBwb2ludFBvc2l0aW9uOiBwb2ludFBvc2l0aW9uKClcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNlbGxzQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGFpVGFibGUsIGNvb3JkaW5hdGUsIHJlZmVyZW5jZXMgfSA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGNvbnN0IHsgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5TdG9wSW5kZXggfSA9IHRoaXMudmlzaWJsZVJhbmdlSW5mbygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIGNvb3JkaW5hdGUsXG4gICAgICAgICAgICByZWZlcmVuY2VzLFxuICAgICAgICAgICAgcm93U3RhcnRJbmRleCxcbiAgICAgICAgICAgIHJvd1N0b3BJbmRleCxcbiAgICAgICAgICAgIGNvbHVtblN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBjb2x1bW5TdG9wSW5kZXhcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGFjdGl2ZUNlbGxCb3JkZXJDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBY3RpdmVDZWxsQm9yZGVyKHRoaXMuY2VsbHNDb25maWcoKSk7XG4gICAgfSk7XG5cbiAgICBzdGFnZU1vdXNlbW92ZShlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMua29Nb3VzZW1vdmUuZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlTW91c2Vkb3duKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgdGhpcy5rb01vdXNlZG93bi5lbWl0KGUgYXMgS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pik7XG4gICAgfVxuXG4gICAgc3RhZ2VDbGljayhlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMua29DbGljay5lbWl0KGUgYXMgS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pik7XG4gICAgfVxuXG4gICAgc3RhZ2VEYmxjbGljayhlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMua29EYmxjbGljay5lbWl0KGUgYXMgS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pik7XG4gICAgfVxufVxuIiwiPGtvLXN0YWdlXG4gICAgW2NvbmZpZ109XCJzdGFnZUNvbmZpZygpXCJcbiAgICAoa29Nb3VzZW1vdmUpPVwic3RhZ2VNb3VzZW1vdmUoJGV2ZW50KVwiXG4gICAgKGtvTW91c2Vkb3duKT1cInN0YWdlTW91c2Vkb3duKCRldmVudClcIlxuICAgIChrb0NsaWNrKT1cInN0YWdlQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtvRGJsY2xpY2spPVwic3RhZ2VEYmxjbGljaygkZXZlbnQpXCJcbj5cbiAgICA8a28tbGF5ZXI+XG4gICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cImdyaWRHcm91cENvbmZpZygpXCI+XG4gICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJvZmZzZXRZQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICA8YWktdGFibGUtZnJvemVuLWNlbGxzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtZnJvemVuLWNlbGxzPlxuICAgICAgICAgICAgICAgIDxhaS10YWJsZS1vdGhlci1yb3dzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtb3RoZXItcm93cz5cbiAgICAgICAgICAgICAgICA8YWktdGFibGUtaG92ZXItcm93LWhlYWRzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtaG92ZXItcm93LWhlYWRzPlxuICAgICAgICAgICAgICAgIDxhaS10YWJsZS1mcm96ZW4tcGxhY2Vob2xkZXItY2VsbHMgW2NvbmZpZ109XCJjZWxsc0NvbmZpZygpXCI+PC9haS10YWJsZS1mcm96ZW4tcGxhY2Vob2xkZXItY2VsbHM+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuXG4gICAgICAgICAgICA8a28tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGFpLXRhYmxlLWZyb3plbi1jb2x1bW4taGVhZHMgW2NvbmZpZ109XCJjb2x1bW5IZWFkQ29uZmlnKClcIj48L2FpLXRhYmxlLWZyb3plbi1jb2x1bW4taGVhZHM+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuXG4gICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJjb21tb25Hcm91cENvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwib2Zmc2V0Q29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFpLXRhYmxlLWNlbGxzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtY2VsbHM+XG4gICAgICAgICAgICAgICAgPC9rby1ncm91cD5cblxuICAgICAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cIm9mZnNldFhDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtY29sdW1uLWhlYWRzIFtjb25maWddPVwiY29sdW1uSGVhZENvbmZpZygpXCI+PC9haS10YWJsZS1jb2x1bW4taGVhZHM+XG4gICAgICAgICAgICAgICAgICAgIDxhaS10YWJsZS1hZGQtZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb29yZGluYXRlXT1cImNvb3JkaW5hdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5TdG9wSW5kZXhdPVwidmlzaWJsZVJhbmdlSW5mbygpLmNvbHVtblN0b3BJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FpLXRhYmxlLWFkZC1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2tvLWdyb3VwPlxuICAgICAgICAgICAgPC9rby1ncm91cD5cblxuICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwiYXR0YWNoR3JvdXBDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cIm9mZnNldENvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhaS10YWJsZS1wbGFjZWhvbGRlci1jZWxscyBbY29uZmlnXT1cImNlbGxzQ29uZmlnKClcIj48L2FpLXRhYmxlLXBsYWNlaG9sZGVyLWNlbGxzPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUNlbGxCb3JkZXJDb25maWcoKS5hY3RpdmVDZWxsQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8a28tcmVjdCBbY29uZmlnXT1cImFjdGl2ZUNlbGxCb3JkZXJDb25maWcoKS5hY3RpdmVDZWxsQm9yZGVyIVwiPjwva28tcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuXG4gICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJmcm96ZW5BdHRhY2hHcm91cENvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwib2Zmc2V0WUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlQ2VsbEJvcmRlckNvbmZpZygpLmZyb3plbkFjdGl2ZUNlbGxCb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxrby1yZWN0IFtjb25maWddPVwiYWN0aXZlQ2VsbEJvcmRlckNvbmZpZygpLmZyb3plbkFjdGl2ZUNlbGxCb3JkZXIhXCI+PC9rby1yZWN0PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9rby1ncm91cD5cbiAgICAgICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgIDwva28tZ3JvdXA+XG4gICAgPC9rby1sYXllcj5cbjwva28tc3RhZ2U+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|