@ai-table/state 0.0.50 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAMb,WAAW,EACd,MAAM,UAAU,CAAC;AAoLlB,eAAO,MAAM,cAAc;uBACJ,WAAW,UAAU,aAAa,GAAG,IAAI;CAS/D,CAAC"}
1
+ {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAMb,WAAW,EACd,MAAM,UAAU,CAAC;AAoLlB,eAAO,MAAM,cAAc;uBACJ,WAAW,UAAU,aAAa,GAAG,IAAI;CAkB/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAkB,aAAa,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClI,OAAO,EAMH,WAAW,EAEd,MAAM,UAAU,CAAC;AAElB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,QAS3F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,QAO/G;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,QAOtF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,QAOrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAM9D;AAED,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../packages/state/src/action/record.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,aAAa,EACb,wBAAwB,EAExB,MAAM,EACN,UAAU,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAMH,WAAW,EAEd,MAAM,UAAU,CAAC;AAElB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,QAiB3F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,QAO/G;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,QAqBtF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,QAOrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAM9D;AAED,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
@@ -169,12 +169,21 @@ const apply = (aiTable, records, fields, views, action) => {
169
169
  export const GeneralActions = {
170
170
  transform(aiTable, action) {
171
171
  const records = createDraft(aiTable.records());
172
- const fields = createDraft(aiTable.gridData().fields);
172
+ const fields = createDraft(aiTable.fields());
173
173
  const views = createDraft(aiTable.views());
174
174
  apply(aiTable, records, fields, views, action);
175
- aiTable.fields.set(finishDraft(fields));
176
- aiTable.records.set(finishDraft(records));
177
- aiTable.views.set(finishDraft(views));
175
+ const newFields = finishDraft(fields);
176
+ const newRecords = finishDraft(records);
177
+ const newViews = finishDraft(views);
178
+ if (newFields !== aiTable.fields()) {
179
+ aiTable.fields.set(newFields);
180
+ }
181
+ if (newRecords !== aiTable.records()) {
182
+ aiTable.records.set(newRecords);
183
+ }
184
+ if (newViews !== aiTable.views()) {
185
+ aiTable.views.set(newViews);
186
+ }
178
187
  }
179
188
  };
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9hY3Rpb24vZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQVFiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBK0Isb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBb0IsRUFBRSxPQUEyQixFQUFFLE1BQXFCLEVBQUUsS0FBb0IsRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDcEksUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsS0FBSyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN4QyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDakYsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ2hFLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2pGLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztnQkFDcEUsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BFLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2xDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBRSxNQUFNLENBQUMsTUFBNEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztvQkFDdkYsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDO29CQUN4QixJQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7d0JBQ25DLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUMzQixDQUFDO29CQUNBLE1BQU0sQ0FBQyxNQUE0QixDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FDbkUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUNmLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFDdEIsT0FBTyxDQUFDLE9BQU8sRUFBd0IsRUFDdkMsS0FBSyxDQUNSLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQTJCLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBRSxRQUE2QixDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMzQyxRQUE2QixDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FDN0QsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUNmLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFDdEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQTJCLEVBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBNEIsQ0FBQyxDQUFDO2dCQUMzRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzt3QkFDckIsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3RyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsT0FBTztZQUNYLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDVixDQUFDO1FBQ0QsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUM5QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQzlFLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQy9CLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDakYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE1BQU07UUFDVixDQUFDO1FBRUQsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7WUFDakYsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxDQUFDLEdBQUcsR0FBeUIsQ0FBQztvQkFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ2hCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQixDQUFDO3lCQUFNLENBQUM7d0JBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDOUIsQ0FBQztnQkFDTCxDQUFDO2dCQUVELGdGQUFnRjtnQkFDaEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM1QyxPQUFPLEtBQUssQ0FBcUIsR0FBRyxDQUFDLENBQUM7b0JBQzFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBQzlFLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQXdCLENBQUM7b0JBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNILElBQUksQ0FBQyxDQUFDLENBQVMsR0FBRyxLQUFLLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxnRkFBZ0Y7Z0JBQ2hGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDNUMsT0FBTyxJQUFJLENBQW9CLEdBQUcsQ0FBQyxDQUFDO29CQUN4QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELE1BQU07UUFDVixDQUFDO1FBQ0QsS0FBSyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUM3QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDMUQsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdCLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBVyxDQUFDO29CQUNqRCxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU07UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPO1FBQ1AsTUFBTTtRQUNOLEtBQUs7S0FDUixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLFNBQVMsQ0FBQyxPQUFvQixFQUFFLE1BQXFCO1FBQ2pELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQXVCLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQXNCLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFjdGlvbk5hbWUsXG4gICAgQUlUYWJsZUFjdGlvbixcbiAgICBBSVRhYmxlVmlldyxcbiAgICBBSVRhYmxlVmlld0ZpZWxkLFxuICAgIEFJVGFibGVWaWV3RmllbGRzLFxuICAgIEFJVGFibGVWaWV3UmVjb3JkLFxuICAgIEFJVGFibGVWaWV3UmVjb3JkcyxcbiAgICBBSVZpZXdUYWJsZVxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVEcmFmdCwgZmluaXNoRHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGQsIEFJVGFibGVGaWVsZHMsIGdldERlZmF1bHRGaWVsZFZhbHVlIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFBvc2l0aW9ucywgaXNQYXRoRXF1YWwgfSBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IGFwcGx5ID0gKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmRzOiBBSVRhYmxlVmlld1JlY29yZHMsIGZpZWxkczogQUlUYWJsZUZpZWxkcywgdmlld3M6IEFJVGFibGVWaWV3W10sIGFjdGlvbjogQUlUYWJsZUFjdGlvbikgPT4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlVwZGF0ZUZpZWxkVmFsdWU6IHtcbiAgICAgICAgICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGlmIChyZWNvcmRJZCAmJiBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBhaVRhYmxlLnJlY29yZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSByZWNvcmRJZCk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1tyZWNvcmRJbmRleF0udmFsdWVzW2ZpZWxkSWRdID0gYWN0aW9uLm5ld0ZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuVXBkYXRlU3lzdGVtRmllbGRWYWx1ZToge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHJlY29yZElkICYmIGFjdGlvbi51cGRhdGVkSW5mbykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEluZGV4ID0gYWlUYWJsZS5yZWNvcmRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcmVjb3JkSWQpO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9hdCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2F0ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9ieSkge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS51cGRhdGVkX2J5ID0gYWN0aW9uLnVwZGF0ZWRJbmZvLnVwZGF0ZWRfYnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZFJlY29yZDoge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZEluZGV4XSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHJlY29yZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShhY3Rpb24ucmVjb3JkIGFzIEFJVGFibGVWaWV3UmVjb3JkKS5wb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVmlldyA9IGFpVGFibGUudmlld3MoKS5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gYWlUYWJsZS5hY3RpdmVWaWV3SWQoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHJlY29yZEluZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVmlldz8uc2V0dGluZ3M/LmNvbmRpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVjb3Jkcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvbi5yZWNvcmQgYXMgQUlUYWJsZVZpZXdSZWNvcmQpLnBvc2l0aW9ucyA9IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLnZpZXdzKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5zcGxpY2UocmVjb3JkSW5kZXgsIDAsIGFjdGlvbi5yZWNvcmQgYXMgQUlUYWJsZVZpZXdSZWNvcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLkFkZEZpZWxkOiB7XG4gICAgICAgICAgICBjb25zdCBbZmllbGRJbmRleF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGlmIChmaWVsZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWVsZCA9IGFjdGlvbi5maWVsZDtcbiAgICAgICAgICAgICAgICBpZiAoIShuZXdGaWVsZCBhcyBBSVRhYmxlVmlld0ZpZWxkKS5wb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgKG5ld0ZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9ucyA9IGNyZWF0ZURlZmF1bHRQb3NpdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLnZpZXdzKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZS5ncmlkRGF0YSgpLmZpZWxkcyBhcyBBSVRhYmxlVmlld0ZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5wYXRoWzBdXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpZWxkcy5zcGxpY2UoZmllbGRJbmRleCwgMCwgbmV3RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCk7XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udmFsdWVzW25ld0ZpZWxkLl9pZF0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmlzQ29weSAmJiBhY3Rpb24ub3JpZ2luSWQgPyBpdGVtLnZhbHVlc1thY3Rpb24ub3JpZ2luSWRdIDogZ2V0RGVmYXVsdEZpZWxkVmFsdWUoYWN0aW9uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5Nb3ZlUmVjb3JkOiB7XG4gICAgICAgICAgICBpZiAoaXNQYXRoRXF1YWwoYWN0aW9uLnBhdGgsIGFjdGlvbi5uZXdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNbYWN0aW9uLnBhdGhbMF1dO1xuICAgICAgICAgICAgcmVjb3Jkcy5zcGxpY2UoYWN0aW9uLnBhdGhbMF0sIDEpO1xuICAgICAgICAgICAgcmVjb3Jkcy5zcGxpY2UoYWN0aW9uLm5ld1BhdGhbMF0sIDAsIHJlY29yZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuUmVtb3ZlRmllbGQ6IHtcbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgY29uc3QgZmllbGRJbmRleCA9IGFpVGFibGUuZmllbGRzKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gZmllbGRJZCk7XG4gICAgICAgICAgICBpZiAoZmllbGRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZmllbGRzLnNwbGljZShmaWVsZEluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICByZWNvcmRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0udmFsdWVzW2ZpZWxkSWRdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlJlbW92ZVJlY29yZDoge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBhaVRhYmxlLnJlY29yZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSByZWNvcmRJZCk7XG4gICAgICAgICAgICBpZiAocmVjb3JkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHJlY29yZHMuc3BsaWNlKHJlY29yZEluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlNldEZpZWxkOiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gYWN0aW9uLnBhdGhbMF0pIGFzIEFJVGFibGVGaWVsZDtcbiAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbi5uZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBrZXkgYXMga2V5b2YgQUlUYWJsZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFjdGlvbi5uZXdQcm9wZXJ0aWVzW2tdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkW2tdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkW2tdIGFzIGFueSkgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZGVmaW5lZCwgYnV0IGFyZSBub3cgbWlzc2luZywgbXVzdCBiZSBkZWxldGVkXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb24ubmV3UHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmllbGRbPGtleW9mIEFJVGFibGVGaWVsZD5rZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlNldFZpZXc6IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB2aWV3cy5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gYWN0aW9uLnBhdGhbMF0pIGFzIEFJVGFibGVWaWV3O1xuICAgICAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ubmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5IGFzIGtleW9mIEFJVGFibGVWaWV3O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFjdGlvbi5uZXdQcm9wZXJ0aWVzW2tdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZpZXdba107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodmlld1trXSBhcyBhbnkpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQsIGJ1dCBhcmUgbm93IG1pc3NpbmcsIG11c3QgYmUgZGVsZXRlZFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aW9uLm5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZpZXdbPGtleW9mIEFJVGFibGVWaWV3PmtleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkVmlldzoge1xuICAgICAgICAgICAgY29uc3QgW3ZpZXdJbmRleF0gPSBhY3Rpb24ucGF0aDtcbiAgICAgICAgICAgIGlmICh2aWV3SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHZpZXdzLnNwbGljZSh2aWV3SW5kZXgsIDAsIGFjdGlvbi52aWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVWaWV3OiB7XG4gICAgICAgICAgICBjb25zdCBbdmlld0lkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgY29uc3Qgdmlld0luZGV4ID0gdmlld3MuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gdmlld0lkKTtcbiAgICAgICAgICAgIGlmICh2aWV3SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHZpZXdzLnNwbGljZSh2aWV3SW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlNldFJlY29yZFBvc2l0aW9uczoge1xuICAgICAgICAgICAgY29uc3QgeyBwb3NpdGlvbnMsIHBhdGggfSA9IGFjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHMuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IHBhdGhbMF0pO1xuICAgICAgICAgICAgaWYgKHJlY29yZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Bvc2l0aW9ucyA9IHsgLi4ucmVjb3JkLnBvc2l0aW9ucyB9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHBvc2l0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25zW2tleV0gPT09IG51bGwgfHwgcG9zaXRpb25zW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1Bvc2l0aW9uc1trZXldO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UG9zaXRpb25zW2tleV0gPSBwb3NpdGlvbnNba2V5XSBhcyBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvc2l0aW9ucyA9IG5ld1Bvc2l0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJlY29yZHMsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgdmlld3NcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IEdlbmVyYWxBY3Rpb25zID0ge1xuICAgIHRyYW5zZm9ybShhaVRhYmxlOiBBSVZpZXdUYWJsZSwgYWN0aW9uOiBBSVRhYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlY29yZHMgPSBjcmVhdGVEcmFmdChhaVRhYmxlLnJlY29yZHMoKSkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBjcmVhdGVEcmFmdChhaVRhYmxlLmdyaWREYXRhKCkuZmllbGRzKSBhcyBBSVRhYmxlVmlld0ZpZWxkcztcbiAgICAgICAgY29uc3Qgdmlld3MgPSBjcmVhdGVEcmFmdChhaVRhYmxlLnZpZXdzKCkpO1xuICAgICAgICBhcHBseShhaVRhYmxlLCByZWNvcmRzLCBmaWVsZHMsIHZpZXdzLCBhY3Rpb24pO1xuICAgICAgICBhaVRhYmxlLmZpZWxkcy5zZXQoZmluaXNoRHJhZnQoZmllbGRzKSk7XG4gICAgICAgIGFpVGFibGUucmVjb3Jkcy5zZXQoZmluaXNoRHJhZnQocmVjb3JkcykpO1xuICAgICAgICBhaVRhYmxlLnZpZXdzLnNldChmaW5pc2hEcmFmdCh2aWV3cykpO1xuICAgIH1cbn07XG4iXX0=
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy9hY3Rpb24vZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQVFiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBK0Isb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBb0IsRUFBRSxPQUEyQixFQUFFLE1BQXFCLEVBQUUsS0FBb0IsRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDcEksUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsS0FBSyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN4QyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDakYsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ2hFLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUks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LEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxVQUFVLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksUUFBUSxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWN0aW9uTmFtZSxcbiAgICBBSVRhYmxlQWN0aW9uLFxuICAgIEFJVGFibGVWaWV3LFxuICAgIEFJVGFibGVWaWV3RmllbGQsXG4gICAgQUlUYWJsZVZpZXdGaWVsZHMsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmQsXG4gICAgQUlUYWJsZVZpZXdSZWNvcmRzLFxuICAgIEFJVmlld1RhYmxlXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZURyYWZ0LCBmaW5pc2hEcmFmdCB9IGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZCwgQUlUYWJsZUZpZWxkcywgZ2V0RGVmYXVsdEZpZWxkVmFsdWUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0UG9zaXRpb25zLCBpc1BhdGhFcXVhbCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgYXBwbHkgPSAoYWlUYWJsZTogQUlWaWV3VGFibGUsIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcywgZmllbGRzOiBBSVRhYmxlRmllbGRzLCB2aWV3czogQUlUYWJsZVZpZXdbXSwgYWN0aW9uOiBBSVRhYmxlQWN0aW9uKSA9PiB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuVXBkYXRlRmllbGRWYWx1ZToge1xuICAgICAgICAgICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHJlY29yZElkICYmIGZpZWxkSWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRJbmRleCA9IGFpVGFibGUucmVjb3JkcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IHJlY29yZElkKTtcbiAgICAgICAgICAgICAgICByZWNvcmRzW3JlY29yZEluZGV4XS52YWx1ZXNbZmllbGRJZF0gPSBhY3Rpb24ubmV3RmllbGRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlOiB7XG4gICAgICAgICAgICBjb25zdCBbcmVjb3JkSWRdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBpZiAocmVjb3JkSWQgJiYgYWN0aW9uLnVwZGF0ZWRJbmZvKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZXggPSBhaVRhYmxlLnJlY29yZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSByZWNvcmRJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbi51cGRhdGVkSW5mby51cGRhdGVkX2F0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZHNbcmVjb3JkSW5kZXhdLnVwZGF0ZWRfYXQgPSBhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9hdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbi51cGRhdGVkSW5mby51cGRhdGVkX2J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZHNbcmVjb3JkSW5kZXhdLnVwZGF0ZWRfYnkgPSBhY3Rpb24udXBkYXRlZEluZm8udXBkYXRlZF9ieTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkUmVjb3JkOiB7XG4gICAgICAgICAgICBjb25zdCBbcmVjb3JkSW5kZXhdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBpZiAocmVjb3JkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGlmICghKGFjdGlvbi5yZWNvcmQgYXMgQUlUYWJsZVZpZXdSZWNvcmQpLnBvc2l0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3ID0gYWlUYWJsZS52aWV3cygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcmVjb3JkSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVWaWV3Py5zZXR0aW5ncz8uY29uZGl0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSByZWNvcmRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAoYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCkucG9zaXRpb25zID0gY3JlYXRlRGVmYXVsdFBvc2l0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUudmlld3MoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUuYWN0aXZlVmlld0lkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLnJlY29yZHMoKSBhcyBBSVRhYmxlVmlld1JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWNvcmRzLnNwbGljZShyZWNvcmRJbmRleCwgMCwgYWN0aW9uLnJlY29yZCBhcyBBSVRhYmxlVmlld1JlY29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuQWRkRmllbGQ6IHtcbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZEluZGV4XSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKGZpZWxkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gYWN0aW9uLmZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICghKG5ld0ZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAobmV3RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCkucG9zaXRpb25zID0gY3JlYXRlRGVmYXVsdFBvc2l0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUudmlld3MoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUuYWN0aXZlVmlld0lkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhaVRhYmxlLmdyaWREYXRhKCkuZmllbGRzIGFzIEFJVGFibGVWaWV3RmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnBhdGhbMF1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmllbGRzLnNwbGljZShmaWVsZEluZGV4LCAwLCBuZXdGaWVsZCBhcyBBSVRhYmxlVmlld0ZpZWxkKTtcbiAgICAgICAgICAgICAgICByZWNvcmRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS52YWx1ZXNbbmV3RmllbGQuX2lkXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uaXNDb3B5ICYmIGFjdGlvbi5vcmlnaW5JZCA/IGl0ZW0udmFsdWVzW2FjdGlvbi5vcmlnaW5JZF0gOiBnZXREZWZhdWx0RmllbGRWYWx1ZShhY3Rpb24uZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLk1vdmVSZWNvcmQ6IHtcbiAgICAgICAgICAgIGlmIChpc1BhdGhFcXVhbChhY3Rpb24ucGF0aCwgYWN0aW9uLm5ld1BhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkc1thY3Rpb24ucGF0aFswXV07XG4gICAgICAgICAgICByZWNvcmRzLnNwbGljZShhY3Rpb24ucGF0aFswXSwgMSk7XG4gICAgICAgICAgICByZWNvcmRzLnNwbGljZShhY3Rpb24ubmV3UGF0aFswXSwgMCwgcmVjb3JkKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5SZW1vdmVGaWVsZDoge1xuICAgICAgICAgICAgY29uc3QgW2ZpZWxkSWRdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBjb25zdCBmaWVsZEluZGV4ID0gYWlUYWJsZS5maWVsZHMoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBmaWVsZElkKTtcbiAgICAgICAgICAgIGlmIChmaWVsZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBmaWVsZHMuc3BsaWNlKGZpZWxkSW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIHJlY29yZHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS52YWx1ZXNbZmllbGRJZF07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuUmVtb3ZlUmVjb3JkOiB7XG4gICAgICAgICAgICBjb25zdCBbcmVjb3JkSWRdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBjb25zdCByZWNvcmRJbmRleCA9IGFpVGFibGUucmVjb3JkcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IHJlY29yZElkKTtcbiAgICAgICAgICAgIGlmIChyZWNvcmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5zcGxpY2UocmVjb3JkSW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuU2V0RmllbGQ6IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBhY3Rpb24ucGF0aFswXSkgYXMgQUlUYWJsZUZpZWxkO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uLm5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiBBSVRhYmxlRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYWN0aW9uLm5ld1Byb3BlcnRpZXNba107XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmllbGRba107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRba10gYXMgYW55KSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb24ucHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbi5uZXdQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZFs8a2V5b2YgQUlUYWJsZUZpZWxkPmtleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuU2V0Vmlldzoge1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IHZpZXdzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSBhY3Rpb24ucGF0aFswXSkgYXMgQUlUYWJsZVZpZXc7XG4gICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbi5uZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBrZXkgYXMga2V5b2YgQUlUYWJsZVZpZXc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYWN0aW9uLm5ld1Byb3BlcnRpZXNba107XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmlld1trXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3W2tdIGFzIGFueSkgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZGVmaW5lZCwgYnV0IGFyZSBub3cgbWlzc2luZywgbXVzdCBiZSBkZWxldGVkXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb24ubmV3UHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmlld1s8a2V5b2YgQUlUYWJsZVZpZXc+a2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQWN0aW9uTmFtZS5BZGRWaWV3OiB7XG4gICAgICAgICAgICBjb25zdCBbdmlld0luZGV4XSA9IGFjdGlvbi5wYXRoO1xuICAgICAgICAgICAgaWYgKHZpZXdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdmlld3Muc3BsaWNlKHZpZXdJbmRleCwgMCwgYWN0aW9uLnZpZXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBY3Rpb25OYW1lLlJlbW92ZVZpZXc6IHtcbiAgICAgICAgICAgIGNvbnN0IFt2aWV3SWRdID0gYWN0aW9uLnBhdGg7XG4gICAgICAgICAgICBjb25zdCB2aWV3SW5kZXggPSB2aWV3cy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSB2aWV3SWQpO1xuICAgICAgICAgICAgaWYgKHZpZXdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdmlld3Muc3BsaWNlKHZpZXdJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFjdGlvbk5hbWUuU2V0UmVjb3JkUG9zaXRpb25zOiB7XG4gICAgICAgICAgICBjb25zdCB7IHBvc2l0aW9ucywgcGF0aCB9ID0gYWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkcy5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gcGF0aFswXSk7XG4gICAgICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UG9zaXRpb25zID0geyAuLi5yZWNvcmQucG9zaXRpb25zIH07XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcG9zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbnNba2V5XSA9PT0gbnVsbCB8fCBwb3NpdGlvbnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3UG9zaXRpb25zW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQb3NpdGlvbnNba2V5XSA9IHBvc2l0aW9uc1trZXldIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWNvcmQucG9zaXRpb25zID0gbmV3UG9zaXRpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICB2aWV3c1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhbEFjdGlvbnMgPSB7XG4gICAgdHJhbnNmb3JtKGFpVGFibGU6IEFJVmlld1RhYmxlLCBhY3Rpb246IEFJVGFibGVBY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUucmVjb3JkcygpKSBhcyBBSVRhYmxlVmlld1JlY29yZHM7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUuZmllbGRzKCkpIGFzIEFJVGFibGVWaWV3RmllbGRzO1xuICAgICAgICBjb25zdCB2aWV3cyA9IGNyZWF0ZURyYWZ0KGFpVGFibGUudmlld3MoKSk7XG4gICAgICAgIGFwcGx5KGFpVGFibGUsIHJlY29yZHMsIGZpZWxkcywgdmlld3MsIGFjdGlvbik7XG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkcyA9IGZpbmlzaERyYWZ0KGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZHMgPSBmaW5pc2hEcmFmdChyZWNvcmRzKTtcbiAgICAgICAgY29uc3QgbmV3Vmlld3MgPSBmaW5pc2hEcmFmdCh2aWV3cyk7XG4gICAgICAgIGlmIChuZXdGaWVsZHMgIT09IGFpVGFibGUuZmllbGRzKCkpIHtcbiAgICAgICAgICAgIGFpVGFibGUuZmllbGRzLnNldChuZXdGaWVsZHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdSZWNvcmRzICE9PSBhaVRhYmxlLnJlY29yZHMoKSkge1xuICAgICAgICAgICAgYWlUYWJsZS5yZWNvcmRzLnNldChuZXdSZWNvcmRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3Vmlld3MgIT09IGFpVGFibGUudmlld3MoKSkge1xuICAgICAgICAgICAgYWlUYWJsZS52aWV3cy5zZXQobmV3Vmlld3MpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
@@ -1,14 +1,21 @@
1
- import { AITableQueries } from '@ai-table/grid';
1
+ import { AITableQueries, FieldModelMap } from '@ai-table/grid';
2
2
  import { ActionName } from '../types';
3
3
  export function updateFieldValue(aiTable, value, path) {
4
4
  const oldValue = AITableQueries.getFieldValue(aiTable, path);
5
- const operation = {
6
- type: ActionName.UpdateFieldValue,
7
- fieldValue: oldValue,
8
- newFieldValue: value,
9
- path
10
- };
11
- aiTable.apply(operation);
5
+ const field = AITableQueries.getField(aiTable, [path[1]]);
6
+ const fieldModel = field && FieldModelMap[field.type];
7
+ if (fieldModel && fieldModel.isValid(value)) {
8
+ const operation = {
9
+ type: ActionName.UpdateFieldValue,
10
+ fieldValue: oldValue,
11
+ newFieldValue: value,
12
+ path
13
+ };
14
+ aiTable.apply(operation);
15
+ }
16
+ else {
17
+ console.error(`Invalid field value at update field value. invalidFieldValue: ${field?.type}, value: ${value}, field_id: ${path[1]}`);
18
+ }
12
19
  }
13
20
  export function updateSystemFieldValue(aiTable, path, updatedInfo) {
14
21
  const operation = {
@@ -19,12 +26,27 @@ export function updateSystemFieldValue(aiTable, path, updatedInfo) {
19
26
  aiTable.apply(operation);
20
27
  }
21
28
  export function addRecord(aiTable, record, path) {
22
- const operation = {
23
- type: ActionName.AddRecord,
24
- record,
25
- path
26
- };
27
- aiTable.apply(operation);
29
+ const invalidFieldValues = [];
30
+ const isValid = Object.entries(record.values).every(([fieldId, value]) => {
31
+ const field = AITableQueries.getField(aiTable, [fieldId]);
32
+ const fieldModel = field && FieldModelMap[field.type];
33
+ const result = fieldModel ? fieldModel.isValid(value) : false;
34
+ if (!result) {
35
+ invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);
36
+ }
37
+ return result;
38
+ });
39
+ if (isValid) {
40
+ const operation = {
41
+ type: ActionName.AddRecord,
42
+ record,
43
+ path
44
+ };
45
+ aiTable.apply(operation);
46
+ }
47
+ else {
48
+ console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);
49
+ }
28
50
  }
29
51
  export function moveRecord(aiTable, path, newPath) {
30
52
  const operation = {
@@ -48,4 +70,4 @@ export const RecordActions = {
48
70
  removeRecord,
49
71
  updateSystemFieldValue
50
72
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL2FjdGlvbi9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixjQUFjLEVBQStELE1BQU0sZ0JBQWdCLENBQUM7QUFDbEksT0FBTyxFQUVILFVBQVUsRUFNYixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxLQUFVLEVBQUUsSUFBeUI7SUFDeEYsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsTUFBTSxTQUFTLEdBQTJCO1FBQ3RDLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1FBQ2pDLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLElBQUk7S0FDUCxDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQW9CLEVBQUUsSUFBWSxFQUFFLFdBQXFDO0lBQzVHLE1BQU0sU0FBUyxHQUEyQjtRQUN0QyxJQUFJLEVBQUUsVUFBVSxDQUFDLHNCQUFzQjtRQUN2QyxXQUFXO1FBQ1gsSUFBSTtLQUNQLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CLEVBQUUsTUFBcUIsRUFBRSxJQUFnQjtJQUNuRixNQUFNLFNBQVMsR0FBb0I7UUFDL0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQzFCLE1BQU07UUFDTixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBb0IsRUFBRSxJQUFnQixFQUFFLE9BQW1CO0lBQ2xGLE1BQU0sU0FBUyxHQUFxQjtRQUNoQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVU7UUFDM0IsSUFBSTtRQUNKLE9BQU87S0FDVixDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFvQixFQUFFLElBQVk7SUFDM0QsTUFBTSxTQUFTLEdBQXVCO1FBQ2xDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUM3QixJQUFJO0tBQ1AsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixZQUFZO0lBQ1osc0JBQXNCO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVJlY29yZEZpZWxkSWRQYXRoLCBBSVRhYmxlUXVlcmllcywgQUlUYWJsZVJlY29yZCwgQUlUYWJsZVJlY29yZFVwZGF0ZWRJbmZvLCBJZFBhdGgsIE51bWJlclBhdGggfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQge1xuICAgIFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24sXG4gICAgQWN0aW9uTmFtZSxcbiAgICBBZGRSZWNvcmRBY3Rpb24sXG4gICAgTW92ZVJlY29yZEFjdGlvbixcbiAgICBSZW1vdmVSZWNvcmRBY3Rpb24sXG4gICAgQUlWaWV3VGFibGUsXG4gICAgVXBkYXRlU3lzdGVtRmllbGRWYWx1ZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWVsZFZhbHVlKGFpVGFibGU6IEFJVmlld1RhYmxlLCB2YWx1ZTogYW55LCBwYXRoOiBBSVJlY29yZEZpZWxkSWRQYXRoKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIHBhdGgpO1xuICAgIGNvbnN0IG9wZXJhdGlvbjogVXBkYXRlRmllbGRWYWx1ZUFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVGaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZFZhbHVlOiBvbGRWYWx1ZSxcbiAgICAgICAgbmV3RmllbGRWYWx1ZTogdmFsdWUsXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN5c3RlbUZpZWxkVmFsdWUoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IElkUGF0aCwgdXBkYXRlZEluZm86IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbykge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlLFxuICAgICAgICB1cGRhdGVkSW5mbyxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVjb3JkKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIHBhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IEFkZFJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRSZWNvcmQsXG4gICAgICAgIHJlY29yZCxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZVJlY29yZChhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcGF0aDogTnVtYmVyUGF0aCwgbmV3UGF0aDogTnVtYmVyUGF0aCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogTW92ZVJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5Nb3ZlUmVjb3JkLFxuICAgICAgICBwYXRoLFxuICAgICAgICBuZXdQYXRoXG4gICAgfTtcbiAgICBhaVRhYmxlLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVSZWNvcmQoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IElkUGF0aCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogUmVtb3ZlUmVjb3JkQWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLlJlbW92ZVJlY29yZCxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgY29uc3QgUmVjb3JkQWN0aW9ucyA9IHtcbiAgICBhZGRSZWNvcmQsXG4gICAgdXBkYXRlRmllbGRWYWx1ZSxcbiAgICBtb3ZlUmVjb3JkLFxuICAgIHJlbW92ZVJlY29yZCxcbiAgICB1cGRhdGVTeXN0ZW1GaWVsZFZhbHVlXG59O1xuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL2FjdGlvbi9yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGNBQWMsRUFHZCxhQUFhLEVBR2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVILFVBQVUsRUFNYixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxLQUFVLEVBQUUsSUFBeUI7SUFDeEYsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELE1BQU0sVUFBVSxHQUFHLEtBQUssSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBMkI7WUFDdEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDakMsVUFBVSxFQUFFLFFBQVE7WUFDcEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsSUFBSTtTQUNQLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLEtBQUssQ0FDVCxpRUFBaUUsS0FBSyxFQUFFLElBQUksWUFBWSxLQUFLLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3hILENBQUM7SUFDTixDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQixFQUFFLElBQVksRUFBRSxXQUFxQztJQUM1RyxNQUFNLFNBQVMsR0FBMkI7UUFDdEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0I7UUFDdkMsV0FBVztRQUNYLElBQUk7S0FDUCxDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFvQixFQUFFLE1BQXFCLEVBQUUsSUFBZ0I7SUFDbkYsTUFBTSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNyRSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsT0FBTyxpQkFBaUIsS0FBSyxFQUFFLElBQUksWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUNILElBQUksT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLFNBQVMsR0FBb0I7WUFDL0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQzFCLE1BQU07WUFDTixJQUFJO1NBQ1AsQ0FBQztRQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQW9CLEVBQUUsSUFBZ0IsRUFBRSxPQUFtQjtJQUNsRixNQUFNLFNBQVMsR0FBcUI7UUFDaEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVO1FBQzNCLElBQUk7UUFDSixPQUFPO0tBQ1YsQ0FBQztJQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBb0IsRUFBRSxJQUFZO0lBQzNELE1BQU0sU0FBUyxHQUF1QjtRQUNsQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVk7UUFDN0IsSUFBSTtLQUNQLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDekIsU0FBUztJQUNULGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsWUFBWTtJQUNaLHNCQUFzQjtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBSVJlY29yZEZpZWxkSWRQYXRoLFxuICAgIEFJVGFibGVRdWVyaWVzLFxuICAgIEFJVGFibGVSZWNvcmQsXG4gICAgQUlUYWJsZVJlY29yZFVwZGF0ZWRJbmZvLFxuICAgIEZpZWxkTW9kZWxNYXAsXG4gICAgSWRQYXRoLFxuICAgIE51bWJlclBhdGhcbn0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHtcbiAgICBVcGRhdGVGaWVsZFZhbHVlQWN0aW9uLFxuICAgIEFjdGlvbk5hbWUsXG4gICAgQWRkUmVjb3JkQWN0aW9uLFxuICAgIE1vdmVSZWNvcmRBY3Rpb24sXG4gICAgUmVtb3ZlUmVjb3JkQWN0aW9uLFxuICAgIEFJVmlld1RhYmxlLFxuICAgIFVwZGF0ZVN5c3RlbUZpZWxkVmFsdWVcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmllbGRWYWx1ZShhaVRhYmxlOiBBSVZpZXdUYWJsZSwgdmFsdWU6IGFueSwgcGF0aDogQUlSZWNvcmRGaWVsZElkUGF0aCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGRWYWx1ZShhaVRhYmxlLCBwYXRoKTtcbiAgICBjb25zdCBmaWVsZCA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkKGFpVGFibGUsIFtwYXRoWzFdXSk7XG4gICAgY29uc3QgZmllbGRNb2RlbCA9IGZpZWxkICYmIEZpZWxkTW9kZWxNYXBbZmllbGQudHlwZV07XG4gICAgaWYgKGZpZWxkTW9kZWwgJiYgZmllbGRNb2RlbC5pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBvcGVyYXRpb246IFVwZGF0ZUZpZWxkVmFsdWVBY3Rpb24gPSB7XG4gICAgICAgICAgICB0eXBlOiBBY3Rpb25OYW1lLlVwZGF0ZUZpZWxkVmFsdWUsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBvbGRWYWx1ZSxcbiAgICAgICAgICAgIG5ld0ZpZWxkVmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgcGF0aFxuICAgICAgICB9O1xuICAgICAgICBhaVRhYmxlLmFwcGx5KG9wZXJhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGZpZWxkIHZhbHVlIGF0IHVwZGF0ZSBmaWVsZCB2YWx1ZS4gaW52YWxpZEZpZWxkVmFsdWU6ICR7ZmllbGQ/LnR5cGV9LCB2YWx1ZTogJHt2YWx1ZX0sIGZpZWxkX2lkOiAke3BhdGhbMV19YFxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN5c3RlbUZpZWxkVmFsdWUoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IElkUGF0aCwgdXBkYXRlZEluZm86IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbykge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogVXBkYXRlU3lzdGVtRmllbGRWYWx1ZSA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5VcGRhdGVTeXN0ZW1GaWVsZFZhbHVlLFxuICAgICAgICB1cGRhdGVkSW5mbyxcbiAgICAgICAgcGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVjb3JkKGFpVGFibGU6IEFJVmlld1RhYmxlLCByZWNvcmQ6IEFJVGFibGVSZWNvcmQsIHBhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCBpbnZhbGlkRmllbGRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgaXNWYWxpZCA9IE9iamVjdC5lbnRyaWVzKHJlY29yZC52YWx1ZXMpLmV2ZXJ5KChbZmllbGRJZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gQUlUYWJsZVF1ZXJpZXMuZ2V0RmllbGQoYWlUYWJsZSwgW2ZpZWxkSWRdKTtcbiAgICAgICAgY29uc3QgZmllbGRNb2RlbCA9IGZpZWxkICYmIEZpZWxkTW9kZWxNYXBbZmllbGQudHlwZV07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpZWxkTW9kZWwgPyBmaWVsZE1vZGVsLmlzVmFsaWQodmFsdWUpIDogZmFsc2U7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICBpbnZhbGlkRmllbGRWYWx1ZXMucHVzaChgZmllbGRfaWQ6ICR7ZmllbGRJZH0sIGZpZWxkX3R5cGU6ICR7ZmllbGQ/LnR5cGV9LCB2YWx1ZTogJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbjogQWRkUmVjb3JkQWN0aW9uID0ge1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5BZGRSZWNvcmQsXG4gICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH07XG4gICAgICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGZpZWxkIHZhbHVlcyBhdCBhZGQgcmVjb3JkLiBpbnZhbGlkRmllbGRWYWx1ZXM6ICR7aW52YWxpZEZpZWxkVmFsdWVzfWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVSZWNvcmQoYWlUYWJsZTogQUlWaWV3VGFibGUsIHBhdGg6IE51bWJlclBhdGgsIG5ld1BhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IE1vdmVSZWNvcmRBY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEFjdGlvbk5hbWUuTW92ZVJlY29yZCxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbmV3UGF0aFxuICAgIH07XG4gICAgYWlUYWJsZS5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUmVjb3JkKGFpVGFibGU6IEFJVmlld1RhYmxlLCBwYXRoOiBJZFBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IFJlbW92ZVJlY29yZEFjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogQWN0aW9uTmFtZS5SZW1vdmVSZWNvcmQsXG4gICAgICAgIHBhdGhcbiAgICB9O1xuICAgIGFpVGFibGUuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGNvbnN0IFJlY29yZEFjdGlvbnMgPSB7XG4gICAgYWRkUmVjb3JkLFxuICAgIHVwZGF0ZUZpZWxkVmFsdWUsXG4gICAgbW92ZVJlY29yZCxcbiAgICByZW1vdmVSZWNvcmQsXG4gICAgdXBkYXRlU3lzdGVtRmllbGRWYWx1ZVxufTtcbiJdfQ==
@@ -3,7 +3,7 @@ export function getFieldPositionInView(viewId, fields, path, newPath) {
3
3
  let newPosition = 0;
4
4
  if (path[0] > newPath[0]) {
5
5
  const prevPath = newPath[0] - 1;
6
- if (prevPath > 0) {
6
+ if (prevPath >= 0) {
7
7
  const targetPrevField = fields[prevPath];
8
8
  const targetPrevPosition = targetPrevField.positions[viewId];
9
9
  newPosition = (targetPosition + targetPrevPosition) / 2;
@@ -35,4 +35,4 @@ export function getFieldsSizeMap(fields, activeView) {
35
35
  });
36
36
  return fieldsSizeMap;
37
37
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvdXRpbHMvZmllbGQvcG9zaXRpb24tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxNQUFxQixFQUFFLElBQWdCLEVBQUUsT0FBbUI7SUFDL0csTUFBTSxjQUFjLEdBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBc0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsTUFBTSxrQkFBa0IsR0FBSSxlQUFvQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRixXQUFXLEdBQUcsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsV0FBVyxHQUFJLFVBQStCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMzRSxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsTUFBTSxrQkFBa0IsR0FBSSxlQUFvQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRixXQUFXLEdBQUcsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLFlBQVksR0FBSSxTQUE4QixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0UsV0FBVyxHQUFHLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBMEIsRUFBRSxVQUF1QjtJQUNoRixNQUFNLGFBQWEsR0FBeUIsRUFBRSxDQUFDO0lBQy9DLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QixhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlUYWJsZUZpZWxkcywgQUlUYWJsZUZpZWxkc1NpemVNYXAsIE51bWJlclBhdGggfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlVmlldywgQUlUYWJsZVZpZXdGaWVsZCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkUG9zaXRpb25JblZpZXcodmlld0lkOiBzdHJpbmcsIGZpZWxkczogQUlUYWJsZUZpZWxkcywgcGF0aDogTnVtYmVyUGF0aCwgbmV3UGF0aDogTnVtYmVyUGF0aCkge1xuICAgIGNvbnN0IHRhcmdldFBvc2l0aW9uID0gKGZpZWxkc1tuZXdQYXRoWzBdXSBhcyBBSVRhYmxlVmlld0ZpZWxkKS5wb3NpdGlvbnNbdmlld0lkXTtcbiAgICBsZXQgbmV3UG9zaXRpb24gPSAwO1xuICAgIGlmIChwYXRoWzBdID4gbmV3UGF0aFswXSkge1xuICAgICAgICBjb25zdCBwcmV2UGF0aCA9IG5ld1BhdGhbMF0gLSAxO1xuICAgICAgICBpZiAocHJldlBhdGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQcmV2RmllbGQgPSBmaWVsZHNbcHJldlBhdGhdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UHJldlBvc2l0aW9uID0gKHRhcmdldFByZXZGaWVsZCBhcyBBSVRhYmxlVmlld0ZpZWxkKS5wb3NpdGlvbnNbdmlld0lkXTtcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gKHRhcmdldFBvc2l0aW9uICsgdGFyZ2V0UHJldlBvc2l0aW9uKSAvIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEZpZWxkID0gZmllbGRzWzBdO1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSAoZmlyc3RGaWVsZCBhcyBBSVRhYmxlVmlld0ZpZWxkKS5wb3NpdGlvbnNbdmlld0lkXSAtIDAuMTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5leHRQYXRoID0gbmV3UGF0aFswXSArIDE7XG4gICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gbmV4dFBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5leHRGaWVsZCA9IGZpZWxkc1tuZXh0UGF0aF07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXROZXh0UG9zaXRpb24gPSAodGFyZ2V0TmV4dEZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9uc1t2aWV3SWRdO1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSAodGFyZ2V0UG9zaXRpb24gKyB0YXJnZXROZXh0UG9zaXRpb24pIC8gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RGaWVsZCA9IGZpZWxkc1tmaWVsZHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBsYXN0UG9zaXRpb24gPSAobGFzdEZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9uc1t2aWV3SWRdICsgMTtcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gKHRhcmdldFBvc2l0aW9uICsgbGFzdFBvc2l0aW9uKSAvIDI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1Bvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRzU2l6ZU1hcChmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRbXSwgYWN0aXZlVmlldzogQUlUYWJsZVZpZXcpIHtcbiAgICBjb25zdCBmaWVsZHNTaXplTWFwOiBBSVRhYmxlRmllbGRzU2l6ZU1hcCA9IHt9O1xuICAgIGZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgZmllbGRzU2l6ZU1hcFtmaWVsZC5faWRdID0gZmllbGQud2lkdGhzPy5bYWN0aXZlVmlldy5faWRdO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWVsZHNTaXplTWFwO1xufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvdXRpbHMvZmllbGQvcG9zaXRpb24tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxNQUFxQixFQUFFLElBQWdCLEVBQUUsT0FBbUI7SUFDL0csTUFBTSxjQUFjLEdBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBc0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sa0JBQWtCLEdBQUksZUFBb0MsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkYsV0FBVyxHQUFHLENBQUMsY0FBYyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLFdBQVcsR0FBSSxVQUErQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDM0UsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDM0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sa0JBQWtCLEdBQUksZUFBb0MsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkYsV0FBVyxHQUFHLENBQUMsY0FBYyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUksU0FBOEIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNFLFdBQVcsR0FBRyxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQTBCLEVBQUUsVUFBdUI7SUFDaEYsTUFBTSxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUMvQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdEIsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGVGaWVsZHMsIEFJVGFibGVGaWVsZHNTaXplTWFwLCBOdW1iZXJQYXRoIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQUlUYWJsZVZpZXcsIEFJVGFibGVWaWV3RmllbGQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZFBvc2l0aW9uSW5WaWV3KHZpZXdJZDogc3RyaW5nLCBmaWVsZHM6IEFJVGFibGVGaWVsZHMsIHBhdGg6IE51bWJlclBhdGgsIG5ld1BhdGg6IE51bWJlclBhdGgpIHtcbiAgICBjb25zdCB0YXJnZXRQb3NpdGlvbiA9IChmaWVsZHNbbmV3UGF0aFswXV0gYXMgQUlUYWJsZVZpZXdGaWVsZCkucG9zaXRpb25zW3ZpZXdJZF07XG4gICAgbGV0IG5ld1Bvc2l0aW9uID0gMDtcbiAgICBpZiAocGF0aFswXSA+IG5ld1BhdGhbMF0pIHtcbiAgICAgICAgY29uc3QgcHJldlBhdGggPSBuZXdQYXRoWzBdIC0gMTtcbiAgICAgICAgaWYgKHByZXZQYXRoID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFByZXZGaWVsZCA9IGZpZWxkc1twcmV2UGF0aF07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQcmV2UG9zaXRpb24gPSAodGFyZ2V0UHJldkZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9uc1t2aWV3SWRdO1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSAodGFyZ2V0UG9zaXRpb24gKyB0YXJnZXRQcmV2UG9zaXRpb24pIC8gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RmllbGQgPSBmaWVsZHNbMF07XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IChmaXJzdEZpZWxkIGFzIEFJVGFibGVWaWV3RmllbGQpLnBvc2l0aW9uc1t2aWV3SWRdIC0gMC4xO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFBhdGggPSBuZXdQYXRoWzBdICsgMTtcbiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiBuZXh0UGF0aCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmV4dEZpZWxkID0gZmllbGRzW25leHRQYXRoXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5leHRQb3NpdGlvbiA9ICh0YXJnZXROZXh0RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCkucG9zaXRpb25zW3ZpZXdJZF07XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9ICh0YXJnZXRQb3NpdGlvbiArIHRhcmdldE5leHRQb3NpdGlvbikgLyAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGFzdEZpZWxkID0gZmllbGRzW2ZpZWxkcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RQb3NpdGlvbiA9IChsYXN0RmllbGQgYXMgQUlUYWJsZVZpZXdGaWVsZCkucG9zaXRpb25zW3ZpZXdJZF0gKyAxO1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSAodGFyZ2V0UG9zaXRpb24gKyBsYXN0UG9zaXRpb24pIC8gMjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3UG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZHNTaXplTWFwKGZpZWxkczogQUlUYWJsZVZpZXdGaWVsZFtdLCBhY3RpdmVWaWV3OiBBSVRhYmxlVmlldykge1xuICAgIGNvbnN0IGZpZWxkc1NpemVNYXA6IEFJVGFibGVGaWVsZHNTaXplTWFwID0ge307XG4gICAgZmllbGRzPy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBmaWVsZHNTaXplTWFwW2ZpZWxkLl9pZF0gPSBmaWVsZC53aWR0aHM/LlthY3RpdmVWaWV3Ll9pZF07XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpZWxkc1NpemVNYXA7XG59XG4iXX0=
@@ -912,7 +912,7 @@ function getFieldPositionInView(viewId, fields, path, newPath) {
912
912
  let newPosition = 0;
913
913
  if (path[0] > newPath[0]) {
914
914
  const prevPath = newPath[0] - 1;
915
- if (prevPath > 0) {
915
+ if (prevPath >= 0) {
916
916
  const targetPrevField = fields[prevPath];
917
917
  const targetPrevPosition = targetPrevField.positions[viewId];
918
918
  newPosition = (targetPosition + targetPrevPosition) / 2;
@@ -1177,12 +1177,21 @@ const apply = (aiTable, records, fields, views, action) => {
1177
1177
  const GeneralActions = {
1178
1178
  transform(aiTable, action) {
1179
1179
  const records = createDraft(aiTable.records());
1180
- const fields = createDraft(aiTable.gridData().fields);
1180
+ const fields = createDraft(aiTable.fields());
1181
1181
  const views = createDraft(aiTable.views());
1182
1182
  apply(aiTable, records, fields, views, action);
1183
- aiTable.fields.set(finishDraft(fields));
1184
- aiTable.records.set(finishDraft(records));
1185
- aiTable.views.set(finishDraft(views));
1183
+ const newFields = finishDraft(fields);
1184
+ const newRecords = finishDraft(records);
1185
+ const newViews = finishDraft(views);
1186
+ if (newFields !== aiTable.fields()) {
1187
+ aiTable.fields.set(newFields);
1188
+ }
1189
+ if (newRecords !== aiTable.records()) {
1190
+ aiTable.records.set(newRecords);
1191
+ }
1192
+ if (newViews !== aiTable.views()) {
1193
+ aiTable.views.set(newViews);
1194
+ }
1186
1195
  }
1187
1196
  };
1188
1197
 
@@ -1200,13 +1209,20 @@ const PositionsActions = {
1200
1209
 
1201
1210
  function updateFieldValue$1(aiTable, value, path) {
1202
1211
  const oldValue = AITableQueries.getFieldValue(aiTable, path);
1203
- const operation = {
1204
- type: ActionName.UpdateFieldValue,
1205
- fieldValue: oldValue,
1206
- newFieldValue: value,
1207
- path
1208
- };
1209
- aiTable.apply(operation);
1212
+ const field = AITableQueries.getField(aiTable, [path[1]]);
1213
+ const fieldModel = field && FieldModelMap[field.type];
1214
+ if (fieldModel && fieldModel.isValid(value)) {
1215
+ const operation = {
1216
+ type: ActionName.UpdateFieldValue,
1217
+ fieldValue: oldValue,
1218
+ newFieldValue: value,
1219
+ path
1220
+ };
1221
+ aiTable.apply(operation);
1222
+ }
1223
+ else {
1224
+ console.error(`Invalid field value at update field value. invalidFieldValue: ${field?.type}, value: ${value}, field_id: ${path[1]}`);
1225
+ }
1210
1226
  }
1211
1227
  function updateSystemFieldValue(aiTable, path, updatedInfo) {
1212
1228
  const operation = {
@@ -1217,12 +1233,27 @@ function updateSystemFieldValue(aiTable, path, updatedInfo) {
1217
1233
  aiTable.apply(operation);
1218
1234
  }
1219
1235
  function addRecord(aiTable, record, path) {
1220
- const operation = {
1221
- type: ActionName.AddRecord,
1222
- record,
1223
- path
1224
- };
1225
- aiTable.apply(operation);
1236
+ const invalidFieldValues = [];
1237
+ const isValid = Object.entries(record.values).every(([fieldId, value]) => {
1238
+ const field = AITableQueries.getField(aiTable, [fieldId]);
1239
+ const fieldModel = field && FieldModelMap[field.type];
1240
+ const result = fieldModel ? fieldModel.isValid(value) : false;
1241
+ if (!result) {
1242
+ invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);
1243
+ }
1244
+ return result;
1245
+ });
1246
+ if (isValid) {
1247
+ const operation = {
1248
+ type: ActionName.AddRecord,
1249
+ record,
1250
+ path
1251
+ };
1252
+ aiTable.apply(operation);
1253
+ }
1254
+ else {
1255
+ console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);
1256
+ }
1226
1257
  }
1227
1258
  function moveRecord(aiTable, path, newPath) {
1228
1259
  const operation = {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n widths?: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIRecordFieldIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n originId?: string;\n isCopy?: boolean;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n return [index + indexOffset];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index];\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIRecordFieldIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.gridData().fields as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIRecordFieldIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(insertIndex, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings,\n AITable,\n AITableField,\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, cellValue, {\n aiTable, field\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, cellValue: FieldValue, options: {\n aiTable: AITable;\n field: AITableField,\n}) {\n return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType } from '@ai-table/grid';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath > 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.gridData().fields) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n aiTable.fields.set(finishDraft(fields));\n aiTable.records.set(finishDraft(records));\n aiTable.views.set(finishDraft(views));\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import { AIRecordFieldIdPath, AITableQueries, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord, path: NumberPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index], options.originId, options.isCopy);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.records() as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord, [addIndex + index]);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../types\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":"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"}
1
+ {"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n widths?: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIRecordFieldIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n originId?: string;\n isCopy?: boolean;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n return [index + indexOffset];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index];\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIRecordFieldIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.gridData().fields as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIRecordFieldIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(insertIndex, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings,\n AITable,\n AITableField,\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, cellValue, {\n aiTable, field\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, cellValue: FieldValue, options: {\n aiTable: AITable;\n field: AITableField,\n}) {\n return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType } from '@ai-table/grid';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath >= 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n const newFields = finishDraft(fields);\n const newRecords = finishDraft(records);\n const newViews = finishDraft(views);\n if (newFields !== aiTable.fields()) {\n aiTable.fields.set(newFields);\n }\n if (newRecords !== aiTable.records()) {\n aiTable.records.set(newRecords);\n }\n if (newViews !== aiTable.views()) {\n aiTable.views.set(newViews);\n }\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import {\n AIRecordFieldIdPath,\n AITableQueries,\n AITableRecord,\n AITableRecordUpdatedInfo,\n FieldModelMap,\n IdPath,\n NumberPath\n} from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const field = AITableQueries.getField(aiTable, [path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(\n `Invalid field value at update field value. invalidFieldValue: ${field?.type}, value: ${value}, field_id: ${path[1]}`\n );\n }\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord, path: NumberPath) {\n const invalidFieldValues: string[] = [];\n const isValid = Object.entries(record.values).every(([fieldId, value]) => {\n const field = AITableQueries.getField(aiTable, [fieldId]);\n const fieldModel = field && FieldModelMap[field.type];\n const result = fieldModel ? fieldModel.isValid(value) : false;\n if (!result) {\n invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);\n }\n return result;\n });\n if (isValid) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);\n }\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index], options.originId, options.isCopy);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.records() as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord, [addIndex + index]);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../types\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-table/state",
3
- "version": "0.0.50",
3
+ "version": "0.0.52",
4
4
  "peerDependencies": {
5
5
  "@ai-table/grid": "^0.0.7"
6
6
  },