@ai-table/state 0.0.49 → 0.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action/general.d.ts.map +1 -1
- package/action/record.d.ts.map +1 -1
- package/esm2022/action/general.mjs +14 -5
- package/esm2022/action/record.mjs +37 -15
- package/esm2022/utils/field/position-field.mjs +2 -2
- package/esm2022/utils/record/filter.mjs +12 -10
- package/esm2022/utils/record/sort.mjs +5 -2
- package/fesm2022/ai-table-state.mjs +63 -27
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/record/filter.d.ts +6 -3
- package/utils/record/filter.d.ts.map +1 -1
- package/utils/record/sort.d.ts.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n widths?: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIRecordFieldIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n originId?: string;\n isCopy?: boolean;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n return [index + indexOffset];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index];\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIRecordFieldIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.gridData().fields as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIRecordFieldIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(insertIndex, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, field, references, sortKey);\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, field, cellValue);\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, field: AITableViewField, cellValue: FieldValue) {\n return FieldModelMap[field.type].isMeetFilter(condition, cellValue);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType } from '@ai-table/grid';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath > 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.gridData().fields) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n aiTable.fields.set(finishDraft(fields));\n aiTable.records.set(finishDraft(records));\n aiTable.views.set(finishDraft(views));\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import { AIRecordFieldIdPath, AITableQueries, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord, path: NumberPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index], options.originId, options.isCopy);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.records() as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord, [addIndex + index]);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../types\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":";;;;;;;AAEA,MAAM,QAAQ,GAAiB,IAAI,OAAO,EAAE;AAC5C,MAAM,SAAS,GAAiB,IAAI,OAAO,EAAE;AAC7C,MAAM,OAAO,GAAiB,IAAI,OAAO,EAAE;AAO9B,MAAA,UAAU,GAAG;AACtB,IAAA,OAAO,EAAE,CAAC,OAAgB,KAAa;AACnC,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;KAC/B;AAED,IAAA,OAAO,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,QAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAErB,QAAA,EAAE,EAAE;QAEJ,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;;KAE/B;AAED,IAAA,QAAQ,EAAE,CAAC,OAAgB,KAAa;AACpC,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;KAChC;AAED,IAAA,QAAQ,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QACjD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC9C,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAEtB,QAAA,EAAE,EAAE;QAEJ,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;KAE9D;AAED,IAAA,MAAM,EAAE,CAAC,OAAgB,KAAa;AAClC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KAC9B;AAED,IAAA,MAAM,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAEpB,QAAA,EAAE,EAAE;QAEJ,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;;;;MClDpD,SAAS,CAAA;AAErB;MAEY,eAAe,CAAA;AAE3B;IAeW;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,YAAe;AACnB,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACb,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAG/B,EAAA,CAAA,CAAA;;IC9BW;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC;AACvC,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C;AAC3C,IAAA,UAAA,CAAA,wBAAA,CAAA,GAAA,2BAAoD;AACxD,CAAC,EAdW,UAAU,KAAV,UAAU,GAcrB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACR,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA;;ICRW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM;AACN,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACjB,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,GAQ3B,EAAA,CAAA,CAAA;AAEK,SAAU,aAAa,CAAC,IAAS,EAAA;AACnC,IAAA,MAAM,OAAO,GAAmB,IAAI,CAAC,CAAC,GAAG,EAAE;AAC3C,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE/B,IAAA,OAAO,OAAO;AAClB;AAEgB,SAAA,mBAAmB,CAAC,MAAyB,EAAE,MAAyB,EAAA;AACpF,IAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE;;IAEvC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACzD,IAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE;IACvC,MAAM,WAAW,GAAiB,EAAE;AACpC,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAuB,KAAI;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEvC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,KAAK,GAAG,IAAI;;AAEhB,QAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,KAAC,CAAC;AACF,IAAA,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC;;AAExC,IAAA,MAAM,OAAO,GAAsB,IAAI,CAAC,CAAC,KAAK,EAAgB;IAC9D,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AACzD,IAAA,OAAO,OAAO;AAClB;AAEM,SAAU,uBAAuB,CACnC,IAA4C,EAC5C,QAAgB,EAChB,YAAoB,EACpB,WAAA,GAAsB,CAAC,EAAA;IAEvB,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,OAAO,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;;QAEnD,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;AACzG,KAAC,CAAC;AACF,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,QAAA,KAAK,GAAG,IAAI,CAAC,MAAM;;AAEvB,IAAA,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;AAChC;AAEM,SAAU,sBAAsB,CAAC,IAAyB,EAAA;AAC5D,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAa;AACtE;AAEgB,SAAA,iBAAiB,CAAC,OAAkC,EAAE,WAAmB,EAAA;IACrF,OAAO,OAAO,IAAK,OAAqC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClG;AAEgB,SAAA,eAAe,CAAC,OAAkC,EAAE,WAAmB,EAAA;IACnF,OAAO,OAAO,IAAK,OAAqC,CAAC,GAAG,CAAC,WAAW,CAAC;AAC7E;AAEgB,SAAA,mBAAmB,CAAC,MAA+B,EAAE,KAAa,EAAA;AAC9E,IAAA,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD;AAEgB,SAAA,oBAAoB,CAAC,aAAwC,EAAE,QAAgB,EAAA;AAC3F,IAAA,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC;AAC9D,QAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;YAC7B,WAAW,GAAG,KAAK;YACnB;;;AAGR,IAAA,OAAO,WAAW;AACtB;AAEgB,SAAA,sBAAsB,CAAC,WAAoC,EAAE,EAAU,EAAA;AACnF,IAAA,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC;AACxD,QAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;YACjB,SAAS,GAAG,KAAK;YACjB;;;AAGR,IAAA,OAAO,SAAS;AACpB;AAEa,MAAA,oBAAoB,GAAG,CAAC,MAAyB,KAAuB;IACjF,OAAO;AACH,QAAA,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,QAAQ;AACf,QAAA,MAAM,CAAC,UAAU;AACjB,QAAA,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,WAAW,CAAC;AACnB,QAAA,MAAM,CAAC,UAAU;AACjB,QAAA,MAAM,CAAC;KACV;AACL;AAEa,MAAA,oBAAoB,GAAG,CAAC,MAAyB,KAAuB;AACjF,IAAA,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;AACnC;MAEa,4BAA4B,GAAG,CAAC,iBAAoC,EAAE,MAAyB,KAAI;AAC5G,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC;IAC/C,MAAM,WAAW,GAAwB,EAAE;IAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;QAC7B,WAAW,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAChD,KAAC,CAAC;AACF,IAAA,OAAO,WAAW;AACtB;AAEa,MAAA,qCAAqC,GAAG,CAAC,iBAAoC,KAAqB;IAC3G,OAAO;AACH,QAAA,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACzD,QAAA,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACzD,QAAA,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACzD,QAAA,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,SAAS;KAC3D;AACL;AAEa,MAAA,wBAAwB,GAAG,CAAC,iBAAoC,KAAY;IACrF,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACxD;AAEa,MAAA,6BAA6B,GAAG,CAAC,iBAAoC,KAAY;AAC1F,IAAA,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtD;AAEa,MAAA,4BAA4B,GAAG,CAAC,qBAAmC,KAAY;IACxF,OAAO,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AAChE;AAEa,MAAA,+BAA+B,GAAG,CAAC,iBAAoC,KAAe;AAC/F,IAAA,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACxD;AAEa,MAAA,+BAA+B,GAAG,CAAC,iBAAoC,KAAI;IACpF,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAiB;IAChE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACjE,IAAA,OAAO,SAAS;AACpB;MAEaA,oBAAkB,GAAG,CAAC,iBAAoC,EAAE,YAAuB,KAAI;IAChG,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAiB;AAChE,IAAA,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;IAClD,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC;AACtE;MAEa,oBAAoB,GAAG,CAAC,iBAAoC,EAAE,IAA8B,KAAI;IACzG,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAiB;IAChE,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;AACrD,IAAA,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1F;;AClLO,MAAM,2BAA2B,GAAG;;MCa9B,gBAAgB,GAAG,CAAC,SAAoB,GAAA,2BAA2B,KAAI;AAChF,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE;IACvB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAM,SAAS,CAAC;AAC7C,IAAA,OAAO,UAAU;AACrB;AAEa,MAAA,mBAAmB,GAAG,CAAC,UAAsB,KAAI;AAC1D,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE;AAChC,IAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAuB,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;AACnF,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,OAAO;QACH,OAAO;QACP,MAAM;QACN;KACH;AACL;MAEa,mBAAmB,GAAG,CAC/B,GAAU,EACV,eAIC,KACD;IACA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAM,2BAA2B,CAAC;AAC/D,IAAA,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC;AACzC,IAAA,OAAO,UAAU;AACrB;AAEgB,SAAA,YAAY,CACxB,UAAsB,EACtB,IAIC,EAAA;AAED,IAAA,UAAU,CAAC,GAAI,CAAC,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE;AACrC,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACzD,QAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC;AACzC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,KAAK,EAAgB;AACpD,QAAA,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAC3C,QAAA,gBAAgB,CAAC,MAAM,CACnB,CAAC,EACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YACxB,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;SAClD,CAAC,CACL;AACD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE;AACrC,QAAA,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;AACxC,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC5D,KAAC,CAAC;AACN;MAEa,sBAAsB,GAAG,CAAC,eAAuC,EAAE,MAAyB,KAAwB;AAC7H,IAAA,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,MAA4B,KAAI;AACxD,QAAA,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,MAAM;QACrD,OAAO;AACH,YAAA,GAAG,EAAE,wBAAwB,CAAC,iBAAiB,CAAC;AAChD,YAAA,QAAQ,EAAE,6BAA6B,CAAC,iBAAiB,CAAC;YAC1D,GAAG,qCAAqC,CAAC,iBAAiB,CAAC;AAC3D,YAAA,SAAS,EAAE,+BAA+B,CAAC,iBAAiB,CAAC;AAC7D,YAAA,MAAM,EAAE,4BAA4B,CAAC,iBAAiB,EAAE,MAAM;SACjE;AACL,KAAC,CAAC;AACN;;ACvDwB,SAAA,mBAAmB,CAAC,OAAoB,EAAE,UAAsB,EAAE,KAAoB,EAAA;IAC1G,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACzD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrD,MAAM,OAAO,GAAoB,EAAE;AACnC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE;IAE3C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAClC,QAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;;AAG/B,QAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAA,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;gBAC3B,IAAI,gBAAgB,EAAE;oBAClB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;oBAC1C,IAAI,UAAU,EAAE;wBACZ,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,UAAU,CAAC,UAAU;AAC3B,4BAAA,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG;AACxB,yBAAA,CAAC;;;qBAEH;AACH,oBAAA,MAAM,IAAI,GAAG,kBAAkB,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,WAAW;oBAClF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AAC3C,oBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,wBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;4BACvB,OAAO,CAAC,IAAI,CAAC;gCACT,IAAI;gCACJ;AACH,6BAAA,CAAC;AACN,yBAAC,CAAC;;;;;AAMlB,QAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACvB,IAAI,kBAAkB,EAAE;AACpB,oBAAA,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;wBAC3B,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAkB,KAAI;AACrC,4BAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,4BAAA,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IAAI;AACnD,4BAAA,MAAM,SAAS,GAAG,+BAA+B,CAAC,iBAAiB,CAAC;AACpE,4BAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC;AACxC,4BAAA,MAAM,IAAI,GAAG,uBAAuB,CAChC,OAAO,CAAC,OAAO,EAAwB,EACvC,QAAQ,EACR,YAAY,CACD;4BAEf,OAAO,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,UAAU,CAAC,SAAS;AAC1B,gCAAA,IAAI,EAAE,IAAI;AACV,gCAAA,MAAM,EAAE;AACJ,oCAAA,GAAG,EAAE,wBAAwB,CAAC,iBAAiB,CAAC;AAChD,oCAAA,QAAQ,EAAE,6BAA6B,CAAC,iBAAiB,CAAC;oCAC1D,GAAG,qCAAqC,CAAC,iBAAiB,CAAC;AAC3D,oCAAA,SAAS,EAAE,+BAA+B,CAAC,iBAAiB,CAAC;oCAC7D,MAAM,EAAE,4BAA4B,CAAC,iBAAiB,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,MAA2B;AACzG;AACJ,6BAAA,CAAC;AACN,yBAAC,CAAC;;yBACC;AACH,wBAAA,IAAI;4BACA,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAA+B;4BAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA6B;4BACzE,IAAI,iBAAiB,GAAG,CAAC;4BACzB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAS,EAAE,KAAa,KAAI;AAC3C,gCAAA,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAW;AAC3C,gCAAA,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK;gCACjC,MAAM,MAAM,GAAI,OAAO,CAAC,OAAO,EAAyB,CAAC,WAAW,CAAC;AACrE,gCAAA,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;AACpC,oCAAA,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;wCAClC,MAAM,YAAY,GAAc,EAAE;AAClC,wCAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;4CACpB,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;;wCAEjC,OAAO,CAAC,IAAI,CAAC;4CACT,IAAI,EAAE,UAAU,CAAC,kBAAkB;AACnC,4CAAA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AAClB,4CAAA,SAAS,EAAE;AACd,yCAAA,CAAC;;;AAEC,yCAAA,IAAI,oBAAoB,CAAC,UAAU,GAAG,iBAAiB,CAAC,EAAE;AAC7D,wCAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;wCACrF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,qCAAqC,CAAC,iBAAiB,CAAC;wCAC3F,OAAO,CAAC,IAAI,CAAC;4CACT,IAAI,EAAE,UAAU,CAAC,sBAAsB;AACvC,4CAAA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AAClB,4CAAA,WAAW,EAAE,EAAE,UAAU,EAAE,UAAU;AACxC,yCAAA,CAAC;;AAEN,oCAAA,iBAAiB,EAAE;;qCAChB;oCACH,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC;oCAC9D,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC;AAC7D,oCAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAwB;oCACvD,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;;AAE9D,oCAAA,IAAI,UAAU,KAAK,IAAI,EAAE;wCACrB,OAAO,CAAC,IAAI,CAAC;4CACT,IAAI,EAAE,UAAU,CAAC,gBAAgB;4CACjC,IAAI;4CACJ,UAAU;AACV,4CAAA,aAAa,EAAE;AAClB,yCAAA,CAAC;;;AAGd,6BAAC,CAAC;;AACJ,wBAAA,OAAO,KAAK,EAAE;;;gBAGxB,IAAI,iBAAiB,EAAE;oBACnB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAgB,EAAE,KAAK,KAAI;AAC1C,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;wBAC1B,MAAM,IAAI,GAAG,uBAAuB,CAChC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAA2B,EAC9C,IAAI,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAC/B,YAAY,EACZ,KAAK,CACM;wBACf,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,UAAU,CAAC,QAAQ;4BACzB,IAAI;AACJ,4BAAA,KAAK,EAAE;AACV,yBAAA,CAAC;AACN,qBAAC,CAAC;;gBAEN,IAAI,gBAAgB,EAAE;oBAClB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAgB,EAAE,KAAK,KAAI;AAC1C,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;wBAC1B,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,UAAU,CAAC,OAAO;AACxB,4BAAA,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;AACN,qBAAC,CAAC;;;;AAIlB,KAAC,CAAC;AACF,IAAA,OAAO,OAAO;AAClB;AAEM,SAAU,aAAa,CAAC,UAAoB,EAAA;AAC9C,IAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAClC;AAEM,SAAU,sBAAsB,CAAC,UAAoB,EAAA;AACvD,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,IAAI;;AAEf,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,sBAAsB,CAAC,UAAoB,EAAA;AACvD,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,IAAI;;AAEf,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,oBAAoB,CAAC,UAAkB,EAAA;AACnD,IAAA,OAAO,UAAU,KAAK,gBAAgB,CAAC,SAAS;AACpD;AAEM,SAAU,oBAAoB,CAAC,UAAkB,EAAA;AACnD,IAAA,OAAO,UAAU,KAAK,gBAAgB,CAAC,SAAS;AACpD;AAEgB,SAAA,YAAY,CAAC,KAAoB,EAAE,IAAsD,EAAA;IACrG,MAAM,GAAG,GAAe,EAAE;IAC1B,IAAI,CAAC,IAAI,EAAE;AACP,QAAA,OAAO,GAAG;;IAGd,CAAC,CAAC,qBAAqB,CACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAAC,SAAS;;IAE3B,CAAC,IAAI,KAAI;QACL,IAAI,IAAI,YAAY,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACxC,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;gBAC7D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAY,CAAC;;AAEjD,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,YAAY,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACzC,gBAAA,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACjC,oBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;;;;AAI7C,KAAC,CACJ;AACD,IAAA,OAAO,GAAG;AACd;;AC5NwB,SAAA,iBAAiB,CAAC,OAAoB,EAAE,UAAsB,EAAE,KAA2B,EAAA;IAC/G,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAEpD,IAAA,IAAI,eAAe,IAAI,iBAAiB,EAAE;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAa;AACjE,QAAA,IAAI,aAAa;AACjB,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAoB;QACpD,IAAI,iBAAiB,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAmB;YACzE,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,YAAA,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;QAGtG,IAAI,eAAe,EAAE;YACjB,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC;;QAG/C,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,UAAU,GAAuE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/H,MAAM,aAAa,GAAwC,EAAE;YAC7D,MAAM,UAAU,GAAwC,EAAE;AAE1D,YAAA,MAAM,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAI;gBAC5D,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC,gBAAA,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,GAAG,KAAK,YAAY,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;AAC5G,aAAC,CAAC;YAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;gBAChC,MAAM,CAAC,GAAG,GAAyC;AACnD,gBAAA,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK;;YAG5B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAG,aAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;YAChF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE;gBACnC,MAAM,CAAC,GAAG,GAAyC;AACnD,gBAAA,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK;;AAEzB,YAAA,MAAM,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO;YACzE,OAAO;AACH,gBAAA;oBACI,IAAI;AACJ,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,aAAa,EAAE,aAAa;AAC5B,oBAAA,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG;AAC3B;aACe;;;AAG5B,IAAA,OAAO,EAAE;AACb;;SCjDgB,iBAAiB,CAAC,OAAoB,EAAE,UAAsB,EAAE,KAAoB,EAAA;AAChG,IAAA,IAAI,KAAK,YAAY,CAAC,CAAC,WAAW,EAAE;QAChC,OAAO,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;;AAE1D,IAAA,IAAI,KAAK,YAAY,CAAC,CAAC,SAAS,EAAE;QAC9B,OAAO,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;;AAExD,IAAA,OAAO,EAAE;AACb;SAEgB,WAAW,CAAC,OAAoB,EAAE,UAAsB,EAAE,MAAuB,EAAA;IAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACjB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;AAC1E,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;KACtB,CAAC,CACL;AACL;SAEgB,cAAc,CAAC,OAAoB,EAAE,UAAsB,EAAE,MAAuB,EAAA;AAChG,IAAA,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC5B,QAAA,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;;SACrC;AACH,QAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAK;AAC9B,YAAA,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;AAC5C,SAAC,CAAC;;AAEV;;AC3BwB,SAAAC,kBAAgB,CAAC,OAAgB,EAAE,UAAsB,EAAE,MAA8B,EAAA;IAC7G,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE;AAC9C,IAAA,IAAI,aAAa,IAAI,YAAY,EAAE;AAC/B,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,YAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClG,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;YACrC,MAAM,MAAM,GAAG,aAAa,EAAE,GAAG,CAAC,WAAW,CAAqB;YAClE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAA,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;YAC9B,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;;AAI9D,IAAA,OAAO,UAAU;AACrB;;ACfwB,SAAA,OAAO,CAAC,OAAgB,EAAE,UAAsB,EAAE,MAAsC,EAAA;AAC5G,IAAA,IAAI,WAAW;IACf,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,EAAE;AACrC,QAAA,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA6B;;IAGtE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE;AACpC,QAAA,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAA6B;;IAGrE,IAAI,WAAW,EAAE;AACb,QAAA,IAAI,SAAS,GAAG,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC;AAC7E,QAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;YAChB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAmB;AACzD,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC1D,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;qBACb;AACH,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAE5B,aAAC,CAAC;AACF,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAI;gBAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3C,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAExB,aAAC,CAAC;;;AAGV,IAAA,OAAO,UAAU;AACrB;;ACTwB,SAAA,OAAO,CAC3B,OAAgB,EAChB,UAAsB,EACtB,MAA2G,EAAA;IAE3G,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAA+B;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA6B;AACnE,IAAA,QAAQ,MAAM,CAAC,IAAI;QACf,KAAK,UAAU,CAAC,SAAS;AACrB,YAAA,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAA2B,EAAE,OAAO,CAAC,MAAM,EAAuB,CAAC,CAAC,CAAC;YACzH;QACJ,KAAK,UAAU,CAAC,OAAO;AACnB,YAAA,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD;QACJ,KAAK,UAAU,CAAC,kBAAkB;YAC9B,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACvC,gBAAA,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,CAAC;AACzD,gBAAA,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE;AACrC,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE;AAChC,oBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACvE,wBAAA,OAAO,YAAY,CAAC,GAAG,CAAC;;yBACrB;wBACH,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;;;AAGjD,gBAAAD,oBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC;;YAE5C;QACJ,KAAK,UAAU,CAAC,sBAAsB;YAClC,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACvC,gBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE;AAChE,oBAAA,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAyD,CAAC;;;YAGtG;QACJ,KAAK,UAAU,CAAC,QAAQ;AACpB,YAAA,IAAI,MAAM,IAAI,OAAO,EAAE;AACnB,gBAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM;AAC9B,gBAAA,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;AAC1B,gBAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC9C,gBAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;oBACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,oBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;AAC1F,oBAAA,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC3D,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC;;;YAG9D;;AAGR,IAAA,OAAO,UAAU;AACrB;;ACtEwB,SAAA,UAAU,CAAC,OAAgB,EAAE,UAAsB,EAAE,MAAiE,EAAA;IAC1I,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA4B;IAClE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAA8B;IACtE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAA6B;AAEjE,IAAA,QAAQ,MAAM,CAAC,IAAI;QACf,KAAK,UAAU,CAAC,YAAY;YACxB,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,gBAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AAClB,oBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;;;YAGnC;QACJ,KAAK,UAAU,CAAC,UAAU;YACtB,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,oBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;;;YAG/B;QACJ,KAAK,UAAU,CAAC,WAAW;AACvB,YAAA,IAAI,MAAM,IAAI,OAAO,EAAE;AACnB,gBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,gBAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,oBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACzB,oBAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;wBACvB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;;;;YAI3C;;AAGR,IAAA,OAAO,UAAU;AACrB;;ACpCa,MAAA,aAAa,GAA+B;AACrD,IAAA,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO;AAC/B,IAAA,CAAC,UAAU,CAAC,gBAAgB,GAAGC,kBAAgB;AAC/C,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG,UAAU;AACrC,IAAA,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAO;AAC9B,IAAA,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAO;AAC9B,IAAA,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU;AACpC,IAAA,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAA,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAA,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU;AACnC,IAAA,CAAC,UAAU,CAAC,kBAAkB,GAAG,OAAO;AACxC,IAAA,CAAC,UAAU,CAAC,sBAAsB,GAAG;;SAGzB,cAAc,CAAC,OAAgB,EAAE,UAAsB,EAAE,OAAwB,EAAA;AAC7F,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,UAAU,CAAC,GAAI,CAAC,QAAQ,CAAC,MAAK;AAC1B,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACvB,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAA6B;gBACpE,IAAI,KAAK,EAAE;oBACP,OAAO,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;;AAE7C,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;SACL,EAAE,OAAO,CAAC;;AAGf,IAAA,OAAO,UAAU;AACrB;;ICvCY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC3C,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAVW,mBAAmB,KAAnB,mBAAmB,GAU9B,EAAA,CAAA,CAAA;AAED,MAAM,eAAe,GAAG;AACpB,IAAA,CAAC,mBAAmB,CAAC,SAAS,GAAG,KAAK;AACtC,IAAA,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK;AAC1C,IAAA,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI;AAChC,IAAA,CAAC,mBAAmB,CAAC,UAAU,GAAG,IAAI;AACtC,IAAA,CAAC,mBAAmB,CAAC,KAAK,GAAG,IAAI;AACjC,IAAA,CAAC,mBAAmB,CAAC,mBAAmB,GAAG,aAAa;AACxD,IAAA,CAAC,mBAAmB,CAAC,SAAS,GAAG,MAAM;AACvC,IAAA,CAAC,mBAAmB,CAAC,SAAS,GAAG,KAAK;AACtC,IAAA,CAAC,mBAAmB,CAAC,WAAW,GAAG;CACtC;AAEY,MAAA,uBAAuB,GAAG,CAAC,GAAwB,KAAY;AACxE,IAAA,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG;AACtC;MAEa,qBAAqB,GAAG,CAAC,OAAgB,EAAE,GAAiC,KAAY;AACjG,IAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAChD,IAAI,UAAU,EAAE;AACZ,YAAA,OAAO,UAAU;;;AAGzB,IAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,GAA0B,CAAC;AACvE,IAAA,OAAO,WAAW;AACtB;;AClCgB,SAAA,WAAW,CAAC,IAAU,EAAE,OAAa,EAAA;IACjD,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF;AAEgB,SAAA,kBAAkB,CAAC,IAA4C,EAAE,UAAuB,EAAA;AACpG,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IAC3E,IAAI,YAAY,EAAE;AACd,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;;AAE9F,IAAA,OAAO,IAAI;AACf;SAEgB,gBAAgB,CAAC,OAAgB,EAAE,UAAoB,EAAE,IAAY,EAAA;IACjF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC;AAC/E,IAAA,IAAI,OAAO,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,QAAQ,EAAE;IACnC,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,GAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,KAAK,EAAE;AACxC,QAAA,KAAK,EAAE;;AAEX,IAAA,OAAO,OAAO;AAClB;;ACtBM,SAAU,cAAc,CAC1B,OAAgB,EAChB,OAA2B,EAC3B,UAAuB,EACvB,WAAuD,EAAA;AAEvD,IAAA,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;AAC7D,QAAA,OAAO,OAAO;;IAElB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,QAAQ;AACnD,IAAA,IAAI,YAAY,IAAI,KAAK,EAAE,MAAM,EAAE;QAC/B,OAAO,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;;AAE3E,IAAA,OAAO,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC;AAClD;AAEM,SAAU,qBAAqB,CACjC,OAAgB,EAChB,OAA2B,EAC3B,UAAuB,EACvB,WAAuD,EAAA;AAEvD,IAAA,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC;IAChC,IAAI,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,KAAI;AAC/B,YAAA,OAAO,UAAU,CAAC,QAAS,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;gBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C,gBAAA,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,EAAE;AACrB,oBAAA,OAAO,GAAG;;gBAEd,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC7C,MAAM,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;AAEzC,gBAAA,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/E,gBAAA,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAQ,CAAC,UAAU,EAAE;AAChD,gBAAA,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC;AACnF,gBAAA,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS;aAC9B,EAAE,CAAC,CAAC;AACT,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;AAEtB,IAAA,OAAO,WAAW;AACtB;;ACzBM,SAAU,kBAAkB,CAAC,OAAoB,EAAE,OAA2B,EAAE,MAAyB,EAAE,UAAuB,EAAA;IACpI,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE;IACnE,IAAI,CAAC,UAAU,EAAE;AACb,QAAA,OAAO,OAAO;;AAElB,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3E,IAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC3B,QAAA,OAAO,OAAO;;AAElB,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE;AACrD,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC7B,QAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACzF,YAAA,OAAO,IAAI;;AAEf,QAAA,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAChG,KAAC,CAAC;AACN;AAEA,SAAS,eAAe,CAAC,MAAyB,EAAE,MAAqB,EAAE,gBAAyC,EAAA;IAChH,IAAI,CAAC,MAAM,EAAE;AACT,QAAA,OAAO,KAAK;;AAEhB,IAAA,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE;AAC/B,QAAA,OAAO,IAAI;;AAEf,IAAA,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,gBAAgB;AAC1D,IAAA,IAAI,iBAAiB,KAAK,oBAAoB,CAAC,GAAG,EAAE;AAChD,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;;IAEzF,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,KAAK,oBAAoB,CAAC,EAAE,EAAE;AACrE,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;;AAExF,IAAA,OAAO,KAAK;AAChB;AAEA,SAAS,kBAAkB,CAAC,MAAyB,EAAE,MAAqB,EAAE,SAAiC,EAAA;AAC3G,IAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;AAEtE,IAAA,IAAI;QACA,OAAO,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;;IACvD,OAAO,KAAK,EAAE;AACZ,QAAA,OAAO,KAAK;;AAEpB;SAEgB,QAAQ,CAAC,SAAiC,EAAE,KAAuB,EAAE,SAAqB,EAAA;AACtG,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;AACvE;AAEM,SAAU,4BAA4B,CACxC,YAAwC,EACxC,UAAoC,EACpC,MAAyB,EACzB,gBAAuC,EAAA;IAEvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7F,IAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB;AACxD,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;QAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAC7C,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9D,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,CAAC,CAAC;AAC1D,KAAC,CAAC;AACF,IAAA,IAAI,gBAAgB,KAAK,oBAAoB,CAAC,GAAG,EAAE;AAC/C,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAC7B,YAAA,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;AACjE,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAE;AAC1D,gBAAA,MAAM,6BAA6B,GAC/B,CAAC,CAAE,KAAK,CAAC,QAA2B,EAAE,WAAW,IAAI,SAAS,CAAC,SAAS,KAAK,sBAAsB,CAAC,EAAE;AACrG,oBAAA,KAAK,EAAE,QAA2B,EAAE,WAAW;AACpD,gBAAA,IACI,CAAC,sBAAsB,CAAC,EAAE,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;AACpF,oBAAA,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AACxE,oBAAA,6BAA6B,EAC/B;oBACE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK;;AAGtD,gBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,gBAAgB,CAAC,IAAI,IAAI,SAAS,CAAC,SAAS,KAAK,sBAAsB,CAAC,EAAE,EAAE;AAC5F,oBAAA,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;wBAC/B,SAAS,EAAE,SAAS,CAAC;qBACxB;;AAGL,gBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,sBAAsB,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,EAAE;oBACjG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK;;AAGtD,gBAAA,IACI,SAAS,CAAC,SAAS,KAAK,sBAAsB,CAAC,EAAE;oBACjD,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EACnG;oBACE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK;;;AAG9D,SAAC,CAAC;;AAEN,IAAA,OAAO,YAAY;AACvB;AAEA,SAAS,cAAc,CAAC,MAAyB,EAAE,MAAqB,EAAE,SAAiC,EAAA;AACvG,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,QAAQ,CAAC;IACpE,IAAI,SAAS,GAAG,IAAI;AACpB,IAAA,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC/E,SAAS,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAwB,CAAC,EAAE;;aAC9D;AACH,YAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAwB,CAAC;;;SAEnD;QACH,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;IAGjD,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACjH,QAAA,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC;;IAG5F,OAAO;QACH,KAAK;QACL;KACH;AACL;;SC1IgB,aAAa,CAAC,OAAgB,EAAE,MAAyB,EAAE,UAAuB,EAAA;AAC9F,IAAA,OAAO,kBAAkB,CAAC,MAA2B,EAAE,UAAU,CAAsB;AAC3F;;ACAM,SAAU,kBAAkB,CAC9B,OAAoB,EACpB,OAA2B,EAC3B,MAAyB,EACzB,UAAuB,EACvB,WAAuD,EAAA;AAEvD,IAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;IAChF,OAAO,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC;AAC5E;SAEgB,iBAAiB,CAAC,OAAoB,EAAE,MAAyB,EAAE,UAAuB,EAAA;IACtG,OAAO,aAAa,CAAC,OAAO,EAAE,MAA2B,EAAE,UAAU,CAAC;AAC1E;;AChBM,SAAU,sBAAsB,CAAC,MAAc,EAAE,MAAqB,EAAE,IAAgB,EAAE,OAAmB,EAAA;AAC/G,IAAA,MAAM,cAAc,GAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAsB,CAAC,SAAS,CAAC,MAAM,CAAC;IACjF,IAAI,WAAW,GAAG,CAAC;IACnB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/B,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;YACxC,MAAM,kBAAkB,GAAI,eAAoC,CAAC,SAAS,CAAC,MAAM,CAAC;YAClF,WAAW,GAAG,CAAC,cAAc,GAAG,kBAAkB,IAAI,CAAC;;aACpD;AACH,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;YAC5B,WAAW,GAAI,UAA+B,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG;;;SAEvE;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/B,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE;AAC1B,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;YACxC,MAAM,kBAAkB,GAAI,eAAoC,CAAC,SAAS,CAAC,MAAM,CAAC;YAClF,WAAW,GAAG,CAAC,cAAc,GAAG,kBAAkB,IAAI,CAAC;;aACpD;YACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAI,SAA8B,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1E,WAAW,GAAG,CAAC,cAAc,GAAG,YAAY,IAAI,CAAC;;;AAGzD,IAAA,OAAO,WAAW;AACtB;AAEgB,SAAA,gBAAgB,CAAC,MAA0B,EAAE,UAAuB,EAAA;IAChF,MAAM,aAAa,GAAyB,EAAE;AAC9C,IAAA,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,QAAA,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;AAC7D,KAAC,CAAC;AACF,IAAA,OAAO,aAAa;AACxB;;AC/BM,SAAU,QAAQ,CAAC,OAAoB,EAAE,KAAmB,EAAE,IAAgB,EAAE,QAAiB,EAAE,MAAgB,EAAA;AACrH,IAAA,MAAM,SAAS,GAAmB;QAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,KAAK;QACL,IAAI;QACJ,QAAQ;QACR;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;SAEgB,SAAS,CAAC,OAAoB,EAAE,IAAgB,EAAE,OAAmB,EAAA;AACjF,IAAA,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QAC5B;;IAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;IACtF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAqB;AACvD,IAAA,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;AAC/E,IAAA,QAAQ,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,UAAW,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAClH;SAEgB,aAAa,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAa,EAAA;IAC3E,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAqB;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;AACtF,IAAA,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAW,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7F;AAEgB,SAAA,WAAW,CAAC,OAAoB,EAAE,IAAY,EAAA;AAC1D,IAAA,MAAM,SAAS,GAAsB;QACjC,IAAI,EAAE,UAAU,CAAC,WAAW;QAC5B;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;SAEgB,QAAQ,CAAgD,OAAoB,EAAE,KAAiB,EAAE,IAAY,EAAA;IACzH,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAM;IACzD,IAAI,KAAK,EAAE;QACP,MAAM,UAAU,GAAe,EAAE;QACjC,MAAM,aAAa,GAAe,EAAE;AACpC,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,MAAM,CAAC,GAAG,GAAc;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,gBAAA,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBACzB,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAQ;;AAEnC,gBAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC3B,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAQ;;;;AAK9C,QAAA,MAAM,SAAS,GAAmB;YAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,UAAU;YACV,aAAa;YACb;SACH;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;;AAEhC;AAEO,MAAM,YAAY,GAAG;IACxB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR;CACH;;AC9DD,MAAM,KAAK,GAAG,CAAC,OAAoB,EAAE,OAA2B,EAAE,MAAqB,EAAE,KAAoB,EAAE,MAAqB,KAAI;AACpI,IAAA,QAAQ,MAAM,CAAC,IAAI;AACf,QAAA,KAAK,UAAU,CAAC,gBAAgB,EAAE;YAC9B,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI;AACvC,YAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;gBACrB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;AAChF,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,aAAa;;YAE/D;;AAEJ,QAAA,KAAK,UAAU,CAAC,sBAAsB,EAAE;AACpC,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI;AAC9B,YAAA,IAAI,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;gBAChC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;AAChF,gBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE;oBAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU;;AAEnE,gBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE;oBAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU;;;YAGvE;;AAEJ,QAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACvB,YAAA,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI;AACjC,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAE,MAAM,CAAC,MAA4B,CAAC,SAAS,EAAE;oBACjD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;oBACtF,IAAI,KAAK,GAAG,WAAW;AACvB,oBAAA,IAAI,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAClC,wBAAA,KAAK,GAAG,OAAO,CAAC,MAAM;;oBAEzB,MAAM,CAAC,MAA4B,CAAC,SAAS,GAAG,sBAAsB,CACnE,OAAO,CAAC,KAAK,EAAE,EACf,OAAO,CAAC,YAAY,EAAE,EACtB,OAAO,CAAC,OAAO,EAAwB,EACvC,KAAK,CACR;;gBAEL,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,MAA2B,CAAC;;YAEtE;;AAEJ,QAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI;AAChC,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;AAC7B,gBAAA,IAAI,CAAE,QAA6B,CAAC,SAAS,EAAE;AAC1C,oBAAA,QAA6B,CAAC,SAAS,GAAG,sBAAsB,CAC7D,OAAO,CAAC,KAAK,EAAE,EACf,OAAO,CAAC,YAAY,EAAE,EACtB,OAAO,CAAC,QAAQ,EAAE,CAAC,MAA2B,EAC9C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CACjB;;gBAEL,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,QAA4B,CAAC;AAC1D,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACrB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5G,iBAAC,CAAC;;YAEN;;AAEJ,QAAA,KAAK,UAAU,CAAC,UAAU,EAAE;YACxB,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1C;;YAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,YAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;YAC5C;;AAEJ,QAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,YAAA,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI;YAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;AAC7E,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,gBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,iBAAC,CAAC;;YAEN;;AAEJ,QAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC1B,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI;YAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;AAChF,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AAClB,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;;YAElC;;AAGJ,QAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAiB;YAChF,IAAI,KAAK,EAAE;AACP,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE;oBACpC,MAAM,CAAC,GAAG,GAAyB;oBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,wBAAA,OAAO,KAAK,CAAC,CAAC,CAAC;;yBACZ;AACF,wBAAA,KAAK,CAAC,CAAC,CAAS,GAAG,KAAK;;;;AAKjC,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3C,wBAAA,OAAO,KAAK,CAAqB,GAAG,CAAC;;;;YAIjD;;AAEJ,QAAA,KAAK,UAAU,CAAC,OAAO,EAAE;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAgB;YAC7E,IAAI,IAAI,EAAE;AACN,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE;oBACpC,MAAM,CAAC,GAAG,GAAwB;oBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,wBAAA,OAAO,IAAI,CAAC,CAAC,CAAC;;yBACX;AACF,wBAAA,IAAI,CAAC,CAAC,CAAS,GAAG,KAAK;;;;AAKhC,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3C,wBAAA,OAAO,IAAI,CAAoB,GAAG,CAAC;;;;YAI/C;;AAEJ,QAAA,KAAK,UAAU,CAAC,OAAO,EAAE;AACrB,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI;AAC/B,YAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;gBAChB,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;;YAE3C;;AAEJ,QAAA,KAAK,UAAU,CAAC,UAAU,EAAE;AACxB,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI;AAC5B,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC;AAChE,YAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;;YAE9B;;AAEJ,QAAA,KAAK,UAAU,CAAC,kBAAkB,EAAE;AAChC,YAAA,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE;gBACR,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;AAC5C,gBAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,oBAAA,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACzD,wBAAA,OAAO,YAAY,CAAC,GAAG,CAAC;;yBACrB;wBACH,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAW;;;AAGpD,gBAAA,MAAM,CAAC,SAAS,GAAG,YAAY;;YAEnC;;;IAGR,OAAO;QACH,OAAO;QACP,MAAM;QACN;KACH;AACL,CAAC;AAEM,MAAM,cAAc,GAAG;IAC1B,SAAS,CAAC,OAAoB,EAAE,MAAqB,EAAA;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAuB;QACpE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAsB;QAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;CAE5C;;SCpMe,kBAAkB,CAAC,OAAoB,EAAE,SAAsC,EAAE,IAAY,EAAA;AACzG,IAAA,MAAM,SAAS,GAA4B;QACvC,IAAI,EAAE,UAAU,CAAC,kBAAkB;QACnC,SAAS;QACT;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;AAEO,MAAM,gBAAgB,GAAG;IAC5B;CACH;;SCHeA,kBAAgB,CAAC,OAAoB,EAAE,KAAU,EAAE,IAAyB,EAAA;IACxF,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5D,IAAA,MAAM,SAAS,GAA2B;QACtC,IAAI,EAAE,UAAU,CAAC,gBAAgB;AACjC,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,aAAa,EAAE,KAAK;QACpB;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;SAEgB,sBAAsB,CAAC,OAAoB,EAAE,IAAY,EAAE,WAAqC,EAAA;AAC5G,IAAA,MAAM,SAAS,GAA2B;QACtC,IAAI,EAAE,UAAU,CAAC,sBAAsB;QACvC,WAAW;QACX;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;SAEgB,SAAS,CAAC,OAAoB,EAAE,MAAqB,EAAE,IAAgB,EAAA;AACnF,IAAA,MAAM,SAAS,GAAoB;QAC/B,IAAI,EAAE,UAAU,CAAC,SAAS;QAC1B,MAAM;QACN;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;SAEgB,UAAU,CAAC,OAAoB,EAAE,IAAgB,EAAE,OAAmB,EAAA;AAClF,IAAA,MAAM,SAAS,GAAqB;QAChC,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B,IAAI;QACJ;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;AAEgB,SAAA,YAAY,CAAC,OAAoB,EAAE,IAAY,EAAA;AAC3D,IAAA,MAAM,SAAS,GAAuB;QAClC,IAAI,EAAE,UAAU,CAAC,YAAY;QAC7B;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;AAEO,MAAM,aAAa,GAAG;IACzB,SAAS;sBACTA,kBAAgB;IAChB,UAAU;IACV,YAAY;IACZ;CACH;;AC7DD,SAAS,OAAO,CAAC,OAAoB,EAAE,KAA2B,EAAE,IAAc,EAAA;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,EAAE;QACN,MAAM,UAAU,GAAyB,EAAE;QAC3C,MAAM,aAAa,GAAyB,EAAE;AAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,MAAM,CAAC,GAAG,GAAwB;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtD,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBACxB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAQ;;AAElC,gBAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC3B,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAQ;;;;AAK9C,QAAA,MAAM,SAAS,GAAkB;YAC7B,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,UAAU;YACV,aAAa;YACb;SACH;AACD,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;;AAEhC;AAEA,SAASC,SAAO,CAAC,OAAoB,EAAE,IAAiB,EAAE,IAAc,EAAA;AACpE,IAAA,MAAM,SAAS,GAAkB;QAC7B,IAAI,EAAE,UAAU,CAAC,OAAO;QACxB,IAAI;QACJ;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;AAEA,SAASC,YAAU,CAAC,OAAoB,EAAE,IAAc,EAAA;AACpD,IAAA,MAAM,SAAS,GAAqB;QAChC,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B;KACH;AACD,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B;AAEO,MAAM,WAAW,GAAG;IACvB,OAAO;aACPD,SAAO;gBACPC;CACH;;AC5CY,MAAA,OAAO,GAAG;AACnB,IAAA,GAAG,cAAc;AACjB,IAAA,GAAG,aAAa;AAChB,IAAA,GAAG,YAAY;AACf,IAAA,GAAG,WAAW;AACd,IAAA,GAAG;;;ACPS,SAAA,wBAAwB,CAAC,OAAoB,EAAE,WAAqC,EAAA;AAChG,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;AACjC,IAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,QAAA,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;AACpE,KAAC,CAAC;AACN;;SCHgB,SAAS,CAAC,OAAoB,EAAE,OAAwB,EAAE,WAAqC,EAAA;AAC3G,IAAA,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAGC,WAAS,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO;AAC/F,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7D,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAuB,EAAE,UAAU,CAAC;AACxF,IAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;AAChE,IAAA,IAAI,SAAS,KAAKA,WAAS,CAAC,KAAK,EAAE;AAC/B,QAAA,QAAQ,EAAE;;AAEd,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;IACrC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;QAC9B,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YAAY,EAAkB;QAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;AAC7F,KAAC,CAAC;AACF,IAAA,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC;AAClD;;MCba,oBAAoB,GAAG,CAAC,OAAgB,EAAE,cAA8C,KAAI;IACrG,OAAO;AACH,QAAA,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC;AACrE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,CAAC,OAAgB,EAAE,KAA2B,KAAI;AACpD,YAAA,OAAO,CAAC,WAAW,CAAC,OAAsB,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1D,YAAA,wBAAwB,CAAC,OAAsB,EAAE,cAAc,EAAE,CAAC;;KAEzE;AACL;;ACRM,SAAU,sBAAsB,CAClC,KAAoB,EACpB,QAAgB,EAChB,IAA4C,EAC5C,KAAa,EAAA;IAEb,MAAM,SAAS,GAAc,EAAE;IAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;AACnD,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACtB,QAAA,IAAI,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ;;aAC9B;AACH,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;;AAEtE,KAAC,CAAC;AACF,IAAA,OAAO,SAAS;AACpB;SAEgB,WAAW,CAAC,IAA4C,EAAE,YAAoB,EAAE,KAAa,EAAA;AACzG,IAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;IAC9B,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACtC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;QACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAa,CAAC;QAC7D,QAAQ,GAAG,CAAC,oBAAoB,GAAG,gBAAgB,IAAI,CAAC;;SACrD;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;AACtD,QAAA,QAAQ,GAAG,WAAW,GAAG,CAAC;;AAE9B,IAAA,OAAO,QAAQ;AACnB;AAEgB,SAAA,cAAc,CAAC,IAA4C,EAAE,YAAoB,EAAA;IAC7F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,KAAI;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,WAAW,EAAE;AAC5C,YAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;AAE9C,QAAA,OAAO,WAAW;KACrB,EAAE,CAAC,CAAC;AACT;SAEgB,OAAO,CAAC,OAAoB,EAAE,IAAoB,EAAE,MAAe,EAAA;IAC/E,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM;AAClC,IAAA,MAAM,KAAK,GAAG,SAAS,EAAE;AACzB,IAAA,MAAM,OAAO,GAAG,cAAc,EAAE;AAEhC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC;AACzC,IAAA,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvH,IAAA,IAAI,OAAO,GAAgB;AACvB,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;KACT;AAED,IAAA,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AAClE,IAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACjB,QAAA,YAAY,GAAG,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,YAAY,CAAE;AAE3E,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI;QAC9B,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;AACtE,QAAA,OAAO,GAAG;AACN,YAAA,GAAG,QAAQ;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE;SACT;AACD,QAAA,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;;IAEjD,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,OAAO,EAAyB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;QACzD,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3G,KAAC,CAAC;IACD,OAAO,CAAC,MAAM,EAAwB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtD,QAAA,OAAO,CAAC,QAAQ,CACZ,OAAO,EACP;AACI,YAAA,SAAS,EAAE;gBACP,GAAG,KAAK,CAAC,SAAS;gBAClB,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY;AACxC;AACJ,SAAA,EACD,CAAC,KAAK,CAAC,GAAG,CAAC,CACd;AACL,KAAC,CAAC;AACF,IAAA,OAAO,OAAO;AAClB;AAEM,SAAU,UAAU,CAAC,OAAoB,EAAE,OAA2B,EAAE,MAAyB,EAAE,YAAoB,EAAA;AACzH,IAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACvB,QAAA,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,GAAG,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7F,KAAC,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;QACrB,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE;AACxC,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC;AAC9B,QAAA,OAAO,CAAC,QAAQ,CACZ,OAAO,EACP;YACI;AACH,SAAA,EACD,CAAC,KAAK,CAAC,GAAG,CAAC,CACd;AACL,KAAC,CAAC;IACF,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;AACnD;;SChGgB,UAAU,CAAC,OAAoB,EAAE,OAAyB,EAAE,eAAgC,EAAA;AACxG,IAAA,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAGA,WAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO;AACjF,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7D,IAAA,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAwB,EAAE,UAAU,CAAC;AAC5F,IAAA,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;AACjE,IAAA,IAAI,SAAS,KAAKA,WAAS,CAAC,KAAK,EAAE;AAC/B,QAAA,QAAQ,EAAE;;AAEd,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;AACtC,IAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC;IAChD,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;;;IAG9E,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;QACzC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,KAAK,KAAI;AACxC,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;AAC3B,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AACrB,SAAC,CAAC;;IAEN,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;QAC/B,MAAM,SAAS,GAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;AAC7H,QAAA,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC7D,KAAC,CAAC;AACN;AAEM,SAAU,sBAAsB,CAAC,OAAoB,EAAE,WAAW,GAAG,KAAK,EAAE,QAAiB,EAAA;IAC/F,IAAI,eAAe,GAA+B,EAAE;AACpD,IAAA,IAAI,WAAW,IAAI,QAAQ,EAAE;QACzB,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM;;SACpD;AACH,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAuB,EAAE,UAAU,CAAC;AACxF,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAChB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAC1D,SAAC,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE;AACnE,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACjC,eAAe,GAAG,4BAA4B,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC;;;AAG9G,IAAA,OAAO,eAAe;AAC1B;;SCpDgB,gBAAgB,CAAC,OAAoB,EAAE,OAAgC,EAAE,WAAqC,EAAA;AAC1H,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;AACpE,IAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;AACrC,QAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;AAC9D,QAAA,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;;AAE/E;;ACTa,MAAA,QAAQ,GAAG,IAAI,OAAO;;SCEnB,UAAU,CAAC,OAAoB,EAAE,OAAyB,EAAE,WAAqC,EAAA;AAC7G,IAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IACjC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7C;;ACFa,MAAA,SAAS,GAAG,CAAC,OAAgB,KAAI;IAC1C,MAAM,SAAS,GAAG,OAAsB;AACxC,IAAA,SAAS,CAAC,OAAO,GAAG,EAAE;AAEtB,IAAA,SAAS,CAAC,KAAK,GAAG,CAAC,MAAqB,KAAI;AACxC,QAAA,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAuB,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;AAC7B,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,gBAAA,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC;gBAC9B,SAAS,CAAC,QAAQ,EAAE;AACpB,gBAAA,SAAS,CAAC,OAAO,GAAG,EAAE;AAC1B,aAAC,CAAC;;AAEV,KAAC;AACD,IAAA,OAAO,OAAO;AAClB;;ACfa,MAAA,eAAe,GAAG;AAC3B,IAAA,IAAI,EAAE;;MAGG,qBAAqB,GAAG,CAAC,OAAgB,MAAM;AACxD,IAAA,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC;AACnE,IAAA,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,CACF,OAAoB,EACpB,KAA2B,EAC3B,MAAsC,EACtC,QAAmC,KACnC;QACA,MAAM,YAAY,GAAG,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC;QACjE,MAAM,SAAS,GAAiBC,UAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACpD,QAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG,YAAY,EAAE,iBAAiB,CAAC,OAAO,EAAE;AACxD,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,MAAO;gBACf;AACH,aAAA,CAAC;YACF,IAAI,UAAU,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,qBAAqB,EAAE;gBACjF,UAAU,CAAC,iBAAyC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC/E,oBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;AACtD,iBAAC,CAAC;;AAEN,YAAA,OAAO,UAAU;;AAErB,QAAA,OAAO,SAAS;;AAEvB,CAAA;MAEY,qBAAqB,GAAG,CAAC,OAAgB,EAAE,UAA2C,KAAI;IACnG,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC;IAC1E,OAAO;AACH,QAAA,IAAI,EAAE,mBAAmB;QACzB,IAAI;AACJ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,CAAC,OAAoB,EAAE,KAA2B,KAAI;YACxD,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AACvE,YAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,IAAI;YAC7B,IAAI,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC;AAErE,YAAA,MAAM,YAAY,GAAoB;AAClC,gBAAA,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG;AACrB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,YAAY,EAAE;AACV,oBAAA,GAAG,KAAK,EAAE;oBACV,GAAG,EAAE,SAAS,EAAE;AAChB,oBAAA,IAAI,EAAE;AACT;aACJ;YACD,UAAU,CAAC,YAAY,CAAC;;KAE/B;AACL;;MC1Da,iBAAiB,GAAG,CAAC,OAAgB,EAAE,OAAuB,KAA4B;IACnG,OAAO;AACH,QAAA,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC;AACvE,QAAA,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CACF,OAAgB,EAChB,UAAkB,EAClB,QAAkC,EAClC,2BAAwD,KACxD;YACA,IAAI,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC3D,YAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAU,KAAI;gBACrC,OAAO,CAAC,YAAY,CAAC,OAAsB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,aAAC,CAAC;YACF,2BAA2B,CAAC,cAAc,EAAE;;KAEnD;AACL;MAEa,aAAa,GAAG,CAAC,OAAgB,EAAE,OAAuB,KAA4B;IAC/F,OAAO;AACH,QAAA,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAC9D,WAAW,EAAE,KAAK,EAAE,GAAG,CAAO,KAAA,CAAA,GAAG,CAAU,QAAA,CAAA;AAC3C,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,CACF,OAAgB,EAChB,UAAkB,EAClB,QAAkC,EAClC,2BAAwD,EACxD,aAA+B,KAC/B;AACA,YAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACjD,IAAI,aAAa,EAAE;AACf,gBAAA,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAK;oBACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,IAAI;oBAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC,OAAO,CAC7E,SAAS,EACT,gBAAgB,CAAC,QAAQ,EAAE,CAC9B;AACD,oBAAA,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE;AACtC,wBAAA,SAAS,EAAE;AACd,qBAAA,CAAC;AACN,iBAAC,CAAC;;;KAGb;AACL;MAEa,cAAc,GAA0E,CACjG,OAAgB,EAChB,OAAuB,KACvB;IACA,OAAO;AACH,QAAA,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC;QAC/D,WAAW,EAAE,KAAK,EAAE,GAAG,CAAO,KAAA,CAAA,GAAG,CAAU,QAAA,CAAA;AAC3C,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,OACF,OAAgB,EAChB,UAAkB,EAClB,QAAkC,EAClC,2BAAwD,EACxD,aAA+B,KAC/B;YACA,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,KAAI;gBACrD,IAAI,CAAC,cAAc,EAAE;AACjB,oBAAA,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE;AACpG,wBAAA,SAAS,EAAE;AACd,qBAAA,CAAC;;AAEV,aAAC,CAAC;;KAET;AACL;;AChFa,MAAA,YAAY,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU;;ACF1F;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/shared/yjs-table.ts","../../../packages/state/src/types/view.ts","../../../packages/state/src/types/action.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/constants/default.ts","../../../packages/state/src/shared/utils/initialize.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/to-table/index.ts","../../../packages/state/src/shared/to-yjs/update-field-value.ts","../../../packages/state/src/shared/to-yjs/set-node.ts","../../../packages/state/src/shared/to-yjs/add-node.ts","../../../packages/state/src/shared/to-yjs/remove-node.ts","../../../packages/state/src/shared/to-yjs/index.ts","../../../packages/state/src/utils/i18n.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/record/sort.ts","../../../packages/state/src/utils/record/filter.ts","../../../packages/state/src/utils/field/sort-fields.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/utils/field/position-field.ts","../../../packages/state/src/action/field.ts","../../../packages/state/src/action/general.ts","../../../packages/state/src/action/position.ts","../../../packages/state/src/action/record.ts","../../../packages/state/src/action/view.ts","../../../packages/state/src/action/index.ts","../../../packages/state/src/utils/record/update-system-field-value.ts","../../../packages/state/src/utils/field/add-fields.ts","../../../packages/state/src/utils/field/remove-field.ts","../../../packages/state/src/utils/view.ts","../../../packages/state/src/utils/record/add-records.ts","../../../packages/state/src/utils/record/update-field-value.ts","../../../packages/state/src/utils/weak-map.ts","../../../packages/state/src/utils/field/move-fields.ts","../../../packages/state/src/plugins/state.plugin.ts","../../../packages/state/src/constants/field-menu-item.ts","../../../packages/state/src/constants/context-menu-item.ts","../../../packages/state/src/constants/view.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import { AITableField, AITableFilterCondition, AITableRecord } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport class RemovePositions {\n [view_id: string]: undefined;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: Positions;\n widths?: Positions;\n}\n\nexport type AITableViewRecords = AITableViewRecord[];\n\nexport type AITableViewFields = AITableViewField[];\n\nexport enum Direction {\n default = 0,\n ascending = 1,\n descending = -1\n}\n\nexport enum AITableFilterLogical {\n and = 'and',\n or = 'or'\n}\n\nexport type ViewSettings = AITableSearchOptions & AITableFilterConditions & AITableSortOptions;\n\nexport interface AITableView {\n _id: string;\n short_id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n }[];\n}\n\nexport interface AITableSearchOptions {\n keywords?: string;\n}\n\nexport type AITableViews = AITableView[];\n","import { AIRecordFieldIdPath, AITableField, AITableRecord, AITableRecordUpdatedInfo, IdPath, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewRecord, Positions, RemovePositions } from './view';\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field',\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view',\n SetRecordPositions = 'set_record_positions',\n UpdateSystemFieldValue = 'update_system_field_value'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIRecordFieldIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: NumberPath;\n record: AITableRecord | AITableViewRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: NumberPath;\n field: AITableField;\n originId?: string;\n isCopy?: boolean;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: NumberPath;\n newPath: NumberPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: IdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: IdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: IdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport interface SetViewAction {\n type: ActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: IdPath;\n}\n\nexport interface AddViewAction {\n type: ActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ActionName.RemoveView;\n path: IdPath;\n}\n\nexport interface SetRecordPositionAction {\n type: ActionName.SetRecordPositions;\n positions: Positions | RemovePositions;\n path: IdPath;\n}\n\nexport interface UpdateSystemFieldValue {\n type: ActionName.UpdateSystemFieldValue;\n updatedInfo: Partial<AITableRecordUpdatedInfo>;\n path: IdPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSystemFieldAction = SetRecordPositionAction | UpdateSystemFieldValue;\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveRecordAction\n | AITableViewAction\n | AITableSystemFieldAction;\n","import { AITableRecordUpdatedInfo, FieldValue, isSystemField, TrackableEntity } from '@ai-table/grid';\nimport {\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n CustomFieldValues,\n Positions,\n RecordSyncElement,\n SyncArrayElement,\n SyncMapElement,\n SystemFieldValues\n} from '../../types';\nimport * as Y from 'yjs';\n\nexport enum SystemFieldIndex {\n Id = 0,\n ShortId = 1,\n CreatedAt = 2,\n CreatedBy = 3,\n Positions = 4,\n UpdatedAt = 5,\n UpdatedBy = 6\n}\n\nexport function toSyncElement(node: any): SyncMapElement {\n const element: SyncMapElement = new Y.Map();\n for (const key in node) {\n element.set(key, node[key]);\n }\n return element;\n}\n\nexport function toRecordSyncElement(record: AITableViewRecord, fields: AITableViewFields): Y.Array<Y.Array<any>> {\n const systemFieldValues = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n systemFieldValues.insert(0, getSystemFieldValues(record));\n const customFieldValues = new Y.Array();\n const valuesArray: FieldValue[] = [];\n fields.forEach((field: AITableViewField) => {\n let value = record['values'][field._id];\n // yjs will throw an error if the value is undefined.\n if (value === undefined) {\n value = null;\n }\n valuesArray.push(value);\n });\n customFieldValues.insert(0, valuesArray);\n // To save memory, convert map to array.\n const element: RecordSyncElement = new Y.Array<Y.Array<any>>();\n element.insert(0, [systemFieldValues, customFieldValues]);\n return element;\n}\n\nexport function translatePositionToPath(\n data: AITableViewRecords | AITableViewFields,\n position: number,\n activeViewId: string,\n indexOffset: number = 0\n) {\n let index = data.findIndex((value, index) => {\n if (index === 0) {\n return position < value.positions[activeViewId];\n }\n return position > data[index - 1].positions[activeViewId] && position < value.positions[activeViewId];\n });\n if (index === -1) {\n index = data.length;\n }\n return [index + indexOffset];\n}\n\nexport function getShareTypeNumberPath(path: (string | number)[]): number[] {\n return path.filter((node) => typeof node === 'number') as number[];\n}\n\nexport function getSharedRecordId(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex).get(0).get(0)['_id'];\n}\n\nexport function getSharedRecord(records: Y.Array<SyncArrayElement>, recordIndex: number) {\n return records && (records as Y.Array<SyncArrayElement>).get(recordIndex);\n}\n\nexport function getSharedMapValueId(values: Y.Array<SyncMapElement>, index: number) {\n return values && values.get(index).get('_id');\n}\n\nexport function getSharedRecordIndex(sharedRecords: Y.Array<SyncArrayElement>, recordId: string) {\n let recordIndex = -1;\n for (let index = 0; index < sharedRecords.length; index++) {\n const sharedRecordId = getSharedRecordId(sharedRecords, index);\n if (sharedRecordId === recordId) {\n recordIndex = index;\n break;\n }\n }\n return recordIndex;\n}\n\nexport function getSharedMapValueIndex(sharedNodes: Y.Array<SyncMapElement>, id: string) {\n let nodeIndex = -1;\n for (let index = 0; index < sharedNodes.length; index++) {\n const sharedId = getSharedMapValueId(sharedNodes, index);\n if (sharedId === id) {\n nodeIndex = index;\n break;\n }\n }\n return nodeIndex;\n}\n\nexport const getSystemFieldValues = (record: AITableViewRecord): SystemFieldValues => {\n return [\n { _id: record['_id'] },\n record.short_id,\n record.created_at,\n record.created_by,\n record['positions'],\n record.updated_at,\n record.updated_by\n ];\n};\n\nexport const getCustomFieldValues = (record: AITableViewRecord): CustomFieldValues => {\n throw new Error('No implement');\n};\n\nexport const getValuesByCustomFieldValues = (customFieldValues: CustomFieldValues, fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = customFieldValues[index];\n });\n return recordValue;\n};\n\nexport const getTrackableEntityBySystemFieldValues = (systemFieldValues: SystemFieldValues): TrackableEntity => {\n return {\n created_at: systemFieldValues[SystemFieldIndex.CreatedAt],\n created_by: systemFieldValues[SystemFieldIndex.CreatedBy],\n updated_at: systemFieldValues[SystemFieldIndex.UpdatedAt],\n updated_by: systemFieldValues[SystemFieldIndex.UpdatedBy]\n };\n};\n\nexport const getIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.Id]['_id'];\n};\n\nexport const getShortIdBySystemFieldValues = (systemFieldValues: SystemFieldValues): string => {\n return systemFieldValues[SystemFieldIndex.ShortId];\n};\n\nexport const getIdBySystemFieldValuesType = (systemFieldValuesType: Y.Array<any>): string => {\n return systemFieldValuesType.get(SystemFieldIndex.Id)['_id'];\n};\n\nexport const getPositionsBySystemFieldValues = (systemFieldValues: SystemFieldValues): Positions => {\n return systemFieldValues[SystemFieldIndex.Positions];\n};\n\nexport const getPositionsByRecordSyncElement = (recordSyncElement: RecordSyncElement) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n const positions = systemFieldType.get(SystemFieldIndex.Positions);\n return positions;\n};\n\nexport const setRecordPositions = (recordSyncElement: RecordSyncElement, newPositions: Positions) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.Positions);\n systemFieldType.insert(SystemFieldIndex.Positions, [newPositions]);\n};\n\nexport const setRecordUpdatedInfo = (recordSyncElement: RecordSyncElement, info: AITableRecordUpdatedInfo) => {\n const systemFieldType = recordSyncElement.get(0) as Y.Array<any>;\n systemFieldType.delete(SystemFieldIndex.UpdatedAt, 2);\n systemFieldType.insert(SystemFieldIndex.UpdatedAt, [info.updated_at, info.updated_by]);\n};\n","export const AI_TABLE_CONTENT_FIELD_NAME = 'content';","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecords, AITableViews, SharedRecordJsonType, SharedType } from '../../types';\nimport {\n getIdBySystemFieldValues,\n getPositionsBySystemFieldValues,\n getShortIdBySystemFieldValues,\n getTrackableEntityBySystemFieldValues,\n getValuesByCustomFieldValues,\n toRecordSyncElement,\n toSyncElement\n} from './translate';\nimport { AI_TABLE_CONTENT_FIELD_NAME } from '../../constants/default';\n\nexport const createSharedType = (fieldName: string = AI_TABLE_CONTENT_FIELD_NAME) => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>(fieldName);\n return sharedType;\n};\n\nexport const getDataBySharedType = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = getRecordsBySharedJson(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n\nexport const getSharedTypeByData = (\n doc: Y.Doc,\n initializeValue: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n) => {\n const sharedType = doc.getMap<any>(AI_TABLE_CONTENT_FIELD_NAME);\n toSharedType(sharedType, initializeValue);\n return sharedType;\n};\n\nexport function toSharedType(\n sharedType: Y.Map<any>,\n data: {\n fields: AITableViewFields;\n records: AITableViewRecords;\n views: AITableViews;\n }\n): void {\n sharedType.doc!.transact(() => {\n const fieldSharedType = new Y.Array();\n fieldSharedType.insert(0, data.fields.map(toSyncElement));\n sharedType.set('fields', fieldSharedType);\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(\n 0,\n data.records.map((record) => {\n return toRecordSyncElement(record, data.fields);\n })\n );\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\n}\n\nexport const getRecordsBySharedJson = (recordJsonArray: SharedRecordJsonType[], fields: AITableViewFields): AITableViewRecords => {\n return recordJsonArray.map((record: SharedRecordJsonType) => {\n const [systemFieldValues, customFieldValues] = record;\n return {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, fields)\n };\n });\n};\n","import { isArray } from 'ngx-tethys/util';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n Positions,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getIdBySystemFieldValues, getShareTypeNumberPath, getTrackableEntityBySystemFieldValues, translatePositionToPath } from '../utils';\nimport {\n getPositionsBySystemFieldValues,\n getSharedMapValueId,\n getSharedRecord,\n getSharedRecordId,\n getShortIdBySystemFieldValues,\n getValuesByCustomFieldValues,\n SystemFieldIndex\n} from '../utils/translate';\nimport { AIRecordFieldIdPath, AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n let offset = 0;\n let targetPath = getShareTypeNumberPath(event.path);\n const isRecordsTranslate = event.path.includes('records');\n const isFieldsTranslate = event.path.includes('fields');\n const isViewsTranslate = event.path.includes('views');\n const actions: AITableAction[] = [];\n const activeViewId = aiTable.activeViewId();\n\n event.changes.delta.forEach((delta) => {\n if ('retain' in delta) {\n offset += delta.retain ?? 0;\n }\n\n if ('delete' in delta) {\n if (isAddOrRemove(targetPath)) {\n if (isViewsTranslate) {\n const removeView = aiTable.views()[offset];\n if (removeView) {\n actions.push({\n type: ActionName.RemoveView,\n path: [removeView._id]\n });\n }\n } else {\n const type = isRecordsTranslate ? ActionName.RemoveRecord : ActionName.RemoveField;\n const removeIds = getRemoveIds(event, type);\n if (removeIds.length) {\n removeIds.forEach((path) => {\n actions.push({\n type,\n path\n });\n });\n }\n }\n }\n }\n\n if ('insert' in delta) {\n if (isArray(delta.insert)) {\n if (isRecordsTranslate) {\n if (isAddOrRemove(targetPath)) {\n delta.insert?.map((item: Y.Array<any>) => {\n const data = item.toJSON();\n const [systemFieldValues, customFieldValues] = data;\n const positions = getPositionsBySystemFieldValues(systemFieldValues);\n const position = positions[activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as NumberPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: getIdBySystemFieldValues(systemFieldValues),\n short_id: getShortIdBySystemFieldValues(systemFieldValues),\n ...getTrackableEntityBySystemFieldValues(systemFieldValues),\n positions: getPositionsBySystemFieldValues(systemFieldValues),\n values: getValuesByCustomFieldValues(customFieldValues, aiTable.gridData().fields as AITableViewFields)\n }\n });\n });\n } else {\n try {\n const sharedRecords = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const sharedFields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n let systemFieldOffset = 0;\n delta.insert?.map((item: any, index: number) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset + index;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isSystemFieldOperation(targetPath)) {\n if (isPositionsOperation(fieldIndex)) {\n const newPositions: Positions = {};\n for (const key in item) {\n newPositions[key] = item[key];\n }\n actions.push({\n type: ActionName.SetRecordPositions,\n path: [record._id],\n positions: newPositions\n });\n // 此处的循环会包含 updated_at 和 updated_by 各一次,这里只处理 updated_by 同时包含两个字段的修改\n } else if (isUpdatedByOperation(fieldIndex + systemFieldOffset)) {\n const systemFieldValues = getSharedRecord(sharedRecords, recordIndex).get(0).toJSON();\n const { updated_at, updated_by } = getTrackableEntityBySystemFieldValues(systemFieldValues);\n actions.push({\n type: ActionName.UpdateSystemFieldValue,\n path: [record._id],\n updatedInfo: { updated_at, updated_by }\n });\n }\n systemFieldOffset++;\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIRecordFieldIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n // To exclude insert triggered by field inserts.\n if (fieldValue !== item) {\n actions.push({\n type: ActionName.UpdateFieldValue,\n path,\n fieldValue,\n newFieldValue: item\n });\n }\n }\n });\n } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.gridData().fields as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId,\n index\n ) as NumberPath;\n actions.push({\n type: ActionName.AddField,\n path,\n field: data as AITableField\n });\n });\n }\n if (isViewsTranslate) {\n delta.insert?.map((item: Y.Map<any>, index) => {\n const data = item.toJSON();\n actions.push({\n type: ActionName.AddView,\n path: [offset + index],\n view: data as AITableView\n });\n });\n }\n }\n }\n });\n return actions;\n}\n\nexport function isAddOrRemove(targetPath: number[]): boolean {\n return targetPath.length === 0;\n}\n\nexport function isSystemFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 0) {\n return true;\n }\n return false;\n}\n\nexport function isCustomFieldOperation(targetPath: number[]): boolean {\n if (targetPath.length === 2 && targetPath[1] === 1) {\n return true;\n }\n return false;\n}\n\nexport function isPositionsOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.Positions;\n}\n\nexport function isUpdatedByOperation(fieldIndex: number): boolean {\n return fieldIndex === SystemFieldIndex.UpdatedBy;\n}\n\nexport function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord) {\n const ids: [string][] = [];\n if (!type) {\n return ids;\n }\n\n Y.iterateDeletedStructs(\n event.transaction,\n event.transaction.deleteSet,\n // @param {Item|GC} item\n (item) => {\n if (item instanceof Y.Item && item.deleted) {\n if (type === ActionName.RemoveField && item.parentSub === '_id') {\n ids.push(item.content.getContent() as IdPath);\n }\n if (type === ActionName.RemoveRecord) {\n const content = item.content.getContent();\n if (content[0] && content[0]['_id']) {\n ids.push([content[0]['_id']]);\n }\n }\n }\n }\n );\n return ids;\n}\n","import { AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { ActionName, AITableAction, AITableView, AIViewTable, SharedType, SyncMapElement } from '../../types';\n\nexport default function translateMapEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YMapEvent<unknown>): AITableAction[] {\n const isFieldsTranslate = event.path.includes('fields');\n const isViewTranslate = event.path.includes('views');\n\n if (isViewTranslate || isFieldsTranslate) {\n let [targetPath] = getShareTypeNumberPath(event.path) as [number];\n let targetElement;\n const targetSyncElement = event.target as SharedType;\n if (isFieldsTranslate) {\n const field = sharedType.get('fields')?.get(targetPath) as SyncMapElement;\n const fieldId = field && field.get('_id');\n targetElement = fieldId && aiTable.gridData().fields.find((item) => item._id === field.get('_id'));\n }\n\n if (isViewTranslate) {\n targetElement = aiTable.views()[targetPath];\n }\n\n if (targetElement) {\n const keyChanges: [string, { action: 'add' | 'update' | 'delete'; oldValue: any }][] = Array.from(event.changes.keys.entries());\n const newProperties: Partial<AITableView | AITableField> = {};\n const properties: Partial<AITableView | AITableField> = {};\n\n const entries: [string, any][] = keyChanges.map(([key, info]) => {\n const value = targetSyncElement.get(key);\n return [key, info.action === 'delete' ? null : value instanceof Y.AbstractType ? value.toJSON() : value];\n });\n\n for (const [key, value] of entries) {\n const k = key as keyof (AITableView | AITableField);\n newProperties[k] = value;\n }\n\n const oldEntries = keyChanges.map(([key]) => [key, (targetElement as any)[key]]);\n for (const [key, value] of oldEntries) {\n const k = key as keyof (AITableView | AITableField);\n properties[k] = value;\n }\n const type = isFieldsTranslate ? ActionName.SetField : ActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableAction[];\n }\n }\n return [];\n}\n","import * as Y from 'yjs';\nimport { AITableAction, AIViewTable, SharedType } from '../../types';\nimport { YjsAITable } from '../yjs-table';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, sharedType, event);\n }\n if (event instanceof Y.YMapEvent) {\n return translateMapEvent(aiTable, sharedType, event);\n }\n return [];\n}\n\nexport function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, sharedType, event).forEach((item: AITableAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, sharedType, events);\n });\n }\n}\n","import { AITable } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement, UpdateFieldValueAction } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(aiTable: AITable, sharedType: SharedType, action: UpdateFieldValueAction): SharedType {\n const sharedRecords = sharedType.get('records');\n const sharedFields = sharedType.get('fields')!;\n if (sharedRecords && sharedFields) {\n const recordIndex = getSharedRecordIndex(sharedRecords as Y.Array<SyncArrayElement>, action.path[0]);\n const fieldIndex = getSharedMapValueIndex(sharedFields as Y.Array<SyncMapElement>, action.path[1]);\n if (recordIndex > -1 && fieldIndex > -1) {\n const record = sharedRecords?.get(recordIndex) as SyncArrayElement;\n const customField = record.get(1);\n customField.delete(fieldIndex);\n customField.insert(fieldIndex, [action.newFieldValue]);\n }\n }\n\n return sharedType;\n}\n","import { getSharedMapValueIndex } from '../utils';\nimport { ActionName, SetFieldAction, SetViewAction, SharedType, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\nimport { AITable } from '@ai-table/grid';\n\nexport default function setNode(aiTable: AITable, sharedType: SharedType, action: SetFieldAction | SetViewAction): SharedType {\n let sharedNodes;\n if (action.type === ActionName.SetField) {\n sharedNodes = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n }\n\n if (action.type === ActionName.SetView) {\n sharedNodes = sharedType.get('views')! as Y.Array<SyncMapElement>;\n }\n\n if (sharedNodes) {\n let nodeIndex = getSharedMapValueIndex(sharedNodes, action.path[0] as string);\n if (nodeIndex > -1) {\n const node = sharedNodes.get(nodeIndex) as SyncMapElement;\n Object.entries(action.newProperties).forEach(([key, value]) => {\n if (value == null) {\n node.delete(key);\n } else {\n node.set(key, value);\n }\n });\n Object.entries(action.properties).forEach(([key]) => {\n if (!action.newProperties.hasOwnProperty(key)) {\n node.delete(key);\n }\n });\n }\n }\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport {\n ActionName,\n AddFieldAction,\n AddRecordAction,\n SetRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n AITableViewFields,\n UpdateSystemFieldValue\n} from '../../types';\nimport {\n getPositionsByRecordSyncElement,\n getSharedRecordIndex,\n toRecordSyncElement,\n toSyncElement,\n setRecordPositions,\n getIdBySystemFieldValuesType,\n setRecordUpdatedInfo\n} from '../utils';\n\nexport default function addNode(\n aiTable: AITable,\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | SetRecordPositionAction | UpdateSystemFieldValue\n): SharedType {\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')!;\n const fields = sharedType.get('fields')! as Y.Array<SyncMapElement>;\n switch (action.type) {\n case ActionName.AddRecord:\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord, aiTable.fields() as AITableViewFields)]);\n break;\n case ActionName.AddView:\n views && views.push([toSyncElement(action.view)]);\n break;\n case ActionName.SetRecordPositions:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const positions = getPositionsByRecordSyncElement(record);\n const newPositions = { ...positions };\n for (const key in action.positions) {\n if (action.positions[key] === null || action.positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = action.positions[key];\n }\n }\n setRecordPositions(record, newPositions);\n }\n break;\n case ActionName.UpdateSystemFieldValue:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) {\n setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string });\n }\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n const { field, path } = action;\n const [insertIndex] = path;\n const fieldSyncElement = toSyncElement(field);\n fields.insert(insertIndex, [fieldSyncElement]);\n for (let value of records) {\n const customFieldValues = value.get(1);\n const systemFieldValues = value.get(0);\n const recordEntity = aiTable.recordsMap()[getIdBySystemFieldValuesType(systemFieldValues)];\n const newFieldValue = recordEntity.values[action.field._id];\n customFieldValues.insert(insertIndex, [newFieldValue]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import * as Y from 'yjs';\nimport {\n ActionName,\n RemoveFieldAction,\n RemoveRecordAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport { AITable } from '@ai-table/grid';\n\nexport default function removeNode(aiTable: AITable, sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ActionName.RemoveView:\n if (views) {\n const viewIndex = getSharedMapValueIndex(views, action.path[0]);\n if (viewIndex > -1) {\n views.delete(viewIndex);\n }\n }\n break;\n case ActionName.RemoveField:\n if (fields && records) {\n const fieldIndex = getSharedMapValueIndex(fields, action.path[0]);\n if (fieldIndex > -1) {\n fields.delete(fieldIndex);\n for (let value of records) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { ActionName, AITableAction, SharedType } from '../../types';\nimport setNode from './set-node';\nimport addNode from './add-node';\nimport removeNode from './remove-node';\n\nexport type ActionMapper<O extends AITableAction = AITableAction> = {\n [K in O['type']]: O extends { type: K } ? ApplyFunc<O> : never;\n};\n\nexport type ApplyFunc<O extends AITableAction = AITableAction> = (aiTable: AITable, sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n [ActionName.AddRecord]: addNode,\n [ActionName.UpdateFieldValue]: updateFieldValue,\n [ActionName.RemoveRecord]: removeNode,\n [ActionName.AddField]: addNode,\n [ActionName.SetField]: setNode,\n [ActionName.RemoveField]: removeNode,\n [ActionName.SetView]: setNode,\n [ActionName.AddView]: addNode,\n [ActionName.RemoveView]: removeNode,\n [ActionName.SetRecordPositions]: addNode,\n [ActionName.UpdateSystemFieldValue]: addNode\n};\n\nexport function applyActionOps(aiTable: AITable, sharedType: SharedType, actions: AITableAction[]): SharedType {\n if (actions.length > 0) {\n sharedType.doc!.transact(() => {\n actions.forEach((action) => {\n const apply = actionMappers[action.type] as ApplyFunc<typeof action>;\n if (apply) {\n return apply(aiTable, sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { AITable } from '@ai-table/grid';\n\nexport enum AITableStateI18nKey {\n copyField = 'copyField',\n removeRecords = 'removeRecords',\n copy = 'copy',\n copySuffix = 'copySuffix',\n paste = 'paste',\n invalidPasteContent = 'invalidPasteContent',\n tableView = 'tableView',\n editField = 'editField',\n removeField = 'removeField'\n}\n\nconst AITableI18nText = {\n [AITableStateI18nKey.copyField]: '复制列',\n [AITableStateI18nKey.removeRecords]: '删除行',\n [AITableStateI18nKey.copy]: '复制',\n [AITableStateI18nKey.copySuffix]: '副本',\n [AITableStateI18nKey.paste]: '粘贴',\n [AITableStateI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型',\n [AITableStateI18nKey.tableView]: '表格视图',\n [AITableStateI18nKey.editField]: '编辑列',\n [AITableStateI18nKey.removeField]: '删除列'\n};\n\nexport const getDefaultI18nTextByKey = (key: AITableStateI18nKey): string => {\n return AITableI18nText[key] || key;\n};\n\nexport const getStateI18nTextByKey = (aiTable: AITable, key: AITableStateI18nKey | string): string => {\n if (aiTable.getI18nTextByKey) {\n const customText = aiTable.getI18nTextByKey(key);\n if (customText) {\n return customText;\n }\n }\n const defaultText = getDefaultI18nTextByKey(key as AITableStateI18nKey);\n return defaultText;\n};\n","import { Path } from '@ai-table/grid';\nimport { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { AITable } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}\n\nexport function generateCopyName(aiTable: AITable, existNames: string[], name: string) {\n const copyText = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copySuffix);\n let newName = `${name} ${copyText}`;\n let index = 2;\n while (existNames.includes(newName)) {\n newName = `${name} ${copyText} ${index}`;\n index++;\n }\n return newName;\n}\n","import { AITable, AITableFieldType, AITableQueries, FieldModelMap } from '@ai-table/grid';\nimport { AITableView, AITableViewRecords } from '../../types';\nimport { sortByViewPosition } from '../common';\n\nexport function getSortRecords(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView, sortKeysMap);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(\n aiTable: AITable,\n records: AITableViewRecords,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = FieldModelMap[field.type];\n const sortKey = sortKeysMap?.[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const references = aiTable.context!.references();\n const res = fieldMethod.compare(cellValue1, cellValue2, references, sortKey, {\n aiTable,\n field\n });\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import {\n AITableFieldType,\n AITableFilterCondition,\n AITableRecord,\n FieldValue,\n isSystemField,\n SystemFieldTypes,\n FieldModelMap,\n isEmpty,\n AITableFilterOperation,\n SelectSettings,\n AITable,\n AITableField,\n} from '@ai-table/grid';\nimport {\n AITableFilterConditions,\n AITableFilterLogical,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable\n} from '../../types';\n\nexport function getFilteredRecords(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const { conditions, condition_logical } = activeView.settings || {};\n if (!conditions) {\n return records;\n }\n const illegalConditions = conditions.filter((item) => item.operation) || [];\n if (!illegalConditions.length) {\n return records;\n }\n const recordsWillHidden = aiTable.recordsWillHidden();\n return records.filter((record) => {\n if (recordsWillHidden && recordsWillHidden.length && recordsWillHidden.includes(record._id)) {\n return true;\n }\n return checkConditions(aiTable, fields, record, { conditions: illegalConditions, condition_logical });\n });\n}\n\nfunction checkConditions(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, filterConditions: AITableFilterConditions) {\n if (!record) {\n return false;\n }\n if (!filterConditions?.conditions) {\n return true;\n }\n const { condition_logical, conditions } = filterConditions;\n if (condition_logical === AITableFilterLogical.and) {\n return conditions.every((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n if (!condition_logical || condition_logical === AITableFilterLogical.or) {\n return conditions.some((condition) => doFilterOperations(aiTable, fields, record, condition));\n }\n return false;\n}\n\nfunction doFilterOperations(aiTable: AIViewTable, fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const { field, cellValue } = getFilterValue(fields, record, condition);\n\n try {\n return field && doFilter(condition, cellValue, {\n aiTable, field\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function doFilter(condition: AITableFilterCondition, cellValue: FieldValue, options: {\n aiTable: AITable;\n field: AITableField,\n}) {\n return FieldModelMap[options.field.type].isMeetFilter(condition, cellValue, options);\n}\n\nexport function getDefaultRecordDataByFilter(\n recordValues: Record<string, FieldValue>,\n conditions: AITableFilterCondition[],\n fields: AITableViewFields,\n conditionLogical?: AITableFilterLogical\n) {\n const fieldMap = new Map<string, AITableViewField>(fields.map((field) => [field._id, field]));\n const conditionFieldCountMap = new Map<string, number>();\n conditions.forEach((condition) => {\n const fieldId = condition.field_id.toString();\n const tmpFieldCount = conditionFieldCountMap.get(fieldId) || 0;\n conditionFieldCountMap.set(fieldId, tmpFieldCount + 1);\n });\n if (conditionLogical === AITableFilterLogical.and) {\n conditions.forEach((condition) => {\n if (conditionFieldCountMap.get(condition.field_id.toString()) === 1) {\n const field = fieldMap.get(condition.field_id.toString())!;\n const canMultipleOperationCondition =\n (!(field.settings as SelectSettings)?.is_multiple && condition.operation === AITableFilterOperation.eq) ||\n (field?.settings as SelectSettings)?.is_multiple;\n if (\n [AITableFilterOperation.eq, AITableFilterOperation.in].includes(condition.operation) &&\n [AITableFieldType.select, AITableFieldType.member].includes(field?.type) &&\n canMultipleOperationCondition\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (field?.type === AITableFieldType.date && condition.operation === AITableFilterOperation.eq) {\n recordValues[condition.field_id] = {\n timestamp: condition.value\n };\n }\n\n if (condition.operation === AITableFilterOperation.contain && AITableFieldType.text === field?.type) {\n recordValues[condition.field_id] = condition.value;\n }\n\n if (\n condition.operation === AITableFilterOperation.eq &&\n [AITableFieldType.rate, AITableFieldType.number, AITableFieldType.progress].includes(field?.type)\n ) {\n recordValues[condition.field_id] = condition.value;\n }\n }\n });\n }\n return recordValues;\n}\n\nfunction getFilterValue(fields: AITableViewFields, record: AITableRecord, condition: AITableFilterCondition) {\n const field = fields.find((item) => item._id === condition.field_id);\n let cellValue = null;\n if (field && isSystemField(field)) {\n if ([AITableFieldType.createdAt, AITableFieldType.updatedAt].includes(field.type)) {\n cellValue = { timestamp: record[field.type as SystemFieldTypes] };\n } else {\n cellValue = record[field.type as SystemFieldTypes];\n }\n } else {\n cellValue = record.values[condition.field_id];\n }\n\n if (field && [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)) {\n cellValue = Array.isArray(cellValue) ? cellValue : isEmpty(cellValue) ? [] : [cellValue];\n }\n\n return {\n field,\n cellValue\n };\n}\n","import { AITable } from \"@ai-table/grid\";\nimport { AITableView, AITableViewFields } from \"../../types\";\nimport { sortByViewPosition } from \"../common\";\n\nexport function getSortFields(aiTable: AITable, fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView) as AITableViewFields;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords, AIViewTable } from '../types';\nimport { getSortRecords } from './record/sort';\nimport { getFilteredRecords } from './record/filter';\nimport { getSortFields } from './field/sort-fields';\nimport { AITableFieldType } from '@ai-table/grid';\n\nexport function buildRecordsByView(\n aiTable: AIViewTable,\n records: AITableViewRecords,\n fields: AITableViewFields,\n activeView: AITableView,\n sortKeysMap?: Partial<Record<AITableFieldType, string>>\n) {\n const filteredRecords = getFilteredRecords(aiTable, records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView, sortKeysMap);\n}\n\nexport function buildFieldsByView(aiTable: AIViewTable, fields: AITableViewFields, activeView: AITableView) {\n return getSortFields(aiTable, fields as AITableViewFields, activeView);\n}\n","import { AITableFields, AITableFieldsSizeMap, NumberPath } from '@ai-table/grid';\nimport { AITableView, AITableViewField } from '../../types';\n\nexport function getFieldPositionInView(viewId: string, fields: AITableFields, path: NumberPath, newPath: NumberPath) {\n const targetPosition = (fields[newPath[0]] as AITableViewField).positions[viewId];\n let newPosition = 0;\n if (path[0] > newPath[0]) {\n const prevPath = newPath[0] - 1;\n if (prevPath >= 0) {\n const targetPrevField = fields[prevPath];\n const targetPrevPosition = (targetPrevField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetPrevPosition) / 2;\n } else {\n const firstField = fields[0];\n newPosition = (firstField as AITableViewField).positions[viewId] - 0.1;\n }\n } else {\n const nextPath = newPath[0] + 1;\n if (fields.length > nextPath) {\n const targetNextField = fields[nextPath];\n const targetNextPosition = (targetNextField as AITableViewField).positions[viewId];\n newPosition = (targetPosition + targetNextPosition) / 2;\n } else {\n const lastField = fields[fields.length - 1];\n const lastPosition = (lastField as AITableViewField).positions[viewId] + 1;\n newPosition = (targetPosition + lastPosition) / 2;\n }\n }\n return newPosition;\n}\n\nexport function getFieldsSizeMap(fields: AITableViewField[], activeView: AITableView) {\n const fieldsSizeMap: AITableFieldsSizeMap = {};\n fields?.forEach((field) => {\n fieldsSizeMap[field._id] = field.widths?.[activeView._id];\n });\n return fieldsSizeMap;\n}\n","import { AITableField, AITableQueries, IdPath, NumberPath } from '@ai-table/grid';\nimport { ActionName, AddFieldAction, RemoveFieldAction, SetFieldAction, AIViewTable } from '../types';\nimport { AITableViewField } from '../types/view';\nimport { isPathEqual } from '../utils';\nimport { getFieldPositionInView } from '../utils/field/position-field';\n\nexport function addField(aiTable: AIViewTable, field: AITableField, path: NumberPath, originId?: string, isCopy?: boolean) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path,\n originId,\n isCopy\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n if (isPathEqual(path, newPath)) {\n return;\n }\n const fields = aiTable.gridData().fields;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n const sourceField = fields[path[0]] as AITableViewField;\n const position = getFieldPositionInView(activeView!._id, fields, path, newPath);\n setField(aiTable, { positions: { ...sourceField.positions, [activeView!._id]: position } }, [sourceField._id]);\n}\n\nexport function setFieldWidth(aiTable: AIViewTable, path: IdPath, width: number) {\n const field = AITableQueries.getField(aiTable, path) as AITableViewField;\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n setField(aiTable, { widths: { ...field.widths, [activeView!._id]: width } }, [field._id]);\n}\n\nexport function removeField(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableViewField = AITableViewField>(aiTable: AIViewTable, value: Partial<T>, path: IdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField,\n setFieldWidth\n};\n","import {\n ActionName,\n AITableAction,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable\n} from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.UpdateSystemFieldValue: {\n const [recordId] = action.path;\n if (recordId && action.updatedInfo) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (action.updatedInfo.updated_at) {\n records[recordIndex].updated_at = action.updatedInfo.updated_at;\n }\n if (action.updatedInfo.updated_by) {\n records[recordIndex].updated_by = action.updatedInfo.updated_by;\n }\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n if (!(action.record as AITableViewRecord).positions) {\n const activeView = aiTable.views().find((item) => item._id === aiTable.activeViewId());\n let index = recordIndex;\n if (activeView?.settings?.conditions) {\n index = records.length;\n }\n (action.record as AITableViewRecord).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.records() as AITableViewRecords,\n index\n );\n }\n records.splice(recordIndex, 0, action.record as AITableViewRecord);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n if (!(newField as AITableViewField).positions) {\n (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.gridData().fields as AITableViewFields,\n action.path[0]\n );\n }\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n records.forEach((item) => {\n item.values[newField._id] =\n action.isCopy && action.originId ? item.values[action.originId] : getDefaultFieldValue(action.field);\n });\n }\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n case ActionName.SetView: {\n const view = views.find((item) => item._id === action.path[0]) as AITableView;\n if (view) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableView;\n const value = action.newProperties[k];\n if (value == null) {\n delete view[k];\n } else {\n (view[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete view[<keyof AITableView>key];\n }\n }\n }\n break;\n }\n case ActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ActionName.RemoveView: {\n const [viewId] = action.path;\n const viewIndex = views.findIndex((item) => item._id === viewId);\n if (viewIndex > -1) {\n views.splice(viewIndex, 1);\n }\n break;\n }\n case ActionName.SetRecordPositions: {\n const { positions, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n const newPositions = { ...record.positions };\n for (const key in positions) {\n if (positions[key] === null || positions[key] === undefined) {\n delete newPositions[key];\n } else {\n newPositions[key] = positions[key] as number;\n }\n }\n record.positions = newPositions;\n }\n break;\n }\n }\n return {\n records,\n fields,\n views\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n const views = createDraft(aiTable.views());\n apply(aiTable, records, fields, views, action);\n const newFields = finishDraft(fields);\n const newRecords = finishDraft(records);\n const newViews = finishDraft(views);\n if (newFields !== aiTable.fields()) {\n aiTable.fields.set(newFields);\n }\n if (newRecords !== aiTable.records()) {\n aiTable.records.set(newRecords);\n }\n if (newViews !== aiTable.views()) {\n aiTable.views.set(newViews);\n }\n }\n};\n","import { ActionName, SetRecordPositionAction, AIViewTable, Positions, RemovePositions } from '../types';\nimport { IdPath } from '@ai-table/grid';\n\nexport function setRecordPositions(aiTable: AIViewTable, positions: Positions | RemovePositions, path: IdPath) {\n const operation: SetRecordPositionAction = {\n type: ActionName.SetRecordPositions,\n positions,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionsActions = {\n setRecordPositions\n};\n","import {\n AIRecordFieldIdPath,\n AITableQueries,\n AITableRecord,\n AITableRecordUpdatedInfo,\n FieldModelMap,\n IdPath,\n NumberPath\n} from '@ai-table/grid';\nimport {\n UpdateFieldValueAction,\n ActionName,\n AddRecordAction,\n MoveRecordAction,\n RemoveRecordAction,\n AIViewTable,\n UpdateSystemFieldValue\n} from '../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {\n const oldValue = AITableQueries.getFieldValue(aiTable, path);\n const field = AITableQueries.getField(aiTable, [path[1]]);\n const fieldModel = field && FieldModelMap[field.type];\n if (fieldModel && fieldModel.isValid(value)) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: oldValue,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(\n `Invalid field value at update field value. invalidFieldValue: ${field?.type}, value: ${value}, field_id: ${path[1]}`\n );\n }\n}\n\nexport function updateSystemFieldValue(aiTable: AIViewTable, path: IdPath, updatedInfo: AITableRecordUpdatedInfo) {\n const operation: UpdateSystemFieldValue = {\n type: ActionName.UpdateSystemFieldValue,\n updatedInfo,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function addRecord(aiTable: AIViewTable, record: AITableRecord, path: NumberPath) {\n const invalidFieldValues: string[] = [];\n const isValid = Object.entries(record.values).every(([fieldId, value]) => {\n const field = AITableQueries.getField(aiTable, [fieldId]);\n const fieldModel = field && FieldModelMap[field.type];\n const result = fieldModel ? fieldModel.isValid(value) : false;\n if (!result) {\n invalidFieldValues.push(`field_id: ${fieldId}, field_type: ${field?.type}, value: ${value}`);\n }\n return result;\n });\n if (isValid) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n } else {\n console.error(`Invalid field values at add record. invalidFieldValues: ${invalidFieldValues}`);\n }\n}\n\nexport function moveRecord(aiTable: AIViewTable, path: NumberPath, newPath: NumberPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AIViewTable, path: IdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord,\n updateSystemFieldValue\n};\n","import { ActionName, AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction } from \"../types\";\n\nfunction setView(aiTable: AIViewTable, value: Partial<AITableView>, path: [string]) {\n const view = aiTable.views().find((item) => item._id === path[0]);\n if (view) {\n const properties: Partial<AITableView> = {};\n const newProperties: Partial<AITableView> = {};\n for (const key in value) {\n const k = key as keyof AITableView;\n if (JSON.stringify(view[k]) !== JSON.stringify(value[k])) {\n if (view.hasOwnProperty(k)) {\n properties[k] = view[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetViewAction = {\n type: ActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nfunction addView(aiTable: AIViewTable, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { PositionsActions } from './position';\nimport { RecordActions } from './record';\nimport { ViewActions } from './view';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions,\n ...ViewActions,\n ...PositionsActions\n};\n","import { AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function updateRecordsUpdatedInfo(aiTable: AIViewTable, updatedInfo: AITableRecordUpdatedInfo) {\n const records = aiTable.records();\n records.forEach((item) => {\n Actions.updateSystemFieldValue(aiTable, [item._id], updatedInfo);\n });\n}\n","import { AddFieldOptions, AITableField, AITableRecordUpdatedInfo, Direction, idsCreator } from '@ai-table/grid';\nimport { getSortFields } from './sort-fields';\nimport { AITableViewFields, AIViewTable } from '../../types';\nimport { Actions } from '../../action';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\n\nexport function addFields(aiTable: AIViewTable, options: AddFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { originId, direction = Direction.after, defaultValue, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n let addIndex = fields.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newFieldIds = idsCreator(count);\n newFieldIds.forEach((id, index) => {\n const newField = { _id: id, ...defaultValue } as AITableField;\n Actions.addField(aiTable, newField, [addIndex + index], options.originId, options.isCopy);\n });\n updateRecordsUpdatedInfo(aiTable, updatedInfo);\n}\n","import { AITable, AITableField, AITableRecordUpdatedInfo } from '@ai-table/grid';\nimport { Signal } from '@angular/core';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\nimport { updateRecordsUpdatedInfo } from '../record/update-system-field-value';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../../utils/i18n';\n\nexport const buildRemoveFieldItem = (aiTable: AITable, getUpdatedInfo: () => AITableRecordUpdatedInfo) => {\n return {\n type: 'removeField',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeField),\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable as AIViewTable, [field()._id]);\n updateRecordsUpdatedInfo(aiTable as AIViewTable, getUpdatedInfo());\n }\n };\n};\n","import { idCreator, shortIdCreator } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { Actions } from '../action';\nimport { ViewActions } from '../action/view';\nimport { PositionsActions } from '../action/position';\nimport { generateCopyName } from './common';\nimport { generateNewName } from '@ai-table/grid';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from './i18n';\n\nexport function createDefaultPositions(\n views: AITableView[],\n activeId: string,\n data: AITableViewRecords | AITableViewFields,\n index: number\n) {\n const positions: Positions = {};\n const position = getPosition(data, activeId, index);\n views.forEach((element) => {\n if (element._id === activeId) {\n positions[element._id] = position;\n } else {\n positions[element._id] = getMaxPosition(data, element._id) + 1;\n }\n });\n return positions;\n}\n\nexport function getPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string, index: number) {\n let position = data.length - 1;\n if (index !== 0 && index !== data.length) {\n const previousViewPosition = data[index - 1].positions[activeViewId];\n const nextViewPosition = data[index].positions[activeViewId!];\n position = (previousViewPosition + nextViewPosition) / 2;\n } else {\n const maxPosition = getMaxPosition(data, activeViewId);\n position = maxPosition + 1;\n }\n return position;\n}\n\nexport function getMaxPosition(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n return data.reduce((maxPosition, item) => {\n if (item.positions[activeViewId] > maxPosition) {\n maxPosition = item.positions[activeViewId];\n }\n return maxPosition;\n }, 0);\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy', viewId?: string) {\n let index = aiTable.views().length;\n const newId = idCreator();\n const shortId = shortIdCreator();\n\n const allViewNames = aiTable.views().map((item) => item.name);\n const count = aiTable.views().length || 0;\n const newViewName = generateNewName(allViewNames, count, getStateI18nTextByKey(aiTable, AITableStateI18nKey.tableView));\n let newView: AITableView = {\n _id: newId,\n short_id: shortId,\n name: newViewName\n };\n\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = viewId ?? aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === originViewId)!;\n\n const copyName = copyView.name;\n const copyViewName = generateCopyName(aiTable, allViewNames, copyName);\n newView = {\n ...copyView,\n _id: newId,\n name: copyViewName\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [newId]: record.positions[originViewId] }, [record._id]);\n });\n (aiTable.fields() as AITableViewFields).forEach((field) => {\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions: {\n ...field.positions,\n [newId]: field.positions[originViewId]\n }\n },\n [field._id]\n );\n });\n return newView;\n}\n\nexport function removeView(aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, activeViewId: string) {\n records.forEach((record) => {\n PositionsActions.setRecordPositions(aiTable, { [activeViewId]: undefined }, [record._id]);\n });\n fields.forEach((field) => {\n const positions = { ...field.positions };\n delete positions[activeViewId];\n Actions.setField<AITableViewField>(\n aiTable,\n {\n positions\n },\n [field._id]\n );\n });\n ViewActions.removeView(aiTable, [activeViewId]);\n}\n","import {\n AddRecordOptions,\n AITableRecord,\n Direction,\n FieldValue,\n getDefaultFieldValue,\n idsCreator,\n shortIdsCreator,\n TrackableEntity\n} from '@ai-table/grid';\nimport { AITableViewFields, AITableViewRecords, AIViewTable } from '../../types';\nimport { getSortRecords } from './sort';\nimport { getSortFields } from '../field/sort-fields';\nimport { Actions } from '../../action';\nimport { getDefaultRecordDataByFilter } from './filter';\n\nexport function addRecords(aiTable: AIViewTable, options: AddRecordOptions, trackableEntity: TrackableEntity) {\n const { originId, direction = Direction.after, isDuplicate, count = 1 } = options;\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const records = getSortRecords(aiTable, aiTable.records() as AITableViewRecords, activeView);\n let addIndex = records.findIndex((item) => item._id === originId);\n if (direction === Direction.after) {\n addIndex++;\n }\n const newRecordIds = idsCreator(count);\n const newRecordShortIds = shortIdsCreator(count);\n const newRecordValues = getDefaultRecordValues(aiTable, isDuplicate, originId);\n // TODO: 判断如果存在筛选条件,且 newRecordValues 中没有一项满足筛选条件\n // 把 id 添加到 RECORDS_WILL_HIDDEN 中\n if (activeView.settings?.conditions?.length) {\n aiTable.recordsWillHidden?.update((value) => {\n value.push(...newRecordIds);\n return [...value];\n });\n }\n newRecordIds.forEach((id, index) => {\n const newRecord: AITableRecord = { _id: id, short_id: newRecordShortIds[index], values: newRecordValues, ...trackableEntity };\n Actions.addRecord(aiTable, newRecord, [addIndex + index]);\n });\n}\n\nexport function getDefaultRecordValues(aiTable: AIViewTable, isDuplicate = false, recordId?: string) {\n let newRecordValues: Record<string, FieldValue> = {};\n if (isDuplicate && recordId) {\n newRecordValues = aiTable.recordsMap()[recordId].values;\n } else {\n const activeView = aiTable.viewsMap()[aiTable.activeViewId()];\n const fields = getSortFields(aiTable, aiTable.fields() as AITableViewFields, activeView);\n fields.map((item) => {\n newRecordValues[item._id] = getDefaultFieldValue(item);\n });\n const { conditions, condition_logical } = activeView.settings || {};\n if (conditions && conditions.length) {\n newRecordValues = getDefaultRecordDataByFilter(newRecordValues, conditions, fields, condition_logical);\n }\n }\n return newRecordValues;\n}\n","import { AITableQueries, AITableRecordUpdatedInfo, UpdateFieldValueOptions } from '@ai-table/grid';\nimport * as _ from 'lodash';\nimport { Actions } from '../../action';\nimport { AIViewTable } from '../../types';\n\nexport function updateFieldValue(aiTable: AIViewTable, options: UpdateFieldValueOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const oldValue = AITableQueries.getFieldValue(aiTable, options.path);\n if (!_.isEqual(oldValue, options.value)) {\n Actions.updateFieldValue(aiTable, options.value, options.path);\n Actions.updateSystemFieldValue(aiTable, [options.path[0]], updatedInfo);\n }\n}\n","import { AIViewTable } from '../types';\n\nexport const FLUSHING = new WeakMap<AIViewTable, boolean>();\n","import { AITableRecordUpdatedInfo, MoveFieldOptions, NumberPath } from '@ai-table/grid';\nimport { AIViewTable } from '../../types';\nimport { Actions } from '../../action';\n\nexport function moveFields(aiTable: AIViewTable, options: MoveFieldOptions, updatedInfo: AITableRecordUpdatedInfo) {\n const { path, newPath } = options;\n Actions.moveField(aiTable, path, newPath);\n}\n","import { AITable } from '@ai-table/grid';\nimport { AITableAction, AIViewTable } from '../types';\nimport { Actions } from '../action';\nimport { FLUSHING } from '../utils';\n\nexport const withState = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.actions = [];\n\n viewTable.apply = (action: AITableAction) => {\n viewTable.actions.push(action);\n Actions.transform(viewTable, action as AITableAction);\n\n if (!FLUSHING.get(viewTable)) {\n FLUSHING.set(viewTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(viewTable, false);\n viewTable.onChange();\n viewTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { AddFieldOptions, AI_TABLE_GRID_FIELD_SERVICE_MAP, AITable, AITableField, AITableFieldSetting, idCreator } from '@ai-table/grid';\nimport { ElementRef, Signal } from '@angular/core';\nimport _ from 'lodash';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { generateCopyName } from '../utils';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = (aiTable: AITable) => ({\n type: 'editFieldProperty',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.editField),\n icon: 'edit',\n exec: (\n aiTable: AIViewTable,\n field: Signal<AITableField>,\n origin?: HTMLElement | ElementRef<any>,\n position?: { x: number; y: number }\n ) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = _.cloneDeep(field());\n if (origin && position) {\n const popoverRef = fieldService?.editFieldProperty(aiTable, {\n field: copyField,\n isUpdate: true,\n origin: origin!,\n position\n });\n if (popoverRef && fieldService && !fieldService.aiFieldConfig?.fieldSettingComponent) {\n (popoverRef.componentInstance as AITableFieldSetting).setField.subscribe((value) => {\n Actions.setField(aiTable, value.field, value.path);\n });\n }\n return popoverRef;\n }\n return undefined;\n }\n});\n\nexport const CopyFieldPropertyItem = (aiTable: AITable, addFieldFn: (data: AddFieldOptions) => void) => {\n const name = getStateI18nTextByKey(aiTable, AITableStateI18nKey.copyField);\n return {\n type: 'copyFieldProperty',\n name,\n icon: 'copy',\n exec: (aiTable: AIViewTable, field: Signal<AITableField>) => {\n const allFieldNames = (aiTable.fields() || []).map((item) => item.name);\n const copyName = field().name;\n let newFieldName = generateCopyName(aiTable, allFieldNames, copyName);\n\n const fieldOptions: AddFieldOptions = {\n originId: field()._id,\n isCopy: true,\n defaultValue: {\n ...field(),\n _id: idCreator(),\n name: newFieldName\n }\n };\n addFieldFn(fieldOptions);\n }\n };\n};\n","import { AITable, AITableContextMenuItem, AITableGridI18nKey, AITableGridSelectionService, AITableActions, getI18nTextByKey, isMac, writeToAITable } from '@ai-table/grid';\nimport { Actions } from '../action';\nimport { AIViewTable } from '../types';\nimport { buildClipboardData, writeToClipboard } from '@ai-table/grid';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { AITableStateI18nKey, getStateI18nTextByKey } from '../utils/i18n';\n\nexport const RemoveRecordsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'removeRecords',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.removeRecords),\n icon: 'trash',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService\n ) => {\n let selectedRecordIds = AITable.getActiveRecordIds(aiTable);\n selectedRecordIds.forEach((id: string) => {\n Actions.removeRecord(aiTable as AIViewTable, [id]);\n });\n aiTableGridSelectionService.clearSelection();\n }\n };\n};\n\nexport const CopyCellsItem = (aiTable: AITable, actions: AITableActions): AITableContextMenuItem => {\n return {\n type: 'copyCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.copy),\n shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,\n icon: 'copy',\n exec: (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n const clipboardData = buildClipboardData(aiTable);\n if (clipboardData) {\n writeToClipboard(clipboardData).then(() => {\n const copiedCellsCount = aiTable.selection().selectedCells.size;\n const message = getI18nTextByKey(aiTable, AITableGridI18nKey.copiedCells).replace(\n '{count}',\n copiedCellsCount.toString()\n );\n notifyService.success(message, undefined, {\n placement: 'bottomLeft'\n });\n });\n }\n }\n };\n};\n\nexport const PasteCellsItem: (aiTable: AITable, actions: AITableActions) => AITableContextMenuItem = (\n aiTable: AITable,\n actions: AITableActions\n) => {\n return {\n type: 'pasteCells',\n name: getStateI18nTextByKey(aiTable, AITableStateI18nKey.paste),\n shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,\n icon: 'paste',\n exec: async (\n aiTable: AITable,\n targetName: string,\n position: { x: number; y: number },\n aiTableGridSelectionService: AITableGridSelectionService,\n notifyService: ThyNotifyService\n ) => {\n writeToAITable(aiTable, actions).then((isPasteSuccess) => {\n if (!isPasteSuccess) {\n notifyService.error(getStateI18nTextByKey(aiTable, AITableStateI18nKey.invalidPasteContent), undefined, {\n placement: 'bottomLeft'\n });\n }\n });\n }\n };\n};\n","import { ActionName } from \"../types\";\n\nexport const VIEW_ACTIONS = [ActionName.SetView, ActionName.AddView, ActionName.RemoveView];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["setRecordPositions","updateFieldValue","addView","removeView","Direction","_"],"mappings":"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"}
|