@ai-table/state 0.0.70 → 0.0.72
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/esm2022/utils/field/add-fields.mjs +1 -3
- package/esm2022/utils/field/remove-field.mjs +1 -3
- package/esm2022/utils/record/filter.mjs +2 -3
- package/fesm2022/ai-table-state.mjs +10 -12
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/field/add-fields.d.ts.map +1 -1
- package/utils/field/remove-field.d.ts.map +1 -1
- package/utils/record/filter.d.ts.map +1 -1
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Actions } from '../../action';
|
2
|
-
import { updateRecordsUpdatedInfo } from '../record/update-system-field-value';
|
3
2
|
import { idCreator } from '@ai-table/grid';
|
4
3
|
import { createDefaultPositions, getPosition } from '../view';
|
5
4
|
export function addFields(aiTable, options, updatedInfo) {
|
@@ -22,6 +21,5 @@ export function addFields(aiTable, options, updatedInfo) {
|
|
22
21
|
newField.positions = createDefaultPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields, fields.length);
|
23
22
|
}
|
24
23
|
Actions.addField(aiTable, newField, originId, isDuplicate);
|
25
|
-
updateRecordsUpdatedInfo(aiTable, updatedInfo);
|
26
24
|
}
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZpZWxkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9maWVsZC9hZGQtZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFOUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFvQixFQUFFLE9BQXdCLEVBQUUsV0FBcUM7SUFDM0csTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUEyQixDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBc0IsQ0FBQztJQUV6RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixRQUFRLENBQUMsR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLFFBQVEsQ0FBQyxTQUFTLEdBQUc7WUFDakIsR0FBRyxRQUFRLENBQUMsU0FBUztZQUNyQixDQUFDLFlBQVksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixHQUFHLENBQUMsQ0FBQztTQUMzRSxDQUFDO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixRQUFRLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUN2QyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQ2YsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUN0QixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBMkIsRUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRGaWVsZE9wdGlvbnMsIEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbywgQUlUYWJsZVZpZXdGaWVsZCwgQUlUYWJsZVZpZXdGaWVsZHMgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQUlWaWV3VGFibGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBY3Rpb25zIH0gZnJvbSAnLi4vLi4vYWN0aW9uJztcbmltcG9ydCB7IHVwZGF0ZVJlY29yZHNVcGRhdGVkSW5mbyB9IGZyb20gJy4uL3JlY29yZC91cGRhdGUtc3lzdGVtLWZpZWxkLXZhbHVlJztcbmltcG9ydCB7IGlkQ3JlYXRvciB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMsIGdldFBvc2l0aW9uIH0gZnJvbSAnLi4vdmlldyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRGaWVsZHMoYWlUYWJsZTogQUlWaWV3VGFibGUsIG9wdGlvbnM6IEFkZEZpZWxkT3B0aW9ucywgdXBkYXRlZEluZm86IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbykge1xuICAgIGNvbnN0IHsgZGVmYXVsdFZhbHVlLCBpc0R1cGxpY2F0ZSwgb3JpZ2luSWQgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZmllbGRzID0gYWlUYWJsZS5ncmlkRGF0YSgpLmZpZWxkcyBhcyBBSVRhYmxlVmlld0ZpZWxkcztcbiAgICBjb25zdCBmaWVsZHNNYXAgPSBhaVRhYmxlLmZpZWxkc01hcCgpO1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9IGFpVGFibGUuYWN0aXZlVmlld0lkKCk7XG4gICAgY29uc3QgbmV3RmllbGQgPSB7IC4uLmRlZmF1bHRWYWx1ZSB9IGFzIEFJVGFibGVWaWV3RmllbGQ7XG5cbiAgICBpZiAoZmllbGRzTWFwW25ld0ZpZWxkLl9pZF0pIHtcbiAgICAgICAgbmV3RmllbGQuX2lkID0gaWRDcmVhdG9yKCk7XG4gICAgfVxuICAgIGlmIChpc0R1cGxpY2F0ZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50RmllbGRJbmRleCA9IGZpZWxkcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBvcmlnaW5JZCk7XG4gICAgICAgIG5ld0ZpZWxkLnBvc2l0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm5ld0ZpZWxkLnBvc2l0aW9ucyxcbiAgICAgICAgICAgIFthY3RpdmVWaWV3SWRdOiBnZXRQb3NpdGlvbihmaWVsZHMsIGFjdGl2ZVZpZXdJZCwgY3VycmVudEZpZWxkSW5kZXggKyAxKVxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0ZpZWxkLnBvc2l0aW9ucyA9IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgICAgICAgICBhaVRhYmxlLnZpZXdzKCksXG4gICAgICAgICAgICBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpLFxuICAgICAgICAgICAgYWlUYWJsZS5ncmlkRGF0YSgpLmZpZWxkcyBhcyBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICAgICAgICAgIGZpZWxkcy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICB9XG4gICAgQWN0aW9ucy5hZGRGaWVsZChhaVRhYmxlLCBuZXdGaWVsZCwgb3JpZ2luSWQsIGlzRHVwbGljYXRlKTtcbn1cbiJdfQ==
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Actions } from '../../action';
|
2
|
-
import { updateRecordsUpdatedInfo } from '../record/update-system-field-value';
|
3
2
|
import { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';
|
4
3
|
export const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
5
4
|
return {
|
@@ -8,8 +7,7 @@ export const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
|
8
7
|
icon: 'trash',
|
9
8
|
exec: (aiTable, field) => {
|
10
9
|
Actions.removeField(aiTable, [field()._id]);
|
11
|
-
updateRecordsUpdatedInfo(aiTable, getUpdatedInfo());
|
12
10
|
}
|
13
11
|
};
|
14
12
|
};
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL2ZpZWxkL3JlbW92ZS1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzlFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxjQUE4QyxFQUFFLEVBQUU7SUFDckcsT0FBTztRQUNILElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDO1FBQ3JFLElBQUksRUFBRSxPQUFPO1FBQ2IsSUFBSSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxLQUEyQixFQUFFLEVBQUU7WUFDcEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hY3Rpb24nO1xuaW1wb3J0IHsgQUlWaWV3VGFibGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyB1cGRhdGVSZWNvcmRzVXBkYXRlZEluZm8gfSBmcm9tICcuLi9yZWNvcmQvdXBkYXRlLXN5c3RlbS1maWVsZC12YWx1ZSc7XG5pbXBvcnQgeyBBSVRhYmxlU3RhdGVJMThuS2V5LCBnZXRTdGF0ZUkxOG5UZXh0QnlLZXkgfSBmcm9tICcuLi8uLi91dGlscy9pMThuJztcbmltcG9ydCB7IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbywgQUlUYWJsZUZpZWxkIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUmVtb3ZlRmllbGRJdGVtID0gKGFpVGFibGU6IEFJVGFibGUsIGdldFVwZGF0ZWRJbmZvOiAoKSA9PiBBSVRhYmxlUmVjb3JkVXBkYXRlZEluZm8pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAncmVtb3ZlRmllbGQnLFxuICAgICAgICBuYW1lOiBnZXRTdGF0ZUkxOG5UZXh0QnlLZXkoYWlUYWJsZSwgQUlUYWJsZVN0YXRlSTE4bktleS5yZW1vdmVGaWVsZCksXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGV4ZWM6IChhaVRhYmxlOiBBSVRhYmxlLCBmaWVsZDogU2lnbmFsPEFJVGFibGVGaWVsZD4pID0+IHtcbiAgICAgICAgICAgIEFjdGlvbnMucmVtb3ZlRmllbGQoYWlUYWJsZSBhcyBBSVZpZXdUYWJsZSwgW2ZpZWxkKCkuX2lkXSk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiJdfQ==
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { isSystemField, FieldModelMap } from '@ai-table/grid';
|
2
|
-
import { AITableFieldType, AITableFilterLogical, AITableFilterOperation } from '@ai-table/utils';
|
3
|
-
import { isEmpty } from 'lodash';
|
2
|
+
import { AITableFieldType, AITableFilterLogical, AITableFilterOperation, isEmpty } from '@ai-table/utils';
|
4
3
|
export function getFilteredRecords(aiTable, records, fields, activeView) {
|
5
4
|
const { conditions, condition_logical } = activeView.settings || {};
|
6
5
|
if (!conditions) {
|
@@ -119,4 +118,4 @@ function getFilterValue(fields, record, condition) {
|
|
119
118
|
cellValue
|
120
119
|
};
|
121
120
|
}
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL3JlY29yZC9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBR0gsZ0JBQWdCLEVBUWhCLG9CQUFvQixFQUdwQixzQkFBc0IsRUFDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFvQixFQUFFLE9BQTJCLEVBQUUsTUFBeUIsRUFBRSxVQUF1QjtJQUNwSSxNQUFNLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDcEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDdEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDN0IsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFGLE9BQU8sSUFBSSxD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QztJQUNyRSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEYsU0FBUyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUF3QixDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xILFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSztRQUNMLFNBQVM7S0FDWixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3lzdGVtRmllbGQsIEZpZWxkTW9kZWxNYXAsIEFJVGFibGUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7XG4gICAgQUlUYWJsZVJlY29yZCxcbiAgICBBSVRhYmxlRmllbGQsXG4gICAgQUlUYWJsZUZpZWxkVHlwZSxcbiAgICBGaWVsZFZhbHVlLFxuICAgIFNlbGVjdFNldHRpbmdzLFxuICAgIFN5c3RlbUZpZWxkVHlwZXMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIEFJVGFibGVWaWV3RmllbGRzLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVGaWx0ZXJDb25kaXRpb25zLFxuICAgIEFJVGFibGVGaWx0ZXJMb2dpY2FsLFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZUZpbHRlckNvbmRpdGlvbixcbiAgICBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uXG59IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlcmVkUmVjb3JkcyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIGNvbnN0IHsgY29uZGl0aW9ucywgY29uZGl0aW9uX2xvZ2ljYWwgfSA9IGFjdGl2ZVZpZXcuc2V0dGluZ3MgfHwge307XG4gICAgaWYgKCFjb25kaXRpb25zKSB7XG4gICAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH1cbiAgICBjb25zdCBpbGxlZ2FsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm9wZXJhdGlvbikgfHwgW107XG4gICAgaWYgKCFpbGxlZ2FsQ29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZHNXaWxsSGlkZGVuID0gYWlUYWJsZS5yZWNvcmRzV2lsbEhpZGRlbigpO1xuICAgIHJldHVybiByZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7XG4gICAgICAgIGlmIChyZWNvcmRzV2lsbEhpZGRlbiAmJiByZWNvcmRzV2lsbEhpZGRlbi5sZW5ndGggJiYgcmVjb3Jkc1dpbGxIaWRkZW4uaW5jbHVkZXMocmVjb3JkLl9pZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGVja0NvbmRpdGlvbnMoYWlUYWJsZSwgZmllbGRzLCByZWNvcmQsIHsgY29uZGl0aW9uczogaWxsZWdhbENvbmRpdGlvbnMsIGNvbmRpdGlvbl9sb2dpY2FsIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0NvbmRpdGlvbnMoXG4gICAgYWlUYWJsZTogQUlWaWV3VGFibGUsXG4gICAgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICByZWNvcmQ6IEFJVGFibGVSZWNvcmQsXG4gICAgZmlsdGVyQ29uZGl0aW9uczogQUlUYWJsZUZpbHRlckNvbmRpdGlvbnNcbikge1xuICAgIGlmICghcmVjb3JkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFmaWx0ZXJDb25kaXRpb25zPy5jb25kaXRpb25zKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB7IGNvbmRpdGlvbl9sb2dpY2FsLCBjb25kaXRpb25zIH0gPSBmaWx0ZXJDb25kaXRpb25zO1xuICAgIGlmIChjb25kaXRpb25fbG9naWNhbCA9PT0gQUlUYWJsZUZpbHRlckxvZ2ljYWwuYW5kKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb25zLmV2ZXJ5KChjb25kaXRpb24pID0+IGRvRmlsdGVyT3BlcmF0aW9ucyhhaVRhYmxlLCBmaWVsZHMsIHJlY29yZCwgY29uZGl0aW9uKSk7XG4gICAgfVxuICAgIGlmICghY29uZGl0aW9uX2xvZ2ljYWwgfHwgY29uZGl0aW9uX2xvZ2ljYWwgPT09IEFJVGFibGVGaWx0ZXJMb2dpY2FsLm9yKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb25zLnNvbWUoKGNvbmRpdGlvbikgPT4gZG9GaWx0ZXJPcGVyYXRpb25zKGFpVGFibGUsIGZpZWxkcywgcmVjb3JkLCBjb25kaXRpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkb0ZpbHRlck9wZXJhdGlvbnMoYWlUYWJsZTogQUlWaWV3VGFibGUsIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsIHJlY29yZDogQUlUYWJsZVJlY29yZCwgY29uZGl0aW9uOiBBSVRhYmxlRmlsdGVyQ29uZGl0aW9uKSB7XG4gICAgY29uc3QgeyBmaWVsZCwgY2VsbFZhbHVlIH0gPSBnZXRGaWx0ZXJWYWx1ZShmaWVsZHMsIHJlY29yZCwgY29uZGl0aW9uKTtcblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmaWVsZCAmJlxuICAgICAgICAgICAgZG9GaWx0ZXIoY29uZGl0aW9uLCBjZWxsVmFsdWUsIHtcbiAgICAgICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAgICAgIGZpZWxkXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb0ZpbHRlcihcbiAgICBjb25kaXRpb246IEFJVGFibGVGaWx0ZXJDb25kaXRpb24sXG4gICAgY2VsbFZhbHVlOiBGaWVsZFZhbHVlLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYWlUYWJsZTogQUlUYWJsZTtcbiAgICAgICAgZmllbGQ6IEFJVGFibGVGaWVsZDtcbiAgICB9XG4pIHtcbiAgICBjb25zdCBmaWVsZE1vZGVsID0gRmllbGRNb2RlbE1hcFtvcHRpb25zLmZpZWxkLnR5cGVdO1xuICAgIGlmIChmaWVsZE1vZGVsICYmIGZpZWxkTW9kZWwuaXNWYWxpZChjZWxsVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmaWVsZE1vZGVsLmlzTWVldEZpbHRlcihjb25kaXRpb24sIGNlbGxWYWx1ZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFJlY29yZERhdGFCeUZpbHRlcihcbiAgICByZWNvcmRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZpZWxkVmFsdWU+LFxuICAgIGNvbmRpdGlvbnM6IEFJVGFibGVGaWx0ZXJDb25kaXRpb25bXSxcbiAgICBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLFxuICAgIGNvbmRpdGlvbkxvZ2ljYWw/OiBBSVRhYmxlRmlsdGVyTG9naWNhbFxuKSB7XG4gICAgY29uc3QgZmllbGRNYXAgPSBuZXcgTWFwPHN0cmluZywgQUlUYWJsZVZpZXdGaWVsZD4oZmllbGRzLm1hcCgoZmllbGQpID0+IFtmaWVsZC5faWQsIGZpZWxkXSkpO1xuICAgIGNvbnN0IGNvbmRpdGlvbkZpZWxkQ291bnRNYXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGNvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWQgPSBjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdG1wRmllbGRDb3VudCA9IGNvbmRpdGlvbkZpZWxkQ291bnRNYXAuZ2V0KGZpZWxkSWQpIHx8IDA7XG4gICAgICAgIGNvbmRpdGlvbkZpZWxkQ291bnRNYXAuc2V0KGZpZWxkSWQsIHRtcEZpZWxkQ291bnQgKyAxKTtcbiAgICB9KTtcbiAgICBpZiAoY29uZGl0aW9uTG9naWNhbCA9PT0gQUlUYWJsZUZpbHRlckxvZ2ljYWwuYW5kKSB7XG4gICAgICAgIGNvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uRmllbGRDb3VudE1hcC5nZXQoY29uZGl0aW9uLmZpZWxkX2lkLnRvU3RyaW5nKCkpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZE1hcC5nZXQoY29uZGl0aW9uLmZpZWxkX2lkLnRvU3RyaW5nKCkpITtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5NdWx0aXBsZU9wZXJhdGlvbkNvbmRpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICghKGZpZWxkLnNldHRpbmdzIGFzIFNlbGVjdFNldHRpbmdzKT8uaXNfbXVsdGlwbGUgJiYgY29uZGl0aW9uLm9wZXJhdGlvbiA9PT0gQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5lcSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkPy5zZXR0aW5ncyBhcyBTZWxlY3RTZXR0aW5ncyk/LmlzX211bHRpcGxlO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEsIEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uaW5dLmluY2x1ZGVzKGNvbmRpdGlvbi5vcGVyYXRpb24pICYmXG4gICAgICAgICAgICAgICAgICAgIFtBSVRhYmxlRmllbGRUeXBlLnNlbGVjdCwgQUlUYWJsZUZpZWxkVHlwZS5tZW1iZXJdLmluY2x1ZGVzKGZpZWxkPy50eXBlKSAmJlxuICAgICAgICAgICAgICAgICAgICBjYW5NdWx0aXBsZU9wZXJhdGlvbkNvbmRpdGlvblxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IEFJVGFibGVGaWVsZFR5cGUuZGF0ZSAmJiBjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmVxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFZhbHVlc1tjb25kaXRpb24uZmllbGRfaWRdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjb25kaXRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uLm9wZXJhdGlvbiA9PT0gQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5jb250YWluICYmIEFJVGFibGVGaWVsZFR5cGUudGV4dCA9PT0gZmllbGQ/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF0gPSBjb25kaXRpb24udmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmVxICYmXG4gICAgICAgICAgICAgICAgICAgIFtBSVRhYmxlRmllbGRUeXBlLnJhdGUsIEFJVGFibGVGaWVsZFR5cGUubnVtYmVyLCBBSVRhYmxlRmllbGRUeXBlLnByb2dyZXNzXS5pbmNsdWRlcyhmaWVsZD8udHlwZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF0gPSBjb25kaXRpb24udmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZFZhbHVlcztcbn1cblxuZnVuY3Rpb24gZ2V0RmlsdGVyVmFsdWUoZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgcmVjb3JkOiBBSVRhYmxlUmVjb3JkLCBjb25kaXRpb246IEFJVGFibGVGaWx0ZXJDb25kaXRpb24pIHtcbiAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gY29uZGl0aW9uLmZpZWxkX2lkKTtcbiAgICBsZXQgY2VsbFZhbHVlID0gbnVsbDtcbiAgICBpZiAoZmllbGQgJiYgaXNTeXN0ZW1GaWVsZChmaWVsZCkpIHtcbiAgICAgICAgaWYgKFtBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRBdCwgQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQXRdLmluY2x1ZGVzKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgICBjZWxsVmFsdWUgPSB7IHRpbWVzdGFtcDogcmVjb3JkW2ZpZWxkLnR5cGUgYXMgU3lzdGVtRmllbGRUeXBlc10gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbGxWYWx1ZSA9IHJlY29yZFtmaWVsZC50eXBlIGFzIFN5c3RlbUZpZWxkVHlwZXNdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2VsbFZhbHVlID0gcmVjb3JkLnZhbHVlc1tjb25kaXRpb24uZmllbGRfaWRdO1xuICAgIH1cblxuICAgIGlmIChmaWVsZCAmJiBbQUlUYWJsZUZpZWxkVHlwZS5jcmVhdGVkQnksIEFJVGFibGVGaWVsZFR5cGUudXBkYXRlZEJ5LCBBSVRhYmxlRmllbGRUeXBlLm1lbWJlcl0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgY2VsbFZhbHVlID0gQXJyYXkuaXNBcnJheShjZWxsVmFsdWUpID8gY2VsbFZhbHVlIDogaXNFbXB0eShjZWxsVmFsdWUpID8gW10gOiBbY2VsbFZhbHVlXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZCxcbiAgICAgICAgY2VsbFZhbHVlXG4gICAgfTtcbn1cbiJdfQ==
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL3JlY29yZC9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBR0gsZ0JBQWdCLEVBUWhCLG9CQUFvQixFQUdwQixzQkFBc0IsRUFDdEIsT0FBTyxFQUNWLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQW9CLEVBQUUsT0FBMkIsRUFBRSxNQUF5QixFQUFFLFVBQXVCO0lBQ3BJLE1BQU0sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNwRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUM3QixJQUFJLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sZUFBZSxD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QztJQUNyQixJQUFJLEtBQUssSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRixTQUFTLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUF3QixDQUFDLEVBQUUsQ0FBQztRQUN0RSxDQUFDO2FBQU0sQ0FBQztZQUNKLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQXdCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEgsU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELE9BQU87UUFDSCxLQUFLO1FBQ0wsU0FBUztLQUNaLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTeXN0ZW1GaWVsZCwgRmllbGRNb2RlbE1hcCwgQUlUYWJsZSB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IEFJVmlld1RhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBBSVRhYmxlUmVjb3JkLFxuICAgIEFJVGFibGVGaWVsZCxcbiAgICBBSVRhYmxlRmllbGRUeXBlLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgU2VsZWN0U2V0dGluZ3MsXG4gICAgU3lzdGVtRmllbGRUeXBlcyxcbiAgICBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXcsXG4gICAgQUlUYWJsZUZpbHRlckNvbmRpdGlvbnMsXG4gICAgQUlUYWJsZUZpbHRlckxvZ2ljYWwsXG4gICAgQUlUYWJsZVZpZXdGaWVsZCxcbiAgICBBSVRhYmxlRmlsdGVyQ29uZGl0aW9uLFxuICAgIEFJVGFibGVGaWx0ZXJPcGVyYXRpb24sXG4gICAgaXNFbXB0eVxufSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyZWRSZWNvcmRzKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3KSB7XG4gICAgY29uc3QgeyBjb25kaXRpb25zLCBjb25kaXRpb25fbG9naWNhbCB9ID0gYWN0aXZlVmlldy5zZXR0aW5ncyB8fCB7fTtcbiAgICBpZiAoIWNvbmRpdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfVxuICAgIGNvbnN0IGlsbGVnYWxDb25kaXRpb25zID0gY29uZGl0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3BlcmF0aW9uKSB8fCBbXTtcbiAgICBpZiAoIWlsbGVnYWxDb25kaXRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkcztcbiAgICB9XG4gICAgY29uc3QgcmVjb3Jkc1dpbGxIaWRkZW4gPSBhaVRhYmxlLnJlY29yZHNXaWxsSGlkZGVuKCk7XG4gICAgcmV0dXJuIHJlY29yZHMuZmlsdGVyKChyZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHJlY29yZHNXaWxsSGlkZGVuICYmIHJlY29yZHNXaWxsSGlkZGVuLmxlbmd0aCAmJiByZWNvcmRzV2lsbEhpZGRlbi5pbmNsdWRlcyhyZWNvcmQuX2lkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoZWNrQ29uZGl0aW9ucyhhaVRhYmxlLCBmaWVsZHMsIHJlY29yZCwgeyBjb25kaXRpb25zOiBpbGxlZ2FsQ29uZGl0aW9ucywgY29uZGl0aW9uX2xvZ2ljYWwgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ29uZGl0aW9ucyhcbiAgICBhaVRhYmxlOiBBSVZpZXdUYWJsZSxcbiAgICBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLFxuICAgIHJlY29yZDogQUlUYWJsZVJlY29yZCxcbiAgICBmaWx0ZXJDb25kaXRpb25zOiBBSVRhYmxlRmlsdGVyQ29uZGl0aW9uc1xuKSB7XG4gICAgaWYgKCFyZWNvcmQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWZpbHRlckNvbmRpdGlvbnM/LmNvbmRpdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHsgY29uZGl0aW9uX2xvZ2ljYWwsIGNvbmRpdGlvbnMgfSA9IGZpbHRlckNvbmRpdGlvbnM7XG4gICAgaWYgKGNvbmRpdGlvbl9sb2dpY2FsID09PSBBSVRhYmxlRmlsdGVyTG9naWNhbC5hbmQpIHtcbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbnMuZXZlcnkoKGNvbmRpdGlvbikgPT4gZG9GaWx0ZXJPcGVyYXRpb25zKGFpVGFibGUsIGZpZWxkcywgcmVjb3JkLCBjb25kaXRpb24pKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb25fbG9naWNhbCB8fCBjb25kaXRpb25fbG9naWNhbCA9PT0gQUlUYWJsZUZpbHRlckxvZ2ljYWwub3IpIHtcbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbnMuc29tZSgoY29uZGl0aW9uKSA9PiBkb0ZpbHRlck9wZXJhdGlvbnMoYWlUYWJsZSwgZmllbGRzLCByZWNvcmQsIGNvbmRpdGlvbikpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGRvRmlsdGVyT3BlcmF0aW9ucyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgcmVjb3JkOiBBSVRhYmxlUmVjb3JkLCBjb25kaXRpb246IEFJVGFibGVGaWx0ZXJDb25kaXRpb24pIHtcbiAgICBjb25zdCB7IGZpZWxkLCBjZWxsVmFsdWUgfSA9IGdldEZpbHRlclZhbHVlKGZpZWxkcywgcmVjb3JkLCBjb25kaXRpb24pO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGZpZWxkICYmXG4gICAgICAgICAgICBkb0ZpbHRlcihjb25kaXRpb24sIGNlbGxWYWx1ZSwge1xuICAgICAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICAgICAgZmllbGRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvRmlsdGVyKFxuICAgIGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbixcbiAgICBjZWxsVmFsdWU6IEZpZWxkVmFsdWUsXG4gICAgb3B0aW9uczoge1xuICAgICAgICBhaVRhYmxlOiBBSVRhYmxlO1xuICAgICAgICBmaWVsZDogQUlUYWJsZUZpZWxkO1xuICAgIH1cbikge1xuICAgIGNvbnN0IGZpZWxkTW9kZWwgPSBGaWVsZE1vZGVsTWFwW29wdGlvbnMuZmllbGQudHlwZV07XG4gICAgaWYgKGZpZWxkTW9kZWwgJiYgZmllbGRNb2RlbC5pc1ZhbGlkKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkTW9kZWwuaXNNZWV0RmlsdGVyKGNvbmRpdGlvbiwgY2VsbFZhbHVlLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY29uZGl0aW9uLm9wZXJhdGlvbiA9PT0gQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5lbXB0eSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0UmVjb3JkRGF0YUJ5RmlsdGVyKFxuICAgIHJlY29yZFZhbHVlczogUmVjb3JkPHN0cmluZywgRmllbGRWYWx1ZT4sXG4gICAgY29uZGl0aW9uczogQUlUYWJsZUZpbHRlckNvbmRpdGlvbltdLFxuICAgIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgY29uZGl0aW9uTG9naWNhbD86IEFJVGFibGVGaWx0ZXJMb2dpY2FsXG4pIHtcbiAgICBjb25zdCBmaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBSVRhYmxlVmlld0ZpZWxkPihmaWVsZHMubWFwKChmaWVsZCkgPT4gW2ZpZWxkLl9pZCwgZmllbGRdKSk7XG4gICAgY29uc3QgY29uZGl0aW9uRmllbGRDb3VudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJZCA9IGNvbmRpdGlvbi5maWVsZF9pZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0bXBGaWVsZENvdW50ID0gY29uZGl0aW9uRmllbGRDb3VudE1hcC5nZXQoZmllbGRJZCkgfHwgMDtcbiAgICAgICAgY29uZGl0aW9uRmllbGRDb3VudE1hcC5zZXQoZmllbGRJZCwgdG1wRmllbGRDb3VudCArIDEpO1xuICAgIH0pO1xuICAgIGlmIChjb25kaXRpb25Mb2dpY2FsID09PSBBSVRhYmxlRmlsdGVyTG9naWNhbC5hbmQpIHtcbiAgICAgICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb25GaWVsZENvdW50TWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkTWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgKCEoZmllbGQuc2V0dGluZ3MgYXMgU2VsZWN0U2V0dGluZ3MpPy5pc19tdWx0aXBsZSAmJiBjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmVxKSB8fFxuICAgICAgICAgICAgICAgICAgICAoZmllbGQ/LnNldHRpbmdzIGFzIFNlbGVjdFNldHRpbmdzKT8uaXNfbXVsdGlwbGU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBbQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5lcSwgQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5pbl0uaW5jbHVkZXMoY29uZGl0aW9uLm9wZXJhdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUuc2VsZWN0LCBBSVRhYmxlRmllbGRUeXBlLm1lbWJlcl0uaW5jbHVkZXMoZmllbGQ/LnR5cGUpICYmXG4gICAgICAgICAgICAgICAgICAgIGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFZhbHVlc1tjb25kaXRpb24uZmllbGRfaWRdID0gY29uZGl0aW9uLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gQUlUYWJsZUZpZWxkVHlwZS5kYXRlICYmIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNvbmRpdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmNvbnRhaW4gJiYgQUlUYWJsZUZpZWxkVHlwZS50ZXh0ID09PSBmaWVsZD8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUucmF0ZSwgQUlUYWJsZUZpZWxkVHlwZS5udW1iZXIsIEFJVGFibGVGaWVsZFR5cGUucHJvZ3Jlc3NdLmluY2x1ZGVzKGZpZWxkPy50eXBlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkVmFsdWVzO1xufVxuXG5mdW5jdGlvbiBnZXRGaWx0ZXJWYWx1ZShmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbikge1xuICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBjb25kaXRpb24uZmllbGRfaWQpO1xuICAgIGxldCBjZWxsVmFsdWUgPSBudWxsO1xuICAgIGlmIChmaWVsZCAmJiBpc1N5c3RlbUZpZWxkKGZpZWxkKSkge1xuICAgICAgICBpZiAoW0FJVGFibGVGaWVsZFR5cGUuY3JlYXRlZEF0LCBBSVRhYmxlRmllbGRUeXBlLnVwZGF0ZWRBdF0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgIGNlbGxWYWx1ZSA9IHsgdGltZXN0YW1wOiByZWNvcmRbZmllbGQudHlwZSBhcyBTeXN0ZW1GaWVsZFR5cGVzXSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbFZhbHVlID0gcmVjb3JkW2ZpZWxkLnR5cGUgYXMgU3lzdGVtRmllbGRUeXBlc107XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjZWxsVmFsdWUgPSByZWNvcmQudmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkICYmIFtBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRCeSwgQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQnksIEFJVGFibGVGaWVsZFR5cGUubWVtYmVyXS5pbmNsdWRlcyhmaWVsZC50eXBlKSkge1xuICAgICAgICBjZWxsVmFsdWUgPSBBcnJheS5pc0FycmF5KGNlbGxWYWx1ZSkgPyBjZWxsVmFsdWUgOiBpc0VtcHR5KGNlbGxWYWx1ZSkgPyBbXSA6IFtjZWxsVmFsdWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICBjZWxsVmFsdWVcbiAgICB9O1xufVxuIl19
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import * as Y from 'yjs';
|
2
2
|
import { UndoManager } from 'yjs';
|
3
|
-
import { getShareTypeNumberPath, ActionName, translateArrayEvent, getSharedRecordIndex, getSharedMapValueIndex, toMapSyncElement, getIdBySystemFieldValuesType, setRecordUpdatedInfo, getPositionsByRecordSyncElement, setRecordPositions as setRecordPositions$1, toRecordSyncElement, AI_TABLE_CONTENT_FIELD_NAME, getIdBySystemFieldValues, getShortIdBySystemFieldValues, getTrackableEntityBySystemFieldValues, getPositionsBySystemFieldValues, getValuesByCustomFieldValues, AITableFilterLogical, AITableFilterOperation, AITableFieldType } from '@ai-table/utils';
|
3
|
+
import { getShareTypeNumberPath, ActionName, translateArrayEvent, getSharedRecordIndex, getSharedMapValueIndex, toMapSyncElement, getIdBySystemFieldValuesType, setRecordUpdatedInfo, getPositionsByRecordSyncElement, setRecordPositions as setRecordPositions$1, toRecordSyncElement, AI_TABLE_CONTENT_FIELD_NAME, getIdBySystemFieldValues, getShortIdBySystemFieldValues, getTrackableEntityBySystemFieldValues, getPositionsBySystemFieldValues, getValuesByCustomFieldValues, AITableFilterLogical, AITableFilterOperation, AITableFieldType, isEmpty } from '@ai-table/utils';
|
4
4
|
import * as i0 from '@angular/core';
|
5
5
|
import { signal, Injectable } from '@angular/core';
|
6
6
|
import { FieldModelMap, AITableQueries, isSystemField, getDefaultFieldValue, idCreator, shortIdCreator, generateNewName, idsCreator, shortIdsCreator, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, isMac, buildClipboardData, writeToClipboard, getI18nTextByKey, AITableGridI18nKey, writeToAITable } from '@ai-table/grid';
|
7
|
-
import * as _ from 'lodash';
|
8
|
-
import ___default, { isEmpty } from 'lodash';
|
9
7
|
import { createDraft, finishDraft } from 'immer';
|
8
|
+
import * as _ from 'lodash';
|
9
|
+
import ___default from 'lodash';
|
10
10
|
|
11
11
|
const IS_LOCAL = new WeakSet();
|
12
12
|
const IS_REMOTE = new WeakSet();
|
@@ -1028,13 +1028,6 @@ const Actions = {
|
|
1028
1028
|
...PositionsActions
|
1029
1029
|
};
|
1030
1030
|
|
1031
|
-
function updateRecordsUpdatedInfo(aiTable, updatedInfo) {
|
1032
|
-
const records = aiTable.records();
|
1033
|
-
records.forEach((item) => {
|
1034
|
-
Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);
|
1035
|
-
});
|
1036
|
-
}
|
1037
|
-
|
1038
1031
|
function createDefaultPositions(views, activeId, data, index) {
|
1039
1032
|
const positions = {};
|
1040
1033
|
const position = getPosition(data, activeId, index);
|
@@ -1144,7 +1137,6 @@ function addFields(aiTable, options, updatedInfo) {
|
|
1144
1137
|
newField.positions = createDefaultPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields, fields.length);
|
1145
1138
|
}
|
1146
1139
|
Actions.addField(aiTable, newField, originId, isDuplicate);
|
1147
|
-
updateRecordsUpdatedInfo(aiTable, updatedInfo);
|
1148
1140
|
}
|
1149
1141
|
|
1150
1142
|
const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
@@ -1154,7 +1146,6 @@ const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
|
1154
1146
|
icon: 'trash',
|
1155
1147
|
exec: (aiTable, field) => {
|
1156
1148
|
Actions.removeField(aiTable, [field()._id]);
|
1157
|
-
updateRecordsUpdatedInfo(aiTable, getUpdatedInfo());
|
1158
1149
|
}
|
1159
1150
|
};
|
1160
1151
|
};
|
@@ -1203,6 +1194,13 @@ function updateFieldValue(aiTable, options, updatedInfo) {
|
|
1203
1194
|
}
|
1204
1195
|
}
|
1205
1196
|
|
1197
|
+
function updateRecordsUpdatedInfo(aiTable, updatedInfo) {
|
1198
|
+
const records = aiTable.records();
|
1199
|
+
records.forEach((item) => {
|
1200
|
+
Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);
|
1201
|
+
});
|
1202
|
+
}
|
1203
|
+
|
1206
1204
|
const FLUSHING = new WeakMap();
|
1207
1205
|
|
1208
1206
|
function moveFields(aiTable, options, updatedInfo) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/undo-manager.service.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/utils/record/move-records.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { AITableView, AITableField, SharedType, SyncMapElement, getShareTypeNumberPath, AITableAction, ActionName } from '@ai-table/utils';\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateMapEvent from './map-event';\nimport { AITableAction, SharedType, translateArrayEvent } from '@ai-table/utils';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n UpdateFieldValueAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n if (fieldIndex < customField.length) {\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n } else {\n // 幽灵单元格,协同的后端会对这样的数据进行纠正,但是在纠正同步到位之前,前端可能会出现幽灵单元格\n console.error('Field index out of bounds, cannot update field value');\n }\n }\n }\n\n return sharedType;\n}\n","import { ActionName, SetFieldAction, SetViewAction, getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n UpdateSystemFieldValue,\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement,\n AITableViewFields,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toMapSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field } = action;\n const insertIndex = fields.length;\n const fieldSyncElement = toMapSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1) as Y.Array<any>;\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n // 幽灵单元格,暂不处理交给后端统一处理\n if (insertIndex <= customFieldValues.length) {\n customFieldValues.insert(insertIndex, [newFieldValue]);\n } else {\n console.error('Field index out of bounds, cannot initialize record value for new field');\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction\n): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\nimport { ActionName, AITableAction, SharedType } from '@ai-table/utils';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n AI_TABLE_CONTENT_FIELD_NAME,\n AITableViewFields,\n AITableViewRecords,\n AITableViews,\n SharedRecordJsonType,\n SharedType,\n toMapSyncElement,\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement\n} from '@ai-table/utils';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toMapSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toMapSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { UndoManager } from 'yjs';\nimport { AIViewTable } from '../types';\nimport { YjsAITable } from './yjs-table';\nimport { SharedType } from '@ai-table/utils';\n@Injectable()\nexport class UndoManagerService {\n private _undoManager: UndoManager | null = null;\n private _canUndoCount: WritableSignal<number> = signal<number>(0);\n private _canRedoCount: WritableSignal<number> = signal<number>(0);\n private _aiTable: AIViewTable | null = null;\n\n get undoManager(): UndoManager | null {\n return this._undoManager;\n }\n\n get canUndoCount(): WritableSignal<number> {\n return this._canUndoCount;\n }\n\n get canRedoCount(): WritableSignal<number> {\n return this._canRedoCount;\n }\n\n initialize(sharedType: SharedType, aiTable: AIViewTable) {\n if (!sharedType || !aiTable) {\n return;\n }\n this._aiTable = aiTable;\n this._undoManager = new UndoManager(sharedType, {\n trackedOrigins: new Set([aiTable]),\n captureTimeout: 300\n });\n\n this._undoManager.on('stack-item-added', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n\n this._undoManager.on('stack-item-popped', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n }\n\n undo() {\n if (this._undoManager?.canUndo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.undo());\n }\n }\n\n redo() {\n if (this._undoManager?.canRedo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.redo());\n }\n }\n\n destroy() {\n this._undoManager = null;\n this._canUndoCount.set(0);\n this._canRedoCount.set(0);\n }\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { AITableView, AITableViewFields, AITableViewRecords, Path } from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITableFieldType, AITableView, AITableViewRecords } from '@ai-table/utils';\nimport { AITable, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return sortByViewPosition(records, activeView);\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import { isSystemField, FieldModelMap, AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport {\n AITableRecord,\n AITableField,\n AITableFieldType,\n FieldValue,\n SelectSettings,\n SystemFieldTypes,\n AITableViewRecords,\n AITableViewFields,\n AITableView,\n AITableFilterConditions,\n AITableFilterLogical,\n AITableViewField,\n AITableFilterCondition,\n AITableFilterOperation\n} from '@ai-table/utils';\nimport { isEmpty } from 'lodash';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(\n aiTable: AIViewTable,\n fields: AITableViewFields,\n record: AITableRecord,\n filterConditions: AITableFilterConditions\n) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return (\n field &&\n doFilter(condition, cellValue, {\n aiTable,\n field\n })\n );\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(\n condition: AITableFilterCondition,\n cellValue: FieldValue,\n options: {\n aiTable: AITable;\n field: AITableField;\n }\n) {\n const fieldModel = FieldModelMap[options.field.type];\n if (fieldModel && fieldModel.isValid(cellValue)) {\n return fieldModel.isMeetFilter(condition, cellValue, options);\n } else {\n if (condition.operation === AITableFilterOperation.empty) {\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from '@ai-table/grid';\nimport { sortByViewPosition } from '../common';\nimport { AITableView, AITableViewFields } from '@ai-table/utils';\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType, AITableView, AITableViewFields, AITableViewRecords } from '@ai-table/utils';\nimport { AIViewTable } from '../types';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, AITableView, AITableViewField, NumberPath } from '@ai-table/utils';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath >= 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableQueries } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AITableViewField,\n AITableField,\n IdPath,\n NumberPath\n} from '@ai-table/utils';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, originId?: string, isDuplicate?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isDuplicate\n };\n const existField = aiTable.fields().some((item) => {\n return item._id === field._id;\n });\n if (existField) {\n console.error(`Field with id ${field._id} already exists.`, field);\n throw new Error(`Field with id ${field._id} already exists.`);\n }\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import { AIViewTable } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions } from '../utils';\nimport {\n ActionName,\n AITableAction,\n AITableField,\n AITableFields,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords\n} from '@ai-table/utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n if (!(action.record as AITableViewRecord).positions) {\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n records.length\n );\n }\n records.push(action.record as AITableViewRecord);\n break;\n }\n case ActionName.AddField: {\n const newField = action.field;\n fields.push(newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isDuplicate && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n views.push(action.view);\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n const newFields = finishDraft(fields);\n const newRecords = finishDraft(records);\n const newViews = finishDraft(views);\n if (newFields !== aiTable.fields()) {\n aiTable.fields.set(newFields);\n }\n if (newRecords !== aiTable.records()) {\n aiTable.records.set(newRecords);\n }\n if (newViews !== aiTable.views()) {\n aiTable.views.set(newViews);\n }\n }\n};\n","import { AIViewTable } from '../types';\nimport { ActionName, IdPath, Positions, RemovePositions, SetRecordPositionAction } from '@ai-table/utils';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import { AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n RemoveRecordAction,\n UpdateSystemFieldValue,\n AIRecordFieldIdPath,\n AITableRecord,\n AITableRecordUpdatedInfo,\n IdPath\n} from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const field = AITableQueries.getField(aiTable, [path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field value at update field value. invalidFieldType: ${field?.type}, value: ${value}, field_id: ${path[1]}`);\n }\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord) {\n const invalidFieldValues: string[] = [];\n const isValid = Object.entries(record.values).every(([fieldId, value]) => {\n const field = AITableQueries.getField(aiTable, [fieldId]);\n const fieldModel = field && FieldModelMap[field.type];\n const result = fieldModel ? fieldModel.isValid(value) : false;\n if (!result) {\n invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);\n }\n return result;\n });\n if (isValid) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);\n }\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n removeRecord,\n updateSystemFieldValue\n};\n","import { AITableView, ActionName, AddViewAction, RemoveViewAction, SetViewAction } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { sortViews } from '../utils';\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, originId: string, newView: AITableView, isDuplicate?: boolean) {\n const views = sortViews(aiTable.views());\n const currentIndex = views.findIndex((item) => item._id === originId);\n if (isDuplicate) {\n const nextIndex = currentIndex + 1;\n newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;\n } else {\n newView.position = currentIndex + 1;\n }\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view: newView,\n isDuplicate\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { AITableRecordUpdatedInfo } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\nimport { AIViewTable } from '../types';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'duplicate', viewId?: string) {\n const newId = idCreator();\n const shortId = shortIdCreator();\n const views = aiTable.views();\n const allViewNames = views.map((item) => item.name);\n const count = views.length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = views[views.length - 1]._id;\n if (type === 'duplicate') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = views.find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n }\n ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n\nexport function sortViews(data: AITableView[]) {\n return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));\n}\n","import { AddFieldOptions, AITableRecordUpdatedInfo, AITableViewField, AITableViewFields } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { idCreator } from '@ai-table/grid';\nimport { createDefaultPositions, getPosition } from '../view';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { defaultValue, isDuplicate, originId } = options;\n const fields = aiTable.gridData().fields as AITableViewFields;\n const fieldsMap = aiTable.fieldsMap();\n const activeViewId = aiTable.activeViewId();\n const newField = { ...defaultValue } as AITableViewField;\n\n if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === originId);\n newField.positions = {\n ...newField.positions,\n [activeViewId]: getPosition(fields, activeViewId, currentFieldIndex + 1)\n };\n } else {\n newField.positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n fields.length\n );\n }\n Actions.addField(aiTable, newField, originId, isDuplicate);\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableRecordUpdatedInfo, AITableField } from '@ai-table/utils';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { getDefaultFieldValue, idsCreator, shortIdsCreator } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\nimport { AddRecordOptions, AITableRecord, AITableViewFields, FieldValue, TrackableEntity } from '@ai-table/utils';\n\nexport function addRecords(aiTable: AIViewTable, trackableEntity: TrackableEntity, options?: AddRecordOptions) {\n const { originId, isDuplicate, count = 1 } = options || {};\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { UpdateFieldValueOptions, AITableRecordUpdatedInfo } from '@ai-table/utils';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { getMaxPosition } from '../view';\nimport { sortByViewPosition } from '../common';\nimport { Actions } from '../../action';\nimport { AITableRecordUpdatedInfo, AITableView, AITableViewRecords, MoveRecordOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\n\nexport function moveRecords(aiTable: AIViewTable, options: MoveRecordOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.gridData().records as AITableViewRecords;\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.views().find((view) => view._id === activeViewId) as AITableView;\n const { recordIds, newPath } = options;\n let targetPosition = 0;\n let prevPosition = 0;\n if (newPath[0] === 0) {\n targetPosition = records[0].positions[activeViewId]!;\n prevPosition = targetPosition - 1;\n } else if (newPath[0] >= records.length) {\n targetPosition = getMaxPosition(records, activeViewId) + 1;\n prevPosition = records[records.length - 1].positions[activeViewId]!;\n } else {\n targetPosition = records[newPath[0]].positions[activeViewId]!;\n prevPosition = records[newPath[0] - 1].positions[activeViewId]!;\n }\n const sourceRecords = recordIds.map((idPath) => records.find((record) => record._id === idPath[0])!);\n // 勾选多行顺序可能不一致,需要排序\n const sortedSourceRecords = sortByViewPosition(sourceRecords, activeView);\n let nextPosition = (prevPosition + targetPosition) / 2;\n sortedSourceRecords.forEach((record) => {\n Actions.setRecordPositions(aiTable, { [activeViewId]: nextPosition }, [record._id]);\n prevPosition = nextPosition;\n nextPosition = (prevPosition + targetPosition) / 2;\n });\n}\n","import { AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\nimport { AITableAction } from '@ai-table/utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\nimport { AddFieldOptions, AITableField } from '@ai-table/utils';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isDuplicate: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import {\n AITable,\n AITableContextMenuItem,\n AITableGridI18nKey,\n AITableGridSelectionService,\n AITableActions,\n getI18nTextByKey,\n isMac,\n writeToAITable\n} from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"@ai-table/utils\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["updateFieldValue","setRecordPositions","addView","removeView","_"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/undo-manager.service.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/utils/record/move-records.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { AITableView, AITableField, SharedType, SyncMapElement, getShareTypeNumberPath, AITableAction, ActionName } from '@ai-table/utils';\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateMapEvent from './map-event';\nimport { AITableAction, SharedType, translateArrayEvent } from '@ai-table/utils';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n UpdateFieldValueAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n if (fieldIndex < customField.length) {\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n } else {\n // 幽灵单元格,协同的后端会对这样的数据进行纠正,但是在纠正同步到位之前,前端可能会出现幽灵单元格\n console.error('Field index out of bounds, cannot update field value');\n }\n }\n }\n\n return sharedType;\n}\n","import { ActionName, SetFieldAction, SetViewAction, getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n UpdateSystemFieldValue,\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement,\n AITableViewFields,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toMapSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field } = action;\n const insertIndex = fields.length;\n const fieldSyncElement = toMapSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1) as Y.Array<any>;\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n // 幽灵单元格,暂不处理交给后端统一处理\n if (insertIndex <= customFieldValues.length) {\n customFieldValues.insert(insertIndex, [newFieldValue]);\n } else {\n console.error('Field index out of bounds, cannot initialize record value for new field');\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction\n): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\nimport { ActionName, AITableAction, SharedType } from '@ai-table/utils';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n AI_TABLE_CONTENT_FIELD_NAME,\n AITableViewFields,\n AITableViewRecords,\n AITableViews,\n SharedRecordJsonType,\n SharedType,\n toMapSyncElement,\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement\n} from '@ai-table/utils';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toMapSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toMapSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { UndoManager } from 'yjs';\nimport { AIViewTable } from '../types';\nimport { YjsAITable } from './yjs-table';\nimport { SharedType } from '@ai-table/utils';\n@Injectable()\nexport class UndoManagerService {\n private _undoManager: UndoManager | null = null;\n private _canUndoCount: WritableSignal<number> = signal<number>(0);\n private _canRedoCount: WritableSignal<number> = signal<number>(0);\n private _aiTable: AIViewTable | null = null;\n\n get undoManager(): UndoManager | null {\n return this._undoManager;\n }\n\n get canUndoCount(): WritableSignal<number> {\n return this._canUndoCount;\n }\n\n get canRedoCount(): WritableSignal<number> {\n return this._canRedoCount;\n }\n\n initialize(sharedType: SharedType, aiTable: AIViewTable) {\n if (!sharedType || !aiTable) {\n return;\n }\n this._aiTable = aiTable;\n this._undoManager = new UndoManager(sharedType, {\n trackedOrigins: new Set([aiTable]),\n captureTimeout: 300\n });\n\n this._undoManager.on('stack-item-added', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n\n this._undoManager.on('stack-item-popped', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n }\n\n undo() {\n if (this._undoManager?.canUndo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.undo());\n }\n }\n\n redo() {\n if (this._undoManager?.canRedo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.redo());\n }\n }\n\n destroy() {\n this._undoManager = null;\n this._canUndoCount.set(0);\n this._canRedoCount.set(0);\n }\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { AITableView, AITableViewFields, AITableViewRecords, Path } from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITableFieldType, AITableView, AITableViewRecords } from '@ai-table/utils';\nimport { AITable, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return sortByViewPosition(records, activeView);\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import { isSystemField, FieldModelMap, AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport {\n AITableRecord,\n AITableField,\n AITableFieldType,\n FieldValue,\n SelectSettings,\n SystemFieldTypes,\n AITableViewRecords,\n AITableViewFields,\n AITableView,\n AITableFilterConditions,\n AITableFilterLogical,\n AITableViewField,\n AITableFilterCondition,\n AITableFilterOperation,\n isEmpty\n} from '@ai-table/utils';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(\n aiTable: AIViewTable,\n fields: AITableViewFields,\n record: AITableRecord,\n filterConditions: AITableFilterConditions\n) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return (\n field &&\n doFilter(condition, cellValue, {\n aiTable,\n field\n })\n );\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(\n condition: AITableFilterCondition,\n cellValue: FieldValue,\n options: {\n aiTable: AITable;\n field: AITableField;\n }\n) {\n const fieldModel = FieldModelMap[options.field.type];\n if (fieldModel && fieldModel.isValid(cellValue)) {\n return fieldModel.isMeetFilter(condition, cellValue, options);\n } else {\n if (condition.operation === AITableFilterOperation.empty) {\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from '@ai-table/grid';\nimport { sortByViewPosition } from '../common';\nimport { AITableView, AITableViewFields } from '@ai-table/utils';\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType, AITableView, AITableViewFields, AITableViewRecords } from '@ai-table/utils';\nimport { AIViewTable } from '../types';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, AITableView, AITableViewField, NumberPath } from '@ai-table/utils';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath >= 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableQueries } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AITableViewField,\n AITableField,\n IdPath,\n NumberPath\n} from '@ai-table/utils';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, originId?: string, isDuplicate?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isDuplicate\n };\n const existField = aiTable.fields().some((item) => {\n return item._id === field._id;\n });\n if (existField) {\n console.error(`Field with id ${field._id} already exists.`, field);\n throw new Error(`Field with id ${field._id} already exists.`);\n }\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import { AIViewTable } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions } from '../utils';\nimport {\n ActionName,\n AITableAction,\n AITableField,\n AITableFields,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords\n} from '@ai-table/utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n if (!(action.record as AITableViewRecord).positions) {\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n records.length\n );\n }\n records.push(action.record as AITableViewRecord);\n break;\n }\n case ActionName.AddField: {\n const newField = action.field;\n fields.push(newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isDuplicate && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n views.push(action.view);\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n const newFields = finishDraft(fields);\n const newRecords = finishDraft(records);\n const newViews = finishDraft(views);\n if (newFields !== aiTable.fields()) {\n aiTable.fields.set(newFields);\n }\n if (newRecords !== aiTable.records()) {\n aiTable.records.set(newRecords);\n }\n if (newViews !== aiTable.views()) {\n aiTable.views.set(newViews);\n }\n }\n};\n","import { AIViewTable } from '../types';\nimport { ActionName, IdPath, Positions, RemovePositions, SetRecordPositionAction } from '@ai-table/utils';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import { AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n RemoveRecordAction,\n UpdateSystemFieldValue,\n AIRecordFieldIdPath,\n AITableRecord,\n AITableRecordUpdatedInfo,\n IdPath\n} from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const field = AITableQueries.getField(aiTable, [path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field value at update field value. invalidFieldType: ${field?.type}, value: ${value}, field_id: ${path[1]}`);\n }\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord) {\n const invalidFieldValues: string[] = [];\n const isValid = Object.entries(record.values).every(([fieldId, value]) => {\n const field = AITableQueries.getField(aiTable, [fieldId]);\n const fieldModel = field && FieldModelMap[field.type];\n const result = fieldModel ? fieldModel.isValid(value) : false;\n if (!result) {\n invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);\n }\n return result;\n });\n if (isValid) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);\n }\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n removeRecord,\n updateSystemFieldValue\n};\n","import { AITableView, ActionName, AddViewAction, RemoveViewAction, SetViewAction } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { sortViews } from '../utils';\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, originId: string, newView: AITableView, isDuplicate?: boolean) {\n const views = sortViews(aiTable.views());\n const currentIndex = views.findIndex((item) => item._id === originId);\n if (isDuplicate) {\n const nextIndex = currentIndex + 1;\n newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;\n } else {\n newView.position = currentIndex + 1;\n }\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view: newView,\n isDuplicate\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\nimport { AIViewTable } from '../types';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'duplicate', viewId?: string) {\n const newId = idCreator();\n const shortId = shortIdCreator();\n const views = aiTable.views();\n const allViewNames = views.map((item) => item.name);\n const count = views.length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = views[views.length - 1]._id;\n if (type === 'duplicate') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = views.find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n }\n ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n\nexport function sortViews(data: AITableView[]) {\n return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));\n}\n","import { AddFieldOptions, AITableRecordUpdatedInfo, AITableViewField, AITableViewFields } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { idCreator } from '@ai-table/grid';\nimport { createDefaultPositions, getPosition } from '../view';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { defaultValue, isDuplicate, originId } = options;\n const fields = aiTable.gridData().fields as AITableViewFields;\n const fieldsMap = aiTable.fieldsMap();\n const activeViewId = aiTable.activeViewId();\n const newField = { ...defaultValue } as AITableViewField;\n\n if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === originId);\n newField.positions = {\n ...newField.positions,\n [activeViewId]: getPosition(fields, activeViewId, currentFieldIndex + 1)\n };\n } else {\n newField.positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n fields.length\n );\n }\n Actions.addField(aiTable, newField, originId, isDuplicate);\n}\n","import { AITable } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableRecordUpdatedInfo, AITableField } from '@ai-table/utils';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n }\n };\n};\n","import { getDefaultFieldValue, idsCreator, shortIdsCreator } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\nimport { AddRecordOptions, AITableRecord, AITableViewFields, FieldValue, TrackableEntity } from '@ai-table/utils';\n\nexport function addRecords(aiTable: AIViewTable, trackableEntity: TrackableEntity, options?: AddRecordOptions) {\n const { originId, isDuplicate, count = 1 } = options || {};\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { UpdateFieldValueOptions, AITableRecordUpdatedInfo } from '@ai-table/utils';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AITableRecordUpdatedInfo } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { getMaxPosition } from '../view';\nimport { sortByViewPosition } from '../common';\nimport { Actions } from '../../action';\nimport { AITableRecordUpdatedInfo, AITableView, AITableViewRecords, MoveRecordOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\n\nexport function moveRecords(aiTable: AIViewTable, options: MoveRecordOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.gridData().records as AITableViewRecords;\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.views().find((view) => view._id === activeViewId) as AITableView;\n const { recordIds, newPath } = options;\n let targetPosition = 0;\n let prevPosition = 0;\n if (newPath[0] === 0) {\n targetPosition = records[0].positions[activeViewId]!;\n prevPosition = targetPosition - 1;\n } else if (newPath[0] >= records.length) {\n targetPosition = getMaxPosition(records, activeViewId) + 1;\n prevPosition = records[records.length - 1].positions[activeViewId]!;\n } else {\n targetPosition = records[newPath[0]].positions[activeViewId]!;\n prevPosition = records[newPath[0] - 1].positions[activeViewId]!;\n }\n const sourceRecords = recordIds.map((idPath) => records.find((record) => record._id === idPath[0])!);\n // 勾选多行顺序可能不一致,需要排序\n const sortedSourceRecords = sortByViewPosition(sourceRecords, activeView);\n let nextPosition = (prevPosition + targetPosition) / 2;\n sortedSourceRecords.forEach((record) => {\n Actions.setRecordPositions(aiTable, { [activeViewId]: nextPosition }, [record._id]);\n prevPosition = nextPosition;\n nextPosition = (prevPosition + targetPosition) / 2;\n });\n}\n","import { AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\nimport { AITableAction } from '@ai-table/utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\nimport { AddFieldOptions, AITableField } from '@ai-table/utils';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isDuplicate: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import {\n AITable,\n AITableContextMenuItem,\n AITableGridI18nKey,\n AITableGridSelectionService,\n AITableActions,\n getI18nTextByKey,\n isMac,\n writeToAITable\n} from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"@ai-table/utils\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["updateFieldValue","setRecordPositions","addView","removeView","_"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"add-fields.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/add-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAuC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,
|
1
|
+
{"version":3,"file":"add-fields.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/add-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAuC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,QAyB9G"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"remove-field.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/remove-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzE,eAAO,MAAM,oBAAoB,YAAa,OAAO,kBAAkB,MAAM,wBAAwB;;;;oBAK7E,OAAO,SAAS,OAAO,YAAY,CAAC;
|
1
|
+
{"version":3,"file":"remove-field.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/remove-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzE,eAAO,MAAM,oBAAoB,YAAa,OAAO,kBAAkB,MAAM,wBAAwB;;;;oBAK7E,OAAO,SAAS,OAAO,YAAY,CAAC;CAI3D,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAEH,YAAY,EAEZ,UAAU,EAGV,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EAEX,oBAAoB,EAEpB,sBAAsB,
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAEH,YAAY,EAEZ,UAAU,EAGV,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EAEX,oBAAoB,EAEpB,sBAAsB,EAGzB,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,sBAgBvI;AAwCD,wBAAgB,QAAQ,CACpB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE;IACL,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;CACvB,WAYJ;AAED,wBAAgB,4BAA4B,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACxC,UAAU,EAAE,sBAAsB,EAAE,EACpC,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,CAAC,EAAE,oBAAoB,uBA4C1C"}
|