@ai-table/state 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- package/ai-table-state.d.ts.map +1 -0
- package/esm2022/ai-table-state.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/public-api.mjs +6 -0
- package/esm2022/shared/index.mjs +5 -0
- package/esm2022/shared/to-table/array-event.mjs +136 -0
- package/esm2022/shared/to-table/index.mjs +29 -0
- package/esm2022/shared/to-table/map-event.mjs +50 -0
- package/esm2022/shared/to-yjs/add-node.mjs +30 -0
- package/esm2022/shared/to-yjs/index.mjs +30 -0
- package/esm2022/shared/to-yjs/remove-node.mjs +40 -0
- package/esm2022/shared/to-yjs/set-node.mjs +33 -0
- package/esm2022/shared/to-yjs/update-field-value.mjs +17 -0
- package/esm2022/shared/utils/index.mjs +4 -0
- package/esm2022/shared/utils/init-shared.mjs +48 -0
- package/esm2022/shared/utils/init-table.mjs +13 -0
- package/esm2022/shared/utils/translate.mjs +62 -0
- package/esm2022/shared/yjs-table.mjs +39 -0
- package/esm2022/types/index.mjs +3 -0
- package/esm2022/types/shared.mjs +2 -0
- package/esm2022/types/view.mjs +39 -0
- package/esm2022/view/action/general.mjs +53 -0
- package/esm2022/view/action/index.mjs +3 -0
- package/esm2022/view/action/view.mjs +47 -0
- package/esm2022/view/constants/view.mjs +3 -0
- package/esm2022/view/plugins/view.plugin.mjs +25 -0
- package/fesm2022/ai-table-state.mjs +668 -0
- package/fesm2022/ai-table-state.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -0
- package/package.json +24 -0
- package/public-api.d.ts +6 -0
- package/public-api.d.ts.map +1 -0
- package/shared/index.d.ts +5 -0
- package/shared/index.d.ts.map +1 -0
- package/shared/to-table/array-event.d.ts +7 -0
- package/shared/to-table/array-event.d.ts.map +1 -0
- package/shared/to-table/index.d.ts +6 -0
- package/shared/to-table/index.d.ts.map +1 -0
- package/shared/to-table/map-event.d.ts +4 -0
- package/shared/to-table/map-event.d.ts.map +1 -0
- package/shared/to-yjs/add-node.d.ts +4 -0
- package/shared/to-yjs/add-node.d.ts.map +1 -0
- package/shared/to-yjs/index.d.ts +11 -0
- package/shared/to-yjs/index.d.ts.map +1 -0
- package/shared/to-yjs/remove-node.d.ts +4 -0
- package/shared/to-yjs/remove-node.d.ts.map +1 -0
- package/shared/to-yjs/set-node.d.ts +4 -0
- package/shared/to-yjs/set-node.d.ts.map +1 -0
- package/shared/to-yjs/update-field-value.d.ts +4 -0
- package/shared/to-yjs/update-field-value.d.ts.map +1 -0
- package/shared/utils/index.d.ts +4 -0
- package/shared/utils/index.d.ts.map +1 -0
- package/shared/utils/init-shared.d.ts +16 -0
- package/shared/utils/init-shared.d.ts.map +1 -0
- package/shared/utils/init-table.d.ts +7 -0
- package/shared/utils/init-table.d.ts.map +1 -0
- package/shared/utils/translate.d.ts +15 -0
- package/shared/utils/translate.d.ts.map +1 -0
- package/shared/yjs-table.d.ts +14 -0
- package/shared/yjs-table.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -0
- package/types/shared.d.ts +5 -0
- package/types/shared.d.ts.map +1 -0
- package/types/view.d.ts +87 -0
- package/types/view.d.ts.map +1 -0
- package/view/action/general.d.ts +6 -0
- package/view/action/general.d.ts.map +1 -0
- package/view/action/index.d.ts +3 -0
- package/view/action/index.d.ts.map +1 -0
- package/view/action/view.d.ts +10 -0
- package/view/action/view.d.ts.map +1 -0
- package/view/constants/view.d.ts +3 -0
- package/view/constants/view.d.ts.map +1 -0
- package/view/plugins/view.plugin.d.ts +3 -0
- 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==
|