@ai-table/grid 0.0.73 → 0.1.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/angular-konva/components/container.component.d.ts.map +1 -1
- package/angular-konva/components/shape.component.d.ts.map +1 -1
- package/angular-konva/components/stage.component.d.ts.map +1 -1
- package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
- 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.map +1 -1
- package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
- package/components/cell-editors/number/number-editor.component.d.ts.map +1 -1
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -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/context-menu/context-menu.component.d.ts.map +1 -1
- package/components/drag/drag.component.d.ts.map +1 -1
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-setting/field-setting.component.d.ts.map +1 -1
- package/core/context.d.ts +2 -0
- package/core/context.d.ts.map +1 -1
- package/core/types/ai-table.d.ts.map +1 -1
- package/core/utils/field.d.ts.map +1 -1
- package/core/utils/queries.d.ts.map +1 -1
- package/core/utils/short-id.d.ts.map +1 -1
- package/dom-grid.component.d.ts.map +1 -1
- package/fesm2022/ai-table-grid.mjs +322 -310
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid-base.component.d.ts +3 -1
- package/grid-base.component.d.ts.map +1 -1
- package/grid.component.d.ts +1 -1
- package/grid.component.d.ts.map +1 -1
- package/package.json +3 -5
- package/pipes/grid.pipe.d.ts.map +1 -1
- package/renderer/components/action-icon.component.d.ts.map +1 -1
- package/renderer/components/add-field-column.component.d.ts.map +1 -1
- package/renderer/components/cells/attachment.component.d.ts.map +1 -1
- package/renderer/components/cells/link.component.d.ts.map +1 -1
- package/renderer/components/cells/progress.component.d.ts.map +1 -1
- package/renderer/components/cells/rate.component.d.ts.map +1 -1
- package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
- package/renderer/components/cells.component.d.ts.map +1 -1
- package/renderer/components/field-head.component.d.ts +2 -2
- package/renderer/components/field-head.component.d.ts.map +1 -1
- package/renderer/components/field-icon.component.d.ts.map +1 -1
- package/renderer/components/frozen-cells.component.d.ts.map +1 -1
- package/renderer/components/frozen-heads.component.d.ts +1 -1
- package/renderer/components/frozen-heads.component.d.ts.map +1 -1
- package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -1
- package/renderer/components/heads.component.d.ts +1 -1
- package/renderer/components/heads.component.d.ts.map +1 -1
- package/renderer/components/hover-cell.component.d.ts.map +1 -1
- package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
- package/renderer/components/icon.component.d.ts.map +1 -1
- package/renderer/components/other-rows.component.d.ts.map +1 -1
- package/renderer/components/placeholder-cells.component.d.ts.map +1 -1
- package/renderer/components/text.component.d.ts.map +1 -1
- package/renderer/creations/create-active-cell-border.d.ts.map +1 -1
- package/renderer/creations/create-cells.d.ts.map +1 -1
- package/renderer/creations/create-heads.d.ts.map +1 -1
- package/renderer/drawers/add-row-layout-drawer.d.ts +1 -1
- package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
- package/renderer/drawers/cell-drawer.d.ts.map +1 -1
- package/renderer/drawers/drawer.d.ts +1 -1
- package/renderer/renderer.component.d.ts +5 -4
- package/renderer/renderer.component.d.ts.map +1 -1
- package/types/cell.d.ts +2 -0
- package/types/cell.d.ts.map +1 -1
- package/types/component-config.d.ts +2 -0
- package/types/component-config.d.ts.map +1 -1
- package/types/grid.d.ts +4 -0
- package/types/grid.d.ts.map +1 -1
- package/types/row.d.ts +1 -0
- package/types/row.d.ts.map +1 -1
- package/utils/build.d.ts.map +1 -1
- package/utils/clipboard/clipboard.d.ts.map +1 -1
- package/utils/clipboard/copy.d.ts.map +1 -1
- package/utils/clipboard/paste.d.ts +5 -1
- package/utils/clipboard/paste.d.ts.map +1 -1
- package/utils/common.d.ts.map +1 -1
- package/utils/field/model/date.d.ts.map +1 -1
- package/utils/field/model/link.d.ts.map +1 -1
- package/utils/field/model/progress.d.ts.map +1 -1
- package/utils/field/model/text.d.ts.map +1 -1
- package/utils/get-text-width.d.ts.map +1 -1
- package/utils/i18n.d.ts +2 -0
- package/utils/i18n.d.ts.map +1 -1
- package/utils/match-keywords.d.ts.map +1 -1
- package/utils/position.d.ts.map +1 -1
- package/utils/style.d.ts.map +1 -1
- package/utils/text-measure.d.ts.map +1 -1
- package/utils/visible-range.d.ts.map +1 -1
- package/esm2022/ai-table-grid.mjs +0 -5
- package/esm2022/angular-konva/components/container.component.mjs +0 -29
- package/esm2022/angular-konva/components/container.token.mjs +0 -3
- package/esm2022/angular-konva/components/index.mjs +0 -4
- package/esm2022/angular-konva/components/shape.component.mjs +0 -142
- package/esm2022/angular-konva/components/stage.component.mjs +0 -123
- package/esm2022/angular-konva/index.mjs +0 -5
- package/esm2022/angular-konva/interfaces/component.mjs +0 -4
- package/esm2022/angular-konva/interfaces/config.mjs +0 -2
- package/esm2022/angular-konva/interfaces/event-object.mjs +0 -2
- package/esm2022/angular-konva/interfaces/index.mjs +0 -5
- package/esm2022/angular-konva/interfaces/shape.mjs +0 -42
- package/esm2022/angular-konva/utils/apply-node-props.mjs +0 -67
- package/esm2022/angular-konva/utils/common.mjs +0 -48
- package/esm2022/angular-konva/utils/index.mjs +0 -5
- package/esm2022/angular-konva/utils/types.mjs +0 -2
- package/esm2022/angular-konva/utils/update-picture.mjs +0 -7
- package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +0 -56
- package/esm2022/components/cell-editors/date/date-editor.component.mjs +0 -87
- package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +0 -81
- package/esm2022/components/cell-editors/link/link-editor.component.mjs +0 -122
- package/esm2022/components/cell-editors/number/number-editor.component.mjs +0 -41
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +0 -74
- package/esm2022/components/cell-editors/text/text-editor.component.mjs +0 -76
- package/esm2022/components/cell-views/select/option.component.mjs +0 -28
- package/esm2022/components/context-menu/context-menu.component.mjs +0 -42
- package/esm2022/components/drag/drag.component.mjs +0 -300
- package/esm2022/components/field-menu/field-menu.component.mjs +0 -47
- package/esm2022/components/field-setting/field-setting.component.mjs +0 -142
- package/esm2022/components/index.mjs +0 -10
- package/esm2022/constants/colors.mjs +0 -19
- package/esm2022/constants/editor.mjs +0 -11
- package/esm2022/constants/file-icon.mjs +0 -342
- package/esm2022/constants/grid.mjs +0 -35
- package/esm2022/constants/icon.mjs +0 -30
- package/esm2022/constants/index.mjs +0 -7
- package/esm2022/constants/table.mjs +0 -78
- package/esm2022/constants/text.mjs +0 -23
- package/esm2022/core/constants/field.mjs +0 -107
- package/esm2022/core/context.mjs +0 -29
- package/esm2022/core/coordinate.mjs +0 -222
- package/esm2022/core/index.mjs +0 -6
- package/esm2022/core/types/ai-table.mjs +0 -57
- package/esm2022/core/types/core.mjs +0 -2
- package/esm2022/core/types/index.mjs +0 -3
- package/esm2022/core/utils/common.mjs +0 -45
- package/esm2022/core/utils/field.mjs +0 -64
- package/esm2022/core/utils/id-creator.mjs +0 -21
- package/esm2022/core/utils/index.mjs +0 -5
- package/esm2022/core/utils/queries.mjs +0 -80
- package/esm2022/core/utils/short-id.mjs +0 -53
- package/esm2022/dom-grid.component.mjs +0 -80
- package/esm2022/grid-base.component.mjs +0 -145
- package/esm2022/grid.component.mjs +0 -649
- package/esm2022/index.mjs +0 -2
- package/esm2022/pipes/grid.pipe.mjs +0 -110
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/public-api.mjs +0 -12
- package/esm2022/renderer/components/action-icon.component.mjs +0 -117
- package/esm2022/renderer/components/add-field-column.component.mjs +0 -88
- package/esm2022/renderer/components/cells/attachment.component.mjs +0 -107
- package/esm2022/renderer/components/cells/cells.mjs +0 -6
- package/esm2022/renderer/components/cells/index.mjs +0 -7
- package/esm2022/renderer/components/cells/link.component.mjs +0 -89
- package/esm2022/renderer/components/cells/progress.component.mjs +0 -268
- package/esm2022/renderer/components/cells/rate.component.mjs +0 -153
- package/esm2022/renderer/components/cells/rich-text.component.mjs +0 -95
- package/esm2022/renderer/components/cells.component.mjs +0 -35
- package/esm2022/renderer/components/field-head.component.mjs +0 -146
- package/esm2022/renderer/components/field-icon.component.mjs +0 -72
- package/esm2022/renderer/components/frozen-cells.component.mjs +0 -36
- package/esm2022/renderer/components/frozen-heads.component.mjs +0 -214
- package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +0 -38
- package/esm2022/renderer/components/heads.component.mjs +0 -38
- package/esm2022/renderer/components/hover-cell.component.mjs +0 -104
- package/esm2022/renderer/components/hover-row-heads.component.mjs +0 -132
- package/esm2022/renderer/components/icon.component.mjs +0 -84
- package/esm2022/renderer/components/index.mjs +0 -15
- package/esm2022/renderer/components/other-rows.component.mjs +0 -68
- package/esm2022/renderer/components/placeholder-cells.component.mjs +0 -33
- package/esm2022/renderer/components/text.component.mjs +0 -67
- package/esm2022/renderer/creations/create-active-cell-border.mjs +0 -70
- package/esm2022/renderer/creations/create-cells.mjs +0 -190
- package/esm2022/renderer/creations/create-heads.mjs +0 -51
- package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +0 -98
- package/esm2022/renderer/drawers/cell-drawer.mjs +0 -673
- package/esm2022/renderer/drawers/drawer.mjs +0 -947
- package/esm2022/renderer/drawers/layout-drawer.mjs +0 -64
- package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +0 -131
- package/esm2022/renderer/index.mjs +0 -4
- package/esm2022/renderer/interfaces/hover-cell.mjs +0 -4
- package/esm2022/renderer/interfaces/index.mjs +0 -2
- package/esm2022/renderer/renderer.component.mjs +0 -197
- package/esm2022/services/event.service.mjs +0 -241
- package/esm2022/services/field.service.mjs +0 -56
- package/esm2022/services/index.mjs +0 -4
- package/esm2022/services/selection.service.mjs +0 -151
- package/esm2022/types/avatar.mjs +0 -27
- package/esm2022/types/canvas.mjs +0 -2
- package/esm2022/types/cell.mjs +0 -2
- package/esm2022/types/clipboard.mjs +0 -2
- package/esm2022/types/component-config.mjs +0 -7
- package/esm2022/types/field.mjs +0 -2
- package/esm2022/types/grid.mjs +0 -17
- package/esm2022/types/index.mjs +0 -10
- package/esm2022/types/layout.mjs +0 -2
- package/esm2022/types/row.mjs +0 -6
- package/esm2022/utils/build.mjs +0 -39
- package/esm2022/utils/cell.mjs +0 -80
- package/esm2022/utils/clear-cells.mjs +0 -23
- package/esm2022/utils/clipboard/clipboard.mjs +0 -88
- package/esm2022/utils/clipboard/copy.mjs +0 -99
- package/esm2022/utils/clipboard/extract.mjs +0 -38
- package/esm2022/utils/clipboard/index.mjs +0 -5
- package/esm2022/utils/clipboard/paste.mjs +0 -188
- package/esm2022/utils/common.mjs +0 -50
- package/esm2022/utils/field/field-operable.mjs +0 -2
- package/esm2022/utils/field/field.mjs +0 -20
- package/esm2022/utils/field/index.mjs +0 -4
- package/esm2022/utils/field/model/attachment.mjs +0 -56
- package/esm2022/utils/field/model/date.mjs +0 -141
- package/esm2022/utils/field/model/index.mjs +0 -12
- package/esm2022/utils/field/model/link.mjs +0 -56
- package/esm2022/utils/field/model/member.mjs +0 -81
- package/esm2022/utils/field/model/number.mjs +0 -59
- package/esm2022/utils/field/model/progress.mjs +0 -69
- package/esm2022/utils/field/model/rate.mjs +0 -58
- package/esm2022/utils/field/model/rich-text.mjs +0 -39
- package/esm2022/utils/field/model/select.mjs +0 -131
- package/esm2022/utils/field/model/text.mjs +0 -32
- package/esm2022/utils/field/operate.mjs +0 -73
- package/esm2022/utils/file.mjs +0 -116
- package/esm2022/utils/get-placeholder-cells.mjs +0 -66
- package/esm2022/utils/get-text-width.mjs +0 -30
- package/esm2022/utils/hover-cell.mjs +0 -25
- package/esm2022/utils/i18n.mjs +0 -87
- package/esm2022/utils/image-cache.mjs +0 -57
- package/esm2022/utils/index.mjs +0 -19
- package/esm2022/utils/match-keywords.mjs +0 -15
- package/esm2022/utils/os.mjs +0 -16
- package/esm2022/utils/position.mjs +0 -48
- package/esm2022/utils/style.mjs +0 -37
- package/esm2022/utils/text-measure.mjs +0 -122
- package/esm2022/utils/visible-range.mjs +0 -42
@@ -1,89 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
2
|
-
import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, Colors } from '../../../constants';
|
3
|
-
import { AITable, getMousePosition, handleMouseStyle } from '../../../utils';
|
4
|
-
import { AITableText } from '../text.component';
|
5
|
-
import { AITableFieldType } from '@ai-table/utils';
|
6
|
-
import { drawer } from '../../drawers/drawer';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
export class AITableCellLink {
|
9
|
-
constructor() {
|
10
|
-
this.config = input();
|
11
|
-
this.textOffset = AI_TABLE_CELL_PADDING + AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE;
|
12
|
-
this.render = computed(() => this.config()?.render);
|
13
|
-
this.transformValue = computed(() => this.render()?.transformValue);
|
14
|
-
this.showLink = computed(() => !!this.transformValue()?.text);
|
15
|
-
this.textConfig = computed(() => {
|
16
|
-
const render = this.config()?.render;
|
17
|
-
if (render) {
|
18
|
-
const { x, y, transformValue, columnWidth, rowHeight, style, zIndex } = render;
|
19
|
-
let textRender = transformValue.text;
|
20
|
-
if (textRender == null) {
|
21
|
-
return;
|
22
|
-
}
|
23
|
-
textRender = textRender.replace(/\r|\n/g, ' ');
|
24
|
-
const fontWeight = style?.fontWeight;
|
25
|
-
const textMaxWidth = columnWidth - 2 * AI_TABLE_CELL_PADDING;
|
26
|
-
const { text, textWidth } = drawer.textEllipsis({
|
27
|
-
text: textRender,
|
28
|
-
maxWidth: textMaxWidth,
|
29
|
-
fontWeight
|
30
|
-
});
|
31
|
-
return {
|
32
|
-
x,
|
33
|
-
y,
|
34
|
-
text,
|
35
|
-
wrap: 'none',
|
36
|
-
width: textWidth,
|
37
|
-
fillStyle: Colors.primary,
|
38
|
-
fill: Colors.primary,
|
39
|
-
height: rowHeight + 2,
|
40
|
-
lineHeight: 1.84,
|
41
|
-
listening: true,
|
42
|
-
ellipsis: true,
|
43
|
-
textDecoration: 'underline',
|
44
|
-
zIndex
|
45
|
-
};
|
46
|
-
}
|
47
|
-
return;
|
48
|
-
});
|
49
|
-
}
|
50
|
-
static { this.fieldType = AITableFieldType.link; }
|
51
|
-
linkClick(e) {
|
52
|
-
e.event.cancelBubble = true;
|
53
|
-
window.open(this.transformValue().url, '_blank', 'noopener,noreferrer');
|
54
|
-
}
|
55
|
-
linkMouseMove(e) {
|
56
|
-
e.event.cancelBubble = true;
|
57
|
-
const { aiTable, coordinate } = this.config();
|
58
|
-
const targetName = e.event.target.name();
|
59
|
-
const gridStage = e.event.currentTarget.getStage();
|
60
|
-
const pos = gridStage?.getPointerPosition();
|
61
|
-
if (pos == null)
|
62
|
-
return;
|
63
|
-
const { context } = aiTable;
|
64
|
-
const { x, y } = pos;
|
65
|
-
const curMousePosition = getMousePosition(aiTable, x, y, coordinate, AITable.getVisibleFields(aiTable), context, targetName);
|
66
|
-
handleMouseStyle(AI_TABLE_FIELD_HEAD_MORE, curMousePosition.areaType, coordinate.container);
|
67
|
-
}
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellLink, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
69
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableCellLink, isStandalone: true, selector: "ai-table-link", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
70
|
-
@if (showLink()) {
|
71
|
-
<ai-table-text [config]="textConfig()!" (koClick)="linkClick($event)" (koMouseMove)="linkMouseMove($event)"></ai-table-text>
|
72
|
-
}
|
73
|
-
`, isInline: true, dependencies: [{ kind: "component", type: AITableText, selector: "ai-table-text", inputs: ["config"], outputs: ["koClick", "koMouseMove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
74
|
-
}
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellLink, decorators: [{
|
76
|
-
type: Component,
|
77
|
-
args: [{
|
78
|
-
selector: 'ai-table-link',
|
79
|
-
template: `
|
80
|
-
@if (showLink()) {
|
81
|
-
<ai-table-text [config]="textConfig()!" (koClick)="linkClick($event)" (koMouseMove)="linkMouseMove($event)"></ai-table-text>
|
82
|
-
}
|
83
|
-
`,
|
84
|
-
standalone: true,
|
85
|
-
imports: [AITableText],
|
86
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
87
|
-
}]
|
88
|
-
}] });
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUNBQWlDLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBYzlDLE1BQU0sT0FBTyxlQUFlO0lBWDVCO1FBY0ksV0FBTSxHQUFHLEtBQUssRUFBc0MsQ0FBQztRQUVyRCxlQUFVLEdBQUcscUJBQXFCLEdBQUcsaUNBQWlDLENBQUM7UUFFdkUsV0FBTSxHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLG1CQUFjLEdBQUcsUUFBUSxDQUFnQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUYsYUFBUSxHQUFHLFFBQVEsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxFLGVBQVUsR0FBRyxRQUFRLENB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RyxDQUFDOytHQWxFUSxlQUFlO21HQUFmLGVBQWUsZ05BVGQ7Ozs7S0FJVCw0REFFUyxXQUFXOzs0RkFHWixlQUFlO2tCQVgzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFJX1RBQkxFX0NFTExfUEFERElORywgQUlfVEFCTEVfRklFTERfSEVBRF9JQ09OX0dBUF9TSVpFLCBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkUsIENvbG9ycyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlLCBnZXRNb3VzZVBvc2l0aW9uLCBoYW5kbGVNb3VzZVN0eWxlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZVRleHQgfSBmcm9tICcuLi90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlSG92ZXJDZWxsQ29uZmlnLCBBSVRhYmxlUmVuZGVyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgS29FdmVudE9iamVjdCB9IGZyb20gJy4uLy4uLy4uL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkVHlwZSB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBUZXh0Q29uZmlnIH0gZnJvbSAna29udmEvbGliL3NoYXBlcy9UZXh0JztcbmltcG9ydCB7IGRyYXdlciB9IGZyb20gJy4uLy4uL2RyYXdlcnMvZHJhd2VyJztcbmltcG9ydCB7IEhvdmVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWxpbmsnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoc2hvd0xpbmsoKSkge1xuICAgICAgICAgICAgPGFpLXRhYmxlLXRleHQgW2NvbmZpZ109XCJ0ZXh0Q29uZmlnKCkhXCIgKGtvQ2xpY2spPVwibGlua0NsaWNrKCRldmVudClcIiAoa29Nb3VzZU1vdmUpPVwibGlua01vdXNlTW92ZSgkZXZlbnQpXCI+PC9haS10YWJsZS10ZXh0PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtBSVRhYmxlVGV4dF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUNlbGxMaW5rIGltcGxlbWVudHMgSG92ZXJDZWxsQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgZmllbGRUeXBlID0gQUlUYWJsZUZpZWxkVHlwZS5saW5rO1xuXG4gICAgY29uZmlnID0gaW5wdXQ8QUlUYWJsZUhvdmVyQ2VsbENvbmZpZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIHRleHRPZmZzZXQgPSBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBBSV9UQUJMRV9GSUVMRF9IRUFEX0lDT05fR0FQX1NJWkU7XG5cbiAgICByZW5kZXIgPSBjb21wdXRlZDxBSVRhYmxlUmVuZGVyIHwgdW5kZWZpbmVkPigoKSA9PiB0aGlzLmNvbmZpZygpPy5yZW5kZXIpO1xuXG4gICAgdHJhbnNmb3JtVmFsdWUgPSBjb21wdXRlZDx7IHRleHQ6IHN0cmluZzsgdXJsOiBzdHJpbmcgfT4oKCkgPT4gdGhpcy5yZW5kZXIoKT8udHJhbnNmb3JtVmFsdWUpO1xuXG4gICAgc2hvd0xpbmsgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiAhIXRoaXMudHJhbnNmb3JtVmFsdWUoKT8udGV4dCk7XG5cbiAgICB0ZXh0Q29uZmlnID0gY29tcHV0ZWQ8VGV4dENvbmZpZyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCByZW5kZXIgPSB0aGlzLmNvbmZpZygpPy5yZW5kZXI7XG4gICAgICAgIGlmIChyZW5kZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgeSwgdHJhbnNmb3JtVmFsdWUsIGNvbHVtbldpZHRoLCByb3dIZWlnaHQsIHN0eWxlLCB6SW5kZXggfSA9IHJlbmRlcjtcbiAgICAgICAgICAgIGxldCB0ZXh0UmVuZGVyOiBzdHJpbmcgfCBudWxsID0gdHJhbnNmb3JtVmFsdWUudGV4dDtcbiAgICAgICAgICAgIGlmICh0ZXh0UmVuZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRleHRSZW5kZXIgPSB0ZXh0UmVuZGVyLnJlcGxhY2UoL1xccnxcXG4vZywgJyAnKTtcbiAgICAgICAgICAgIGNvbnN0IGZvbnRXZWlnaHQgPSBzdHlsZT8uZm9udFdlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHRleHRNYXhXaWR0aCA9IGNvbHVtbldpZHRoIC0gMiAqIEFJX1RBQkxFX0NFTExfUEFERElORztcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dCwgdGV4dFdpZHRoIH0gPSBkcmF3ZXIudGV4dEVsbGlwc2lzKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0UmVuZGVyLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiB0ZXh0TWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgICAgd3JhcDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0ZXh0V2lkdGgsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBDb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgICAgICBmaWxsOiBDb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJvd0hlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogMS44NCxcbiAgICAgICAgICAgICAgICBsaXN0ZW5pbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgZWxsaXBzaXM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgICAgICAgICAgICAgIHpJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSk7XG5cbiAgICBsaW5rQ2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBlLmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMudHJhbnNmb3JtVmFsdWUoKS51cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICAgIH1cblxuICAgIGxpbmtNb3VzZU1vdmUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBlLmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHsgYWlUYWJsZSwgY29vcmRpbmF0ZSB9ID0gdGhpcy5jb25maWcoKSE7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSBlLmV2ZW50LnRhcmdldC5uYW1lKCk7XG4gICAgICAgIGNvbnN0IGdyaWRTdGFnZSA9IGUuZXZlbnQuY3VycmVudFRhcmdldC5nZXRTdGFnZSgpO1xuICAgICAgICBjb25zdCBwb3MgPSBncmlkU3RhZ2U/LmdldFBvaW50ZXJQb3NpdGlvbigpO1xuICAgICAgICBpZiAocG9zID09IG51bGwpIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSBhaVRhYmxlO1xuICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHBvcztcbiAgICAgICAgY29uc3QgY3VyTW91c2VQb3NpdGlvbiA9IGdldE1vdXNlUG9zaXRpb24oYWlUYWJsZSwgeCwgeSwgY29vcmRpbmF0ZSwgQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKGFpVGFibGUpLCBjb250ZXh0ISwgdGFyZ2V0TmFtZSk7XG4gICAgICAgIGhhbmRsZU1vdXNlU3R5bGUoQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFLCBjdXJNb3VzZVBvc2l0aW9uLmFyZWFUeXBlLCBjb29yZGluYXRlLmNvbnRhaW5lcik7XG4gICAgfVxufVxuIl19
|
@@ -1,268 +0,0 @@
|
|
1
|
-
import { Component, computed, input, signal } from '@angular/core';
|
2
|
-
import { ChangeDetectionStrategy } from '@angular/core';
|
3
|
-
import { KoShape } from '../../../angular-konva';
|
4
|
-
import { AITableFieldType } from '@ai-table/utils';
|
5
|
-
import { generateTargetName } from '../../../utils';
|
6
|
-
import { isActiveCell } from '../../../renderer';
|
7
|
-
import { Colors, AI_TABLE_CELL_PADDING, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_CELL, AI_TABLE_CELL_BORDER, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT, AI_TABLE_TEXT_GAP, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_TEXT_FILL } from '../../../constants';
|
8
|
-
import { isNil } from 'lodash';
|
9
|
-
import * as i0 from "@angular/core";
|
10
|
-
export class AITableCellProgress {
|
11
|
-
constructor() {
|
12
|
-
this.config = input();
|
13
|
-
this.readonly = computed(() => {
|
14
|
-
return this.config()?.readonly;
|
15
|
-
});
|
16
|
-
this.dragPointerX = signal(null);
|
17
|
-
this.railWidth = computed(() => {
|
18
|
-
const { columnWidth } = this.config().render;
|
19
|
-
return columnWidth - 2 * AI_TABLE_CELL_PADDING - AI_TABLE_PROGRESS_TEXT_WIDTH;
|
20
|
-
});
|
21
|
-
this.trackWidth = computed(() => {
|
22
|
-
return (this.progressValue() / 100) * this.railWidth();
|
23
|
-
});
|
24
|
-
this.pointerWidth = AI_TABLE_PROGRESS_BAR_POINTER_WIDTH;
|
25
|
-
this.progressOffsetY = (AI_TABLE_ROW_BLANK_HEIGHT - AI_TABLE_PROGRESS_BAR_HEIGHT) / 2 + AI_TABLE_OFFSET;
|
26
|
-
this.dragProgressValue = signal(null);
|
27
|
-
this.progressValue = computed(() => {
|
28
|
-
const dragValue = this.dragProgressValue();
|
29
|
-
if (dragValue !== null) {
|
30
|
-
return dragValue;
|
31
|
-
}
|
32
|
-
const { render } = this.config();
|
33
|
-
const { transformValue } = render;
|
34
|
-
if (isNil(transformValue)) {
|
35
|
-
return 0;
|
36
|
-
}
|
37
|
-
return transformValue;
|
38
|
-
});
|
39
|
-
this.whiteBgConfig = computed(() => {
|
40
|
-
const { aiTable, render, field, recordId, coordinate } = this.config();
|
41
|
-
const pointPosition = aiTable.context.pointPosition();
|
42
|
-
const { x, y } = render;
|
43
|
-
const { columnIndex } = pointPosition;
|
44
|
-
const isActive = isActiveCell([recordId, field._id], aiTable);
|
45
|
-
return {
|
46
|
-
x: x - AI_TABLE_CELL_PADDING + AI_TABLE_CELL_BORDER / 2,
|
47
|
-
y: y + AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET,
|
48
|
-
width: coordinate.getColumnWidth(columnIndex) - (AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET) * 2 + AI_TABLE_CELL_BORDER / 2,
|
49
|
-
height: AI_TABLE_ROW_BLANK_HEIGHT - (AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET),
|
50
|
-
fill: Colors.white,
|
51
|
-
stroke: isActive ? null : Colors.white,
|
52
|
-
name: generateTargetName({
|
53
|
-
targetName: AI_TABLE_CELL,
|
54
|
-
fieldId: field._id,
|
55
|
-
recordId
|
56
|
-
})
|
57
|
-
};
|
58
|
-
});
|
59
|
-
this.railConfig = computed(() => {
|
60
|
-
const { render, field, recordId } = this.config();
|
61
|
-
const { x } = render;
|
62
|
-
return {
|
63
|
-
x,
|
64
|
-
y: this.progressOffsetY,
|
65
|
-
width: this.railWidth(),
|
66
|
-
height: AI_TABLE_PROGRESS_BAR_HEIGHT,
|
67
|
-
cornerRadius: AI_TABLE_PROGRESS_BAR_RADIUS,
|
68
|
-
fill: Colors.gray200,
|
69
|
-
name: generateTargetName({
|
70
|
-
targetName: AI_TABLE_CELL,
|
71
|
-
fieldId: field._id,
|
72
|
-
recordId,
|
73
|
-
mouseStyle: this.readonly() ? 'default' : 'pointer'
|
74
|
-
})
|
75
|
-
};
|
76
|
-
});
|
77
|
-
this.trackConfig = computed(() => {
|
78
|
-
const { render, field, recordId } = this.config();
|
79
|
-
const { x } = render;
|
80
|
-
return {
|
81
|
-
x,
|
82
|
-
y: this.progressOffsetY,
|
83
|
-
width: this.trackWidth(),
|
84
|
-
height: AI_TABLE_PROGRESS_BAR_HEIGHT,
|
85
|
-
cornerRadius: AI_TABLE_PROGRESS_BAR_RADIUS,
|
86
|
-
fill: Colors.success,
|
87
|
-
name: generateTargetName({
|
88
|
-
targetName: AI_TABLE_CELL,
|
89
|
-
fieldId: field._id,
|
90
|
-
recordId,
|
91
|
-
mouseStyle: this.readonly() ? 'default' : 'pointer'
|
92
|
-
})
|
93
|
-
};
|
94
|
-
});
|
95
|
-
this.pointerConfig = computed(() => {
|
96
|
-
const { render, field, recordId } = this.config();
|
97
|
-
const { x } = render;
|
98
|
-
const halfPointerWidth = this.pointerWidth / 2;
|
99
|
-
const pointerY = this.progressOffsetY - (AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT - AI_TABLE_PROGRESS_BAR_HEIGHT) / 2;
|
100
|
-
let pointerX;
|
101
|
-
if (this.dragPointerX() !== null) {
|
102
|
-
pointerX = this.dragPointerX() - halfPointerWidth;
|
103
|
-
}
|
104
|
-
else {
|
105
|
-
pointerX = x + this.trackWidth() - halfPointerWidth;
|
106
|
-
}
|
107
|
-
return {
|
108
|
-
x: pointerX,
|
109
|
-
y: pointerY,
|
110
|
-
width: this.pointerWidth,
|
111
|
-
height: AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT,
|
112
|
-
fill: Colors.white,
|
113
|
-
stroke: Colors.success,
|
114
|
-
strokeWidth: 1,
|
115
|
-
cornerRadius: AI_TABLE_PROGRESS_BAR_RADIUS,
|
116
|
-
opacity: this.readonly() ? 0 : 1,
|
117
|
-
draggable: !this.readonly(),
|
118
|
-
dragBoundFunc: (pos) => {
|
119
|
-
const minX = x;
|
120
|
-
const maxX = x + this.railWidth() - this.pointerWidth;
|
121
|
-
return {
|
122
|
-
x: Math.min(minX, Math.min(maxX, pos.x)),
|
123
|
-
y: pointerY
|
124
|
-
};
|
125
|
-
},
|
126
|
-
name: generateTargetName({
|
127
|
-
targetName: AI_TABLE_CELL,
|
128
|
-
fieldId: field._id,
|
129
|
-
recordId,
|
130
|
-
mouseStyle: this.readonly() ? 'default' : 'pointer'
|
131
|
-
})
|
132
|
-
};
|
133
|
-
});
|
134
|
-
this.textConfig = computed(() => {
|
135
|
-
const { render, field, recordId } = this.config();
|
136
|
-
const { x } = render;
|
137
|
-
const textX = x + this.railWidth() + AI_TABLE_TEXT_GAP;
|
138
|
-
const textY = (AI_TABLE_ROW_BLANK_HEIGHT - DEFAULT_FONT_SIZE) / 2 + AI_TABLE_OFFSET;
|
139
|
-
return {
|
140
|
-
x: textX,
|
141
|
-
y: textY,
|
142
|
-
text: `${this.progressValue()}%`,
|
143
|
-
fill: DEFAULT_TEXT_FILL,
|
144
|
-
fontFamily: DEFAULT_FONT_FAMILY,
|
145
|
-
fontSize: DEFAULT_FONT_SIZE,
|
146
|
-
name: generateTargetName({
|
147
|
-
targetName: AI_TABLE_CELL,
|
148
|
-
fieldId: field._id,
|
149
|
-
recordId
|
150
|
-
})
|
151
|
-
};
|
152
|
-
});
|
153
|
-
}
|
154
|
-
static { this.fieldType = AITableFieldType.progress; }
|
155
|
-
calculatePercentage(clickX) {
|
156
|
-
return Math.max(0, Math.min(100, Math.round((clickX / this.railWidth()) * 100)));
|
157
|
-
}
|
158
|
-
koClick(e) {
|
159
|
-
if (this.readonly()) {
|
160
|
-
return;
|
161
|
-
}
|
162
|
-
this.updateProgressValue(e);
|
163
|
-
}
|
164
|
-
pointerDragstart(e) {
|
165
|
-
if (this.readonly()) {
|
166
|
-
return;
|
167
|
-
}
|
168
|
-
}
|
169
|
-
pointerDragmove(e) {
|
170
|
-
if (this.readonly()) {
|
171
|
-
return;
|
172
|
-
}
|
173
|
-
const { render, aiTable, coordinate } = this.config();
|
174
|
-
const { x } = render;
|
175
|
-
const { scrollLeft } = aiTable.context.scrollState();
|
176
|
-
const pointPosition = aiTable.context.pointPosition();
|
177
|
-
const { columnIndex } = pointPosition;
|
178
|
-
const columnLeftX = coordinate.getColumnOffset(columnIndex) - scrollLeft + AI_TABLE_OFFSET;
|
179
|
-
const stage = e.event.target.getStage();
|
180
|
-
if (!stage)
|
181
|
-
return;
|
182
|
-
const point = stage.getPointerPosition();
|
183
|
-
if (!point)
|
184
|
-
return;
|
185
|
-
const dragX = point.x - columnLeftX - x;
|
186
|
-
const minX = x;
|
187
|
-
const maxX = x + this.railWidth();
|
188
|
-
let dragPointerX = point.x - columnLeftX;
|
189
|
-
if (dragPointerX < minX) {
|
190
|
-
dragPointerX = minX;
|
191
|
-
}
|
192
|
-
else if (dragPointerX > maxX) {
|
193
|
-
dragPointerX = maxX;
|
194
|
-
}
|
195
|
-
this.dragPointerX.set(dragPointerX);
|
196
|
-
const percentage = this.calculatePercentage(dragX);
|
197
|
-
this.dragProgressValue.set(percentage);
|
198
|
-
}
|
199
|
-
pointerDragend(e) {
|
200
|
-
if (this.readonly()) {
|
201
|
-
return;
|
202
|
-
}
|
203
|
-
this.updateProgressValue(e);
|
204
|
-
this.dragPointerX.set(null);
|
205
|
-
this.dragProgressValue.set(null);
|
206
|
-
}
|
207
|
-
updateProgressValue(e) {
|
208
|
-
const { render, aiTable, coordinate, actions, field, recordId } = this.config();
|
209
|
-
const { x } = render;
|
210
|
-
const { scrollLeft } = aiTable.context.scrollState();
|
211
|
-
const pointPosition = aiTable.context.pointPosition();
|
212
|
-
const { columnIndex } = pointPosition;
|
213
|
-
const columnLeftX = coordinate.getColumnOffset(columnIndex) - scrollLeft + AI_TABLE_OFFSET;
|
214
|
-
const stage = e.event.target.getStage();
|
215
|
-
if (!stage)
|
216
|
-
return;
|
217
|
-
const point = stage.getPointerPosition();
|
218
|
-
if (!point)
|
219
|
-
return;
|
220
|
-
const dragX = point.x - columnLeftX - x;
|
221
|
-
const percentage = this.calculatePercentage(dragX);
|
222
|
-
if (!this.readonly() && actions && actions.updateFieldValue) {
|
223
|
-
actions.updateFieldValue({
|
224
|
-
value: percentage,
|
225
|
-
path: [recordId, field._id]
|
226
|
-
});
|
227
|
-
}
|
228
|
-
}
|
229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellProgress, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
230
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableCellProgress, isStandalone: true, selector: "ai-table-progress", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
231
|
-
@if (!readonly()) {
|
232
|
-
<ko-rect [config]="whiteBgConfig()"></ko-rect>
|
233
|
-
}
|
234
|
-
<ko-rect [config]="railConfig()" (koClick)="koClick($event)"></ko-rect>
|
235
|
-
<ko-rect [config]="trackConfig()" (koClick)="koClick($event)"></ko-rect>
|
236
|
-
<ko-rect
|
237
|
-
[config]="pointerConfig()"
|
238
|
-
(koDragstart)="pointerDragstart($event)"
|
239
|
-
(koDragmove)="pointerDragmove($event)"
|
240
|
-
(koDragend)="pointerDragend($event)"
|
241
|
-
></ko-rect>
|
242
|
-
<ko-text [config]="textConfig()"></ko-text>
|
243
|
-
`, isInline: true, dependencies: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
244
|
-
}
|
245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellProgress, decorators: [{
|
246
|
-
type: Component,
|
247
|
-
args: [{
|
248
|
-
selector: 'ai-table-progress',
|
249
|
-
template: `
|
250
|
-
@if (!readonly()) {
|
251
|
-
<ko-rect [config]="whiteBgConfig()"></ko-rect>
|
252
|
-
}
|
253
|
-
<ko-rect [config]="railConfig()" (koClick)="koClick($event)"></ko-rect>
|
254
|
-
<ko-rect [config]="trackConfig()" (koClick)="koClick($event)"></ko-rect>
|
255
|
-
<ko-rect
|
256
|
-
[config]="pointerConfig()"
|
257
|
-
(koDragstart)="pointerDragstart($event)"
|
258
|
-
(koDragmove)="pointerDragmove($event)"
|
259
|
-
(koDragend)="pointerDragend($event)"
|
260
|
-
></ko-rect>
|
261
|
-
<ko-text [config]="textConfig()"></ko-text>
|
262
|
-
`,
|
263
|
-
standalone: true,
|
264
|
-
imports: [KoShape],
|
265
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
266
|
-
}]
|
267
|
-
}] });
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY29tcG9uZW50cy9jZWxscy9wcm9ncmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUNILE1BQU0sRUFDTixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFzQi9CLE1BQU0sT0FBTyxtQkFBbUI7SUFwQmhDO1FBdUJJLFdBQU0sR0FBRyxLQUFLLEVBQTBCLENBQUM7UUFFekMsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FB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QUFLO1lBQUUsT0FBTztRQUVuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDckIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLElBQUksRUFBRSxDQUFDLFFBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQy9CLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOytHQXpQUSxtQkFBbUI7bUdBQW5CLG1CQUFtQixvTkFsQmxCOzs7Ozs7Ozs7Ozs7O0tBYVQsNERBRVMsT0FBTzs7NEZBR1IsbUJBQW1CO2tCQXBCL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7S0FhVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS29TaGFwZSwgS29FdmVudE9iamVjdCB9IGZyb20gJy4uLy4uLy4uL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHsgSG92ZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBSVRhYmxlSG92ZXJDZWxsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkVHlwZSB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRhcmdldE5hbWUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBpc0FjdGl2ZUNlbGwgfSBmcm9tICcuLi8uLi8uLi9yZW5kZXJlcic7XG5pbXBvcnQge1xuICAgIENvbG9ycyxcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9PRkZTRVQsXG4gICAgQUlfVEFCTEVfQ0VMTCxcbiAgICBBSV9UQUJMRV9DRUxMX0JPUkRFUixcbiAgICBBSV9UQUJMRV9QUk9HUkVTU19CQVJfSEVJR0hULFxuICAgIEFJX1RBQkxFX1BST0dSRVNTX1RFWFRfV0lEVEgsXG4gICAgQUlfVEFCTEVfUFJPR1JFU1NfQkFSX1JBRElVUyxcbiAgICBBSV9UQUJMRV9QUk9HUkVTU19CQVJfUE9JTlRFUl9XSURUSCxcbiAgICBBSV9UQUJMRV9QUk9HUkVTU19CQVJfUE9JTlRFUl9IRUlHSFQsXG4gICAgQUlfVEFCTEVfVEVYVF9HQVAsXG4gICAgREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgICBERUZBVUxUX0ZPTlRfU0laRSxcbiAgICBERUZBVUxUX1RFWFRfRklMTFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLXByb2dyZXNzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICA8a28tcmVjdCBbY29uZmlnXT1cIndoaXRlQmdDb25maWcoKVwiPjwva28tcmVjdD5cbiAgICAgICAgfVxuICAgICAgICA8a28tcmVjdCBbY29uZmlnXT1cInJhaWxDb25maWcoKVwiIChrb0NsaWNrKT1cImtvQ2xpY2soJGV2ZW50KVwiPjwva28tcmVjdD5cbiAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJ0cmFja0NvbmZpZygpXCIgKGtvQ2xpY2spPVwia29DbGljaygkZXZlbnQpXCI+PC9rby1yZWN0PlxuICAgICAgICA8a28tcmVjdFxuICAgICAgICAgICAgW2NvbmZpZ109XCJwb2ludGVyQ29uZmlnKClcIlxuICAgICAgICAgICAgKGtvRHJhZ3N0YXJ0KT1cInBvaW50ZXJEcmFnc3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29EcmFnbW92ZSk9XCJwb2ludGVyRHJhZ21vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29EcmFnZW5kKT1cInBvaW50ZXJEcmFnZW5kKCRldmVudClcIlxuICAgICAgICA+PC9rby1yZWN0PlxuICAgICAgICA8a28tdGV4dCBbY29uZmlnXT1cInRleHRDb25maWcoKVwiPjwva28tdGV4dD5cbiAgICBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tvU2hhcGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVDZWxsUHJvZ3Jlc3MgaW1wbGVtZW50cyBIb3ZlckNlbGxDb21wb25lbnQge1xuICAgIHN0YXRpYyBmaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlLnByb2dyZXNzO1xuXG4gICAgY29uZmlnID0gaW5wdXQ8QUlUYWJsZUhvdmVyQ2VsbENvbmZpZz4oKTtcblxuICAgIHJlYWRvbmx5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8ucmVhZG9ubHk7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIGRyYWdQb2ludGVyWCA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICAgIHByaXZhdGUgcmFpbFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbHVtbldpZHRoIH0gPSB0aGlzLmNvbmZpZygpIS5yZW5kZXI7XG4gICAgICAgIHJldHVybiBjb2x1bW5XaWR0aCAtIDIgKiBBSV9UQUJMRV9DRUxMX1BBRERJTkcgLSBBSV9UQUJMRV9QUk9HUkVTU19URVhUX1dJRFRIO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSB0cmFja1dpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMucHJvZ3Jlc3NWYWx1ZSgpIC8gMTAwKSAqIHRoaXMucmFpbFdpZHRoKCk7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHBvaW50ZXJXaWR0aCA9IEFJX1RBQkxFX1BST0dSRVNTX0JBUl9QT0lOVEVSX1dJRFRIO1xuXG4gICAgcHJpdmF0ZSBwcm9ncmVzc09mZnNldFkgPSAoQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCAtIEFJX1RBQkxFX1BST0dSRVNTX0JBUl9IRUlHSFQpIC8gMiArIEFJX1RBQkxFX09GRlNFVDtcblxuICAgIHByaXZhdGUgZHJhZ1Byb2dyZXNzVmFsdWUgPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwcml2YXRlIHByb2dyZXNzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYWdWYWx1ZSA9IHRoaXMuZHJhZ1Byb2dyZXNzVmFsdWUoKTtcbiAgICAgICAgaWYgKGRyYWdWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGRyYWdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgcmVuZGVyIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1WYWx1ZSB9ID0gcmVuZGVyO1xuICAgICAgICBpZiAoaXNOaWwodHJhbnNmb3JtVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7XG4gICAgfSk7XG5cbiAgICB3aGl0ZUJnQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGFpVGFibGUsIHJlbmRlciwgZmllbGQsIHJlY29yZElkLCBjb29yZGluYXRlIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgcG9pbnRQb3NpdGlvbiA9IGFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHJlbmRlcjtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5JbmRleCB9ID0gcG9pbnRQb3NpdGlvbjtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBpc0FjdGl2ZUNlbGwoW3JlY29yZElkISwgZmllbGQuX2lkXSwgYWlUYWJsZSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggLSBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBBSV9UQUJMRV9DRUxMX0JPUkRFUiAvIDIsXG4gICAgICAgICAgICB5OiB5ICsgQUlfVEFCTEVfQ0VMTF9CT1JERVIgKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDogY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleCkgLSAoQUlfVEFCTEVfQ0VMTF9CT1JERVIgKyBBSV9UQUJMRV9PRkZTRVQpICogMiArIEFJX1RBQkxFX0NFTExfQk9SREVSIC8gMixcbiAgICAgICAgICAgIGhlaWdodDogQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCAtIChBSV9UQUJMRV9DRUxMX0JPUkRFUiArIEFJX1RBQkxFX09GRlNFVCksXG4gICAgICAgICAgICBmaWxsOiBDb2xvcnMud2hpdGUsXG4gICAgICAgICAgICBzdHJva2U6IGlzQWN0aXZlID8gbnVsbCA6IENvbG9ycy53aGl0ZSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfQ0VMTCxcbiAgICAgICAgICAgICAgICBmaWVsZElkOiBmaWVsZC5faWQsXG4gICAgICAgICAgICAgICAgcmVjb3JkSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByYWlsQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHJlbmRlciwgZmllbGQsIHJlY29yZElkIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB4IH0gPSByZW5kZXI7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5OiB0aGlzLnByb2dyZXNzT2Zmc2V0WSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnJhaWxXaWR0aCgpLFxuICAgICAgICAgICAgaGVpZ2h0OiBBSV9UQUJMRV9QUk9HUkVTU19CQVJfSEVJR0hULFxuICAgICAgICAgICAgY29ybmVyUmFkaXVzOiBBSV9UQUJMRV9QUk9HUkVTU19CQVJfUkFESVVTLFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLmdyYXkyMDAsXG4gICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoe1xuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX0NFTEwsXG4gICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGQuX2lkLFxuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIG1vdXNlU3R5bGU6IHRoaXMucmVhZG9ubHkoKSA/ICdkZWZhdWx0JyA6ICdwb2ludGVyJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRyYWNrQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHJlbmRlciwgZmllbGQsIHJlY29yZElkIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB4IH0gPSByZW5kZXI7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5OiB0aGlzLnByb2dyZXNzT2Zmc2V0WSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnRyYWNrV2lkdGgoKSxcbiAgICAgICAgICAgIGhlaWdodDogQUlfVEFCTEVfUFJPR1JFU1NfQkFSX0hFSUdIVCxcbiAgICAgICAgICAgIGNvcm5lclJhZGl1czogQUlfVEFCTEVfUFJPR1JFU1NfQkFSX1JBRElVUyxcbiAgICAgICAgICAgIGZpbGw6IENvbG9ycy5zdWNjZXNzLFxuICAgICAgICAgICAgbmFtZTogZ2VuZXJhdGVUYXJnZXROYW1lKHtcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBBSV9UQUJMRV9DRUxMLFxuICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLl9pZCxcbiAgICAgICAgICAgICAgICByZWNvcmRJZCxcbiAgICAgICAgICAgICAgICBtb3VzZVN0eWxlOiB0aGlzLnJlYWRvbmx5KCkgPyAnZGVmYXVsdCcgOiAncG9pbnRlcidcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBwb2ludGVyQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHJlbmRlciwgZmllbGQsIHJlY29yZElkIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB4IH0gPSByZW5kZXI7XG4gICAgICAgIGNvbnN0IGhhbGZQb2ludGVyV2lkdGggPSB0aGlzLnBvaW50ZXJXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHBvaW50ZXJZID0gdGhpcy5wcm9ncmVzc09mZnNldFkgLSAoQUlfVEFCTEVfUFJPR1JFU1NfQkFSX1BPSU5URVJfSEVJR0hUIC0gQUlfVEFCTEVfUFJPR1JFU1NfQkFSX0hFSUdIVCkgLyAyO1xuXG4gICAgICAgIGxldCBwb2ludGVyWDogbnVtYmVyO1xuICAgICAgICBpZiAodGhpcy5kcmFnUG9pbnRlclgoKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcG9pbnRlclggPSB0aGlzLmRyYWdQb2ludGVyWCgpISAtIGhhbGZQb2ludGVyV2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb2ludGVyWCA9IHggKyB0aGlzLnRyYWNrV2lkdGgoKSAtIGhhbGZQb2ludGVyV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogcG9pbnRlclgsXG4gICAgICAgICAgICB5OiBwb2ludGVyWSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBvaW50ZXJXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogQUlfVEFCTEVfUFJPR1JFU1NfQkFSX1BPSU5URVJfSEVJR0hULFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLndoaXRlLFxuICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuc3VjY2VzcyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgY29ybmVyUmFkaXVzOiBBSV9UQUJMRV9QUk9HUkVTU19CQVJfUkFESVVTLFxuICAgICAgICAgICAgb3BhY2l0eTogdGhpcy5yZWFkb25seSgpID8gMCA6IDEsXG4gICAgICAgICAgICBkcmFnZ2FibGU6ICF0aGlzLnJlYWRvbmx5KCksXG4gICAgICAgICAgICBkcmFnQm91bmRGdW5jOiAocG9zOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5YID0geDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhYID0geCArIHRoaXMucmFpbFdpZHRoKCkgLSB0aGlzLnBvaW50ZXJXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGgubWluKG1pblgsIE1hdGgubWluKG1heFgsIHBvcy54KSksXG4gICAgICAgICAgICAgICAgICAgIHk6IHBvaW50ZXJZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoe1xuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX0NFTEwsXG4gICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGQuX2lkLFxuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIG1vdXNlU3R5bGU6IHRoaXMucmVhZG9ubHkoKSA/ICdkZWZhdWx0JyA6ICdwb2ludGVyJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRleHRDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVuZGVyLCBmaWVsZCwgcmVjb3JkSWQgfSA9IHRoaXMuY29uZmlnKCkhO1xuICAgICAgICBjb25zdCB7IHggfSA9IHJlbmRlcjtcbiAgICAgICAgY29uc3QgdGV4dFggPSB4ICsgdGhpcy5yYWlsV2lkdGgoKSArIEFJX1RBQkxFX1RFWFRfR0FQO1xuICAgICAgICBjb25zdCB0ZXh0WSA9IChBSV9UQUJMRV9ST1dfQkxBTktfSEVJR0hUIC0gREVGQVVMVF9GT05UX1NJWkUpIC8gMiArIEFJX1RBQkxFX09GRlNFVDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogdGV4dFgsXG4gICAgICAgICAgICB5OiB0ZXh0WSxcbiAgICAgICAgICAgIHRleHQ6IGAke3RoaXMucHJvZ3Jlc3NWYWx1ZSgpfSVgLFxuICAgICAgICAgICAgZmlsbDogREVGQVVMVF9URVhUX0ZJTEwsXG4gICAgICAgICAgICBmb250RmFtaWx5OiBERUZBVUxUX0ZPTlRfRkFNSUxZLFxuICAgICAgICAgICAgZm9udFNpemU6IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICAgICAgbmFtZTogZ2VuZXJhdGVUYXJnZXROYW1lKHtcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBBSV9UQUJMRV9DRUxMLFxuICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLl9pZCxcbiAgICAgICAgICAgICAgICByZWNvcmRJZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudGFnZShjbGlja1g6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQoKGNsaWNrWCAvIHRoaXMucmFpbFdpZHRoKCkpICogMTAwKSkpO1xuICAgIH1cblxuICAgIGtvQ2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzc1ZhbHVlKGUpO1xuICAgIH1cblxuICAgIHBvaW50ZXJEcmFnc3RhcnQoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb2ludGVyRHJhZ21vdmUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHJlbmRlciwgYWlUYWJsZSwgY29vcmRpbmF0ZSB9ID0gdGhpcy5jb25maWcoKSE7XG4gICAgICAgIGNvbnN0IHsgeCB9ID0gcmVuZGVyO1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IGFpVGFibGUuY29udGV4dCEuc2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcG9pbnRQb3NpdGlvbiA9IGFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCB7IGNvbHVtbkluZGV4IH0gPSBwb2ludFBvc2l0aW9uO1xuICAgICAgICBjb25zdCBjb2x1bW5MZWZ0WCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvbHVtbkluZGV4KSAtIHNjcm9sbExlZnQgKyBBSV9UQUJMRV9PRkZTRVQ7XG5cbiAgICAgICAgY29uc3Qgc3RhZ2UgPSBlLmV2ZW50LnRhcmdldC5nZXRTdGFnZSgpO1xuICAgICAgICBpZiAoIXN0YWdlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcG9pbnQgPSBzdGFnZS5nZXRQb2ludGVyUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKCFwb2ludCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGRyYWdYID0gcG9pbnQueCAtIGNvbHVtbkxlZnRYIC0geDtcbiAgICAgICAgY29uc3QgbWluWCA9IHg7XG4gICAgICAgIGNvbnN0IG1heFggPSB4ICsgdGhpcy5yYWlsV2lkdGgoKTtcblxuICAgICAgICBsZXQgZHJhZ1BvaW50ZXJYID0gcG9pbnQueCAtIGNvbHVtbkxlZnRYO1xuICAgICAgICBpZiAoZHJhZ1BvaW50ZXJYIDwgbWluWCkge1xuICAgICAgICAgICAgZHJhZ1BvaW50ZXJYID0gbWluWDtcbiAgICAgICAgfSBlbHNlIGlmIChkcmFnUG9pbnRlclggPiBtYXhYKSB7XG4gICAgICAgICAgICBkcmFnUG9pbnRlclggPSBtYXhYO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnUG9pbnRlclguc2V0KGRyYWdQb2ludGVyWCk7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRhZ2UoZHJhZ1gpO1xuICAgICAgICB0aGlzLmRyYWdQcm9ncmVzc1ZhbHVlLnNldChwZXJjZW50YWdlKTtcbiAgICB9XG5cbiAgICBwb2ludGVyRHJhZ2VuZChlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NWYWx1ZShlKTtcbiAgICAgICAgdGhpcy5kcmFnUG9pbnRlclguc2V0KG51bGwpO1xuICAgICAgICB0aGlzLmRyYWdQcm9ncmVzc1ZhbHVlLnNldChudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByb2dyZXNzVmFsdWUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pik6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHJlbmRlciwgYWlUYWJsZSwgY29vcmRpbmF0ZSwgYWN0aW9ucywgZmllbGQsIHJlY29yZElkIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB4IH0gPSByZW5kZXI7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCB9ID0gYWlUYWJsZS5jb250ZXh0IS5zY3JvbGxTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwb2ludFBvc2l0aW9uID0gYWlUYWJsZS5jb250ZXh0IS5wb2ludFBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHsgY29sdW1uSW5kZXggfSA9IHBvaW50UG9zaXRpb247XG4gICAgICAgIGNvbnN0IGNvbHVtbkxlZnRYID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXgpIC0gc2Nyb2xsTGVmdCArIEFJX1RBQkxFX09GRlNFVDtcblxuICAgICAgICBjb25zdCBzdGFnZSA9IGUuZXZlbnQudGFyZ2V0LmdldFN0YWdlKCk7XG4gICAgICAgIGlmICghc3RhZ2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBwb2ludCA9IHN0YWdlLmdldFBvaW50ZXJQb3NpdGlvbigpO1xuICAgICAgICBpZiAoIXBvaW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZHJhZ1ggPSBwb2ludC54IC0gY29sdW1uTGVmdFggLSB4O1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5jYWxjdWxhdGVQZXJjZW50YWdlKGRyYWdYKTtcblxuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkoKSAmJiBhY3Rpb25zICYmIGFjdGlvbnMudXBkYXRlRmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgYWN0aW9ucy51cGRhdGVGaWVsZFZhbHVlKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBbcmVjb3JkSWQhLCBmaWVsZC5faWRdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -1,153 +0,0 @@
|
|
1
|
-
import { Component, computed, input, signal } from '@angular/core';
|
2
|
-
import { ChangeDetectionStrategy } from '@angular/core';
|
3
|
-
import { KoShape } from '../../../angular-konva';
|
4
|
-
import { AITableFieldType } from '@ai-table/utils';
|
5
|
-
import { generateTargetName } from '../../../utils';
|
6
|
-
import { isActiveCell } from '../../../renderer';
|
7
|
-
import { StarFill, Colors, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_PADDING, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_OFFSET, AI_TABLE_CELL, AI_TABLE_RATE_MAX, AI_TABLE_CELL_BORDER } from '../../../constants';
|
8
|
-
import * as i0 from "@angular/core";
|
9
|
-
export class AITableCellRate {
|
10
|
-
constructor() {
|
11
|
-
this.pointerX = signal(0);
|
12
|
-
this.pointerY = signal(0);
|
13
|
-
this.resetStatus = signal(false);
|
14
|
-
this.config = input();
|
15
|
-
this.readonly = computed(() => {
|
16
|
-
return this.config()?.readonly;
|
17
|
-
});
|
18
|
-
this.whiteBgConfig = computed(() => {
|
19
|
-
const { aiTable, render, field, recordId, coordinate } = this.config();
|
20
|
-
const pointPosition = aiTable.context.pointPosition();
|
21
|
-
const { x, y } = render;
|
22
|
-
const { columnIndex } = pointPosition;
|
23
|
-
const isActive = isActiveCell([recordId, field._id], aiTable);
|
24
|
-
return {
|
25
|
-
x: x - AI_TABLE_CELL_PADDING + AI_TABLE_CELL_BORDER,
|
26
|
-
y: y + AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET,
|
27
|
-
width: coordinate.getColumnWidth(columnIndex) - (AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET) * 2,
|
28
|
-
height: AI_TABLE_ROW_BLANK_HEIGHT - (AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET),
|
29
|
-
fill: Colors.white,
|
30
|
-
stroke: isActive ? null : Colors.white,
|
31
|
-
zIndex: 0,
|
32
|
-
name: generateTargetName({
|
33
|
-
targetName: AI_TABLE_CELL,
|
34
|
-
fieldId: field._id,
|
35
|
-
recordId
|
36
|
-
})
|
37
|
-
};
|
38
|
-
});
|
39
|
-
this.starConfigs = computed(() => {
|
40
|
-
const { render, field, recordId, readonly, aiTable, coordinate } = this.config();
|
41
|
-
const { x, transformValue } = render;
|
42
|
-
const max = AI_TABLE_RATE_MAX;
|
43
|
-
const starY = (AI_TABLE_ROW_BLANK_HEIGHT - AI_TABLE_CELL_EMOJI_SIZE) / 2 + AI_TABLE_OFFSET;
|
44
|
-
const pointPosition = aiTable.context.pointPosition();
|
45
|
-
const { rowIndex, columnIndex } = pointPosition;
|
46
|
-
const { scrollLeft, scrollTop } = aiTable.context.scrollState();
|
47
|
-
const columnLeftX = coordinate.getColumnOffset(columnIndex) - scrollLeft + AI_TABLE_OFFSET;
|
48
|
-
const columnTopY = coordinate.getRowOffset(rowIndex) - scrollTop + AI_TABLE_OFFSET;
|
49
|
-
const firstStarLeftX = columnLeftX + AI_TABLE_CELL_PADDING;
|
50
|
-
const lastStarRightX = columnLeftX + AI_TABLE_CELL_PADDING + max * AI_TABLE_CELL_EMOJI_SIZE + (max - 1) * AI_TABLE_CELL_EMOJI_PADDING;
|
51
|
-
const startTopY = columnTopY + starY;
|
52
|
-
const startBottomY = columnTopY + starY + AI_TABLE_CELL_EMOJI_SIZE;
|
53
|
-
const isHoverStar = this.pointerX() >= firstStarLeftX &&
|
54
|
-
this.pointerX() <= lastStarRightX &&
|
55
|
-
this.pointerY() >= startTopY &&
|
56
|
-
this.pointerY() <= startBottomY;
|
57
|
-
const renderWidth = coordinate.getColumnWidth(columnIndex) - AI_TABLE_CELL_PADDING;
|
58
|
-
const starWidth = AI_TABLE_CELL_EMOJI_SIZE + AI_TABLE_CELL_EMOJI_PADDING;
|
59
|
-
const maxStar = Math.min(max, Math.floor(renderWidth / starWidth));
|
60
|
-
return [...Array(maxStar).keys()].map((item, index) => {
|
61
|
-
const value = index + 1;
|
62
|
-
const checked = value <= transformValue;
|
63
|
-
const starX = x + index * (AI_TABLE_CELL_EMOJI_SIZE + AI_TABLE_CELL_EMOJI_PADDING);
|
64
|
-
let fill = null;
|
65
|
-
if (this.resetStatus()) {
|
66
|
-
fill = Colors.gray100;
|
67
|
-
}
|
68
|
-
else {
|
69
|
-
if (isHoverStar) {
|
70
|
-
fill = columnLeftX + starX <= this.pointerX() ? Colors.waring : Colors.gray100;
|
71
|
-
}
|
72
|
-
else {
|
73
|
-
fill = checked ? Colors.waring : Colors.gray100;
|
74
|
-
}
|
75
|
-
}
|
76
|
-
return {
|
77
|
-
x: starX,
|
78
|
-
y: starY,
|
79
|
-
size: 22,
|
80
|
-
data: StarFill,
|
81
|
-
fill,
|
82
|
-
scaleX: 1.14,
|
83
|
-
scaleY: 1.14,
|
84
|
-
name: generateTargetName({
|
85
|
-
targetName: AI_TABLE_CELL,
|
86
|
-
fieldId: field._id,
|
87
|
-
recordId,
|
88
|
-
mouseStyle: readonly ? 'default' : 'pointer'
|
89
|
-
})
|
90
|
-
};
|
91
|
-
});
|
92
|
-
});
|
93
|
-
}
|
94
|
-
static { this.fieldType = AITableFieldType.rate; }
|
95
|
-
koMousemove(e) {
|
96
|
-
if (this.readonly()) {
|
97
|
-
return;
|
98
|
-
}
|
99
|
-
this.resetStatus.set(false);
|
100
|
-
const pos = e.event.target.getStage()?.getPointerPosition();
|
101
|
-
if (!pos)
|
102
|
-
return;
|
103
|
-
const { x, y } = pos;
|
104
|
-
this.pointerX.set(x);
|
105
|
-
this.pointerY.set(y);
|
106
|
-
}
|
107
|
-
koClick(e, index) {
|
108
|
-
if (this.readonly()) {
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
this.resetStatus.set(false);
|
112
|
-
const { render, readonly, field, recordId, actions } = this.config();
|
113
|
-
const { transformValue } = render;
|
114
|
-
let value = index + 1;
|
115
|
-
if (transformValue === value) {
|
116
|
-
value = 0;
|
117
|
-
this.resetStatus.set(true);
|
118
|
-
}
|
119
|
-
if (!readonly && actions && actions.updateFieldValue) {
|
120
|
-
actions.updateFieldValue({
|
121
|
-
value,
|
122
|
-
path: [recordId, field._id]
|
123
|
-
});
|
124
|
-
}
|
125
|
-
}
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellRate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableCellRate, isStandalone: true, selector: "ai-table-rate", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
128
|
-
@if (!readonly()) {
|
129
|
-
<ko-rect [config]="whiteBgConfig()" (koMousemove)="koMousemove($event)"></ko-rect>
|
130
|
-
}
|
131
|
-
@for (config of starConfigs(); let index = $index; track $index) {
|
132
|
-
<ko-path [config]="config" (koClick)="koClick($event, index)"></ko-path>
|
133
|
-
}
|
134
|
-
`, isInline: true, dependencies: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
135
|
-
}
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellRate, decorators: [{
|
137
|
-
type: Component,
|
138
|
-
args: [{
|
139
|
-
selector: 'ai-table-rate',
|
140
|
-
template: `
|
141
|
-
@if (!readonly()) {
|
142
|
-
<ko-rect [config]="whiteBgConfig()" (koMousemove)="koMousemove($event)"></ko-rect>
|
143
|
-
}
|
144
|
-
@for (config of starConfigs(); let index = $index; track $index) {
|
145
|
-
<ko-path [config]="config" (koClick)="koClick($event, index)"></ko-path>
|
146
|
-
}
|
147
|
-
`,
|
148
|
-
standalone: true,
|
149
|
-
imports: [KoShape],
|
150
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
151
|
-
}]
|
152
|
-
}] });
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL3JhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QixlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FBQzs7QUFnQjVCLE1BQU0sT0FBTyxlQUFlO0lBZDVCO1FBaUJZLGFBQVEsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFN0IsYUFBUSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUU3QixnQkFBVyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU3QyxXQUFNLEdBQUcsS0FBSyxFQUEwQixDQUFDO1FBRXpDLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FB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RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLb1NoYXBlLCBLb0V2ZW50T2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vYW5ndWxhci1rb252YSc7XG5pbXBvcnQgeyBIb3ZlckNlbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFJVGFibGVIb3ZlckNlbGxDb25maWcgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcbmltcG9ydCB7IGdlbmVyYXRlVGFyZ2V0TmFtZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzQWN0aXZlQ2VsbCB9IGZyb20gJy4uLy4uLy4uL3JlbmRlcmVyJztcbmltcG9ydCB7XG4gICAgU3RhckZpbGwsXG4gICAgQ29sb3JzLFxuICAgIEFJX1RBQkxFX0NFTExfRU1PSklfUEFERElORyxcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9DRUxMX0VNT0pJX1NJWkUsXG4gICAgQUlfVEFCTEVfT0ZGU0VULFxuICAgIEFJX1RBQkxFX0NFTEwsXG4gICAgQUlfVEFCTEVfUkFURV9NQVgsXG4gICAgQUlfVEFCTEVfQ0VMTF9CT1JERVJcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1yYXRlJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICA8a28tcmVjdCBbY29uZmlnXT1cIndoaXRlQmdDb25maWcoKVwiIChrb01vdXNlbW92ZSk9XCJrb01vdXNlbW92ZSgkZXZlbnQpXCI+PC9rby1yZWN0PlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbmZpZyBvZiBzdGFyQ29uZmlncygpOyBsZXQgaW5kZXggPSAkaW5kZXg7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGtvLXBhdGggW2NvbmZpZ109XCJjb25maWdcIiAoa29DbGljayk9XCJrb0NsaWNrKCRldmVudCwgaW5kZXgpXCI+PC9rby1wYXRoPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLb1NoYXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlQ2VsbFJhdGUgaW1wbGVtZW50cyBIb3ZlckNlbGxDb21wb25lbnQge1xuICAgIHN0YXRpYyBmaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlLnJhdGU7XG5cbiAgICBwcml2YXRlIHBvaW50ZXJYID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICBwcml2YXRlIHBvaW50ZXJZID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICBwcml2YXRlIHJlc2V0U3RhdHVzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGNvbmZpZyA9IGlucHV0PEFJVGFibGVIb3ZlckNlbGxDb25maWc+KCk7XG5cbiAgICByZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCk/LnJlYWRvbmx5O1xuICAgIH0pO1xuXG4gICAgd2hpdGVCZ0NvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBhaVRhYmxlLCByZW5kZXIsIGZpZWxkLCByZWNvcmRJZCwgY29vcmRpbmF0ZSB9ID0gdGhpcy5jb25maWcoKSE7XG4gICAgICAgIGNvbnN0IHBvaW50UG9zaXRpb24gPSBhaVRhYmxlLmNvbnRleHQhLnBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSByZW5kZXI7XG4gICAgICAgIGNvbnN0IHsgY29sdW1uSW5kZXggfSA9IHBvaW50UG9zaXRpb247XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gaXNBY3RpdmVDZWxsKFtyZWNvcmRJZCEsIGZpZWxkLl9pZF0sIGFpVGFibGUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4IC0gQUlfVEFCTEVfQ0VMTF9QQURESU5HICsgQUlfVEFCTEVfQ0VMTF9CT1JERVIsXG4gICAgICAgICAgICB5OiB5ICsgQUlfVEFCTEVfQ0VMTF9CT1JERVIgKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDogY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleCkgLSAoQUlfVEFCTEVfQ0VMTF9CT1JERVIgKyBBSV9UQUJMRV9PRkZTRVQpICogMixcbiAgICAgICAgICAgIGhlaWdodDogQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCAtIChBSV9UQUJMRV9DRUxMX0JPUkRFUiArIEFJX1RBQkxFX09GRlNFVCksXG4gICAgICAgICAgICBmaWxsOiBDb2xvcnMud2hpdGUsXG4gICAgICAgICAgICBzdHJva2U6IGlzQWN0aXZlID8gbnVsbCA6IENvbG9ycy53aGl0ZSxcbiAgICAgICAgICAgIHpJbmRleDogMCxcbiAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfQ0VMTCxcbiAgICAgICAgICAgICAgICBmaWVsZElkOiBmaWVsZC5faWQsXG4gICAgICAgICAgICAgICAgcmVjb3JkSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBzdGFyQ29uZmlncyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgeyByZW5kZXIsIGZpZWxkLCByZWNvcmRJZCwgcmVhZG9ubHksIGFpVGFibGUsIGNvb3JkaW5hdGUgfSA9IHRoaXMuY29uZmlnKCkhO1xuICAgICAgICBjb25zdCB7IHgsIHRyYW5zZm9ybVZhbHVlIH0gPSByZW5kZXI7XG4gICAgICAgIGNvbnN0IG1heCA9IEFJX1RBQkxFX1JBVEVfTUFYO1xuICAgICAgICBjb25zdCBzdGFyWSA9IChBSV9UQUJMRV9ST1dfQkxBTktfSEVJR0hUIC0gQUlfVEFCTEVfQ0VMTF9FTU9KSV9TSVpFKSAvIDIgKyBBSV9UQUJMRV9PRkZTRVQ7XG5cbiAgICAgICAgY29uc3QgcG9pbnRQb3NpdGlvbiA9IGFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCB7IHJvd0luZGV4LCBjb2x1bW5JbmRleCB9ID0gcG9pbnRQb3NpdGlvbjtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGFpVGFibGUuY29udGV4dCEuc2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY29sdW1uTGVmdFggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb2x1bW5JbmRleCkgLSBzY3JvbGxMZWZ0ICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICBjb25zdCBjb2x1bW5Ub3BZID0gY29vcmRpbmF0ZS5nZXRSb3dPZmZzZXQocm93SW5kZXgpIC0gc2Nyb2xsVG9wICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICBjb25zdCBmaXJzdFN0YXJMZWZ0WCA9IGNvbHVtbkxlZnRYICsgQUlfVEFCTEVfQ0VMTF9QQURESU5HO1xuICAgICAgICBjb25zdCBsYXN0U3RhclJpZ2h0WCA9XG4gICAgICAgICAgICBjb2x1bW5MZWZ0WCArIEFJX1RBQkxFX0NFTExfUEFERElORyArIG1heCAqIEFJX1RBQkxFX0NFTExfRU1PSklfU0laRSArIChtYXggLSAxKSAqIEFJX1RBQkxFX0NFTExfRU1PSklfUEFERElORztcbiAgICAgICAgY29uc3Qgc3RhcnRUb3BZID0gY29sdW1uVG9wWSArIHN0YXJZO1xuICAgICAgICBjb25zdCBzdGFydEJvdHRvbVkgPSBjb2x1bW5Ub3BZICsgc3RhclkgKyBBSV9UQUJMRV9DRUxMX0VNT0pJX1NJWkU7XG5cbiAgICAgICAgY29uc3QgaXNIb3ZlclN0YXIgPVxuICAgICAgICAgICAgdGhpcy5wb2ludGVyWCgpID49IGZpcnN0U3RhckxlZnRYICYmXG4gICAgICAgICAgICB0aGlzLnBvaW50ZXJYKCkgPD0gbGFzdFN0YXJSaWdodFggJiZcbiAgICAgICAgICAgIHRoaXMucG9pbnRlclkoKSA+PSBzdGFydFRvcFkgJiZcbiAgICAgICAgICAgIHRoaXMucG9pbnRlclkoKSA8PSBzdGFydEJvdHRvbVk7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyV2lkdGggPSBjb29yZGluYXRlLmdldENvbHVtbldpZHRoKGNvbHVtbkluZGV4KSAtIEFJX1RBQkxFX0NFTExfUEFERElORztcbiAgICAgICAgY29uc3Qgc3RhcldpZHRoID0gQUlfVEFCTEVfQ0VMTF9FTU9KSV9TSVpFICsgQUlfVEFCTEVfQ0VMTF9FTU9KSV9QQURESU5HO1xuICAgICAgICBjb25zdCBtYXhTdGFyID0gTWF0aC5taW4obWF4LCBNYXRoLmZsb29yKHJlbmRlcldpZHRoIC8gc3RhcldpZHRoKSk7XG5cbiAgICAgICAgcmV0dXJuIFsuLi5BcnJheShtYXhTdGFyKS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IHZhbHVlIDw9IHRyYW5zZm9ybVZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc3RhclggPSB4ICsgaW5kZXggKiAoQUlfVEFCTEVfQ0VMTF9FTU9KSV9TSVpFICsgQUlfVEFCTEVfQ0VMTF9FTU9KSV9QQURESU5HKTtcblxuICAgICAgICAgICAgbGV0IGZpbGwgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMucmVzZXRTdGF0dXMoKSkge1xuICAgICAgICAgICAgICAgIGZpbGwgPSBDb2xvcnMuZ3JheTEwMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzSG92ZXJTdGFyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGwgPSBjb2x1bW5MZWZ0WCArIHN0YXJYIDw9IHRoaXMucG9pbnRlclgoKSA/IENvbG9ycy53YXJpbmcgOiBDb2xvcnMuZ3JheTEwMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWxsID0gY2hlY2tlZCA/IENvbG9ycy53YXJpbmcgOiBDb2xvcnMuZ3JheTEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgeDogc3RhclgsXG4gICAgICAgICAgICAgICAgeTogc3RhclksXG4gICAgICAgICAgICAgICAgc2l6ZTogMjIsXG4gICAgICAgICAgICAgICAgZGF0YTogU3RhckZpbGwsXG4gICAgICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgICAgICBzY2FsZVg6IDEuMTQsXG4gICAgICAgICAgICAgICAgc2NhbGVZOiAxLjE0LFxuICAgICAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX0NFTEwsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLl9pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlU3R5bGU6IHJlYWRvbmx5ID8gJ2RlZmF1bHQnIDogJ3BvaW50ZXInXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAga29Nb3VzZW1vdmUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2V0U3RhdHVzLnNldChmYWxzZSk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGUuZXZlbnQudGFyZ2V0LmdldFN0YWdlKCk/LmdldFBvaW50ZXJQb3NpdGlvbigpO1xuICAgICAgICBpZiAoIXBvcykgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHBvcztcbiAgICAgICAgdGhpcy5wb2ludGVyWC5zZXQoeCk7XG4gICAgICAgIHRoaXMucG9pbnRlclkuc2V0KHkpO1xuICAgIH1cblxuICAgIGtvQ2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50PiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2V0U3RhdHVzLnNldChmYWxzZSk7XG4gICAgICAgIGNvbnN0IHsgcmVuZGVyLCByZWFkb25seSwgZmllbGQsIHJlY29yZElkLCBhY3Rpb25zIH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1WYWx1ZSB9ID0gcmVuZGVyO1xuXG4gICAgICAgIGxldCB2YWx1ZSA9IGluZGV4ICsgMTtcbiAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICAgICAgdGhpcy5yZXNldFN0YXR1cy5zZXQodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlYWRvbmx5ICYmIGFjdGlvbnMgJiYgYWN0aW9ucy51cGRhdGVGaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLnVwZGF0ZUZpZWxkVmFsdWUoe1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHBhdGg6IFtyZWNvcmRJZCEsIGZpZWxkLl9pZF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|