@ai-table/state 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/ai-table-state.d.ts.map +1 -0
  2. package/esm2022/ai-table-state.mjs +5 -0
  3. package/esm2022/index.mjs +2 -0
  4. package/esm2022/public-api.mjs +6 -0
  5. package/esm2022/shared/index.mjs +5 -0
  6. package/esm2022/shared/to-table/array-event.mjs +136 -0
  7. package/esm2022/shared/to-table/index.mjs +29 -0
  8. package/esm2022/shared/to-table/map-event.mjs +50 -0
  9. package/esm2022/shared/to-yjs/add-node.mjs +30 -0
  10. package/esm2022/shared/to-yjs/index.mjs +30 -0
  11. package/esm2022/shared/to-yjs/remove-node.mjs +40 -0
  12. package/esm2022/shared/to-yjs/set-node.mjs +33 -0
  13. package/esm2022/shared/to-yjs/update-field-value.mjs +17 -0
  14. package/esm2022/shared/utils/index.mjs +4 -0
  15. package/esm2022/shared/utils/init-shared.mjs +48 -0
  16. package/esm2022/shared/utils/init-table.mjs +13 -0
  17. package/esm2022/shared/utils/translate.mjs +62 -0
  18. package/esm2022/shared/yjs-table.mjs +39 -0
  19. package/esm2022/types/index.mjs +3 -0
  20. package/esm2022/types/shared.mjs +2 -0
  21. package/esm2022/types/view.mjs +39 -0
  22. package/esm2022/view/action/general.mjs +53 -0
  23. package/esm2022/view/action/index.mjs +3 -0
  24. package/esm2022/view/action/view.mjs +47 -0
  25. package/esm2022/view/constants/view.mjs +3 -0
  26. package/esm2022/view/plugins/view.plugin.mjs +25 -0
  27. package/fesm2022/ai-table-state.mjs +668 -0
  28. package/fesm2022/ai-table-state.mjs.map +1 -0
  29. package/index.d.ts +2 -0
  30. package/index.d.ts.map +1 -0
  31. package/package.json +24 -0
  32. package/public-api.d.ts +6 -0
  33. package/public-api.d.ts.map +1 -0
  34. package/shared/index.d.ts +5 -0
  35. package/shared/index.d.ts.map +1 -0
  36. package/shared/to-table/array-event.d.ts +7 -0
  37. package/shared/to-table/array-event.d.ts.map +1 -0
  38. package/shared/to-table/index.d.ts +6 -0
  39. package/shared/to-table/index.d.ts.map +1 -0
  40. package/shared/to-table/map-event.d.ts +4 -0
  41. package/shared/to-table/map-event.d.ts.map +1 -0
  42. package/shared/to-yjs/add-node.d.ts +4 -0
  43. package/shared/to-yjs/add-node.d.ts.map +1 -0
  44. package/shared/to-yjs/index.d.ts +11 -0
  45. package/shared/to-yjs/index.d.ts.map +1 -0
  46. package/shared/to-yjs/remove-node.d.ts +4 -0
  47. package/shared/to-yjs/remove-node.d.ts.map +1 -0
  48. package/shared/to-yjs/set-node.d.ts +4 -0
  49. package/shared/to-yjs/set-node.d.ts.map +1 -0
  50. package/shared/to-yjs/update-field-value.d.ts +4 -0
  51. package/shared/to-yjs/update-field-value.d.ts.map +1 -0
  52. package/shared/utils/index.d.ts +4 -0
  53. package/shared/utils/index.d.ts.map +1 -0
  54. package/shared/utils/init-shared.d.ts +16 -0
  55. package/shared/utils/init-shared.d.ts.map +1 -0
  56. package/shared/utils/init-table.d.ts +7 -0
  57. package/shared/utils/init-table.d.ts.map +1 -0
  58. package/shared/utils/translate.d.ts +15 -0
  59. package/shared/utils/translate.d.ts.map +1 -0
  60. package/shared/yjs-table.d.ts +14 -0
  61. package/shared/yjs-table.d.ts.map +1 -0
  62. package/types/index.d.ts +3 -0
  63. package/types/index.d.ts.map +1 -0
  64. package/types/shared.d.ts +5 -0
  65. package/types/shared.d.ts.map +1 -0
  66. package/types/view.d.ts +87 -0
  67. package/types/view.d.ts.map +1 -0
  68. package/view/action/general.d.ts +6 -0
  69. package/view/action/general.d.ts.map +1 -0
  70. package/view/action/index.d.ts +3 -0
  71. package/view/action/index.d.ts.map +1 -0
  72. package/view/action/view.d.ts +10 -0
  73. package/view/action/view.d.ts.map +1 -0
  74. package/view/constants/view.d.ts +3 -0
  75. package/view/constants/view.d.ts.map +1 -0
  76. package/view/plugins/view.plugin.d.ts +3 -0
  77. package/view/plugins/view.plugin.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-table-state.d.ts","sourceRoot":"","sources":["../../packages/state/src/ai-table-state.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktdGFibGUtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvYWktdGFibGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknOyJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './shared';
2
+ export * from './types';
3
+ export * from './view/action';
4
+ export * from './view/plugins/view.plugin';
5
+ export * from './view/constants/view';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2hhcmVkJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3L2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcvcGx1Z2lucy92aWV3LnBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcvY29uc3RhbnRzL3ZpZXcnO1xuIl19
@@ -0,0 +1,5 @@
1
+ export * from './to-table';
2
+ export * from './to-yjs';
3
+ export * from './yjs-table';
4
+ export * from './utils';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90by10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvLXlqcyc7XG5leHBvcnQgKiBmcm9tICcuL3lqcy10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJzsiXX0=
@@ -0,0 +1,136 @@
1
+ import { ActionName, AITableQueries } from '@ai-table/grid';
2
+ import * as Y from 'yjs';
3
+ import { isArray } from 'ngx-tethys/util';
4
+ import { ViewActionName } from '../../types';
5
+ import { translatePositionToPath, getShareTypeNumberPath } from '../utils';
6
+ import { getSharedMapValueId, getSharedRecordId, translateToRecordValues } from '../utils/translate';
7
+ export default function translateArrayEvent(aiTable, activeViewId, sharedType, event) {
8
+ let offset = 0;
9
+ let targetPath = getShareTypeNumberPath(event.path);
10
+ const isRecordsTranslate = event.path.includes('records');
11
+ const isFieldsTranslate = event.path.includes('fields');
12
+ const isViewsTranslate = event.path.includes('views');
13
+ const actions = [];
14
+ event.changes.delta.forEach((delta) => {
15
+ if ('retain' in delta) {
16
+ offset += delta.retain ?? 0;
17
+ }
18
+ if ('delete' in delta) {
19
+ if (isAddOrRemove(targetPath)) {
20
+ if (isViewsTranslate) {
21
+ const removeView = aiTable.views()[offset];
22
+ if (removeView) {
23
+ actions.push({
24
+ type: ViewActionName.RemoveView,
25
+ path: [removeView._id]
26
+ });
27
+ }
28
+ }
29
+ else {
30
+ const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;
31
+ const removeIds = getRemoveIds(event, type);
32
+ if (removeIds.length) {
33
+ removeIds.forEach((path) => {
34
+ actions.push({
35
+ type,
36
+ path
37
+ });
38
+ });
39
+ }
40
+ }
41
+ }
42
+ }
43
+ if ('insert' in delta) {
44
+ if (isArray(delta.insert)) {
45
+ if (isRecordsTranslate) {
46
+ if (isAddOrRemove(targetPath)) {
47
+ delta.insert?.map((item) => {
48
+ const data = item.toJSON();
49
+ const [fixedField, customField] = data;
50
+ const position = customField[customField.length - 1][activeViewId];
51
+ const path = translatePositionToPath(aiTable.records(), position, activeViewId);
52
+ actions.push({
53
+ type: ActionName.AddRecord,
54
+ path: path,
55
+ record: {
56
+ _id: fixedField[0]['_id'],
57
+ values: translateToRecordValues(customField, aiTable.fields())
58
+ }
59
+ });
60
+ });
61
+ }
62
+ else {
63
+ try {
64
+ delta.insert?.map((item) => {
65
+ const recordIndex = targetPath[0];
66
+ const fieldIndex = offset;
67
+ const recordId = getSharedRecordId(sharedType.get('records'), recordIndex);
68
+ const fieldId = getSharedMapValueId(sharedType.get('fields'), fieldIndex);
69
+ const path = [recordId, fieldId];
70
+ const fieldValue = AITableQueries.getFieldValue(aiTable, path);
71
+ // To exclude insert triggered by field inserts.
72
+ if (fieldValue !== item) {
73
+ actions.push({
74
+ type: ActionName.UpdateFieldValue,
75
+ path,
76
+ fieldValue,
77
+ newFieldValue: item
78
+ });
79
+ }
80
+ });
81
+ }
82
+ catch (error) { }
83
+ }
84
+ }
85
+ if (isFieldsTranslate) {
86
+ delta.insert?.map((item) => {
87
+ const data = item.toJSON();
88
+ const path = translatePositionToPath(aiTable.fields(), data['positions'][activeViewId], activeViewId);
89
+ actions.push({
90
+ type: ActionName.AddField,
91
+ path,
92
+ field: data
93
+ });
94
+ });
95
+ }
96
+ if (isViewsTranslate) {
97
+ delta.insert?.map((item, index) => {
98
+ const data = item.toJSON();
99
+ actions.push({
100
+ type: ViewActionName.AddView,
101
+ path: [offset + index],
102
+ view: data
103
+ });
104
+ });
105
+ }
106
+ }
107
+ }
108
+ });
109
+ return actions;
110
+ }
111
+ export function isAddOrRemove(targetPath) {
112
+ return targetPath.length === 0;
113
+ }
114
+ export function getRemoveIds(event, type) {
115
+ const ids = [];
116
+ if (!type) {
117
+ return ids;
118
+ }
119
+ Y.iterateDeletedStructs(event.transaction, event.transaction.deleteSet,
120
+ // @param {Item|GC} item
121
+ (item) => {
122
+ if (item instanceof Y.Item && item.deleted) {
123
+ if (type === ActionName.RemoveField && item.parentSub === '_id') {
124
+ ids.push(item.content.getContent());
125
+ }
126
+ if (type === ActionName.RemoveRecord) {
127
+ const content = item.content.getContent();
128
+ if (content[0] && content[0]['_id']) {
129
+ ids.push([content[0]['_id']]);
130
+ }
131
+ }
132
+ }
133
+ });
134
+ return ids;
135
+ }
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXRhYmxlL2FycmF5LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQThFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBU0gsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckcsTUFBTSxDQUFDLE9BQU8sVUFBVSxtQkFBbUIsQ0FBQyxPQUFvQixFQUFFLFlBQW9CLEVBQUUsVUFBc0IsRUFBRSxLQUFvQjtJQUNoSSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQTBCLEVBQUUsQ0FBQztJQUUxQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMs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LENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsSUFBSSxJQUFJLEtBQUssVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FDSixDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uTmFtZSwgQUlGaWVsZElkUGF0aCwgQUlGaWVsZFBhdGgsIEFJRmllbGRWYWx1ZUlkUGF0aCwgQUlSZWNvcmRQYXRoLCBBSVRhYmxlRmllbGQsIEFJVGFibGVRdWVyaWVzIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0ICogYXMgWSBmcm9tICd5anMnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVTaGFyZWRBY3Rpb24sXG4gICAgQUlUYWJsZVZpZXcsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIEFJVmlld1RhYmxlLFxuICAgIFNoYXJlZFR5cGUsXG4gICAgU3luY0FycmF5RWxlbWVudCxcbiAgICBTeW5jTWFwRWxlbWVudCxcbiAgICBWaWV3QWN0aW9uTmFtZVxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGVQb3NpdGlvblRvUGF0aCwgZ2V0U2hhcmVUeXBlTnVtYmVyUGF0aCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFNoYXJlZE1hcFZhbHVlSWQsIGdldFNoYXJlZFJlY29yZElkLCB0cmFuc2xhdGVUb1JlY29yZFZhbHVlcyB9IGZyb20gJy4uL3V0aWxzL3RyYW5zbGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zbGF0ZUFycmF5RXZlbnQoYWlUYWJsZTogQUlWaWV3VGFibGUsIGFjdGl2ZVZpZXdJZDogc3RyaW5nLCBzaGFyZWRUeXBlOiBTaGFyZWRUeXBlLCBldmVudDogWS5ZRXZlbnQ8YW55Pik6IEFJVGFibGVTaGFyZWRBY3Rpb25bXSB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgbGV0IHRhcmdldFBhdGggPSBnZXRTaGFyZVR5cGVOdW1iZXJQYXRoKGV2ZW50LnBhdGgpO1xuICAgIGNvbnN0IGlzUmVjb3Jkc1RyYW5zbGF0ZSA9IGV2ZW50LnBhdGguaW5jbHVkZXMoJ3JlY29yZHMnKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RyYW5zbGF0ZSA9IGV2ZW50LnBhdGguaW5jbHVkZXMoJ2ZpZWxkcycpO1xuICAgIGNvbnN0IGlzVmlld3NUcmFuc2xhdGUgPSBldmVudC5wYXRoLmluY2x1ZGVzKCd2aWV3cycpO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFJVGFibGVTaGFyZWRBY3Rpb25bXSA9IFtdO1xuXG4gICAgZXZlbnQuY2hhbmdlcy5kZWx0YS5mb3JFYWNoKChkZWx0YSkgPT4ge1xuICAgICAgICBpZiAoJ3JldGFpbicgaW4gZGVsdGEpIHtcbiAgICAgICAgICAgIG9mZnNldCArPSBkZWx0YS5yZXRhaW4gPz8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnZGVsZXRlJyBpbiBkZWx0YSkge1xuICAgICAgICAgICAgaWYgKGlzQWRkT3JSZW1vdmUodGFyZ2V0UGF0aCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWaWV3c1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVWaWV3ID0gYWlUYWJsZS52aWV3cygpW29mZnNldF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVWaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFZpZXdBY3Rpb25OYW1lLlJlbW92ZVZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW3JlbW92ZVZpZXcuX2lkXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gaXNSZWNvcmRzVHJhbnNsYXRlID8gQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQgOiBBY3Rpb25OYW1lLlJlbW92ZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVJZHMgPSBnZXRSZW1vdmVJZHMoZXZlbnQsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlSWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSWRzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnaW5zZXJ0JyBpbiBkZWx0YSkge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGVsdGEuaW5zZXJ0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1JlY29yZHNUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWRkT3JSZW1vdmUodGFyZ2V0UGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhLmluc2VydD8ubWFwKChpdGVtOiBZLkFycmF5PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gaXRlbS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbZml4ZWRGaWVsZCwgY3VzdG9tRmllbGRdID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGN1c3RvbUZpZWxkW2N1c3RvbUZpZWxkLmxlbmd0aCAtIDFdW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRyYW5zbGF0ZVBvc2l0aW9uVG9QYXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLnJlY29yZHMoKSBhcyBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVWaWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFJUmVjb3JkUGF0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuQWRkUmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pZDogZml4ZWRGaWVsZFswXVsnX2lkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRyYW5zbGF0ZVRvUmVjb3JkVmFsdWVzKGN1c3RvbUZpZWxkLCBhaVRhYmxlLmZpZWxkcygpIGFzIEFJVGFibGVWaWV3RmllbGRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGEuaW5zZXJ0Py5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRJbmRleCA9IHRhcmdldFBhdGhbMF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZEluZGV4ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldFNoYXJlZFJlY29yZElkKHNoYXJlZFR5cGUuZ2V0KCdyZWNvcmRzJykhIGFzIFkuQXJyYXk8U3luY0FycmF5RWxlbWVudD4sIHJlY29yZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRJZCA9IGdldFNoYXJlZE1hcFZhbHVlSWQoc2hhcmVkVHlwZS5nZXQoJ2ZpZWxkcycpISBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PiwgZmllbGRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBbcmVjb3JkSWQsIGZpZWxkSWRdIGFzIEFJRmllbGRWYWx1ZUlkUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgcGF0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG8gZXhjbHVkZSBpbnNlcnQgdHJpZ2dlcmVkIGJ5IGZpZWxkIGluc2VydHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlICE9PSBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuVXBkYXRlRmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmllbGRWYWx1ZTogaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0ZpZWxkc1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkZWx0YS5pbnNlcnQ/Lm1hcCgoaXRlbTogWS5NYXA8YW55PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0udG9KU09OKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdHJhbnNsYXRlUG9zaXRpb25Ub1BhdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5maWVsZHMoKSBhcyBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydwb3NpdGlvbnMnXVthY3RpdmVWaWV3SWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVZpZXdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBSUZpZWxkUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBkYXRhIGFzIEFJVGFibGVGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNWaWV3c1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkZWx0YS5pbnNlcnQ/Lm1hcCgoaXRlbTogWS5NYXA8YW55PiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBpdGVtLnRvSlNPTigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBWaWV3QWN0aW9uTmFtZS5BZGRWaWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFtvZmZzZXQgKyBpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldzogZGF0YSBhcyBBSVRhYmxlVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBZGRPclJlbW92ZSh0YXJnZXRQYXRoOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0YXJnZXRQYXRoLmxlbmd0aCA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbW92ZUlkcyhldmVudDogWS5ZRXZlbnQ8YW55PiwgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVGaWVsZCB8IEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkKSB7XG4gICAgY29uc3QgaWRzOiBbc3RyaW5nXVtdID0gW107XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgfVxuXG4gICAgWS5pdGVyYXRlRGVsZXRlZFN0cnVjdHMoXG4gICAgICAgIGV2ZW50LnRyYW5zYWN0aW9uLFxuICAgICAgICBldmVudC50cmFuc2FjdGlvbi5kZWxldGVTZXQsXG4gICAgICAgIC8vIEBwYXJhbSB7SXRlbXxHQ30gaXRlbVxuICAgICAgICAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBZLkl0ZW0gJiYgaXRlbS5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEFjdGlvbk5hbWUuUmVtb3ZlRmllbGQgJiYgaXRlbS5wYXJlbnRTdWIgPT09ICdfaWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGl0ZW0uY29udGVudC5nZXRDb250ZW50KCkgYXMgQUlGaWVsZElkUGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBBY3Rpb25OYW1lLlJlbW92ZVJlY29yZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbS5jb250ZW50LmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbMF0gJiYgY29udGVudFswXVsnX2lkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKFtjb250ZW50WzBdWydfaWQnXV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gaWRzO1xufVxuIl19
@@ -0,0 +1,29 @@
1
+ import * as Y from 'yjs';
2
+ import translateArrayEvent from './array-event';
3
+ import translateMapEvent from './map-event';
4
+ import { YjsAITable } from '../yjs-table';
5
+ export function translateYjsEvent(aiTable, activeViewId, sharedType, event) {
6
+ if (event instanceof Y.YArrayEvent) {
7
+ return translateArrayEvent(aiTable, activeViewId, sharedType, event);
8
+ }
9
+ if (event instanceof Y.YMapEvent) {
10
+ return translateMapEvent(aiTable, sharedType, event);
11
+ }
12
+ return [];
13
+ }
14
+ export function applyEvents(aiTable, activeViewId, sharedType, events) {
15
+ events.forEach((event) => translateYjsEvent(aiTable, activeViewId, sharedType, event).forEach((item) => {
16
+ aiTable.apply(item);
17
+ }));
18
+ }
19
+ export function applyYjsEvents(aiTable, activeViewId, sharedType, events) {
20
+ if (YjsAITable.isUndo(aiTable)) {
21
+ applyEvents(aiTable, activeViewId, sharedType, events);
22
+ }
23
+ else {
24
+ YjsAITable.asRemote(aiTable, () => {
25
+ applyEvents(aiTable, activeViewId, sharedType, events);
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ3pCLE9BQU8sbUJBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8saUJBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQW9CLEVBQUUsWUFBb0IsRUFBRSxVQUFzQixFQUFFLEtBQW9CO0lBQ3RILElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxPQUFPLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0IsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQW9CLEVBQUUsWUFBb0IsRUFBRSxVQUFzQixFQUFFLE1BQXVCO0lBQ25ILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNyQixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUF5QixFQUFFLEVBQUU7UUFDOUYsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FDTCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBb0IsRUFBRSxZQUFvQixFQUFFLFVBQXNCLEVBQUUsTUFBdUI7SUFDdEgsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDN0IsV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUM7U0FBTSxDQUFDO1FBQ0osVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgWSBmcm9tICd5anMnO1xuaW1wb3J0IHRyYW5zbGF0ZUFycmF5RXZlbnQgZnJvbSAnLi9hcnJheS1ldmVudCc7XG5pbXBvcnQgdHJhbnNsYXRlTWFwRXZlbnQgZnJvbSAnLi9tYXAtZXZlbnQnO1xuaW1wb3J0IHsgWWpzQUlUYWJsZSB9IGZyb20gJy4uL3lqcy10YWJsZSc7XG5pbXBvcnQgeyBBSVRhYmxlU2hhcmVkQWN0aW9uLCBBSVZpZXdUYWJsZSwgU2hhcmVkVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZVlqc0V2ZW50KGFpVGFibGU6IEFJVmlld1RhYmxlLCBhY3RpdmVWaWV3SWQ6IHN0cmluZywgc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgZXZlbnQ6IFkuWUV2ZW50PGFueT4pOiBBSVRhYmxlU2hhcmVkQWN0aW9uW10ge1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFkuWUFycmF5RXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZUFycmF5RXZlbnQoYWlUYWJsZSwgYWN0aXZlVmlld0lkLCBzaGFyZWRUeXBlLCBldmVudCk7XG4gICAgfVxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFkuWU1hcEV2ZW50KSB7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVNYXBFdmVudChhaVRhYmxlLCBzaGFyZWRUeXBlLCBldmVudCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RXZlbnRzKGFpVGFibGU6IEFJVmlld1RhYmxlLCBhY3RpdmVWaWV3SWQ6IHN0cmluZywgc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgZXZlbnRzOiBZLllFdmVudDxhbnk+W10pIHtcbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+XG4gICAgICAgIHRyYW5zbGF0ZVlqc0V2ZW50KGFpVGFibGUsIGFjdGl2ZVZpZXdJZCwgc2hhcmVkVHlwZSwgZXZlbnQpLmZvckVhY2goKGl0ZW06IEFJVGFibGVTaGFyZWRBY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGFpVGFibGUuYXBwbHkoaXRlbSk7XG4gICAgICAgIH0pXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5WWpzRXZlbnRzKGFpVGFibGU6IEFJVmlld1RhYmxlLCBhY3RpdmVWaWV3SWQ6IHN0cmluZywgc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgZXZlbnRzOiBZLllFdmVudDxhbnk+W10pOiB2b2lkIHtcbiAgICBpZiAoWWpzQUlUYWJsZS5pc1VuZG8oYWlUYWJsZSkpIHtcbiAgICAgICAgYXBwbHlFdmVudHMoYWlUYWJsZSwgYWN0aXZlVmlld0lkLCBzaGFyZWRUeXBlLCBldmVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIFlqc0FJVGFibGUuYXNSZW1vdGUoYWlUYWJsZSwgKCkgPT4ge1xuICAgICAgICAgICAgYXBwbHlFdmVudHMoYWlUYWJsZSwgYWN0aXZlVmlld0lkLCBzaGFyZWRUeXBlLCBldmVudHMpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { ActionName } from '@ai-table/grid';
2
+ import * as Y from 'yjs';
3
+ import { getShareTypeNumberPath } from '../utils';
4
+ import { ViewActionName } from '../../types';
5
+ export default function translateMapEvent(aiTable, sharedType, event) {
6
+ const isFieldsTranslate = event.path.includes('fields');
7
+ const isViewTranslate = event.path.includes('views');
8
+ if (isViewTranslate || isFieldsTranslate) {
9
+ let [targetPath] = getShareTypeNumberPath(event.path);
10
+ let targetElement;
11
+ const targetSyncElement = event.target;
12
+ if (isFieldsTranslate) {
13
+ const field = sharedType.get('fields')?.get(targetPath);
14
+ const fieldId = field && field.get('_id');
15
+ targetElement = fieldId && aiTable.fields().find((item) => item._id === field.get('_id'));
16
+ }
17
+ if (isViewTranslate) {
18
+ targetElement = aiTable.views()[targetPath];
19
+ }
20
+ if (targetElement) {
21
+ const keyChanges = Array.from(event.changes.keys.entries());
22
+ const newProperties = {};
23
+ const properties = {};
24
+ const entries = keyChanges.map(([key, info]) => {
25
+ const value = targetSyncElement.get(key);
26
+ return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];
27
+ });
28
+ for (const [key, value] of entries) {
29
+ const k = key;
30
+ newProperties[k] = value;
31
+ }
32
+ const oldEntries = keyChanges.map(([key]) => [key, targetElement[key]]);
33
+ for (const [key, value] of oldEntries) {
34
+ const k = key;
35
+ properties[k] = value;
36
+ }
37
+ const type = isFieldsTranslate ? ActionName.SetField : ViewActionName.SetView;
38
+ return [
39
+ {
40
+ type,
41
+ properties: properties,
42
+ newProperties: newProperties,
43
+ path: [targetElement._id]
44
+ }
45
+ ];
46
+ }
47
+ }
48
+ return [];
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3NoYXJlZC90by10YWJsZS9tYXAtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN6QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUE2RSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEgsTUFBTSxDQUFDLE9BQU8sVUFBVSxpQkFBaUIsQ0FDckMsT0FBb0IsRUFDcEIsVUFBc0IsRUFDdEIsS0FBMkI7SUFFM0IsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVyRCxJQUFJLGVBQWUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFhLENBQUM7UUFDbEUsSUFBSSxhQUFhLENBQUM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBb0IsQ0FBQztRQUNyRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFtQixDQUFDO1lBQzFFLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLGFBQWEsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixNQUFNLFVBQVUsR0FBdUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2hJLE1BQU0sYUFBYSxHQUF3QyxFQUFFLENBQUM7WUFDOUQsTUFBTSxVQUFVLEdBQXdDLEVBQUUsQ0FBQztZQUUzRCxNQUFNLE9BQU8sR0FBb0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQzVELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RyxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxDQUFDLEdBQUcsR0FBeUMsQ0FBQztnQkFDcEQsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUM3QixDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFHLGFBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLEdBQUcsR0FBeUMsQ0FBQztnQkFDcEQsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDOUUsT0FBTztnQkFDSDtvQkFDSSxJQUFJO29CQUNKLFVBQVUsRUFBRSxVQUFVO29CQUN0QixhQUFhLEVBQUUsYUFBYTtvQkFDNUIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztpQkFDNUI7YUFDcUIsQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbk5hbWUsIEFJVGFibGVGaWVsZCB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCAqIGFzIFkgZnJvbSAneWpzJztcbmltcG9ydCB7IGdldFNoYXJlVHlwZU51bWJlclBhdGggfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlU2hhcmVkQWN0aW9uLCBBSVRhYmxlVmlldywgQUlWaWV3VGFibGUsIFNoYXJlZFR5cGUsIFN5bmNNYXBFbGVtZW50LCBWaWV3QWN0aW9uTmFtZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNsYXRlTWFwRXZlbnQoXG4gICAgYWlUYWJsZTogQUlWaWV3VGFibGUsXG4gICAgc2hhcmVkVHlwZTogU2hhcmVkVHlwZSxcbiAgICBldmVudDogWS5ZTWFwRXZlbnQ8dW5rbm93bj5cbik6IEFJVGFibGVTaGFyZWRBY3Rpb25bXSB7XG4gICAgY29uc3QgaXNGaWVsZHNUcmFuc2xhdGUgPSBldmVudC5wYXRoLmluY2x1ZGVzKCdmaWVsZHMnKTtcbiAgICBjb25zdCBpc1ZpZXdUcmFuc2xhdGUgPSBldmVudC5wYXRoLmluY2x1ZGVzKCd2aWV3cycpO1xuXG4gICAgaWYgKGlzVmlld1RyYW5zbGF0ZSB8fCBpc0ZpZWxkc1RyYW5zbGF0ZSkge1xuICAgICAgICBsZXQgW3RhcmdldFBhdGhdID0gZ2V0U2hhcmVUeXBlTnVtYmVyUGF0aChldmVudC5wYXRoKSBhcyBbbnVtYmVyXTtcbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldFN5bmNFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNoYXJlZFR5cGU7XG4gICAgICAgIGlmIChpc0ZpZWxkc1RyYW5zbGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzaGFyZWRUeXBlLmdldCgnZmllbGRzJyk/LmdldCh0YXJnZXRQYXRoKSBhcyBTeW5jTWFwRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBmaWVsZCAmJiBmaWVsZC5nZXQoJ19pZCcpO1xuICAgICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGZpZWxkSWQgJiYgYWlUYWJsZS5maWVsZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gZmllbGQuZ2V0KCdfaWQnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNWaWV3VHJhbnNsYXRlKSB7XG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50ID0gYWlUYWJsZS52aWV3cygpW3RhcmdldFBhdGhdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleUNoYW5nZXM6IFtzdHJpbmcsIHsgYWN0aW9uOiAnYWRkJyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7IG9sZFZhbHVlOiBhbnkgfV1bXSA9IEFycmF5LmZyb20oZXZlbnQuY2hhbmdlcy5rZXlzLmVudHJpZXMoKSk7XG4gICAgICAgICAgICBjb25zdCBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPEFJVGFibGVWaWV3IHwgQUlUYWJsZUZpZWxkPiA9IHt9O1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllczogUGFydGlhbDxBSVRhYmxlVmlldyB8IEFJVGFibGVGaWVsZD4gPSB7fTtcblxuICAgICAgICAgICAgY29uc3QgZW50cmllczogW3N0cmluZywgYW55XVtdID0ga2V5Q2hhbmdlcy5tYXAoKFtrZXksIGluZm9dKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0YXJnZXRTeW5jRWxlbWVudC5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2tleSwgaW5mby5hY3Rpb24gPT09ICdkZWxldGUnID8gbnVsbCA6IHZhbHVlIGluc3RhbmNlb2YgWS5BYnN0cmFjdFR5cGUgPyB2YWx1ZS50b0pTT04oKSA6IHZhbHVlXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiAoQUlUYWJsZVZpZXcgfCBBSVRhYmxlRmllbGQpO1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXNba10gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2xkRW50cmllcyA9IGtleUNoYW5nZXMubWFwKChba2V5XSkgPT4gW2tleSwgKHRhcmdldEVsZW1lbnQgYXMgYW55KVtrZXldXSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBvbGRFbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiAoQUlUYWJsZVZpZXcgfCBBSVRhYmxlRmllbGQpO1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXNba10gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBpc0ZpZWxkc1RyYW5zbGF0ZSA/IEFjdGlvbk5hbWUuU2V0RmllbGQgOiBWaWV3QWN0aW9uTmFtZS5TZXRWaWV3O1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IFt0YXJnZXRFbGVtZW50Ll9pZF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdIGFzIEFJVGFibGVTaGFyZWRBY3Rpb25bXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW107XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { toRecordSyncElement, toSyncElement } from '../utils';
2
+ import { ViewActionName } from '../../types';
3
+ import { ActionName, getDefaultFieldValue } from '@ai-table/grid';
4
+ export default function addNode(sharedType, action) {
5
+ switch (action.type) {
6
+ case ActionName.AddRecord:
7
+ const records = sharedType.get('records');
8
+ records && records.push([toRecordSyncElement(action.record)]);
9
+ break;
10
+ case ViewActionName.AddView:
11
+ const views = sharedType.get('views');
12
+ views && views.push([toSyncElement(action.view)]);
13
+ break;
14
+ case ActionName.AddField:
15
+ const sharedFields = sharedType.get('fields');
16
+ const sharedRecords = sharedType.get('records');
17
+ if (sharedFields && sharedRecords) {
18
+ sharedFields.push([toSyncElement(action.field)]);
19
+ const path = action.path[0];
20
+ for (let value of sharedRecords) {
21
+ const newRecord = getDefaultFieldValue(action.field);
22
+ const customField = value.get(1);
23
+ customField.insert(path, [newRecord]);
24
+ }
25
+ }
26
+ break;
27
+ }
28
+ return sharedType;
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXlqcy9hZGQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBa0UsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxVQUFVLEVBQW1DLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkcsTUFBTSxDQUFDLE9BQU8sVUFBVSxPQUFPLENBQUMsVUFBc0IsRUFBRSxNQUF3RDtJQUM1RyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLFVBQVUsQ0FBQyxTQUFTO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixNQUFNO1FBQ1YsS0FBSyxjQUFjLENBQUMsT0FBTztZQUN2QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDO1lBQ3ZDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsTUFBTTtRQUNWLEtBQUssVUFBVSxDQUFDLFFBQVE7WUFDcEIsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUUsQ0FBQztZQUMvQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBcUIsQ0FBQztZQUNwRSxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixLQUFLLElBQUksS0FBSyxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUM5QixNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNO0lBQ2QsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b1JlY29yZFN5bmNFbGVtZW50LCB0b1N5bmNFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWRkVmlld0FjdGlvbiwgQUlUYWJsZVZpZXdSZWNvcmQsIFNoYXJlZFR5cGUsIFN5bmNBcnJheUVsZW1lbnQsIFZpZXdBY3Rpb25OYW1lIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQWN0aW9uTmFtZSwgQWRkRmllbGRBY3Rpb24sIEFkZFJlY29yZEFjdGlvbiwgZ2V0RGVmYXVsdEZpZWxkVmFsdWUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZE5vZGUoc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgYWN0aW9uOiBBZGRGaWVsZEFjdGlvbiB8IEFkZFJlY29yZEFjdGlvbiB8IEFkZFZpZXdBY3Rpb24pOiBTaGFyZWRUeXBlIHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5BZGRSZWNvcmQ6XG4gICAgICAgICAgICBjb25zdCByZWNvcmRzID0gc2hhcmVkVHlwZS5nZXQoJ3JlY29yZHMnKSE7XG4gICAgICAgICAgICByZWNvcmRzICYmIHJlY29yZHMucHVzaChbdG9SZWNvcmRTeW5jRWxlbWVudChhY3Rpb24ucmVjb3JkIGFzIEFJVGFibGVWaWV3UmVjb3JkKV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVmlld0FjdGlvbk5hbWUuQWRkVmlldzpcbiAgICAgICAgICAgIGNvbnN0IHZpZXdzID0gc2hhcmVkVHlwZS5nZXQoJ3ZpZXdzJykhO1xuICAgICAgICAgICAgdmlld3MgJiYgdmlld3MucHVzaChbdG9TeW5jRWxlbWVudChhY3Rpb24udmlldyldKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkRmllbGQ6XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRGaWVsZHMgPSBzaGFyZWRUeXBlLmdldCgnZmllbGRzJykhO1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkUmVjb3JkcyA9IHNoYXJlZFR5cGUuZ2V0KCdyZWNvcmRzJykgYXMgU3luY0FycmF5RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChzaGFyZWRGaWVsZHMgJiYgc2hhcmVkUmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIHNoYXJlZEZpZWxkcy5wdXNoKFt0b1N5bmNFbGVtZW50KGFjdGlvbi5maWVsZCldKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gYWN0aW9uLnBhdGhbMF07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Ygc2hhcmVkUmVjb3Jkcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdSZWNvcmQgPSBnZXREZWZhdWx0RmllbGRWYWx1ZShhY3Rpb24uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZCA9IHZhbHVlLmdldCgxKTtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQuaW5zZXJ0KHBhdGgsIFtuZXdSZWNvcmRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkVHlwZTtcbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import updateFieldValue from './update-field-value';
2
+ import setNode from './set-node';
3
+ import addNode from './add-node';
4
+ import removeNode from './remove-node';
5
+ export const actionMappers = {
6
+ add_record: addNode,
7
+ update_field_value: updateFieldValue,
8
+ remove_record: removeNode,
9
+ add_field: addNode,
10
+ set_field: setNode,
11
+ remove_field: removeNode,
12
+ set_view: setNode,
13
+ add_view: addNode,
14
+ remove_view: removeNode,
15
+ };
16
+ export function applyActionOps(sharedType, actions, aiTable) {
17
+ if (actions.length > 0) {
18
+ sharedType.doc.transact(() => {
19
+ actions.forEach((action) => {
20
+ const apply = actionMappers[action.type];
21
+ if (apply) {
22
+ return apply(sharedType, action);
23
+ }
24
+ return null;
25
+ });
26
+ }, aiTable);
27
+ }
28
+ return sharedType;
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXlqcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLGdCQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sT0FBTyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLE9BQU8sTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBUXZDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBK0I7SUFDckQsVUFBVSxFQUFFLE9BQU87SUFDbkIsa0JBQWtCLEVBQUUsZ0JBQWdCO0lBQ3BDLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFlBQVksRUFBRSxVQUFVO0lBQ3hCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFdBQVcsRUFBRSxVQUFVO0NBQzFCLENBQUM7QUFFRixNQUFNLFVBQVUsY0FBYyxDQUFDLFVBQXNCLEVBQUUsT0FBd0IsRUFBRSxPQUFnQjtJQUM3RixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQTZCLENBQUM7Z0JBQ3JFLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1IsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUFjdGlvbiB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB1cGRhdGVGaWVsZFZhbHVlIGZyb20gJy4vdXBkYXRlLWZpZWxkLXZhbHVlJztcbmltcG9ydCB7IFNoYXJlZFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgc2V0Tm9kZSBmcm9tICcuL3NldC1ub2RlJztcbmltcG9ydCBhZGROb2RlIGZyb20gJy4vYWRkLW5vZGUnO1xuaW1wb3J0IHJlbW92ZU5vZGUgZnJvbSAnLi9yZW1vdmUtbm9kZSc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk1hcHBlcjxPIGV4dGVuZHMgQUlUYWJsZUFjdGlvbiA9IEFJVGFibGVBY3Rpb24+ID0ge1xuICAgIFtLIGluIE9bJ3R5cGUnXV06IE8gZXh0ZW5kcyB7IHR5cGU6IEsgfSA/IEFwcGx5RnVuYzxPPiA6IG5ldmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwbHlGdW5jPE8gZXh0ZW5kcyBBSVRhYmxlQWN0aW9uID0gQUlUYWJsZUFjdGlvbj4gPSAoc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgb3A6IE8pID0+IFNoYXJlZFR5cGU7XG5cbmV4cG9ydCBjb25zdCBhY3Rpb25NYXBwZXJzOiBQYXJ0aWFsPEFjdGlvbk1hcHBlcjxhbnk+PiA9IHtcbiAgICBhZGRfcmVjb3JkOiBhZGROb2RlLFxuICAgIHVwZGF0ZV9maWVsZF92YWx1ZTogdXBkYXRlRmllbGRWYWx1ZSxcbiAgICByZW1vdmVfcmVjb3JkOiByZW1vdmVOb2RlLFxuICAgIGFkZF9maWVsZDogYWRkTm9kZSxcbiAgICBzZXRfZmllbGQ6IHNldE5vZGUsXG4gICAgcmVtb3ZlX2ZpZWxkOiByZW1vdmVOb2RlLFxuICAgIHNldF92aWV3OiBzZXROb2RlLFxuICAgIGFkZF92aWV3OiBhZGROb2RlLFxuICAgIHJlbW92ZV92aWV3OiByZW1vdmVOb2RlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QWN0aW9uT3BzKHNoYXJlZFR5cGU6IFNoYXJlZFR5cGUsIGFjdGlvbnM6IEFJVGFibGVBY3Rpb25bXSwgYWlUYWJsZTogQUlUYWJsZSk6IFNoYXJlZFR5cGUge1xuICAgIGlmIChhY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2hhcmVkVHlwZS5kb2MhLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgIGFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwbHkgPSBhY3Rpb25NYXBwZXJzW2FjdGlvbi50eXBlXSBhcyBBcHBseUZ1bmM8dHlwZW9mIGFjdGlvbj47XG4gICAgICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHBseShzaGFyZWRUeXBlLCBhY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBhaVRhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkVHlwZTtcbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import { ActionName } from '@ai-table/grid';
2
+ import { ViewActionName } from '../../types';
3
+ import { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';
4
+ export default function removeNode(sharedType, action) {
5
+ switch (action.type) {
6
+ case ActionName.RemoveRecord:
7
+ const records = sharedType.get('records');
8
+ if (records) {
9
+ const recordIndex = getSharedRecordIndex(records, action.path[0]);
10
+ if (recordIndex > -1) {
11
+ records.delete(recordIndex);
12
+ }
13
+ }
14
+ break;
15
+ case ViewActionName.RemoveView:
16
+ const views = sharedType.get('views');
17
+ if (views) {
18
+ const viewIndex = getSharedMapValueIndex(views, action.path[0]);
19
+ if (viewIndex > -1) {
20
+ views.delete(viewIndex);
21
+ }
22
+ }
23
+ break;
24
+ case ActionName.RemoveField:
25
+ const sharedFields = sharedType.get('fields');
26
+ const sharedRecords = sharedType.get('records');
27
+ if (sharedFields && sharedRecords) {
28
+ const fieldIndex = getSharedMapValueIndex(sharedFields, action.path[0]);
29
+ if (fieldIndex > -1) {
30
+ sharedFields.delete(fieldIndex);
31
+ for (let value of sharedRecords) {
32
+ value.get(1).delete(fieldIndex);
33
+ }
34
+ }
35
+ }
36
+ break;
37
+ }
38
+ return sharedType;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXlqcy9yZW1vdmUtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF5QyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBa0UsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd4RSxNQUFNLENBQUMsT0FBTyxVQUFVLFVBQVUsQ0FBQyxVQUFzQixFQUFFLE1BQWlFO0lBQ3hILFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLEtBQUssVUFBVSxDQUFDLFlBQVk7WUFDeEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQStCLENBQUM7WUFDeEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuQixPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE1BQU07UUFDVixLQUFLLGNBQWMsQ0FBQyxVQUFVO1lBQzFCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUE2QixDQUFDO1lBQ2xFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNO1FBQ1YsS0FBSyxVQUFVLENBQUMsV0FBVztZQUN2QixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBNEIsQ0FBQztZQUN6RSxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBOEIsQ0FBQztZQUM3RSxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDaEMsS0FBSyxJQUFJLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDOUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3BDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNO0lBQ2QsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25OYW1lLCBSZW1vdmVGaWVsZEFjdGlvbiwgUmVtb3ZlUmVjb3JkQWN0aW9uIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgUmVtb3ZlVmlld0FjdGlvbiwgU2hhcmVkVHlwZSwgU3luY0FycmF5RWxlbWVudCwgU3luY01hcEVsZW1lbnQsIFZpZXdBY3Rpb25OYW1lIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U2hhcmVkTWFwVmFsdWVJbmRleCwgZ2V0U2hhcmVkUmVjb3JkSW5kZXggfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBZIGZyb20gJ3lqcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZU5vZGUoc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgYWN0aW9uOiBSZW1vdmVGaWVsZEFjdGlvbiB8IFJlbW92ZVJlY29yZEFjdGlvbiB8IFJlbW92ZVZpZXdBY3Rpb24pOiBTaGFyZWRUeXBlIHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQ6XG4gICAgICAgICAgICBjb25zdCByZWNvcmRzID0gc2hhcmVkVHlwZS5nZXQoJ3JlY29yZHMnKSEgYXMgWS5BcnJheTxTeW5jQXJyYXlFbGVtZW50PjtcbiAgICAgICAgICAgIGlmIChyZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBnZXRTaGFyZWRSZWNvcmRJbmRleChyZWNvcmRzLCBhY3Rpb24ucGF0aFswXSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3Jkcy5kZWxldGUocmVjb3JkSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFZpZXdBY3Rpb25OYW1lLlJlbW92ZVZpZXc6XG4gICAgICAgICAgICBjb25zdCB2aWV3cyA9IHNoYXJlZFR5cGUuZ2V0KCd2aWV3cycpISBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PjtcbiAgICAgICAgICAgIGlmICh2aWV3cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdJbmRleCA9IGdldFNoYXJlZE1hcFZhbHVlSW5kZXgodmlld3MsIGFjdGlvbi5wYXRoWzBdKTtcbiAgICAgICAgICAgICAgICBpZiAodmlld0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld3MuZGVsZXRlKHZpZXdJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVGaWVsZDpcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZEZpZWxkcyA9IHNoYXJlZFR5cGUuZ2V0KCdmaWVsZHMnKSBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PjtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZFJlY29yZHMgPSBzaGFyZWRUeXBlLmdldCgncmVjb3JkcycpIGFzIFkuQXJyYXk8U3luY0FycmF5RWxlbWVudD47XG4gICAgICAgICAgICBpZiAoc2hhcmVkRmllbGRzICYmIHNoYXJlZFJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZEluZGV4ID0gZ2V0U2hhcmVkTWFwVmFsdWVJbmRleChzaGFyZWRGaWVsZHMsIGFjdGlvbi5wYXRoWzBdKTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXJlZEZpZWxkcy5kZWxldGUoZmllbGRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHNoYXJlZFJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmdldCgxKS5kZWxldGUoZmllbGRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkVHlwZTtcbn1cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { getSharedMapValueIndex } from '../utils';
2
+ import { ViewActionName } from '../../types';
3
+ import { ActionName } from '@ai-table/grid';
4
+ export default function setNode(sharedType, action) {
5
+ let sharedNodes;
6
+ if (action.type === ActionName.SetField) {
7
+ sharedNodes = sharedType.get('fields');
8
+ }
9
+ if (action.type === ViewActionName.SetView) {
10
+ sharedNodes = sharedType.get('views');
11
+ }
12
+ if (sharedNodes) {
13
+ let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0]);
14
+ if (nodeIndex > -1) {
15
+ const node = sharedNodes.get(nodeIndex);
16
+ Object.entries(action.newProperties).forEach(([key, value]) => {
17
+ if (value == null) {
18
+ node.delete(key);
19
+ }
20
+ else {
21
+ node.set(key, value);
22
+ }
23
+ });
24
+ Object.entries(action.properties).forEach(([key]) => {
25
+ if (!action.newProperties.hasOwnProperty(key)) {
26
+ node.delete(key);
27
+ }
28
+ });
29
+ }
30
+ }
31
+ return sharedType;
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3RvLXlqcy9zZXQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUE2QyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxNQUFNLENBQUMsT0FBTyxVQUFVLE9BQU8sQ0FBQyxVQUFzQixFQUFFLE1BQXNDO0lBQzFGLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUE2QixDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBNkIsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxHQUFHLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDLENBQUM7UUFDOUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBbUIsQ0FBQztZQUMxRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRTaGFyZWRNYXBWYWx1ZUluZGV4IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2V0Vmlld0FjdGlvbiwgU2hhcmVkVHlwZSwgU3luY01hcEVsZW1lbnQsIFZpZXdBY3Rpb25OYW1lIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQWN0aW9uTmFtZSwgU2V0RmllbGRBY3Rpb24gfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgKiBhcyBZIGZyb20gJ3lqcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldE5vZGUoc2hhcmVkVHlwZTogU2hhcmVkVHlwZSwgYWN0aW9uOiBTZXRGaWVsZEFjdGlvbiB8IFNldFZpZXdBY3Rpb24pOiBTaGFyZWRUeXBlIHtcbiAgICBsZXQgc2hhcmVkTm9kZXM7XG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBBY3Rpb25OYW1lLlNldEZpZWxkKSB7XG4gICAgICAgIHNoYXJlZE5vZGVzID0gc2hhcmVkVHlwZS5nZXQoJ2ZpZWxkcycpISBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PjtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IFZpZXdBY3Rpb25OYW1lLlNldFZpZXcpIHtcbiAgICAgICAgc2hhcmVkTm9kZXMgPSBzaGFyZWRUeXBlLmdldCgndmlld3MnKSEgYXMgWS5BcnJheTxTeW5jTWFwRWxlbWVudD47XG4gICAgfVxuXG4gICAgaWYgKHNoYXJlZE5vZGVzKSB7XG4gICAgICAgIGxldCBub2RlSW5kZXggPSBnZXRTaGFyZWRNYXBWYWx1ZUluZGV4KHNoYXJlZE5vZGVzLCBhY3Rpb24ucGF0aFswXSBhcyBzdHJpbmcpO1xuICAgICAgICBpZiAobm9kZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBzaGFyZWROb2Rlcy5nZXQobm9kZUluZGV4KSBhcyBTeW5jTWFwRWxlbWVudDtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5uZXdQcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYWN0aW9uLnByb3BlcnRpZXMpLmZvckVhY2goKFtrZXldKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhY3Rpb24ubmV3UHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNoYXJlZFR5cGU7XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';
2
+ export default function updateFieldValue(sharedType, action) {
3
+ const sharedRecords = sharedType.get('records');
4
+ const sharedFields = sharedType.get('fields');
5
+ if (sharedRecords && sharedFields) {
6
+ const recordIndex = getSharedRecordIndex(sharedRecords, action.path[0]);
7
+ const fieldIndex = getSharedMapValueIndex(sharedFields, action.path[1]);
8
+ if (recordIndex > -1 && fieldIndex > -1) {
9
+ const record = sharedRecords?.get(recordIndex);
10
+ const customField = record.get(1);
11
+ customField.delete(fieldIndex);
12
+ customField.insert(fieldIndex, [action.newFieldValue]);
13
+ }
14
+ }
15
+ return sharedType;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWZpZWxkLXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3NoYXJlZC90by15anMvdXBkYXRlLWZpZWxkLXZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd4RSxNQUFNLENBQUMsT0FBTyxVQUFVLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsTUFBOEI7SUFDM0YsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQy9DLElBQUksYUFBYSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLGFBQTBDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLFlBQXVDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLGFBQWEsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFxQixDQUFDO1lBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24gfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBTaGFyZWRUeXBlLCBTeW5jQXJyYXlFbGVtZW50LCBTeW5jTWFwRWxlbWVudCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFNoYXJlZE1hcFZhbHVlSW5kZXgsIGdldFNoYXJlZFJlY29yZEluZGV4IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgWSBmcm9tICd5anMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVGaWVsZFZhbHVlKHNoYXJlZFR5cGU6IFNoYXJlZFR5cGUsIGFjdGlvbjogVXBkYXRlRmllbGRWYWx1ZUFjdGlvbik6IFNoYXJlZFR5cGUge1xuICAgIGNvbnN0IHNoYXJlZFJlY29yZHMgPSBzaGFyZWRUeXBlLmdldCgncmVjb3JkcycpO1xuICAgIGNvbnN0IHNoYXJlZEZpZWxkcyA9IHNoYXJlZFR5cGUuZ2V0KCdmaWVsZHMnKSE7XG4gICAgaWYgKHNoYXJlZFJlY29yZHMgJiYgc2hhcmVkRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gZ2V0U2hhcmVkUmVjb3JkSW5kZXgoc2hhcmVkUmVjb3JkcyBhcyBZLkFycmF5PFN5bmNBcnJheUVsZW1lbnQ+LCBhY3Rpb24ucGF0aFswXSk7XG4gICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBnZXRTaGFyZWRNYXBWYWx1ZUluZGV4KHNoYXJlZEZpZWxkcyBhcyBZLkFycmF5PFN5bmNNYXBFbGVtZW50PiwgYWN0aW9uLnBhdGhbMV0pO1xuICAgICAgICBpZiAocmVjb3JkSW5kZXggPiAtMSAmJiBmaWVsZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHNoYXJlZFJlY29yZHM/LmdldChyZWNvcmRJbmRleCkgYXMgU3luY0FycmF5RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUZpZWxkID0gcmVjb3JkLmdldCgxKTtcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkLmRlbGV0ZShmaWVsZEluZGV4KTtcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkLmluc2VydChmaWVsZEluZGV4LCBbYWN0aW9uLm5ld0ZpZWxkVmFsdWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWRUeXBlO1xufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './init-shared';
2
+ export * from './init-table';
3
+ export * from './translate';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbml0LXNoYXJlZCc7XG5leHBvcnQgKiBmcm9tICcuL2luaXQtdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGUnOyJdfQ==
@@ -0,0 +1,48 @@
1
+ import * as Y from 'yjs';
2
+ export const createSharedType = () => {
3
+ const doc = new Y.Doc();
4
+ const sharedType = doc.getMap('ai-table');
5
+ return sharedType;
6
+ };
7
+ export const initSharedType = (doc, initializeValue) => {
8
+ const sharedType = doc.getMap('ai-table');
9
+ toSharedType(sharedType, initializeValue);
10
+ return sharedType;
11
+ };
12
+ export function toSharedType(sharedType, data) {
13
+ sharedType.doc.transact(() => {
14
+ const fieldSharedType = new Y.Array();
15
+ fieldSharedType.insert(0, data.fields.map(toSyncElement));
16
+ sharedType.set('fields', fieldSharedType);
17
+ const recordSharedType = new Y.Array();
18
+ sharedType.set('records', recordSharedType);
19
+ recordSharedType.insert(0, data.records.map(toRecordSyncElement));
20
+ const viewsSharedType = new Y.Array();
21
+ sharedType.set('views', viewsSharedType);
22
+ viewsSharedType.insert(0, data.views.map(toSyncElement));
23
+ });
24
+ }
25
+ export function toSyncElement(node) {
26
+ const element = new Y.Map();
27
+ for (const key in node) {
28
+ element.set(key, node[key]);
29
+ }
30
+ return element;
31
+ }
32
+ export function toRecordSyncElement(record) {
33
+ const nonEditableArray = new Y.Array();
34
+ // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]
35
+ // 后续可能改为 YMap 或者通过在 views 中存储 positions 解决
36
+ nonEditableArray.insert(0, [{ _id: record['_id'] }]);
37
+ const editableArray = new Y.Array();
38
+ const editableFields = [];
39
+ for (const fieldId in record['values']) {
40
+ editableFields.push(record['values'][fieldId]);
41
+ }
42
+ editableArray.insert(0, [...editableFields, record['positions']]);
43
+ // To save memory, convert map to array.
44
+ const element = new Y.Array();
45
+ element.insert(0, [nonEditableArray, editableArray]);
46
+ return element;
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1zaGFyZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvc2hhcmVkL3V0aWxzL2luaXQtc2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBR3pCLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFNLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUMxQixHQUFVLEVBQ1YsZUFJQyxFQUNILEVBQUU7SUFDQSxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFNLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDMUMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFlBQVksQ0FDeEIsVUFBc0IsRUFDdEIsSUFJQztJQUVELFVBQVUsQ0FBQyxHQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzFELFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFnQixDQUFDO1FBQ3JELFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFFbEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDekMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVM7SUFDbkMsTUFBTSxPQUFPLEdBQW1CLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzVDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBeUI7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QyxzRUFBc0U7SUFDdEUsMkNBQTJDO0lBQzNDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzFCLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDckMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWxFLHdDQUF3QztJQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQWdCLENBQUM7SUFDNUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZIGZyb20gJ3lqcyc7XG5pbXBvcnQgeyBBSVRhYmxlVmlld0ZpZWxkcywgQUlUYWJsZVZpZXdSZWNvcmQsIEFJVGFibGVWaWV3UmVjb3JkcywgQUlUYWJsZVZpZXdzLCBQb3NpdGlvbnMsIFN5bmNNYXBFbGVtZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2hhcmVkVHlwZSA9ICgpID0+IHtcbiAgICBjb25zdCBkb2MgPSBuZXcgWS5Eb2MoKTtcbiAgICBjb25zdCBzaGFyZWRUeXBlID0gZG9jLmdldE1hcDxhbnk+KCdhaS10YWJsZScpO1xuICAgIHJldHVybiBzaGFyZWRUeXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGluaXRTaGFyZWRUeXBlID0gKFxuICAgIGRvYzogWS5Eb2MsXG4gICAgaW5pdGlhbGl6ZVZhbHVlOiB7XG4gICAgICAgIGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZHM7XG4gICAgICAgIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcztcbiAgICAgICAgdmlld3M6IEFJVGFibGVWaWV3cztcbiAgICB9XG4pID0+IHtcbiAgICBjb25zdCBzaGFyZWRUeXBlID0gZG9jLmdldE1hcDxhbnk+KCdhaS10YWJsZScpO1xuICAgIHRvU2hhcmVkVHlwZShzaGFyZWRUeXBlLCBpbml0aWFsaXplVmFsdWUpO1xuICAgIHJldHVybiBzaGFyZWRUeXBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2hhcmVkVHlwZShcbiAgICBzaGFyZWRUeXBlOiBZLk1hcDxhbnk+LFxuICAgIGRhdGE6IHtcbiAgICAgICAgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcztcbiAgICAgICAgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzO1xuICAgICAgICB2aWV3czogQUlUYWJsZVZpZXdzO1xuICAgIH1cbik6IHZvaWQge1xuICAgIHNoYXJlZFR5cGUuZG9jIS50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkU2hhcmVkVHlwZSA9IG5ldyBZLkFycmF5KCk7XG4gICAgICAgIGZpZWxkU2hhcmVkVHlwZS5pbnNlcnQoMCwgZGF0YS5maWVsZHMubWFwKHRvU3luY0VsZW1lbnQpKTtcbiAgICAgICAgc2hhcmVkVHlwZS5zZXQoJ2ZpZWxkcycsIGZpZWxkU2hhcmVkVHlwZSk7XG5cbiAgICAgICAgY29uc3QgcmVjb3JkU2hhcmVkVHlwZSA9IG5ldyBZLkFycmF5PFkuQXJyYXk8YW55Pj4oKTtcbiAgICAgICAgc2hhcmVkVHlwZS5zZXQoJ3JlY29yZHMnLCByZWNvcmRTaGFyZWRUeXBlKTtcbiAgICAgICAgcmVjb3JkU2hhcmVkVHlwZS5pbnNlcnQoMCwgZGF0YS5yZWNvcmRzLm1hcCh0b1JlY29yZFN5bmNFbGVtZW50KSk7XG5cbiAgICAgICAgY29uc3Qgdmlld3NTaGFyZWRUeXBlID0gbmV3IFkuQXJyYXkoKTtcbiAgICAgICAgc2hhcmVkVHlwZS5zZXQoJ3ZpZXdzJywgdmlld3NTaGFyZWRUeXBlKTtcbiAgICAgICAgdmlld3NTaGFyZWRUeXBlLmluc2VydCgwLCBkYXRhLnZpZXdzLm1hcCh0b1N5bmNFbGVtZW50KSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N5bmNFbGVtZW50KG5vZGU6IGFueSk6IFN5bmNNYXBFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50OiBTeW5jTWFwRWxlbWVudCA9IG5ldyBZLk1hcCgpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgZWxlbWVudC5zZXQoa2V5LCBub2RlW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmVjb3JkU3luY0VsZW1lbnQocmVjb3JkOiBBSVRhYmxlVmlld1JlY29yZCk6IFkuQXJyYXk8WS5BcnJheTxhbnk+PiB7XG4gICAgY29uc3Qgbm9uRWRpdGFibGVBcnJheSA9IG5ldyBZLkFycmF5KCk7XG4gICAgLy8g5Li05pe25pa55qGI77ya5Li65LqG6Kej5Yaz5Yig6Zmk5pe25Y2P5ZCM5pON5L2c5peg5rOV57K+5YeG6I635Y+W5Yig6Zmk55qEIGlkIOeahOmXrumimO+8jOWwhuWOn+adpeeahFtpZFZhbHVlXSDmlLnkuLpbeydfaWQnOiBpZFZhbHVlfV1cbiAgICAvLyDlkI7nu63lj6/og73mlLnkuLogWU1hcCDmiJbogIXpgJrov4flnKggdmlld3Mg5Lit5a2Y5YKoIHBvc2l0aW9ucyDop6PlhrNcbiAgICBub25FZGl0YWJsZUFycmF5Lmluc2VydCgwLCBbeyBfaWQ6IHJlY29yZFsnX2lkJ10gfV0pO1xuXG4gICAgY29uc3QgZWRpdGFibGVBcnJheSA9IG5ldyBZLkFycmF5KCk7XG4gICAgY29uc3QgZWRpdGFibGVGaWVsZHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkSWQgaW4gcmVjb3JkWyd2YWx1ZXMnXSkge1xuICAgICAgICBlZGl0YWJsZUZpZWxkcy5wdXNoKHJlY29yZFsndmFsdWVzJ11bZmllbGRJZF0pO1xuICAgIH1cbiAgICBlZGl0YWJsZUFycmF5Lmluc2VydCgwLCBbLi4uZWRpdGFibGVGaWVsZHMsIHJlY29yZFsncG9zaXRpb25zJ11dKTtcblxuICAgIC8vIFRvIHNhdmUgbWVtb3J5LCBjb252ZXJ0IG1hcCB0byBhcnJheS5cbiAgICBjb25zdCBlbGVtZW50ID0gbmV3IFkuQXJyYXk8WS5BcnJheTxhbnk+PigpO1xuICAgIGVsZW1lbnQuaW5zZXJ0KDAsIFtub25FZGl0YWJsZUFycmF5LCBlZGl0YWJsZUFycmF5XSk7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { translateToRecords } from './translate';
2
+ export const initTable = (sharedType) => {
3
+ const data = sharedType.toJSON();
4
+ const fields = data['fields'];
5
+ const records = translateToRecords(data['records'], fields);
6
+ const views = data['views'];
7
+ return {
8
+ records,
9
+ fields,
10
+ views
11
+ };
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9zaGFyZWQvdXRpbHMvaW5pdC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBc0IsRUFBRSxFQUFFO0lBQ2hELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBc0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sT0FBTyxHQUF1QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLE9BQU87UUFDSCxPQUFPO1FBQ1AsTUFBTTtRQUNOLEtBQUs7S0FDUixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZVZpZXdGaWVsZHMsIEFJVGFibGVWaWV3UmVjb3JkcywgU2hhcmVkVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IHRyYW5zbGF0ZVRvUmVjb3JkcyB9IGZyb20gJy4vdHJhbnNsYXRlJztcblxuZXhwb3J0IGNvbnN0IGluaXRUYWJsZSA9IChzaGFyZWRUeXBlOiBTaGFyZWRUeXBlKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHNoYXJlZFR5cGUudG9KU09OKCk7XG4gICAgY29uc3QgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcyA9IGRhdGFbJ2ZpZWxkcyddO1xuICAgIGNvbnN0IHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcyA9IHRyYW5zbGF0ZVRvUmVjb3JkcyhkYXRhWydyZWNvcmRzJ10sIGZpZWxkcyk7XG4gICAgY29uc3Qgdmlld3MgPSBkYXRhWyd2aWV3cyddO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJlY29yZHMsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgdmlld3NcbiAgICB9O1xufTtcbiJdfQ==