@ai-table/state 0.0.29 → 0.0.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
- import { AIFieldValueIdPath, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';
1
+ import { AIRecordFieldIdPath, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';
2
2
  import { AIViewTable } from '../types';
3
- export declare function updateFieldValue(aiTable: AIViewTable, value: any, path: AIFieldValueIdPath): void;
3
+ export declare function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath): void;
4
4
  export declare function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo): void;
5
5
  export declare function addRecord(aiTable: AIViewTable, record: AITableRecord, path: NumberPath): void;
6
6
  export declare function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath): void;
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkB,aAAa,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjI,OAAO,EAMH,WAAW,EAEd,MAAM,UAAU,CAAC;AAElB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,QAS1F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,QAO/G;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,QAOtF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,QAOrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAM9D;AAED,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAkB,aAAa,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClI,OAAO,EAMH,WAAW,EAEd,MAAM,UAAU,CAAC;AAElB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,QAS3F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,QAO/G;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,QAOtF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,QAOrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAM9D;AAED,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
@@ -48,4 +48,4 @@ export const RecordActions = {
48
48
  removeRecord,
49
49
  updateSystemFieldValue
50
50
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL2FjdGlvbi9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixjQUFjLEVBQStELE1BQU0sZ0JBQWdCLENBQUM7QUFDakksT0FBTyxFQUVILFVBQVUsRUFNYixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxLQUFVLEVBQUUsSUFBd0I7SUFDdkYsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsTUFBTSxTQUFTLEdBQTJCO1FBQ3RDLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1FBQ2pDLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLElBQUk7S0FDUCxDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQW9CLEVBQUUsSUFBWSxFQUFFLFdBQXFDO0lBQzVHLE1BQU0sU0FBUyxHQUEyQjtRQUN0QyxJQUFJLEVBQUUsVUFBVSxDQUFDLHNCQUFzQjtRQUN2QyxXQUFXO1FBQ1gsSUFBSTtLQUNQLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CLEVBQUUsTUFBcUIsRUFBRSxJQUFnQjtJQUNuRixNQUFNLFNBQVMsR0FBb0I7UUFDL0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQzFCLE1BQU07UUFDTixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBb0IsRUFBRSxJQUFnQixFQUFFLE9BQW1CO0lBQ2xGLE1BQU0sU0FBUyxHQUFxQjtRQUNoQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVU7UUFDM0IsSUFBSTtRQUNKLE9BQU87S0FDVixDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFvQixFQUFFLElBQVk7SUFDM0QsTUFBTSxTQUFTLEdBQXVCO1FBQ2xDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUM3QixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixZQUFZO0lBQ1osc0JBQXNCO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSUZpZWxkVmFsdWVJZFBhdGgsIEFJVGFibGVRdWVyaWVzLCBBSVRhYmxlUmVjb3JkLCBBSVRhYmxlUmVjb3JkVXBkYXRlZEluZm8sIElkUGF0aCwgTnVtYmVyUGF0aCB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7XG4gICAgVXBkYXRlRmllbGRWYWx1ZUFjdGlvbixcbiAgICBBY3Rpb25OYW1lLFxuICAgIEFkZFJlY29yZEFjdGlvbixcbiAgICBNb3ZlUmVjb3JkQWN0aW9uLFxuICAgIFJlbW92ZVJlY29yZEFjdGlvbixcbiAgICBBSVZpZXdUYWJsZSxcbiAgICBVcGRhdGVTeXN0ZW1GaWVsZFZhbHVlXG59IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUZpZWxkVmFsdWUoYWlUYWJsZTogQUlWaWV3VGFibGUsIHZhbHVlOiBhbnksIHBhdGg6IEFJRmllbGRWYWx1ZUlkUGF0aCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBwYXRoKTtcbiAgICBjb25zdCBvcGVyYXRpb246IFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlRmllbGRWYWx1ZSxcbiAgICAgICAgZmllbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICAgIG5ld0ZpZWxkVmFsdWU6IHZhbHVlLFxuICAgICAgICBwYXRoXG4gICAgfTtcbiAgICBhaVRhYmxlLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTeXN0ZW1GaWVsZFZhbHVlKGFpVGFibGU6IEFJVmlld1RhYmxlLCBwYXRoOiBJZFBhdGgsIHVwZGF0ZWRJbmZvOiBBSVRhYmxlUmVjb3JkVXBkYXRlZEluZm8pIHtcbiAgICBjb25zdCBvcGVyYXRpb246IFVwZGF0ZVN5c3RlbUZpZWxkVmFsdWUgPSB7XG4gICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSxcbiAgICAgICAgdXBkYXRlZEluZm8sXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlY29yZChhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkOiBBSVRhYmxlUmVjb3JkLCBwYXRoOiBOdW1iZXJQYXRoKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBBZGRSZWNvcmRBY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkUmVjb3JkLFxuICAgICAgICByZWNvcmQsXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVSZWNvcmQoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IE51bWJlclBhdGgsIG5ld1BhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IE1vdmVSZWNvcmRBY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuTW92ZVJlY29yZCxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbmV3UGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUmVjb3JkKGFpVGFibGU6IEFJVmlld1RhYmxlLCBwYXRoOiBJZFBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IFJlbW92ZVJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQsXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGNvbnN0IFJlY29yZEFjdGlvbnMgPSB7XG4gICAgYWRkUmVjb3JkLFxuICAgIHVwZGF0ZUZpZWxkVmFsdWUsXG4gICAgbW92ZVJlY29yZCxcbiAgICByZW1vdmVSZWNvcmQsXG4gICAgdXBkYXRlU3lzdGVtRmllbGRWYWx1ZVxufTtcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL2FjdGlvbi9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixjQUFjLEVBQStELE1BQU0sZ0JBQWdCLENBQUM7QUFDbEksT0FBTyxFQUVILFVBQVUsRUFNYixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxLQUFVLEVBQUUsSUFBeUI7SUFDeEYsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsTUFBTSxTQUFTLEdBQTJCO1FBQ3RDLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1FBQ2pDLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLElBQUk7S0FDUCxDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQW9CLEVBQUUsSUFBWSxFQUFFLFdBQXFDO0lBQzVHLE1BQU0sU0FBUyxHQUEyQjtRQUN0QyxJQUFJLEVBQUUsVUFBVSxDQUFDLHNCQUFzQjtRQUN2QyxXQUFXO1FBQ1gsSUFBSTtLQUNQLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CLEVBQUUsTUFBcUIsRUFBRSxJQUFnQjtJQUNuRixNQUFNLFNBQVMsR0FBb0I7UUFDL0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQzFCLE1BQU07UUFDTixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBb0IsRUFBRSxJQUFnQixFQUFFLE9BQW1CO0lBQ2xGLE1BQU0sU0FBUyxHQUFxQjtRQUNoQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVU7UUFDM0IsSUFBSTtRQUNKLE9BQU87S0FDVixDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFvQixFQUFFLElBQVk7SUFDM0QsTUFBTSxTQUFTLEdBQXVCO1FBQ2xDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUM3QixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixZQUFZO0lBQ1osc0JBQXNCO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVJlY29yZEZpZWxkSWRQYXRoLCBBSVRhYmxlUXVlcmllcywgQUlUYWJsZVJlY29yZCwgQUlUYWJsZVJlY29yZFVwZGF0ZWRJbmZvLCBJZFBhdGgsIE51bWJlclBhdGggfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQge1xuICAgIFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24sXG4gICAgQWN0aW9uTmFtZSxcbiAgICBBZGRSZWNvcmRBY3Rpb24sXG4gICAgTW92ZVJlY29yZEFjdGlvbixcbiAgICBSZW1vdmVSZWNvcmRBY3Rpb24sXG4gICAgQUlWaWV3VGFibGUsXG4gICAgVXBkYXRlU3lzdGVtRmllbGRWYWx1ZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWVsZFZhbHVlKGFpVGFibGU6IEFJVmlld1RhYmxlLCB2YWx1ZTogYW55LCBwYXRoOiBBSVJlY29yZEZpZWxkSWRQYXRoKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIHBhdGgpO1xuICAgIGNvbnN0IG9wZXJhdGlvbjogVXBkYXRlRmllbGRWYWx1ZUFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVGaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZFZhbHVlOiBvbGRWYWx1ZSxcbiAgICAgICAgbmV3RmllbGRWYWx1ZTogdmFsdWUsXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN5c3RlbUZpZWxkVmFsdWUoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IElkUGF0aCwgdXBkYXRlZEluZm86IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbykge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlLFxuICAgICAgICB1cGRhdGVkSW5mbyxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVjb3JkKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIHBhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IEFkZFJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRSZWNvcmQsXG4gICAgICAgIHJlY29yZCxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZVJlY29yZChhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcGF0aDogTnVtYmVyUGF0aCwgbmV3UGF0aDogTnVtYmVyUGF0aCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogTW92ZVJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5Nb3ZlUmVjb3JkLFxuICAgICAgICBwYXRoLFxuICAgICAgICBuZXdQYXRoXG4gICAgfTtcbiAgICBhaVRhYmxlLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVSZWNvcmQoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IElkUGF0aCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogUmVtb3ZlUmVjb3JkQWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZVJlY29yZCxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgY29uc3QgUmVjb3JkQWN0aW9ucyA9IHtcbiAgICBhZGRSZWNvcmQsXG4gICAgdXBkYXRlRmllbGRWYWx1ZSxcbiAgICBtb3ZlUmVjb3JkLFxuICAgIHJlbW92ZVJlY29yZCxcbiAgICB1cGRhdGVTeXN0ZW1GaWVsZFZhbHVlXG59O1xuIl19
@@ -5,11 +5,11 @@ export const RemoveRecordsItem = {
5
5
  name: '删除行',
6
6
  icon: 'trash',
7
7
  exec: (aiTable, targetName, position, aiTableGridSelectionService) => {
8
- let selectedRecordIds = AITable.getSelectedRecordIds(aiTable);
8
+ let selectedRecordIds = AITable.getActiveRecordIds(aiTable);
9
9
  selectedRecordIds.forEach((id) => {
10
10
  Actions.removeRecord(aiTable, [id]);
11
11
  });
12
12
  aiTableGridSelectionService.clearSelection();
13
13
  }
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvY29uc3RhbnRzL2NvbnRleHQtbWVudS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQXVELE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdwQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDckQsSUFBSSxFQUFFLGVBQWU7SUFDckIsSUFBSSxFQUFFLEtBQUs7SUFDWCxJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxDQUNGLE9BQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLFFBQWtDLEVBQ2xDLDJCQUF3RCxFQUMxRCxFQUFFO1FBQ0EsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILDJCQUEyQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUNvbnRleHRNZW51SXRlbSwgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbic7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IFJlbW92ZVJlY29yZHNJdGVtOiBBSVRhYmxlQ29udGV4dE1lbnVJdGVtID0ge1xuICAgIHR5cGU6ICdyZW1vdmVSZWNvcmRzJyxcbiAgICBuYW1lOiAn5Yig6Zmk6KGMJyxcbiAgICBpY29uOiAndHJhc2gnLFxuICAgIGV4ZWM6IChcbiAgICAgICAgYWlUYWJsZTogQUlUYWJsZSxcbiAgICAgICAgdGFyZ2V0TmFtZTogc3RyaW5nLFxuICAgICAgICBwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuICAgICAgICBhaVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2U6IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSZWNvcmRJZHMgPSBBSVRhYmxlLmdldFNlbGVjdGVkUmVjb3JkSWRzKGFpVGFibGUpO1xuXG4gICAgICAgIHNlbGVjdGVkUmVjb3JkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIEFjdGlvbnMucmVtb3ZlUmVjb3JkKGFpVGFibGUgYXMgQUlWaWV3VGFibGUsIFtpZF0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBhaVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG59O1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvY29uc3RhbnRzL2NvbnRleHQtbWVudS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQXVELE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdwQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDckQsSUFBSSxFQUFFLGVBQWU7SUFDckIsSUFBSSxFQUFFLEtBQUs7SUFDWCxJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxDQUNGLE9BQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLFFBQWtDLEVBQ2xDLDJCQUF3RCxFQUMxRCxFQUFFO1FBQ0EsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUQsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILDJCQUEyQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUNvbnRleHRNZW51SXRlbSwgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbic7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IFJlbW92ZVJlY29yZHNJdGVtOiBBSVRhYmxlQ29udGV4dE1lbnVJdGVtID0ge1xuICAgIHR5cGU6ICdyZW1vdmVSZWNvcmRzJyxcbiAgICBuYW1lOiAn5Yig6Zmk6KGMJyxcbiAgICBpY29uOiAndHJhc2gnLFxuICAgIGV4ZWM6IChcbiAgICAgICAgYWlUYWJsZTogQUlUYWJsZSxcbiAgICAgICAgdGFyZ2V0TmFtZTogc3RyaW5nLFxuICAgICAgICBwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuICAgICAgICBhaVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2U6IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSZWNvcmRJZHMgPSBBSVRhYmxlLmdldEFjdGl2ZVJlY29yZElkcyhhaVRhYmxlKTtcblxuICAgICAgICBzZWxlY3RlZFJlY29yZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBBY3Rpb25zLnJlbW92ZVJlY29yZChhaVRhYmxlIGFzIEFJVmlld1RhYmxlLCBbaWRdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxufTtcbiJdfQ==
@@ -186,4 +186,4 @@ export function getRemoveIds(event, type) {
186
186
  });
187
187
  return ids;
188
188
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXRhYmxlL2FycmF5LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN6QixPQUFPLEVBQ0gsVUFBVSxFQVViLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxxQ0FBcUMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1SSxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUM3Qiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFvQyxjQUFjLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEcsTUFBTSxDQUFDLE9BQU8sVUFBVSxtQkFBbUIsQ0FBQyxPQUFvQixFQUFFLFVBQXNCLEVBQUUsS0FBb0I7SUFDMUcsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sT0FBTyxHQUFvQixF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QUFJLEtBQUssVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FDSixDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgKiBhcyBZIGZyb20gJ3lqcyc7XG5pbXBvcnQge1xuICAgIEFjdGlvbk5hbWUsXG4gICAgQUlUYWJsZUFjdGlvbixcbiAgICBBSVRhYmxlVmlldyxcbiAgICBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgQUlWaWV3VGFibGUsXG4gICAgUG9zaXRpb25zLFxuICAgIFNoYXJlZFR5cGUsXG4gICAgU3luY0FycmF5RWxlbWVudCxcbiAgICBTeW5jTWFwRWxlbWVudFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRJZEJ5U3lzdGVtRmllbGRWYWx1ZXMsIGdldFNoYXJlVHlwZU51bWJlclBhdGgsIGdldFRyYWNrYWJsZUVudGl0eUJ5U3lzdGVtRmllbGRWYWx1ZXMsIHRyYW5zbGF0ZVBvc2l0aW9uVG9QYXRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBnZXRQb3NpdGlvbnNCeVN5c3RlbUZpZWxkVmFsdWVzLFxuICAgIGdldFNoYXJlZE1hcFZhbHVlSWQsXG4gICAgZ2V0U2hhcmVkUmVjb3JkLFxuICAgIGdldFNoYXJlZFJlY29yZElkLFxuICAgIGdldFNob3J0SWRCeVN5c3RlbUZpZWxkVmFsdWVzLFxuICAgIGdldFZhbHVlc0J5Q3VzdG9tRmllbGRWYWx1ZXMsXG4gICAgU3lzdGVtRmllbGRJbmRleFxufSBmcm9tICcuLi91dGlscy90cmFuc2xhdGUnO1xuaW1wb3J0IHsgQUlGaWVsZFZhbHVlSWRQYXRoLCBBSVRhYmxlRmllbGQsIEFJVGFibGVRdWVyaWVzLCBJZFBhdGgsIE51bWJlclBhdGggfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zbGF0ZUFycmF5RXZlbnQoYWlUYWJsZTogQUlWaWV3VGFibGUsIHNoYXJlZFR5cGU6IFNoYXJlZFR5cGUsIGV2ZW50OiBZLllFdmVudDxhbnk+KTogQUlUYWJsZUFjdGlvbltdIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgdGFyZ2V0UGF0aCA9IGdldFNoYXJlVHlwZU51bWJlclBhdGgoZXZlbnQucGF0aCk7XG4gICAgY29uc3QgaXNSZWNvcmRzVHJhbnNsYXRlID0gZXZlbnQucGF0aC5pbmNsdWRlcygncmVjb3JkcycpO1xuICAgIGNvbnN0IGlzRmllbGRzVHJhbnNsYXRlID0gZXZlbnQucGF0aC5pbmNsdWRlcygnZmllbGRzJyk7XG4gICAgY29uc3QgaXNWaWV3c1RyYW5zbGF0ZSA9IGV2ZW50LnBhdGguaW5jbHVkZXMoJ3ZpZXdzJyk7XG4gICAgY29uc3QgYWN0aW9uczogQUlUYWJsZUFjdGlvbltdID0gW107XG4gICAgY29uc3QgYWN0aXZlVmlld0lkID0gYWlUYWJsZS5hY3RpdmVWaWV3SWQoKTtcblxuICAgIGV2ZW50LmNoYW5nZXMuZGVsdGEuZm9yRWFjaCgoZGVsdGEpID0+IHtcbiAgICAgICAgaWYgKCdyZXRhaW4nIGluIGRlbHRhKSB7XG4gICAgICAgICAgICBvZmZzZXQgKz0gZGVsdGEucmV0YWluID8/IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ2RlbGV0ZScgaW4gZGVsdGEpIHtcbiAgICAgICAgICAgIGlmIChpc0FkZE9yUmVtb3ZlKHRhcmdldFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlld3NUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlVmlldyA9IGFpVGFibGUudmlld3MoKVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlVmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZVZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW3JlbW92ZVZpZXcuX2lkXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gaXNSZWNvcmRzVHJhbnNsYXRlID8gQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQgOiBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVJZHMgPSBnZXRSZW1vdmVJZHMoZXZlbnQsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlSWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSWRzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnaW5zZXJ0JyBpbiBkZWx0YSkge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGVsdGEuaW5zZXJ0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1JlY29yZHNUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWRkT3JSZW1vdmUodGFyZ2V0UGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhLmluc2VydD8ubWFwKChpdGVtOiBZLkFycmF5PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gaXRlbS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbc3lzdGVtRmllbGRWYWx1ZXMsIGN1c3RvbUZpZWxkVmFsdWVzXSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zID0gZ2V0UG9zaXRpb25zQnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBwb3NpdGlvbnNbYWN0aXZlVmlld0lkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdHJhbnNsYXRlUG9zaXRpb25Ub1BhdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUucmVjb3JkcygpIGFzIEFJVGFibGVWaWV3UmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVZpZXdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTnVtYmVyUGF0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkUmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pZDogZ2V0SWRCeVN5c3RlbUZpZWxkVmFsdWVzKHN5c3RlbUZpZWxkVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2lkOiBnZXRTaG9ydElkQnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5nZXRUcmFja2FibGVFbnRpdHlCeVN5c3RlbUZpZWxkVmFsdWVzKHN5c3RlbUZpZWxkVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogZ2V0UG9zaXRpb25zQnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGdldFZhbHVlc0J5Q3VzdG9tRmllbGRWYWx1ZXMoY3VzdG9tRmllbGRWYWx1ZXMsIGFpVGFibGUuZmllbGRzKCkgYXMgQUlUYWJsZVZpZXdGaWVsZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRSZWNvcmRzID0gc2hhcmVkVHlwZS5nZXQoJ3JlY29yZHMnKSEgYXMgWS5BcnJheTxTeW5jQXJyYXlFbGVtZW50PjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRGaWVsZHMgPSBzaGFyZWRUeXBlLmdldCgnZmllbGRzJykhIGFzIFkuQXJyYXk8U3luY01hcEVsZW1lbnQ+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzeXN0ZW1GaWVsZE9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGEuaW5zZXJ0Py5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRJbmRleCA9IHRhcmdldFBhdGhbMF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZEluZGV4ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSAoYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzKVtyZWNvcmRJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1N5c3RlbUZpZWxkT3BlcmF0aW9uKHRhcmdldFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQb3NpdGlvbnNPcGVyYXRpb24oZmllbGRJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQb3NpdGlvbnM6IFBvc2l0aW9ucyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UG9zaXRpb25zW2tleV0gPSBpdGVtW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuU2V0UmVjb3JkUG9zaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbcmVjb3JkLl9pZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogbmV3UG9zaXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5q2k5aSE55qE5b6q546v5Lya5YyF5ZCrIHVwZGF0ZWRfYXQg5ZKMIHVwZGF0ZWRfYnkg5ZCE5LiA5qyh77yM6L+Z6YeM5Y+q5aSE55CGIHVwZGF0ZWRfYnkg5ZCM5pe25YyF5ZCr5Lik5Liq5a2X5q6155qE5L+u5pS5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlZEJ5T3BlcmF0aW9uKGZpZWxkSW5kZXggKyBzeXN0ZW1GaWVsZE9mZnNldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzeXN0ZW1GaWVsZFZhbHVlcyA9IGdldFNoYXJlZFJlY29yZChzaGFyZWRSZWNvcmRzLCByZWNvcmRJbmRleCkuZ2V0KDApLnRvSlNPTigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdXBkYXRlZF9hdCwgdXBkYXRlZF9ieSB9ID0gZ2V0VHJhY2thYmxlRW50aXR5QnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbcmVjb3JkLl9pZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRJbmZvOiB7IHVwZGF0ZWRfYXQsIHVwZGF0ZWRfYnkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtRmllbGRPZmZzZXQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZElkID0gZ2V0U2hhcmVkUmVjb3JkSWQoc2hhcmVkUmVjb3JkcywgcmVjb3JkSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRJZCA9IGdldFNoYXJlZE1hcFZhbHVlSWQoc2hhcmVkRmllbGRzLCBmaWVsZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBbcmVjb3JkSWQsIGZpZWxkSWRdIGFzIEFJRmllbGRWYWx1ZUlkUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG8gZXhjbHVkZSBpbnNlcnQgdHJpZ2dlcmVkIGJ5IGZpZWxkIGluc2VydHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSAhPT0gaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlRmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmllbGRWYWx1ZTogaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNGaWVsZHNUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsdGEuaW5zZXJ0Py5tYXAoKGl0ZW06IFkuTWFwPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBpdGVtLnRvSlNPTigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRyYW5zbGF0ZVBvc2l0aW9uVG9QYXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUuZmllbGRzKCkgYXMgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsncG9zaXRpb25zJ11bYWN0aXZlVmlld0lkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVWaWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTnVtYmVyUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBkYXRhIGFzIEFJVGFibGVGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNWaWV3c1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkZWx0YS5pbnNlcnQ/Lm1hcCgoaXRlbTogWS5NYXA8YW55PiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBpdGVtLnRvSlNPTigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLkFkZFZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW29mZnNldCArIGluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3OiBkYXRhIGFzIEFJVGFibGVWaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FkZE9yUmVtb3ZlKHRhcmdldFBhdGg6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRhcmdldFBhdGgubGVuZ3RoID09PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeXN0ZW1GaWVsZE9wZXJhdGlvbih0YXJnZXRQYXRoOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0YXJnZXRQYXRoLmxlbmd0aCA9PT0gMiAmJiB0YXJnZXRQYXRoWzFdID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1c3RvbUZpZWxkT3BlcmF0aW9uKHRhcmdldFBhdGg6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRhcmdldFBhdGgubGVuZ3RoID09PSAyICYmIHRhcmdldFBhdGhbMV0gPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXRpb25zT3BlcmF0aW9uKGZpZWxkSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZEluZGV4ID09PSBTeXN0ZW1GaWVsZEluZGV4LlBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRlZEJ5T3BlcmF0aW9uKGZpZWxkSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZEluZGV4ID09PSBTeXN0ZW1GaWVsZEluZGV4LlVwZGF0ZWRCeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbW92ZUlkcyhldmVudDogWS5ZRXZlbnQ8YW55PiwgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVGaWVsZCB8IEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkKSB7XG4gICAgY29uc3QgaWRzOiBbc3RyaW5nXVtdID0gW107XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgfVxuXG4gICAgWS5pdGVyYXRlRGVsZXRlZFN0cnVjdHMoXG4gICAgICAgIGV2ZW50LnRyYW5zYWN0aW9uLFxuICAgICAgICBldmVudC50cmFuc2FjdGlvbi5kZWxldGVTZXQsXG4gICAgICAgIC8vIEBwYXJhbSB7SXRlbXxHQ30gaXRlbVxuICAgICAgICAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBZLkl0ZW0gJiYgaXRlbS5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEFjdGlvbk5hbWUuUmVtb3ZlRmllbGQgJiYgaXRlbS5wYXJlbnRTdWIgPT09ICdfaWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGl0ZW0uY29udGVudC5nZXRDb250ZW50KCkgYXMgSWRQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBpdGVtLmNvbnRlbnQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFswXSAmJiBjb250ZW50WzBdWydfaWQnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goW2NvbnRlbnRbMF1bJ19pZCddXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBpZHM7XG59XG4iXX0=
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXRhYmxlL2FycmF5LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN6QixPQUFPLEVBQ0gsVUFBVSxFQVViLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxxQ0FBcUMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1SSxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUM3Qiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFxQyxjQUFjLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxDQUFDLE9BQU8sVUFBVSxtQkFBbUIsQ0FBQyxPQUFvQixFQUFFLFVBQXNCLEVBQUUsS0FBb0I7SUFDMUcsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sT0FBTyxHQUFvQixF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QUFJLEtBQUssVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FDSixDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgKiBhcyBZIGZyb20gJ3lqcyc7XG5pbXBvcnQge1xuICAgIEFjdGlvbk5hbWUsXG4gICAgQUlUYWJsZUFjdGlvbixcbiAgICBBSVRhYmxlVmlldyxcbiAgICBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgQUlWaWV3VGFibGUsXG4gICAgUG9zaXRpb25zLFxuICAgIFNoYXJlZFR5cGUsXG4gICAgU3luY0FycmF5RWxlbWVudCxcbiAgICBTeW5jTWFwRWxlbWVudFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRJZEJ5U3lzdGVtRmllbGRWYWx1ZXMsIGdldFNoYXJlVHlwZU51bWJlclBhdGgsIGdldFRyYWNrYWJsZUVudGl0eUJ5U3lzdGVtRmllbGRWYWx1ZXMsIHRyYW5zbGF0ZVBvc2l0aW9uVG9QYXRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBnZXRQb3NpdGlvbnNCeVN5c3RlbUZpZWxkVmFsdWVzLFxuICAgIGdldFNoYXJlZE1hcFZhbHVlSWQsXG4gICAgZ2V0U2hhcmVkUmVjb3JkLFxuICAgIGdldFNoYXJlZFJlY29yZElkLFxuICAgIGdldFNob3J0SWRCeVN5c3RlbUZpZWxkVmFsdWVzLFxuICAgIGdldFZhbHVlc0J5Q3VzdG9tRmllbGRWYWx1ZXMsXG4gICAgU3lzdGVtRmllbGRJbmRleFxufSBmcm9tICcuLi91dGlscy90cmFuc2xhdGUnO1xuaW1wb3J0IHsgQUlSZWNvcmRGaWVsZElkUGF0aCwgQUlUYWJsZUZpZWxkLCBBSVRhYmxlUXVlcmllcywgSWRQYXRoLCBOdW1iZXJQYXRoIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2xhdGVBcnJheUV2ZW50KGFpVGFibGU6IEFJVmlld1RhYmxlLCBzaGFyZWRUeXBlOiBTaGFyZWRUeXBlLCBldmVudDogWS5ZRXZlbnQ8YW55Pik6IEFJVGFibGVBY3Rpb25bXSB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgbGV0IHRhcmdldFBhdGggPSBnZXRTaGFyZVR5cGVOdW1iZXJQYXRoKGV2ZW50LnBhdGgpO1xuICAgIGNvbnN0IGlzUmVjb3Jkc1RyYW5zbGF0ZSA9IGV2ZW50LnBhdGguaW5jbHVkZXMoJ3JlY29yZHMnKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RyYW5zbGF0ZSA9IGV2ZW50LnBhdGguaW5jbHVkZXMoJ2ZpZWxkcycpO1xuICAgIGNvbnN0IGlzVmlld3NUcmFuc2xhdGUgPSBldmVudC5wYXRoLmluY2x1ZGVzKCd2aWV3cycpO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFJVGFibGVBY3Rpb25bXSA9IFtdO1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9IGFpVGFibGUuYWN0aXZlVmlld0lkKCk7XG5cbiAgICBldmVudC5jaGFuZ2VzLmRlbHRhLmZvckVhY2goKGRlbHRhKSA9PiB7XG4gICAgICAgIGlmICgncmV0YWluJyBpbiBkZWx0YSkge1xuICAgICAgICAgICAgb2Zmc2V0ICs9IGRlbHRhLnJldGFpbiA/PyAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdkZWxldGUnIGluIGRlbHRhKSB7XG4gICAgICAgICAgICBpZiAoaXNBZGRPclJlbW92ZSh0YXJnZXRQYXRoKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZpZXdzVHJhbnNsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZVZpZXcgPSBhaVRhYmxlLnZpZXdzKClbb2Zmc2V0XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZVZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVWaWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFtyZW1vdmVWaWV3Ll9pZF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGlzUmVjb3Jkc1RyYW5zbGF0ZSA/IEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkIDogQWN0aW9uTmFtZS5SZW1vdmVGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlSWRzID0gZ2V0UmVtb3ZlSWRzKGV2ZW50LCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZUlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUlkcy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ2luc2VydCcgaW4gZGVsdGEpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KGRlbHRhLmluc2VydCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWNvcmRzVHJhbnNsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FkZE9yUmVtb3ZlKHRhcmdldFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWx0YS5pbnNlcnQ/Lm1hcCgoaXRlbTogWS5BcnJheTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0udG9KU09OKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgW3N5c3RlbUZpZWxkVmFsdWVzLCBjdXN0b21GaWVsZFZhbHVlc10gPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldFBvc2l0aW9uc0J5U3lzdGVtRmllbGRWYWx1ZXMoc3lzdGVtRmllbGRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gcG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRyYW5zbGF0ZVBvc2l0aW9uVG9QYXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLnJlY29yZHMoKSBhcyBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVWaWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIE51bWJlclBhdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLkFkZFJlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWQ6IGdldElkQnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9pZDogZ2V0U2hvcnRJZEJ5U3lzdGVtRmllbGRWYWx1ZXMoc3lzdGVtRmllbGRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZ2V0VHJhY2thYmxlRW50aXR5QnlTeXN0ZW1GaWVsZFZhbHVlcyhzeXN0ZW1GaWVsZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IGdldFBvc2l0aW9uc0J5U3lzdGVtRmllbGRWYWx1ZXMoc3lzdGVtRmllbGRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBnZXRWYWx1ZXNCeUN1c3RvbUZpZWxkVmFsdWVzKGN1c3RvbUZpZWxkVmFsdWVzLCBhaVRhYmxlLmZpZWxkcygpIGFzIEFJVGFibGVWaWV3RmllbGRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkUmVjb3JkcyA9IHNoYXJlZFR5cGUuZ2V0KCdyZWNvcmRzJykhIGFzIFkuQXJyYXk8U3luY0FycmF5RWxlbWVudD47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkRmllbGRzID0gc2hhcmVkVHlwZS5nZXQoJ2ZpZWxkcycpISBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3lzdGVtRmllbGRPZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhLmluc2VydD8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSB0YXJnZXRQYXRoWzBdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRJbmRleCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gKGFpVGFibGUucmVjb3JkcygpIGFzIEFJVGFibGVWaWV3UmVjb3JkcylbcmVjb3JkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTeXN0ZW1GaWVsZE9wZXJhdGlvbih0YXJnZXRQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUG9zaXRpb25zT3BlcmF0aW9uKGZpZWxkSW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UG9zaXRpb25zOiBQb3NpdGlvbnMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Bvc2l0aW9uc1trZXldID0gaXRlbVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLlNldFJlY29yZFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW3JlY29yZC5faWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ld1Bvc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOatpOWkhOeahOW+queOr+S8muWMheWQqyB1cGRhdGVkX2F0IOWSjCB1cGRhdGVkX2J5IOWQhOS4gOasoe+8jOi/memHjOWPquWkhOeQhiB1cGRhdGVkX2J5IOWQjOaXtuWMheWQq+S4pOS4quWtl+auteeahOS/ruaUuVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1VwZGF0ZWRCeU9wZXJhdGlvbihmaWVsZEluZGV4ICsgc3lzdGVtRmllbGRPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3lzdGVtRmllbGRWYWx1ZXMgPSBnZXRTaGFyZWRSZWNvcmQoc2hhcmVkUmVjb3JkcywgcmVjb3JkSW5kZXgpLmdldCgwKS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVwZGF0ZWRfYXQsIHVwZGF0ZWRfYnkgfSA9IGdldFRyYWNrYWJsZUVudGl0eUJ5U3lzdGVtRmllbGRWYWx1ZXMoc3lzdGVtRmllbGRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW3JlY29yZC5faWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkSW5mbzogeyB1cGRhdGVkX2F0LCB1cGRhdGVkX2J5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbUZpZWxkT2Zmc2V0Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldFNoYXJlZFJlY29yZElkKHNoYXJlZFJlY29yZHMsIHJlY29yZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBnZXRTaGFyZWRNYXBWYWx1ZUlkKHNoYXJlZEZpZWxkcywgZmllbGRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gW3JlY29yZElkLCBmaWVsZElkXSBhcyBBSVJlY29yZEZpZWxkSWRQYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUbyBleGNsdWRlIGluc2VydCB0cmlnZ2VyZWQgYnkgZmllbGQgaW5zZXJ0cy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlICE9PSBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVGaWVsZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZFZhbHVlOiBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0ZpZWxkc1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkZWx0YS5pbnNlcnQ/Lm1hcCgoaXRlbTogWS5NYXA8YW55PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0udG9KU09OKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdHJhbnNsYXRlUG9zaXRpb25Ub1BhdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5maWVsZHMoKSBhcyBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydwb3NpdGlvbnMnXVthY3RpdmVWaWV3SWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVZpZXdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBOdW1iZXJQYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLkFkZEZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGRhdGEgYXMgQUlUYWJsZUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc1ZpZXdzVHJhbnNsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbHRhLmluc2VydD8ubWFwKChpdGVtOiBZLk1hcDxhbnk+LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0udG9KU09OKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkVmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbb2Zmc2V0ICsgaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6IGRhdGEgYXMgQUlUYWJsZVZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWRkT3JSZW1vdmUodGFyZ2V0UGF0aDogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGFyZ2V0UGF0aC5sZW5ndGggPT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N5c3RlbUZpZWxkT3BlcmF0aW9uKHRhcmdldFBhdGg6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRhcmdldFBhdGgubGVuZ3RoID09PSAyICYmIHRhcmdldFBhdGhbMV0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tRmllbGRPcGVyYXRpb24odGFyZ2V0UGF0aDogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBpZiAodGFyZ2V0UGF0aC5sZW5ndGggPT09IDIgJiYgdGFyZ2V0UGF0aFsxXSA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpdGlvbnNPcGVyYXRpb24oZmllbGRJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkSW5kZXggPT09IFN5c3RlbUZpZWxkSW5kZXguUG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGVkQnlPcGVyYXRpb24oZmllbGRJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkSW5kZXggPT09IFN5c3RlbUZpZWxkSW5kZXguVXBkYXRlZEJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVtb3ZlSWRzKGV2ZW50OiBZLllFdmVudDxhbnk+LCB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkIHwgQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQpIHtcbiAgICBjb25zdCBpZHM6IFtzdHJpbmddW10gPSBbXTtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGlkcztcbiAgICB9XG5cbiAgICBZLml0ZXJhdGVEZWxldGVkU3RydWN0cyhcbiAgICAgICAgZXZlbnQudHJhbnNhY3Rpb24sXG4gICAgICAgIGV2ZW50LnRyYW5zYWN0aW9uLmRlbGV0ZVNldCxcbiAgICAgICAgLy8gQHBhcmFtIHtJdGVtfEdDfSBpdGVtXG4gICAgICAgIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFkuSXRlbSAmJiBpdGVtLmRlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gQWN0aW9uTmFtZS5SZW1vdmVGaWVsZCAmJiBpdGVtLnBhcmVudFN1YiA9PT0gJ19pZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goaXRlbS5jb250ZW50LmdldENvbnRlbnQoKSBhcyBJZFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGl0ZW0uY29udGVudC5nZXRDb250ZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50WzBdICYmIGNvbnRlbnRbMF1bJ19pZCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChbY29udGVudFswXVsnX2lkJ11dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIGlkcztcbn1cbiJdfQ==
@@ -20,4 +20,4 @@ export var ExecuteType;
20
20
  ExecuteType[ExecuteType["Undo"] = 1] = "Undo";
21
21
  ExecuteType[ExecuteType["Redo"] = 2] = "Redo";
22
22
  })(ExecuteType || (ExecuteType = {}));
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3R5cGVzL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSxVQWNYO0FBZEQsV0FBWSxVQUFVO0lBQ2xCLHFEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF3QixDQUFBO0lBQ3hCLG9DQUFzQixDQUFBO0lBQ3RCLHNDQUF3QixDQUFBO0lBQ3hCLHdDQUEwQixDQUFBO0lBQzFCLDBDQUE0QixDQUFBO0lBQzVCLDRDQUE4QixDQUFBO0lBQzlCLG9DQUFzQixDQUFBO0lBQ3RCLGtDQUFvQixDQUFBO0lBQ3BCLGtDQUFvQixDQUFBO0lBQ3BCLHdDQUEwQixDQUFBO0lBQzFCLHlEQUEyQyxDQUFBO0lBQzNDLGtFQUFvRCxDQUFBO0FBQ3hELENBQUMsRUFkVyxVQUFVLEtBQVYsVUFBVSxRQWNyQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDbkIsbURBQU8sQ0FBQTtJQUNQLDZDQUFJLENBQUE7SUFDSiw2Q0FBSSxDQUFBO0FBQ1IsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlGaWVsZFZhbHVlSWRQYXRoLCBBSVRhYmxlRmllbGQsIEFJVGFibGVSZWNvcmQsIEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbywgSWRQYXRoLCBOdW1iZXJQYXRoIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQUlUYWJsZVZpZXcsIEFJVGFibGVWaWV3UmVjb3JkLCBQb3NpdGlvbnMsIFJlbW92ZVBvc2l0aW9ucyB9IGZyb20gJy4vdmlldyc7XG5cbmV4cG9ydCBlbnVtIEFjdGlvbk5hbWUge1xuICAgIFVwZGF0ZUZpZWxkVmFsdWUgPSAndXBkYXRlX2ZpZWxkX3ZhbHVlJyxcbiAgICBBZGRSZWNvcmQgPSAnYWRkX3JlY29yZCcsXG4gICAgQWRkRmllbGQgPSAnYWRkX2ZpZWxkJyxcbiAgICBNb3ZlRmllbGQgPSAnbW92ZV9maWVsZCcsXG4gICAgTW92ZVJlY29yZCA9ICdtb3ZlX3JlY29yZCcsXG4gICAgUmVtb3ZlRmllbGQgPSAncmVtb3ZlX2ZpZWxkJyxcbiAgICBSZW1vdmVSZWNvcmQgPSAncmVtb3ZlX3JlY29yZCcsXG4gICAgU2V0RmllbGQgPSAnc2V0X2ZpZWxkJyxcbiAgICBTZXRWaWV3ID0gJ3NldF92aWV3JyxcbiAgICBBZGRWaWV3ID0gJ2FkZF92aWV3JyxcbiAgICBSZW1vdmVWaWV3ID0gJ3JlbW92ZV92aWV3JyxcbiAgICBTZXRSZWNvcmRQb3NpdGlvbnMgPSAnc2V0X3JlY29yZF9wb3NpdGlvbnMnLFxuICAgIFVwZGF0ZVN5c3RlbUZpZWxkVmFsdWUgPSAndXBkYXRlX3N5c3RlbV9maWVsZF92YWx1ZSdcbn1cblxuZXhwb3J0IGVudW0gRXhlY3V0ZVR5cGUge1xuICAgIEV4ZWN1dGUsXG4gICAgVW5kbyxcbiAgICBSZWRvXG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24gPSB7XG4gICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVGaWVsZFZhbHVlO1xuICAgIHBhdGg6IEFJRmllbGRWYWx1ZUlkUGF0aDtcbiAgICBmaWVsZFZhbHVlOiBhbnk7XG4gICAgbmV3RmllbGRWYWx1ZTogYW55O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkUmVjb3JkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkUmVjb3JkO1xuICAgIHBhdGg6IE51bWJlclBhdGg7XG4gICAgcmVjb3JkOiBBSVRhYmxlUmVjb3JkIHwgQUlUYWJsZVZpZXdSZWNvcmQ7XG59O1xuXG5leHBvcnQgdHlwZSBBZGRGaWVsZEFjdGlvbiA9IHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLkFkZEZpZWxkO1xuICAgIHBhdGg6IE51bWJlclBhdGg7XG4gICAgZmllbGQ6IEFJVGFibGVGaWVsZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1vdmVGaWVsZEFjdGlvbiA9IHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLk1vdmVGaWVsZDtcbiAgICBwYXRoOiBOdW1iZXJQYXRoO1xuICAgIG5ld1BhdGg6IE51bWJlclBhdGg7XG59O1xuXG5leHBvcnQgdHlwZSBNb3ZlUmVjb3JkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuTW92ZVJlY29yZDtcbiAgICBwYXRoOiBOdW1iZXJQYXRoO1xuICAgIG5ld1BhdGg6IE51bWJlclBhdGg7XG59O1xuXG5leHBvcnQgdHlwZSBSZW1vdmVGaWVsZEFjdGlvbiA9IHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkO1xuICAgIHBhdGg6IElkUGF0aDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbW92ZVJlY29yZEFjdGlvbiA9IHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZVJlY29yZDtcbiAgICBwYXRoOiBJZFBhdGg7XG59O1xuXG5leHBvcnQgdHlwZSBTZXRGaWVsZEFjdGlvbiA9IHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlNldEZpZWxkO1xuICAgIHBhdGg6IElkUGF0aDtcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEFJVGFibGVGaWVsZD47XG4gICAgbmV3UHJvcGVydGllczogUGFydGlhbDxBSVRhYmxlRmllbGQ+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTZXRWaWV3QWN0aW9uIHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlNldFZpZXc7XG4gICAgcHJvcGVydGllczogUGFydGlhbDxBSVRhYmxlVmlldz47XG4gICAgbmV3UHJvcGVydGllczogUGFydGlhbDxBSVRhYmxlVmlldz47XG4gICAgcGF0aDogSWRQYXRoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFZpZXdBY3Rpb24ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkVmlldztcbiAgICB2aWV3OiBBSVRhYmxlVmlldztcbiAgICBwYXRoOiBbbnVtYmVyXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVWaWV3QWN0aW9uIHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZVZpZXc7XG4gICAgcGF0aDogSWRQYXRoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFJlY29yZFBvc2l0aW9uQWN0aW9uIHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlNldFJlY29yZFBvc2l0aW9ucztcbiAgICBwb3NpdGlvbnM6IFBvc2l0aW9ucyB8IFJlbW92ZVBvc2l0aW9ucztcbiAgICBwYXRoOiBJZFBhdGg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSB7XG4gICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlO1xuICAgIHVwZGF0ZWRJbmZvOiBQYXJ0aWFsPEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbz47XG4gICAgcGF0aDogSWRQYXRoO1xufVxuXG5leHBvcnQgdHlwZSBBSVRhYmxlVmlld0FjdGlvbiA9IFNldFZpZXdBY3Rpb24gfCBBZGRWaWV3QWN0aW9uIHwgUmVtb3ZlVmlld0FjdGlvbjtcblxuZXhwb3J0IHR5cGUgQUlUYWJsZVN5c3RlbUZpZWxkQWN0aW9uID0gU2V0UmVjb3JkUG9zaXRpb25BY3Rpb24gfCBVcGRhdGVTeXN0ZW1GaWVsZFZhbHVlO1xuXG5leHBvcnQgdHlwZSBBSVRhYmxlQWN0aW9uID1cbiAgICB8IFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb25cbiAgICB8IEFkZFJlY29yZEFjdGlvblxuICAgIHwgQWRkRmllbGRBY3Rpb25cbiAgICB8IFJlbW92ZVJlY29yZEFjdGlvblxuICAgIHwgUmVtb3ZlRmllbGRBY3Rpb25cbiAgICB8IFNldEZpZWxkQWN0aW9uXG4gICAgfCBNb3ZlRmllbGRBY3Rpb25cbiAgICB8IE1vdmVSZWNvcmRBY3Rpb25cbiAgICB8IEFJVGFibGVWaWV3QWN0aW9uXG4gICAgfCBBSVRhYmxlU3lzdGVtRmllbGRBY3Rpb247XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3R5cGVzL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSxVQWNYO0FBZEQsV0FBWSxVQUFVO0lBQ2xCLHFEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF3QixDQUFBO0lBQ3hCLG9DQUFzQixDQUFBO0lBQ3RCLHNDQUF3QixDQUFBO0lBQ3hCLHdDQUEwQixDQUFBO0lBQzFCLDBDQUE0QixDQUFBO0lBQzVCLDRDQUE4QixDQUFBO0lBQzlCLG9DQUFzQixDQUFBO0lBQ3RCLGtDQUFvQixDQUFBO0lBQ3BCLGtDQUFvQixDQUFBO0lBQ3BCLHdDQUEwQixDQUFBO0lBQzFCLHlEQUEyQyxDQUFBO0lBQzNDLGtFQUFvRCxDQUFBO0FBQ3hELENBQUMsRUFkVyxVQUFVLEtBQVYsVUFBVSxRQWNyQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDbkIsbURBQU8sQ0FBQTtJQUNQLDZDQUFJLENBQUE7SUFDSiw2Q0FBSSxDQUFBO0FBQ1IsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlSZWNvcmRGaWVsZElkUGF0aCwgQUlUYWJsZUZpZWxkLCBBSVRhYmxlUmVjb3JkLCBBSVRhYmxlUmVjb3JkVXBkYXRlZEluZm8sIElkUGF0aCwgTnVtYmVyUGF0aCB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IEFJVGFibGVWaWV3LCBBSVRhYmxlVmlld1JlY29yZCwgUG9zaXRpb25zLCBSZW1vdmVQb3NpdGlvbnMgfSBmcm9tICcuL3ZpZXcnO1xuXG5leHBvcnQgZW51bSBBY3Rpb25OYW1lIHtcbiAgICBVcGRhdGVGaWVsZFZhbHVlID0gJ3VwZGF0ZV9maWVsZF92YWx1ZScsXG4gICAgQWRkUmVjb3JkID0gJ2FkZF9yZWNvcmQnLFxuICAgIEFkZEZpZWxkID0gJ2FkZF9maWVsZCcsXG4gICAgTW92ZUZpZWxkID0gJ21vdmVfZmllbGQnLFxuICAgIE1vdmVSZWNvcmQgPSAnbW92ZV9yZWNvcmQnLFxuICAgIFJlbW92ZUZpZWxkID0gJ3JlbW92ZV9maWVsZCcsXG4gICAgUmVtb3ZlUmVjb3JkID0gJ3JlbW92ZV9yZWNvcmQnLFxuICAgIFNldEZpZWxkID0gJ3NldF9maWVsZCcsXG4gICAgU2V0VmlldyA9ICdzZXRfdmlldycsXG4gICAgQWRkVmlldyA9ICdhZGRfdmlldycsXG4gICAgUmVtb3ZlVmlldyA9ICdyZW1vdmVfdmlldycsXG4gICAgU2V0UmVjb3JkUG9zaXRpb25zID0gJ3NldF9yZWNvcmRfcG9zaXRpb25zJyxcbiAgICBVcGRhdGVTeXN0ZW1GaWVsZFZhbHVlID0gJ3VwZGF0ZV9zeXN0ZW1fZmllbGRfdmFsdWUnXG59XG5cbmV4cG9ydCBlbnVtIEV4ZWN1dGVUeXBlIHtcbiAgICBFeGVjdXRlLFxuICAgIFVuZG8sXG4gICAgUmVkb1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGaWVsZFZhbHVlQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlRmllbGRWYWx1ZTtcbiAgICBwYXRoOiBBSVJlY29yZEZpZWxkSWRQYXRoO1xuICAgIGZpZWxkVmFsdWU6IGFueTtcbiAgICBuZXdGaWVsZFZhbHVlOiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBBZGRSZWNvcmRBY3Rpb24gPSB7XG4gICAgdHlwZTogQWN0aW9uTmFtZS5BZGRSZWNvcmQ7XG4gICAgcGF0aDogTnVtYmVyUGF0aDtcbiAgICByZWNvcmQ6IEFJVGFibGVSZWNvcmQgfCBBSVRhYmxlVmlld1JlY29yZDtcbn07XG5cbmV4cG9ydCB0eXBlIEFkZEZpZWxkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkRmllbGQ7XG4gICAgcGF0aDogTnVtYmVyUGF0aDtcbiAgICBmaWVsZDogQUlUYWJsZUZpZWxkO1xufTtcblxuZXhwb3J0IHR5cGUgTW92ZUZpZWxkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuTW92ZUZpZWxkO1xuICAgIHBhdGg6IE51bWJlclBhdGg7XG4gICAgbmV3UGF0aDogTnVtYmVyUGF0aDtcbn07XG5cbmV4cG9ydCB0eXBlIE1vdmVSZWNvcmRBY3Rpb24gPSB7XG4gICAgdHlwZTogQWN0aW9uTmFtZS5Nb3ZlUmVjb3JkO1xuICAgIHBhdGg6IE51bWJlclBhdGg7XG4gICAgbmV3UGF0aDogTnVtYmVyUGF0aDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUZpZWxkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuUmVtb3ZlRmllbGQ7XG4gICAgcGF0aDogSWRQYXRoO1xufTtcblxuZXhwb3J0IHR5cGUgUmVtb3ZlUmVjb3JkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkO1xuICAgIHBhdGg6IElkUGF0aDtcbn07XG5cbmV4cG9ydCB0eXBlIFNldEZpZWxkQWN0aW9uID0ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuU2V0RmllbGQ7XG4gICAgcGF0aDogSWRQYXRoO1xuICAgIHByb3BlcnRpZXM6IFBhcnRpYWw8QUlUYWJsZUZpZWxkPjtcbiAgICBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPEFJVGFibGVGaWVsZD47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldFZpZXdBY3Rpb24ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuU2V0VmlldztcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEFJVGFibGVWaWV3PjtcbiAgICBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPEFJVGFibGVWaWV3PjtcbiAgICBwYXRoOiBJZFBhdGg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkVmlld0FjdGlvbiB7XG4gICAgdHlwZTogQWN0aW9uTmFtZS5BZGRWaWV3O1xuICAgIHZpZXc6IEFJVGFibGVWaWV3O1xuICAgIHBhdGg6IFtudW1iZXJdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVZpZXdBY3Rpb24ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuUmVtb3ZlVmlldztcbiAgICBwYXRoOiBJZFBhdGg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UmVjb3JkUG9zaXRpb25BY3Rpb24ge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUuU2V0UmVjb3JkUG9zaXRpb25zO1xuICAgIHBvc2l0aW9uczogUG9zaXRpb25zIHwgUmVtb3ZlUG9zaXRpb25zO1xuICAgIHBhdGg6IElkUGF0aDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTeXN0ZW1GaWVsZFZhbHVlIHtcbiAgICB0eXBlOiBBY3Rpb25OYW1lLlVwZGF0ZVN5c3RlbUZpZWxkVmFsdWU7XG4gICAgdXBkYXRlZEluZm86IFBhcnRpYWw8QUlUYWJsZVJlY29yZFVwZGF0ZWRJbmZvPjtcbiAgICBwYXRoOiBJZFBhdGg7XG59XG5cbmV4cG9ydCB0eXBlIEFJVGFibGVWaWV3QWN0aW9uID0gU2V0Vmlld0FjdGlvbiB8IEFkZFZpZXdBY3Rpb24gfCBSZW1vdmVWaWV3QWN0aW9uO1xuXG5leHBvcnQgdHlwZSBBSVRhYmxlU3lzdGVtRmllbGRBY3Rpb24gPSBTZXRSZWNvcmRQb3NpdGlvbkFjdGlvbiB8IFVwZGF0ZVN5c3RlbUZpZWxkVmFsdWU7XG5cbmV4cG9ydCB0eXBlIEFJVGFibGVBY3Rpb24gPVxuICAgIHwgVXBkYXRlRmllbGRWYWx1ZUFjdGlvblxuICAgIHwgQWRkUmVjb3JkQWN0aW9uXG4gICAgfCBBZGRGaWVsZEFjdGlvblxuICAgIHwgUmVtb3ZlUmVjb3JkQWN0aW9uXG4gICAgfCBSZW1vdmVGaWVsZEFjdGlvblxuICAgIHwgU2V0RmllbGRBY3Rpb25cbiAgICB8IE1vdmVGaWVsZEFjdGlvblxuICAgIHwgTW92ZVJlY29yZEFjdGlvblxuICAgIHwgQUlUYWJsZVZpZXdBY3Rpb25cbiAgICB8IEFJVGFibGVTeXN0ZW1GaWVsZEFjdGlvbjtcbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  import { getSortRecords } from './record/sort';
2
2
  import { getFilteredRecords } from './record/filter';
3
3
  import { getSortFields } from './field/sort-fields';
4
- export function buildRecordsByView(aiTable, records, fields, activeView) {
4
+ export function buildRecordsByView(aiTable, records, fields, activeView, sortKeysMap) {
5
5
  const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);
6
- return getSortRecords(aiTable, filteredRecords, activeView);
6
+ return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);
7
7
  }
8
8
  export function buildFieldsByView(aiTable, fields, activeView) {
9
9
  return getSortFields(aiTable, fields, activeView);
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvdXRpbHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQW9CLEVBQUUsT0FBMkIsRUFBRSxNQUF5QixFQUFFLFVBQXVCO0lBQ3BJLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2pGLE9BQU8sY0FBYyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFvQixFQUFFLE1BQXlCLEVBQUUsVUFBdUI7SUFDdEcsT0FBTyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQTJCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGVWaWV3LCBBSVRhYmxlVmlld0ZpZWxkcywgQUlUYWJsZVZpZXdSZWNvcmRzLCBBSVZpZXdUYWJsZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFNvcnRSZWNvcmRzIH0gZnJvbSAnLi9yZWNvcmQvc29ydCc7XG5pbXBvcnQgeyBnZXRGaWx0ZXJlZFJlY29yZHMgfSBmcm9tICcuL3JlY29yZC9maWx0ZXInO1xuaW1wb3J0IHsgZ2V0U29ydEZpZWxkcyB9IGZyb20gJy4vZmllbGQvc29ydC1maWVsZHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZWNvcmRzQnlWaWV3KGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3KSB7XG4gICAgY29uc3QgZmlsdGVyZWRSZWNvcmRzID0gZ2V0RmlsdGVyZWRSZWNvcmRzKGFpVGFibGUsIHJlY29yZHMsIGZpZWxkcywgYWN0aXZlVmlldyk7XG4gICAgcmV0dXJuIGdldFNvcnRSZWNvcmRzKGFpVGFibGUsIGZpbHRlcmVkUmVjb3JkcywgYWN0aXZlVmlldyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpZWxkc0J5VmlldyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlldzogQUlUYWJsZVZpZXcpIHtcbiAgICByZXR1cm4gZ2V0U29ydEZpZWxkcyhhaVRhYmxlLCBmaWVsZHMgYXMgQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXcpO1xufVxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvdXRpbHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHcEQsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixPQUFvQixFQUNwQixPQUEyQixFQUMzQixNQUF5QixFQUN6QixVQUF1QixFQUN2QixXQUF1RDtJQUV2RCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRixPQUFPLGNBQWMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQW9CLEVBQUUsTUFBeUIsRUFBRSxVQUF1QjtJQUN0RyxPQUFPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBMkIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZVZpZXcsIEFJVGFibGVWaWV3RmllbGRzLCBBSVRhYmxlVmlld1JlY29yZHMsIEFJVmlld1RhYmxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U29ydFJlY29yZHMgfSBmcm9tICcuL3JlY29yZC9zb3J0JztcbmltcG9ydCB7IGdldEZpbHRlcmVkUmVjb3JkcyB9IGZyb20gJy4vcmVjb3JkL2ZpbHRlcic7XG5pbXBvcnQgeyBnZXRTb3J0RmllbGRzIH0gZnJvbSAnLi9maWVsZC9zb3J0LWZpZWxkcyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZWNvcmRzQnlWaWV3KFxuICAgIGFpVGFibGU6IEFJVmlld1RhYmxlLFxuICAgIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcyxcbiAgICBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLFxuICAgIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3LFxuICAgIHNvcnRLZXlzTWFwPzogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgc3RyaW5nPj5cbikge1xuICAgIGNvbnN0IGZpbHRlcmVkUmVjb3JkcyA9IGdldEZpbHRlcmVkUmVjb3JkcyhhaVRhYmxlLCByZWNvcmRzLCBmaWVsZHMsIGFjdGl2ZVZpZXcpO1xuICAgIHJldHVybiBnZXRTb3J0UmVjb3JkcyhhaVRhYmxlLCBmaWx0ZXJlZFJlY29yZHMsIGFjdGl2ZVZpZXcsIHNvcnRLZXlzTWFwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRmllbGRzQnlWaWV3KGFpVGFibGU6IEFJVmlld1RhYmxlLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIHJldHVybiBnZXRTb3J0RmllbGRzKGFpVGFibGUsIGZpZWxkcyBhcyBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlldyk7XG59XG4iXX0=
@@ -1,16 +1,16 @@
1
1
  import { AITableQueries, ViewOperationMap } from '@ai-table/grid';
2
2
  import { sortByViewPosition } from '../common';
3
- export function getSortRecords(aiTable, records, activeView) {
3
+ export function getSortRecords(aiTable, records, activeView, sortKeysMap) {
4
4
  if (!activeView?.settings || !activeView.settings.sorts?.length) {
5
5
  return records;
6
6
  }
7
7
  const { is_keep_sort, sorts } = activeView.settings;
8
8
  if (is_keep_sort && sorts?.length) {
9
- return sortRecordsBySortInfo(aiTable, records, activeView);
9
+ return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);
10
10
  }
11
11
  return sortByViewPosition(records, activeView);
12
12
  }
13
- export function sortRecordsBySortInfo(aiTable, records, activeView) {
13
+ export function sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap) {
14
14
  const shallowRows = [...records];
15
15
  if (activeView.settings?.sorts?.length) {
16
16
  shallowRows.sort((prev, current) => {
@@ -20,10 +20,11 @@ export function sortRecordsBySortInfo(aiTable, records, activeView) {
20
20
  return acc;
21
21
  }
22
22
  const fieldMethod = ViewOperationMap[field.type];
23
+ const sortKey = sortKeysMap?.[field.type];
23
24
  const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);
24
25
  const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);
25
26
  const references = aiTable.references();
26
- const res = fieldMethod.compare(cellValue1, cellValue2, field, references);
27
+ const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);
27
28
  return res * rule.direction;
28
29
  }, 0);
29
30
  });
@@ -31,4 +32,4 @@ export function sortRecordsBySortInfo(aiTable, records, activeView) {
31
32
  }
32
33
  return shallowRows;
33
34
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9yZWNvcmQvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRS9DLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0IsRUFBRSxPQUEyQixFQUFFLFVBQXVCO0lBQ2pHLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDOUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxJQUFJLFlBQVksSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDaEMsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQWdCLEVBQUUsT0FBMkIsRUFBRSxVQUF1QjtJQUN4RyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE9BQU8sVUFBVSxDQUFDLFFBQVMsQ0FBQyxLQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWpELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzNFLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVRdWVyaWVzLCBWaWV3T3BlcmF0aW9uTWFwIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQUlUYWJsZVZpZXcsIEFJVGFibGVWaWV3UmVjb3JkcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IHNvcnRCeVZpZXdQb3NpdGlvbiB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0UmVjb3JkcyhhaVRhYmxlOiBBSVRhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3KSB7XG4gICAgaWYgKCFhY3RpdmVWaWV3Py5zZXR0aW5ncyB8fCAhYWN0aXZlVmlldy5zZXR0aW5ncy5zb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH1cbiAgICBjb25zdCB7IGlzX2tlZXBfc29ydCwgc29ydHMgfSA9IGFjdGl2ZVZpZXcuc2V0dGluZ3M7XG4gICAgaWYgKGlzX2tlZXBfc29ydCAmJiBzb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzb3J0UmVjb3Jkc0J5U29ydEluZm8oYWlUYWJsZSwgcmVjb3JkcywgYWN0aXZlVmlldyk7XG4gICAgfVxuICAgIHJldHVybiBzb3J0QnlWaWV3UG9zaXRpb24ocmVjb3JkcywgYWN0aXZlVmlldyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0UmVjb3Jkc0J5U29ydEluZm8oYWlUYWJsZTogQUlUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIGNvbnN0IHNoYWxsb3dSb3dzID0gWy4uLnJlY29yZHNdO1xuICAgIGlmIChhY3RpdmVWaWV3LnNldHRpbmdzPy5zb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHNoYWxsb3dSb3dzLnNvcnQoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmVWaWV3LnNldHRpbmdzIS5zb3J0cyEucmVkdWNlKChhY2MsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGFpVGFibGUuZmllbGRzTWFwKClbcnVsZS5zb3J0X2J5XTtcbiAgICAgICAgICAgICAgICBpZiAoIWZpZWxkIHx8IGFjYyAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE1ldGhvZCA9IFZpZXdPcGVyYXRpb25NYXBbZmllbGQudHlwZV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUxID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBbcHJldi5faWQsIGZpZWxkLl9pZF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZTIgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIFtjdXJyZW50Ll9pZCwgZmllbGQuX2lkXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IGFpVGFibGUucmVmZXJlbmNlcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZpZWxkTWV0aG9kLmNvbXBhcmUoY2VsbFZhbHVlMSwgY2VsbFZhbHVlMiwgZmllbGQsIHJlZmVyZW5jZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMgKiBydWxlLmRpcmVjdGlvbjtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNoYWxsb3dSb3dzO1xuICAgIH1cbiAgICByZXR1cm4gc2hhbGxvd1Jvd3M7XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9yZWNvcmQvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUvQyxNQUFNLFVBQVUsY0FBYyxDQUMxQixPQUFnQixFQUNoQixPQUEyQixFQUMzQixVQUF1QixFQUN2QixXQUF1RDtJQUV2RCxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDcEQsSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE9BQU8scUJBQXFCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELE9BQU8sa0JBQWtCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ2pDLE9BQWdCLEVBQ2hCLE9BQTJCLEVBQzNCLFVBQXVCLEVBQ3ZCLFdBQXVEO0lBRXZELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNqQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDL0IsT0FBTyxVQUFVLENBQUMsUUFBUyxDQUFDLEtBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0QixPQUFPLEdBQUcsQ0FBQztnQkFDZixDQUFDO2dCQUNELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUUxQyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hGLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDcEYsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUZpZWxkVHlwZSwgQUlUYWJsZVF1ZXJpZXMsIFZpZXdPcGVyYXRpb25NYXAgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlVmlldywgQUlUYWJsZVZpZXdSZWNvcmRzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgc29ydEJ5Vmlld1Bvc2l0aW9uIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRSZWNvcmRzKFxuICAgIGFpVGFibGU6IEFJVGFibGUsXG4gICAgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3LFxuICAgIHNvcnRLZXlzTWFwPzogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgc3RyaW5nPj5cbikge1xuICAgIGlmICghYWN0aXZlVmlldz8uc2V0dGluZ3MgfHwgIWFjdGl2ZVZpZXcuc2V0dGluZ3Muc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkcztcbiAgICB9XG4gICAgY29uc3QgeyBpc19rZWVwX3NvcnQsIHNvcnRzIH0gPSBhY3RpdmVWaWV3LnNldHRpbmdzO1xuICAgIGlmIChpc19rZWVwX3NvcnQgJiYgc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc29ydFJlY29yZHNCeVNvcnRJbmZvKGFpVGFibGUsIHJlY29yZHMsIGFjdGl2ZVZpZXcsIHNvcnRLZXlzTWFwKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRCeVZpZXdQb3NpdGlvbihyZWNvcmRzLCBhY3RpdmVWaWV3KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZWNvcmRzQnlTb3J0SW5mbyhcbiAgICBhaVRhYmxlOiBBSVRhYmxlLFxuICAgIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcyxcbiAgICBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldyxcbiAgICBzb3J0S2V5c01hcD86IFBhcnRpYWw8UmVjb3JkPEFJVGFibGVGaWVsZFR5cGUsIHN0cmluZz4+XG4pIHtcbiAgICBjb25zdCBzaGFsbG93Um93cyA9IFsuLi5yZWNvcmRzXTtcbiAgICBpZiAoYWN0aXZlVmlldy5zZXR0aW5ncz8uc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICBzaGFsbG93Um93cy5zb3J0KChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aXZlVmlldy5zZXR0aW5ncyEuc29ydHMhLnJlZHVjZSgoYWNjLCBydWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBhaVRhYmxlLmZpZWxkc01hcCgpW3J1bGUuc29ydF9ieV07XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZCB8fCBhY2MgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRNZXRob2QgPSBWaWV3T3BlcmF0aW9uTWFwW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRLZXkgPSBzb3J0S2V5c01hcD8uW2ZpZWxkLnR5cGVdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFZhbHVlMSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3ByZXYuX2lkLCBmaWVsZC5faWRdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUyID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBbY3VycmVudC5faWQsIGZpZWxkLl9pZF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBhaVRhYmxlLnJlZmVyZW5jZXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBmaWVsZE1ldGhvZC5jb21wYXJlKGNlbGxWYWx1ZTEsIGNlbGxWYWx1ZTIsIGZpZWxkLCByZWZlcmVuY2VzLCBzb3J0S2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzICogcnVsZS5kaXJlY3Rpb247XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzaGFsbG93Um93cztcbiAgICB9XG4gICAgcmV0dXJuIHNoYWxsb3dSb3dzO1xufVxuIl19
@@ -699,17 +699,17 @@ function sortByViewPosition(data, activeView) {
699
699
  return data;
700
700
  }
701
701
 
702
- function getSortRecords(aiTable, records, activeView) {
702
+ function getSortRecords(aiTable, records, activeView, sortKeysMap) {
703
703
  if (!activeView?.settings || !activeView.settings.sorts?.length) {
704
704
  return records;
705
705
  }
706
706
  const { is_keep_sort, sorts } = activeView.settings;
707
707
  if (is_keep_sort && sorts?.length) {
708
- return sortRecordsBySortInfo(aiTable, records, activeView);
708
+ return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);
709
709
  }
710
710
  return sortByViewPosition(records, activeView);
711
711
  }
712
- function sortRecordsBySortInfo(aiTable, records, activeView) {
712
+ function sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap) {
713
713
  const shallowRows = [...records];
714
714
  if (activeView.settings?.sorts?.length) {
715
715
  shallowRows.sort((prev, current) => {
@@ -719,10 +719,11 @@ function sortRecordsBySortInfo(aiTable, records, activeView) {
719
719
  return acc;
720
720
  }
721
721
  const fieldMethod = ViewOperationMap[field.type];
722
+ const sortKey = sortKeysMap?.[field.type];
722
723
  const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);
723
724
  const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);
724
725
  const references = aiTable.references();
725
- const res = fieldMethod.compare(cellValue1, cellValue2, field, references);
726
+ const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);
726
727
  return res * rule.direction;
727
728
  }, 0);
728
729
  });
@@ -812,9 +813,9 @@ function getSortFields(aiTable, fields, activeView) {
812
813
  return sortByViewPosition(fields, activeView);
813
814
  }
814
815
 
815
- function buildRecordsByView(aiTable, records, fields, activeView) {
816
+ function buildRecordsByView(aiTable, records, fields, activeView, sortKeysMap) {
816
817
  const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);
817
- return getSortRecords(aiTable, filteredRecords, activeView);
818
+ return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);
818
819
  }
819
820
  function buildFieldsByView(aiTable, fields, activeView) {
820
821
  return getSortFields(aiTable, fields, activeView);
@@ -1386,7 +1387,7 @@ const RemoveRecordsItem = {
1386
1387
  name: '删除行',
1387
1388
  icon: 'trash',
1388
1389
  exec: (aiTable, targetName, position, aiTableGridSelectionService) => {
1389
- let selectedRecordIds = AITable.getSelectedRecordIds(aiTable);
1390
+ let selectedRecordIds = AITable.getActiveRecordIds(aiTable);
1390
1391
  selectedRecordIds.forEach((id) => {
1391
1392
  Actions.removeRecord(aiTable, [id]);
1392
1393
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.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/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/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/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.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/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 { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIFieldValueIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIFieldValueIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n valuesArray.push(record['values'][field._id]);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(data: AITableViewRecords | AITableViewFields, position: number, activeViewId: string) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n\n return [index];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index] || '';\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\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(toSyncElement));\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\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\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 { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIFieldValueIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.fields() as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIFieldValueIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.fields() as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(\n aiTable: AIViewTable,\n sharedType: SharedType,\n event: Y.YMapEvent<unknown>\n): 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.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 { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, 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 { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\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 customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../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([toSyncElement(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_at) {\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 fields.push([toSyncElement(action.field)]);\n const path = action.path[0];\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(path, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): 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 { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\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 { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\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","import { AITable, AITableQueries, ViewOperationMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(aiTable: AITable, records: AITableViewRecords, activeView: AITableView) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(aiTable: AITable, records: AITableViewRecords, activeView: AITableView) {\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 = ViewOperationMap[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.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, field, references);\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n ViewOperationMap,\n isEmpty\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\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(fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\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(fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, field, cellValue);\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, field: AITableViewField, cellValue: FieldValue) {\n return ViewOperationMap[field.type].isMeetFilter(condition, cellValue);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n conditionLogical?: AITableFilterLogical\n) {\n if (conditions.length === 1) {\n // recordValues[conditions[0].field_id] = conditions[0].value;\n } else {\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 { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\n\nexport function buildRecordsByView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AIViewTable\n} from '../types';\nimport { AITableViewField } from '../types/view';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\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};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../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 const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.fields() as AITableViewFields,\n action.path[0]\n );\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n const newRecord = {\n [newField._id]: getDefaultFieldValue(action.field)\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const field = fields[action.path[0]];\n fields.splice(action.path[0], 1);\n fields.splice(action.newPath[0], 0, field);\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 aiTable.fields.set(finishDraft(fields));\n aiTable.records.set(finishDraft(records));\n aiTable.views.set(finishDraft(views));\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\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 { AIFieldValueIdPath, AITableQueries, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIFieldValueIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\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, path: NumberPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\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 moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\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};","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/grid';\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 { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index]);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } 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';\n\nexport const buildRemoveFieldItem = (getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: '删除列',\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 { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\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 const maxPosition = data.length ? data[data.length - 1].positions[activeId] : -1;\n views.forEach((element) => {\n positions[element._id] = element._id === activeId ? position : maxPosition + 1;\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 position = index;\n }\n return position;\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy') {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: '表格视图 ' + index\n };\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === aiTable.activeViewId())!;\n newView = {\n ...copyView,\n _id: newId,\n name: copyView.name + '-副本'\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 {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\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.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, [addIndex + index]);\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, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\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 { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../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, AITableField, AITableFieldPropertyEditor } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n type: 'editFieldProperty',\n name: '编辑列',\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?.fieldPropertyEditor) {\n (popoverRef.componentInstance as AITableFieldPropertyEditor).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n};\n","import { AITable, AITableContextMenuItem, AITableGridSelectionService } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\n\nexport const RemoveRecordsItem: AITableContextMenuItem = {\n type: 'removeRecords',\n name: '删除行',\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.getSelectedRecordIds(aiTable);\n\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n\n aiTableGridSelectionService.clearSelection();\n }\n};\n","import { ActionName } from \"../types\";\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":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":"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"}
1
+ {"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.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/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/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/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.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/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 { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIRecordFieldIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n valuesArray.push(record['values'][field._id]);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(data: AITableViewRecords | AITableViewFields, position: number, activeViewId: string) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n\n return [index];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index] || '';\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\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(toSyncElement));\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\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\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 { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIRecordFieldIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.fields() as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIRecordFieldIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.fields() as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(\n aiTable: AIViewTable,\n sharedType: SharedType,\n event: Y.YMapEvent<unknown>\n): 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.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 { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, 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 { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\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 customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../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([toSyncElement(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_at) {\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 fields.push([toSyncElement(action.field)]);\n const path = action.path[0];\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(path, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): 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 { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\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 { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\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","import { AITable, AITableFieldType, AITableQueries, ViewOperationMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\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 = ViewOperationMap[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.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n ViewOperationMap,\n isEmpty\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\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(fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\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(fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, field, cellValue);\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, field: AITableViewField, cellValue: FieldValue) {\n return ViewOperationMap[field.type].isMeetFilter(condition, cellValue);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n conditionLogical?: AITableFilterLogical\n) {\n if (conditions.length === 1) {\n // recordValues[conditions[0].field_id] = conditions[0].value;\n } else {\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 { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType } from '@ai-table/grid';\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 { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AIViewTable\n} from '../types';\nimport { AITableViewField } from '../types/view';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\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};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../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 const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.fields() as AITableViewFields,\n action.path[0]\n );\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n const newRecord = {\n [newField._id]: getDefaultFieldValue(action.field)\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const field = fields[action.path[0]];\n fields.splice(action.path[0], 1);\n fields.splice(action.newPath[0], 0, field);\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 aiTable.fields.set(finishDraft(fields));\n aiTable.records.set(finishDraft(records));\n aiTable.views.set(finishDraft(views));\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\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 { AIRecordFieldIdPath, AITableQueries, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\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, path: NumberPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\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 moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\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};","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/grid';\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 { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index]);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } 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';\n\nexport const buildRemoveFieldItem = (getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: '删除列',\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 { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\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 const maxPosition = data.length ? data[data.length - 1].positions[activeId] : -1;\n views.forEach((element) => {\n positions[element._id] = element._id === activeId ? position : maxPosition + 1;\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 position = index;\n }\n return position;\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy') {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: '表格视图 ' + index\n };\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === aiTable.activeViewId())!;\n newView = {\n ...copyView,\n _id: newId,\n name: copyView.name + '-副本'\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 {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\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.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, [addIndex + index]);\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, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\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 { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../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, AITableField, AITableFieldPropertyEditor } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n type: 'editFieldProperty',\n name: '编辑列',\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?.fieldPropertyEditor) {\n (popoverRef.componentInstance as AITableFieldPropertyEditor).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n};\n","import { AITable, AITableContextMenuItem, AITableGridSelectionService } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\n\nexport const RemoveRecordsItem: AITableContextMenuItem = {\n type: 'removeRecords',\n name: '删除行',\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\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n\n aiTableGridSelectionService.clearSelection();\n }\n};\n","import { ActionName } from \"../types\";\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":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-table/state",
3
- "version": "0.0.29",
3
+ "version": "0.0.30",
4
4
  "peerDependencies": {
5
5
  "@ai-table/grid": "^0.0.7"
6
6
  },
package/types/action.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AIFieldValueIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';
1
+ import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';
2
2
  import { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';
3
3
  export declare enum ActionName {
4
4
  UpdateFieldValue = "update_field_value",
@@ -22,7 +22,7 @@ export declare enum ExecuteType {
22
22
  }
23
23
  export type UpdateFieldValueAction = {
24
24
  type: ActionName.UpdateFieldValue;
25
- path: AIFieldValueIdPath;
25
+ path: AIRecordFieldIdPath;
26
26
  fieldValue: any;
27
27
  newFieldValue: any;
28
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../packages/state/src/types/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../packages/state/src/types/action.ts"],"names":[],"mappings":"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"}
package/utils/build.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';
2
- export declare function buildRecordsByView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
2
+ import { AITableFieldType } from '@ai-table/grid';
3
+ export declare function buildRecordsByView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView, sortKeysMap?: Partial<Record<AITableFieldType, string>>): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
3
4
  export declare function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView): AITableViewFields;
4
5
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK3F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,kFAGvI;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,qBAEzG"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,WAAW,EACvB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,kFAI1D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,qBAEzG"}
@@ -1,5 +1,5 @@
1
- import { AITable } from '@ai-table/grid';
1
+ import { AITable, AITableFieldType } from '@ai-table/grid';
2
2
  import { AITableView, AITableViewRecords } from '../../types';
3
- export declare function getSortRecords(aiTable: AITable, records: AITableViewRecords, activeView: AITableView): (import("../../types").AITableViewRecord | import("../../types").AITableViewField)[];
4
- export declare function sortRecordsBySortInfo(aiTable: AITable, records: AITableViewRecords, activeView: AITableView): import("../../types").AITableViewRecord[];
3
+ export declare function getSortRecords(aiTable: AITable, records: AITableViewRecords, activeView: AITableView, sortKeysMap?: Partial<Record<AITableFieldType, string>>): (import("../../types").AITableViewRecord | import("../../types").AITableViewField)[];
4
+ export declare function sortRecordsBySortInfo(aiTable: AITable, records: AITableViewRecords, activeView: AITableView, sortKeysMap?: Partial<Record<AITableFieldType, string>>): import("../../types").AITableViewRecord[];
5
5
  //# sourceMappingURL=sort.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,wFASpG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,6CAqB3G"}
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAoC,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG9D,wBAAgB,cAAc,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,WAAW,EACvB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,wFAU1D;AAED,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,WAAW,EACvB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,6CAuB1D"}