@ai-table/grid 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- package/components/cell-editors/select/select-editor.component.d.ts +15 -0
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -0
- package/components/field-menu/field-menu.component.d.ts +6 -6
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-property-editor/field-property-editor.component.d.ts +2 -1
- package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
- package/constants/editor.d.ts +1 -1
- package/constants/editor.d.ts.map +1 -1
- package/constants/field.d.ts +10 -4
- package/constants/field.d.ts.map +1 -1
- package/core/action/field.d.ts +6 -0
- package/core/action/field.d.ts.map +1 -1
- package/core/action/general.d.ts.map +1 -1
- package/core/action/index.d.ts +5 -0
- package/core/action/index.d.ts.map +1 -1
- package/core/action/record.d.ts +4 -0
- package/core/action/record.d.ts.map +1 -1
- package/core/constants/field.d.ts +2 -0
- package/core/constants/field.d.ts.map +1 -1
- package/core/types/action.d.ts +31 -2
- package/core/types/action.d.ts.map +1 -1
- package/core/types/core.d.ts +31 -10
- package/core/types/core.d.ts.map +1 -1
- package/core/utils/common.d.ts +2 -1
- package/core/utils/common.d.ts.map +1 -1
- package/core/utils/queries.d.ts +3 -1
- package/core/utils/queries.d.ts.map +1 -1
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +46 -0
- package/esm2022/components/field-menu/field-menu.component.mjs +6 -5
- package/esm2022/components/field-property-editor/field-property-editor.component.mjs +8 -5
- package/esm2022/constants/editor.mjs +8 -8
- package/esm2022/constants/field.mjs +15 -3
- package/esm2022/constants/grid.mjs +5 -5
- package/esm2022/core/action/field.mjs +43 -2
- package/esm2022/core/action/general.mjs +68 -14
- package/esm2022/core/action/record.mjs +22 -5
- package/esm2022/core/constants/field.mjs +19 -13
- package/esm2022/core/types/action.mjs +6 -1
- package/esm2022/core/types/core.mjs +11 -14
- package/esm2022/core/types/index.mjs +1 -1
- package/esm2022/core/utils/common.mjs +10 -1
- package/esm2022/core/utils/field.mjs +3 -3
- package/esm2022/core/utils/queries.mjs +36 -6
- package/esm2022/core/utils/record.mjs +3 -3
- package/esm2022/grid.component.mjs +40 -11
- package/esm2022/pipes/grid.mjs +1 -2
- package/esm2022/services/event.service.mjs +10 -3
- package/esm2022/services/selection.servive.mjs +64 -0
- package/esm2022/types/field.mjs +1 -1
- package/esm2022/types/grid.mjs +1 -1
- package/esm2022/utils/build.mjs +13 -5
- package/fesm2022/ai-table-grid.mjs +454 -182
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid.component.d.ts +13 -6
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/pipes/grid.d.ts.map +1 -1
- package/services/event.service.d.ts +2 -0
- package/services/event.service.d.ts.map +1 -1
- package/services/selection.servive.d.ts +16 -0
- package/services/selection.servive.d.ts.map +1 -0
- package/styles/styles.scss +70 -3
- package/types/field.d.ts +3 -3
- package/types/field.d.ts.map +1 -1
- package/types/grid.d.ts +7 -2
- package/types/grid.d.ts.map +1 -1
- package/utils/build.d.ts +2 -2
- package/utils/build.d.ts.map +1 -1
- package/components/cell-editors/single-select/single-select-editor.component.d.ts +0 -14
- package/components/cell-editors/single-select/single-select-editor.component.d.ts.map +0 -1
- package/esm2022/components/cell-editors/single-select/single-select-editor.component.mjs +0 -44
@@ -1,18 +1,15 @@
|
|
1
1
|
export var AITableFieldType;
|
2
2
|
(function (AITableFieldType) {
|
3
|
-
|
4
|
-
AITableFieldType[
|
5
|
-
AITableFieldType[
|
6
|
-
AITableFieldType[
|
7
|
-
|
8
|
-
AITableFieldType[
|
9
|
-
//
|
10
|
-
AITableFieldType[
|
11
|
-
|
12
|
-
|
13
|
-
// Checkbox = 11,
|
14
|
-
AITableFieldType[AITableFieldType["Rating"] = 12] = "Rating";
|
15
|
-
// Member = 13
|
3
|
+
AITableFieldType["text"] = "text";
|
4
|
+
AITableFieldType["richText"] = "rich_text";
|
5
|
+
AITableFieldType["select"] = "select";
|
6
|
+
AITableFieldType["number"] = "number";
|
7
|
+
AITableFieldType["date"] = "date";
|
8
|
+
AITableFieldType["member"] = "member";
|
9
|
+
// cascadeSelect = "cascade_select", // 包含单选和多选,参数复杂后续再进行设计
|
10
|
+
AITableFieldType["progress"] = "progress";
|
11
|
+
AITableFieldType["rate"] = "rate";
|
12
|
+
AITableFieldType["link"] = "link";
|
16
13
|
})(AITableFieldType || (AITableFieldType = {}));
|
17
14
|
export var AITableStatType;
|
18
15
|
(function (AITableStatType) {
|
@@ -35,4 +32,4 @@ export var AITableStatType;
|
|
35
32
|
AITableStatType[AITableStatType["PercentChecked"] = 16] = "PercentChecked";
|
36
33
|
AITableStatType[AITableStatType["PercentUnChecked"] = 17] = "PercentUnChecked";
|
37
34
|
})(AITableStatType || (AITableStatType = {}));
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvdHlwZXMvY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQU4sSUFBWSxnQkFXWDtBQVhELFdBQVksZ0JBQWdCO0lBQ3hCLGlDQUFhLENBQUE7SUFDYiwwQ0FBc0IsQ0FBQTtJQUN0QixxQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBYSxDQUFBO0lBQ2IscUNBQWlCLENBQUE7SUFDakIsMkRBQTJEO0lBQzNELHlDQUFxQixDQUFBO0lBQ3JCLGlDQUFhLENBQUE7SUFDYixpQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFYVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBVzNCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFtQlg7QUFuQkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFRLENBQUE7SUFDUiw2REFBWSxDQUFBO0lBQ1osdURBQVMsQ0FBQTtJQUNULHlEQUFVLENBQUE7SUFDVix5REFBVSxDQUFBO0lBQ1YscUVBQWdCLENBQUE7SUFDaEIsdUVBQWlCLENBQUE7SUFDakIsdUVBQWlCLENBQUE7SUFDakIsbURBQU8sQ0FBQTtJQUNQLDJEQUFXLENBQUE7SUFDWCxvREFBUSxDQUFBO0lBQ1Isb0RBQVEsQ0FBQTtJQUNSLDRFQUFvQixDQUFBO0lBQ3BCLGdGQUFzQixDQUFBO0lBQ3RCLDREQUFZLENBQUE7SUFDWixnRUFBYyxDQUFBO0lBQ2QsMEVBQW1CLENBQUE7SUFDbkIsOEVBQXFCLENBQUE7QUFDekIsQ0FBQyxFQW5CVyxlQUFlLEtBQWYsZUFBZSxRQW1CMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IEFJVGFibGVTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBJZCB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuXG5leHBvcnQgZW51bSBBSVRhYmxlRmllbGRUeXBlIHtcbiAgICB0ZXh0ID0gJ3RleHQnLCAvLyDljIXlkKvlpJrooYzmlofmnKxcbiAgICByaWNoVGV4dCA9ICdyaWNoX3RleHQnLCAvLyDljIXlkKvlpJrooYzmlofmnKxcbiAgICBzZWxlY3QgPSAnc2VsZWN0JywgLy8g5YyF5ZCr5Y2V6YCJ5ZKM5aSa6YCJXG4gICAgbnVtYmVyID0gJ251bWJlcicsXG4gICAgZGF0ZSA9ICdkYXRlJyxcbiAgICBtZW1iZXIgPSAnbWVtYmVyJywgLy8g5YyF5ZCr5Y2V5Liq5ZKM5aSa5LiqXG4gICAgLy8gY2FzY2FkZVNlbGVjdCA9IFwiY2FzY2FkZV9zZWxlY3RcIiwgLy8g5YyF5ZCr5Y2V6YCJ5ZKM5aSa6YCJ77yM5Y+C5pWw5aSN5p2C5ZCO57ut5YaN6L+b6KGM6K6+6K6hXG4gICAgcHJvZ3Jlc3MgPSAncHJvZ3Jlc3MnLFxuICAgIHJhdGUgPSAncmF0ZScsXG4gICAgbGluayA9ICdsaW5rJ1xufVxuXG5leHBvcnQgZW51bSBBSVRhYmxlU3RhdFR5cGUge1xuICAgIE5vbmUgPSAwLFxuICAgIENvdW50QWxsID0gMSxcbiAgICBFbXB0eSA9IDIsXG4gICAgRmlsbGVkID0gMyxcbiAgICBVbmlxdWUgPSA0LFxuICAgIFBlcmNlbnRFbXB0eSA9IDUsXG4gICAgUGVyY2VudEZpbGxlZCA9IDYsXG4gICAgUGVyY2VudFVuaXF1ZSA9IDcsXG4gICAgU3VtID0gOCxcbiAgICBBdmVyYWdlID0gOSxcbiAgICBNYXggPSAxMCxcbiAgICBNaW4gPSAxMSxcbiAgICBEYXRlUmFuZ2VPZkRheXMgPSAxMixcbiAgICBEYXRlUmFuZ2VPZk1vbnRocyA9IDEzLFxuICAgIENoZWNrZWQgPSAxNCxcbiAgICBVbkNoZWNrZWQgPSAxNSxcbiAgICBQZXJjZW50Q2hlY2tlZCA9IDE2LFxuICAgIFBlcmNlbnRVbkNoZWNrZWQgPSAxN1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJVGFibGVTZWxlY3RPcHRpb24ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJVGFibGVGaWVsZDxUID0gdW5rbm93bj4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHR5cGU6IEFJVGFibGVGaWVsZFR5cGU7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIGZyb3plbj86IGJvb2xlYW47XG4gICAgc3RhdFR5cGU/OiBBSVRhYmxlU3RhdFR5cGU7XG4gICAgaXNNdWx0aXBsZT86IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogVCB8IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgVGV4dEZpZWxkVmFsdWUgPSBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkVmFsdWUgPSBJZFtdOyAvLyDmlbDlrZdcblxuZXhwb3J0IHR5cGUgTnVtYmVyRmllbGRWYWx1ZSA9IG51bWJlcjtcblxuZXhwb3J0IHR5cGUgRGF0ZUZpZWxkVmFsdWUgPSB7IHRpbWVzdGFtcDogbnVtYmVyIH07IC8vIOaXtumXtOaIs1xuXG5leHBvcnQgdHlwZSBNZW1iZXJGaWVsZFZhbHVlID0gSWRbXTtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NGaWVsZFZhbHVlID0gbnVtYmVyOyAvLyBbMCwxXVxuXG5leHBvcnQgdHlwZSBSYXRlRmllbGRWYWx1ZSA9IDEgfCAyIHwgMyB8IDQgfCA1O1xuXG5leHBvcnQgdHlwZSBGaWVsZFZhbHVlID1cbiAgICB8IFRleHRGaWVsZFZhbHVlXG4gICAgfCBTZWxlY3RGaWVsZFZhbHVlXG4gICAgfCBOdW1iZXJGaWVsZFZhbHVlXG4gICAgfCBEYXRlRmllbGRWYWx1ZVxuICAgIHwgTWVtYmVyRmllbGRWYWx1ZVxuICAgIHwgUHJvZ3Jlc3NGaWVsZFZhbHVlXG4gICAgfCBSYXRlRmllbGRWYWx1ZVxuICAgIHwgYW55O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFJVGFibGVSZWNvcmQge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGaWVsZFZhbHVlPjtcbn1cblxuZXhwb3J0IHR5cGUgQUlUYWJsZVJlY29yZHMgPSBBSVRhYmxlUmVjb3JkW107XG5cbmV4cG9ydCB0eXBlIEFJVGFibGVGaWVsZHMgPSBBSVRhYmxlRmllbGRbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBSVRhYmxlVmFsdWUge1xuICAgIHJlY29yZHM6IEFJVGFibGVSZWNvcmRzO1xuICAgIGZpZWxkczogQUlUYWJsZUZpZWxkcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSVRhYmxlIHtcbiAgICByZWNvcmRzOiBXcml0YWJsZVNpZ25hbDxBSVRhYmxlUmVjb3Jkcz47XG4gICAgZmllbGRzOiBXcml0YWJsZVNpZ25hbDxBSVRhYmxlRmllbGRzPjtcbiAgICBhY3Rpb25zOiBBSVRhYmxlQWN0aW9uW107XG4gICAgc2VsZWN0aW9uOiBXcml0YWJsZVNpZ25hbDxBSVRhYmxlU2VsZWN0aW9uPjtcbiAgICBvbkNoYW5nZTogKCkgPT4gdm9pZDtcbiAgICBhcHBseTogKGFjdGlvbjogQUlUYWJsZUFjdGlvbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSVRhYmxlQ2hhbmdlT3B0aW9ucyB7XG4gICAgcmVjb3JkczogQUlUYWJsZVJlY29yZFtdO1xuICAgIGZpZWxkczogQUlUYWJsZUZpZWxkW107XG4gICAgYWN0aW9uczogQUlUYWJsZUFjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJVGFibGVGaWVsZEluZm8ge1xuICAgIHR5cGU6IEFJVGFibGVGaWVsZFR5cGU7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbiAgICB3aWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBSVBsdWdpbiA9IChhaVRhYmxlOiBBSVRhYmxlKSA9PiBBSVRhYmxlO1xuIl19
|
@@ -1,3 +1,3 @@
|
|
1
1
|
export * from './core';
|
2
2
|
export * from './action';
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb3JlL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uJzsiXX0=
|
@@ -1,10 +1,16 @@
|
|
1
1
|
import { Actions } from '../action';
|
2
2
|
import { FLUSHING } from './weak-map';
|
3
|
+
import { signal } from '@angular/core';
|
3
4
|
export function createAITable(records, fields) {
|
4
5
|
const aiTable = {
|
5
6
|
records,
|
6
7
|
fields,
|
7
8
|
actions: [],
|
9
|
+
selection: signal({
|
10
|
+
selectedRecords: new Map(),
|
11
|
+
selectedFields: new Map(),
|
12
|
+
selectedCells: new Map()
|
13
|
+
}),
|
8
14
|
onChange: () => { },
|
9
15
|
apply: (action) => {
|
10
16
|
aiTable.actions.push(action);
|
@@ -21,4 +27,7 @@ export function createAITable(records, fields) {
|
|
21
27
|
};
|
22
28
|
return aiTable;
|
23
29
|
}
|
24
|
-
|
30
|
+
export function isPathEqual(path, another) {
|
31
|
+
return path.length === another.length && path.every((n, i) => n === another[i]);
|
32
|
+
}
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvY29yZS91dGlscy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBa0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBdUMsRUFBRSxNQUFxQztJQUN4RyxNQUFNLE9BQU8sR0FBWTtRQUNyQixPQUFPO1FBQ1AsTUFBTTtRQUNOLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLE1BQU0sQ0FBQztZQUNkLGVBQWUsRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUMxQixjQUFjLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDekIsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFO1NBQzNCLENBQUM7UUFDRixRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztRQUNsQixLQUFLLEVBQUUsQ0FBQyxNQUFxQixFQUFFLEVBQUU7WUFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUN4QixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuQixPQUFPLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztLQUNKLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFVLEVBQUUsT0FBYTtJQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9uJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVBY3Rpb24sIEFJVGFibGVGaWVsZHMsIEFJVGFibGVSZWNvcmRzLCBQYXRoIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRkxVU0hJTkcgfSBmcm9tICcuL3dlYWstbWFwJztcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFJVGFibGUocmVjb3JkczogV3JpdGFibGVTaWduYWw8QUlUYWJsZVJlY29yZHM+LCBmaWVsZHM6IFdyaXRhYmxlU2lnbmFsPEFJVGFibGVGaWVsZHM+KTogQUlUYWJsZSB7XG4gICAgY29uc3QgYWlUYWJsZTogQUlUYWJsZSA9IHtcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgc2VsZWN0aW9uOiBzaWduYWwoe1xuICAgICAgICAgICAgc2VsZWN0ZWRSZWNvcmRzOiBuZXcgTWFwKCksXG4gICAgICAgICAgICBzZWxlY3RlZEZpZWxkczogbmV3IE1hcCgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRDZWxsczogbmV3IE1hcCgpXG4gICAgICAgIH0pLFxuICAgICAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgICAgIGFwcGx5OiAoYWN0aW9uOiBBSVRhYmxlQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBhaVRhYmxlLmFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgQWN0aW9ucy50cmFuc2Zvcm0oYWlUYWJsZSwgYWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKCFGTFVTSElORy5nZXQoYWlUYWJsZSkpIHtcbiAgICAgICAgICAgICAgICBGTFVTSElORy5zZXQoYWlUYWJsZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIEZMVVNISU5HLnNldChhaVRhYmxlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGFpVGFibGUub25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5hY3Rpb25zID0gW107XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBhaVRhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoRXF1YWwocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA9PT0gYW5vdGhlci5sZW5ndGggJiYgcGF0aC5ldmVyeSgobiwgaSkgPT4gbiA9PT0gYW5vdGhlcltpXSk7XG59XG4iXX0=
|
@@ -4,12 +4,12 @@ import { idCreator } from './id-creator';
|
|
4
4
|
export function getDefaultFieldValue(type) {
|
5
5
|
return '';
|
6
6
|
}
|
7
|
-
export function createDefaultFieldName(aiTable, type = AITableFieldType.
|
7
|
+
export function createDefaultFieldName(aiTable, type = AITableFieldType.text) {
|
8
8
|
const fields = aiTable.fields();
|
9
9
|
const count = fields.filter((item) => item.type === type).length;
|
10
10
|
return count === 0 ? FieldsMap[type].name : FieldsMap[type].name + count;
|
11
11
|
}
|
12
|
-
export function createDefaultField(aiTable, type = AITableFieldType.
|
12
|
+
export function createDefaultField(aiTable, type = AITableFieldType.text) {
|
13
13
|
return { id: idCreator(), type, name: createDefaultFieldName(aiTable, type) };
|
14
14
|
}
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb3JlL3V0aWxzL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQVcsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBc0I7SUFDdkQsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQWdCLEVBQUUsT0FBeUIsZ0JBQWdCLENBQUMsSUFBSTtJQUNuRyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakUsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsT0FBeUIsZ0JBQWdCLENBQUMsSUFBSTtJQUMvRixPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkc01hcCB9IGZyb20gJy4uL2NvbnN0YW50cy9maWVsZCc7XG5pbXBvcnQgeyBBSVRhYmxlLCBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaWRDcmVhdG9yIH0gZnJvbSAnLi9pZC1jcmVhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRGaWVsZFZhbHVlKHR5cGU6IEFJVGFibGVGaWVsZFR5cGUpIHtcbiAgICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0RmllbGROYW1lKGFpVGFibGU6IEFJVGFibGUsIHR5cGU6IEFJVGFibGVGaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlLnRleHQpIHtcbiAgICBjb25zdCBmaWVsZHMgPSBhaVRhYmxlLmZpZWxkcygpO1xuICAgIGNvbnN0IGNvdW50ID0gZmllbGRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS50eXBlID09PSB0eXBlKS5sZW5ndGg7XG4gICAgcmV0dXJuIGNvdW50ID09PSAwID8gRmllbGRzTWFwW3R5cGVdLm5hbWUgOiBGaWVsZHNNYXBbdHlwZV0ubmFtZSArIGNvdW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEZpZWxkKGFpVGFibGU6IEFJVGFibGUsIHR5cGU6IEFJVGFibGVGaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlLnRleHQpIHtcbiAgICByZXR1cm4geyBpZDogaWRDcmVhdG9yKCksIHR5cGUsIG5hbWU6IGNyZWF0ZURlZmF1bHRGaWVsZE5hbWUoYWlUYWJsZSwgdHlwZSkgfTtcbn1cbiJdfQ==
|
@@ -12,14 +12,44 @@ export const AITableQueries = {
|
|
12
12
|
if (!isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {
|
13
13
|
return [fieldIndex];
|
14
14
|
}
|
15
|
-
throw new Error(`
|
15
|
+
throw new Error(`can not find the path: ${JSON.stringify({ ...(field || {}), ...(record || {}) })}`);
|
16
16
|
},
|
17
17
|
getFieldValue(aiTable, path) {
|
18
|
-
if (!aiTable
|
19
|
-
throw new Error(`
|
18
|
+
if (!aiTable) {
|
19
|
+
throw new Error(`aiTable does not exist`);
|
20
20
|
}
|
21
|
-
|
22
|
-
|
21
|
+
if (!aiTable.records()) {
|
22
|
+
throw new Error(`aiTable has no records`);
|
23
|
+
}
|
24
|
+
if (!aiTable.fields()) {
|
25
|
+
throw new Error(`aiTable has no fields`);
|
26
|
+
}
|
27
|
+
if (!path) {
|
28
|
+
throw new Error(`path does not exist as path [${path}]`);
|
29
|
+
}
|
30
|
+
const field = aiTable.fields()[path[1]];
|
31
|
+
if (!field) {
|
32
|
+
throw new Error(`can not find field at path [${path}]`);
|
33
|
+
}
|
34
|
+
return aiTable.records()[path[0]].values[field.id];
|
35
|
+
},
|
36
|
+
getField(aiTable, path) {
|
37
|
+
if (!aiTable) {
|
38
|
+
throw new Error(`aiTable does not exist`);
|
39
|
+
}
|
40
|
+
if (!path) {
|
41
|
+
throw new Error(`path does not exist as path [${path}]`);
|
42
|
+
}
|
43
|
+
return aiTable.fields()[path[0]];
|
44
|
+
},
|
45
|
+
getRecord(aiTable, path) {
|
46
|
+
if (!aiTable) {
|
47
|
+
throw new Error(`aiTable does not exist`);
|
48
|
+
}
|
49
|
+
if (!path) {
|
50
|
+
throw new Error(`path does not exist as path [${path}]`);
|
51
|
+
}
|
52
|
+
return aiTable.records()[path[0]];
|
23
53
|
}
|
24
54
|
};
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvdXRpbHMvcXVlcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdwRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsUUFBUSxDQUFDLE9BQWdCLEVBQUUsS0FBb0IsRUFBRSxNQUFzQjtRQUNuRSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0csT0FBTyxDQUFDLFdBQVksRUFBRSxVQUFXLENBQXFCLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPLENBQUMsV0FBVyxDQUFpQixDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEQsT0FBTyxDQUFDLFVBQVUsQ0FBZ0IsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxJQUFzQjtRQUNsRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRLENBQUMsT0FBZ0IsRUFBRSxJQUFpQjtRQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0IsRUFBRSxJQUFrQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgUGF0aCwgQUlUYWJsZSwgQUlUYWJsZUZpZWxkLCBBSVRhYmxlUmVjb3JkLCBBSUZpZWxkVmFsdWVQYXRoLCBBSVJlY29yZFBhdGgsIEFJRmllbGRQYXRoIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgQUlUYWJsZVF1ZXJpZXMgPSB7XG4gICAgZmluZFBhdGgoYWlUYWJsZTogQUlUYWJsZSwgZmllbGQ/OiBBSVRhYmxlRmllbGQsIHJlY29yZD86IEFJVGFibGVSZWNvcmQpOiBQYXRoIHtcbiAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSByZWNvcmQgJiYgYWlUYWJsZS5yZWNvcmRzKCkuaW5kZXhPZihyZWNvcmQpO1xuICAgICAgICBjb25zdCBmaWVsZEluZGV4ID0gZmllbGQgJiYgYWlUYWJsZS5maWVsZHMoKS5pbmRleE9mKGZpZWxkKTtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChyZWNvcmRJbmRleCkgJiYgcmVjb3JkSW5kZXggPiAtMSAmJiAhaXNVbmRlZmluZWRPck51bGwoZmllbGRJbmRleCkgJiYgZmllbGRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gW3JlY29yZEluZGV4ISwgZmllbGRJbmRleCFdIGFzIEFJRmllbGRWYWx1ZVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChyZWNvcmRJbmRleCkgJiYgcmVjb3JkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtyZWNvcmRJbmRleF0gYXMgQUlSZWNvcmRQYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoZmllbGRJbmRleCkgJiYgZmllbGRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gW2ZpZWxkSW5kZXhdIGFzIEFJRmllbGRQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY2FuIG5vdCBmaW5kIHRoZSBwYXRoOiAke0pTT04uc3RyaW5naWZ5KHsgLi4uKGZpZWxkIHx8IHt9KSwgLi4uKHJlY29yZCB8fCB7fSkgfSl9YCk7XG4gICAgfSxcbiAgICBnZXRGaWVsZFZhbHVlKGFpVGFibGU6IEFJVGFibGUsIHBhdGg6IFtudW1iZXIsIG51bWJlcl0pOiBhbnkge1xuICAgICAgICBpZiAoIWFpVGFibGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYWlUYWJsZSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWlUYWJsZS5yZWNvcmRzKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYWlUYWJsZSBoYXMgbm8gcmVjb3Jkc2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWlUYWJsZS5maWVsZHMoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBhaVRhYmxlIGhhcyBubyBmaWVsZHNgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGF0aCBkb2VzIG5vdCBleGlzdCBhcyBwYXRoIFske3BhdGh9XWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSBhaVRhYmxlLmZpZWxkcygpW3BhdGhbMV1dO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbiBub3QgZmluZCBmaWVsZCBhdCBwYXRoIFske3BhdGh9XWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhaVRhYmxlLnJlY29yZHMoKVtwYXRoWzBdXS52YWx1ZXNbZmllbGQuaWRdO1xuICAgIH0sXG5cbiAgICBnZXRGaWVsZChhaVRhYmxlOiBBSVRhYmxlLCBwYXRoOiBBSUZpZWxkUGF0aCk6IEFJVGFibGVGaWVsZCB7XG4gICAgICAgIGlmICghYWlUYWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBhaVRhYmxlIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHBhdGggZG9lcyBub3QgZXhpc3QgYXMgcGF0aCBbJHtwYXRofV1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWlUYWJsZS5maWVsZHMoKVtwYXRoWzBdXTtcbiAgICB9LFxuXG4gICAgZ2V0UmVjb3JkKGFpVGFibGU6IEFJVGFibGUsIHBhdGg6IEFJUmVjb3JkUGF0aCk6IEFJVGFibGVSZWNvcmQge1xuICAgICAgICBpZiAoIWFpVGFibGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYWlUYWJsZSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXRoIGRvZXMgbm90IGV4aXN0IGFzIHBhdGggWyR7cGF0aH1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFpVGFibGUucmVjb3JkcygpW3BhdGhbMF1dO1xuICAgIH1cbn07XG4iXX0=
|
@@ -3,11 +3,11 @@ import { idCreator } from './id-creator';
|
|
3
3
|
export function getDefaultRecord(fields) {
|
4
4
|
const newRow = {
|
5
5
|
id: idCreator(),
|
6
|
-
|
6
|
+
values: {}
|
7
7
|
};
|
8
8
|
fields.map((item) => {
|
9
|
-
newRow.
|
9
|
+
newRow.values[item.id] = getDefaultFieldValue(item.type);
|
10
10
|
});
|
11
11
|
return newRow;
|
12
12
|
}
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvY29yZS91dGlscy9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQXFCO0lBQ2xELE1BQU0sTUFBTSxHQUFrQjtRQUMxQixFQUFFLEVBQUUsU0FBUyxFQUFFO1FBQ2YsTUFBTSxFQUFFLEVBQUU7S0FDYixDQUFDO0lBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVRhYmxlRmllbGRzLCBBSVRhYmxlUmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEZpZWxkVmFsdWUgfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IGlkQ3JlYXRvciB9IGZyb20gJy4vaWQtY3JlYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0UmVjb3JkKGZpZWxkczogQUlUYWJsZUZpZWxkcykge1xuICAgIGNvbnN0IG5ld1JvdzogQUlUYWJsZVJlY29yZCA9IHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB2YWx1ZXM6IHt9XG4gICAgfTtcbiAgICBmaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIG5ld1Jvdy52YWx1ZXNbaXRlbS5pZF0gPSBnZXREZWZhdWx0RmllbGRWYWx1ZShpdGVtLnR5cGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdSb3c7XG59XG4iXX0=
|
@@ -14,41 +14,62 @@ import { ThyRate } from 'ngx-tethys/rate';
|
|
14
14
|
import { FormsModule } from '@angular/forms';
|
15
15
|
import { ThyFlexibleText } from 'ngx-tethys/flexible-text';
|
16
16
|
import { ThyTooltipModule, ThyTooltipService } from 'ngx-tethys/tooltip';
|
17
|
+
import { ThyCheckboxModule } from 'ngx-tethys/checkbox';
|
17
18
|
import { ThyStopPropagationDirective } from 'ngx-tethys/shared';
|
18
19
|
import { FieldMenu } from './components/field-menu/field-menu.component';
|
19
20
|
import { ThyAction } from 'ngx-tethys/action';
|
20
21
|
import { ThyDropdownDirective, ThyDropdownMenuComponent } from 'ngx-tethys/dropdown';
|
21
22
|
import { DefaultFieldMenus } from './constants';
|
22
23
|
import { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITableGridFieldService } from './services/field.service';
|
24
|
+
import { AITableGridSelectionService } from './services/selection.servive';
|
23
25
|
import * as i0 from "@angular/core";
|
24
26
|
import * as i1 from "./services/event.service";
|
25
|
-
import * as i2 from "./services/
|
26
|
-
import * as i3 from "
|
27
|
+
import * as i2 from "./services/selection.servive";
|
28
|
+
import * as i3 from "./services/field.service";
|
29
|
+
import * as i4 from "@angular/common";
|
30
|
+
import * as i5 from "@angular/forms";
|
31
|
+
import * as i6 from "ngx-tethys/checkbox";
|
27
32
|
export class AITableGrid {
|
28
|
-
|
33
|
+
get isSelectedAll() {
|
34
|
+
return this.aiTable.selection().selectedRecords.size === this.aiRecords().length;
|
35
|
+
}
|
36
|
+
constructor(elementRef, aiTableGridEventService, aiTableGridSelectionService, aiTableGridFieldService, ngZone) {
|
29
37
|
this.elementRef = elementRef;
|
30
38
|
this.aiTableGridEventService = aiTableGridEventService;
|
39
|
+
this.aiTableGridSelectionService = aiTableGridSelectionService;
|
31
40
|
this.aiTableGridFieldService = aiTableGridFieldService;
|
41
|
+
this.ngZone = ngZone;
|
32
42
|
this.aiRecords = model.required();
|
33
43
|
this.aiFields = model.required();
|
34
44
|
this.aiRowHeight = input();
|
35
45
|
this.aiFieldConfig = input();
|
36
46
|
this.aiReadonly = input();
|
47
|
+
this.aiPlugins = input();
|
37
48
|
this.AITableFieldType = AITableFieldType;
|
38
49
|
this.takeUntilDestroyed = takeUntilDestroyed();
|
39
50
|
this.onChange = output();
|
40
51
|
this.aiTableInitialized = output();
|
41
52
|
this.gridData = computed(() => {
|
42
|
-
return buildGridData(this.aiRecords(), this.aiFields());
|
53
|
+
return buildGridData(this.aiRecords(), this.aiFields(), this.aiTable.selection());
|
43
54
|
});
|
44
55
|
}
|
45
56
|
ngOnInit() {
|
46
57
|
this.initAITable();
|
47
58
|
this.initService();
|
48
59
|
this.buildFieldMenus();
|
60
|
+
this.ngZone.runOutsideAngular(() => {
|
61
|
+
this.aiTableGridEventService.mousedownEvent$.pipe(this.takeUntilDestroyed).subscribe((event) => {
|
62
|
+
if (event?.target) {
|
63
|
+
this.aiTableGridSelectionService.updateSelect(event);
|
64
|
+
}
|
65
|
+
});
|
66
|
+
});
|
49
67
|
}
|
50
68
|
initAITable() {
|
51
69
|
this.aiTable = createAITable(this.aiRecords, this.aiFields);
|
70
|
+
this.aiPlugins()?.forEach((plugin) => {
|
71
|
+
this.aiTable = plugin(this.aiTable);
|
72
|
+
});
|
52
73
|
this.aiTableInitialized.emit(this.aiTable);
|
53
74
|
this.aiTable.onChange = () => {
|
54
75
|
this.onChange.emit({
|
@@ -60,6 +81,7 @@ export class AITableGrid {
|
|
60
81
|
}
|
61
82
|
initService() {
|
62
83
|
this.aiTableGridEventService.initialize(this.aiTable, this.aiFieldConfig()?.fieldPropertyEditor);
|
84
|
+
this.aiTableGridSelectionService.initialize(this.aiTable);
|
63
85
|
this.aiTableGridEventService.registerEvents(this.elementRef.nativeElement);
|
64
86
|
this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());
|
65
87
|
AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);
|
@@ -70,12 +92,18 @@ export class AITableGrid {
|
|
70
92
|
addRecord() {
|
71
93
|
Actions.addRecord(this.aiTable, getDefaultRecord(this.aiFields()), [this.aiRecords().length]);
|
72
94
|
}
|
95
|
+
selectRecord(recordId) {
|
96
|
+
this.aiTableGridSelectionService.selectRecord(recordId);
|
97
|
+
}
|
98
|
+
toggleSelectAll(checked) {
|
99
|
+
this.aiTableGridSelectionService.toggleSelectAll(checked);
|
100
|
+
}
|
73
101
|
addField(gridColumnBlank) {
|
74
|
-
const field = signal(createDefaultField(this.aiTable, AITableFieldType.
|
102
|
+
const field = signal(createDefaultField(this.aiTable, AITableFieldType.text));
|
75
103
|
this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);
|
76
104
|
}
|
77
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AITableGrid, deps: [{ token: i0.ElementRef }, { token: i1.AITableGridEventService }, { token: i2.AITableGridFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", inputs: { aiRecords: { classPropertyName: "aiRecords", publicName: "aiRecords", isSignal: true, isRequired: true, transformFunction: null }, aiFields: { classPropertyName: "aiFields", publicName: "aiFields", isSignal: true, isRequired: true, transformFunction: null }, aiRowHeight: { classPropertyName: "aiRowHeight", publicName: "aiRowHeight", isSignal: true, isRequired: false, transformFunction: null }, aiFieldConfig: { classPropertyName: "aiFieldConfig", publicName: "aiFieldConfig", isSignal: true, isRequired: false, transformFunction: null }, aiReadonly: { classPropertyName: "aiReadonly", publicName: "aiReadonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { aiRecords: "aiRecordsChange", aiFields: "aiFieldsChange", onChange: "onChange", aiTableInitialized: "aiTableInitialized" }, host: { classAttribute: "ai-table-grid" }, providers: [ThyTooltipService, AITableGridEventService, AITableGridFieldService], ngImport: i0, template: "<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell\">\n <
|
105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AITableGrid, deps: [{ token: i0.ElementRef }, { token: i1.AITableGridEventService }, { token: i2.AITableGridSelectionService }, { token: i3.AITableGridFieldService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", inputs: { aiRecords: { classPropertyName: "aiRecords", publicName: "aiRecords", isSignal: true, isRequired: true, transformFunction: null }, aiFields: { classPropertyName: "aiFields", publicName: "aiFields", isSignal: true, isRequired: true, transformFunction: null }, aiRowHeight: { classPropertyName: "aiRowHeight", publicName: "aiRowHeight", isSignal: true, isRequired: false, transformFunction: null }, aiFieldConfig: { classPropertyName: "aiFieldConfig", publicName: "aiFieldConfig", isSignal: true, isRequired: false, transformFunction: null }, aiReadonly: { classPropertyName: "aiReadonly", publicName: "aiReadonly", isSignal: true, isRequired: false, transformFunction: null }, aiPlugins: { classPropertyName: "aiPlugins", publicName: "aiPlugins", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { aiRecords: "aiRecordsChange", aiFields: "aiFieldsChange", onChange: "onChange", aiTableInitialized: "aiTableInitialized" }, host: { classAttribute: "ai-table-grid" }, providers: [ThyTooltipService, AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], ngImport: i0, template: "<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field.id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field.id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field.id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field.id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record.id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: aiTable.selection().selectedRecords.has(record.id) }\">\n <div class=\"grid-row-index\">\n <label\n [ngClass]=\"record.checked ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record.checked\"\n (ngModelChange)=\"selectRecord(record.id)\"\n ></label>\n <span [ngClass]=\"record.checked ? 'grid-row-no-number' : 'grid-row-number'\"> {{ index + 1 }} </span>\n </div>\n @for (field of gridData().fields; track $index) {\n <div\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record.id) || aiTable.selection().selectedFields.has(field.id),\n selected: aiTable.selection().selectedCells.get(record.id)?.hasOwnProperty(field.id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field.id]\"\n [attr.recordId]=\"[record.id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n #cell\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @if (!field.isMultiple && record.values[field.id] | selectOption: field['options']; as selectedOption) {\n <thy-tag [thyColor]=\"selectedOption!.color!\">{{ selectedOption.name }}</thy-tag>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field.id] | thyDatePickerFormat }}\n }\n @case (AITableFieldType.rate) {\n <thy-rate [(ngModel)]=\"record.values[field.id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field.id]?.text\"\n [href]=\"record.values[field.id]?.url\"\n target=\"_blank\"\n >{{ record.values[field.id]?.text }}</a\n >\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field.id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SelectOptionPipe, name: "selectOption" }, { kind: "component", type: ThyTag, selector: "thy-tag,[thyTag]", inputs: ["thyTag", "thyShape", "thyColor", "thyTheme", "thySize", "thyHoverable"] }, { kind: "ngmodule", type: ThyPopoverModule }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyRate, selector: "thy-rate", inputs: ["thyCount", "thyDisabled", "thyAllowHalf", "thyAllowClear", "thyTooltips", "thyIconTemplate"], outputs: ["thyItemHoverChange"] }, { kind: "pipe", type: ThyDatePickerFormatPipe, name: "thyDatePickerFormat" }, { kind: "ngmodule", type: ThyTooltipModule }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "component", type: FieldMenu, selector: "field-menu", inputs: ["fieldId", "aiTable", "fieldMenus", "origin"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: ThyDropdownDirective, selector: "[thyDropdown]", inputs: ["thyDropdownMenu", "thyDropdown", "thyTrigger", "thyShowDelay", "thyHideDelay", "thyActiveClass", "thyPopoverOptions", "thyPlacement", "thyMenuInsideClosable", "thyPanelClass"], outputs: ["thyActiveChange"] }, { kind: "component", type: ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth", "thyImmediateRender"] }, { kind: "ngmodule", type: ThyCheckboxModule }, { kind: "component", type: i6.ThyCheckbox, selector: "thy-checkbox,[thy-checkbox],[thyCheckbox]", inputs: ["thyIndeterminate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
79
107
|
}
|
80
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AITableGrid, decorators: [{
|
81
109
|
type: Component,
|
@@ -100,7 +128,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
100
128
|
FieldMenu,
|
101
129
|
ThyAction,
|
102
130
|
ThyDropdownDirective,
|
103
|
-
ThyDropdownMenuComponent
|
104
|
-
|
105
|
-
}]
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV4QyxPQUFPLEVBQ0gsT0FBTyxFQUNQLGFBQWEsRUFDYixnQkFBZ0IsRUFJaEIsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUNyQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDaEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9B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Qzt3QkFDRixLQUFLLEVBQUUsZUFBZTtxQkFDekIsV0FDUTt3QkFDTCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixNQUFNO3dCQUNOLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsMkJBQTJCO3dCQUMzQixTQUFTO3dCQUNULFNBQVM7d0JBQ1Qsb0JBQW9CO3dCQUNwQix3QkFBd0I7cUJBQzNCLGFBQ1UsQ0FBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbnB1dCwgbW9kZWwsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdGb3JPZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25QaXBlIH0gZnJvbSAnLi9waXBlcy9ncmlkJztcbmltcG9ydCB7IFRoeVRhZyB9IGZyb20gJ25neC10ZXRoeXMvdGFnJztcbmltcG9ydCB7IFRoeVBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgYnVpbGRHcmlkRGF0YSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQUlGaWVsZENvbmZpZywgQUlUYWJsZUZpZWxkTWVudSwgQUlUYWJsZVJvd0hlaWdodCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBBY3Rpb25zLFxuICAgIGNyZWF0ZUFJVGFibGUsXG4gICAgZ2V0RGVmYXVsdFJlY29yZCxcbiAgICBBSVRhYmxlLFxuICAgIEFJVGFibGVDaGFuZ2VPcHRpb25zLFxuICAgIEFJVGFibGVGaWVsZHMsXG4gICAgQUlUYWJsZUZpZWxkVHlwZSxcbiAgICBBSVRhYmxlUmVjb3JkcyxcbiAgICBjcmVhdGVEZWZhdWx0RmllbGRcbn0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IgfSBmcm9tICcuL2NvbXBvbmVudHMvZmllbGQtcHJvcGVydHktZWRpdG9yL2ZpZWxkLXByb3BlcnR5LWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5RGF0ZVBpY2tlckZvcm1hdFBpcGUgfSBmcm9tICduZ3gtdGV0aHlzL2RhdGUtcGlja2VyJztcbmltcG9ydCB7IFRoeVJhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3JhdGUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgVGh5VG9vbHRpcE1vZHVsZSwgVGh5VG9vbHRpcFNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgRmllbGRNZW51IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkLW1lbnUvZmllbGQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5QWN0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9hY3Rpb24nO1xuaW1wb3J0IHsgVGh5RHJvcGRvd25EaXJlY3RpdmUsIFRoeURyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZHJvcGRvd24nO1xuaW1wb3J0IHsgRGVmYXVsdEZpZWxkTWVudXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLCBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmllbGQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWktdGFibGUtZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2FpLXRhYmxlLWdyaWQnXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTZWxlY3RPcHRpb25QaXBlLFxuICAgICAgICBUaHlUYWcsXG4gICAgICAgIFRoeVBvcG92ZXJNb2R1bGUsXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeVJhdGUsXG4gICAgICAgIEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yLFxuICAgICAgICBUaHlEYXRlUGlja2VyRm9ybWF0UGlwZSxcbiAgICAgICAgVGh5VG9vbHRpcE1vZHVsZSxcbiAgICAgICAgVGh5RmxleGlibGVUZXh0LFxuICAgICAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIEZpZWxkTWVudSxcbiAgICAgICAgVGh5QWN0aW9uLFxuICAgICAgICBUaHlEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtUaHlUb29sdGlwU2VydmljZSwgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UsIEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlR3JpZCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgYWlSZWNvcmRzID0gbW9kZWwucmVxdWlyZWQ8QUlUYWJsZVJlY29yZHM+KCk7XG5cbiAgICBhaUZpZWxkcyA9IG1vZGVsLnJlcXVpcmVkPEFJVGFibGVGaWVsZHM+KCk7XG5cbiAgICBhaVJvd0hlaWdodCA9IGlucHV0PEFJVGFibGVSb3dIZWlnaHQ+KCk7XG5cbiAgICBhaUZpZWxkQ29uZmlnID0gaW5wdXQ8QUlGaWVsZENvbmZpZz4oKTtcblxuICAgIGFpUmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gICAgQUlUYWJsZUZpZWxkVHlwZSA9IEFJVGFibGVGaWVsZFR5cGU7XG5cbiAgICB0YWtlVW50aWxEZXN0cm95ZWQgPSB0YWtlVW50aWxEZXN0cm95ZWQoKTtcblxuICAgIGFpVGFibGUhOiBBSVRhYmxlO1xuXG4gICAgb25DaGFuZ2UgPSBvdXRwdXQ8QUlUYWJsZUNoYW5nZU9wdGlvbnM+KCk7XG5cbiAgICBhaVRhYmxlSW5pdGlhbGl6ZWQgPSBvdXRwdXQ8QUlUYWJsZT4oKTtcblxuICAgIGZpZWxkTWVudXMhOiBBSVRhYmxlRmllbGRNZW51W107XG5cbiAgICBncmlkRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkR3JpZERhdGEodGhpcy5haVJlY29yZHMoKSwgdGhpcy5haUZpZWxkcygpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgYWlUYWJsZUdyaWRFdmVudFNlcnZpY2U6IEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFpVGFibGVHcmlkRmllbGRTZXJ2aWNlOiBBSVRhYmxlR3JpZEZpZWxkU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRBSVRhYmxlKCk7XG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5idWlsZEZpZWxkTWVudXMoKTtcbiAgICB9XG5cbiAgICBpbml0QUlUYWJsZSgpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlID0gY3JlYXRlQUlUYWJsZSh0aGlzLmFpUmVjb3JkcywgdGhpcy5haUZpZWxkcyk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUluaXRpYWxpemVkLmVtaXQodGhpcy5haVRhYmxlKTtcbiAgICAgICAgdGhpcy5haVRhYmxlLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICByZWNvcmRzOiB0aGlzLmFpUmVjb3JkcygpLFxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5haUZpZWxkcygpLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IHRoaXMuYWlUYWJsZS5hY3Rpb25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbml0U2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5pbml0aWFsaXplKHRoaXMuYWlUYWJsZSwgdGhpcy5haUZpZWxkQ29uZmlnKCk/LmZpZWxkUHJvcGVydHlFZGl0b3IpO1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyRXZlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5pbml0QUlGaWVsZENvbmZpZyh0aGlzLmFpRmllbGRDb25maWcoKSk7XG4gICAgICAgIEFJX1RBQkxFX0dSSURfRklFTERfU0VSVklDRV9NQVAuc2V0KHRoaXMuYWlUYWJsZSwgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZSk7XG4gICAgfVxuXG4gICAgYnVpbGRGaWVsZE1lbnVzKCkge1xuICAgICAgICB0aGlzLmZpZWxkTWVudXMgPSB0aGlzLmFpRmllbGRDb25maWcoKT8uZmllbGRNZW51cyA/PyBEZWZhdWx0RmllbGRNZW51cztcbiAgICB9XG5cbiAgICBhZGRSZWNvcmQoKSB7XG4gICAgICAgIEFjdGlvbnMuYWRkUmVjb3JkKHRoaXMuYWlUYWJsZSwgZ2V0RGVmYXVsdFJlY29yZCh0aGlzLmFpRmllbGRzKCkpLCBbdGhpcy5haVJlY29yZHMoKS5sZW5ndGhdKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZChncmlkQ29sdW1uQmxhbms6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gc2lnbmFsKGNyZWF0ZURlZmF1bHRGaWVsZCh0aGlzLmFpVGFibGUsIEFJVGFibGVGaWVsZFR5cGUuVGV4dCkpO1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRmllbGRTZXJ2aWNlLmVkaXRGaWVsZFByb3BlcnR5KGdyaWRDb2x1bW5CbGFuaywgdGhpcy5haVRhYmxlLCBmaWVsZCwgZmFsc2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkLWhlYWRlciBkLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2x1bW4tY2hlY2tib3ggZ3JpZC1jZWxsXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAvPlxuICAgIDwvZGl2PlxuICAgIEBmb3IgKGZpZWxkIG9mIGdyaWREYXRhKCkuZmllbGRzOyB0cmFjayBmaWVsZC5pZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jZWxsIGdyaWQtZmllbGRcIiAjZmllbGRBY3Rpb24+XG4gICAgICAgICAgICB7eyBmaWVsZC5uYW1lIH19XG4gICAgICAgICAgICA8YSB0aHlBY3Rpb24gdGh5QWN0aXZlQ2xhc3M9XCJhY3RpdmVcIiB0aHlJY29uPVwibW9yZS12ZXJ0aWNhbFwiIFt0aHlEcm9wZG93bl09XCJmaWVsZE1lbnVcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgICAgICAgPHRoeS1kcm9wZG93bi1tZW51ICNmaWVsZE1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZC1tZW51IFtvcmlnaW5dPVwiZmllbGRBY3Rpb25cIiBbZmllbGRdPVwiZmllbGRcIiBbYWlUYWJsZV09XCJhaVRhYmxlXCIgW2ZpZWxkTWVudXNdPVwiZmllbGRNZW51c1wiPjwvZmllbGQtbWVudT5cbiAgICAgICAgICAgICAgICA8L3RoeS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImdyaWQtY29sdW1uLWJsYW5rIGN1cnNvci1wb2ludGVyXCIgI2dyaWRDb2x1bW5CbGFuayAoY2xpY2spPVwiYWRkRmllbGQoZ3JpZENvbHVtbkJsYW5rKVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJwbHVzXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtYm9keSBkLWZsZXhcIj5cbiAgICBAZm9yIChyZWNvcmQgb2YgZ3JpZERhdGEoKS5yZWNvcmRzOyB0cmFjayByZWNvcmQuaWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1yb3cgZC1mbGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1yb3ctaW5kZXhcIj5cbiAgICAgICAgICAgICAgICB7eyBpbmRleCArIDEgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgZ3JpZERhdGEoKS5maWVsZHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWNlbGxcIiBbYXR0ci50eXBlXT1cIltmaWVsZC50eXBlXVwiIFthdHRyLmZpZWxkSWRdPVwiW2ZpZWxkLmlkXVwiIFthdHRyLnJlY29yZElkXT1cIltyZWNvcmQuaWRdXCIgI2NlbGw+XG4gICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLlNpbmdsZVNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocmVjb3JkLnZhbHVlW2ZpZWxkLmlkXSB8IHNlbGVjdE9wdGlvbjogZmllbGRbJ29wdGlvbnMnXTsgYXMgc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS10YWcgW3RoeUNvbG9yXT1cInNlbGVjdGVkT3B0aW9uIS5jb2xvciFcIj57eyBzZWxlY3RlZE9wdGlvbi5uYW1lIH19PC90aHktdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLkRhdGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlW2ZpZWxkLmlkXSB8IHRoeURhdGVQaWNrZXJGb3JtYXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLlJhdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktcmF0ZSBbKG5nTW9kZWwpXT1cInJlY29yZC52YWx1ZVtmaWVsZC5pZF1cIj48L3RoeS1yYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUuTGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayBwbC00IHByLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5RmxleGlibGVUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlUb29sdGlwQ29udGVudF09XCJyZWNvcmQudmFsdWVbZmllbGQuaWRdPy50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicmVjb3JkLnZhbHVlW2ZpZWxkLmlkXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHJlY29yZC52YWx1ZVtmaWVsZC5pZF0/LnRleHQgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlW2ZpZWxkLmlkXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2x1bW4tYmxhbmtcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJncmlkLXJvdy1pbnNlcnQgZ3JpZC1yb3cgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkUmVjb3JkKClcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGx1c1wiPjwvdGh5LWljb24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAjYWN0aXZlQm9yZGVyIGNsYXNzPVwiYWN0aXZlLWJvcmRlclwiPjwvZGl2PlxuIl19
|
131
|
+
ThyDropdownMenuComponent,
|
132
|
+
ThyCheckboxModule
|
133
|
+
], providers: [ThyTooltipService, AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], template: "<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field.id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field.id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field.id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field.id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record.id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: aiTable.selection().selectedRecords.has(record.id) }\">\n <div class=\"grid-row-index\">\n <label\n [ngClass]=\"record.checked ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record.checked\"\n (ngModelChange)=\"selectRecord(record.id)\"\n ></label>\n <span [ngClass]=\"record.checked ? 'grid-row-no-number' : 'grid-row-number'\"> {{ index + 1 }} </span>\n </div>\n @for (field of gridData().fields; track $index) {\n <div\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record.id) || aiTable.selection().selectedFields.has(field.id),\n selected: aiTable.selection().selectedCells.get(record.id)?.hasOwnProperty(field.id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field.id]\"\n [attr.recordId]=\"[record.id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n #cell\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @if (!field.isMultiple && record.values[field.id] | selectOption: field['options']; as selectedOption) {\n <thy-tag [thyColor]=\"selectedOption!.color!\">{{ selectedOption.name }}</thy-tag>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field.id] | thyDatePickerFormat }}\n }\n @case (AITableFieldType.rate) {\n <thy-rate [(ngModel)]=\"record.values[field.id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field.id]?.text\"\n [href]=\"record.values[field.id]?.url\"\n target=\"_blank\"\n >{{ record.values[field.id]?.text }}</a\n >\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field.id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n" }]
|
134
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.AITableGridEventService }, { type: i2.AITableGridSelectionService }, { type: i3.AITableGridFieldService }, { type: i0.NgZone }] });
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBa0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEMsT0FBTyxFQUNILE9BQU8sRUFDUCxhQUFhLEVBQ2IsZ0JBQWdCLEVBSWhCLGdCQUFnQixFQUVoQixrQkFBa0IsRUFFckIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxP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REFDdkIsZ0JBQWdCLCtCQUNoQixlQUFlLG1PQUNmLDJCQUEyQixpR0FDM0IsU0FBUywrR0FDVCxTQUFTLGdNQUNULG9CQUFvQixtUkFDcEIsd0JBQXdCLHlHQUN4QixpQkFBaUI7OzJGQUlaLFdBQVc7a0JBaEN2QixTQUFTOytCQUNJLGVBQWUsY0FFYixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLGVBQWU7cUJBQ3pCLFdBQ1E7d0JBQ0wsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsTUFBTTt3QkFDTixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLDJCQUEyQjt3QkFDM0IsU0FBUzt3QkFDVCxTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixpQkFBaUI7cUJBQ3BCLGFBQ1UsQ0FBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbnB1dCwgbW9kZWwsIE5nWm9uZSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdGb3JPZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25QaXBlIH0gZnJvbSAnLi9waXBlcy9ncmlkJztcbmltcG9ydCB7IFRoeVRhZyB9IGZyb20gJ25neC10ZXRoeXMvdGFnJztcbmltcG9ydCB7IFRoeVBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgYnVpbGRHcmlkRGF0YSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQUlGaWVsZENvbmZpZywgQUlUYWJsZUZpZWxkTWVudUl0ZW0sIEFJVGFibGVSb3dIZWlnaHQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gICAgQWN0aW9ucyxcbiAgICBjcmVhdGVBSVRhYmxlLFxuICAgIGdldERlZmF1bHRSZWNvcmQsXG4gICAgQUlUYWJsZSxcbiAgICBBSVRhYmxlQ2hhbmdlT3B0aW9ucyxcbiAgICBBSVRhYmxlRmllbGRzLFxuICAgIEFJVGFibGVGaWVsZFR5cGUsXG4gICAgQUlUYWJsZVJlY29yZHMsXG4gICAgY3JlYXRlRGVmYXVsdEZpZWxkLFxuICAgIEFJUGx1Z2luXG59IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkLXByb3BlcnR5LWVkaXRvci9maWVsZC1wcm9wZXJ0eS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeURhdGVQaWNrZXJGb3JtYXRQaXBlIH0gZnJvbSAnbmd4LXRldGh5cy9kYXRlLXBpY2tlcic7XG5pbXBvcnQgeyBUaHlSYXRlIH0gZnJvbSAnbmd4LXRldGh5cy9yYXRlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeVRvb2x0aXBNb2R1bGUsIFRoeVRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IFRoeUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9jaGVja2JveCc7XG5pbXBvcnQgeyBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBGaWVsZE1lbnUgfSBmcm9tICcuL2NvbXBvbmVudHMvZmllbGQtbWVudS9maWVsZC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlBY3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2FjdGlvbic7XG5pbXBvcnQgeyBUaHlEcm9wZG93bkRpcmVjdGl2ZSwgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50IH0gZnJvbSAnbmd4LXRldGh5cy9kcm9wZG93bic7XG5pbXBvcnQgeyBEZWZhdWx0RmllbGRNZW51cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJX1RBQkxFX0dSSURfRklFTERfU0VSVklDRV9NQVAsIEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdhaS10YWJsZS1ncmlkJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0Zvck9mLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2VsZWN0T3B0aW9uUGlwZSxcbiAgICAgICAgVGh5VGFnLFxuICAgICAgICBUaHlQb3BvdmVyTW9kdWxlLFxuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlSYXRlLFxuICAgICAgICBBSVRhYmxlRmllbGRQcm9wZXJ0eUVkaXRvcixcbiAgICAgICAgVGh5RGF0ZVBpY2tlckZvcm1hdFBpcGUsXG4gICAgICAgIFRoeVRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFRoeUZsZXhpYmxlVGV4dCxcbiAgICAgICAgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLFxuICAgICAgICBGaWVsZE1lbnUsXG4gICAgICAgIFRoeUFjdGlvbixcbiAgICAgICAgVGh5RHJvcGRvd25EaXJlY3RpdmUsXG4gICAgICAgIFRoeURyb3Bkb3duTWVudUNvbXBvbmVudCxcbiAgICAgICAgVGh5Q2hlY2tib3hNb2R1bGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1RoeVRvb2x0aXBTZXJ2aWNlLCBBSVRhYmxlR3JpZEV2ZW50U2VydmljZSwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UsIEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUdyaWQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGFpUmVjb3JkcyA9IG1vZGVsLnJlcXVpcmVkPEFJVGFibGVSZWNvcmRzPigpO1xuXG4gICAgYWlGaWVsZHMgPSBtb2RlbC5yZXF1aXJlZDxBSVRhYmxlRmllbGRzPigpO1xuXG4gICAgYWlSb3dIZWlnaHQgPSBpbnB1dDxBSVRhYmxlUm93SGVpZ2h0PigpO1xuXG4gICAgYWlGaWVsZENvbmZpZyA9IGlucHV0PEFJRmllbGRDb25maWc+KCk7XG5cbiAgICBhaVJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAgIGFpUGx1Z2lucyA9IGlucHV0PEFJUGx1Z2luW10+KCk7XG5cbiAgICBBSVRhYmxlRmllbGRUeXBlID0gQUlUYWJsZUZpZWxkVHlwZTtcblxuICAgIHRha2VVbnRpbERlc3Ryb3llZCA9IHRha2VVbnRpbERlc3Ryb3llZCgpO1xuXG4gICAgYWlUYWJsZSE6IEFJVGFibGU7XG5cbiAgICBnZXQgaXNTZWxlY3RlZEFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHMuc2l6ZSA9PT0gdGhpcy5haVJlY29yZHMoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UgPSBvdXRwdXQ8QUlUYWJsZUNoYW5nZU9wdGlvbnM+KCk7XG5cbiAgICBhaVRhYmxlSW5pdGlhbGl6ZWQgPSBvdXRwdXQ8QUlUYWJsZT4oKTtcblxuICAgIGZpZWxkTWVudXMhOiBBSVRhYmxlRmllbGRNZW51SXRlbVtdO1xuXG4gICAgZ3JpZERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBidWlsZEdyaWREYXRhKHRoaXMuYWlSZWNvcmRzKCksIHRoaXMuYWlGaWVsZHMoKSwgdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgYWlUYWJsZUdyaWRFdmVudFNlcnZpY2U6IEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlOiBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2U6IEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEFJVGFibGUoKTtcbiAgICAgICAgdGhpcy5pbml0U2VydmljZSgpO1xuICAgICAgICB0aGlzLmJ1aWxkRmllbGRNZW51cygpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm1vdXNlZG93bkV2ZW50JC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChldmVudCBhcyBNb3VzZUV2ZW50KT8udGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnVwZGF0ZVNlbGVjdChldmVudCBhcyBNb3VzZUV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdEFJVGFibGUoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZSA9IGNyZWF0ZUFJVGFibGUodGhpcy5haVJlY29yZHMsIHRoaXMuYWlGaWVsZHMpO1xuICAgICAgICB0aGlzLmFpUGx1Z2lucygpPy5mb3JFYWNoKChwbHVnaW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZSA9IHBsdWdpbih0aGlzLmFpVGFibGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5haVRhYmxlSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmFpVGFibGUpO1xuICAgICAgICB0aGlzLmFpVGFibGUub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIHJlY29yZHM6IHRoaXMuYWlSZWNvcmRzKCksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmFpRmllbGRzKCksXG4gICAgICAgICAgICAgICAgYWN0aW9uczogdGhpcy5haVRhYmxlLmFjdGlvbnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGluaXRTZXJ2aWNlKCkge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlLCB0aGlzLmFpRmllbGRDb25maWcoKT8uZmllbGRQcm9wZXJ0eUVkaXRvcik7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5yZWdpc3RlckV2ZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuaW5pdEFJRmllbGRDb25maWcodGhpcy5haUZpZWxkQ29uZmlnKCkpO1xuICAgICAgICBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLnNldCh0aGlzLmFpVGFibGUsIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UpO1xuICAgIH1cblxuICAgIGJ1aWxkRmllbGRNZW51cygpIHtcbiAgICAgICAgdGhpcy5maWVsZE1lbnVzID0gdGhpcy5haUZpZWxkQ29uZmlnKCk/LmZpZWxkTWVudXMgPz8gRGVmYXVsdEZpZWxkTWVudXM7XG4gICAgfVxuXG4gICAgYWRkUmVjb3JkKCkge1xuICAgICAgICBBY3Rpb25zLmFkZFJlY29yZCh0aGlzLmFpVGFibGUsIGdldERlZmF1bHRSZWNvcmQodGhpcy5haUZpZWxkcygpKSwgW3RoaXMuYWlSZWNvcmRzKCkubGVuZ3RoXSk7XG4gICAgfVxuXG4gICAgc2VsZWN0UmVjb3JkKHJlY29yZElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0UmVjb3JkKHJlY29yZElkKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS50b2dnbGVTZWxlY3RBbGwoY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgYWRkRmllbGQoZ3JpZENvbHVtbkJsYW5rOiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHNpZ25hbChjcmVhdGVEZWZhdWx0RmllbGQodGhpcy5haVRhYmxlLCBBSVRhYmxlRmllbGRUeXBlLnRleHQpKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5lZGl0RmllbGRQcm9wZXJ0eShncmlkQ29sdW1uQmxhbmssIHRoaXMuYWlUYWJsZSwgZmllbGQsIGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZC1oZWFkZXIgZC1mbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQtY29sdW1uLWNoZWNrYm94IGdyaWQtY2VsbFwiPlxuICAgICAgICA8bGFiZWwgdGh5Q2hlY2tib3ggdGh5TGFiZWxUZXh0PVwiXCIgW25nTW9kZWxdPVwiaXNTZWxlY3RlZEFsbFwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgkZXZlbnQpXCI+PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICBAZm9yIChmaWVsZCBvZiBncmlkRGF0YSgpLmZpZWxkczsgdHJhY2sgZmllbGQuaWQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJncmlkLWNlbGwgZ3JpZC1maWVsZFwiXG4gICAgICAgICAgICAjZmllbGRBY3Rpb25cbiAgICAgICAgICAgIFthdHRyLmZpZWxkSWRdPVwiZmllbGQuaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBoaWdobGlnaHQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRGaWVsZHMuaGFzKGZpZWxkLmlkKSB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGZpZWxkLndpZHRoICsgJ3B4JyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJmaWVsZC5pY29uIVwiIGNsYXNzPVwibXItMiB0ZXh0LW11dGVkXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdyaWQtZmllbGQtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgICAgICAgICB0aHlBY3RpdmVDbGFzcz1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgdGh5SWNvbj1cIm1vcmUtdmVydGljYWxcIlxuICAgICAgICAgICAgICAgIFt0aHlEcm9wZG93bl09XCJmaWVsZE1lbnVcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0aHktZHJvcGRvd24tbWVudSAjZmllbGRNZW51PlxuICAgICAgICAgICAgICAgICAgICA8ZmllbGQtbWVudSBbb3JpZ2luXT1cImZpZWxkQWN0aW9uXCIgW2ZpZWxkSWRdPVwiZmllbGQuaWRcIiBbYWlUYWJsZV09XCJhaVRhYmxlXCIgW2ZpZWxkTWVudXNdPVwiZmllbGRNZW51c1wiPjwvZmllbGQtbWVudT5cbiAgICAgICAgICAgICAgICA8L3RoeS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImdyaWQtY29sdW1uLWJsYW5rIGN1cnNvci1wb2ludGVyXCIgI2dyaWRDb2x1bW5CbGFuayAoY2xpY2spPVwiYWRkRmllbGQoZ3JpZENvbHVtbkJsYW5rKVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJwbHVzXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtYm9keSBkLWZsZXhcIj5cbiAgICBAZm9yIChyZWNvcmQgb2YgZ3JpZERhdGEoKS5yZWNvcmRzOyB0cmFjayByZWNvcmQuaWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1yb3cgZC1mbGV4XCIgW25nQ2xhc3NdPVwieyBoaWdobGlnaHQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRSZWNvcmRzLmhhcyhyZWNvcmQuaWQpIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXJvdy1pbmRleFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyZWNvcmQuY2hlY2tlZCA/ICdjaGVja2VkLWJveCcgOiAndW5jaGVja2VkLWJveCdcIlxuICAgICAgICAgICAgICAgICAgICB0aHlDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICB0aHlMYWJlbFRleHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJyZWNvcmQuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFJlY29yZChyZWNvcmQuaWQpXCJcbiAgICAgICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJyZWNvcmQuY2hlY2tlZCA/ICdncmlkLXJvdy1uby1udW1iZXInIDogJ2dyaWQtcm93LW51bWJlcidcIj4ge3sgaW5kZXggKyAxIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgZ3JpZERhdGEoKS5maWVsZHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncmlkLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRDZWxscy5oYXMocmVjb3JkLmlkKSB8fCBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZC5pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZENlbGxzLmdldChyZWNvcmQuaWQpPy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZClcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnR5cGVdPVwiW2ZpZWxkLnR5cGVdXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmllbGRJZF09XCJbZmllbGQuaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucmVjb3JkSWRdPVwiW3JlY29yZC5pZF1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBmaWVsZC53aWR0aCArICdweCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICNjZWxsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5zZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWVsZC5pc011bHRpcGxlICYmIHJlY29yZC52YWx1ZXNbZmllbGQuaWRdIHwgc2VsZWN0T3B0aW9uOiBmaWVsZFsnb3B0aW9ucyddOyBhcyBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LXRhZyBbdGh5Q29sb3JdPVwic2VsZWN0ZWRPcHRpb24hLmNvbG9yIVwiPnt7IHNlbGVjdGVkT3B0aW9uLm5hbWUgfX08L3RoeS10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUuZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZXNbZmllbGQuaWRdIHwgdGh5RGF0ZVBpY2tlckZvcm1hdCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUucmF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktcmF0ZSBbKG5nTW9kZWwpXT1cInJlY29yZC52YWx1ZXNbZmllbGQuaWRdXCI+PC90aHktcmF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLmxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5RmxleGlibGVUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlUb29sdGlwQ29udGVudF09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLmlkXT8udGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInJlY29yZC52YWx1ZXNbZmllbGQuaWRdPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmVjb3JkLnZhbHVlc1tmaWVsZC5pZF0/LnRleHQgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+IHt7IHJlY29yZC52YWx1ZXNbZmllbGQuaWRdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvZmlsbC1jb250YWluZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWNvbHVtbi1ibGFua1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImdyaWQtcm93LWluc2VydCBncmlkLXJvdyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRSZWNvcmQoKVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJwbHVzXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICNhY3RpdmVCb3JkZXIgY2xhc3M9XCJhY3RpdmUtYm9yZGVyXCI+PC9kaXY+XG4iXX0=
|
package/esm2022/pipes/grid.mjs
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import { Pipe } from '@angular/core';
|
2
2
|
import * as i0 from "@angular/core";
|
3
|
-
;
|
4
3
|
export class SelectOptionPipe {
|
5
4
|
transform(id, options) {
|
6
5
|
return options.find((item) => item.id === id);
|
@@ -15,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
15
14
|
standalone: true
|
16
15
|
}]
|
17
16
|
}] });
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3BpcGVzL2dyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsU0FBUyxDQUFDLEVBQVUsRUFBRSxPQUE4QjtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FIUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZVNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3NlbGVjdE9wdGlvbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RPcHRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFJVGFibGVTZWxlY3RPcHRpb25bXSkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgfVxufVxuIl19
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Injectable } from '@angular/core';
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
3
|
-
import { fromEvent } from 'rxjs';
|
3
|
+
import { fromEvent, Subject } from 'rxjs';
|
4
4
|
import { DBL_CLICK_EDIT_TYPE } from '../constants';
|
5
5
|
import { getRecordOrField } from '../utils';
|
6
6
|
import { GRID_CELL_EDITOR_MAP } from '../constants/editor';
|
@@ -10,6 +10,7 @@ export class AITableGridEventService {
|
|
10
10
|
constructor(thyPopover) {
|
11
11
|
this.thyPopover = thyPopover;
|
12
12
|
this.takeUntilDestroyed = takeUntilDestroyed();
|
13
|
+
this.mousedownEvent$ = new Subject();
|
13
14
|
}
|
14
15
|
initialize(aiTable, aiFieldRenderers) {
|
15
16
|
this.aiTable = aiTable;
|
@@ -21,11 +22,16 @@ export class AITableGridEventService {
|
|
21
22
|
.subscribe((event) => {
|
22
23
|
this.dblClick(event);
|
23
24
|
});
|
25
|
+
fromEvent(element, 'mousedown')
|
26
|
+
.pipe(this.takeUntilDestroyed)
|
27
|
+
.subscribe((event) => {
|
28
|
+
this.mousedownEvent$.next(event);
|
29
|
+
});
|
24
30
|
}
|
25
31
|
dblClick(event) {
|
26
32
|
const cellDom = event.target.closest('.grid-cell');
|
27
33
|
const type = cellDom && cellDom.getAttribute('type');
|
28
|
-
if (type && DBL_CLICK_EDIT_TYPE.includes(
|
34
|
+
if (type && DBL_CLICK_EDIT_TYPE.includes(type)) {
|
29
35
|
this.openEdit(cellDom);
|
30
36
|
}
|
31
37
|
}
|
@@ -54,6 +60,7 @@ export class AITableGridEventService {
|
|
54
60
|
height: height + 2 + 'px',
|
55
61
|
placement: 'top',
|
56
62
|
offset: -(height + 4),
|
63
|
+
minWidth: width,
|
57
64
|
initialState: {
|
58
65
|
field: field,
|
59
66
|
record: record,
|
@@ -72,4 +79,4 @@ export class AITableGridEventService {
|
|
72
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AITableGridEventService, decorators: [{
|
73
80
|
type: Injectable
|
74
81
|
}], ctorParameters: () => [{ type: i1.ThyPopover }] });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLM0QsTUFBTSxPQUFPLHVCQUF1QjtJQVNoQyxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSjFDLHVCQUFrQixHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFMUMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO0lBRUMsQ0FBQztJQUU5QyxVQUFVLENBQUMsT0FBZ0IsRUFBRSxnQkFBaUY7UUFDMUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBb0I7UUFDL0IsU0FBUyxDQUFhLE9BQU8sRUFBRSxVQUFVLENBQUM7YUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzthQUM3QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQW1CLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVQLFNBQVMsQ0FBYSxPQUFP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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERCTF9DTElDS19FRElUX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UmVjb3JkT3JGaWVsZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVGaWVsZCwgQUlUYWJsZUZpZWxkVHlwZSwgQUlUYWJsZVJlY29yZCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgR1JJRF9DRUxMX0VESVRPUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudHMvZWRpdG9yJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRDZWxsUmVuZGVyU2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2Uge1xuICAgIGFpVGFibGUhOiBBSVRhYmxlO1xuXG4gICAgYWlGaWVsZFJlbmRlcmVycz86IFBhcnRpYWw8UmVjb3JkPEFJVGFibGVGaWVsZFR5cGUsIEFJVGFibGVHcmlkQ2VsbFJlbmRlclNjaGVtYT4+O1xuXG4gICAgdGFrZVVudGlsRGVzdHJveWVkID0gdGFrZVVudGlsRGVzdHJveWVkKCk7XG5cbiAgICBtb3VzZWRvd25FdmVudCQgPSBuZXcgU3ViamVjdDxNb3VzZUV2ZW50PigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyKSB7fVxuXG4gICAgaW5pdGlhbGl6ZShhaVRhYmxlOiBBSVRhYmxlLCBhaUZpZWxkUmVuZGVyZXJzPzogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgQUlUYWJsZUdyaWRDZWxsUmVuZGVyU2NoZW1hPj4pIHtcbiAgICAgICAgdGhpcy5haVRhYmxlID0gYWlUYWJsZTtcbiAgICAgICAgdGhpcy5haUZpZWxkUmVuZGVyZXJzID0gYWlGaWVsZFJlbmRlcmVycztcbiAgICB9XG5cbiAgICByZWdpc3RlckV2ZW50cyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ2RibGNsaWNrJylcbiAgICAgICAgICAgIC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRibENsaWNrKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duRXZlbnQkLm5leHQoZXZlbnQgYXMgTW91c2VFdmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRibENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxEb20gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ3JpZC1jZWxsJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBjZWxsRG9tICYmIGNlbGxEb20uZ2V0QXR0cmlidXRlKCd0eXBlJykhIGFzIEFJVGFibGVGaWVsZFR5cGU7XG4gICAgICAgIGlmICh0eXBlICYmIERCTF9DTElDS19FRElUX1RZUEUuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkVkaXQoY2VsbERvbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVkaXRvckNvbXBvbmVudCh0eXBlOiBBSVRhYmxlRmllbGRUeXBlKSB7XG4gICAgICAgIGlmICh0aGlzLmFpRmllbGRSZW5kZXJlcnMgJiYgdGhpcy5haUZpZWxkUmVuZGVyZXJzW3R5cGVdKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5haUZpZWxkUmVuZGVyZXJzW3R5cGVdIS5lZGl0b3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEdSSURfQ0VMTF9FRElUT1JfTUFQW3R5cGVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkVkaXQoY2VsbERvbTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBjZWxsRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBmaWVsZElkID0gY2VsbERvbS5nZXRBdHRyaWJ1dGUoJ2ZpZWxkSWQnKSE7XG4gICAgICAgIGNvbnN0IHJlY29yZElkID0gY2VsbERvbS5nZXRBdHRyaWJ1dGUoJ3JlY29yZElkJykhO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldFJlY29yZE9yRmllbGQodGhpcy5haVRhYmxlLmZpZWxkcywgZmllbGRJZCkgYXMgU2lnbmFsPEFJVGFibGVGaWVsZD47XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGdldFJlY29yZE9yRmllbGQodGhpcy5haVRhYmxlLnJlY29yZHMsIHJlY29yZElkKSBhcyBTaWduYWw8QUlUYWJsZVJlY29yZD47XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZ2V0RWRpdG9yQ29tcG9uZW50KGZpZWxkKCkudHlwZSk7XG4gICAgICAgIHRoaXMudGh5UG9wb3Zlci5vcGVuKGNvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBjZWxsRG9tLFxuICAgICAgICAgICAgb3JpZ2luUG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiB4IC0gMSxcbiAgICAgICAgICAgICAgICB5OiB5ICsgMSxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggKyAyLFxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0ICsgMlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCArIDIgKyAncHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAyICsgJ3B4JyxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXQ6IC0oaGVpZ2h0ICsgNCksXG4gICAgICAgICAgICBtaW5XaWR0aDogd2lkdGgsXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQsXG4gICAgICAgICAgICAgICAgYWlUYWJsZTogdGhpcy5haVRhYmxlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ2dyaWQtY2VsbC1lZGl0b3InLFxuICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBhbmltYXRpb25EaXNhYmxlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|