@ai-table/state 0.0.49 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { AITableFieldType, isSystemField, FieldModelMap, isEmpty, AITableFilterOperation } from '@ai-table/grid';
1
+ import { AITableFieldType, isSystemField, FieldModelMap, isEmpty, AITableFilterOperation, } from '@ai-table/grid';
2
2
  import { AITableFilterLogical } from '../../types';
3
3
  export function getFilteredRecords(aiTable, records, fields, activeView) {
4
4
  const { conditions, condition_logical } = activeView.settings || {};
@@ -14,10 +14,10 @@ export function getFilteredRecords(aiTable, records, fields, activeView) {
14
14
  if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {
15
15
  return true;
16
16
  }
17
- return checkConditions(fields, record, { conditions: illegalConditions, condition_logical });
17
+ return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });
18
18
  });
19
19
  }
20
- function checkConditions(fields, record, filterConditions) {
20
+ function checkConditions(aiTable, fields, record, filterConditions) {
21
21
  if (!record) {
22
22
  return false;
23
23
  }
@@ -26,24 +26,26 @@ function checkConditions(fields, record, filterConditions) {
26
26
  }
27
27
  const { condition_logical, conditions } = filterConditions;
28
28
  if (condition_logical === AITableFilterLogical.and) {
29
- return conditions.every((condition) => doFilterOperations(fields, record, condition));
29
+ return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));
30
30
  }
31
31
  if (!condition_logical || condition_logical === AITableFilterLogical.or) {
32
- return conditions.some((condition) => doFilterOperations(fields, record, condition));
32
+ return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));
33
33
  }
34
34
  return false;
35
35
  }
36
- function doFilterOperations(fields, record, condition) {
36
+ function doFilterOperations(aiTable, fields, record, condition) {
37
37
  const { field, cellValue } = getFilterValue(fields, record, condition);
38
38
  try {
39
- return field && doFilter(condition, field, cellValue);
39
+ return field && doFilter(condition, cellValue, {
40
+ aiTable, field
41
+ });
40
42
  }
41
43
  catch (error) {
42
44
  return false;
43
45
  }
44
46
  }
45
- export function doFilter(condition, field, cellValue) {
46
- return FieldModelMap[field.type].isMeetFilter(condition, cellValue);
47
+ export function doFilter(condition, cellValue, options) {
48
+ return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);
47
49
  }
48
50
  export function getDefaultRecordDataByFilter(recordValues, conditions, fields, conditionLogical) {
49
51
  const fieldMap = new Map(fields.map((field) => [field._id, field]));
@@ -103,4 +105,4 @@ function getFilterValue(fields, record, condition) {
103
105
  cellValue
104
106
  };
105
107
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL3JlY29yZC9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUloQixhQUFhLEVBRWIsYUFBYSxFQUNiLE9BQU8sRUFDUCxzQkFBc0IsRUFFekIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUgsb0JBQW9CLEVBTXZCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFvQixFQUFFLE9BQTJCLEVBQUUsTUFBeUIsRUFBRSxVQUF1QjtJQUNwSSxNQUFNLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDcEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDdEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDN0IsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FB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Q0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEgsU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELE9BQU87UUFDSCxLQUFLO1FBQ0wsU0FBUztLQUNaLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBSVRhYmxlRmllbGRUeXBlLFxuICAgIEFJVGFibGVGaWx0ZXJDb25kaXRpb24sXG4gICAgQUlUYWJsZVJlY29yZCxcbiAgICBGaWVsZFZhbHVlLFxuICAgIGlzU3lzdGVtRmllbGQsXG4gICAgU3lzdGVtRmllbGRUeXBlcyxcbiAgICBGaWVsZE1vZGVsTWFwLFxuICAgIGlzRW1wdHksXG4gICAgQUlUYWJsZUZpbHRlck9wZXJhdGlvbixcbiAgICBTZWxlY3RTZXR0aW5nc1xufSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVGaWx0ZXJDb25kaXRpb25zLFxuICAgIEFJVGFibGVGaWx0ZXJMb2dpY2FsLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIEFJVmlld1RhYmxlXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlcmVkUmVjb3JkcyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIGNvbnN0IHsgY29uZGl0aW9ucywgY29uZGl0aW9uX2xvZ2ljYWwgfSA9IGFjdGl2ZVZpZXcuc2V0dGluZ3MgfHwge307XG4gICAgaWYgKCFjb25kaXRpb25zKSB7XG4gICAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH1cbiAgICBjb25zdCBpbGxlZ2FsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm9wZXJhdGlvbikgfHwgW107XG4gICAgaWYgKCFpbGxlZ2FsQ29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZHNXaWxsSGlkZGVuID0gYWlUYWJsZS5yZWNvcmRzV2lsbEhpZGRlbigpO1xuICAgIHJldHVybiByZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7XG4gICAgICAgIGlmIChyZWNvcmRzV2lsbEhpZGRlbiAmJiByZWNvcmRzV2lsbEhpZGRlbi5sZW5ndGggJiYgcmVjb3Jkc1dpbGxIaWRkZW4uaW5jbHVkZXMocmVjb3JkLl9pZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGVja0NvbmRpdGlvbnMoZmllbGRzLCByZWNvcmQsIHsgY29uZGl0aW9uczogaWxsZWdhbENvbmRpdGlvbnMsIGNvbmRpdGlvbl9sb2dpY2FsIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0NvbmRpdGlvbnMoZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgcmVjb3JkOiBBSVRhYmxlUmVjb3JkLCBmaWx0ZXJDb25kaXRpb25zOiBBSVRhYmxlRmlsdGVyQ29uZGl0aW9ucykge1xuICAgIGlmICghcmVjb3JkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFmaWx0ZXJDb25kaXRpb25zPy5jb25kaXRpb25zKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB7IGNvbmRpdGlvbl9sb2dpY2FsLCBjb25kaXRpb25zIH0gPSBmaWx0ZXJDb25kaXRpb25zO1xuICAgIGlmIChjb25kaXRpb25fbG9naWNhbCA9PT0gQUlUYWJsZUZpbHRlckxvZ2ljYWwuYW5kKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb25zLmV2ZXJ5KChjb25kaXRpb24pID0+IGRvRmlsdGVyT3BlcmF0aW9ucyhmaWVsZHMsIHJlY29yZCwgY29uZGl0aW9uKSk7XG4gICAgfVxuICAgIGlmICghY29uZGl0aW9uX2xvZ2ljYWwgfHwgY29uZGl0aW9uX2xvZ2ljYWwgPT09IEFJVGFibGVGaWx0ZXJMb2dpY2FsLm9yKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb25zLnNvbWUoKGNvbmRpdGlvbikgPT4gZG9GaWx0ZXJPcGVyYXRpb25zKGZpZWxkcywgcmVjb3JkLCBjb25kaXRpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkb0ZpbHRlck9wZXJhdGlvbnMoZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgcmVjb3JkOiBBSVRhYmxlUmVjb3JkLCBjb25kaXRpb246IEFJVGFibGVGaWx0ZXJDb25kaXRpb24pIHtcbiAgICBjb25zdCB7IGZpZWxkLCBjZWxsVmFsdWUgfSA9IGdldEZpbHRlclZhbHVlKGZpZWxkcywgcmVjb3JkLCBjb25kaXRpb24pO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkICYmIGRvRmlsdGVyKGNvbmRpdGlvbiwgZmllbGQsIGNlbGxWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvRmlsdGVyKGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbiwgZmllbGQ6IEFJVGFibGVWaWV3RmllbGQsIGNlbGxWYWx1ZTogRmllbGRWYWx1ZSkge1xuICAgIHJldHVybiBGaWVsZE1vZGVsTWFwW2ZpZWxkLnR5cGVdLmlzTWVldEZpbHRlcihjb25kaXRpb24sIGNlbGxWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0UmVjb3JkRGF0YUJ5RmlsdGVyKFxuICAgIHJlY29yZFZhbHVlczogUmVjb3JkPHN0cmluZywgRmllbGRWYWx1ZT4sXG4gICAgY29uZGl0aW9uczogQUlUYWJsZUZpbHRlckNvbmRpdGlvbltdLFxuICAgIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgY29uZGl0aW9uTG9naWNhbD86IEFJVGFibGVGaWx0ZXJMb2dpY2FsXG4pIHtcbiAgICBjb25zdCBmaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBSVRhYmxlVmlld0ZpZWxkPihmaWVsZHMubWFwKChmaWVsZCkgPT4gW2ZpZWxkLl9pZCwgZmllbGRdKSk7XG4gICAgY29uc3QgY29uZGl0aW9uRmllbGRDb3VudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJZCA9IGNvbmRpdGlvbi5maWVsZF9pZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0bXBGaWVsZENvdW50ID0gY29uZGl0aW9uRmllbGRDb3VudE1hcC5nZXQoZmllbGRJZCkgfHwgMDtcbiAgICAgICAgY29uZGl0aW9uRmllbGRDb3VudE1hcC5zZXQoZmllbGRJZCwgdG1wRmllbGRDb3VudCArIDEpO1xuICAgIH0pO1xuICAgIGlmIChjb25kaXRpb25Mb2dpY2FsID09PSBBSVRhYmxlRmlsdGVyTG9naWNhbC5hbmQpIHtcbiAgICAgICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb25GaWVsZENvdW50TWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkTWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgKCEoZmllbGQuc2V0dGluZ3MgYXMgU2VsZWN0U2V0dGluZ3MpPy5pc19tdWx0aXBsZSAmJiBjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmVxKSB8fFxuICAgICAgICAgICAgICAgICAgICAoZmllbGQ/LnNldHRpbmdzIGFzIFNlbGVjdFNldHRpbmdzKT8uaXNfbXVsdGlwbGU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBbQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5lcSwgQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5pbl0uaW5jbHVkZXMoY29uZGl0aW9uLm9wZXJhdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUuc2VsZWN0LCBBSVRhYmxlRmllbGRUeXBlLm1lbWJlcl0uaW5jbHVkZXMoZmllbGQ/LnR5cGUpICYmXG4gICAgICAgICAgICAgICAgICAgIGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFZhbHVlc1tjb25kaXRpb24uZmllbGRfaWRdID0gY29uZGl0aW9uLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gQUlUYWJsZUZpZWxkVHlwZS5kYXRlICYmIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNvbmRpdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmNvbnRhaW4gJiYgQUlUYWJsZUZpZWxkVHlwZS50ZXh0ID09PSBmaWVsZD8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUucmF0ZSwgQUlUYWJsZUZpZWxkVHlwZS5udW1iZXIsIEFJVGFibGVGaWVsZFR5cGUucHJvZ3Jlc3NdLmluY2x1ZGVzKGZpZWxkPy50eXBlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkVmFsdWVzO1xufVxuXG5mdW5jdGlvbiBnZXRGaWx0ZXJWYWx1ZShmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbikge1xuICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBjb25kaXRpb24uZmllbGRfaWQpO1xuICAgIGxldCBjZWxsVmFsdWUgPSBudWxsO1xuICAgIGlmIChmaWVsZCAmJiBpc1N5c3RlbUZpZWxkKGZpZWxkKSkge1xuICAgICAgICBpZiAoW0FJVGFibGVGaWVsZFR5cGUuY3JlYXRlZEF0LCBBSVRhYmxlRmllbGRUeXBlLnVwZGF0ZWRBdF0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgIGNlbGxWYWx1ZSA9IHsgdGltZXN0YW1wOiByZWNvcmRbZmllbGQudHlwZSBhcyBTeXN0ZW1GaWVsZFR5cGVzXSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbFZhbHVlID0gcmVjb3JkW2ZpZWxkLnR5cGUgYXMgU3lzdGVtRmllbGRUeXBlc107XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjZWxsVmFsdWUgPSByZWNvcmQudmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkICYmIFtBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRCeSwgQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQnksIEFJVGFibGVGaWVsZFR5cGUubWVtYmVyXS5pbmNsdWRlcyhmaWVsZC50eXBlKSkge1xuICAgICAgICBjZWxsVmFsdWUgPSBBcnJheS5pc0FycmF5KGNlbGxWYWx1ZSkgPyBjZWxsVmFsdWUgOiBpc0VtcHR5KGNlbGxWYWx1ZSkgPyBbXSA6IFtjZWxsVmFsdWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICBjZWxsVmFsdWVcbiAgICB9O1xufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL3JlY29yZC9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUloQixhQUFhLEVBRWIsYUFBYSxFQUNiLE9BQU8sRUFDUCxzQkFBc0IsR0FJekIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUgsb0JBQW9CLEVBTXZCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFvQixFQUFFLE9BQTJCLEVBQUUsTUFBeUIsRUFBRSxVQUF1QjtJQUNwSSxNQUFNLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDcEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDdEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDN0IsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FB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Q0FBQyxLQUFLLENBQUMsSUFBd0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsSCxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsT0FBTztRQUNILEtBQUs7UUFDTCxTQUFTO0tBQ1osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFJVGFibGVGaWVsZFR5cGUsXG4gICAgQUlUYWJsZUZpbHRlckNvbmRpdGlvbixcbiAgICBBSVRhYmxlUmVjb3JkLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgaXNTeXN0ZW1GaWVsZCxcbiAgICBTeXN0ZW1GaWVsZFR5cGVzLFxuICAgIEZpZWxkTW9kZWxNYXAsXG4gICAgaXNFbXB0eSxcbiAgICBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLFxuICAgIFNlbGVjdFNldHRpbmdzLFxuICAgIEFJVGFibGUsXG4gICAgQUlUYWJsZUZpZWxkLFxufSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVGaWx0ZXJDb25kaXRpb25zLFxuICAgIEFJVGFibGVGaWx0ZXJMb2dpY2FsLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIEFJVmlld1RhYmxlXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlcmVkUmVjb3JkcyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIGNvbnN0IHsgY29uZGl0aW9ucywgY29uZGl0aW9uX2xvZ2ljYWwgfSA9IGFjdGl2ZVZpZXcuc2V0dGluZ3MgfHwge307XG4gICAgaWYgKCFjb25kaXRpb25zKSB7XG4gICAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH1cbiAgICBjb25zdCBpbGxlZ2FsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm9wZXJhdGlvbikgfHwgW107XG4gICAgaWYgKCFpbGxlZ2FsQ29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZHNXaWxsSGlkZGVuID0gYWlUYWJsZS5yZWNvcmRzV2lsbEhpZGRlbigpO1xuICAgIHJldHVybiByZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7XG4gICAgICAgIGlmIChyZWNvcmRzV2lsbEhpZGRlbiAmJiByZWNvcmRzV2lsbEhpZGRlbi5sZW5ndGggJiYgcmVjb3Jkc1dpbGxIaWRkZW4uaW5jbHVkZXMocmVjb3JkLl9pZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGVja0NvbmRpdGlvbnMoYWlUYWJsZSwgZmllbGRzLCByZWNvcmQsIHsgY29uZGl0aW9uczogaWxsZWdhbENvbmRpdGlvbnMsIGNvbmRpdGlvbl9sb2dpY2FsIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0NvbmRpdGlvbnMoYWlUYWJsZTogQUlWaWV3VGFibGUsIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsIHJlY29yZDogQUlUYWJsZVJlY29yZCwgZmlsdGVyQ29uZGl0aW9uczogQUlUYWJsZUZpbHRlckNvbmRpdGlvbnMpIHtcbiAgICBpZiAoIXJlY29yZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghZmlsdGVyQ29uZGl0aW9ucz8uY29uZGl0aW9ucykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgeyBjb25kaXRpb25fbG9naWNhbCwgY29uZGl0aW9ucyB9ID0gZmlsdGVyQ29uZGl0aW9ucztcbiAgICBpZiAoY29uZGl0aW9uX2xvZ2ljYWwgPT09IEFJVGFibGVGaWx0ZXJMb2dpY2FsLmFuZCkge1xuICAgICAgICByZXR1cm4gY29uZGl0aW9ucy5ldmVyeSgoY29uZGl0aW9uKSA9PiBkb0ZpbHRlck9wZXJhdGlvbnMoYWlUYWJsZSwgZmllbGRzLCByZWNvcmQsIGNvbmRpdGlvbikpO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbl9sb2dpY2FsIHx8IGNvbmRpdGlvbl9sb2dpY2FsID09PSBBSVRhYmxlRmlsdGVyTG9naWNhbC5vcikge1xuICAgICAgICByZXR1cm4gY29uZGl0aW9ucy5zb21lKChjb25kaXRpb24pID0+IGRvRmlsdGVyT3BlcmF0aW9ucyhhaVRhYmxlLCBmaWVsZHMsIHJlY29yZCwgY29uZGl0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZG9GaWx0ZXJPcGVyYXRpb25zKGFpVGFibGU6IEFJVmlld1RhYmxlLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbikge1xuICAgIGNvbnN0IHsgZmllbGQsIGNlbGxWYWx1ZSB9ID0gZ2V0RmlsdGVyVmFsdWUoZmllbGRzLCByZWNvcmQsIGNvbmRpdGlvbik7XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZmllbGQgJiYgZG9GaWx0ZXIoY29uZGl0aW9uLCBjZWxsVmFsdWUsIHtcbiAgICAgICAgICAgIGFpVGFibGUsIGZpZWxkXG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb0ZpbHRlcihjb25kaXRpb246IEFJVGFibGVGaWx0ZXJDb25kaXRpb24sIGNlbGxWYWx1ZTogRmllbGRWYWx1ZSwgb3B0aW9uczoge1xuICAgIGFpVGFibGU6IEFJVGFibGU7XG4gICAgZmllbGQ6IEFJVGFibGVGaWVsZCxcbn0pIHtcbiAgICByZXR1cm4gRmllbGRNb2RlbE1hcFtvcHRpb25zLmZpZWxkLnR5cGVdLmlzTWVldEZpbHRlcihjb25kaXRpb24sIGNlbGxWYWx1ZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0UmVjb3JkRGF0YUJ5RmlsdGVyKFxuICAgIHJlY29yZFZhbHVlczogUmVjb3JkPHN0cmluZywgRmllbGRWYWx1ZT4sXG4gICAgY29uZGl0aW9uczogQUlUYWJsZUZpbHRlckNvbmRpdGlvbltdLFxuICAgIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgY29uZGl0aW9uTG9naWNhbD86IEFJVGFibGVGaWx0ZXJMb2dpY2FsXG4pIHtcbiAgICBjb25zdCBmaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBSVRhYmxlVmlld0ZpZWxkPihmaWVsZHMubWFwKChmaWVsZCkgPT4gW2ZpZWxkLl9pZCwgZmllbGRdKSk7XG4gICAgY29uc3QgY29uZGl0aW9uRmllbGRDb3VudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJZCA9IGNvbmRpdGlvbi5maWVsZF9pZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0bXBGaWVsZENvdW50ID0gY29uZGl0aW9uRmllbGRDb3VudE1hcC5nZXQoZmllbGRJZCkgfHwgMDtcbiAgICAgICAgY29uZGl0aW9uRmllbGRDb3VudE1hcC5zZXQoZmllbGRJZCwgdG1wRmllbGRDb3VudCArIDEpO1xuICAgIH0pO1xuICAgIGlmIChjb25kaXRpb25Mb2dpY2FsID09PSBBSVRhYmxlRmlsdGVyTG9naWNhbC5hbmQpIHtcbiAgICAgICAgY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb25GaWVsZENvdW50TWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkTWFwLmdldChjb25kaXRpb24uZmllbGRfaWQudG9TdHJpbmcoKSkhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgKCEoZmllbGQuc2V0dGluZ3MgYXMgU2VsZWN0U2V0dGluZ3MpPy5pc19tdWx0aXBsZSAmJiBjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmVxKSB8fFxuICAgICAgICAgICAgICAgICAgICAoZmllbGQ/LnNldHRpbmdzIGFzIFNlbGVjdFNldHRpbmdzKT8uaXNfbXVsdGlwbGU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBbQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5lcSwgQUlUYWJsZUZpbHRlck9wZXJhdGlvbi5pbl0uaW5jbHVkZXMoY29uZGl0aW9uLm9wZXJhdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUuc2VsZWN0LCBBSVRhYmxlRmllbGRUeXBlLm1lbWJlcl0uaW5jbHVkZXMoZmllbGQ/LnR5cGUpICYmXG4gICAgICAgICAgICAgICAgICAgIGNhbk11bHRpcGxlT3BlcmF0aW9uQ29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFZhbHVlc1tjb25kaXRpb24uZmllbGRfaWRdID0gY29uZGl0aW9uLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gQUlUYWJsZUZpZWxkVHlwZS5kYXRlICYmIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNvbmRpdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24ub3BlcmF0aW9uID09PSBBSVRhYmxlRmlsdGVyT3BlcmF0aW9uLmNvbnRhaW4gJiYgQUlUYWJsZUZpZWxkVHlwZS50ZXh0ID09PSBmaWVsZD8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5vcGVyYXRpb24gPT09IEFJVGFibGVGaWx0ZXJPcGVyYXRpb24uZXEgJiZcbiAgICAgICAgICAgICAgICAgICAgW0FJVGFibGVGaWVsZFR5cGUucmF0ZSwgQUlUYWJsZUZpZWxkVHlwZS5udW1iZXIsIEFJVGFibGVGaWVsZFR5cGUucHJvZ3Jlc3NdLmluY2x1ZGVzKGZpZWxkPy50eXBlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRWYWx1ZXNbY29uZGl0aW9uLmZpZWxkX2lkXSA9IGNvbmRpdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkVmFsdWVzO1xufVxuXG5mdW5jdGlvbiBnZXRGaWx0ZXJWYWx1ZShmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIGNvbmRpdGlvbjogQUlUYWJsZUZpbHRlckNvbmRpdGlvbikge1xuICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBjb25kaXRpb24uZmllbGRfaWQpO1xuICAgIGxldCBjZWxsVmFsdWUgPSBudWxsO1xuICAgIGlmIChmaWVsZCAmJiBpc1N5c3RlbUZpZWxkKGZpZWxkKSkge1xuICAgICAgICBpZiAoW0FJVGFibGVGaWVsZFR5cGUuY3JlYXRlZEF0LCBBSVRhYmxlRmllbGRUeXBlLnVwZGF0ZWRBdF0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgIGNlbGxWYWx1ZSA9IHsgdGltZXN0YW1wOiByZWNvcmRbZmllbGQudHlwZSBhcyBTeXN0ZW1GaWVsZFR5cGVzXSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbFZhbHVlID0gcmVjb3JkW2ZpZWxkLnR5cGUgYXMgU3lzdGVtRmllbGRUeXBlc107XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjZWxsVmFsdWUgPSByZWNvcmQudmFsdWVzW2NvbmRpdGlvbi5maWVsZF9pZF07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkICYmIFtBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRCeSwgQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQnksIEFJVGFibGVGaWVsZFR5cGUubWVtYmVyXS5pbmNsdWRlcyhmaWVsZC50eXBlKSkge1xuICAgICAgICBjZWxsVmFsdWUgPSBBcnJheS5pc0FycmF5KGNlbGxWYWx1ZSkgPyBjZWxsVmFsdWUgOiBpc0VtcHR5KGNlbGxWYWx1ZSkgPyBbXSA6IFtjZWxsVmFsdWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICBjZWxsVmFsdWVcbiAgICB9O1xufVxuIl19
@@ -24,7 +24,10 @@ export function sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap)
24
24
  const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);
25
25
  const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);
26
26
  const references = aiTable.context.references();
27
- const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);
27
+ const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {
28
+ aiTable,
29
+ field
30
+ });
28
31
  return res * rule.direction;
29
32
  }, 0);
30
33
  });
@@ -32,4 +35,4 @@ export function sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap)
32
35
  }
33
36
  return shallowRows;
34
37
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9yZWNvcmQvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFL0MsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsT0FBZ0IsRUFDaEIsT0FBMkIsRUFDM0IsVUFBdUIsRUFDdkIsV0FBdUQ7SUFFdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5RCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ3BELElBQUksWUFBWSxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNoQyxPQUFPLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFnQixFQUNoQixPQUEyQixFQUMzQixVQUF1QixFQUN2QixXQUF1RDtJQUV2RCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE9BQU8sVUFBVSxDQUFDLFFBQVMsQ0FBQyxLQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTFDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDcEYsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUZpZWxkVHlwZSwgQUlUYWJsZVF1ZXJpZXMsIEZpZWxkTW9kZWxNYXAgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlVmlldywgQUlUYWJsZVZpZXdSZWNvcmRzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgc29ydEJ5Vmlld1Bvc2l0aW9uIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRSZWNvcmRzKFxuICAgIGFpVGFibGU6IEFJVGFibGUsXG4gICAgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3LFxuICAgIHNvcnRLZXlzTWFwPzogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgc3RyaW5nPj5cbikge1xuICAgIGlmICghYWN0aXZlVmlldz8uc2V0dGluZ3MgfHwgIWFjdGl2ZVZpZXcuc2V0dGluZ3Muc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkcztcbiAgICB9XG4gICAgY29uc3QgeyBpc19rZWVwX3NvcnQsIHNvcnRzIH0gPSBhY3RpdmVWaWV3LnNldHRpbmdzO1xuICAgIGlmIChpc19rZWVwX3NvcnQgJiYgc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc29ydFJlY29yZHNCeVNvcnRJbmZvKGFpVGFibGUsIHJlY29yZHMsIGFjdGl2ZVZpZXcsIHNvcnRLZXlzTWFwKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRCeVZpZXdQb3NpdGlvbihyZWNvcmRzLCBhY3RpdmVWaWV3KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZWNvcmRzQnlTb3J0SW5mbyhcbiAgICBhaVRhYmxlOiBBSVRhYmxlLFxuICAgIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcyxcbiAgICBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldyxcbiAgICBzb3J0S2V5c01hcD86IFBhcnRpYWw8UmVjb3JkPEFJVGFibGVGaWVsZFR5cGUsIHN0cmluZz4+XG4pIHtcbiAgICBjb25zdCBzaGFsbG93Um93cyA9IFsuLi5yZWNvcmRzXTtcbiAgICBpZiAoYWN0aXZlVmlldy5zZXR0aW5ncz8uc29ydHM/Lmxlbmd0aCkge1xuICAgICAgICBzaGFsbG93Um93cy5zb3J0KChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aXZlVmlldy5zZXR0aW5ncyEuc29ydHMhLnJlZHVjZSgoYWNjLCBydWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBhaVRhYmxlLmZpZWxkc01hcCgpW3J1bGUuc29ydF9ieV07XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZCB8fCBhY2MgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRNZXRob2QgPSBGaWVsZE1vZGVsTWFwW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRLZXkgPSBzb3J0S2V5c01hcD8uW2ZpZWxkLnR5cGVdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFZhbHVlMSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3ByZXYuX2lkLCBmaWVsZC5faWRdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUyID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBbY3VycmVudC5faWQsIGZpZWxkLl9pZF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBhaVRhYmxlLmNvbnRleHQhLnJlZmVyZW5jZXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBmaWVsZE1ldGhvZC5jb21wYXJlKGNlbGxWYWx1ZTEsIGNlbGxWYWx1ZTIsIGZpZWxkLCByZWZlcmVuY2VzLCBzb3J0S2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzICogcnVsZS5kaXJlY3Rpb247XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzaGFsbG93Um93cztcbiAgICB9XG4gICAgcmV0dXJuIHNoYWxsb3dSb3dzO1xufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9yZWNvcmQvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFL0MsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsT0FBZ0IsRUFDaEIsT0FBMkIsRUFDM0IsVUFBdUIsRUFDdkIsV0FBdUQ7SUFFdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5RCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ3BELElBQUksWUFBWSxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNoQyxPQUFPLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFnQixFQUNoQixPQUEyQixFQUMzQixVQUF1QixFQUN2QixXQUF1RDtJQUV2RCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE9BQU8sVUFBVSxDQUFDLFFBQVMsQ0FBQyxLQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTFDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtvQkFDekUsT0FBTztvQkFDUCxLQUFLO2lCQUNSLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVRhYmxlLCBBSVRhYmxlRmllbGRUeXBlLCBBSVRhYmxlUXVlcmllcywgRmllbGRNb2RlbE1hcCB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IEFJVGFibGVWaWV3LCBBSVRhYmxlVmlld1JlY29yZHMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBzb3J0QnlWaWV3UG9zaXRpb24gfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29ydFJlY29yZHMoXG4gICAgYWlUYWJsZTogQUlUYWJsZSxcbiAgICByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgYWN0aXZlVmlldzogQUlUYWJsZVZpZXcsXG4gICAgc29ydEtleXNNYXA/OiBQYXJ0aWFsPFJlY29yZDxBSVRhYmxlRmllbGRUeXBlLCBzdHJpbmc+PlxuKSB7XG4gICAgaWYgKCFhY3RpdmVWaWV3Py5zZXR0aW5ncyB8fCAhYWN0aXZlVmlldy5zZXR0aW5ncy5zb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH1cbiAgICBjb25zdCB7IGlzX2tlZXBfc29ydCwgc29ydHMgfSA9IGFjdGl2ZVZpZXcuc2V0dGluZ3M7XG4gICAgaWYgKGlzX2tlZXBfc29ydCAmJiBzb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzb3J0UmVjb3Jkc0J5U29ydEluZm8oYWlUYWJsZSwgcmVjb3JkcywgYWN0aXZlVmlldywgc29ydEtleXNNYXApO1xuICAgIH1cbiAgICByZXR1cm4gc29ydEJ5Vmlld1Bvc2l0aW9uKHJlY29yZHMsIGFjdGl2ZVZpZXcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydFJlY29yZHNCeVNvcnRJbmZvKFxuICAgIGFpVGFibGU6IEFJVGFibGUsXG4gICAgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIGFjdGl2ZVZpZXc6IEFJVGFibGVWaWV3LFxuICAgIHNvcnRLZXlzTWFwPzogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgc3RyaW5nPj5cbikge1xuICAgIGNvbnN0IHNoYWxsb3dSb3dzID0gWy4uLnJlY29yZHNdO1xuICAgIGlmIChhY3RpdmVWaWV3LnNldHRpbmdzPy5zb3J0cz8ubGVuZ3RoKSB7XG4gICAgICAgIHNoYWxsb3dSb3dzLnNvcnQoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmVWaWV3LnNldHRpbmdzIS5zb3J0cyEucmVkdWNlKChhY2MsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGFpVGFibGUuZmllbGRzTWFwKClbcnVsZS5zb3J0X2J5XTtcbiAgICAgICAgICAgICAgICBpZiAoIWZpZWxkIHx8IGFjYyAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE1ldGhvZCA9IEZpZWxkTW9kZWxNYXBbZmllbGQudHlwZV07XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydEtleSA9IHNvcnRLZXlzTWFwPy5bZmllbGQudHlwZV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUxID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBbcHJldi5faWQsIGZpZWxkLl9pZF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZTIgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIFtjdXJyZW50Ll9pZCwgZmllbGQuX2lkXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IGFpVGFibGUuY29udGV4dCEucmVmZXJlbmNlcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZpZWxkTWV0aG9kLmNvbXBhcmUoY2VsbFZhbHVlMSwgY2VsbFZhbHVlMiwgcmVmZXJlbmNlcywgc29ydEtleSwge1xuICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMgKiBydWxlLmRpcmVjdGlvbjtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNoYWxsb3dSb3dzO1xuICAgIH1cbiAgICByZXR1cm4gc2hhbGxvd1Jvd3M7XG59XG4iXX0=
@@ -777,7 +777,10 @@ function sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap) {
777
777
  const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);
778
778
  const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);
779
779
  const references = aiTable.context.references();
780
- const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);
780
+ const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {
781
+ aiTable,
782
+ field
783
+ });
781
784
  return res * rule.direction;
782
785
  }, 0);
783
786
  });
@@ -800,10 +803,10 @@ function getFilteredRecords(aiTable, records, fields, activeView) {
800
803
  if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {
801
804
  return true;
802
805
  }
803
- return checkConditions(fields, record, { conditions: illegalConditions, condition_logical });
806
+ return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });
804
807
  });
805
808
  }
806
- function checkConditions(fields, record, filterConditions) {
809
+ function checkConditions(aiTable, fields, record, filterConditions) {
807
810
  if (!record) {
808
811
  return false;
809
812
  }
@@ -812,24 +815,26 @@ function checkConditions(fields, record, filterConditions) {
812
815
  }
813
816
  const { condition_logical, conditions } = filterConditions;
814
817
  if (condition_logical === AITableFilterLogical.and) {
815
- return conditions.every((condition) => doFilterOperations(fields, record, condition));
818
+ return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));
816
819
  }
817
820
  if (!condition_logical || condition_logical === AITableFilterLogical.or) {
818
- return conditions.some((condition) => doFilterOperations(fields, record, condition));
821
+ return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));
819
822
  }
820
823
  return false;
821
824
  }
822
- function doFilterOperations(fields, record, condition) {
825
+ function doFilterOperations(aiTable, fields, record, condition) {
823
826
  const { field, cellValue } = getFilterValue(fields, record, condition);
824
827
  try {
825
- return field && doFilter(condition, field, cellValue);
828
+ return field && doFilter(condition, cellValue, {
829
+ aiTable, field
830
+ });
826
831
  }
827
832
  catch (error) {
828
833
  return false;
829
834
  }
830
835
  }
831
- function doFilter(condition, field, cellValue) {
832
- return FieldModelMap[field.type].isMeetFilter(condition, cellValue);
836
+ function doFilter(condition, cellValue, options) {
837
+ return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);
833
838
  }
834
839
  function getDefaultRecordDataByFilter(recordValues, conditions, fields, conditionLogical) {
835
840
  const fieldMap = new Map(fields.map((field) => [field._id, field]));
@@ -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/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/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/utils/field/move-fields.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 widths?: 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 originId?: string;\n isCopy?: boolean;\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 | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, 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 let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\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(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\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 return [index + indexOffset];\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 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.gridData().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, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\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>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\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(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { 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_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\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(insertIndex, [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 { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } 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 = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, 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 FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings\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 FieldModelMap[field.type].isMeetFilter(condition, cellValue);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { 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 { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath > 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\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 if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\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.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.gridData().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], options.originId, options.isCopy);\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';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { 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';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\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, fields, 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 { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { 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 { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../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/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/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/utils/field/move-fields.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 widths?: 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 originId?: string;\n isCopy?: boolean;\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 | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, 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 let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\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(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\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 return [index + indexOffset];\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 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.gridData().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, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\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>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\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(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { 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_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\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(insertIndex, [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 { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } 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 = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings,\n AITable,\n AITableField,\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(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(aiTable: AIViewTable, 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(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, cellValue, {\n aiTable, field\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, cellValue: FieldValue, options: {\n aiTable: AITable;\n field: AITableField,\n}) {\n return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { 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 { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath > 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\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 if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\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.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.gridData().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], options.originId, options.isCopy);\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';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { 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';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\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, fields, 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 { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { 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 { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../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.49",
3
+ "version": "0.0.50",
4
4
  "peerDependencies": {
5
5
  "@ai-table/grid": "^0.0.7"
6
6
  },
@@ -1,6 +1,9 @@
1
- import { AITableFilterCondition, FieldValue } from '@ai-table/grid';
2
- import { AITableFilterLogical, AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';
1
+ import { AITableFilterCondition, FieldValue, AITable, AITableField } from '@ai-table/grid';
2
+ import { AITableFilterLogical, AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';
3
3
  export declare function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView): AITableViewRecords;
4
- export declare function doFilter(condition: AITableFilterCondition, field: AITableViewField, cellValue: FieldValue): boolean;
4
+ export declare function doFilter(condition: AITableFilterCondition, cellValue: FieldValue, options: {
5
+ aiTable: AITable;
6
+ field: AITableField;
7
+ }): boolean;
5
8
  export declare function getDefaultRecordDataByFilter(recordValues: Record<string, FieldValue>, conditions: AITableFilterCondition[], fields: AITableViewFields, conditionLogical?: AITableFilterLogical): Record<string, any>;
6
9
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,sBAAsB,EAEtB,UAAU,EAOb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEH,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,sBAgBvI;AA6BD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,sBAAsB,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,WAEzG;AAED,wBAAgB,4BAA4B,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACxC,UAAU,EAAE,sBAAsB,EAAE,EACpC,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,CAAC,EAAE,oBAAoB,uBA4C1C"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,sBAAsB,EAEtB,UAAU,EAOV,OAAO,EACP,YAAY,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEH,oBAAoB,EACpB,WAAW,EAEX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,sBAgBvI;AA+BD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;IACxF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;CACvB,WAEA;AAED,wBAAgB,4BAA4B,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACxC,UAAU,EAAE,sBAAsB,EAAE,EACpC,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,CAAC,EAAE,oBAAoB,uBA4C1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAiC,MAAM,gBAAgB,CAAC;AAC1F,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"}
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAiC,MAAM,gBAAgB,CAAC;AAC1F,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,6CA0B1D"}