@ai-table/state 0.0.44 → 0.0.46
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.
- package/action/field.d.ts +2 -0
- package/action/field.d.ts.map +1 -1
- package/action/general.d.ts.map +1 -1
- package/action/index.d.ts +1 -0
- package/action/index.d.ts.map +1 -1
- package/constants/context-menu-item.d.ts +4 -4
- package/constants/context-menu-item.d.ts.map +1 -1
- package/constants/field-menu-item.d.ts +3 -3
- package/constants/field-menu-item.d.ts.map +1 -1
- package/esm2022/action/field.mjs +10 -3
- package/esm2022/action/general.mjs +4 -2
- package/esm2022/constants/context-menu-item.mjs +36 -30
- package/esm2022/constants/field-menu-item.mjs +9 -7
- package/esm2022/types/view.mjs +1 -1
- package/esm2022/utils/common.mjs +7 -5
- package/esm2022/utils/field/move-fields.mjs +1 -31
- package/esm2022/utils/field/position-field.mjs +38 -0
- package/esm2022/utils/field/remove-field.mjs +4 -3
- package/esm2022/utils/i18n.mjs +37 -0
- package/esm2022/utils/index.mjs +3 -1
- package/esm2022/utils/view.mjs +9 -5
- package/fesm2022/ai-table-state.mjs +140 -78
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/types/view.d.ts +1 -0
- package/types/view.d.ts.map +1 -1
- package/utils/common.d.ts +2 -1
- package/utils/common.d.ts.map +1 -1
- package/utils/field/move-fields.d.ts +1 -2
- package/utils/field/move-fields.d.ts.map +1 -1
- package/utils/field/position-field.d.ts +5 -0
- package/utils/field/position-field.d.ts.map +1 -0
- package/utils/field/remove-field.d.ts +1 -1
- package/utils/field/remove-field.d.ts.map +1 -1
- package/utils/i18n.d.ts +15 -0
- package/utils/i18n.d.ts.map +1 -0
- package/utils/index.d.ts +2 -0
- package/utils/index.d.ts.map +1 -1
- package/utils/view.d.ts.map +1 -1
@@ -1,9 +1,10 @@
|
|
1
1
|
import { Actions } from '../../action';
|
2
2
|
import { updateRecordsUpdatedInfo } from '../record/update-system-field-value';
|
3
|
-
|
3
|
+
import { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';
|
4
|
+
export const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
4
5
|
return {
|
5
6
|
type: 'removeField',
|
6
|
-
name:
|
7
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),
|
7
8
|
icon: 'trash',
|
8
9
|
exec: (aiTable, field) => {
|
9
10
|
Actions.removeField(aiTable, [field()._id]);
|
@@ -11,4 +12,4 @@ export const buildRemoveFieldItem = (getUpdatedInfo) => {
|
|
11
12
|
}
|
12
13
|
};
|
13
14
|
};
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RhdGUvc3JjL3V0aWxzL2ZpZWxkL3JlbW92ZS1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxjQUE4QyxFQUFFLEVBQUU7SUFDckcsT0FBTztRQUNILElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDO1FBQ3JFLElBQUksRUFBRSxPQUFPO1FBQ2IsSUFBSSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxLQUEyQixFQUFFLEVBQUU7WUFDcEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRCx3QkFBd0IsQ0FBQyxPQUFzQixFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVRhYmxlLCBBSVRhYmxlRmllbGQsIEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbyB9IGZyb20gJ0BhaS10YWJsZS9ncmlkJztcbmltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJy4uLy4uL2FjdGlvbic7XG5pbXBvcnQgeyBBSVZpZXdUYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IHVwZGF0ZVJlY29yZHNVcGRhdGVkSW5mbyB9IGZyb20gJy4uL3JlY29yZC91cGRhdGUtc3lzdGVtLWZpZWxkLXZhbHVlJztcbmltcG9ydCB7IEFJVGFibGVTdGF0ZUkxOG5LZXksIGdldFN0YXRlSTE4blRleHRCeUtleSB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4nO1xuXG5leHBvcnQgY29uc3QgYnVpbGRSZW1vdmVGaWVsZEl0ZW0gPSAoYWlUYWJsZTogQUlUYWJsZSwgZ2V0VXBkYXRlZEluZm86ICgpID0+IEFJVGFibGVSZWNvcmRVcGRhdGVkSW5mbykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdyZW1vdmVGaWVsZCcsXG4gICAgICAgIG5hbWU6IGdldFN0YXRlSTE4blRleHRCeUtleShhaVRhYmxlLCBBSVRhYmxlU3RhdGVJMThuS2V5LnJlbW92ZUZpZWxkKSxcbiAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgZXhlYzogKGFpVGFibGU6IEFJVGFibGUsIGZpZWxkOiBTaWduYWw8QUlUYWJsZUZpZWxkPikgPT4ge1xuICAgICAgICAgICAgQWN0aW9ucy5yZW1vdmVGaWVsZChhaVRhYmxlIGFzIEFJVmlld1RhYmxlLCBbZmllbGQoKS5faWRdKTtcbiAgICAgICAgICAgIHVwZGF0ZVJlY29yZHNVcGRhdGVkSW5mbyhhaVRhYmxlIGFzIEFJVmlld1RhYmxlLCBnZXRVcGRhdGVkSW5mbygpKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuIl19
|
@@ -0,0 +1,37 @@
|
|
1
|
+
export var AITableStateI18nKey;
|
2
|
+
(function (AITableStateI18nKey) {
|
3
|
+
AITableStateI18nKey["copyField"] = "copyField";
|
4
|
+
AITableStateI18nKey["removeRecords"] = "removeRecords";
|
5
|
+
AITableStateI18nKey["copy"] = "copy";
|
6
|
+
AITableStateI18nKey["copySuffix"] = "copySuffix";
|
7
|
+
AITableStateI18nKey["paste"] = "paste";
|
8
|
+
AITableStateI18nKey["invalidPasteContent"] = "invalidPasteContent";
|
9
|
+
AITableStateI18nKey["tableView"] = "tableView";
|
10
|
+
AITableStateI18nKey["editField"] = "editField";
|
11
|
+
AITableStateI18nKey["removeField"] = "removeField";
|
12
|
+
})(AITableStateI18nKey || (AITableStateI18nKey = {}));
|
13
|
+
const AITableI18nText = {
|
14
|
+
[AITableStateI18nKey.copyField]: '复制列',
|
15
|
+
[AITableStateI18nKey.removeRecords]: '删除行',
|
16
|
+
[AITableStateI18nKey.copy]: '复制',
|
17
|
+
[AITableStateI18nKey.copySuffix]: '副本',
|
18
|
+
[AITableStateI18nKey.paste]: '粘贴',
|
19
|
+
[AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',
|
20
|
+
[AITableStateI18nKey.tableView]: '表格视图',
|
21
|
+
[AITableStateI18nKey.editField]: '编辑列',
|
22
|
+
[AITableStateI18nKey.removeField]: '删除列'
|
23
|
+
};
|
24
|
+
export const getDefaultI18nTextByKey = (key) => {
|
25
|
+
return AITableI18nText[key] || key;
|
26
|
+
};
|
27
|
+
export const getStateI18nTextByKey = (aiTable, key) => {
|
28
|
+
if (aiTable.getI18nTextByKey) {
|
29
|
+
const customText = aiTable.getI18nTextByKey(key);
|
30
|
+
if (customText) {
|
31
|
+
return customText;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
const defaultText = getDefaultI18nTextByKey(key);
|
35
|
+
return defaultText;
|
36
|
+
};
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy9pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDM0IsOENBQXVCLENBQUE7SUFDdkIsc0RBQStCLENBQUE7SUFDL0Isb0NBQWEsQ0FBQTtJQUNiLGdEQUF5QixDQUFBO0lBQ3pCLHNDQUFlLENBQUE7SUFDZixrRUFBMkMsQ0FBQTtJQUMzQyw4Q0FBdUIsQ0FBQTtJQUN2Qiw4Q0FBdUIsQ0FBQTtJQUN2QixrREFBMkIsQ0FBQTtBQUMvQixDQUFDLEVBVlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVU5QjtBQUVELE1BQU0sZUFBZSxHQUFHO0lBQ3BCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSztJQUN0QyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUs7SUFDMUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO0lBQ2hDLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSTtJQUN0QyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUk7SUFDakMsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGFBQWE7SUFDeEQsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNO0lBQ3ZDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSztJQUN0QyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUs7Q0FDM0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBd0IsRUFBVSxFQUFFO0lBQ3hFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQWdCLEVBQUUsR0FBaUMsRUFBVSxFQUFFO0lBQ2pHLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLEdBQTBCLENBQUMsQ0FBQztJQUN4RSxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVRhYmxlIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuXG5leHBvcnQgZW51bSBBSVRhYmxlU3RhdGVJMThuS2V5IHtcbiAgICBjb3B5RmllbGQgPSAnY29weUZpZWxkJyxcbiAgICByZW1vdmVSZWNvcmRzID0gJ3JlbW92ZVJlY29yZHMnLFxuICAgIGNvcHkgPSAnY29weScsXG4gICAgY29weVN1ZmZpeCA9ICdjb3B5U3VmZml4JyxcbiAgICBwYXN0ZSA9ICdwYXN0ZScsXG4gICAgaW52YWxpZFBhc3RlQ29udGVudCA9ICdpbnZhbGlkUGFzdGVDb250ZW50JyxcbiAgICB0YWJsZVZpZXcgPSAndGFibGVWaWV3JyxcbiAgICBlZGl0RmllbGQgPSAnZWRpdEZpZWxkJyxcbiAgICByZW1vdmVGaWVsZCA9ICdyZW1vdmVGaWVsZCdcbn1cblxuY29uc3QgQUlUYWJsZUkxOG5UZXh0ID0ge1xuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LmNvcHlGaWVsZF06ICflpI3liLbliJcnLFxuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LnJlbW92ZVJlY29yZHNdOiAn5Yig6Zmk6KGMJyxcbiAgICBbQUlUYWJsZVN0YXRlSTE4bktleS5jb3B5XTogJ+WkjeWIticsXG4gICAgW0FJVGFibGVTdGF0ZUkxOG5LZXkuY29weVN1ZmZpeF06ICflia/mnKwnLFxuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LnBhc3RlXTogJ+eymOi0tCcsXG4gICAgW0FJVGFibGVTdGF0ZUkxOG5LZXkuaW52YWxpZFBhc3RlQ29udGVudF06ICfnspjotLTlhoXlrrnkuI3nrKblkIjlvZPliY3nsbvlnosnLFxuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LnRhYmxlVmlld106ICfooajmoLzop4blm74nLFxuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LmVkaXRGaWVsZF06ICfnvJbovpHliJcnLFxuICAgIFtBSVRhYmxlU3RhdGVJMThuS2V5LnJlbW92ZUZpZWxkXTogJ+WIoOmZpOWIlydcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0STE4blRleHRCeUtleSA9IChrZXk6IEFJVGFibGVTdGF0ZUkxOG5LZXkpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBBSVRhYmxlSTE4blRleHRba2V5XSB8fCBrZXk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhdGVJMThuVGV4dEJ5S2V5ID0gKGFpVGFibGU6IEFJVGFibGUsIGtleTogQUlUYWJsZVN0YXRlSTE4bktleSB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgaWYgKGFpVGFibGUuZ2V0STE4blRleHRCeUtleSkge1xuICAgICAgICBjb25zdCBjdXN0b21UZXh0ID0gYWlUYWJsZS5nZXRJMThuVGV4dEJ5S2V5KGtleSk7XG4gICAgICAgIGlmIChjdXN0b21UZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VzdG9tVGV4dDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0VGV4dCA9IGdldERlZmF1bHRJMThuVGV4dEJ5S2V5KGtleSBhcyBBSVRhYmxlU3RhdGVJMThuS2V5KTtcbiAgICByZXR1cm4gZGVmYXVsdFRleHQ7XG59O1xuIl19
|
package/esm2022/utils/index.mjs
CHANGED
@@ -11,4 +11,6 @@ export * from './record/update-field-value';
|
|
11
11
|
export * from './record/update-system-field-value';
|
12
12
|
export * from './weak-map';
|
13
13
|
export * from './field/move-fields';
|
14
|
-
|
14
|
+
export * from './field/position-field';
|
15
|
+
export * from './i18n';
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdGF0ZS9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2J1aWxkJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQvYWRkLWZpZWxkcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkL3JlbW92ZS1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkL3NvcnQtZmllbGRzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlldyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL3JlY29yZC9hZGQtcmVjb3Jkcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlY29yZC9zb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vcmVjb3JkL2ZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3JlY29yZC91cGRhdGUtZmllbGQtdmFsdWUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNvcmQvdXBkYXRlLXN5c3RlbS1maWVsZC12YWx1ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dlYWstbWFwJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQvbW92ZS1maWVsZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWVsZC9wb3NpdGlvbi1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4nO1xuIl19
|
package/esm2022/utils/view.mjs
CHANGED
@@ -3,6 +3,8 @@ import { Actions } from '../action';
|
|
3
3
|
import { ViewActions } from '../action/view';
|
4
4
|
import { PositionsActions } from '../action/position';
|
5
5
|
import { generateCopyName } from './common';
|
6
|
+
import { generateNewName } from '@ai-table/grid';
|
7
|
+
import { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';
|
6
8
|
export function createDefaultPositions(views, activeId, data, index) {
|
7
9
|
const positions = {};
|
8
10
|
const position = getPosition(data, activeId, index);
|
@@ -41,22 +43,24 @@ export function addView(aiTable, type, viewId) {
|
|
41
43
|
let index = aiTable.views().length;
|
42
44
|
const newId = idCreator();
|
43
45
|
const shortId = shortIdCreator();
|
46
|
+
const allViewNames = aiTable.views().map((item) => item.name);
|
47
|
+
const count = aiTable.views().length || 0;
|
48
|
+
const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));
|
44
49
|
let newView = {
|
45
50
|
_id: newId,
|
46
51
|
short_id: shortId,
|
47
|
-
name:
|
52
|
+
name: newViewName
|
48
53
|
};
|
49
54
|
let originViewId = aiTable.views()[aiTable.views().length - 1]._id;
|
50
55
|
if (type === 'copy') {
|
51
56
|
originViewId = viewId ?? aiTable.activeViewId();
|
52
57
|
const copyView = aiTable.views().find((item) => item._id === originViewId);
|
53
|
-
const allViewNames = aiTable.views().map((item) => item.name);
|
54
58
|
const copyName = copyView.name;
|
55
|
-
const
|
59
|
+
const copyViewName = generateCopyName(aiTable, allViewNames, copyName);
|
56
60
|
newView = {
|
57
61
|
...copyView,
|
58
62
|
_id: newId,
|
59
|
-
name:
|
63
|
+
name: copyViewName
|
60
64
|
};
|
61
65
|
index = aiTable.views().indexOf(copyView) + 1;
|
62
66
|
}
|
@@ -87,4 +91,4 @@ export function removeView(aiTable, records, fields, activeViewId) {
|
|
87
91
|
});
|
88
92
|
ViewActions.removeView(aiTable, [activeViewId]);
|
89
93
|
}
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTVDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsS0FBb0IsRUFDcEIsUUFBZ0IsRUFDaEIsSUFBNEMsRUFDNUMsS0FBYTtJQUViLE1BQU0sU0FBUyxHQUFjLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ0osU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBNEMsRUFBRSxZQUFvQixFQUFFLEtBQWE7SUFDekcsSUFB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QUFDO1FBQy9CLE9BQU8sQ0FBQyxRQUFRLENBQ1osT0FBTyxFQUNQO1lBQ0ksU0FBUztTQUNaLEVBQ0QsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ2QsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIHNob3J0SWRDcmVhdG9yIH0gZnJvbSAnQGFpLXRhYmxlL2dyaWQnO1xuaW1wb3J0IHsgQUlUYWJsZVZpZXcsIEFJVGFibGVWaWV3RmllbGQsIEFJVGFibGVWaWV3RmllbGRzLCBBSVRhYmxlVmlld1JlY29yZHMsIEFJVmlld1RhYmxlLCBQb3NpdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9uJztcbmltcG9ydCB7IFZpZXdBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9uL3ZpZXcnO1xuaW1wb3J0IHsgUG9zaXRpb25zQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbi9wb3NpdGlvbic7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvcHlOYW1lIH0gZnJvbSAnLi9jb21tb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFBvc2l0aW9ucyhcbiAgICB2aWV3czogQUlUYWJsZVZpZXdbXSxcbiAgICBhY3RpdmVJZDogc3RyaW5nLFxuICAgIGRhdGE6IEFJVGFibGVWaWV3UmVjb3JkcyB8IEFJVGFibGVWaWV3RmllbGRzLFxuICAgIGluZGV4OiBudW1iZXJcbikge1xuICAgIGNvbnN0IHBvc2l0aW9uczogUG9zaXRpb25zID0ge307XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRQb3NpdGlvbihkYXRhLCBhY3RpdmVJZCwgaW5kZXgpO1xuICAgIHZpZXdzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuX2lkID09PSBhY3RpdmVJZCkge1xuICAgICAgICAgICAgcG9zaXRpb25zW2VsZW1lbnQuX2lkXSA9IHBvc2l0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25zW2VsZW1lbnQuX2lkXSA9IGdldE1heFBvc2l0aW9uKGRhdGEsIGVsZW1lbnQuX2lkKSArIDE7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zaXRpb24oZGF0YTogQUlUYWJsZVZpZXdSZWNvcmRzIHwgQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXdJZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgbGV0IHBvc2l0aW9uID0gZGF0YS5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCAhPT0gMCAmJiBpbmRleCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3UG9zaXRpb24gPSBkYXRhW2luZGV4IC0gMV0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgIGNvbnN0IG5leHRWaWV3UG9zaXRpb24gPSBkYXRhW2luZGV4XS5wb3NpdGlvbnNbYWN0aXZlVmlld0lkIV07XG4gICAgICAgIHBvc2l0aW9uID0gKHByZXZpb3VzVmlld1Bvc2l0aW9uICsgbmV4dFZpZXdQb3NpdGlvbikgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heFBvc2l0aW9uID0gZ2V0TWF4UG9zaXRpb24oZGF0YSwgYWN0aXZlVmlld0lkKTtcbiAgICAgICAgcG9zaXRpb24gPSBtYXhQb3NpdGlvbiArIDE7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heFBvc2l0aW9uKGRhdGE6IEFJVGFibGVWaWV3UmVjb3JkcyB8IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3SWQ6IHN0cmluZykge1xuICAgIHJldHVybiBkYXRhLnJlZHVjZSgobWF4UG9zaXRpb24sIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZF0gPiBtYXhQb3NpdGlvbikge1xuICAgICAgICAgICAgbWF4UG9zaXRpb24gPSBpdGVtLnBvc2l0aW9uc1thY3RpdmVWaWV3SWRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhQb3NpdGlvbjtcbiAgICB9LCAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFZpZXcoYWlUYWJsZTogQUlWaWV3VGFibGUsIHR5cGU6ICdhZGQnIHwgJ2NvcHknLCB2aWV3SWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgaW5kZXggPSBhaVRhYmxlLnZpZXdzKCkubGVuZ3RoO1xuICAgIGNvbnN0IG5ld0lkID0gaWRDcmVhdG9yKCk7XG4gICAgY29uc3Qgc2hvcnRJZCA9IHNob3J0SWRDcmVhdG9yKCk7XG4gICAgbGV0IG5ld1ZpZXc6IEFJVGFibGVWaWV3ID0ge1xuICAgICAgICBfaWQ6IG5ld0lkLFxuICAgICAgICBzaG9ydF9pZDogc2hvcnRJZCxcbiAgICAgICAgbmFtZTogJ+ihqOagvOinhuWbviAnICsgaW5kZXhcbiAgICB9O1xuICAgIGxldCBvcmlnaW5WaWV3SWQgPSBhaVRhYmxlLnZpZXdzKClbYWlUYWJsZS52aWV3cygpLmxlbmd0aCAtIDFdLl9pZDtcbiAgICBpZiAodHlwZSA9PT0gJ2NvcHknKSB7XG4gICAgICAgIG9yaWdpblZpZXdJZCA9IHZpZXdJZCA/PyBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpO1xuICAgICAgICBjb25zdCBjb3B5VmlldyA9IGFpVGFibGUudmlld3MoKS5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gb3JpZ2luVmlld0lkKSE7XG4gICAgICAgIGNvbnN0IGFsbFZpZXdOYW1lcyA9IGFpVGFibGUudmlld3MoKS5tYXAoKGl0ZW0pID0+IGl0ZW0ubmFtZSk7XG4gICAgICAgIGNvbnN0IGNvcHlOYW1lID0gY29weVZpZXcubmFtZTtcbiAgICAgICAgY29uc3QgbmV3Vmlld05hbWUgPSBnZW5lcmF0ZUNvcHlOYW1lKGFsbFZpZXdOYW1lcywgY29weU5hbWUpO1xuICAgICAgICBuZXdWaWV3ID0ge1xuICAgICAgICAgICAgLi4uY29weVZpZXcsXG4gICAgICAgICAgICBfaWQ6IG5ld0lkLFxuICAgICAgICAgICAgbmFtZTogbmV3Vmlld05hbWVcbiAgICAgICAgfTtcbiAgICAgICAgaW5kZXggPSBhaVRhYmxlLnZpZXdzKCkuaW5kZXhPZihjb3B5VmlldykgKyAxO1xuICAgIH1cbiAgICBWaWV3QWN0aW9ucy5hZGRWaWV3KGFpVGFibGUsIG5ld1ZpZXcsIFtpbmRleF0pO1xuICAgIChhaVRhYmxlLnJlY29yZHMoKSBhcyBBSVRhYmxlVmlld1JlY29yZHMpLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgICBQb3NpdGlvbnNBY3Rpb25zLnNldFJlY29yZFBvc2l0aW9ucyhhaVRhYmxlLCB7IFtuZXdJZF06IHJlY29yZC5wb3NpdGlvbnNbb3JpZ2luVmlld0lkXSB9LCBbcmVjb3JkLl9pZF0pO1xuICAgIH0pO1xuICAgIChhaVRhYmxlLmZpZWxkcygpIGFzIEFJVGFibGVWaWV3RmllbGRzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBBY3Rpb25zLnNldEZpZWxkPEFJVGFibGVWaWV3RmllbGQ+KFxuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmllbGQucG9zaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBbbmV3SWRdOiBmaWVsZC5wb3NpdGlvbnNbb3JpZ2luVmlld0lkXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbZmllbGQuX2lkXVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdWaWV3O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmlldyhhaVRhYmxlOiBBSVZpZXdUYWJsZSwgcmVjb3JkczogQUlUYWJsZVZpZXdSZWNvcmRzLCBmaWVsZHM6IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3SWQ6IHN0cmluZykge1xuICAgIHJlY29yZHMuZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICAgIFBvc2l0aW9uc0FjdGlvbnMuc2V0UmVjb3JkUG9zaXRpb25zKGFpVGFibGUsIHsgW2FjdGl2ZVZpZXdJZF06IHVuZGVmaW5lZCB9LCBbcmVjb3JkLl9pZF0pO1xuICAgIH0pO1xuICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSB7IC4uLmZpZWxkLnBvc2l0aW9ucyB9O1xuICAgICAgICBkZWxldGUgcG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgIEFjdGlvbnMuc2V0RmllbGQ8QUlUYWJsZVZpZXdGaWVsZD4oXG4gICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtmaWVsZC5faWRdXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgVmlld0FjdGlvbnMucmVtb3ZlVmlldyhhaVRhYmxlLCBbYWN0aXZlVmlld0lkXSk7XG59XG4iXX0=
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0YXRlL3NyYy91dGlscy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEUsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxLQUFvQixFQUNwQixRQUFnQixFQUNoQixJQUE0QyxFQUM1QyxLQUFhO0lBRWIsTUFBTSxTQUFTLEdBQWMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0wsQ0FBQyxDQUFD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UUFDdkIsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FDWixPQUFPLEVBQ1A7WUFDSSxTQUFTO1NBQ1osRUFDRCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDZCxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlkQ3JlYXRvciwgc2hvcnRJZENyZWF0b3IgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlVmlldywgQUlUYWJsZVZpZXdGaWVsZCwgQUlUYWJsZVZpZXdGaWVsZHMsIEFJVGFibGVWaWV3UmVjb3JkcywgQUlWaWV3VGFibGUsIFBvc2l0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb24nO1xuaW1wb3J0IHsgVmlld0FjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb24vdmlldyc7XG5pbXBvcnQgeyBQb3NpdGlvbnNBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9uL3Bvc2l0aW9uJztcbmltcG9ydCB7IGdlbmVyYXRlQ29weU5hbWUgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBnZW5lcmF0ZU5ld05hbWUgfSBmcm9tICdAYWktdGFibGUvZ3JpZCc7XG5pbXBvcnQgeyBBSVRhYmxlU3RhdGVJMThuS2V5LCBnZXRTdGF0ZUkxOG5UZXh0QnlLZXkgfSBmcm9tICcuL2kxOG4nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFBvc2l0aW9ucyhcbiAgICB2aWV3czogQUlUYWJsZVZpZXdbXSxcbiAgICBhY3RpdmVJZDogc3RyaW5nLFxuICAgIGRhdGE6IEFJVGFibGVWaWV3UmVjb3JkcyB8IEFJVGFibGVWaWV3RmllbGRzLFxuICAgIGluZGV4OiBudW1iZXJcbikge1xuICAgIGNvbnN0IHBvc2l0aW9uczogUG9zaXRpb25zID0ge307XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRQb3NpdGlvbihkYXRhLCBhY3RpdmVJZCwgaW5kZXgpO1xuICAgIHZpZXdzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuX2lkID09PSBhY3RpdmVJZCkge1xuICAgICAgICAgICAgcG9zaXRpb25zW2VsZW1lbnQuX2lkXSA9IHBvc2l0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25zW2VsZW1lbnQuX2lkXSA9IGdldE1heFBvc2l0aW9uKGRhdGEsIGVsZW1lbnQuX2lkKSArIDE7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zaXRpb24oZGF0YTogQUlUYWJsZVZpZXdSZWNvcmRzIHwgQUlUYWJsZVZpZXdGaWVsZHMsIGFjdGl2ZVZpZXdJZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgbGV0IHBvc2l0aW9uID0gZGF0YS5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCAhPT0gMCAmJiBpbmRleCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3UG9zaXRpb24gPSBkYXRhW2luZGV4IC0gMV0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZF07XG4gICAgICAgIGNvbnN0IG5leHRWaWV3UG9zaXRpb24gPSBkYXRhW2luZGV4XS5wb3NpdGlvbnNbYWN0aXZlVmlld0lkIV07XG4gICAgICAgIHBvc2l0aW9uID0gKHByZXZpb3VzVmlld1Bvc2l0aW9uICsgbmV4dFZpZXdQb3NpdGlvbikgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heFBvc2l0aW9uID0gZ2V0TWF4UG9zaXRpb24oZGF0YSwgYWN0aXZlVmlld0lkKTtcbiAgICAgICAgcG9zaXRpb24gPSBtYXhQb3NpdGlvbiArIDE7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heFBvc2l0aW9uKGRhdGE6IEFJVGFibGVWaWV3UmVjb3JkcyB8IEFJVGFibGVWaWV3RmllbGRzLCBhY3RpdmVWaWV3SWQ6IHN0cmluZykge1xuICAgIHJldHVybiBkYXRhLnJlZHVjZSgobWF4UG9zaXRpb24sIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0ucG9zaXRpb25zW2FjdGl2ZVZpZXdJZF0gPiBtYXhQb3NpdGlvbikge1xuICAgICAgICAgICAgbWF4UG9zaXRpb24gPSBpdGVtLnBvc2l0aW9uc1thY3RpdmVWaWV3SWRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhQb3NpdGlvbjtcbiAgICB9LCAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFZpZXcoYWlUYWJsZTogQUlWaWV3VGFibGUsIHR5cGU6ICdhZGQnIHwgJ2NvcHknLCB2aWV3SWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgaW5kZXggPSBhaVRhYmxlLnZpZXdzKCkubGVuZ3RoO1xuICAgIGNvbnN0IG5ld0lkID0gaWRDcmVhdG9yKCk7XG4gICAgY29uc3Qgc2hvcnRJZCA9IHNob3J0SWRDcmVhdG9yKCk7XG5cbiAgICBjb25zdCBhbGxWaWV3TmFtZXMgPSBhaVRhYmxlLnZpZXdzKCkubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpO1xuICAgIGNvbnN0IGNvdW50ID0gYWlUYWJsZS52aWV3cygpLmxlbmd0aCB8fCAwO1xuICAgIGNvbnN0IG5ld1ZpZXdOYW1lID0gZ2VuZXJhdGVOZXdOYW1lKGFsbFZpZXdOYW1lcywgY291bnQsIGdldFN0YXRlSTE4blRleHRCeUtleShhaVRhYmxlLCBBSVRhYmxlU3RhdGVJMThuS2V5LnRhYmxlVmlldykpO1xuICAgIGxldCBuZXdWaWV3OiBBSVRhYmxlVmlldyA9IHtcbiAgICAgICAgX2lkOiBuZXdJZCxcbiAgICAgICAgc2hvcnRfaWQ6IHNob3J0SWQsXG4gICAgICAgIG5hbWU6IG5ld1ZpZXdOYW1lXG4gICAgfTtcblxuICAgIGxldCBvcmlnaW5WaWV3SWQgPSBhaVRhYmxlLnZpZXdzKClbYWlUYWJsZS52aWV3cygpLmxlbmd0aCAtIDFdLl9pZDtcbiAgICBpZiAodHlwZSA9PT0gJ2NvcHknKSB7XG4gICAgICAgIG9yaWdpblZpZXdJZCA9IHZpZXdJZCA/PyBhaVRhYmxlLmFjdGl2ZVZpZXdJZCgpO1xuICAgICAgICBjb25zdCBjb3B5VmlldyA9IGFpVGFibGUudmlld3MoKS5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gb3JpZ2luVmlld0lkKSE7XG5cbiAgICAgICAgY29uc3QgY29weU5hbWUgPSBjb3B5Vmlldy5uYW1lO1xuICAgICAgICBjb25zdCBjb3B5Vmlld05hbWUgPSBnZW5lcmF0ZUNvcHlOYW1lKGFpVGFibGUsIGFsbFZpZXdOYW1lcywgY29weU5hbWUpO1xuICAgICAgICBuZXdWaWV3ID0ge1xuICAgICAgICAgICAgLi4uY29weVZpZXcsXG4gICAgICAgICAgICBfaWQ6IG5ld0lkLFxuICAgICAgICAgICAgbmFtZTogY29weVZpZXdOYW1lXG4gICAgICAgIH07XG4gICAgICAgIGluZGV4ID0gYWlUYWJsZS52aWV3cygpLmluZGV4T2YoY29weVZpZXcpICsgMTtcbiAgICB9XG4gICAgVmlld0FjdGlvbnMuYWRkVmlldyhhaVRhYmxlLCBuZXdWaWV3LCBbaW5kZXhdKTtcbiAgICAoYWlUYWJsZS5yZWNvcmRzKCkgYXMgQUlUYWJsZVZpZXdSZWNvcmRzKS5mb3JFYWNoKChyZWNvcmQpID0+IHtcbiAgICAgICAgUG9zaXRpb25zQWN0aW9ucy5zZXRSZWNvcmRQb3NpdGlvbnMoYWlUYWJsZSwgeyBbbmV3SWRdOiByZWNvcmQucG9zaXRpb25zW29yaWdpblZpZXdJZF0gfSwgW3JlY29yZC5faWRdKTtcbiAgICB9KTtcbiAgICAoYWlUYWJsZS5maWVsZHMoKSBhcyBBSVRhYmxlVmlld0ZpZWxkcykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgQWN0aW9ucy5zZXRGaWVsZDxBSVRhYmxlVmlld0ZpZWxkPihcbiAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpZWxkLnBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgW25ld0lkXTogZmllbGQucG9zaXRpb25zW29yaWdpblZpZXdJZF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW2ZpZWxkLl9pZF1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Vmlldztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVZpZXcoYWlUYWJsZTogQUlWaWV3VGFibGUsIHJlY29yZHM6IEFJVGFibGVWaWV3UmVjb3JkcywgZmllbGRzOiBBSVRhYmxlVmlld0ZpZWxkcywgYWN0aXZlVmlld0lkOiBzdHJpbmcpIHtcbiAgICByZWNvcmRzLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgICBQb3NpdGlvbnNBY3Rpb25zLnNldFJlY29yZFBvc2l0aW9ucyhhaVRhYmxlLCB7IFthY3RpdmVWaWV3SWRdOiB1bmRlZmluZWQgfSwgW3JlY29yZC5faWRdKTtcbiAgICB9KTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0geyAuLi5maWVsZC5wb3NpdGlvbnMgfTtcbiAgICAgICAgZGVsZXRlIHBvc2l0aW9uc1thY3RpdmVWaWV3SWRdO1xuICAgICAgICBBY3Rpb25zLnNldEZpZWxkPEFJVGFibGVWaWV3RmllbGQ+KFxuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbZmllbGQuX2lkXVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIFZpZXdBY3Rpb25zLnJlbW92ZVZpZXcoYWlUYWJsZSwgW2FjdGl2ZVZpZXdJZF0pO1xufVxuIl19
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as Y from 'yjs';
|
2
2
|
import { isArray } from 'ngx-tethys/util';
|
3
|
-
import { AITableQueries, FieldModelMap, AITableFilterOperation, AITableFieldType, isSystemField, isEmpty, getDefaultFieldValue, Direction as Direction$1, idsCreator, idCreator, shortIdCreator, shortIdsCreator, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, isMac, buildClipboardData, writeToClipboard, writeToAITable } from '@ai-table/grid';
|
3
|
+
import { AITableQueries, FieldModelMap, AITableFilterOperation, AITableFieldType, isSystemField, isEmpty, getDefaultFieldValue, Direction as Direction$1, idsCreator, idCreator, shortIdCreator, generateNewName, shortIdsCreator, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, isMac, buildClipboardData, writeToClipboard, getI18nTextByKey, AITableGridI18nKey, writeToAITable } from '@ai-table/grid';
|
4
4
|
import { createDraft, finishDraft } from 'immer';
|
5
5
|
import * as _ from 'lodash';
|
6
6
|
import ___default from 'lodash';
|
@@ -695,6 +695,43 @@ function applyActionOps(aiTable, sharedType, actions) {
|
|
695
695
|
return sharedType;
|
696
696
|
}
|
697
697
|
|
698
|
+
var AITableStateI18nKey;
|
699
|
+
(function (AITableStateI18nKey) {
|
700
|
+
AITableStateI18nKey["copyField"] = "copyField";
|
701
|
+
AITableStateI18nKey["removeRecords"] = "removeRecords";
|
702
|
+
AITableStateI18nKey["copy"] = "copy";
|
703
|
+
AITableStateI18nKey["copySuffix"] = "copySuffix";
|
704
|
+
AITableStateI18nKey["paste"] = "paste";
|
705
|
+
AITableStateI18nKey["invalidPasteContent"] = "invalidPasteContent";
|
706
|
+
AITableStateI18nKey["tableView"] = "tableView";
|
707
|
+
AITableStateI18nKey["editField"] = "editField";
|
708
|
+
AITableStateI18nKey["removeField"] = "removeField";
|
709
|
+
})(AITableStateI18nKey || (AITableStateI18nKey = {}));
|
710
|
+
const AITableI18nText = {
|
711
|
+
[AITableStateI18nKey.copyField]: '复制列',
|
712
|
+
[AITableStateI18nKey.removeRecords]: '删除行',
|
713
|
+
[AITableStateI18nKey.copy]: '复制',
|
714
|
+
[AITableStateI18nKey.copySuffix]: '副本',
|
715
|
+
[AITableStateI18nKey.paste]: '粘贴',
|
716
|
+
[AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',
|
717
|
+
[AITableStateI18nKey.tableView]: '表格视图',
|
718
|
+
[AITableStateI18nKey.editField]: '编辑列',
|
719
|
+
[AITableStateI18nKey.removeField]: '删除列'
|
720
|
+
};
|
721
|
+
const getDefaultI18nTextByKey = (key) => {
|
722
|
+
return AITableI18nText[key] || key;
|
723
|
+
};
|
724
|
+
const getStateI18nTextByKey = (aiTable, key) => {
|
725
|
+
if (aiTable.getI18nTextByKey) {
|
726
|
+
const customText = aiTable.getI18nTextByKey(key);
|
727
|
+
if (customText) {
|
728
|
+
return customText;
|
729
|
+
}
|
730
|
+
}
|
731
|
+
const defaultText = getDefaultI18nTextByKey(key);
|
732
|
+
return defaultText;
|
733
|
+
};
|
734
|
+
|
698
735
|
function isPathEqual(path, another) {
|
699
736
|
return path.length === another.length && path.every((n, i) => n === another[i]);
|
700
737
|
}
|
@@ -705,11 +742,12 @@ function sortByViewPosition(data, activeView) {
|
|
705
742
|
}
|
706
743
|
return data;
|
707
744
|
}
|
708
|
-
function generateCopyName(
|
709
|
-
|
745
|
+
function generateCopyName(aiTable, existNames, name) {
|
746
|
+
const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);
|
747
|
+
let newName = `${name} ${copyText}`;
|
710
748
|
let index = 2;
|
711
|
-
while (
|
712
|
-
newName = `${name}
|
749
|
+
while (existNames.includes(newName)) {
|
750
|
+
newName = `${name} ${copyText} ${index}`;
|
713
751
|
index++;
|
714
752
|
}
|
715
753
|
return newName;
|
@@ -864,6 +902,44 @@ function buildFieldsByView(aiTable, fields, activeView) {
|
|
864
902
|
return getSortFields(aiTable, fields, activeView);
|
865
903
|
}
|
866
904
|
|
905
|
+
function getFieldPositionInView(viewId, fields, path, newPath) {
|
906
|
+
const targetPosition = fields[newPath[0]].positions[viewId];
|
907
|
+
let newPosition = 0;
|
908
|
+
if (path[0] > newPath[0]) {
|
909
|
+
const prevPath = newPath[0] - 1;
|
910
|
+
if (prevPath > 0) {
|
911
|
+
const targetPrevField = fields[prevPath];
|
912
|
+
const targetPrevPosition = targetPrevField.positions[viewId];
|
913
|
+
newPosition = (targetPosition + targetPrevPosition) / 2;
|
914
|
+
}
|
915
|
+
else {
|
916
|
+
const firstField = fields[0];
|
917
|
+
newPosition = firstField.positions[viewId] - 0.1;
|
918
|
+
}
|
919
|
+
}
|
920
|
+
else {
|
921
|
+
const nextPath = newPath[0] + 1;
|
922
|
+
if (fields.length > nextPath) {
|
923
|
+
const targetNextField = fields[nextPath];
|
924
|
+
const targetNextPosition = targetNextField.positions[viewId];
|
925
|
+
newPosition = (targetPosition + targetNextPosition) / 2;
|
926
|
+
}
|
927
|
+
else {
|
928
|
+
const lastField = fields[fields.length - 1];
|
929
|
+
const lastPosition = lastField.positions[viewId] + 1;
|
930
|
+
newPosition = (targetPosition + lastPosition) / 2;
|
931
|
+
}
|
932
|
+
}
|
933
|
+
return newPosition;
|
934
|
+
}
|
935
|
+
function getFieldsSizeMap(fields, activeView) {
|
936
|
+
const fieldsSizeMap = {};
|
937
|
+
fields?.forEach((field) => {
|
938
|
+
fieldsSizeMap[field._id] = field.widths?.[activeView._id];
|
939
|
+
});
|
940
|
+
return fieldsSizeMap;
|
941
|
+
}
|
942
|
+
|
867
943
|
function addField(aiTable, field, path, originId, isCopy) {
|
868
944
|
const operation = {
|
869
945
|
type: ActionName.AddField,
|
@@ -884,6 +960,11 @@ function moveField(aiTable, path, newPath) {
|
|
884
960
|
const position = getFieldPositionInView(activeView._id, fields, path, newPath);
|
885
961
|
setField(aiTable, { positions: { ...sourceField.positions, [activeView._id]: position } }, [sourceField._id]);
|
886
962
|
}
|
963
|
+
function setFieldWidth(aiTable, path, width) {
|
964
|
+
const field = AITableQueries.getField(aiTable, path);
|
965
|
+
const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());
|
966
|
+
setField(aiTable, { widths: { ...field.widths, [activeView._id]: width } }, [field._id]);
|
967
|
+
}
|
887
968
|
function removeField(aiTable, path) {
|
888
969
|
const operation = {
|
889
970
|
type: ActionName.RemoveField,
|
@@ -920,7 +1001,8 @@ const FieldActions = {
|
|
920
1001
|
addField,
|
921
1002
|
moveField,
|
922
1003
|
removeField,
|
923
|
-
setField
|
1004
|
+
setField,
|
1005
|
+
setFieldWidth
|
924
1006
|
};
|
925
1007
|
|
926
1008
|
const apply = (aiTable, records, fields, views, action) => {
|
@@ -965,7 +1047,9 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
965
1047
|
const [fieldIndex] = action.path;
|
966
1048
|
if (fieldIndex > -1) {
|
967
1049
|
const newField = action.field;
|
968
|
-
newField.positions
|
1050
|
+
if (!newField.positions) {
|
1051
|
+
newField.positions = createDefaultPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields, action.path[0]);
|
1052
|
+
}
|
969
1053
|
fields.splice(fieldIndex, 0, newField);
|
970
1054
|
records.forEach((item) => {
|
971
1055
|
item.values[newField._id] =
|
@@ -1235,10 +1319,10 @@ function addFields(aiTable, options, updatedInfo) {
|
|
1235
1319
|
updateRecordsUpdatedInfo(aiTable, updatedInfo);
|
1236
1320
|
}
|
1237
1321
|
|
1238
|
-
const buildRemoveFieldItem = (getUpdatedInfo) => {
|
1322
|
+
const buildRemoveFieldItem = (aiTable, getUpdatedInfo) => {
|
1239
1323
|
return {
|
1240
1324
|
type: 'removeField',
|
1241
|
-
name:
|
1325
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),
|
1242
1326
|
icon: 'trash',
|
1243
1327
|
exec: (aiTable, field) => {
|
1244
1328
|
Actions.removeField(aiTable, [field()._id]);
|
@@ -1285,22 +1369,24 @@ function addView(aiTable, type, viewId) {
|
|
1285
1369
|
let index = aiTable.views().length;
|
1286
1370
|
const newId = idCreator();
|
1287
1371
|
const shortId = shortIdCreator();
|
1372
|
+
const allViewNames = aiTable.views().map((item) => item.name);
|
1373
|
+
const count = aiTable.views().length || 0;
|
1374
|
+
const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));
|
1288
1375
|
let newView = {
|
1289
1376
|
_id: newId,
|
1290
1377
|
short_id: shortId,
|
1291
|
-
name:
|
1378
|
+
name: newViewName
|
1292
1379
|
};
|
1293
1380
|
let originViewId = aiTable.views()[aiTable.views().length - 1]._id;
|
1294
1381
|
if (type === 'copy') {
|
1295
1382
|
originViewId = viewId ?? aiTable.activeViewId();
|
1296
1383
|
const copyView = aiTable.views().find((item) => item._id === originViewId);
|
1297
|
-
const allViewNames = aiTable.views().map((item) => item.name);
|
1298
1384
|
const copyName = copyView.name;
|
1299
|
-
const
|
1385
|
+
const copyViewName = generateCopyName(aiTable, allViewNames, copyName);
|
1300
1386
|
newView = {
|
1301
1387
|
...copyView,
|
1302
1388
|
_id: newId,
|
1303
|
-
name:
|
1389
|
+
name: copyViewName
|
1304
1390
|
};
|
1305
1391
|
index = aiTable.views().indexOf(copyView) + 1;
|
1306
1392
|
}
|
@@ -1389,36 +1475,6 @@ function moveFields(aiTable, options, updatedInfo) {
|
|
1389
1475
|
const { path, newPath } = options;
|
1390
1476
|
Actions.moveField(aiTable, path, newPath);
|
1391
1477
|
}
|
1392
|
-
function getFieldPositionInView(viewId, fields, path, newPath) {
|
1393
|
-
const targetPosition = fields[newPath[0]].positions[viewId];
|
1394
|
-
let newPosition = 0;
|
1395
|
-
if (path[0] > newPath[0]) {
|
1396
|
-
const prevPath = newPath[0] - 1;
|
1397
|
-
if (prevPath > 0) {
|
1398
|
-
const targetPrevField = fields[prevPath];
|
1399
|
-
const targetPrevPosition = targetPrevField.positions[viewId];
|
1400
|
-
newPosition = (targetPosition + targetPrevPosition) / 2;
|
1401
|
-
}
|
1402
|
-
else {
|
1403
|
-
const firstField = fields[0];
|
1404
|
-
newPosition = firstField.positions[viewId] - 0.1;
|
1405
|
-
}
|
1406
|
-
}
|
1407
|
-
else {
|
1408
|
-
const nextPath = newPath[0] + 1;
|
1409
|
-
if (fields.length > nextPath) {
|
1410
|
-
const targetNextField = fields[nextPath];
|
1411
|
-
const targetNextPosition = targetNextField.positions[viewId];
|
1412
|
-
newPosition = (targetPosition + targetNextPosition) / 2;
|
1413
|
-
}
|
1414
|
-
else {
|
1415
|
-
const lastField = fields[fields.length - 1];
|
1416
|
-
const lastPosition = lastField.positions[viewId] + 1;
|
1417
|
-
newPosition = (targetPosition + lastPosition) / 2;
|
1418
|
-
}
|
1419
|
-
}
|
1420
|
-
return newPosition;
|
1421
|
-
}
|
1422
1478
|
|
1423
1479
|
const withState = (aiTable) => {
|
1424
1480
|
const viewTable = aiTable;
|
@@ -1441,9 +1497,9 @@ const withState = (aiTable) => {
|
|
1441
1497
|
const DividerMenuItem = {
|
1442
1498
|
type: 'divider'
|
1443
1499
|
};
|
1444
|
-
const EditFieldPropertyItem = {
|
1500
|
+
const EditFieldPropertyItem = (aiTable) => ({
|
1445
1501
|
type: 'editFieldProperty',
|
1446
|
-
name:
|
1502
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),
|
1447
1503
|
icon: 'edit',
|
1448
1504
|
exec: (aiTable, field, origin, position) => {
|
1449
1505
|
const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);
|
@@ -1464,16 +1520,17 @@ const EditFieldPropertyItem = {
|
|
1464
1520
|
}
|
1465
1521
|
return undefined;
|
1466
1522
|
}
|
1467
|
-
};
|
1468
|
-
const CopyFieldPropertyItem = (addFieldFn) => {
|
1523
|
+
});
|
1524
|
+
const CopyFieldPropertyItem = (aiTable, addFieldFn) => {
|
1525
|
+
const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);
|
1469
1526
|
return {
|
1470
1527
|
type: 'copyFieldProperty',
|
1471
|
-
name
|
1528
|
+
name,
|
1472
1529
|
icon: 'copy',
|
1473
1530
|
exec: (aiTable, field) => {
|
1474
1531
|
const allFieldNames = (aiTable.fields() || []).map((item) => item.name);
|
1475
1532
|
const copyName = field().name;
|
1476
|
-
let newFieldName = generateCopyName(allFieldNames, copyName);
|
1533
|
+
let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);
|
1477
1534
|
const fieldOptions = {
|
1478
1535
|
originId: field()._id,
|
1479
1536
|
isCopy: true,
|
@@ -1488,45 +1545,50 @@ const CopyFieldPropertyItem = (addFieldFn) => {
|
|
1488
1545
|
};
|
1489
1546
|
};
|
1490
1547
|
|
1491
|
-
const RemoveRecordsItem = {
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1548
|
+
const RemoveRecordsItem = (aiTable, actions) => {
|
1549
|
+
return {
|
1550
|
+
type: 'removeRecords',
|
1551
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),
|
1552
|
+
icon: 'trash',
|
1553
|
+
exec: (aiTable, targetName, position, aiTableGridSelectionService) => {
|
1554
|
+
let selectedRecordIds = AITable.getActiveRecordIds(aiTable);
|
1555
|
+
selectedRecordIds.forEach((id) => {
|
1556
|
+
Actions.removeRecord(aiTable, [id]);
|
1557
|
+
});
|
1558
|
+
aiTableGridSelectionService.clearSelection();
|
1559
|
+
}
|
1560
|
+
};
|
1502
1561
|
};
|
1503
|
-
const CopyCellsItem = {
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1562
|
+
const CopyCellsItem = (aiTable, actions) => {
|
1563
|
+
return {
|
1564
|
+
type: 'copyCells',
|
1565
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),
|
1566
|
+
shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,
|
1567
|
+
icon: 'copy',
|
1568
|
+
exec: (aiTable, targetName, position, aiTableGridSelectionService, notifyService) => {
|
1569
|
+
const clipboardData = buildClipboardData(aiTable);
|
1570
|
+
if (clipboardData) {
|
1571
|
+
writeToClipboard(clipboardData).then(() => {
|
1572
|
+
const copiedCellsCount = aiTable.selection().selectedCells.size;
|
1573
|
+
const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace('{count}', copiedCellsCount.toString());
|
1574
|
+
notifyService.success(message, undefined, {
|
1575
|
+
placement: 'bottomLeft'
|
1576
|
+
});
|
1515
1577
|
});
|
1516
|
-
}
|
1578
|
+
}
|
1517
1579
|
}
|
1518
|
-
}
|
1580
|
+
};
|
1519
1581
|
};
|
1520
|
-
const PasteCellsItem = (actions) => {
|
1582
|
+
const PasteCellsItem = (aiTable, actions) => {
|
1521
1583
|
return {
|
1522
1584
|
type: 'pasteCells',
|
1523
|
-
name:
|
1585
|
+
name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),
|
1524
1586
|
shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,
|
1525
1587
|
icon: 'paste',
|
1526
1588
|
exec: async (aiTable, targetName, position, aiTableGridSelectionService, notifyService) => {
|
1527
1589
|
writeToAITable(aiTable, actions).then((isPasteSuccess) => {
|
1528
1590
|
if (!isPasteSuccess) {
|
1529
|
-
notifyService.error(
|
1591
|
+
notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {
|
1530
1592
|
placement: 'bottomLeft'
|
1531
1593
|
});
|
1532
1594
|
}
|
@@ -1541,5 +1603,5 @@ const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveV
|
|
1541
1603
|
* Generated bundle index. Do not edit.
|
1542
1604
|
*/
|
1543
1605
|
|
1544
|
-
export { AITableFilterLogical, AI_TABLE_CONTENT_FIELD_NAME, ActionName, Actions, CopyCellsItem, CopyFieldPropertyItem, Direction, DividerMenuItem, EditFieldPropertyItem, ExecuteType, FLUSHING, PasteCellsItem, Positions, RemovePositions, RemoveRecordsItem, SystemFieldIndex, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyEvents, applyYjsEvents, buildFieldsByView, buildRecordsByView, buildRemoveFieldItem, createDefaultPositions, createSharedType, doFilter, generateCopyName, getCustomFieldValues, getDataBySharedType, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFilteredRecords, getIdBySystemFieldValues, getIdBySystemFieldValuesType, getMaxPosition, getPosition, getPositionsByRecordSyncElement, getPositionsBySystemFieldValues, getRecordsBySharedJson, getShareTypeNumberPath, getSharedMapValueId, getSharedMapValueIndex, getSharedRecord, getSharedRecordId, getSharedRecordIndex, getSharedTypeByData, getShortIdBySystemFieldValues, getSortFields, getSortRecords, getSystemFieldValues, getTrackableEntityBySystemFieldValues, getValuesByCustomFieldValues, isPathEqual, moveFields, removeView, setRecordPositions$1 as setRecordPositions, setRecordUpdatedInfo, sortByViewPosition, sortRecordsBySortInfo, toRecordSyncElement, toSharedType, toSyncElement, translatePositionToPath, translateYjsEvent, updateFieldValue, updateRecordsUpdatedInfo, withState };
|
1606
|
+
export { AITableFilterLogical, AITableStateI18nKey, AI_TABLE_CONTENT_FIELD_NAME, ActionName, Actions, CopyCellsItem, CopyFieldPropertyItem, Direction, DividerMenuItem, EditFieldPropertyItem, ExecuteType, FLUSHING, PasteCellsItem, Positions, RemovePositions, RemoveRecordsItem, SystemFieldIndex, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyEvents, applyYjsEvents, buildFieldsByView, buildRecordsByView, buildRemoveFieldItem, createDefaultPositions, createSharedType, doFilter, generateCopyName, getCustomFieldValues, getDataBySharedType, getDefaultI18nTextByKey, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFieldsSizeMap, getFilteredRecords, getIdBySystemFieldValues, getIdBySystemFieldValuesType, getMaxPosition, getPosition, getPositionsByRecordSyncElement, getPositionsBySystemFieldValues, getRecordsBySharedJson, getShareTypeNumberPath, getSharedMapValueId, getSharedMapValueIndex, getSharedRecord, getSharedRecordId, getSharedRecordIndex, getSharedTypeByData, getShortIdBySystemFieldValues, getSortFields, getSortRecords, getStateI18nTextByKey, getSystemFieldValues, getTrackableEntityBySystemFieldValues, getValuesByCustomFieldValues, isPathEqual, moveFields, removeView, setRecordPositions$1 as setRecordPositions, setRecordUpdatedInfo, sortByViewPosition, sortRecordsBySortInfo, toRecordSyncElement, toSharedType, toSyncElement, translatePositionToPath, translateYjsEvent, updateFieldValue, updateRecordsUpdatedInfo, withState };
|
1545
1607
|
//# sourceMappingURL=ai-table-state.mjs.map
|