@ai-table/state 0.1.44 → 0.1.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/fesm2022/ai-table-state.mjs +32 -12
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/field/add-fields.d.ts.map +1 -1
- package/utils/group/group-calculator.d.ts.map +1 -1
- package/utils/record/add-records.d.ts.map +1 -1
- package/utils/record/common.d.ts +1 -0
- package/utils/record/common.d.ts.map +1 -1
- package/utils/view.d.ts +1 -1
- package/utils/view.d.ts.map +1 -1
@@ -1411,7 +1411,7 @@ function createMultiplePositions(views, activeId, data, targetIndex = data.lengt
|
|
1411
1411
|
return positions;
|
1412
1412
|
}
|
1413
1413
|
function getPositions(activeId, data, targetIndex = data.length - 1, count = 1, isInsertBefore = false) {
|
1414
|
-
let startPosition = data.length - 1;
|
1414
|
+
let startPosition = data[data.length - 1].positions[activeId];
|
1415
1415
|
let endPosition = startPosition + count + 1;
|
1416
1416
|
if (data[targetIndex]) {
|
1417
1417
|
if (isInsertBefore) {
|
@@ -1515,7 +1515,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
1515
1515
|
case ActionName.UpdateFieldValue: {
|
1516
1516
|
const [recordId, fieldId] = action.path;
|
1517
1517
|
if (recordId && fieldId) {
|
1518
|
-
const recordIndex =
|
1518
|
+
const recordIndex = records.findIndex((item) => item._id === recordId);
|
1519
1519
|
records[recordIndex].values[fieldId] = action.newFieldValue;
|
1520
1520
|
}
|
1521
1521
|
break;
|
@@ -1523,7 +1523,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
1523
1523
|
case ActionName.UpdateSystemFieldValue: {
|
1524
1524
|
const [recordId] = action.path;
|
1525
1525
|
if (recordId && action.updatedInfo) {
|
1526
|
-
const recordIndex =
|
1526
|
+
const recordIndex = records.findIndex((item) => item._id === recordId);
|
1527
1527
|
if (action.updatedInfo.updated_at) {
|
1528
1528
|
records[recordIndex].updated_at = action.updatedInfo.updated_at;
|
1529
1529
|
}
|
@@ -1548,7 +1548,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
1548
1548
|
}
|
1549
1549
|
case ActionName.RemoveField: {
|
1550
1550
|
const [fieldId] = action.path;
|
1551
|
-
const fieldIndex =
|
1551
|
+
const fieldIndex = fields.findIndex((item) => item._id === fieldId);
|
1552
1552
|
if (fieldIndex > -1) {
|
1553
1553
|
fields.splice(fieldIndex, 1);
|
1554
1554
|
records.forEach((item) => {
|
@@ -1559,7 +1559,7 @@ const apply = (aiTable, records, fields, views, action) => {
|
|
1559
1559
|
}
|
1560
1560
|
case ActionName.RemoveRecord: {
|
1561
1561
|
const [recordId] = action.path;
|
1562
|
-
const recordIndex =
|
1562
|
+
const recordIndex = records.findIndex((item) => item._id === recordId);
|
1563
1563
|
if (recordIndex > -1) {
|
1564
1564
|
records.splice(recordIndex, 1);
|
1565
1565
|
}
|
@@ -1984,6 +1984,24 @@ function getParentGroupValuesByGroupId(aiTable, groupId) {
|
|
1984
1984
|
return pre;
|
1985
1985
|
}, {});
|
1986
1986
|
}
|
1987
|
+
function getPrevRecordIdByAddGroupId(aiTable, groupId) {
|
1988
|
+
const activeViewId = aiTable.activeViewId();
|
1989
|
+
const activeView = aiTable.viewsMap()[activeViewId];
|
1990
|
+
if (!activeView.settings?.groups?.length)
|
1991
|
+
return null;
|
1992
|
+
const visibleRowsIndexMap = aiTable.context.visibleRowsIndexMap();
|
1993
|
+
const rowIndex = visibleRowsIndexMap.get(groupId) ?? -1;
|
1994
|
+
if (rowIndex > -1) {
|
1995
|
+
const linearRows = aiTable.context.linearRows();
|
1996
|
+
const current = linearRows[rowIndex];
|
1997
|
+
const prev = linearRows[rowIndex - 1];
|
1998
|
+
if (current.type === AITableRowType.add && prev.type === AITableRowType.record) {
|
1999
|
+
return prev._id;
|
2000
|
+
}
|
2001
|
+
return null;
|
2002
|
+
}
|
2003
|
+
return null;
|
2004
|
+
}
|
1987
2005
|
|
1988
2006
|
function moveRecords(aiTable, options, updatedInfo) {
|
1989
2007
|
const activeViewId = aiTable.activeViewId();
|
@@ -2049,7 +2067,7 @@ function addFields(aiTable, options) {
|
|
2049
2067
|
};
|
2050
2068
|
}
|
2051
2069
|
else {
|
2052
|
-
newField.positions = createPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields
|
2070
|
+
newField.positions = createPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields);
|
2053
2071
|
}
|
2054
2072
|
Actions.addField(aiTable, newField, originId, isDuplicate);
|
2055
2073
|
}
|
@@ -2084,18 +2102,20 @@ function addRecords(aiTable, trackableEntity, options) {
|
|
2084
2102
|
const hiddenRecordIds = [];
|
2085
2103
|
let needCopyGroupValuesMap = null;
|
2086
2104
|
if (groups?.length && options.forGroupId) {
|
2105
|
+
if (!options.afterRecordId && !options.beforeRecordId) {
|
2106
|
+
const prevRecordId = getPrevRecordIdByAddGroupId(aiTable, options.forGroupId);
|
2107
|
+
if (prevRecordId) {
|
2108
|
+
options.afterRecordId = prevRecordId;
|
2109
|
+
}
|
2110
|
+
}
|
2087
2111
|
needCopyGroupValuesMap = getParentGroupValuesByGroupId(aiTable, options.forGroupId);
|
2088
2112
|
}
|
2089
|
-
const records = aiTable.gridData().records;
|
2090
2113
|
newRecordIds.forEach((id, index) => {
|
2091
2114
|
const record = {
|
2092
2115
|
_id: id,
|
2093
2116
|
short_id: newRecordShortIds[index],
|
2094
2117
|
values: newRecordValues,
|
2095
|
-
...trackableEntity
|
2096
|
-
positions: {
|
2097
|
-
[activeViewId]: getMaxPosition(records, activeViewId) + 1
|
2098
|
-
}
|
2118
|
+
...trackableEntity
|
2099
2119
|
};
|
2100
2120
|
if (needCopyGroupValuesMap) {
|
2101
2121
|
groups?.forEach((group) => {
|
@@ -2423,5 +2443,5 @@ const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveV
|
|
2423
2443
|
* Generated bundle index. Do not edit.
|
2424
2444
|
*/
|
2425
2445
|
|
2426
|
-
export { AITableStateI18nKey, AITableStateI18nText, Actions, CopyCellsItem, CopyFieldPropertyItem, DividerMenuItem, EditFieldPropertyItem, FLUSHING, GroupCalculator, InsertDownwardRecords, InsertUpwardRecords, PasteCellsItem, RemoveRecordsItem, UndoManagerService, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyActions, applyEvents, applyYjsEvents, buildFieldsByView, buildGroupLinearRows, buildRecordsByView, buildRemoveFieldItem, buildSetFieldAction, buildSetRecordPositionsActon, calculateAdaptiveFrozenColumnCount, checkConditions, createMultiplePositions, createPositions, createSharedType, doFilter, findNextRecordForTargetInOriginalRecords, findPrevRecordForTargetInOriginalRecords, freezeToThisColumn, generateCopyName, getDataBySharedType, getDefaultI18nTextByKey, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFieldsSizeMap, getFilteredRecords, getFrozenFieldId, getMaxPosition, getNewRecordsPosition, getParentGroupValuesByGroupId, getParentLinearRowGroups, getPosition, getPositionByAfterOrBeforeRecordId, getPositions, getRecordsBySharedJson, getSharedTypeByData, getSortFields, getSortRecords, getStateI18nTextByKey, isPathEqual, moveFields, moveRecords, removeView, restoreDefaultFrozenColumn, sortRecordsBySortInfo, sortViews, toSharedType, translateYjsEvent, updateFieldAndValues, updateFieldValues, withState };
|
2446
|
+
export { AITableStateI18nKey, AITableStateI18nText, Actions, CopyCellsItem, CopyFieldPropertyItem, DividerMenuItem, EditFieldPropertyItem, FLUSHING, GroupCalculator, InsertDownwardRecords, InsertUpwardRecords, PasteCellsItem, RemoveRecordsItem, UndoManagerService, VIEW_ACTIONS, YjsAITable, actionMappers, addFields, addRecords, addView, applyActionOps, applyActions, applyEvents, applyYjsEvents, buildFieldsByView, buildGroupLinearRows, buildRecordsByView, buildRemoveFieldItem, buildSetFieldAction, buildSetRecordPositionsActon, calculateAdaptiveFrozenColumnCount, checkConditions, createMultiplePositions, createPositions, createSharedType, doFilter, findNextRecordForTargetInOriginalRecords, findPrevRecordForTargetInOriginalRecords, freezeToThisColumn, generateCopyName, getDataBySharedType, getDefaultI18nTextByKey, getDefaultRecordDataByFilter, getDefaultRecordValues, getFieldPositionInView, getFieldsSizeMap, getFilteredRecords, getFrozenFieldId, getMaxPosition, getNewRecordsPosition, getParentGroupValuesByGroupId, getParentLinearRowGroups, getPosition, getPositionByAfterOrBeforeRecordId, getPositions, getPrevRecordIdByAddGroupId, getRecordsBySharedJson, getSharedTypeByData, getSortFields, getSortRecords, getStateI18nTextByKey, isPathEqual, moveFields, moveRecords, removeView, restoreDefaultFrozenColumn, sortRecordsBySortInfo, sortViews, toSharedType, translateYjsEvent, updateFieldAndValues, updateFieldValues, withState };
|
2427
2447
|
//# sourceMappingURL=ai-table-state.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.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/shared/utils/initialize.ts","../../../packages/state/src/shared/undo-manager.service.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/field/stat-field.ts","../../../packages/state/src/utils/group/group-calculator.ts","../../../packages/state/src/utils/group/utils.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/utils/field/frozen-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/group.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/utils/record/common.ts","../../../packages/state/src/utils/record/move-records.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.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 * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { AITableView, AITableField, SharedType, SyncMapElement, getShareTypeNumberPath, AITableAction, ActionName } from '@ai-table/utils';\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 { AIViewTable } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateMapEvent from './map-event';\nimport { AITableAction, SharedType, translateArrayEvent } from '@ai-table/utils';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(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 const actions: AITableAction[] = [];\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n actions.push(item);\n })\n );\n return actions;\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n const actions = applyEvents(aiTable, sharedType, events);\n applyActions(actions, aiTable);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n const actions = applyEvents(aiTable, sharedType, events);\n applyActions(actions, aiTable);\n });\n }\n}\n\nexport function applyActions(actions: AITableAction[], aiTable: AIViewTable) {\n aiTable.apply(actions);\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n UpdateFieldValueAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\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 if (fieldIndex < customField.length) {\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n } else {\n // 幽灵单元格,协同的后端会对这样的数据进行纠正,但是在纠正同步到位之前,前端可能会出现幽灵单元格\n console.error('Field index out of bounds, cannot update field value');\n }\n }\n }\n\n return sharedType;\n}\n","import { ActionName, SetFieldAction, SetViewAction, getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\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 UpdateSystemFieldValue,\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement,\n AITableViewFields,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/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([toMapSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = 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 } = action;\n const insertIndex = fields.length;\n const fieldSyncElement = toMapSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1) as Y.Array<any>;\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n // 幽灵单元格,暂不处理交给后端统一处理\n if (insertIndex <= customFieldValues.length) {\n customFieldValues.insert(insertIndex, [newFieldValue]);\n } else {\n console.error('Field index out of bounds, cannot initialize record value for new field');\n }\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 getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction\n): 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 setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\nimport { ActionName, AITableAction, SharedType } from '@ai-table/utils';\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 * as Y from 'yjs';\nimport {\n AI_TABLE_CONTENT_FIELD_NAME,\n AITableViewFields,\n AITableViewRecords,\n AITableViews,\n SharedRecordJsonType,\n SharedType,\n toMapSyncElement,\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement\n} from '@ai-table/utils';\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(toMapSyncElement));\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(toMapSyncElement));\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 { Injectable, signal, WritableSignal } from '@angular/core';\nimport { UndoManager } from 'yjs';\nimport { AIViewTable } from '../types';\nimport { YjsAITable } from './yjs-table';\nimport { SharedType } from '@ai-table/utils';\n@Injectable()\nexport class UndoManagerService {\n private _undoManager: UndoManager | null = null;\n private _canUndoCount: WritableSignal<number> = signal<number>(0);\n private _canRedoCount: WritableSignal<number> = signal<number>(0);\n private _aiTable: AIViewTable | null = null;\n\n get undoManager(): UndoManager | null {\n return this._undoManager;\n }\n\n get canUndoCount(): WritableSignal<number> {\n return this._canUndoCount;\n }\n\n get canRedoCount(): WritableSignal<number> {\n return this._canRedoCount;\n }\n\n initialize(sharedType: SharedType, aiTable: AIViewTable) {\n if (!sharedType || !aiTable) {\n return;\n }\n this._aiTable = aiTable;\n this._undoManager = new UndoManager(sharedType, {\n trackedOrigins: new Set([aiTable]),\n captureTimeout: 300\n });\n\n this._undoManager.on('stack-item-added', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n\n this._undoManager.on('stack-item-popped', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n }\n\n undo() {\n if (this._undoManager?.canUndo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.undo());\n }\n }\n\n redo() {\n if (this._undoManager?.canRedo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.redo());\n }\n }\n\n destroy() {\n this._undoManager = null;\n this._canUndoCount.set(0);\n this._canRedoCount.set(0);\n }\n}\n","import { AITableFieldType, AITableView, AITableViewRecords, AITableViewRecord, AITableGroupField, SortDirection } from '@ai-table/utils';\nimport { AITable, AITableQueries, FieldModelMap } from '@ai-table/grid';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRecords = [...records];\n const groups = activeView.settings?.groups;\n\n return shallowRecords.sort((record1, record2) => {\n // 分组排序(高优先级)\n if (groups && groups.length > 0) {\n const groupCompareResult = compareByGroups(aiTable, record1, record2, groups);\n if (groupCompareResult !== 0) {\n return groupCompareResult;\n }\n }\n\n // sorts排序(中优先级)\n let shouldSkipPositionSort = false;\n if (activeView.settings?.sorts?.length) {\n const { is_keep_sort, sorts } = activeView.settings;\n if (sorts?.length) {\n const sortsCompareResult = compareBySorts(record1, record2, sorts, aiTable, sortKeysMap);\n if (sortsCompareResult !== 0) {\n return sortsCompareResult;\n }\n shouldSkipPositionSort = Boolean(is_keep_sort);\n }\n }\n\n // position排序(低优先级)\n if (shouldSkipPositionSort) {\n // is_keep_sort为true,禁用position排序\n return 0;\n }\n return compareByPosition(record1, record2, activeView);\n });\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType | string, 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\nfunction compareByGroups(aiTable: AITable, record1: AITableViewRecord, record2: AITableViewRecord, groups: AITableGroupField[]): number {\n return groups.reduce((result, groupField) => {\n if (result !== 0) return result;\n\n const field = aiTable.fieldsMap()[groupField.field_id];\n if (!field) return 0;\n\n const value1 = AITableQueries.getFieldValue(aiTable, [record1._id, field._id]);\n const value2 = AITableQueries.getFieldValue(aiTable, [record2._id, field._id]);\n\n const fieldModel = FieldModelMap[field.type];\n if (!fieldModel) return 0;\n\n const compareResult = fieldModel.compare(value1, value2, aiTable.context!.references(), undefined, {\n aiTable,\n field\n });\n\n return compareResult * (groupField.direction === SortDirection.ascending ? 1 : -1);\n }, 0);\n}\n\nfunction compareBySorts(\n record1: AITableViewRecord,\n record2: AITableViewRecord,\n sorts: any[],\n aiTable: AITable,\n sortKeysMap?: Partial<Record<AITableFieldType | string, string>>\n): number {\n return 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, [record1._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [record2._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\nfunction compareByPosition(record1: AITableViewRecord, record2: AITableViewRecord, activeView: AITableView): number {\n const hasPosition1 = record1.positions && record1.positions[activeView._id] !== undefined;\n const hasPosition2 = record2.positions && record2.positions[activeView._id] !== undefined;\n\n if (hasPosition1 && hasPosition2) {\n return record1.positions[activeView._id] - record2.positions[activeView._id];\n }\n\n // 如果只有一个有位置信息,有位置的排在前面\n if (hasPosition1 && !hasPosition2) {\n return -1;\n }\n if (!hasPosition1 && hasPosition2) {\n return 1;\n }\n\n // 如果都没有位置信息,保持原有顺序\n return 0;\n}\n","import { isSystemField, FieldModelMap, AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport {\n AITableRecord,\n AITableField,\n AITableFieldType,\n FieldValue,\n SelectSettings,\n SystemFieldTypes,\n AITableViewRecords,\n AITableViewFields,\n AITableView,\n AITableFilterConditions,\n AITableFilterLogical,\n AITableViewField,\n AITableFilterCondition,\n AITableFilterOperation,\n isEmpty\n} from '@ai-table/utils';\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\nexport function checkConditions(\n aiTable: AIViewTable,\n fields: AITableViewFields,\n record: AITableRecord,\n filterConditions?: AITableFilterConditions\n) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n const conditions = aiTable.viewsMap()[aiTable.activeViewId()].settings?.conditions;\n const conditionLogical = aiTable.viewsMap()[aiTable.activeViewId()].settings?.condition_logical;\n filterConditions = {\n conditions,\n condition_logical: conditionLogical\n };\n if (!conditions || !conditions?.length) {\n return true;\n }\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 (\n field &&\n doFilter(condition, cellValue, {\n aiTable,\n field\n })\n );\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(\n condition: AITableFilterCondition,\n cellValue: FieldValue,\n options: {\n aiTable: AITable;\n field: AITableField;\n }\n) {\n const fieldModel = FieldModelMap[options.field.type];\n if (fieldModel && fieldModel.isValid(cellValue)) {\n return fieldModel.isMeetFilter(condition, cellValue, options);\n } else {\n if (condition.operation === AITableFilterOperation.empty) {\n return true;\n } else {\n return false;\n }\n }\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 as AITableFieldType) &&\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 as AITableFieldType)\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 as AITableFieldType)) {\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 (\n field &&\n [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type as AITableFieldType)\n ) {\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, sortByViewPosition } from '@ai-table/utils';\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields } from '@ai-table/utils';\n\nexport function buildFieldStatType(data: AITableViewFields, activeView: AITableView) {\n return data.map((field, index) => {\n const fieldStatType = field.fieldStatTypes?.[activeView._id];\n if (fieldStatType) {\n return {\n ...field,\n stat_type: fieldStatType\n };\n } else {\n return field;\n }\n });\n}\n","import { AITable, AITableLinearRowGroup, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableViewRecords, AITableViewRecord, AITableField, AITableGroupField } from '@ai-table/utils';\nimport { AITableLinearRow, AITableRowType } from '@ai-table/grid';\nimport { nanoid } from 'nanoid';\n\nexport class GroupCalculator {\n private groups: AITableGroupField[];\n private groupBreakpoints: Map<string, number[]>;\n private groupCollapseState: Set<string>;\n private aiTable: AITable;\n private fieldsMap: Record<string, AITableField>;\n\n constructor(aiTable: AITable, groups: AITableGroupField[], collapseState?: string[]) {\n this.aiTable = aiTable;\n this.groups = groups;\n this.groupBreakpoints = new Map();\n this.groupCollapseState = new Set(collapseState || []);\n this.fieldsMap = this.aiTable.fieldsMap();\n }\n\n calculateLinearRows(records: AITableViewRecords): AITableLinearRow[] {\n this.detectGroupBreakpoints(records);\n\n return this.generateLinearRows(records);\n }\n\n // 检测断点\n private detectGroupBreakpoints(records: AITableViewRecords): void {\n this.groupBreakpoints.clear();\n\n if (records.length === 0) return;\n\n let previousRecord: AITableViewRecord | null = null;\n\n records.forEach((record, index) => {\n if (previousRecord === null) {\n // 第一条记录,所有分组字段都是断点\n this.groups.forEach((groupField) => {\n this.addBreakpoint(groupField.field_id, index);\n });\n } else {\n // 检查每个分组字段是否发生变化\n this.groups.forEach((groupField, groupIndex) => {\n const field = this.fieldsMap[groupField.field_id];\n if (!field) return;\n\n const prevValue = AITableQueries.getFieldValue(this.aiTable, [previousRecord!._id, field._id]);\n const currValue = AITableQueries.getFieldValue(this.aiTable, [record._id, field._id]);\n\n const fieldModel = FieldModelMap[field.type];\n if (!fieldModel) return;\n\n const compareResult = fieldModel.compare(prevValue, currValue, this.aiTable.context!.references(), undefined, {\n aiTable: this.aiTable,\n field\n });\n\n if (compareResult !== 0) {\n // 值发生变化,从当前层级开始的所有层级都是断点\n for (let i = groupIndex; i < this.groups.length; i++) {\n this.addBreakpoint(this.groups[i].field_id, index);\n }\n return;\n }\n });\n }\n\n previousRecord = record;\n });\n }\n\n // 添加断点\n private addBreakpoint(fieldId: string, recordIndex: number): void {\n if (!this.groupBreakpoints.has(fieldId)) {\n this.groupBreakpoints.set(fieldId, []);\n }\n const breakpoints = this.groupBreakpoints.get(fieldId)!;\n if (!breakpoints.includes(recordIndex)) {\n breakpoints.push(recordIndex);\n }\n }\n\n // 生成GroupLinearRows\n private generateLinearRows(records: AITableViewRecords): AITableLinearRow[] {\n const linearRows: AITableLinearRow[] = [];\n let lastGroupDepth = -1;\n let currentGroupRecords: AITableViewRecord[] = [];\n let currentGroupRecordIndices: number[] = []; // 记录当前分组中每个记录的原始索引\n\n // 开始添加一个空白行\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: 0\n });\n\n records.forEach((record, index) => {\n // 生成分组标签\n const groupTabRows = this.generateGroupTabRows(record, index, records.length);\n\n if (groupTabRows.length > 0) {\n // 如果有新的分组标签,先处理上一个分组的结束\n if (currentGroupRecords.length > 0) {\n this.handleGroupEnd(currentGroupRecords, linearRows, currentGroupRecordIndices);\n currentGroupRecords = [];\n currentGroupRecordIndices = [];\n }\n\n const depths = groupTabRows.filter((d) => d.depth !== undefined).map((d) => d.depth) as number[];\n const minDepth = depths.length > 0 ? Math.min(...depths) : 0;\n\n // 如果当前分组的最小深度小于等于上一个分组的深度,说明是同级或上级分组,需添加空白行\n if (lastGroupDepth >= 0 && minDepth <= lastGroupDepth) {\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: minDepth\n });\n }\n\n linearRows.push(...groupTabRows);\n lastGroupDepth = depths.length > 0 ? Math.max(...depths) : 0;\n }\n\n // 将记录添加到当前分组\n currentGroupRecords.push(record);\n currentGroupRecordIndices.push(index);\n });\n\n // 处理最后一个分组\n if (currentGroupRecords.length > 0) {\n this.handleGroupEnd(currentGroupRecords, linearRows, currentGroupRecordIndices);\n }\n\n // 添加分组结束的空白行\n if (lastGroupDepth >= 0) {\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: 0\n });\n }\n\n return linearRows;\n }\n\n private handleGroupEnd(\n currentGroupRecords: AITableViewRecord[],\n linearRows: AITableLinearRow[],\n currentGroupRecordIndices?: number[]\n ): void {\n let groupDisplayRowIndex = 0;\n const lastLinearRow = linearRows[linearRows.length - 1];\n\n currentGroupRecords.forEach((record, i) => {\n if (lastLinearRow?.type === AITableRowType.group && !lastLinearRow.isCollapsed) {\n groupDisplayRowIndex++;\n linearRows.push({\n type: AITableRowType.record,\n _id: record._id,\n displayIndex: groupDisplayRowIndex,\n depth: this.groups.length\n });\n }\n });\n\n // 分组未折叠,为每个分组添加add新增行\n if (currentGroupRecords.length > 0 && lastLinearRow?.type === AITableRowType.group && !lastLinearRow.isCollapsed) {\n let startRecordIndex = 0;\n let endRecordIndex = 0;\n if (currentGroupRecordIndices) {\n // 当前添加按钮对于的记录范围\n startRecordIndex = Math.min(...currentGroupRecordIndices);\n endRecordIndex = Math.max(...currentGroupRecordIndices);\n }\n linearRows.push({\n type: AITableRowType.add,\n _id: nanoid(),\n depth: this.groups.length,\n range: [startRecordIndex, endRecordIndex]\n });\n }\n }\n\n // 生成分组标签\n private generateGroupTabRows(record: AITableViewRecord, recordIndex: number, totalRecords: number): AITableLinearRowGroup[] {\n const groupTabRows: AITableLinearRowGroup[] = [];\n\n this.groups.forEach((groupField, depth) => {\n const breakpoints = this.groupBreakpoints.get(groupField.field_id) || [];\n\n if (breakpoints.includes(recordIndex)) {\n const field = this.fieldsMap[groupField.field_id];\n if (!field) return;\n\n const breakpointIndex = breakpoints.indexOf(recordIndex);\n const groupId = this.generateGroupId(groupField.field_id, depth, breakpointIndex);\n const isParentCollapsed = this.isParentGroupCollapsed(depth, recordIndex);\n if (!isParentCollapsed) {\n const groupValue = AITableQueries.getFieldValue(this.aiTable, [record._id, field._id]);\n const recordRange = this.calculateGroupRecordRange(groupField.field_id, breakpointIndex, totalRecords);\n\n groupTabRows.push({\n type: AITableRowType.group,\n _id: nanoid(),\n depth,\n fieldId: groupField.field_id,\n groupValue,\n isCollapsed: this.groupCollapseState.has(groupId),\n range: recordRange,\n groupId\n });\n }\n }\n });\n\n return groupTabRows;\n }\n\n private calculateGroupRecordRange(fieldId: string, breakpointIndex: number, totalRecords: number): [number, number] {\n const breakpoints = this.groupBreakpoints.get(fieldId) || [];\n const startIndex = breakpoints[breakpointIndex] || 0;\n\n let endIndex: number;\n if (breakpointIndex + 1 < breakpoints.length) {\n // 如果不是最后一个分组,结束位置是下一个断点的前一个位置\n endIndex = breakpoints[breakpointIndex + 1] - 1;\n } else {\n // 如果是最后一个分组,结束位置是最后一条记录\n endIndex = totalRecords - 1;\n }\n\n return [startIndex, endIndex];\n }\n\n // 生成分组ID\n private generateGroupId(fieldId: string, depth: number, breakpointIndex: number): string {\n // 通过字段ID、深度和断点索引确保唯一\n return `${fieldId}_${depth}_${breakpointIndex}`;\n }\n\n // 检查所有父级分组是否被折叠\n private isParentGroupCollapsed(currentDepth: number, recordIndex: number): boolean {\n for (let parentDepth = 0; parentDepth < currentDepth; parentDepth++) {\n const parentGroupField = this.groups[parentDepth];\n const parentBreakpoints = this.groupBreakpoints.get(parentGroupField.field_id) || [];\n\n let parentBreakpointIndex = -1;\n for (let i = parentBreakpoints.length - 1; i >= 0; i--) {\n if (parentBreakpoints[i] <= recordIndex) {\n parentBreakpointIndex = i;\n break;\n }\n }\n\n if (parentBreakpointIndex > -1) {\n const parentGroupId = this.generateGroupId(parentGroupField.field_id, parentDepth, parentBreakpointIndex);\n const isParentCollapsed = this.groupCollapseState.has(parentGroupId);\n if (isParentCollapsed) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import { AITableLinearRowGroup, AITableRowType } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\n\nexport function getParentLinearRowGroups(aiTable: AIViewTable, targetId: string) {\n const linearRows = aiTable.context!.linearRows();\n const targetIndex = aiTable.context!.visibleRowsIndexMap().get(targetId)!;\n\n if (targetIndex === -1) {\n return [];\n }\n\n const targetRow = linearRows[targetIndex];\n\n const parentGroups: AITableLinearRowGroup[] = [];\n let parentDepthPointer = targetRow.depth! - 1;\n for (let i = targetIndex - 1; i >= 0 && parentDepthPointer >= 0; i--) {\n const row = linearRows[i];\n\n if (row.type === AITableRowType.group) {\n const rowDepth = row.depth || 0;\n\n if (rowDepth <= parentDepthPointer) {\n parentGroups.push(row);\n parentDepthPointer--;\n }\n }\n }\n\n return parentGroups;\n}\n","import { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType, AITableView, AITableViewFields, AITableViewRecords } from '@ai-table/utils';\nimport { AIViewTable } from '../types';\nimport { buildFieldStatType } from './field/stat-field';\nimport { GroupCalculator } from './group';\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 const sortFields = getSortFields(aiTable, fields as AITableViewFields, activeView);\n return buildFieldStatType(sortFields, activeView);\n}\n\nexport function buildGroupLinearRows(aiTable: AIViewTable, activeView: AITableView, records: AITableViewRecords) {\n if (aiTable && activeView?.settings?.groups?.length) {\n try {\n const groups = activeView.settings?.groups!;\n const collapsedGroupIds = activeView.settings?.collapsed_group_ids;\n\n const calculator = new GroupCalculator(aiTable, groups, collapsedGroupIds);\n return calculator.calculateLinearRows(records);\n } catch (error) {\n console.warn('Grouped build failed, using the default build method:', error);\n }\n }\n return null;\n}\n","import { AITableView, ActionName, AddViewAction, RemoveViewAction, SetViewAction } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { sortViews } from '../utils';\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, originId: string, newView: AITableView, isDuplicate?: boolean) {\n const views = sortViews(aiTable.views());\n const currentIndex = views.findIndex((item) => item._id === originId);\n if (isDuplicate) {\n const nextIndex = currentIndex + 1;\n newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;\n } else {\n newView.position = currentIndex + 1;\n }\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view: newView,\n isDuplicate\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 function setViewFrozenField(aiTable: AIViewTable, frozenFieldId?: string) {\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.viewsMap()[activeViewId];\n\n const currentSettings = activeView.settings || {};\n const newSettings = {\n ...currentSettings,\n frozen_field_id: frozenFieldId\n };\n\n if (frozenFieldId === undefined) {\n delete newSettings.frozen_field_id;\n }\n\n setView(aiTable, { settings: newSettings }, [activeViewId]);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView,\n setViewFrozenField\n};\n","import { AIViewTable } from '../types';\nimport { ActionName, NumberPath, Positions, RemovePositions, SetRecordPositionAction } from '@ai-table/utils';\n\nexport function buildSetRecordPositionsActon(aiTable: AIViewTable, positions: Positions | RemovePositions, path: NumberPath) {\n const action: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n return action;\n}\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: NumberPath) {\n const operation = buildSetRecordPositionsActon(aiTable, positions, path);\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\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 pasteOverMaxRecords = 'pasteOverMaxRecords',\n pasteOverMaxFields = 'pasteOverMaxFields',\n insertUpward = 'insertUpward',\n insertDownward = 'insertDownward',\n upward = 'upward',\n downward = 'downward',\n freezeToThisColumn = 'freezeToThisColumn',\n restoreDefaultFrozenColumn = 'restoreDefaultFrozenColumn'\n}\n\nexport const AITableStateI18nText = {\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 [AITableStateI18nKey.pasteOverMaxRecords]: '粘贴数据超过最大行数',\n [AITableStateI18nKey.pasteOverMaxFields]: '粘贴数据超过最大列数',\n [AITableStateI18nKey.insertUpward]: '向上插入',\n [AITableStateI18nKey.insertDownward]: '向下插入',\n [AITableStateI18nKey.upward]: '行',\n [AITableStateI18nKey.downward]: '行',\n [AITableStateI18nKey.freezeToThisColumn]: '冻结至此列',\n [AITableStateI18nKey.restoreDefaultFrozenColumn]: '恢复默认冻结列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableStateI18nText[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 { AITableView, AITableViewFields, AITableViewRecords, Path } from '@ai-table/utils';\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 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 { AITableFields, AITableFieldsSizeMap, AITableView, AITableViewField, NumberPath } from '@ai-table/utils';\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 { AITable, getColumnIndicesSizeMap } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { AIViewTable } from '../../types';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableField, AITableSizeMap, AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH, AI_TABLE_MIN_FROZEN_COLUMN_COUNT } from '@ai-table/utils';\nimport { setViewFrozenField } from '../../action/view';\n\nexport function getFrozenFieldId(aiTable: AITable): string | undefined {\n try {\n const viewTable = aiTable as AIViewTable;\n const activeViewId = viewTable.activeViewId();\n const activeView = viewTable.viewsMap()[activeViewId];\n return activeView?.settings?.frozen_field_id;\n } catch (error) {\n return undefined;\n }\n}\n\nfunction calculateAdaptiveFrozenColumnCountCore(config: {\n containerWidth: number;\n rowHeadWidth: number;\n visibleFields: AITableField[];\n columnIndicesSizeMap: AITableSizeMap;\n frozenFieldId?: string;\n minUnfrozenWidth?: number;\n}): number {\n const {\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId,\n minUnfrozenWidth = AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH\n } = config;\n\n if (visibleFields.length === 0) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n let targetFrozenCount: number;\n\n if (frozenFieldId) {\n const frozenFieldIndex = visibleFields.findIndex((field) => field._id === frozenFieldId);\n if (frozenFieldIndex >= 0) {\n targetFrozenCount = frozenFieldIndex + 1;\n } else {\n targetFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n } else {\n targetFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n const availableWidth = containerWidth - rowHeadWidth;\n\n const maxFrozenWidth = Math.max(0, availableWidth - minUnfrozenWidth);\n\n let currentFrozenWidth = 0;\n let actualFrozenCount = 0;\n const maxPossibleCount = Math.min(targetFrozenCount, visibleFields.length);\n\n for (let i = 0; i < maxPossibleCount; i++) {\n const fieldWidth = columnIndicesSizeMap[i];\n const newFrozenWidth = currentFrozenWidth + fieldWidth;\n\n if (newFrozenWidth > maxFrozenWidth) {\n if (i === 0) {\n currentFrozenWidth = newFrozenWidth;\n actualFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n break;\n }\n\n currentFrozenWidth = newFrozenWidth;\n actualFrozenCount = i + 1;\n }\n\n // 至少有一列冻结\n if (actualFrozenCount < AI_TABLE_MIN_FROZEN_COLUMN_COUNT) {\n actualFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n if (visibleFields.length > 0) {\n currentFrozenWidth = columnIndicesSizeMap[0];\n }\n }\n\n return actualFrozenCount;\n}\n\nexport function calculateAdaptiveFrozenColumnCount(aiTable: AITable, containerWidth: number, minUnfrozenWidth: number = 200): number {\n try {\n if (containerWidth <= 0) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n const frozenFieldId = getFrozenFieldId(aiTable);\n\n const visibleFields = AITable.getVisibleFields(aiTable);\n const columnIndicesSizeMap = getColumnIndicesSizeMap(aiTable, visibleFields);\n const rowHeadWidth = aiTable.context?.rowHeadWidth?.() || 0;\n return calculateAdaptiveFrozenColumnCountCore({\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId,\n minUnfrozenWidth\n });\n } catch (error) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n}\n\nexport const freezeToThisColumn = (aiTable: AITable) => {\n return {\n type: 'freezeToThisColumn',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.freezeToThisColumn),\n icon: 'frozen',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const currentField = field();\n const viewTable = aiTable as AIViewTable;\n\n setViewFrozenField(viewTable, currentField._id);\n },\n hidden: (aiTable: AITable, field: Signal<AITableField>) => {\n if (aiTable.context?.readonly?.()) {\n return true;\n }\n\n const currentField = field();\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n return currentFrozenFieldId === currentField._id;\n },\n disabled: (aiTable: AITable, field: Signal<AITableField>) => {\n try {\n const currentField = field();\n const fields = aiTable.gridData().fields;\n const currentFieldIndex = fields.findIndex((f) => f._id === currentField._id);\n\n const visibleFields = AITable.getVisibleFields(aiTable);\n const columnIndicesSizeMap = getColumnIndicesSizeMap(aiTable, visibleFields);\n const containerWidth = aiTable.context?.containerRect()?.width || 0;\n const rowHeadWidth = aiTable.context?.rowHeadWidth?.() || 0;\n const actualFrozenCount = calculateAdaptiveFrozenColumnCountCore({\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId: currentField._id,\n minUnfrozenWidth: AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH\n });\n\n if (actualFrozenCount < currentFieldIndex + 1) {\n // 超过可视区域禁用\n return true;\n }\n\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n if (!currentFrozenFieldId && currentFieldIndex === 0) {\n // 默认第一列冻结列禁用\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n };\n};\n\nexport const restoreDefaultFrozenColumn = (aiTable: AITable) => {\n return {\n type: 'restoreDefaultFrozenColumn',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.restoreDefaultFrozenColumn),\n icon: 'frozen',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const viewTable = aiTable as AIViewTable;\n\n setViewFrozenField(viewTable, undefined);\n },\n hidden: (aiTable: AITable, field: Signal<AITableField>) => {\n if (aiTable.context?.readonly?.()) {\n return true;\n }\n\n const currentField = field();\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n if (!currentFrozenFieldId) {\n return true;\n }\n\n return currentField._id !== currentFrozenFieldId;\n }\n };\n};\n","import { AITableQueries } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AITableViewField,\n AITableField,\n IdPath,\n NumberPath,\n AITableFieldStatType\n} from '@ai-table/utils';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\nimport { getFrozenFieldId } from '../utils/field/frozen-field';\nimport { setViewFrozenField } from './view';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, originId?: string, isDuplicate?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isDuplicate\n };\n const existField = aiTable.fields().some((item) => {\n return item._id === field._id;\n });\n if (existField) {\n console.error(`Field with id ${field._id} already exists.`, field);\n throw new Error(`Field with id ${field._id} already exists.`);\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\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n adjustFrozenFieldAfterMove(aiTable, path[0], newPath[0], currentFrozenFieldId);\n\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nfunction adjustFrozenFieldAfterMove(aiTable: AIViewTable, sourceIndex: number, targetIndex: number, currentFrozenFieldId?: string) {\n if (!currentFrozenFieldId) {\n return;\n }\n\n const fields = aiTable.gridData().fields;\n const currentFrozenFieldIndex = fields.findIndex((field) => field._id === currentFrozenFieldId);\n\n if (currentFrozenFieldIndex === -1) {\n return;\n }\n\n // 最后冻结列拖动到非冻结区或冻结区,冻结列向左移动\n if (sourceIndex === currentFrozenFieldIndex && targetIndex !== currentFrozenFieldIndex) {\n const newFrozenFieldIndex = Math.max(0, currentFrozenFieldIndex - 1);\n if (newFrozenFieldIndex < fields.length && newFrozenFieldIndex !== currentFrozenFieldIndex) {\n const newFrozenField = fields[newFrozenFieldIndex];\n setViewFrozenField(aiTable, newFrozenField._id);\n } else {\n // 如果没有前一个字段,恢复默认冻结\n setViewFrozenField(aiTable, undefined);\n }\n return;\n }\n\n // 冻结区拖动到最后冻结列后面,冻结列是被拖动列\n if (sourceIndex < currentFrozenFieldIndex && targetIndex === currentFrozenFieldIndex) {\n const newFrozenField = fields[sourceIndex];\n setViewFrozenField(aiTable, newFrozenField._id);\n return;\n }\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n setField(aiTable, { widths: { ...field.widths, [aiTable.activeViewId()]: width } }, [field._id]);\n}\n\nexport function setFieldStatType(aiTable: AIViewTable, path: IdPath, statType: AITableFieldStatType) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n setField(aiTable, { fieldStatTypes: { ...field.fieldStatTypes, [aiTable.activeViewId()]: statType } }, [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 buildSetFieldAction<T extends AITableViewField = AITableViewField>(\n aiTable: AIViewTable,\n value: Partial<T>,\n path: IdPath\n): SetFieldAction | null {\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 const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n return operation;\n }\n return null;\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const action = buildSetFieldAction(aiTable, value, path);\n if (action) {\n aiTable.apply(action);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth,\n setFieldStatType\n};\n","import { shortIdCreator } from '@ai-table/grid';\nimport { AITableAction, AITableView, idCreator, AITableViewFields, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { ViewActions } from '../action/view';\nimport { buildSetRecordPositionsActon } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\nimport { AIViewTable } from '../types';\nimport _ from 'lodash';\nimport { buildSetFieldAction } from '../action/field';\n\nexport function createPositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, index: number) {\n return createMultiplePositions(views, activeId, data, index)[0];\n}\n\nexport function createMultiplePositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n targetIndex: number = data.length - 1,\n count: number = 1,\n isInsertUpward: boolean = false\n) {\n const positionsOfItems = getPositions(activeId, data, targetIndex, count, isInsertUpward);\n const viewsMaxPosition: Record<string, number> = {};\n views.forEach((view) => {\n viewsMaxPosition[view._id] = getMaxPosition(data, view._id);\n });\n const positions = positionsOfItems.map((itemPositions) => {\n const viewPositions: Positions = {};\n views.forEach((view) => {\n if (view._id === activeId) {\n viewPositions[view._id] = itemPositions;\n } else {\n viewsMaxPosition[view._id] += 1;\n viewPositions[view._id] = viewsMaxPosition[view._id];\n }\n });\n return viewPositions;\n });\n return positions;\n}\n\nexport function getPositions(\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n targetIndex: number = data.length - 1,\n count: number = 1,\n isInsertBefore: boolean = false\n) {\n let startPosition = data.length - 1;\n let endPosition = startPosition + count + 1;\n if (data[targetIndex]) {\n if (isInsertBefore) {\n endPosition = data[targetIndex].positions[activeId!];\n startPosition = targetIndex - 1 >= 0 ? data[targetIndex - 1].positions[activeId!] : endPosition - count - 1;\n } else {\n startPosition = data[targetIndex].positions[activeId!];\n endPosition =\n targetIndex + 1 < data.length\n ? data[targetIndex + 1].positions[activeId!]\n : data[targetIndex].positions[activeId!] + count + 1;\n }\n }\n const step = (endPosition - startPosition) / (count + 1);\n const positions = _.range(startPosition + step, endPosition, step);\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index?: number) {\n return getPositions(activeViewId, data, index)[0];\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' | 'duplicate', viewId?: string) {\n const newId = idCreator();\n const shortId = shortIdCreator();\n const views = aiTable.views();\n const allViewNames = views.map((item) => item.name);\n const count = 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 = views[views.length - 1]._id;\n if (type === 'duplicate') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = 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 }\n ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');\n const actions: AITableAction[] = [];\n (aiTable.records() as AITableViewRecords).forEach((record, index) => {\n const action = buildSetRecordPositionsActon(aiTable, { [newId]: record.positions[originViewId] }, [index]);\n actions.push(action);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n const action = buildSetFieldAction(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n if (action) {\n actions.push(action);\n }\n });\n aiTable.apply(actions);\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n ViewActions.removeView(aiTable, [activeViewId]);\n const actions: AITableAction[] = [];\n records.forEach((record, index) => {\n const action = buildSetRecordPositionsActon(aiTable, { [activeViewId]: undefined }, [index]);\n actions.push(action);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n const action = buildSetFieldAction(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n if (action) {\n actions.push(action);\n }\n });\n aiTable.apply(actions);\n}\n\nexport function sortViews(data: AITableView[]) {\n return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AIViewTable } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport {\n ActionName,\n AITableAction,\n AITableField,\n AITableFields,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords\n} from '@ai-table/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 records.push(action.record as AITableViewRecord);\n break;\n }\n case ActionName.AddField: {\n const newField = action.field;\n fields.push(newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isDuplicate && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\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 views.push(action.view);\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[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, actions: 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 actions.forEach((action) => {\n apply(aiTable, records, fields, views, action);\n });\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 { AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n RemoveRecordAction,\n UpdateSystemFieldValue,\n AITableRecord,\n IdPath,\n AITableViewRecords,\n AITableViewRecord,\n AddRecordOptions,\n UpdateFieldValueOptions,\n AITableSystemFieldValueOption\n} from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { getNewRecordsPosition } from '../utils';\n\nexport function updateFieldValues(aiTable: AIViewTable, options: UpdateFieldValueOptions[]) {\n let operations: UpdateFieldValueAction[] = [];\n\n (options || []).forEach((option) => {\n const field = AITableQueries.getField(aiTable, [option.path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(option.value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n newFieldValue: option.value,\n path: option.path\n };\n\n operations.push(operation);\n } else {\n console.error(\n `Invalid field value at update field value. invalidFieldType: ${field?.type}, value: ${option.value}, field_id: ${option.path[1]}`\n );\n }\n });\n\n aiTable.apply(operations);\n}\n\nexport function updateSystemFieldValues(aiTable: AIViewTable, options: AITableSystemFieldValueOption[]) {\n const operations: UpdateSystemFieldValue[] = [];\n (options || []).forEach((option) => {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo: option.updatedInfo,\n path: option.path\n };\n operations.push(operation);\n });\n\n aiTable.apply(operations);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord) {\n addRecords(aiTable, [record]);\n}\n\nexport function addRecords(aiTable: AIViewTable, records: AITableRecord[], options?: AddRecordOptions) {\n const invalidFieldValues: string[] = [];\n\n const positions = getNewRecordsPosition(aiTable, options);\n records.forEach((record, index) => {\n 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 });\n if (invalidFieldValues.length) {\n console.error(`Invalid field values at add records. invalidFieldValues: ${invalidFieldValues}`);\n return;\n }\n records.forEach((record, index) => {\n (record as AITableViewRecord).positions = positions[index];\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record\n };\n aiTable.apply(operation);\n });\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 addRecords,\n removeRecord,\n updateFieldValues,\n updateSystemFieldValues\n};\n","import { ActionName, SetViewAction, AITableView, AITableGroupField, SortDirection, ViewSettings } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { AI_TABLE_GROUP_MAX_LEVEL } from '@ai-table/grid';\n\nfunction setViewGroup(aiTable: AIViewTable, groups: AITableGroupField[] | null) {\n const viewId = aiTable.activeViewId();\n const view = aiTable.views().find((v) => v._id === viewId);\n if (!view) return;\n\n const currentSettings = view.settings || {};\n const newSettings: ViewSettings = {\n ...currentSettings,\n groups: groups || [],\n collapsed_group_ids: [] // 重置折叠\n };\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties: { settings: currentSettings },\n newProperties: { settings: newSettings },\n path: [viewId]\n };\n aiTable.apply(operation);\n}\n\nfunction setCollapsedGroup(aiTable: AIViewTable, collapsedGroupIds: string[]) {\n const viewId = aiTable.activeViewId();\n const view = aiTable.views().find((v) => v._id === viewId);\n if (!view) return;\n\n const currentSettings = view.settings || {};\n const newSettings: ViewSettings = {\n ...currentSettings,\n collapsed_group_ids: collapsedGroupIds\n };\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties: { settings: currentSettings },\n newProperties: { settings: newSettings },\n path: [viewId]\n };\n aiTable.apply(operation);\n}\n\n// 折叠\nfunction toggleGroupCollapse(aiTable: AIViewTable, groupId: string) {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n if (!activeView) return;\n const currentCollapse = activeView.settings?.collapsed_group_ids || [];\n const newCollapse = currentCollapse.includes(groupId) ? currentCollapse.filter((id) => id !== groupId) : [...currentCollapse, groupId];\n\n setCollapsedGroup(aiTable, newCollapse);\n}\n\n// 添加分组\nfunction addGroupField(aiTable: AIViewTable, fieldId: string, direction: SortDirection = SortDirection.ascending) {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n if (!activeView) return;\n\n const currentGroups = activeView.settings?.groups || [];\n\n // 是否已存在\n if (currentGroups.some((group) => group.field_id === fieldId)) {\n throw new Error('The field has been used for grouping.');\n }\n\n // 层级限制\n if (currentGroups.length >= AI_TABLE_GROUP_MAX_LEVEL) {\n throw new Error(`The maximum number of groups is ${AI_TABLE_GROUP_MAX_LEVEL}.`);\n }\n\n const newGroups: AITableGroupField[] = [...currentGroups, { field_id: fieldId, direction }];\n setViewGroup(aiTable, newGroups);\n}\n\n// 删除分组\nfunction removeGroupField(aiTable: AIViewTable, fieldId: string) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n const newGroups = currentGroups.filter((group) => group.field_id !== fieldId);\n\n setViewGroup(aiTable, newGroups.length > 0 ? newGroups : null);\n}\n\n// 更新排序方向\nfunction updateGroupFieldDirection(aiTable: AIViewTable, fieldId: string, direction: SortDirection) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n const newGroups = currentGroups.map((group) => (group.field_id === fieldId ? { ...group, direction } : group));\n\n setViewGroup(aiTable, newGroups);\n}\n\n// 重新排序,拖拽顺序\nfunction reorderGroupFields(aiTable: AIViewTable, fromIndex: number, toIndex: number) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n\n if (fromIndex < 0 || fromIndex >= currentGroups.length || toIndex < 0 || toIndex >= currentGroups.length) {\n return;\n }\n\n const newGroups = [...currentGroups];\n const [movedItem] = newGroups.splice(fromIndex, 1);\n newGroups.splice(toIndex, 0, movedItem);\n\n setViewGroup(aiTable, newGroups);\n}\n\n// 清空分组\nfunction clearAllGroups(aiTable: AIViewTable) {\n setViewGroup(aiTable, null);\n}\n\nexport const GroupActions = {\n setViewGroup,\n setCollapsedGroup,\n toggleGroupCollapse,\n addGroupField,\n removeGroupField,\n updateGroupFieldDirection,\n reorderGroupFields,\n clearAllGroups\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\nimport { GroupActions } from './group';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions,\n ...GroupActions\n};\n\nexport { buildSetRecordPositionsActon } from './position';\n\nexport { buildSetFieldAction } from './field';\n","import { MoveFieldOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITableViewRecord, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { getMaxPosition } from '../view';\nimport _ from 'lodash';\nimport { getParentLinearRowGroups } from '../group/utils';\n\nexport function findNextRecordForTargetInOriginalRecords(aiTable: AIViewTable, targetRecordId: string): AITableViewRecord | null {\n const viewId = aiTable.activeViewId();\n const records = aiTable.records() as AITableViewRecords;\n const recordsMap = aiTable.recordsMap();\n\n const targetRecord = recordsMap[targetRecordId] as AITableViewRecord;\n const targetPosition = targetRecord.positions[viewId] || 0;\n\n let nextRecord: AITableViewRecord | null = null;\n for (const record of records) {\n const pos = record.positions[viewId] || 0;\n // 找到所有position大于目标position的记录中最小的\n if (pos > targetPosition && (nextRecord === null || pos < nextRecord.positions[viewId])) {\n nextRecord = record;\n }\n }\n\n return nextRecord;\n}\n\nexport function findPrevRecordForTargetInOriginalRecords(aiTable: AIViewTable, targetRecordId: string): AITableViewRecord | null {\n const viewId = aiTable.activeViewId();\n const records = aiTable.records() as AITableViewRecords;\n const recordsMap = aiTable.recordsMap();\n\n const targetRecord = recordsMap[targetRecordId] as AITableViewRecord;\n const targetPosition = targetRecord.positions[viewId] || 0;\n\n let prevRecord: AITableViewRecord | null = null;\n for (const record of records) {\n const pos = record.positions[viewId] || 0;\n // 找到所有position小于目标记录position的记录中最大的\n if (pos < targetPosition && (prevRecord === null || pos > prevRecord.positions[viewId])) {\n prevRecord = record;\n }\n }\n\n return prevRecord;\n}\n\nexport function getPositionByAfterOrBeforeRecordId(\n aiTable: AIViewTable,\n options: { afterRecordId?: string; beforeRecordId?: string }\n): { targetPosition: number; prevPosition: number } {\n const recordsMap = aiTable.recordsMap();\n const activeViewId = aiTable.activeViewId();\n const originalRecords = aiTable.records() as AITableViewRecords;\n const { afterRecordId, beforeRecordId } = options;\n let targetPosition = 0;\n let prevPosition = 0;\n\n if (afterRecordId) {\n // 移动到指定记录之后\n const targetRecord = recordsMap[afterRecordId] as AITableViewRecord;\n if (!targetRecord) {\n throw new Error(`Target record with id ${afterRecordId} not found`);\n }\n\n prevPosition = targetRecord.positions[activeViewId] || 0;\n const nextPosition = findNextRecordForTargetInOriginalRecords(aiTable, afterRecordId);\n if (nextPosition !== null) {\n targetPosition = nextPosition.positions[activeViewId] || 0;\n } else {\n // 最后一个\n targetPosition = getMaxPosition(originalRecords, activeViewId) + 1;\n }\n } else if (beforeRecordId) {\n // 移动到指定记录之前\n const targetRecord = recordsMap[beforeRecordId] as AITableViewRecord;\n if (!targetRecord) {\n throw new Error(`Target record with id ${beforeRecordId} not found`);\n }\n\n targetPosition = targetRecord.positions[activeViewId] || 0;\n const previousPosition = findPrevRecordForTargetInOriginalRecords(aiTable, beforeRecordId);\n if (previousPosition !== null) {\n prevPosition = previousPosition.positions[activeViewId] || 0;\n } else {\n // 第一个\n prevPosition = targetPosition - 1;\n }\n } else {\n throw new Error('Either afterRecordId or beforeRecordId must be provided');\n }\n return {\n targetPosition,\n prevPosition\n };\n}\n\nexport function getNewRecordsPosition(aiTable: AIViewTable, options?: { afterRecordId?: string; beforeRecordId?: string; count?: number }) {\n options = options || {};\n if (!options.afterRecordId && !options.beforeRecordId) {\n options.afterRecordId = aiTable.gridData().records[aiTable.gridData().records.length - 1]._id;\n }\n options.count = options.count || 1;\n const { targetPosition, prevPosition } = getPositionByAfterOrBeforeRecordId(aiTable, options);\n const interval = (targetPosition - prevPosition) / ((options.count! || 1) + 1);\n const positionsOfItems = _.range(prevPosition + interval, targetPosition, interval);\n const views = aiTable.views();\n const activeViewId = aiTable.activeViewId();\n const viewsMaxPosition: Record<string, number> = {};\n views.forEach((view) => {\n viewsMaxPosition[view._id] = getMaxPosition(aiTable.records() as AITableViewRecord[], view._id);\n });\n const viewPositions = positionsOfItems.map((itemPositions) => {\n const viewPositions: Positions = {};\n views.forEach((view) => {\n if (view._id === activeViewId) {\n viewPositions[view._id] = itemPositions;\n } else {\n viewsMaxPosition[view._id] += 1;\n viewPositions[view._id] = viewsMaxPosition[view._id];\n }\n });\n return viewPositions;\n });\n return viewPositions;\n}\n\nexport function getParentGroupValuesByGroupId(aiTable: AIViewTable, groupId: string): Record<string, any> | null {\n const parentGroups = getParentLinearRowGroups(aiTable, groupId);\n return parentGroups.reduce(\n (pre, cur) => {\n pre[cur.fieldId] = cur.groupValue;\n return pre;\n },\n {} as Record<string, any>\n );\n}\n","import { Actions } from '../../action';\nimport {\n AITableRecordUpdatedInfo,\n AITableView,\n AITableViewRecord,\n AITableViewRecords,\n MoveRecordOptions,\n sortByViewPosition,\n UpdateFieldValueOptions\n} from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport _ from 'lodash';\nimport { getParentGroupValuesByGroupId, getPositionByAfterOrBeforeRecordId } from './common';\n\nexport function moveRecords(aiTable: AIViewTable, options: MoveRecordOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.views().find((view) => view._id === activeViewId) as AITableView;\n const { recordIds, afterRecordId, beforeRecordId } = options;\n\n const originalRecords = aiTable.records() as AITableViewRecords;\n const recordsIndexMap = new Map(originalRecords.map((row, index) => [row._id, index]));\n\n const sourceRecords: AITableViewRecord[] = [];\n recordIds.forEach((id) => {\n const index = recordsIndexMap.get(id);\n if (index === undefined) {\n throw new Error(`Record with id ${id} not found`);\n }\n sourceRecords.push(originalRecords[index] as AITableViewRecord);\n });\n\n let { targetPosition, prevPosition } = getPositionByAfterOrBeforeRecordId(aiTable, {\n afterRecordId,\n beforeRecordId\n });\n const groups = activeView.settings?.groups;\n let needCopyGroupValuesMap: Record<string, any> | null = null;\n if (groups?.length && (afterRecordId || beforeRecordId)) {\n needCopyGroupValuesMap = getParentGroupValuesByGroupId(aiTable, (afterRecordId || beforeRecordId)!);\n }\n // 勾选多行顺序可能不一致,需要排序\n const sortedSourceRecords = sortByViewPosition(sourceRecords, activeView) as AITableViewRecords;\n let nextPosition = (prevPosition + targetPosition) / 2;\n sortedSourceRecords.forEach((record) => {\n const sourceIndex = recordsIndexMap.get(record._id);\n if (sourceIndex === undefined) {\n throw new Error(`Record with id ${record._id} not found`);\n }\n if (groups?.length && needCopyGroupValuesMap) {\n const updateFieldValues: UpdateFieldValueOptions[] = [];\n groups.forEach((group) => {\n updateFieldValues.push({\n path: [record._id, group.field_id],\n value: needCopyGroupValuesMap[group.field_id]\n });\n });\n Actions.updateFieldValues(aiTable, updateFieldValues);\n }\n Actions.setRecordPositions(aiTable, { [activeViewId]: nextPosition }, [sourceIndex]);\n prevPosition = nextPosition;\n nextPosition = (prevPosition + targetPosition) / 2;\n });\n}\n","import { AddFieldOptions, AITableViewField, AITableViewFields, idCreator } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { createPositions, getPosition } from '../view';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions) {\n const { defaultValue, isDuplicate, originId } = options;\n const fields = aiTable.gridData().fields as AITableViewFields;\n const fieldsMap = aiTable.fieldsMap();\n const activeViewId = aiTable.activeViewId();\n const newField = { ...defaultValue } as AITableViewField;\n\n if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === originId);\n newField.positions = {\n ...newField.positions,\n [activeViewId]: getPosition(fields, activeViewId, currentFieldIndex)\n };\n } else {\n newField.positions = createPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n fields.length\n );\n }\n Actions.addField(aiTable, newField, originId, isDuplicate);\n}\n","import { AITable } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableRecordUpdatedInfo, AITableField } from '@ai-table/utils';\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 }\n };\n};\n","import { AITableLinearRowGroup, closeExpendCell, getDefaultFieldValue, idsCreator, setSelection, shortIdsCreator } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { checkConditions, getDefaultRecordDataByFilter } from './filter';\nimport { AddRecordOptions, AITableRecord, AITableViewFields, AITableViewRecords, FieldValue, TrackableEntity } from '@ai-table/utils';\nimport { getParentLinearRowGroups } from '../group/utils';\nimport { getMaxPosition } from '../view';\nimport { getParentGroupValuesByGroupId } from './common';\n\nexport function addRecords(aiTable: AIViewTable, trackableEntity: TrackableEntity, options?: AddRecordOptions) {\n options = options || {};\n const newRecords: AITableRecord[] = [];\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.viewsMap()[activeViewId];\n const groups = activeView.settings?.groups;\n let { originId, isDuplicate, count = 1 } = options;\n const recordCount = aiTable.records().length;\n const maxRecordCount = aiTable.context?.maxRecords();\n if (maxRecordCount && recordCount + count > maxRecordCount) {\n count = maxRecordCount! - recordCount;\n options.count = count;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n const hiddenRecordIds: string[] = [];\n let needCopyGroupValuesMap: Record<string, any> | null = null;\n if (groups?.length && options.forGroupId) {\n needCopyGroupValuesMap = getParentGroupValuesByGroupId(aiTable, options.forGroupId);\n }\n const records = aiTable.gridData().records as AITableViewRecords;\n newRecordIds.forEach((id, index) => {\n const record = {\n _id: id,\n short_id: newRecordShortIds[index],\n values: newRecordValues,\n ...trackableEntity,\n positions: {\n [activeViewId]: getMaxPosition(records, activeViewId) + 1\n }\n };\n if (needCopyGroupValuesMap) {\n groups?.forEach((group) => {\n // 复制分组字段值\n record.values[group.field_id] = needCopyGroupValuesMap[group.field_id];\n });\n }\n const checkResult = checkConditions(aiTable, aiTable.fields() as AITableViewFields, record);\n if (!checkResult) {\n hiddenRecordIds.push(id);\n }\n newRecords.push(record);\n });\n if (hiddenRecordIds.length) {\n aiTable.recordsWillHidden?.update((value) => {\n return [...value, ...hiddenRecordIds];\n });\n }\n Actions.addRecords(aiTable, newRecords, options);\n const recentAddRecord = options.beforeRecordId ? newRecords[newRecords.length - 1] : newRecords[0];\n const activeRecordId = recentAddRecord._id;\n const activeFieldId = aiTable.gridData().fields[0]._id;\n closeExpendCell(aiTable);\n setSelection(aiTable, {\n selectedRecords: new Set([]),\n selectedFields: new Set([]),\n selectedCells: new Set([`${activeRecordId}:${activeFieldId}`]),\n activeCell: [activeRecordId, activeFieldId]\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((field) => {\n const customGetDefaultFieldValue = aiTable.context?.aiFieldConfig()?.customFields?.[field.type]?.getDefaultFieldValue;\n if (customGetDefaultFieldValue) {\n newRecordValues[field._id] = customGetDefaultFieldValue(field);\n } else {\n newRecordValues[field._id] = getDefaultFieldValue(field);\n }\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 } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { UpdateFieldValueOptions, AITableRecordUpdatedInfo, AITableSystemFieldValueOption, AITableViewFields } from '@ai-table/utils';\nimport { checkConditions } from './filter';\n\nfunction updateWillHiddenRecordIds(\n aiTable: AIViewTable,\n needUpdateOptions: UpdateFieldValueOptions<unknown>[],\n updatedInfo?: AITableRecordUpdatedInfo\n) {\n const willHiddenRecordIds: string[] = [];\n const removeWillHiddenRecordIds: string[] = [];\n needUpdateOptions.forEach((option) => {\n const [recordId, fieldId] = option.path;\n let record = _.cloneDeep(aiTable.recordsMap()[recordId]);\n record.values[fieldId] = option.value;\n if (updatedInfo) {\n record = {\n ...record,\n ...updatedInfo\n };\n }\n const checkResult = checkConditions(aiTable, aiTable.fields() as AITableViewFields, record);\n if (checkResult) {\n removeWillHiddenRecordIds.push(recordId);\n } else {\n willHiddenRecordIds.push(recordId);\n }\n });\n aiTable.recordsWillHidden.update((value) => {\n value = value.filter((id) => !removeWillHiddenRecordIds.includes(id));\n value.push(...willHiddenRecordIds);\n return value;\n });\n}\n\nexport function updateFieldValues(aiTable: AIViewTable, options: UpdateFieldValueOptions[], updatedInfo?: AITableRecordUpdatedInfo) {\n const needUpdateOptions = options.filter((option) => {\n const oldValue = AITableQueries.getFieldValue(aiTable, option.path);\n return !_.isEqual(oldValue, option.value);\n });\n\n updateWillHiddenRecordIds(aiTable, needUpdateOptions, updatedInfo);\n\n Actions.updateFieldValues(aiTable, needUpdateOptions);\n\n if (updatedInfo) {\n const needUpdateSystemOptions: AITableSystemFieldValueOption[] = needUpdateOptions.map((option) => {\n return {\n path: [option.path[0]],\n updatedInfo: updatedInfo\n };\n });\n Actions.updateSystemFieldValues(aiTable, needUpdateSystemOptions);\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\nimport { AITableAction } from '@ai-table/utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction | AITableAction[]) => {\n const actions = Array.isArray(action) ? action : [action];\n viewTable.actions.push(...actions);\n Actions.transform(viewTable, actions);\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\n return aiTable;\n};\n","import {\n AI_TABLE_GRID_FIELD_SERVICE_MAP,\n AITable,\n AITableActions,\n AITableFieldSetting,\n AITableQueries,\n FieldModelMap,\n isSystemField\n} 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';\nimport {\n AddFieldOptions,\n AITableField,\n AITableReferences,\n FieldValue,\n MemberSettings,\n SelectSettings,\n SetFieldOptions,\n SystemFieldTypes,\n idCreator,\n UpdateFieldValueOptions\n} from '@ai-table/utils';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable, actions: AITableActions, references: AITableReferences) => ({\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 references,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe(({ fieldOptions }) => {\n updateFieldAndValues(aiTable, references, actions, fieldOptions);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const updateFieldAndValues = (\n aiTable: AIViewTable,\n references: AITableReferences,\n actions: AITableActions,\n options: SetFieldOptions\n) => {\n const originField = AITableQueries.getField(aiTable, options.path)!;\n const originFieldSettings = originField.settings as MemberSettings | SelectSettings;\n const field = options.field;\n const fieldSettings = field.settings as MemberSettings | SelectSettings;\n const isSameType = field.type === originField.type;\n const isSameMultiple = fieldSettings?.is_multiple === originFieldSettings?.is_multiple;\n\n Actions.setField(aiTable, options.field, options.path);\n\n if (!isSameType || !isSameMultiple) {\n const originFieldModel = FieldModelMap[originField?.type!];\n const fieldModel = FieldModelMap[field.type];\n\n let fieldValueOptions: UpdateFieldValueOptions[] = [];\n aiTable.records().forEach((record) => {\n let originCellValue: FieldValue;\n if (isSystemField(originField)) {\n originCellValue = AITableQueries.getSystemFieldValue(record, originField.type as SystemFieldTypes);\n } else {\n originCellValue = AITableQueries.getFieldValue(aiTable, [record._id, originField?._id!]);\n }\n\n const originTransformValue = originFieldModel.transformCellValue(originCellValue, {\n aiTable,\n field: originField\n });\n const originPlainText = originFieldModel.cellFullText(originTransformValue, originField, references)?.join(',');\n\n const originData = {\n field: originField,\n cellValue: originCellValue\n };\n const toFieldValue = aiTable.context?.aiFieldConfig()?.fieldRenderers?.[field.type]?.toFieldValue;\n const newFieldValue = fieldModel.toFieldValue(originPlainText, field, originData, references, toFieldValue);\n\n fieldValueOptions.push({\n path: [record._id, field._id],\n value: newFieldValue\n });\n });\n\n actions.updateFieldValues(fieldValueOptions);\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 fields = aiTable.fields() || [];\n const maxFields = aiTable.context?.maxFields();\n if (maxFields && fields.length >= maxFields) {\n return;\n }\n const allFieldNames = 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 isDuplicate: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n },\n disabled: () => {\n const fieldLength = aiTable.fields()?.length || 0;\n const maxFields = aiTable.context?.maxFields();\n return maxFields ? fieldLength >= maxFields : false;\n }\n };\n};\n","import {\n AITable,\n AITableContextMenuItem,\n AITableGridI18nKey,\n AITableActions,\n getI18nTextByKey,\n isMac,\n writeToAITable,\n clearSelection\n} 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';\nimport { AddRecordOptions } from '@ai-table/utils';\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: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n clearSelection(aiTable);\n }\n };\n};\n\nexport const InsertUpwardRecords = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'insertUpwardRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.insertUpward),\n nameSuffix: getStateI18nTextByKey(aiTable, AITableStateI18nKey.upward),\n icon: 'table-insert-rows-top',\n isInputNumber: true,\n count: 1,\n exec: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService, count: any) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n const aiViewTable = aiTable as AIViewTable;\n const activeView = aiViewTable.viewsMap()[aiViewTable.activeViewId()];\n const addRecordOptions: AddRecordOptions = {\n beforeRecordId: selectedRecordIds[0],\n count\n };\n if (activeView?.settings?.groups?.length) {\n addRecordOptions.forGroupId = selectedRecordIds[0];\n }\n actions.addRecord(addRecordOptions);\n }\n };\n};\n\nexport const InsertDownwardRecords = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'insertDownwardRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.insertDownward),\n nameSuffix: getStateI18nTextByKey(aiTable, AITableStateI18nKey.downward),\n icon: 'table-insert-rows-down',\n count: 1,\n isInputNumber: true,\n exec: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService, count: any) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n const aiViewTable = aiTable as AIViewTable;\n const activeView = aiViewTable.viewsMap()[aiViewTable.activeViewId()];\n const addRecordOptions: AddRecordOptions = {\n afterRecordId: selectedRecordIds[0],\n count\n };\n if (activeView?.settings?.groups?.length) {\n addRecordOptions.forGroupId = selectedRecordIds[0];\n }\n actions.addRecord(addRecordOptions);\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: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService) => {\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 (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService) => {\n writeToAITable(aiTable, actions).then((result) => {\n if (result.isPasteOverMaxRecords || result.isPasteOverMaxFields) {\n return;\n }\n if (!result.isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"@ai-table/utils\";\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","addView","removeView","_","updateFieldValues","addRecords"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.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/shared/utils/initialize.ts","../../../packages/state/src/shared/undo-manager.service.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/field/stat-field.ts","../../../packages/state/src/utils/group/group-calculator.ts","../../../packages/state/src/utils/group/utils.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/utils/field/frozen-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/group.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/utils/record/common.ts","../../../packages/state/src/utils/record/move-records.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.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 * as Y from 'yjs';\nimport { AIViewTable } from '../../types';\nimport { AITableView, AITableField, SharedType, SyncMapElement, getShareTypeNumberPath, AITableAction, ActionName } from '@ai-table/utils';\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 { AIViewTable } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateMapEvent from './map-event';\nimport { AITableAction, SharedType, translateArrayEvent } from '@ai-table/utils';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(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 const actions: AITableAction[] = [];\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n actions.push(item);\n })\n );\n return actions;\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n const actions = applyEvents(aiTable, sharedType, events);\n applyActions(actions, aiTable);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n const actions = applyEvents(aiTable, sharedType, events);\n applyActions(actions, aiTable);\n });\n }\n}\n\nexport function applyActions(actions: AITableAction[], aiTable: AIViewTable) {\n aiTable.apply(actions);\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n UpdateFieldValueAction,\n getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\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 if (fieldIndex < customField.length) {\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n } else {\n // 幽灵单元格,协同的后端会对这样的数据进行纠正,但是在纠正同步到位之前,前端可能会出现幽灵单元格\n console.error('Field index out of bounds, cannot update field value');\n }\n }\n }\n\n return sharedType;\n}\n","import { ActionName, SetFieldAction, SetViewAction, getSharedMapValueIndex, SharedType, SyncMapElement } from '@ai-table/utils';\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 UpdateSystemFieldValue,\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo,\n toRecordSyncElement,\n toMapSyncElement,\n AITableViewFields,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/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([toMapSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = 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 } = action;\n const insertIndex = fields.length;\n const fieldSyncElement = toMapSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1) as Y.Array<any>;\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n // 幽灵单元格,暂不处理交给后端统一处理\n if (insertIndex <= customFieldValues.length) {\n customFieldValues.insert(insertIndex, [newFieldValue]);\n } else {\n console.error('Field index out of bounds, cannot initialize record value for new field');\n }\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 getSharedMapValueIndex,\n getSharedRecordIndex,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '@ai-table/utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction\n): 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 setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\nimport { ActionName, AITableAction, SharedType } from '@ai-table/utils';\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 * as Y from 'yjs';\nimport {\n AI_TABLE_CONTENT_FIELD_NAME,\n AITableViewFields,\n AITableViewRecords,\n AITableViews,\n SharedRecordJsonType,\n SharedType,\n toMapSyncElement,\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement\n} from '@ai-table/utils';\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(toMapSyncElement));\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(toMapSyncElement));\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 { Injectable, signal, WritableSignal } from '@angular/core';\nimport { UndoManager } from 'yjs';\nimport { AIViewTable } from '../types';\nimport { YjsAITable } from './yjs-table';\nimport { SharedType } from '@ai-table/utils';\n@Injectable()\nexport class UndoManagerService {\n private _undoManager: UndoManager | null = null;\n private _canUndoCount: WritableSignal<number> = signal<number>(0);\n private _canRedoCount: WritableSignal<number> = signal<number>(0);\n private _aiTable: AIViewTable | null = null;\n\n get undoManager(): UndoManager | null {\n return this._undoManager;\n }\n\n get canUndoCount(): WritableSignal<number> {\n return this._canUndoCount;\n }\n\n get canRedoCount(): WritableSignal<number> {\n return this._canRedoCount;\n }\n\n initialize(sharedType: SharedType, aiTable: AIViewTable) {\n if (!sharedType || !aiTable) {\n return;\n }\n this._aiTable = aiTable;\n this._undoManager = new UndoManager(sharedType, {\n trackedOrigins: new Set([aiTable]),\n captureTimeout: 300\n });\n\n this._undoManager.on('stack-item-added', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n\n this._undoManager.on('stack-item-popped', () => {\n this._canUndoCount.set(this._undoManager!.undoStack.length);\n this._canRedoCount.set(this._undoManager!.redoStack.length);\n });\n }\n\n undo() {\n if (this._undoManager?.canUndo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.undo());\n }\n }\n\n redo() {\n if (this._undoManager?.canRedo()) {\n YjsAITable.asUndo(this._aiTable!, () => this._undoManager!.redo());\n }\n }\n\n destroy() {\n this._undoManager = null;\n this._canUndoCount.set(0);\n this._canRedoCount.set(0);\n }\n}\n","import { AITableFieldType, AITableView, AITableViewRecords, AITableViewRecord, AITableGroupField, SortDirection } from '@ai-table/utils';\nimport { AITable, AITableQueries, FieldModelMap } from '@ai-table/grid';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRecords = [...records];\n const groups = activeView.settings?.groups;\n\n return shallowRecords.sort((record1, record2) => {\n // 分组排序(高优先级)\n if (groups && groups.length > 0) {\n const groupCompareResult = compareByGroups(aiTable, record1, record2, groups);\n if (groupCompareResult !== 0) {\n return groupCompareResult;\n }\n }\n\n // sorts排序(中优先级)\n let shouldSkipPositionSort = false;\n if (activeView.settings?.sorts?.length) {\n const { is_keep_sort, sorts } = activeView.settings;\n if (sorts?.length) {\n const sortsCompareResult = compareBySorts(record1, record2, sorts, aiTable, sortKeysMap);\n if (sortsCompareResult !== 0) {\n return sortsCompareResult;\n }\n shouldSkipPositionSort = Boolean(is_keep_sort);\n }\n }\n\n // position排序(低优先级)\n if (shouldSkipPositionSort) {\n // is_keep_sort为true,禁用position排序\n return 0;\n }\n return compareByPosition(record1, record2, activeView);\n });\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType | string, 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\nfunction compareByGroups(aiTable: AITable, record1: AITableViewRecord, record2: AITableViewRecord, groups: AITableGroupField[]): number {\n return groups.reduce((result, groupField) => {\n if (result !== 0) return result;\n\n const field = aiTable.fieldsMap()[groupField.field_id];\n if (!field) return 0;\n\n const value1 = AITableQueries.getFieldValue(aiTable, [record1._id, field._id]);\n const value2 = AITableQueries.getFieldValue(aiTable, [record2._id, field._id]);\n\n const fieldModel = FieldModelMap[field.type];\n if (!fieldModel) return 0;\n\n const compareResult = fieldModel.compare(value1, value2, aiTable.context!.references(), undefined, {\n aiTable,\n field\n });\n\n return compareResult * (groupField.direction === SortDirection.ascending ? 1 : -1);\n }, 0);\n}\n\nfunction compareBySorts(\n record1: AITableViewRecord,\n record2: AITableViewRecord,\n sorts: any[],\n aiTable: AITable,\n sortKeysMap?: Partial<Record<AITableFieldType | string, string>>\n): number {\n return 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, [record1._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [record2._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\nfunction compareByPosition(record1: AITableViewRecord, record2: AITableViewRecord, activeView: AITableView): number {\n const hasPosition1 = record1.positions && record1.positions[activeView._id] !== undefined;\n const hasPosition2 = record2.positions && record2.positions[activeView._id] !== undefined;\n\n if (hasPosition1 && hasPosition2) {\n return record1.positions[activeView._id] - record2.positions[activeView._id];\n }\n\n // 如果只有一个有位置信息,有位置的排在前面\n if (hasPosition1 && !hasPosition2) {\n return -1;\n }\n if (!hasPosition1 && hasPosition2) {\n return 1;\n }\n\n // 如果都没有位置信息,保持原有顺序\n return 0;\n}\n","import { isSystemField, FieldModelMap, AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport {\n AITableRecord,\n AITableField,\n AITableFieldType,\n FieldValue,\n SelectSettings,\n SystemFieldTypes,\n AITableViewRecords,\n AITableViewFields,\n AITableView,\n AITableFilterConditions,\n AITableFilterLogical,\n AITableViewField,\n AITableFilterCondition,\n AITableFilterOperation,\n isEmpty\n} from '@ai-table/utils';\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\nexport function checkConditions(\n aiTable: AIViewTable,\n fields: AITableViewFields,\n record: AITableRecord,\n filterConditions?: AITableFilterConditions\n) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n const conditions = aiTable.viewsMap()[aiTable.activeViewId()].settings?.conditions;\n const conditionLogical = aiTable.viewsMap()[aiTable.activeViewId()].settings?.condition_logical;\n filterConditions = {\n conditions,\n condition_logical: conditionLogical\n };\n if (!conditions || !conditions?.length) {\n return true;\n }\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 (\n field &&\n doFilter(condition, cellValue, {\n aiTable,\n field\n })\n );\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(\n condition: AITableFilterCondition,\n cellValue: FieldValue,\n options: {\n aiTable: AITable;\n field: AITableField;\n }\n) {\n const fieldModel = FieldModelMap[options.field.type];\n if (fieldModel && fieldModel.isValid(cellValue)) {\n return fieldModel.isMeetFilter(condition, cellValue, options);\n } else {\n if (condition.operation === AITableFilterOperation.empty) {\n return true;\n } else {\n return false;\n }\n }\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 as AITableFieldType) &&\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 as AITableFieldType)\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 as AITableFieldType)) {\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 (\n field &&\n [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type as AITableFieldType)\n ) {\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, sortByViewPosition } from '@ai-table/utils';\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields } from '@ai-table/utils';\n\nexport function buildFieldStatType(data: AITableViewFields, activeView: AITableView) {\n return data.map((field, index) => {\n const fieldStatType = field.fieldStatTypes?.[activeView._id];\n if (fieldStatType) {\n return {\n ...field,\n stat_type: fieldStatType\n };\n } else {\n return field;\n }\n });\n}\n","import { AITable, AITableLinearRowGroup, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableViewRecords, AITableViewRecord, AITableField, AITableGroupField } from '@ai-table/utils';\nimport { AITableLinearRow, AITableRowType } from '@ai-table/grid';\nimport { nanoid } from 'nanoid';\n\nexport class GroupCalculator {\n private groups: AITableGroupField[];\n private groupBreakpoints: Map<string, number[]>;\n private groupCollapseState: Set<string>;\n private aiTable: AITable;\n private fieldsMap: Record<string, AITableField>;\n\n constructor(aiTable: AITable, groups: AITableGroupField[], collapseState?: string[]) {\n this.aiTable = aiTable;\n this.groups = groups;\n this.groupBreakpoints = new Map();\n this.groupCollapseState = new Set(collapseState || []);\n this.fieldsMap = this.aiTable.fieldsMap();\n }\n\n calculateLinearRows(records: AITableViewRecords): AITableLinearRow[] {\n this.detectGroupBreakpoints(records);\n\n return this.generateLinearRows(records);\n }\n\n // 检测断点\n private detectGroupBreakpoints(records: AITableViewRecords): void {\n this.groupBreakpoints.clear();\n\n if (records.length === 0) return;\n\n let previousRecord: AITableViewRecord | null = null;\n\n records.forEach((record, index) => {\n if (previousRecord === null) {\n // 第一条记录,所有分组字段都是断点\n this.groups.forEach((groupField) => {\n this.addBreakpoint(groupField.field_id, index);\n });\n } else {\n // 检查每个分组字段是否发生变化\n this.groups.forEach((groupField, groupIndex) => {\n const field = this.fieldsMap[groupField.field_id];\n if (!field) return;\n\n const prevValue = AITableQueries.getFieldValue(this.aiTable, [previousRecord!._id, field._id]);\n const currValue = AITableQueries.getFieldValue(this.aiTable, [record._id, field._id]);\n\n const fieldModel = FieldModelMap[field.type];\n if (!fieldModel) return;\n\n const compareResult = fieldModel.compare(prevValue, currValue, this.aiTable.context!.references(), undefined, {\n aiTable: this.aiTable,\n field\n });\n\n if (compareResult !== 0) {\n // 值发生变化,从当前层级开始的所有层级都是断点\n for (let i = groupIndex; i < this.groups.length; i++) {\n this.addBreakpoint(this.groups[i].field_id, index);\n }\n return;\n }\n });\n }\n\n previousRecord = record;\n });\n }\n\n // 添加断点\n private addBreakpoint(fieldId: string, recordIndex: number): void {\n if (!this.groupBreakpoints.has(fieldId)) {\n this.groupBreakpoints.set(fieldId, []);\n }\n const breakpoints = this.groupBreakpoints.get(fieldId)!;\n if (!breakpoints.includes(recordIndex)) {\n breakpoints.push(recordIndex);\n }\n }\n\n // 生成GroupLinearRows\n private generateLinearRows(records: AITableViewRecords): AITableLinearRow[] {\n const linearRows: AITableLinearRow[] = [];\n let lastGroupDepth = -1;\n let currentGroupRecords: AITableViewRecord[] = [];\n let currentGroupRecordIndices: number[] = []; // 记录当前分组中每个记录的原始索引\n\n // 开始添加一个空白行\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: 0\n });\n\n records.forEach((record, index) => {\n // 生成分组标签\n const groupTabRows = this.generateGroupTabRows(record, index, records.length);\n\n if (groupTabRows.length > 0) {\n // 如果有新的分组标签,先处理上一个分组的结束\n if (currentGroupRecords.length > 0) {\n this.handleGroupEnd(currentGroupRecords, linearRows, currentGroupRecordIndices);\n currentGroupRecords = [];\n currentGroupRecordIndices = [];\n }\n\n const depths = groupTabRows.filter((d) => d.depth !== undefined).map((d) => d.depth) as number[];\n const minDepth = depths.length > 0 ? Math.min(...depths) : 0;\n\n // 如果当前分组的最小深度小于等于上一个分组的深度,说明是同级或上级分组,需添加空白行\n if (lastGroupDepth >= 0 && minDepth <= lastGroupDepth) {\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: minDepth\n });\n }\n\n linearRows.push(...groupTabRows);\n lastGroupDepth = depths.length > 0 ? Math.max(...depths) : 0;\n }\n\n // 将记录添加到当前分组\n currentGroupRecords.push(record);\n currentGroupRecordIndices.push(index);\n });\n\n // 处理最后一个分组\n if (currentGroupRecords.length > 0) {\n this.handleGroupEnd(currentGroupRecords, linearRows, currentGroupRecordIndices);\n }\n\n // 添加分组结束的空白行\n if (lastGroupDepth >= 0) {\n linearRows.push({\n type: AITableRowType.blank,\n _id: nanoid(),\n depth: 0\n });\n }\n\n return linearRows;\n }\n\n private handleGroupEnd(\n currentGroupRecords: AITableViewRecord[],\n linearRows: AITableLinearRow[],\n currentGroupRecordIndices: number[]\n ): void {\n let groupDisplayRowIndex = 0;\n const lastLinearRow = linearRows[linearRows.length - 1];\n\n currentGroupRecords.forEach((record, i) => {\n if (lastLinearRow?.type === AITableRowType.group && !lastLinearRow.isCollapsed) {\n groupDisplayRowIndex++;\n linearRows.push({\n type: AITableRowType.record,\n _id: record._id,\n displayIndex: groupDisplayRowIndex,\n depth: this.groups.length\n });\n }\n });\n\n // 分组未折叠,为每个分组添加add新增行\n if (currentGroupRecords.length > 0 && lastLinearRow?.type === AITableRowType.group && !lastLinearRow.isCollapsed) {\n let startRecordIndex = 0;\n let endRecordIndex = 0;\n if (currentGroupRecordIndices) {\n // 当前添加按钮对于的记录范围\n startRecordIndex = Math.min(...currentGroupRecordIndices);\n endRecordIndex = Math.max(...currentGroupRecordIndices);\n }\n\n linearRows.push({\n type: AITableRowType.add,\n _id: nanoid(),\n depth: this.groups.length,\n range: [startRecordIndex, endRecordIndex]\n });\n }\n }\n\n // 生成分组标签\n private generateGroupTabRows(record: AITableViewRecord, recordIndex: number, totalRecords: number): AITableLinearRowGroup[] {\n const groupTabRows: AITableLinearRowGroup[] = [];\n\n this.groups.forEach((groupField, depth) => {\n const breakpoints = this.groupBreakpoints.get(groupField.field_id) || [];\n\n if (breakpoints.includes(recordIndex)) {\n const field = this.fieldsMap[groupField.field_id];\n if (!field) return;\n\n const breakpointIndex = breakpoints.indexOf(recordIndex);\n const groupId = this.generateGroupId(groupField.field_id, depth, breakpointIndex);\n const isParentCollapsed = this.isParentGroupCollapsed(depth, recordIndex);\n if (!isParentCollapsed) {\n const groupValue = AITableQueries.getFieldValue(this.aiTable, [record._id, field._id]);\n const recordRange = this.calculateGroupRecordRange(groupField.field_id, breakpointIndex, totalRecords);\n\n groupTabRows.push({\n type: AITableRowType.group,\n _id: nanoid(),\n depth,\n fieldId: groupField.field_id,\n groupValue,\n isCollapsed: this.groupCollapseState.has(groupId),\n range: recordRange,\n groupId\n });\n }\n }\n });\n\n return groupTabRows;\n }\n\n private calculateGroupRecordRange(fieldId: string, breakpointIndex: number, totalRecords: number): [number, number] {\n const breakpoints = this.groupBreakpoints.get(fieldId) || [];\n const startIndex = breakpoints[breakpointIndex] || 0;\n\n let endIndex: number;\n if (breakpointIndex + 1 < breakpoints.length) {\n // 如果不是最后一个分组,结束位置是下一个断点的前一个位置\n endIndex = breakpoints[breakpointIndex + 1] - 1;\n } else {\n // 如果是最后一个分组,结束位置是最后一条记录\n endIndex = totalRecords - 1;\n }\n\n return [startIndex, endIndex];\n }\n\n // 生成分组ID\n private generateGroupId(fieldId: string, depth: number, breakpointIndex: number): string {\n // 通过字段ID、深度和断点索引确保唯一\n return `${fieldId}_${depth}_${breakpointIndex}`;\n }\n\n // 检查所有父级分组是否被折叠\n private isParentGroupCollapsed(currentDepth: number, recordIndex: number): boolean {\n for (let parentDepth = 0; parentDepth < currentDepth; parentDepth++) {\n const parentGroupField = this.groups[parentDepth];\n const parentBreakpoints = this.groupBreakpoints.get(parentGroupField.field_id) || [];\n\n let parentBreakpointIndex = -1;\n for (let i = parentBreakpoints.length - 1; i >= 0; i--) {\n if (parentBreakpoints[i] <= recordIndex) {\n parentBreakpointIndex = i;\n break;\n }\n }\n\n if (parentBreakpointIndex > -1) {\n const parentGroupId = this.generateGroupId(parentGroupField.field_id, parentDepth, parentBreakpointIndex);\n const isParentCollapsed = this.groupCollapseState.has(parentGroupId);\n if (isParentCollapsed) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import { AITableLinearRowGroup, AITableRowType } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\n\nexport function getParentLinearRowGroups(aiTable: AIViewTable, targetId: string) {\n const linearRows = aiTable.context!.linearRows();\n const targetIndex = aiTable.context!.visibleRowsIndexMap().get(targetId)!;\n\n if (targetIndex === -1) {\n return [];\n }\n\n const targetRow = linearRows[targetIndex];\n\n const parentGroups: AITableLinearRowGroup[] = [];\n let parentDepthPointer = targetRow.depth! - 1;\n for (let i = targetIndex - 1; i >= 0 && parentDepthPointer >= 0; i--) {\n const row = linearRows[i];\n\n if (row.type === AITableRowType.group) {\n const rowDepth = row.depth || 0;\n\n if (rowDepth <= parentDepthPointer) {\n parentGroups.push(row);\n parentDepthPointer--;\n }\n }\n }\n\n return parentGroups;\n}\n","import { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType, AITableView, AITableViewFields, AITableViewRecords } from '@ai-table/utils';\nimport { AIViewTable } from '../types';\nimport { buildFieldStatType } from './field/stat-field';\nimport { GroupCalculator } from './group';\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 const sortFields = getSortFields(aiTable, fields as AITableViewFields, activeView);\n return buildFieldStatType(sortFields, activeView);\n}\n\nexport function buildGroupLinearRows(aiTable: AIViewTable, activeView: AITableView, records: AITableViewRecords) {\n if (aiTable && activeView?.settings?.groups?.length) {\n try {\n const groups = activeView.settings?.groups!;\n const collapsedGroupIds = activeView.settings?.collapsed_group_ids;\n\n const calculator = new GroupCalculator(aiTable, groups, collapsedGroupIds);\n return calculator.calculateLinearRows(records);\n } catch (error) {\n console.warn('Grouped build failed, using the default build method:', error);\n }\n }\n return null;\n}\n","import { AITableView, ActionName, AddViewAction, RemoveViewAction, SetViewAction } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { sortViews } from '../utils';\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, originId: string, newView: AITableView, isDuplicate?: boolean) {\n const views = sortViews(aiTable.views());\n const currentIndex = views.findIndex((item) => item._id === originId);\n if (isDuplicate) {\n const nextIndex = currentIndex + 1;\n newView.position = ((views[currentIndex]?.position ?? currentIndex) + (views[nextIndex]?.position ?? nextIndex)) / 2;\n } else {\n newView.position = currentIndex + 1;\n }\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view: newView,\n isDuplicate\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 function setViewFrozenField(aiTable: AIViewTable, frozenFieldId?: string) {\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.viewsMap()[activeViewId];\n\n const currentSettings = activeView.settings || {};\n const newSettings = {\n ...currentSettings,\n frozen_field_id: frozenFieldId\n };\n\n if (frozenFieldId === undefined) {\n delete newSettings.frozen_field_id;\n }\n\n setView(aiTable, { settings: newSettings }, [activeViewId]);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView,\n setViewFrozenField\n};\n","import { AIViewTable } from '../types';\nimport { ActionName, NumberPath, Positions, RemovePositions, SetRecordPositionAction } from '@ai-table/utils';\n\nexport function buildSetRecordPositionsActon(aiTable: AIViewTable, positions: Positions | RemovePositions, path: NumberPath) {\n const action: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n return action;\n}\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: NumberPath) {\n const operation = buildSetRecordPositionsActon(aiTable, positions, path);\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\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 pasteOverMaxRecords = 'pasteOverMaxRecords',\n pasteOverMaxFields = 'pasteOverMaxFields',\n insertUpward = 'insertUpward',\n insertDownward = 'insertDownward',\n upward = 'upward',\n downward = 'downward',\n freezeToThisColumn = 'freezeToThisColumn',\n restoreDefaultFrozenColumn = 'restoreDefaultFrozenColumn'\n}\n\nexport const AITableStateI18nText = {\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 [AITableStateI18nKey.pasteOverMaxRecords]: '粘贴数据超过最大行数',\n [AITableStateI18nKey.pasteOverMaxFields]: '粘贴数据超过最大列数',\n [AITableStateI18nKey.insertUpward]: '向上插入',\n [AITableStateI18nKey.insertDownward]: '向下插入',\n [AITableStateI18nKey.upward]: '行',\n [AITableStateI18nKey.downward]: '行',\n [AITableStateI18nKey.freezeToThisColumn]: '冻结至此列',\n [AITableStateI18nKey.restoreDefaultFrozenColumn]: '恢复默认冻结列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableStateI18nText[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 { AITableView, AITableViewFields, AITableViewRecords, Path } from '@ai-table/utils';\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 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 { AITableFields, AITableFieldsSizeMap, AITableView, AITableViewField, NumberPath } from '@ai-table/utils';\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 { AITable, getColumnIndicesSizeMap } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { AIViewTable } from '../../types';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableField, AITableSizeMap, AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH, AI_TABLE_MIN_FROZEN_COLUMN_COUNT } from '@ai-table/utils';\nimport { setViewFrozenField } from '../../action/view';\n\nexport function getFrozenFieldId(aiTable: AITable): string | undefined {\n try {\n const viewTable = aiTable as AIViewTable;\n const activeViewId = viewTable.activeViewId();\n const activeView = viewTable.viewsMap()[activeViewId];\n return activeView?.settings?.frozen_field_id;\n } catch (error) {\n return undefined;\n }\n}\n\nfunction calculateAdaptiveFrozenColumnCountCore(config: {\n containerWidth: number;\n rowHeadWidth: number;\n visibleFields: AITableField[];\n columnIndicesSizeMap: AITableSizeMap;\n frozenFieldId?: string;\n minUnfrozenWidth?: number;\n}): number {\n const {\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId,\n minUnfrozenWidth = AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH\n } = config;\n\n if (visibleFields.length === 0) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n let targetFrozenCount: number;\n\n if (frozenFieldId) {\n const frozenFieldIndex = visibleFields.findIndex((field) => field._id === frozenFieldId);\n if (frozenFieldIndex >= 0) {\n targetFrozenCount = frozenFieldIndex + 1;\n } else {\n targetFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n } else {\n targetFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n const availableWidth = containerWidth - rowHeadWidth;\n\n const maxFrozenWidth = Math.max(0, availableWidth - minUnfrozenWidth);\n\n let currentFrozenWidth = 0;\n let actualFrozenCount = 0;\n const maxPossibleCount = Math.min(targetFrozenCount, visibleFields.length);\n\n for (let i = 0; i < maxPossibleCount; i++) {\n const fieldWidth = columnIndicesSizeMap[i];\n const newFrozenWidth = currentFrozenWidth + fieldWidth;\n\n if (newFrozenWidth > maxFrozenWidth) {\n if (i === 0) {\n currentFrozenWidth = newFrozenWidth;\n actualFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n break;\n }\n\n currentFrozenWidth = newFrozenWidth;\n actualFrozenCount = i + 1;\n }\n\n // 至少有一列冻结\n if (actualFrozenCount < AI_TABLE_MIN_FROZEN_COLUMN_COUNT) {\n actualFrozenCount = AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n if (visibleFields.length > 0) {\n currentFrozenWidth = columnIndicesSizeMap[0];\n }\n }\n\n return actualFrozenCount;\n}\n\nexport function calculateAdaptiveFrozenColumnCount(aiTable: AITable, containerWidth: number, minUnfrozenWidth: number = 200): number {\n try {\n if (containerWidth <= 0) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n\n const frozenFieldId = getFrozenFieldId(aiTable);\n\n const visibleFields = AITable.getVisibleFields(aiTable);\n const columnIndicesSizeMap = getColumnIndicesSizeMap(aiTable, visibleFields);\n const rowHeadWidth = aiTable.context?.rowHeadWidth?.() || 0;\n return calculateAdaptiveFrozenColumnCountCore({\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId,\n minUnfrozenWidth\n });\n } catch (error) {\n return AI_TABLE_MIN_FROZEN_COLUMN_COUNT;\n }\n}\n\nexport const freezeToThisColumn = (aiTable: AITable) => {\n return {\n type: 'freezeToThisColumn',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.freezeToThisColumn),\n icon: 'frozen',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const currentField = field();\n const viewTable = aiTable as AIViewTable;\n\n setViewFrozenField(viewTable, currentField._id);\n },\n hidden: (aiTable: AITable, field: Signal<AITableField>) => {\n if (aiTable.context?.readonly?.()) {\n return true;\n }\n\n const currentField = field();\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n return currentFrozenFieldId === currentField._id;\n },\n disabled: (aiTable: AITable, field: Signal<AITableField>) => {\n try {\n const currentField = field();\n const fields = aiTable.gridData().fields;\n const currentFieldIndex = fields.findIndex((f) => f._id === currentField._id);\n\n const visibleFields = AITable.getVisibleFields(aiTable);\n const columnIndicesSizeMap = getColumnIndicesSizeMap(aiTable, visibleFields);\n const containerWidth = aiTable.context?.containerRect()?.width || 0;\n const rowHeadWidth = aiTable.context?.rowHeadWidth?.() || 0;\n const actualFrozenCount = calculateAdaptiveFrozenColumnCountCore({\n containerWidth,\n rowHeadWidth,\n visibleFields,\n columnIndicesSizeMap,\n frozenFieldId: currentField._id,\n minUnfrozenWidth: AI_TABLE_DEFAULT_MIN_UNFROZEN_WIDTH\n });\n\n if (actualFrozenCount < currentFieldIndex + 1) {\n // 超过可视区域禁用\n return true;\n }\n\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n if (!currentFrozenFieldId && currentFieldIndex === 0) {\n // 默认第一列冻结列禁用\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n };\n};\n\nexport const restoreDefaultFrozenColumn = (aiTable: AITable) => {\n return {\n type: 'restoreDefaultFrozenColumn',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.restoreDefaultFrozenColumn),\n icon: 'frozen',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const viewTable = aiTable as AIViewTable;\n\n setViewFrozenField(viewTable, undefined);\n },\n hidden: (aiTable: AITable, field: Signal<AITableField>) => {\n if (aiTable.context?.readonly?.()) {\n return true;\n }\n\n const currentField = field();\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n if (!currentFrozenFieldId) {\n return true;\n }\n\n return currentField._id !== currentFrozenFieldId;\n }\n };\n};\n","import { AITableQueries } from '@ai-table/grid';\nimport {\n ActionName,\n AddFieldAction,\n RemoveFieldAction,\n SetFieldAction,\n AITableViewField,\n AITableField,\n IdPath,\n NumberPath,\n AITableFieldStatType\n} from '@ai-table/utils';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\nimport { getFrozenFieldId } from '../utils/field/frozen-field';\nimport { setViewFrozenField } from './view';\nimport { AIViewTable } from '../types/ai-table';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, originId?: string, isDuplicate?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n originId,\n isDuplicate\n };\n const existField = aiTable.fields().some((item) => {\n return item._id === field._id;\n });\n if (existField) {\n console.error(`Field with id ${field._id} already exists.`, field);\n throw new Error(`Field with id ${field._id} already exists.`);\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\n const currentFrozenFieldId = getFrozenFieldId(aiTable);\n\n adjustFrozenFieldAfterMove(aiTable, path[0], newPath[0], currentFrozenFieldId);\n\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nfunction adjustFrozenFieldAfterMove(aiTable: AIViewTable, sourceIndex: number, targetIndex: number, currentFrozenFieldId?: string) {\n if (!currentFrozenFieldId) {\n return;\n }\n\n const fields = aiTable.gridData().fields;\n const currentFrozenFieldIndex = fields.findIndex((field) => field._id === currentFrozenFieldId);\n\n if (currentFrozenFieldIndex === -1) {\n return;\n }\n\n // 最后冻结列拖动到非冻结区或冻结区,冻结列向左移动\n if (sourceIndex === currentFrozenFieldIndex && targetIndex !== currentFrozenFieldIndex) {\n const newFrozenFieldIndex = Math.max(0, currentFrozenFieldIndex - 1);\n if (newFrozenFieldIndex < fields.length && newFrozenFieldIndex !== currentFrozenFieldIndex) {\n const newFrozenField = fields[newFrozenFieldIndex];\n setViewFrozenField(aiTable, newFrozenField._id);\n } else {\n // 如果没有前一个字段,恢复默认冻结\n setViewFrozenField(aiTable, undefined);\n }\n return;\n }\n\n // 冻结区拖动到最后冻结列后面,冻结列是被拖动列\n if (sourceIndex < currentFrozenFieldIndex && targetIndex === currentFrozenFieldIndex) {\n const newFrozenField = fields[sourceIndex];\n setViewFrozenField(aiTable, newFrozenField._id);\n return;\n }\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n setField(aiTable, { widths: { ...field.widths, [aiTable.activeViewId()]: width } }, [field._id]);\n}\n\nexport function setFieldStatType(aiTable: AIViewTable, path: IdPath, statType: AITableFieldStatType) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n setField(aiTable, { fieldStatTypes: { ...field.fieldStatTypes, [aiTable.activeViewId()]: statType } }, [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 buildSetFieldAction<T extends AITableViewField = AITableViewField>(\n aiTable: AIViewTable,\n value: Partial<T>,\n path: IdPath\n): SetFieldAction | null {\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 const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n return operation;\n }\n return null;\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const action = buildSetFieldAction(aiTable, value, path);\n if (action) {\n aiTable.apply(action);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth,\n setFieldStatType\n};\n","import { shortIdCreator } from '@ai-table/grid';\nimport { AITableAction, AITableView, idCreator, AITableViewFields, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { ViewActions } from '../action/view';\nimport { buildSetRecordPositionsActon } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\nimport { AIViewTable } from '../types';\nimport _ from 'lodash';\nimport { buildSetFieldAction } from '../action/field';\n\nexport function createPositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, index?: number) {\n return createMultiplePositions(views, activeId, data, index)[0];\n}\n\nexport function createMultiplePositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n targetIndex: number = data.length - 1,\n count: number = 1,\n isInsertUpward: boolean = false\n) {\n const positionsOfItems = getPositions(activeId, data, targetIndex, count, isInsertUpward);\n const viewsMaxPosition: Record<string, number> = {};\n views.forEach((view) => {\n viewsMaxPosition[view._id] = getMaxPosition(data, view._id);\n });\n const positions = positionsOfItems.map((itemPositions) => {\n const viewPositions: Positions = {};\n views.forEach((view) => {\n if (view._id === activeId) {\n viewPositions[view._id] = itemPositions;\n } else {\n viewsMaxPosition[view._id] += 1;\n viewPositions[view._id] = viewsMaxPosition[view._id];\n }\n });\n return viewPositions;\n });\n return positions;\n}\n\nexport function getPositions(\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n targetIndex: number = data.length - 1,\n count: number = 1,\n isInsertBefore: boolean = false\n) {\n let startPosition = data[data.length - 1].positions[activeId!];\n let endPosition = startPosition + count + 1;\n if (data[targetIndex]) {\n if (isInsertBefore) {\n endPosition = data[targetIndex].positions[activeId!];\n startPosition = targetIndex - 1 >= 0 ? data[targetIndex - 1].positions[activeId!] : endPosition - count - 1;\n } else {\n startPosition = data[targetIndex].positions[activeId!];\n endPosition =\n targetIndex + 1 < data.length\n ? data[targetIndex + 1].positions[activeId!]\n : data[targetIndex].positions[activeId!] + count + 1;\n }\n }\n const step = (endPosition - startPosition) / (count + 1);\n const positions = _.range(startPosition + step, endPosition, step);\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index?: number) {\n return getPositions(activeViewId, data, index)[0];\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' | 'duplicate', viewId?: string) {\n const newId = idCreator();\n const shortId = shortIdCreator();\n const views = aiTable.views();\n const allViewNames = views.map((item) => item.name);\n const count = 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 = views[views.length - 1]._id;\n if (type === 'duplicate') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = 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 }\n ViewActions.addView(aiTable, originViewId, newView, type === 'duplicate');\n const actions: AITableAction[] = [];\n (aiTable.records() as AITableViewRecords).forEach((record, index) => {\n const action = buildSetRecordPositionsActon(aiTable, { [newId]: record.positions[originViewId] }, [index]);\n actions.push(action);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n const action = buildSetFieldAction(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n if (action) {\n actions.push(action);\n }\n });\n aiTable.apply(actions);\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n ViewActions.removeView(aiTable, [activeViewId]);\n const actions: AITableAction[] = [];\n records.forEach((record, index) => {\n const action = buildSetRecordPositionsActon(aiTable, { [activeViewId]: undefined }, [index]);\n actions.push(action);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n const action = buildSetFieldAction(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n if (action) {\n actions.push(action);\n }\n });\n aiTable.apply(actions);\n}\n\nexport function sortViews(data: AITableView[]) {\n return [...data].sort((a, b) => (a.position ?? data.indexOf(a)) - (b.position ?? data.indexOf(b)));\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AIViewTable } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue } from '@ai-table/grid';\nimport {\n ActionName,\n AITableAction,\n AITableField,\n AITableFields,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords\n} from '@ai-table/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 = 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 = 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 records.push(action.record as AITableViewRecord);\n break;\n }\n case ActionName.AddField: {\n const newField = action.field;\n fields.push(newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isDuplicate && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = 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 = 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 views.push(action.view);\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[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, actions: 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 actions.forEach((action) => {\n apply(aiTable, records, fields, views, action);\n });\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 { AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n RemoveRecordAction,\n UpdateSystemFieldValue,\n AITableRecord,\n IdPath,\n AITableViewRecords,\n AITableViewRecord,\n AddRecordOptions,\n UpdateFieldValueOptions,\n AITableSystemFieldValueOption\n} from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { getNewRecordsPosition } from '../utils';\n\nexport function updateFieldValues(aiTable: AIViewTable, options: UpdateFieldValueOptions[]) {\n let operations: UpdateFieldValueAction[] = [];\n\n (options || []).forEach((option) => {\n const field = AITableQueries.getField(aiTable, [option.path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(option.value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n newFieldValue: option.value,\n path: option.path\n };\n\n operations.push(operation);\n } else {\n console.error(\n `Invalid field value at update field value. invalidFieldType: ${field?.type}, value: ${option.value}, field_id: ${option.path[1]}`\n );\n }\n });\n\n aiTable.apply(operations);\n}\n\nexport function updateSystemFieldValues(aiTable: AIViewTable, options: AITableSystemFieldValueOption[]) {\n const operations: UpdateSystemFieldValue[] = [];\n (options || []).forEach((option) => {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo: option.updatedInfo,\n path: option.path\n };\n operations.push(operation);\n });\n\n aiTable.apply(operations);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord) {\n addRecords(aiTable, [record]);\n}\n\nexport function addRecords(aiTable: AIViewTable, records: AITableRecord[], options?: AddRecordOptions) {\n const invalidFieldValues: string[] = [];\n\n const positions = getNewRecordsPosition(aiTable, options);\n records.forEach((record, index) => {\n 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 });\n if (invalidFieldValues.length) {\n console.error(`Invalid field values at add records. invalidFieldValues: ${invalidFieldValues}`);\n return;\n }\n records.forEach((record, index) => {\n (record as AITableViewRecord).positions = positions[index];\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record\n };\n aiTable.apply(operation);\n });\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 addRecords,\n removeRecord,\n updateFieldValues,\n updateSystemFieldValues\n};\n","import { ActionName, SetViewAction, AITableView, AITableGroupField, SortDirection, ViewSettings } from '@ai-table/utils';\nimport { AIViewTable } from '../types/ai-table';\nimport { AI_TABLE_GROUP_MAX_LEVEL } from '@ai-table/grid';\n\nfunction setViewGroup(aiTable: AIViewTable, groups: AITableGroupField[] | null) {\n const viewId = aiTable.activeViewId();\n const view = aiTable.views().find((v) => v._id === viewId);\n if (!view) return;\n\n const currentSettings = view.settings || {};\n const newSettings: ViewSettings = {\n ...currentSettings,\n groups: groups || [],\n collapsed_group_ids: [] // 重置折叠\n };\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties: { settings: currentSettings },\n newProperties: { settings: newSettings },\n path: [viewId]\n };\n aiTable.apply(operation);\n}\n\nfunction setCollapsedGroup(aiTable: AIViewTable, collapsedGroupIds: string[]) {\n const viewId = aiTable.activeViewId();\n const view = aiTable.views().find((v) => v._id === viewId);\n if (!view) return;\n\n const currentSettings = view.settings || {};\n const newSettings: ViewSettings = {\n ...currentSettings,\n collapsed_group_ids: collapsedGroupIds\n };\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties: { settings: currentSettings },\n newProperties: { settings: newSettings },\n path: [viewId]\n };\n aiTable.apply(operation);\n}\n\n// 折叠\nfunction toggleGroupCollapse(aiTable: AIViewTable, groupId: string) {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n if (!activeView) return;\n const currentCollapse = activeView.settings?.collapsed_group_ids || [];\n const newCollapse = currentCollapse.includes(groupId) ? currentCollapse.filter((id) => id !== groupId) : [...currentCollapse, groupId];\n\n setCollapsedGroup(aiTable, newCollapse);\n}\n\n// 添加分组\nfunction addGroupField(aiTable: AIViewTable, fieldId: string, direction: SortDirection = SortDirection.ascending) {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n if (!activeView) return;\n\n const currentGroups = activeView.settings?.groups || [];\n\n // 是否已存在\n if (currentGroups.some((group) => group.field_id === fieldId)) {\n throw new Error('The field has been used for grouping.');\n }\n\n // 层级限制\n if (currentGroups.length >= AI_TABLE_GROUP_MAX_LEVEL) {\n throw new Error(`The maximum number of groups is ${AI_TABLE_GROUP_MAX_LEVEL}.`);\n }\n\n const newGroups: AITableGroupField[] = [...currentGroups, { field_id: fieldId, direction }];\n setViewGroup(aiTable, newGroups);\n}\n\n// 删除分组\nfunction removeGroupField(aiTable: AIViewTable, fieldId: string) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n const newGroups = currentGroups.filter((group) => group.field_id !== fieldId);\n\n setViewGroup(aiTable, newGroups.length > 0 ? newGroups : null);\n}\n\n// 更新排序方向\nfunction updateGroupFieldDirection(aiTable: AIViewTable, fieldId: string, direction: SortDirection) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n const newGroups = currentGroups.map((group) => (group.field_id === fieldId ? { ...group, direction } : group));\n\n setViewGroup(aiTable, newGroups);\n}\n\n// 重新排序,拖拽顺序\nfunction reorderGroupFields(aiTable: AIViewTable, fromIndex: number, toIndex: number) {\n const view = aiTable.views().find((v) => v._id === aiTable.activeViewId());\n if (!view) return;\n\n const currentGroups = view.settings?.groups || [];\n\n if (fromIndex < 0 || fromIndex >= currentGroups.length || toIndex < 0 || toIndex >= currentGroups.length) {\n return;\n }\n\n const newGroups = [...currentGroups];\n const [movedItem] = newGroups.splice(fromIndex, 1);\n newGroups.splice(toIndex, 0, movedItem);\n\n setViewGroup(aiTable, newGroups);\n}\n\n// 清空分组\nfunction clearAllGroups(aiTable: AIViewTable) {\n setViewGroup(aiTable, null);\n}\n\nexport const GroupActions = {\n setViewGroup,\n setCollapsedGroup,\n toggleGroupCollapse,\n addGroupField,\n removeGroupField,\n updateGroupFieldDirection,\n reorderGroupFields,\n clearAllGroups\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\nimport { GroupActions } from './group';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions,\n ...GroupActions\n};\n\nexport { buildSetRecordPositionsActon } from './position';\n\nexport { buildSetFieldAction } from './field';\n","import { MoveFieldOptions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITableViewRecord, AITableViewRecords, Positions } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { getMaxPosition } from '../view';\nimport _ from 'lodash';\nimport { getParentLinearRowGroups } from '../group/utils';\nimport { AITableRowType } from '@ai-table/grid';\n\nexport function findNextRecordForTargetInOriginalRecords(aiTable: AIViewTable, targetRecordId: string): AITableViewRecord | null {\n const viewId = aiTable.activeViewId();\n const records = aiTable.records() as AITableViewRecords;\n const recordsMap = aiTable.recordsMap();\n\n const targetRecord = recordsMap[targetRecordId] as AITableViewRecord;\n const targetPosition = targetRecord.positions[viewId] || 0;\n\n let nextRecord: AITableViewRecord | null = null;\n for (const record of records) {\n const pos = record.positions[viewId] || 0;\n // 找到所有position大于目标position的记录中最小的\n if (pos > targetPosition && (nextRecord === null || pos < nextRecord.positions[viewId])) {\n nextRecord = record;\n }\n }\n\n return nextRecord;\n}\n\nexport function findPrevRecordForTargetInOriginalRecords(aiTable: AIViewTable, targetRecordId: string): AITableViewRecord | null {\n const viewId = aiTable.activeViewId();\n const records = aiTable.records() as AITableViewRecords;\n const recordsMap = aiTable.recordsMap();\n\n const targetRecord = recordsMap[targetRecordId] as AITableViewRecord;\n const targetPosition = targetRecord.positions[viewId] || 0;\n\n let prevRecord: AITableViewRecord | null = null;\n for (const record of records) {\n const pos = record.positions[viewId] || 0;\n // 找到所有position小于目标记录position的记录中最大的\n if (pos < targetPosition && (prevRecord === null || pos > prevRecord.positions[viewId])) {\n prevRecord = record;\n }\n }\n\n return prevRecord;\n}\n\nexport function getPositionByAfterOrBeforeRecordId(\n aiTable: AIViewTable,\n options: { afterRecordId?: string; beforeRecordId?: string }\n): { targetPosition: number; prevPosition: number } {\n const recordsMap = aiTable.recordsMap();\n const activeViewId = aiTable.activeViewId();\n const originalRecords = aiTable.records() as AITableViewRecords;\n const { afterRecordId, beforeRecordId } = options;\n let targetPosition = 0;\n let prevPosition = 0;\n\n if (afterRecordId) {\n // 移动到指定记录之后\n const targetRecord = recordsMap[afterRecordId] as AITableViewRecord;\n if (!targetRecord) {\n throw new Error(`Target record with id ${afterRecordId} not found`);\n }\n\n prevPosition = targetRecord.positions[activeViewId] || 0;\n const nextPosition = findNextRecordForTargetInOriginalRecords(aiTable, afterRecordId);\n if (nextPosition !== null) {\n targetPosition = nextPosition.positions[activeViewId] || 0;\n } else {\n // 最后一个\n targetPosition = getMaxPosition(originalRecords, activeViewId) + 1;\n }\n } else if (beforeRecordId) {\n // 移动到指定记录之前\n const targetRecord = recordsMap[beforeRecordId] as AITableViewRecord;\n if (!targetRecord) {\n throw new Error(`Target record with id ${beforeRecordId} not found`);\n }\n\n targetPosition = targetRecord.positions[activeViewId] || 0;\n const previousPosition = findPrevRecordForTargetInOriginalRecords(aiTable, beforeRecordId);\n if (previousPosition !== null) {\n prevPosition = previousPosition.positions[activeViewId] || 0;\n } else {\n // 第一个\n prevPosition = targetPosition - 1;\n }\n } else {\n throw new Error('Either afterRecordId or beforeRecordId must be provided');\n }\n return {\n targetPosition,\n prevPosition\n };\n}\n\nexport function getNewRecordsPosition(aiTable: AIViewTable, options?: { afterRecordId?: string; beforeRecordId?: string; count?: number }) {\n options = options || {};\n if (!options.afterRecordId && !options.beforeRecordId) {\n options.afterRecordId = aiTable.gridData().records[aiTable.gridData().records.length - 1]._id;\n }\n options.count = options.count || 1;\n const { targetPosition, prevPosition } = getPositionByAfterOrBeforeRecordId(aiTable, options);\n const interval = (targetPosition - prevPosition) / ((options.count! || 1) + 1);\n const positionsOfItems = _.range(prevPosition + interval, targetPosition, interval);\n const views = aiTable.views();\n const activeViewId = aiTable.activeViewId();\n const viewsMaxPosition: Record<string, number> = {};\n views.forEach((view) => {\n viewsMaxPosition[view._id] = getMaxPosition(aiTable.records() as AITableViewRecord[], view._id);\n });\n const viewPositions = positionsOfItems.map((itemPositions) => {\n const viewPositions: Positions = {};\n views.forEach((view) => {\n if (view._id === activeViewId) {\n viewPositions[view._id] = itemPositions;\n } else {\n viewsMaxPosition[view._id] += 1;\n viewPositions[view._id] = viewsMaxPosition[view._id];\n }\n });\n return viewPositions;\n });\n return viewPositions;\n}\n\nexport function getParentGroupValuesByGroupId(aiTable: AIViewTable, groupId: string): Record<string, any> | null {\n const parentGroups = getParentLinearRowGroups(aiTable, groupId);\n return parentGroups.reduce(\n (pre, cur) => {\n pre[cur.fieldId] = cur.groupValue;\n return pre;\n },\n {} as Record<string, any>\n );\n}\n\nexport function getPrevRecordIdByAddGroupId(aiTable: AIViewTable, groupId: string) {\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.viewsMap()[activeViewId];\n\n if (!activeView.settings?.groups?.length) return null;\n\n const visibleRowsIndexMap = aiTable.context!.visibleRowsIndexMap();\n const rowIndex = visibleRowsIndexMap.get(groupId) ?? -1;\n if (rowIndex > -1) {\n const linearRows = aiTable.context!.linearRows();\n const current = linearRows[rowIndex];\n const prev = linearRows[rowIndex - 1];\n if (current.type === AITableRowType.add && prev.type === AITableRowType.record) {\n return prev._id;\n }\n return null;\n }\n return null;\n}\n","import { Actions } from '../../action';\nimport {\n AITableRecordUpdatedInfo,\n AITableView,\n AITableViewRecord,\n AITableViewRecords,\n MoveRecordOptions,\n sortByViewPosition,\n UpdateFieldValueOptions\n} from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport _ from 'lodash';\nimport { getParentGroupValuesByGroupId, getPositionByAfterOrBeforeRecordId } from './common';\n\nexport function moveRecords(aiTable: AIViewTable, options: MoveRecordOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.views().find((view) => view._id === activeViewId) as AITableView;\n const { recordIds, afterRecordId, beforeRecordId } = options;\n\n const originalRecords = aiTable.records() as AITableViewRecords;\n const recordsIndexMap = new Map(originalRecords.map((row, index) => [row._id, index]));\n\n const sourceRecords: AITableViewRecord[] = [];\n recordIds.forEach((id) => {\n const index = recordsIndexMap.get(id);\n if (index === undefined) {\n throw new Error(`Record with id ${id} not found`);\n }\n sourceRecords.push(originalRecords[index] as AITableViewRecord);\n });\n\n let { targetPosition, prevPosition } = getPositionByAfterOrBeforeRecordId(aiTable, {\n afterRecordId,\n beforeRecordId\n });\n const groups = activeView.settings?.groups;\n let needCopyGroupValuesMap: Record<string, any> | null = null;\n if (groups?.length && (afterRecordId || beforeRecordId)) {\n needCopyGroupValuesMap = getParentGroupValuesByGroupId(aiTable, (afterRecordId || beforeRecordId)!);\n }\n // 勾选多行顺序可能不一致,需要排序\n const sortedSourceRecords = sortByViewPosition(sourceRecords, activeView) as AITableViewRecords;\n let nextPosition = (prevPosition + targetPosition) / 2;\n sortedSourceRecords.forEach((record) => {\n const sourceIndex = recordsIndexMap.get(record._id);\n if (sourceIndex === undefined) {\n throw new Error(`Record with id ${record._id} not found`);\n }\n if (groups?.length && needCopyGroupValuesMap) {\n const updateFieldValues: UpdateFieldValueOptions[] = [];\n groups.forEach((group) => {\n updateFieldValues.push({\n path: [record._id, group.field_id],\n value: needCopyGroupValuesMap[group.field_id]\n });\n });\n Actions.updateFieldValues(aiTable, updateFieldValues);\n }\n Actions.setRecordPositions(aiTable, { [activeViewId]: nextPosition }, [sourceIndex]);\n prevPosition = nextPosition;\n nextPosition = (prevPosition + targetPosition) / 2;\n });\n}\n","import { AddFieldOptions, AITableViewField, AITableViewFields, idCreator } from '@ai-table/utils';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { createPositions, getPosition } from '../view';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions) {\n const { defaultValue, isDuplicate, originId } = options;\n const fields = aiTable.gridData().fields as AITableViewFields;\n const fieldsMap = aiTable.fieldsMap();\n const activeViewId = aiTable.activeViewId();\n const newField = { ...defaultValue } as AITableViewField;\n\n if (fieldsMap[newField._id]) {\n newField._id = idCreator();\n }\n if (isDuplicate) {\n const currentFieldIndex = fields.findIndex((item) => item._id === originId);\n newField.positions = {\n ...newField.positions,\n [activeViewId]: getPosition(fields, activeViewId, currentFieldIndex)\n };\n } else {\n newField.positions = createPositions(aiTable.views(), aiTable.activeViewId(), aiTable.gridData().fields as AITableViewFields);\n }\n Actions.addField(aiTable, newField, originId, isDuplicate);\n}\n","import { AITable } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\nimport { AITableRecordUpdatedInfo, AITableField } from '@ai-table/utils';\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 }\n };\n};\n","import { closeExpendCell, getDefaultFieldValue, idsCreator, setSelection, shortIdsCreator } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { checkConditions, getDefaultRecordDataByFilter } from './filter';\nimport { AddRecordOptions, AITableRecord, AITableViewFields, FieldValue, TrackableEntity } from '@ai-table/utils';\nimport { getParentGroupValuesByGroupId, getPrevRecordIdByAddGroupId } from './common';\n\nexport function addRecords(aiTable: AIViewTable, trackableEntity: TrackableEntity, options?: AddRecordOptions) {\n options = options || {};\n const newRecords: AITableRecord[] = [];\n const activeViewId = aiTable.activeViewId();\n const activeView = aiTable.viewsMap()[activeViewId];\n const groups = activeView.settings?.groups;\n let { originId, isDuplicate, count = 1 } = options;\n const recordCount = aiTable.records().length;\n const maxRecordCount = aiTable.context?.maxRecords();\n if (maxRecordCount && recordCount + count > maxRecordCount) {\n count = maxRecordCount! - recordCount;\n options.count = count;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n const hiddenRecordIds: string[] = [];\n let needCopyGroupValuesMap: Record<string, any> | null = null;\n if (groups?.length && options.forGroupId) {\n if (!options.afterRecordId && !options.beforeRecordId) {\n const prevRecordId = getPrevRecordIdByAddGroupId(aiTable, options.forGroupId);\n if (prevRecordId) {\n options.afterRecordId = prevRecordId;\n }\n }\n needCopyGroupValuesMap = getParentGroupValuesByGroupId(aiTable, options.forGroupId);\n }\n newRecordIds.forEach((id, index) => {\n const record = {\n _id: id,\n short_id: newRecordShortIds[index],\n values: newRecordValues,\n ...trackableEntity\n };\n if (needCopyGroupValuesMap) {\n groups?.forEach((group) => {\n // 复制分组字段值\n record.values[group.field_id] = needCopyGroupValuesMap[group.field_id];\n });\n }\n const checkResult = checkConditions(aiTable, aiTable.fields() as AITableViewFields, record);\n if (!checkResult) {\n hiddenRecordIds.push(id);\n }\n newRecords.push(record);\n });\n if (hiddenRecordIds.length) {\n aiTable.recordsWillHidden?.update((value) => {\n return [...value, ...hiddenRecordIds];\n });\n }\n Actions.addRecords(aiTable, newRecords, options);\n const recentAddRecord = options.beforeRecordId ? newRecords[newRecords.length - 1] : newRecords[0];\n const activeRecordId = recentAddRecord._id;\n const activeFieldId = aiTable.gridData().fields[0]._id;\n closeExpendCell(aiTable);\n setSelection(aiTable, {\n selectedRecords: new Set([]),\n selectedFields: new Set([]),\n selectedCells: new Set([`${activeRecordId}:${activeFieldId}`]),\n activeCell: [activeRecordId, activeFieldId]\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((field) => {\n const customGetDefaultFieldValue = aiTable.context?.aiFieldConfig()?.customFields?.[field.type]?.getDefaultFieldValue;\n if (customGetDefaultFieldValue) {\n newRecordValues[field._id] = customGetDefaultFieldValue(field);\n } else {\n newRecordValues[field._id] = getDefaultFieldValue(field);\n }\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 } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { UpdateFieldValueOptions, AITableRecordUpdatedInfo, AITableSystemFieldValueOption, AITableViewFields } from '@ai-table/utils';\nimport { checkConditions } from './filter';\n\nfunction updateWillHiddenRecordIds(\n aiTable: AIViewTable,\n needUpdateOptions: UpdateFieldValueOptions<unknown>[],\n updatedInfo?: AITableRecordUpdatedInfo\n) {\n const willHiddenRecordIds: string[] = [];\n const removeWillHiddenRecordIds: string[] = [];\n needUpdateOptions.forEach((option) => {\n const [recordId, fieldId] = option.path;\n let record = _.cloneDeep(aiTable.recordsMap()[recordId]);\n record.values[fieldId] = option.value;\n if (updatedInfo) {\n record = {\n ...record,\n ...updatedInfo\n };\n }\n const checkResult = checkConditions(aiTable, aiTable.fields() as AITableViewFields, record);\n if (checkResult) {\n removeWillHiddenRecordIds.push(recordId);\n } else {\n willHiddenRecordIds.push(recordId);\n }\n });\n aiTable.recordsWillHidden.update((value) => {\n value = value.filter((id) => !removeWillHiddenRecordIds.includes(id));\n value.push(...willHiddenRecordIds);\n return value;\n });\n}\n\nexport function updateFieldValues(aiTable: AIViewTable, options: UpdateFieldValueOptions[], updatedInfo?: AITableRecordUpdatedInfo) {\n const needUpdateOptions = options.filter((option) => {\n const oldValue = AITableQueries.getFieldValue(aiTable, option.path);\n return !_.isEqual(oldValue, option.value);\n });\n\n updateWillHiddenRecordIds(aiTable, needUpdateOptions, updatedInfo);\n\n Actions.updateFieldValues(aiTable, needUpdateOptions);\n\n if (updatedInfo) {\n const needUpdateSystemOptions: AITableSystemFieldValueOption[] = needUpdateOptions.map((option) => {\n return {\n path: [option.path[0]],\n updatedInfo: updatedInfo\n };\n });\n Actions.updateSystemFieldValues(aiTable, needUpdateSystemOptions);\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\nimport { AITableAction } from '@ai-table/utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction | AITableAction[]) => {\n const actions = Array.isArray(action) ? action : [action];\n viewTable.actions.push(...actions);\n Actions.transform(viewTable, actions);\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\n return aiTable;\n};\n","import {\n AI_TABLE_GRID_FIELD_SERVICE_MAP,\n AITable,\n AITableActions,\n AITableFieldSetting,\n AITableQueries,\n FieldModelMap,\n isSystemField\n} 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';\nimport {\n AddFieldOptions,\n AITableField,\n AITableReferences,\n FieldValue,\n MemberSettings,\n SelectSettings,\n SetFieldOptions,\n SystemFieldTypes,\n idCreator,\n UpdateFieldValueOptions\n} from '@ai-table/utils';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable, actions: AITableActions, references: AITableReferences) => ({\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 references,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe(({ fieldOptions }) => {\n updateFieldAndValues(aiTable, references, actions, fieldOptions);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const updateFieldAndValues = (\n aiTable: AIViewTable,\n references: AITableReferences,\n actions: AITableActions,\n options: SetFieldOptions\n) => {\n const originField = AITableQueries.getField(aiTable, options.path)!;\n const originFieldSettings = originField.settings as MemberSettings | SelectSettings;\n const field = options.field;\n const fieldSettings = field.settings as MemberSettings | SelectSettings;\n const isSameType = field.type === originField.type;\n const isSameMultiple = fieldSettings?.is_multiple === originFieldSettings?.is_multiple;\n\n Actions.setField(aiTable, options.field, options.path);\n\n if (!isSameType || !isSameMultiple) {\n const originFieldModel = FieldModelMap[originField?.type!];\n const fieldModel = FieldModelMap[field.type];\n\n let fieldValueOptions: UpdateFieldValueOptions[] = [];\n aiTable.records().forEach((record) => {\n let originCellValue: FieldValue;\n if (isSystemField(originField)) {\n originCellValue = AITableQueries.getSystemFieldValue(record, originField.type as SystemFieldTypes);\n } else {\n originCellValue = AITableQueries.getFieldValue(aiTable, [record._id, originField?._id!]);\n }\n\n const originTransformValue = originFieldModel.transformCellValue(originCellValue, {\n aiTable,\n field: originField\n });\n const originPlainText = originFieldModel.cellFullText(originTransformValue, originField, references)?.join(',');\n\n const originData = {\n field: originField,\n cellValue: originCellValue\n };\n const toFieldValue = aiTable.context?.aiFieldConfig()?.fieldRenderers?.[field.type]?.toFieldValue;\n const newFieldValue = fieldModel.toFieldValue(originPlainText, field, originData, references, toFieldValue);\n\n fieldValueOptions.push({\n path: [record._id, field._id],\n value: newFieldValue\n });\n });\n\n actions.updateFieldValues(fieldValueOptions);\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 fields = aiTable.fields() || [];\n const maxFields = aiTable.context?.maxFields();\n if (maxFields && fields.length >= maxFields) {\n return;\n }\n const allFieldNames = 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 isDuplicate: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n },\n disabled: () => {\n const fieldLength = aiTable.fields()?.length || 0;\n const maxFields = aiTable.context?.maxFields();\n return maxFields ? fieldLength >= maxFields : false;\n }\n };\n};\n","import {\n AITable,\n AITableContextMenuItem,\n AITableGridI18nKey,\n AITableActions,\n getI18nTextByKey,\n isMac,\n writeToAITable,\n clearSelection\n} 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';\nimport { AddRecordOptions } from '@ai-table/utils';\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: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n clearSelection(aiTable);\n }\n };\n};\n\nexport const InsertUpwardRecords = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'insertUpwardRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.insertUpward),\n nameSuffix: getStateI18nTextByKey(aiTable, AITableStateI18nKey.upward),\n icon: 'table-insert-rows-top',\n isInputNumber: true,\n count: 1,\n exec: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService, count: any) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n const aiViewTable = aiTable as AIViewTable;\n const activeView = aiViewTable.viewsMap()[aiViewTable.activeViewId()];\n const addRecordOptions: AddRecordOptions = {\n beforeRecordId: selectedRecordIds[0],\n count\n };\n if (activeView?.settings?.groups?.length) {\n addRecordOptions.forGroupId = selectedRecordIds[0];\n }\n actions.addRecord(addRecordOptions);\n }\n };\n};\n\nexport const InsertDownwardRecords = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'insertDownwardRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.insertDownward),\n nameSuffix: getStateI18nTextByKey(aiTable, AITableStateI18nKey.downward),\n icon: 'table-insert-rows-down',\n count: 1,\n isInputNumber: true,\n exec: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService, count: any) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n const aiViewTable = aiTable as AIViewTable;\n const activeView = aiViewTable.viewsMap()[aiViewTable.activeViewId()];\n const addRecordOptions: AddRecordOptions = {\n afterRecordId: selectedRecordIds[0],\n count\n };\n if (activeView?.settings?.groups?.length) {\n addRecordOptions.forGroupId = selectedRecordIds[0];\n }\n actions.addRecord(addRecordOptions);\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: (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService) => {\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 (aiTable: AITable, targetName: string, position: { x: number; y: number }, notifyService: ThyNotifyService) => {\n writeToAITable(aiTable, actions).then((result) => {\n if (result.isPasteOverMaxRecords || result.isPasteOverMaxFields) {\n return;\n }\n if (!result.isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"@ai-table/utils\";\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","addView","removeView","_","updateFieldValues","addRecords"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"add-fields.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/add-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkD,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,
|
1
|
+
{"version":3,"file":"add-fields.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/field/add-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkD,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,QAoBvE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"group-calculator.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/group/group-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwD,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAmC,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAGlE,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAA+B;gBAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;IAQnF,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,EAAE;IAOpE,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,kBAAkB;IA+D1B,OAAO,CAAC,cAAc;
|
1
|
+
{"version":3,"file":"group-calculator.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/group/group-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwD,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAmC,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAGlE,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAA+B;gBAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;IAQnF,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,EAAE;IAOpE,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,kBAAkB;IA+D1B,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,sBAAsB;CAwBjC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"add-records.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/add-records.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,gBAAgB,
|
1
|
+
{"version":3,"file":"add-records.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/add-records.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,gBAAgB,EAAgD,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,gBAAgB,QA8D5G;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,UAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,uBAqBlG"}
|
package/utils/record/common.d.ts
CHANGED
@@ -15,4 +15,5 @@ export declare function getNewRecordsPosition(aiTable: AIViewTable, options?: {
|
|
15
15
|
count?: number;
|
16
16
|
}): Positions[];
|
17
17
|
export declare function getParentGroupValuesByGroupId(aiTable: AIViewTable, groupId: string): Record<string, any> | null;
|
18
|
+
export declare function getPrevRecordIdByAddGroupId(aiTable: AIViewTable, groupId: string): string | null;
|
18
19
|
//# sourceMappingURL=common.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/utils/record/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAkB/H;AAED,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAkB/H;AAED,wBAAgB,kCAAkC,CAC9C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA6ClD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,eA4BxI;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAS/G;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAkBhF"}
|
package/utils/view.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { AITableView, AITableViewFields, AITableViewRecords, Positions } from '@ai-table/utils';
|
2
2
|
import { AIViewTable } from '../types';
|
3
|
-
export declare function createPositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, index
|
3
|
+
export declare function createPositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, index?: number): Positions;
|
4
4
|
export declare function createMultiplePositions(views: AITableView[], activeId: string, data: AITableViewRecords | AITableViewFields, targetIndex?: number, count?: number, isInsertUpward?: boolean): Positions[];
|
5
5
|
export declare function getPositions(activeId: string, data: AITableViewRecords | AITableViewFields, targetIndex?: number, count?: number, isInsertBefore?: boolean): number[];
|
6
6
|
export declare function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index?: number): number;
|
package/utils/view.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAa,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM1H,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,KAAK,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/utils/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAa,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM1H,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,aAEnI;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,WAAW,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAC5C,WAAW,GAAE,MAAwB,EACrC,KAAK,GAAE,MAAU,EACjB,cAAc,GAAE,OAAe,eAoBlC;AAED,wBAAgB,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAC5C,WAAW,GAAE,MAAwB,EACrC,KAAK,GAAE,MAAU,EACjB,cAAc,GAAE,OAAe,YAmBlC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAE7G;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAOhG;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,eAiDvF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,QAsB5H;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,iBAE5C"}
|