@ai-table/state 0.0.67 → 0.0.68
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/action/general.d.ts.map +1 -1
- package/action/index.d.ts +1 -1
- package/action/view.d.ts +1 -1
- package/action/view.d.ts.map +1 -1
- package/esm2022/action/general.mjs +2 -5
- package/esm2022/action/view.mjs +14 -4
- package/esm2022/utils/view.mjs +11 -9
- package/fesm2022/ai-table-state.mjs +24 -16
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/view.d.ts +2 -1
- package/utils/view.d.ts.map +1 -1
package/action/general.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA8J5D,eAAO,MAAM,cAAc;uBACJ,WAAW,UAAU,aAAa,GAAG,IAAI;CAkB/D,CAAC"}
|
package/action/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
export declare const Actions: {
|
2
2
|
setRecordPositions: typeof import("./position").setRecordPositions;
|
3
3
|
setView: (aiTable: import("@ai-table/state").AIViewTable, value: Partial<import("@ai-table/utils").AITableView>, path: [string]) => void;
|
4
|
-
addView: (aiTable: import("@ai-table/state").AIViewTable,
|
4
|
+
addView: (aiTable: import("@ai-table/state").AIViewTable, originId: string, newView: import("@ai-table/utils").AITableView, isDuplicate?: boolean | undefined) => void;
|
5
5
|
removeView: (aiTable: import("@ai-table/state").AIViewTable, path: [string]) => void;
|
6
6
|
addField: typeof import("./field").addField;
|
7
7
|
moveField: typeof import("./field").moveField;
|
package/action/view.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { AITableView } from '@ai-table/utils';
|
2
2
|
import { AIViewTable } from '../types/ai-table';
|
3
3
|
declare function setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]): void;
|
4
|
-
declare function addView(aiTable: AIViewTable,
|
4
|
+
declare function addView(aiTable: AIViewTable, originId: string, newView: AITableView, isDuplicate?: boolean): void;
|
5
5
|
declare function removeView(aiTable: AIViewTable, path: [string]): void;
|
6
6
|
export declare const ViewActions: {
|
7
7
|
setView: typeof setView;
|
package/action/view.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,iBAAS,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,QAyBjF;AAED,iBAAS,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,QAenG;AAED,iBAAS,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,QAMvD;AAED,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}
|
@@ -105,10 +105,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
105
105
|
break;
|
106
106
|
}
|
107
107
|
case ActionName.AddView: {
|
108
|
-
|
109
|
-
if (viewIndex > -1) {
|
110
|
-
views.splice(viewIndex, 0, action.view);
|
111
|
-
}
|
108
|
+
views.push(action.view);
|
112
109
|
break;
|
113
110
|
}
|
114
111
|
case ActionName.RemoveView: {
|
@@ -163,4 +160,4 @@ export const GeneralActions = {
|
|
163
160
|
}
|
164
161
|
}
|
165
162
|
};
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9hY3Rpb24vZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVdsRCxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQW9CLEVBQUUsT0FBMkIsRUFBRSxNQUFxQixFQUFFLEtBQW9CLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ3BJLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLEtBQUssVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFD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QUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVmlld1RhYmxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQWN0aW9uTmFtZSwgQUlUYWJsZUFjdGlvbiB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVEcmFmdCwgZmluaXNoRHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgeyBnZXREZWZhdWx0RmllbGRWYWx1ZSB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVGaWVsZCxcbiAgICBBSVRhYmxlRmllbGRzLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmQsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzXG59IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5cbmNvbnN0IGFwcGx5ID0gKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGZpZWxkczogQUlUYWJsZUZpZWxkcywgdmlld3M6IEFJVGFibGVWaWV3W10sIGFjdGlvbjogQUlUYWJsZUFjdGlvbikgPT4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlVwZGF0ZUZpZWxkVmFsdWU6IHtcbiAgICAgICAgICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGlmIChyZWNvcmRJZCAmJiBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBhaVRhYmxlLnJlY29yZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSByZWNvcmRJZCk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1tyZWNvcmRJbmRleF0udmFsdWVzW2ZpZWxkSWRdID0gYWN0aW9uLm5ld0ZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuVXBkYXRlU3lzdGVtRmllbGRWYWx1ZToge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHJlY29yZElkICYmIGFjdGlvbi51cGRhdGVkSW5mbykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gYWlUYWJsZS5yZWNvcmRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcmVjb3JkSWQpO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9hdCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2F0ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9ieSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2J5ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZFJlY29yZDoge1xuICAgICAgICAgICAgaWYgKCEoYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCkucG9zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgKGFjdGlvbi5yZWNvcmQgYXMgQUlUYWJsZVZpZXdSZWNvcmQpLnBvc2l0aW9ucyA9IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIGFpVGFibGUudmlld3MoKSxcbiAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5hY3RpdmVWaWV3SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWNvcmRzLnB1c2goYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkRmllbGQ6IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gYWN0aW9uLmZpZWxkO1xuICAgICAgICAgICAgZmllbGRzLnB1c2gobmV3RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCk7XG4gICAgICAgICAgICByZWNvcmRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlc1tuZXdGaWVsZC5faWRdID1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmlzQ29weSAmJiBhY3Rpb24ub3JpZ2luSWQgPyBpdGVtLnZhbHVlc1thY3Rpb24ub3JpZ2luSWRdIDogZ2V0RGVmYXVsdEZpZWxkVmFsdWUoYWN0aW9uLmZpZWxkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkOiB7XG4gICAgICAgICAgICBjb25zdCBbZmllbGRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBhaVRhYmxlLmZpZWxkcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGZpZWxkSWQpO1xuICAgICAgICAgICAgaWYgKGZpZWxkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGZpZWxkcy5zcGxpY2UoZmllbGRJbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnZhbHVlc1tmaWVsZElkXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQ6IHtcbiAgICAgICAgICAgIGNvbnN0IFtyZWNvcmRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gYWlUYWJsZS5yZWNvcmRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcmVjb3JkSWQpO1xuICAgICAgICAgICAgaWYgKHJlY29yZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICByZWNvcmRzLnNwbGljZShyZWNvcmRJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5TZXRGaWVsZDoge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGFjdGlvbi5wYXRoWzBdKSBhcyBBSVRhYmxlRmllbGQ7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ubmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5IGFzIGtleW9mIEFJVGFibGVGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhY3Rpb24ubmV3UHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZFtrXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZFtrXSBhcyBhbnkpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQsIGJ1dCBhcmUgbm93IG1pc3NpbmcsIG11c3QgYmUgZGVsZXRlZFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aW9uLm5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkWzxrZXlvZiBBSVRhYmxlRmllbGQ+a2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5TZXRWaWV3OiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdmlld3MuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGFjdGlvbi5wYXRoWzBdKSBhcyBBSVRhYmxlVmlldztcbiAgICAgICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uLm5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiBBSVRhYmxlVmlldztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhY3Rpb24ubmV3UHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3W2tdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdba10gYXMgYW55KSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ucHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbi5uZXdQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3WzxrZXlvZiBBSVRhYmxlVmlldz5rZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZFZpZXc6IHtcbiAgICAgICAgICAgIGNvbnN0IFt2aWV3SW5kZXhdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBpZiAodmlld0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB2aWV3cy5zcGxpY2Uodmlld0luZGV4LCAwLCBhY3Rpb24udmlldyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuUmVtb3ZlVmlldzoge1xuICAgICAgICAgICAgY29uc3QgW3ZpZXdJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdJbmRleCA9IHZpZXdzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IHZpZXdJZCk7XG4gICAgICAgICAgICBpZiAodmlld0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB2aWV3cy5zcGxpY2Uodmlld0luZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5TZXRSZWNvcmRQb3NpdGlvbnM6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcG9zaXRpb25zLCBwYXRoIH0gPSBhY3Rpb247XG4gICAgICAgICAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBwYXRoWzBdKTtcbiAgICAgICAgICAgIGlmIChyZWNvcmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQb3NpdGlvbnMgPSB7IC4uLnJlY29yZC5wb3NpdGlvbnMgfTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uc1trZXldID09PSBudWxsIHx8IHBvc2l0aW9uc1trZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdQb3NpdGlvbnNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Bvc2l0aW9uc1trZXldID0gcG9zaXRpb25zW2tleV0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlY29yZC5wb3NpdGlvbnMgPSBuZXdQb3NpdGlvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByZWNvcmRzLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZpZXdzXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBHZW5lcmFsQWN0aW9ucyA9IHtcbiAgICB0cmFuc2Zvcm0oYWlUYWJsZTogQUlWaWV3VGFibGUsIGFjdGlvbjogQUlUYWJsZUFjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCByZWNvcmRzID0gY3JlYXRlRHJhZnQoYWlUYWJsZS5yZWNvcmRzKCkpIGFzIEFJVGFibGVWaWV3UmVjb3JkcztcbiAgICAgICAgY29uc3QgZmllbGRzID0gY3JlYXRlRHJhZnQoYWlUYWJsZS5maWVsZHMoKSkgYXMgQUlUYWJsZVZpZXdGaWVsZHM7XG4gICAgICAgIGNvbnN0IHZpZXdzID0gY3JlYXRlRHJhZnQoYWlUYWJsZS52aWV3cygpKTtcbiAgICAgICAgYXBwbHkoYWlUYWJsZSwgcmVjb3JkcywgZmllbGRzLCB2aWV3cywgYWN0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3RmllbGRzID0gZmluaXNoRHJhZnQoZmllbGRzKTtcbiAgICAgICAgY29uc3QgbmV3UmVjb3JkcyA9IGZpbmlzaERyYWZ0KHJlY29yZHMpO1xuICAgICAgICBjb25zdCBuZXdWaWV3cyA9IGZpbmlzaERyYWZ0KHZpZXdzKTtcbiAgICAgICAgaWYgKG5ld0ZpZWxkcyAhPT0gYWlUYWJsZS5maWVsZHMoKSkge1xuICAgICAgICAgICAgYWlUYWJsZS5maWVsZHMuc2V0KG5ld0ZpZWxkcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1JlY29yZHMgIT09IGFpVGFibGUucmVjb3JkcygpKSB7XG4gICAgICAgICAgICBhaVRhYmxlLnJlY29yZHMuc2V0KG5ld1JlY29yZHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWaWV3cyAhPT0gYWlUYWJsZS52aWV3cygpKSB7XG4gICAgICAgICAgICBhaVRhYmxlLnZpZXdzLnNldChuZXdWaWV3cyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9hY3Rpb24vZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVdsRCxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQW9CLEVBQUUsT0FBMkIsRUFBRSxNQUFxQixFQUFFLEtBQW9CLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ3BJLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLEtBQUssVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFD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O1xuaW1wb3J0IHsgQWN0aW9uTmFtZSwgQUlUYWJsZUFjdGlvbiB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVEcmFmdCwgZmluaXNoRHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgeyBnZXREZWZhdWx0RmllbGRWYWx1ZSB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVGaWVsZCxcbiAgICBBSVRhYmxlRmllbGRzLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmQsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzXG59IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5cbmNvbnN0IGFwcGx5ID0gKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGZpZWxkczogQUlUYWJsZUZpZWxkcywgdmlld3M6IEFJVGFibGVWaWV3W10sIGFjdGlvbjogQUlUYWJsZUFjdGlvbikgPT4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlVwZGF0ZUZpZWxkVmFsdWU6IHtcbiAgICAgICAgICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGlmIChyZWNvcmRJZCAmJiBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBhaVRhYmxlLnJlY29yZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSByZWNvcmRJZCk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1tyZWNvcmRJbmRleF0udmFsdWVzW2ZpZWxkSWRdID0gYWN0aW9uLm5ld0ZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuVXBkYXRlU3lzdGVtRmllbGRWYWx1ZToge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHJlY29yZElkICYmIGFjdGlvbi51cGRhdGVkSW5mbykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gYWlUYWJsZS5yZWNvcmRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcmVjb3JkSWQpO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9hdCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2F0ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9ieSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2J5ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZFJlY29yZDoge1xuICAgICAgICAgICAgaWYgKCEoYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCkucG9zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgKGFjdGlvbi5yZWNvcmQgYXMgQUlUYWJsZVZpZXdSZWNvcmQpLnBvc2l0aW9ucyA9IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIGFpVGFibGUudmlld3MoKSxcbiAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5hY3RpdmVWaWV3SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWNvcmRzLnB1c2goYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkRmllbGQ6IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gYWN0aW9uLmZpZWxkO1xuICAgICAgICAgICAgZmllbGRzLnB1c2gobmV3RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCk7XG4gICAgICAgICAgICByZWNvcmRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlc1tuZXdGaWVsZC5faWRdID1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmlzQ29weSAmJiBhY3Rpb24ub3JpZ2luSWQgPyBpdGVtLnZhbHVlc1thY3Rpb24ub3JpZ2luSWRdIDogZ2V0RGVmYXVsdEZpZWxkVmFsdWUoYWN0aW9uLmZpZWxkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkOiB7XG4gICAgICAgICAgICBjb25zdCBbZmllbGRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBhaVRhYmxlLmZpZWxkcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGZpZWxkSWQpO1xuICAgICAgICAgICAgaWYgKGZpZWxkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGZpZWxkcy5zcGxpY2UoZmllbGRJbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnZhbHVlc1tmaWVsZElkXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQ6IHtcbiAgICAgICAgICAgIGNvbnN0IFtyZWNvcmRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gYWlUYWJsZS5yZWNvcmRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcmVjb3JkSWQpO1xuICAgICAgICAgICAgaWYgKHJlY29yZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICByZWNvcmRzLnNwbGljZShyZWNvcmRJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5TZXRGaWVsZDoge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGFjdGlvbi5wYXRoWzBdKSBhcyBBSVRhYmxlRmllbGQ7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ubmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5IGFzIGtleW9mIEFJVGFibGVGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhY3Rpb24ubmV3UHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZFtrXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZFtrXSBhcyBhbnkpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQsIGJ1dCBhcmUgbm93IG1pc3NpbmcsIG11c3QgYmUgZGVsZXRlZFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aW9uLm5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkWzxrZXlvZiBBSVRhYmxlRmllbGQ+a2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5TZXRWaWV3OiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdmlld3MuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGFjdGlvbi5wYXRoWzBdKSBhcyBBSVRhYmxlVmlldztcbiAgICAgICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uLm5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiBBSVRhYmxlVmlldztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhY3Rpb24ubmV3UHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3W2tdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdba10gYXMgYW55KSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ucHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbi5uZXdQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3WzxrZXlvZiBBSVRhYmxlVmlldz5rZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZFZpZXc6IHtcbiAgICAgICAgICAgIHZpZXdzLnB1c2goYWN0aW9uLnZpZXcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlJlbW92ZVZpZXc6IHtcbiAgICAgICAgICAgIGNvbnN0IFt2aWV3SWRdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBjb25zdCB2aWV3SW5kZXggPSB2aWV3cy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSB2aWV3SWQpO1xuICAgICAgICAgICAgaWYgKHZpZXdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdmlld3Muc3BsaWNlKHZpZXdJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuU2V0UmVjb3JkUG9zaXRpb25zOiB7XG4gICAgICAgICAgICBjb25zdCB7IHBvc2l0aW9ucywgcGF0aCB9ID0gYWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkcy5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcGF0aFswXSk7XG4gICAgICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UG9zaXRpb25zID0geyAuLi5yZWNvcmQucG9zaXRpb25zIH07XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcG9zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbnNba2V5XSA9PT0gbnVsbCB8fCBwb3NpdGlvbnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3UG9zaXRpb25zW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQb3NpdGlvbnNba2V5XSA9IHBvc2l0aW9uc1trZXldIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWNvcmQucG9zaXRpb25zID0gbmV3UG9zaXRpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICB2aWV3c1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhbEFjdGlvbnMgPSB7XG4gICAgdHJhbnNmb3JtKGFpVGFibGU6IEFJVmlld1RhYmxlLCBhY3Rpb246IEFJVGFibGVBY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUucmVjb3JkcygpKSBhcyBBSVRhYmxlVmlld1JlY29yZHM7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUuZmllbGRzKCkpIGFzIEFJVGFibGVWaWV3RmllbGRzO1xuICAgICAgICBjb25zdCB2aWV3cyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUudmlld3MoKSk7XG4gICAgICAgIGFwcGx5KGFpVGFibGUsIHJlY29yZHMsIGZpZWxkcywgdmlld3MsIGFjdGlvbik7XG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkcyA9IGZpbmlzaERyYWZ0KGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZHMgPSBmaW5pc2hEcmFmdChyZWNvcmRzKTtcbiAgICAgICAgY29uc3QgbmV3Vmlld3MgPSBmaW5pc2hEcmFmdCh2aWV3cyk7XG4gICAgICAgIGlmIChuZXdGaWVsZHMgIT09IGFpVGFibGUuZmllbGRzKCkpIHtcbiAgICAgICAgICAgIGFpVGFibGUuZmllbGRzLnNldChuZXdGaWVsZHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdSZWNvcmRzICE9PSBhaVRhYmxlLnJlY29yZHMoKSkge1xuICAgICAgICAgICAgYWlUYWJsZS5yZWNvcmRzLnNldChuZXdSZWNvcmRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3Vmlld3MgIT09IGFpVGFibGUudmlld3MoKSkge1xuICAgICAgICAgICAgYWlUYWJsZS52aWV3cy5zZXQobmV3Vmlld3MpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
|
package/esm2022/action/view.mjs
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { ActionName } from '@ai-table/utils';
|
2
|
+
import { sortViews } from '../utils';
|
2
3
|
function setView(aiTable, value, path) {
|
3
4
|
const view = aiTable.views().find((item) => item._id === path[0]);
|
4
5
|
if (view) {
|
@@ -24,11 +25,20 @@ function setView(aiTable, value, path) {
|
|
24
25
|
aiTable.apply(operation);
|
25
26
|
}
|
26
27
|
}
|
27
|
-
function addView(aiTable,
|
28
|
+
function addView(aiTable, originId, newView, isDuplicate) {
|
29
|
+
const views = sortViews(aiTable.views());
|
30
|
+
const currentIndex = views.findIndex((item) => item._id === originId);
|
31
|
+
if (isDuplicate) {
|
32
|
+
const nextIndex = currentIndex + 1;
|
33
|
+
newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
newView.position = currentIndex + 1;
|
37
|
+
}
|
28
38
|
const operation = {
|
29
39
|
type: ActionName.AddView,
|
30
|
-
view,
|
31
|
-
|
40
|
+
view: newView,
|
41
|
+
isDuplicate
|
32
42
|
};
|
33
43
|
aiTable.apply(operation);
|
34
44
|
}
|
@@ -44,4 +54,4 @@ export const ViewActions = {
|
|
44
54
|
addView,
|
45
55
|
removeView
|
46
56
|
};
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9hY3Rpb24vdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFrRCxNQUFNLGlCQUFpQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckMsU0FBUyxPQUFPLENBQUMsT0FBb0IsRUFBRSxLQUEyQixFQUFFLElBQWM7SUFDOUUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxVQUFVLEdBQXlCLEVBQUUsQ0FBQztRQUM1QyxNQUFNLGFBQWEsR0FBeUIsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLEdBQUcsR0FBd0IsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQVEsQ0FBQztnQkFDbkMsQ0FBQztnQkFDRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQVEsQ0FBQztnQkFDdkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQWtCO1lBQzdCLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTztZQUN4QixVQUFVO1lBQ1YsYUFBYTtZQUNiLElBQUk7U0FDUCxDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLE9BQW9CLEVBQUUsUUFBZ0IsRUFBRSxPQUFvQixFQUFFLFdBQXFCO0lBQ2hHLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLElBQUksV0FBVyxFQUFFLENBQUM7UUFDZCxNQUFNLFNBQVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pILENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLFFBQVEsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBa0I7UUFDN0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPO1FBQ3hCLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVztLQUNkLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUFvQixFQUFFLElBQWM7SUFDcEQsTUFBTSxTQUFTLEdBQXFCO1FBQ2hDLElBQUksRUFBRSxVQUFVLENBQUMsVUFBVTtRQUMzQixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QixPQUFPO0lBQ1AsT0FBTztJQUNQLFVBQVU7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZVZpZXcgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQWN0aW9uTmFtZSwgQWRkVmlld0FjdGlvbiwgUmVtb3ZlVmlld0FjdGlvbiwgU2V0Vmlld0FjdGlvbiB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uL3R5cGVzL2FpLXRhYmxlJztcbmltcG9ydCB7IHNvcnRWaWV3cyB9IGZyb20gJy4uL3V0aWxzJztcblxuZnVuY3Rpb24gc2V0VmlldyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgdmFsdWU6IFBhcnRpYWw8QUlUYWJsZVZpZXc+LCBwYXRoOiBbc3RyaW5nXSkge1xuICAgIGNvbnN0IHZpZXcgPSBhaVRhYmxlLnZpZXdzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IHBhdGhbMF0pO1xuICAgIGlmICh2aWV3KSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IFBhcnRpYWw8QUlUYWJsZVZpZXc+ID0ge307XG4gICAgICAgIGNvbnN0IG5ld1Byb3BlcnRpZXM6IFBhcnRpYWw8QUlUYWJsZVZpZXc+ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBrID0ga2V5IGFzIGtleW9mIEFJVGFibGVWaWV3O1xuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHZpZXdba10pICE9PSBKU09OLnN0cmluZ2lmeSh2YWx1ZVtrXSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodmlldy5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2tdID0gdmlld1trXSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzW2tdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXNba10gPSB2YWx1ZVtrXSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uOiBTZXRWaWV3QWN0aW9uID0ge1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5TZXRWaWV3LFxuICAgICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMsXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH07XG4gICAgICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZFZpZXcoYWlUYWJsZTogQUlWaWV3VGFibGUsIG9yaWdpbklkOiBzdHJpbmcsIG5ld1ZpZXc6IEFJVGFibGVWaWV3LCBpc0R1cGxpY2F0ZT86IGJvb2xlYW4pIHtcbiAgICBjb25zdCB2aWV3cyA9IHNvcnRWaWV3cyhhaVRhYmxlLnZpZXdzKCkpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHZpZXdzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IG9yaWdpbklkKTtcbiAgICBpZiAoaXNEdXBsaWNhdGUpIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgbmV3Vmlldy5wb3NpdGlvbiA9ICgodmlld3NbY3VycmVudEluZGV4XT8ucG9zaXRpb24gPz8gY3VycmVudEluZGV4KSArICh2aWV3c1tuZXh0SW5kZXhdPy5wb3NpdGlvbiA/PyBuZXh0SW5kZXgpKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Vmlldy5wb3NpdGlvbiA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvbjogQWRkVmlld0FjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRWaWV3LFxuICAgICAgICB2aWV3OiBuZXdWaWV3LFxuICAgICAgICBpc0R1cGxpY2F0ZVxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVWaWV3KGFpVGFibGU6IEFJVmlld1RhYmxlLCBwYXRoOiBbc3RyaW5nXSkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogUmVtb3ZlVmlld0FjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVWaWV3LFxuICAgICAgICBwYXRoXG4gICAgfTtcbiAgICBhaVRhYmxlLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBjb25zdCBWaWV3QWN0aW9ucyA9IHtcbiAgICBzZXRWaWV3LFxuICAgIGFkZFZpZXcsXG4gICAgcmVtb3ZlVmlld1xufTtcbiJdfQ==
|
package/esm2022/utils/view.mjs
CHANGED
@@ -40,21 +40,21 @@ export function getMaxPosition(data, activeViewId) {
|
|
40
40
|
}, 0);
|
41
41
|
}
|
42
42
|
export function addView(aiTable, type, viewId) {
|
43
|
-
let index = aiTable.views().length;
|
44
43
|
const newId = idCreator();
|
45
44
|
const shortId = shortIdCreator();
|
46
|
-
const
|
47
|
-
const
|
45
|
+
const views = aiTable.views();
|
46
|
+
const allViewNames = views.map((item) => item.name);
|
47
|
+
const count = views.length || 0;
|
48
48
|
const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));
|
49
49
|
let newView = {
|
50
50
|
_id: newId,
|
51
51
|
short_id: shortId,
|
52
52
|
name: newViewName
|
53
53
|
};
|
54
|
-
let originViewId =
|
55
|
-
if (type === '
|
54
|
+
let originViewId = views[views.length - 1]._id;
|
55
|
+
if (type === 'duplicate') {
|
56
56
|
originViewId = viewId ?? aiTable.activeViewId();
|
57
|
-
const copyView =
|
57
|
+
const copyView = views.find((item) => item._id === originViewId);
|
58
58
|
const copyName = copyView.name;
|
59
59
|
const copyViewName = generateCopyName(aiTable, allViewNames, copyName);
|
60
60
|
newView = {
|
@@ -62,9 +62,8 @@ export function addView(aiTable, type, viewId) {
|
|
62
62
|
_id: newId,
|
63
63
|
name: copyViewName
|
64
64
|
};
|
65
|
-
index = aiTable.views().indexOf(copyView) + 1;
|
66
65
|
}
|
67
|
-
ViewActions.addView(aiTable, newView,
|
66
|
+
ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');
|
68
67
|
aiTable.records().forEach((record) => {
|
69
68
|
PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);
|
70
69
|
});
|
@@ -91,4 +90,7 @@ export function removeView(aiTable, records, fields, activeViewId) {
|
|
91
90
|
});
|
92
91
|
ViewActions.removeView(aiTable, [activeViewId]);
|
93
92
|
}
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHcEUsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxLQUFvQixFQUNwQixRQUFnQixFQUNoQixJQUE0QyxFQUM1QyxLQUFhO0lBRWIsTUFBTSxTQUFTLEdBQWMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0wsQ0FBQyxDQUFD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UUFDdkIsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FDWixPQUFPLEVBQ1A7WUFDSSxTQUFTO1NBQ1osRUFDRCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDZCxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlkQ3JlYXRvciwgc2hvcnRJZENyZWF0b3IgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlVmlldywgQUlUYWJsZVZpZXdGaWVsZCwgQUlUYWJsZVZpZXdGaWVsZHMsIEFJVGFibGVWaWV3UmVjb3JkcywgUG9zaXRpb25zIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcbmltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb24nO1xuaW1wb3J0IHsgVmlld0FjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb24vdmlldyc7XG5pbXBvcnQgeyBQb3NpdGlvbnNBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9uL3Bvc2l0aW9uJztcbmltcG9ydCB7IGdlbmVyYXRlQ29weU5hbWUgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBnZW5lcmF0ZU5ld05hbWUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlU3RhdGVJMThuS2V5LCBnZXRTdGF0ZUkxOG5UZXh0QnlLZXkgfSBmcm9tICcuL2kxOG4nO1xuaW1wb3J0IHsgQUlWaWV3VGFibGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0UG9zaXRpb25zKFxuICAgIHZpZXdzOiBBSVRhYmxlVmlld1tdLFxuICAgIGFjdGl2ZUlkOiBzdHJpbmcsXG4gICAgZGF0YTogQUlUYWJsZVZpZXdSZWNvcmRzIHwgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgaW5kZXg6IG51bWJlclxuKSB7XG4gICAgY29uc3QgcG9zaXRpb25zOiBQb3NpdGlvbnMgPSB7fTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKGRhdGEsIGFjdGl2ZUlkLCBpbmRleCk7XG4gICAgdmlld3MuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5faWQgPT09IGFjdGl2ZUlkKSB7XG4gICAgICAgICAgICBwb3NpdGlvbnNbZWxlbWVudC5faWRdID0gcG9zaXRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvbnNbZWxlbWVudC5faWRdID0gZ2V0TWF4UG9zaXRpb24oZGF0YSwgZWxlbWVudC5faWQpICsgMTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NpdGlvbihkYXRhOiBBSVRhYmxlVmlld1JlY29yZHMgfCBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlld0lkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICBsZXQgcG9zaXRpb24gPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgaWYgKGluZGV4ICE9PSAwICYmIGluZGV4ICE9PSBkYXRhLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZpZXdQb3NpdGlvbiA9IGRhdGFbaW5kZXggLSAxXS5wb3NpdGlvbnNbYWN0aXZlVmlld0lkXTtcbiAgICAgICAgY29uc3QgbmV4dFZpZXdQb3NpdGlvbiA9IGRhdGFbaW5kZXhdLnBvc2l0aW9uc1thY3RpdmVWaWV3SWQhXTtcbiAgICAgICAgcG9zaXRpb24gPSAocHJldmlvdXNWaWV3UG9zaXRpb24gKyBuZXh0Vmlld1Bvc2l0aW9uKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4UG9zaXRpb24gPSBnZXRNYXhQb3NpdGlvbihkYXRhLCBhY3RpdmVWaWV3SWQpO1xuICAgICAgICBwb3NpdGlvbiA9IG1heFBvc2l0aW9uICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF4UG9zaXRpb24oZGF0YTogQUlUYWJsZVZpZXdSZWNvcmRzIHwgQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXdJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGRhdGEucmVkdWNlKChtYXhQb3NpdGlvbiwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5wb3NpdGlvbnNbYWN0aXZlVmlld0lkXSA+IG1heFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBtYXhQb3NpdGlvbiA9IGl0ZW0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFBvc2l0aW9uO1xuICAgIH0sIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVmlldyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgdHlwZTogJ2FkZCcgfCAnY29weScsIHZpZXdJZD86IHN0cmluZykge1xuICAgIGxldCBpbmRleCA9IGFpVGFibGUudmlld3MoKS5sZW5ndGg7XG4gICAgY29uc3QgbmV3SWQgPSBpZENyZWF0b3IoKTtcbiAgICBjb25zdCBzaG9ydElkID0gc2hvcnRJZENyZWF0b3IoKTtcblxuICAgIGNvbnN0IGFsbFZpZXdOYW1lcyA9IGFpVGFibGUudmlld3MoKS5tYXAoKGl0ZW0pID0+IGl0ZW0ubmFtZSk7XG4gICAgY29uc3QgY291bnQgPSBhaVRhYmxlLnZpZXdzKCkubGVuZ3RoIHx8IDA7XG4gICAgY29uc3QgbmV3Vmlld05hbWUgPSBnZW5lcmF0ZU5ld05hbWUoYWxsVmlld05hbWVzLCBjb3VudCwgZ2V0U3RhdGVJMThuVGV4dEJ5S2V5KGFpVGFibGUsIEFJVGFibGVTdGF0ZUkxOG5LZXkudGFibGVWaWV3KSk7XG4gICAgbGV0IG5ld1ZpZXc6IEFJVGFibGVWaWV3ID0ge1xuICAgICAgICBfaWQ6IG5ld0lkLFxuICAgICAgICBzaG9ydF9pZDogc2hvcnRJZCxcbiAgICAgICAgbmFtZTogbmV3Vmlld05hbWVcbiAgICB9O1xuXG4gICAgbGV0IG9yaWdpblZpZXdJZCA9IGFpVGFibGUudmlld3MoKVthaVRhYmxlLnZpZXdzKCkubGVuZ3RoIC0gMV0uX2lkO1xuICAgIGlmICh0eXBlID09PSAnY29weScpIHtcbiAgICAgICAgb3JpZ2luVmlld0lkID0gdmlld0lkID8/IGFpVGFibGUuYWN0aXZlVmlld0lkKCk7XG4gICAgICAgIGNvbnN0IGNvcHlWaWV3ID0gYWlUYWJsZS52aWV3cygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBvcmlnaW5WaWV3SWQpITtcblxuICAgICAgICBjb25zdCBjb3B5TmFtZSA9IGNvcHlWaWV3Lm5hbWU7XG4gICAgICAgIGNvbnN0IGNvcHlWaWV3TmFtZSA9IGdlbmVyYXRlQ29weU5hbWUoYWlUYWJsZSwgYWxsVmlld05hbWVzLCBjb3B5TmFtZSk7XG4gICAgICAgIG5ld1ZpZXcgPSB7XG4gICAgICAgICAgICAuLi5jb3B5VmlldyxcbiAgICAgICAgICAgIF9pZDogbmV3SWQsXG4gICAgICAgICAgICBuYW1lOiBjb3B5Vmlld05hbWVcbiAgICAgICAgfTtcbiAgICAgICAgaW5kZXggPSBhaVRhYmxlLnZpZXdzKCkuaW5kZXhPZihjb3B5VmlldykgKyAxO1xuICAgIH1cbiAgICBWaWV3QWN0aW9ucy5hZGRWaWV3KGFpVGFibGUsIG5ld1ZpZXcsIFtpbmRleF0pO1xuICAgIChhaVRhYmxlLnJlY29yZHMoKSBhcyBBSVRhYmxlVmlld1JlY29yZHMpLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgICBQb3NpdGlvbnNBY3Rpb25zLnNldFJlY29yZFBvc2l0aW9ucyhhaVRhYmxlLCB7IFtuZXdJZF06IHJlY29yZC5wb3NpdGlvbnNbb3JpZ2luVmlld0lkXSB9LCBbcmVjb3JkLl9pZF0pO1xuICAgIH0pO1xuICAgIChhaVRhYmxlLmZpZWxkcygpIGFzIEFJVGFibGVWaWV3RmllbGRzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBBY3Rpb25zLnNldEZpZWxkPEFJVGFibGVWaWV3RmllbGQ+KFxuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmllbGQucG9zaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBbbmV3SWRdOiBmaWVsZC5wb3NpdGlvbnNbb3JpZ2luVmlld0lkXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbZmllbGQuX2lkXVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdWaWV3O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmlldyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3SWQ6IHN0cmluZykge1xuICAgIHJlY29yZHMuZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICAgIFBvc2l0aW9uc0FjdGlvbnMuc2V0UmVjb3JkUG9zaXRpb25zKGFpVGFibGUsIHsgW2FjdGl2ZVZpZXdJZF06IHVuZGVmaW5lZCB9LCBbcmVjb3JkLl9pZF0pO1xuICAgIH0pO1xuICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSB7IC4uLmZpZWxkLnBvc2l0aW9ucyB9O1xuICAgICAgICBkZWxldGUgcG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgIEFjdGlvbnMuc2V0RmllbGQ8QUlUYWJsZVZpZXdGaWVsZD4oXG4gICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtmaWVsZC5faWRdXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgVmlld0FjdGlvbnMucmVtb3ZlVmlldyhhaVRhYmxlLCBbYWN0aXZlVmlld0lkXSk7XG59XG4iXX0=
|
93
|
+
export function sortViews(data) {
|
94
|
+
return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));
|
95
|
+
}
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHcEUsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxLQUFvQixFQUNwQixRQUFnQixFQUNoQixJQUE0QyxFQUM1QyxLQUFhO0lBRWIsTUFBTSxTQUFTLEdBQWMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0wsQ0FBQyxDQUFD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T0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDckIsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsUUFBUSxDQUNaLE9BQU8sRUFDUDtZQUNJLFNBQVM7U0FDWixFQUNELENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNkLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUNILFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFtQjtJQUN6QyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaWRDcmVhdG9yLCBzaG9ydElkQ3JlYXRvciB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IEFJVGFibGVWaWV3LCBBSVRhYmxlVmlld0ZpZWxkLCBBSVRhYmxlVmlld0ZpZWxkcywgQUlUYWJsZVZpZXdSZWNvcmRzLCBQb3NpdGlvbnMgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbic7XG5pbXBvcnQgeyBWaWV3QWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbi92aWV3JztcbmltcG9ydCB7IFBvc2l0aW9uc0FjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb24vcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2VuZXJhdGVDb3B5TmFtZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGdlbmVyYXRlTmV3TmFtZSB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IEFJVGFibGVTdGF0ZUkxOG5LZXksIGdldFN0YXRlSTE4blRleHRCeUtleSB9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgdmlld3M6IEFJVGFibGVWaWV3W10sXG4gICAgYWN0aXZlSWQ6IHN0cmluZyxcbiAgICBkYXRhOiBBSVRhYmxlVmlld1JlY29yZHMgfCBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICBpbmRleDogbnVtYmVyXG4pIHtcbiAgICBjb25zdCBwb3NpdGlvbnM6IFBvc2l0aW9ucyA9IHt9O1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oZGF0YSwgYWN0aXZlSWQsIGluZGV4KTtcbiAgICB2aWV3cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50Ll9pZCA9PT0gYWN0aXZlSWQpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uc1tlbGVtZW50Ll9pZF0gPSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uc1tlbGVtZW50Ll9pZF0gPSBnZXRNYXhQb3NpdGlvbihkYXRhLCBlbGVtZW50Ll9pZCkgKyAxO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc2l0aW9uKGRhdGE6IEFJVGFibGVWaWV3UmVjb3JkcyB8IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3SWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICAgIGxldCBwb3NpdGlvbiA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICBpZiAoaW5kZXggIT09IDAgJiYgaW5kZXggIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmlld1Bvc2l0aW9uID0gZGF0YVtpbmRleCAtIDFdLnBvc2l0aW9uc1thY3RpdmVWaWV3SWRdO1xuICAgICAgICBjb25zdCBuZXh0Vmlld1Bvc2l0aW9uID0gZGF0YVtpbmRleF0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZCFdO1xuICAgICAgICBwb3NpdGlvbiA9IChwcmV2aW91c1ZpZXdQb3NpdGlvbiArIG5leHRWaWV3UG9zaXRpb24pIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhQb3NpdGlvbiA9IGdldE1heFBvc2l0aW9uKGRhdGEsIGFjdGl2ZVZpZXdJZCk7XG4gICAgICAgIHBvc2l0aW9uID0gbWF4UG9zaXRpb24gKyAxO1xuICAgIH1cbiAgICByZXR1cm4gcG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXhQb3NpdGlvbihkYXRhOiBBSVRhYmxlVmlld1JlY29yZHMgfCBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlld0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZGF0YS5yZWR1Y2UoKG1heFBvc2l0aW9uLCBpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLnBvc2l0aW9uc1thY3RpdmVWaWV3SWRdID4gbWF4UG9zaXRpb24pIHtcbiAgICAgICAgICAgIG1heFBvc2l0aW9uID0gaXRlbS5wb3NpdGlvbnNbYWN0aXZlVmlld0lkXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4UG9zaXRpb247XG4gICAgfSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRWaWV3KGFpVGFibGU6IEFJVmlld1RhYmxlLCB0eXBlOiAnYWRkJyB8ICdkdXBsaWNhdGUnLCB2aWV3SWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdJZCA9IGlkQ3JlYXRvcigpO1xuICAgIGNvbnN0IHNob3J0SWQgPSBzaG9ydElkQ3JlYXRvcigpO1xuICAgIGNvbnN0IHZpZXdzID0gYWlUYWJsZS52aWV3cygpO1xuICAgIGNvbnN0IGFsbFZpZXdOYW1lcyA9IHZpZXdzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcbiAgICBjb25zdCBjb3VudCA9IHZpZXdzLmxlbmd0aCB8fCAwO1xuICAgIGNvbnN0IG5ld1ZpZXdOYW1lID0gZ2VuZXJhdGVOZXdOYW1lKGFsbFZpZXdOYW1lcywgY291bnQsIGdldFN0YXRlSTE4blRleHRCeUtleShhaVRhYmxlLCBBSVRhYmxlU3RhdGVJMThuS2V5LnRhYmxlVmlldykpO1xuICAgIGxldCBuZXdWaWV3OiBBSVRhYmxlVmlldyA9IHtcbiAgICAgICAgX2lkOiBuZXdJZCxcbiAgICAgICAgc2hvcnRfaWQ6IHNob3J0SWQsXG4gICAgICAgIG5hbWU6IG5ld1ZpZXdOYW1lXG4gICAgfTtcblxuICAgIGxldCBvcmlnaW5WaWV3SWQgPSB2aWV3c1t2aWV3cy5sZW5ndGggLSAxXS5faWQ7XG4gICAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XG4gICAgICAgIG9yaWdpblZpZXdJZCA9IHZpZXdJZCA/PyBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpO1xuICAgICAgICBjb25zdCBjb3B5VmlldyA9IHZpZXdzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBvcmlnaW5WaWV3SWQpITtcblxuICAgICAgICBjb25zdCBjb3B5TmFtZSA9IGNvcHlWaWV3Lm5hbWU7XG4gICAgICAgIGNvbnN0IGNvcHlWaWV3TmFtZSA9IGdlbmVyYXRlQ29weU5hbWUoYWlUYWJsZSwgYWxsVmlld05hbWVzLCBjb3B5TmFtZSk7XG4gICAgICAgIG5ld1ZpZXcgPSB7XG4gICAgICAgICAgICAuLi5jb3B5VmlldyxcbiAgICAgICAgICAgIF9pZDogbmV3SWQsXG4gICAgICAgICAgICBuYW1lOiBjb3B5Vmlld05hbWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgVmlld0FjdGlvbnMuYWRkVmlldyhhaVRhYmxlLCBvcmlnaW5WaWV3SWQsIG5ld1ZpZXcsIHR5cGUgPT09ICdkdXBsaWNhdGUnKTtcbiAgICAoYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzKS5mb3JFYWNoKChyZWNvcmQpID0+IHtcbiAgICAgICAgUG9zaXRpb25zQWN0aW9ucy5zZXRSZWNvcmRQb3NpdGlvbnMoYWlUYWJsZSwgeyBbbmV3SWRdOiByZWNvcmQucG9zaXRpb25zW29yaWdpblZpZXdJZF0gfSwgW3JlY29yZC5faWRdKTtcbiAgICB9KTtcbiAgICAoYWlUYWJsZS5maWVsZHMoKSBhcyBBSVRhYmxlVmlld0ZpZWxkcykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgQWN0aW9ucy5zZXRGaWVsZDxBSVRhYmxlVmlld0ZpZWxkPihcbiAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpZWxkLnBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgW25ld0lkXTogZmllbGQucG9zaXRpb25zW29yaWdpblZpZXdJZF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW2ZpZWxkLl9pZF1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Vmlldztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVZpZXcoYWlUYWJsZTogQUlWaWV3VGFibGUsIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcywgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlld0lkOiBzdHJpbmcpIHtcbiAgICByZWNvcmRzLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgICBQb3NpdGlvbnNBY3Rpb25zLnNldFJlY29yZFBvc2l0aW9ucyhhaVRhYmxlLCB7IFthY3RpdmVWaWV3SWRdOiB1bmRlZmluZWQgfSwgW3JlY29yZC5faWRdKTtcbiAgICB9KTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0geyAuLi5maWVsZC5wb3NpdGlvbnMgfTtcbiAgICAgICAgZGVsZXRlIHBvc2l0aW9uc1thY3RpdmVWaWV3SWRdO1xuICAgICAgICBBY3Rpb25zLnNldEZpZWxkPEFJVGFibGVWaWV3RmllbGQ+KFxuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbZmllbGQuX2lkXVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIFZpZXdBY3Rpb25zLnJlbW92ZVZpZXcoYWlUYWJsZSwgW2FjdGl2ZVZpZXdJZF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydFZpZXdzKGRhdGE6IEFJVGFibGVWaWV3W10pIHtcbiAgICByZXR1cm4gWy4uLmRhdGFdLnNvcnQoKGEsIGIpID0+IChhLnBvc2l0aW9uID8/IGRhdGEuaW5kZXhPZihhKSkgLSAoYi5wb3NpdGlvbiA/PyBkYXRhLmluZGV4T2YoYikpKTtcbn1cbiJdfQ==
|
@@ -839,10 +839,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
839
839
|
break;
|
840
840
|
}
|
841
841
|
case ActionName.AddView: {
|
842
|
-
|
843
|
-
if (viewIndex > -1) {
|
844
|
-
views.splice(viewIndex, 0, action.view);
|
845
|
-
}
|
842
|
+
views.push(action.view);
|
846
843
|
break;
|
847
844
|
}
|
848
845
|
case ActionName.RemoveView: {
|
@@ -994,11 +991,20 @@ function setView(aiTable, value, path) {
|
|
994
991
|
aiTable.apply(operation);
|
995
992
|
}
|
996
993
|
}
|
997
|
-
function addView$1(aiTable,
|
994
|
+
function addView$1(aiTable, originId, newView, isDuplicate) {
|
995
|
+
const views = sortViews(aiTable.views());
|
996
|
+
const currentIndex = views.findIndex((item) => item._id === originId);
|
997
|
+
if (isDuplicate) {
|
998
|
+
const nextIndex = currentIndex + 1;
|
999
|
+
newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;
|
1000
|
+
}
|
1001
|
+
else {
|
1002
|
+
newView.position = currentIndex + 1;
|
1003
|
+
}
|
998
1004
|
const operation = {
|
999
1005
|
type: ActionName.AddView,
|
1000
|
-
view,
|
1001
|
-
|
1006
|
+
view: newView,
|
1007
|
+
isDuplicate
|
1002
1008
|
};
|
1003
1009
|
aiTable.apply(operation);
|
1004
1010
|
}
|
@@ -1065,21 +1071,21 @@ function getMaxPosition(data, activeViewId) {
|
|
1065
1071
|
}, 0);
|
1066
1072
|
}
|
1067
1073
|
function addView(aiTable, type, viewId) {
|
1068
|
-
let index = aiTable.views().length;
|
1069
1074
|
const newId = idCreator();
|
1070
1075
|
const shortId = shortIdCreator();
|
1071
|
-
const
|
1072
|
-
const
|
1076
|
+
const views = aiTable.views();
|
1077
|
+
const allViewNames = views.map((item) => item.name);
|
1078
|
+
const count = views.length || 0;
|
1073
1079
|
const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));
|
1074
1080
|
let newView = {
|
1075
1081
|
_id: newId,
|
1076
1082
|
short_id: shortId,
|
1077
1083
|
name: newViewName
|
1078
1084
|
};
|
1079
|
-
let originViewId =
|
1080
|
-
if (type === '
|
1085
|
+
let originViewId = views[views.length - 1]._id;
|
1086
|
+
if (type === 'duplicate') {
|
1081
1087
|
originViewId = viewId ?? aiTable.activeViewId();
|
1082
|
-
const copyView =
|
1088
|
+
const copyView = views.find((item) => item._id === originViewId);
|
1083
1089
|
const copyName = copyView.name;
|
1084
1090
|
const copyViewName = generateCopyName(aiTable, allViewNames, copyName);
|
1085
1091
|
newView = {
|
@@ -1087,9 +1093,8 @@ function addView(aiTable, type, viewId) {
|
|
1087
1093
|
_id: newId,
|
1088
1094
|
name: copyViewName
|
1089
1095
|
};
|
1090
|
-
index = aiTable.views().indexOf(copyView) + 1;
|
1091
1096
|
}
|
1092
|
-
ViewActions.addView(aiTable, newView,
|
1097
|
+
ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');
|
1093
1098
|
aiTable.records().forEach((record) => {
|
1094
1099
|
PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);
|
1095
1100
|
});
|
@@ -1116,6 +1121,9 @@ function removeView(aiTable, records, fields, activeViewId) {
|
|
1116
1121
|
});
|
1117
1122
|
ViewActions.removeView(aiTable, [activeViewId]);
|
1118
1123
|
}
|
1124
|
+
function sortViews(data) {
|
1125
|
+
return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));
|
1126
|
+
}
|
1119
1127
|
|
1120
1128
|
function addFields(aiTable, options, updatedInfo) {
|
1121
1129
|
const { defaultValue, isDuplicate, isCopy } = options;
|
@@ -1367,5 +1375,5 @@ const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveV
|
|
1367
1375
|
* Generated bundle index. Do not edit.
|
1368
1376
|
*/
|
1369
1377
|
|
1370
|
-
export { AITableStateI18nKey, Actions, CopyCellsItem, CopyFieldPropertyItem, DividerMenuItem, EditFieldPropertyItem, FLUSHING, PasteCellsItem, RemoveRecordsItem, UndoManagerService, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyEvents, applyYjsEvents, buildFieldsByView, buildRecordsByView, buildRemoveFieldItem, createDefaultPositions, createSharedType, doFilter, generateCopyName, getDataBySharedType, getDefaultI18nTextByKey, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFieldsSizeMap, getFilteredRecords, getMaxPosition, getPosition, getRecordsBySharedJson, getSharedTypeByData, getSortFields, getSortRecords, getStateI18nTextByKey, isPathEqual, moveFields, moveRecords, removeView, sortByViewPosition, sortRecordsBySortInfo, toSharedType, translateYjsEvent, updateFieldValue, updateRecordsUpdatedInfo, withState };
|
1378
|
+
export { AITableStateI18nKey, Actions, CopyCellsItem, CopyFieldPropertyItem, DividerMenuItem, EditFieldPropertyItem, FLUSHING, PasteCellsItem, RemoveRecordsItem, UndoManagerService, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyEvents, applyYjsEvents, buildFieldsByView, buildRecordsByView, buildRemoveFieldItem, createDefaultPositions, createSharedType, doFilter, generateCopyName, getDataBySharedType, getDefaultI18nTextByKey, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFieldsSizeMap, getFilteredRecords, getMaxPosition, getPosition, getRecordsBySharedJson, getSharedTypeByData, getSortFields, getSortRecords, getStateI18nTextByKey, isPathEqual, moveFields, moveRecords, removeView, sortByViewPosition, sortRecordsBySortInfo, sortViews, toSharedType, translateYjsEvent, updateFieldValue, updateRecordsUpdatedInfo, withState };
|
1371
1379
|
//# sourceMappingURL=ai-table-state.mjs.map
|
@@ -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 } from '@ai-table/utils';\nimport { 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 { UpdateFieldValueAction } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { getSharedMapValueIndex, getSharedRecordIndex, SharedType, SyncArrayElement, SyncMapElement } 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 } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\nimport { getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\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} from '@ai-table/utils';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement\n} from '@ai-table/utils';\nimport { AITableViewFields, AITableViewRecord, SharedType, SyncArrayElement, SyncMapElement } 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 { ActionName, RemoveFieldAction, RemoveRecordAction, RemoveViewAction } from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\nimport { getSharedMapValueIndex, getSharedRecordIndex, SharedType, SyncArrayElement, SyncMapElement } from '@ai-table/utils';\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 { AI_TABLE_CONTENT_FIELD_NAME, AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType, toMapSyncElement } from '@ai-table/utils';\nimport {\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// import { FieldModelMap } from '../../../../grid/src/utils/field/field';\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 { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction } from '@ai-table/utils';\nimport { AITableViewField, AITableField, IdPath, NumberPath } 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, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isCopy\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 { ActionName, AITableAction } from '@ai-table/utils';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions } from '../utils';\nimport {\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.isCopy && 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 const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\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 { UpdateFieldValueAction, ActionName, AddRecordAction, RemoveRecordAction, UpdateSystemFieldValue } from '@ai-table/utils';\nimport { AIRecordFieldIdPath, AITableRecord, AITableRecordUpdatedInfo, IdPath } 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 } from '@ai-table/utils';\nimport { ActionName, AddViewAction, RemoveViewAction, SetViewAction } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\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, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view,\n path\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' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.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 = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.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 index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\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","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, isCopy } = 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 if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === options.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, options.originId, isCopy || 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 { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\nimport {\n AddRecordOptions,\n AITableRecord,\n AITableViewFields,\n AITableViewRecords,\n Direction,\n FieldValue,\n TrackableEntity\n} from '@ai-table/utils';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.gridData().records as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\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 { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } 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/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 } from '@ai-table/utils';\nimport { 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 { UpdateFieldValueAction } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { getSharedMapValueIndex, getSharedRecordIndex, SharedType, SyncArrayElement, SyncMapElement } 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 } from '@ai-table/utils';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\nimport { getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\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} from '@ai-table/utils';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement\n} from '@ai-table/utils';\nimport { AITableViewFields, AITableViewRecord, SharedType, SyncArrayElement, SyncMapElement } 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 { ActionName, RemoveFieldAction, RemoveRecordAction, RemoveViewAction } from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\nimport { getSharedMapValueIndex, getSharedRecordIndex, SharedType, SyncArrayElement, SyncMapElement } from '@ai-table/utils';\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 { AI_TABLE_CONTENT_FIELD_NAME, AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType, toMapSyncElement } from '@ai-table/utils';\nimport {\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// import { FieldModelMap } from '../../../../grid/src/utils/field/field';\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 { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction } from '@ai-table/utils';\nimport { AITableViewField, AITableField, IdPath, NumberPath } 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, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isCopy\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 { ActionName, AITableAction } from '@ai-table/utils';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions } from '../utils';\nimport {\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.isCopy && 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 { UpdateFieldValueAction, ActionName, AddRecordAction, RemoveRecordAction, UpdateSystemFieldValue } from '@ai-table/utils';\nimport { AIRecordFieldIdPath, AITableRecord, AITableRecordUpdatedInfo, IdPath } 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 } from '@ai-table/utils';\nimport { 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, isCopy } = 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 if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === options.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, options.originId, isCopy || 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 { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\nimport {\n AddRecordOptions,\n AITableRecord,\n AITableViewFields,\n AITableViewRecords,\n Direction,\n FieldValue,\n TrackableEntity\n} from '@ai-table/utils';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.gridData().records as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\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 { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } 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
package/utils/view.d.ts
CHANGED
@@ -3,6 +3,7 @@ import { AIViewTable } from '../types';
|
|
3
3
|
export declare function createDefaultPositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, index: number): Positions;
|
4
4
|
export declare function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number): number;
|
5
5
|
export declare function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string): number;
|
6
|
-
export declare function addView(aiTable: AIViewTable, type: 'add' | '
|
6
|
+
export declare function addView(aiTable: AIViewTable, type: 'add' | 'duplicate', viewId?: string): AITableView;
|
7
7
|
export declare function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string): void;
|
8
|
+
export declare function sortViews(data: AITableView[]): AITableView[];
|
8
9
|
//# sourceMappingURL=view.d.ts.map
|
package/utils/view.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOlH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,WAAW,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAC5C,KAAK,EAAE,MAAM,aAYhB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAW5G;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAOhG;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,GAAG,
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOlH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,WAAW,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAC5C,KAAK,EAAE,MAAM,aAYhB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAW5G;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAOhG;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,eA2CvF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,QAgB5H;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,iBAE5C"}
|