@ai-table/state 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/shared/to-table/array-event.mjs +45 -15
- package/esm2022/shared/to-table/index.mjs +8 -8
- package/esm2022/shared/to-yjs/add-node.mjs +21 -10
- package/esm2022/shared/to-yjs/index.mjs +3 -1
- package/esm2022/shared/to-yjs/remove-node.mjs +21 -10
- package/esm2022/types/view.mjs +28 -25
- package/esm2022/utils/build.mjs +16 -0
- package/esm2022/utils/common.mjs +11 -0
- package/esm2022/utils/field/date.mjs +56 -0
- package/esm2022/utils/field/field.mjs +32 -0
- package/esm2022/utils/field/index.mjs +22 -0
- package/esm2022/utils/field/number.mjs +28 -0
- package/esm2022/utils/field/rate.mjs +20 -0
- package/esm2022/utils/field/select.mjs +33 -0
- package/esm2022/utils/field/text.mjs +21 -0
- package/esm2022/utils/filter-records.mjs +52 -0
- package/esm2022/utils/index.mjs +6 -0
- package/esm2022/utils/view.mjs +69 -0
- package/esm2022/view/action/general.mjs +89 -5
- package/esm2022/view/action/index.mjs +2 -1
- package/esm2022/view/action/position.mjs +21 -0
- package/esm2022/view/action/view.mjs +4 -4
- package/esm2022/view/constants/view.mjs +3 -2
- package/esm2022/view/plugins/view.plugin.mjs +15 -6
- package/fesm2022/ai-table-state.mjs +565 -67
- package/fesm2022/ai-table-state.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/shared/to-table/array-event.d.ts +3 -2
- package/shared/to-table/array-event.d.ts.map +1 -1
- package/shared/to-table/index.d.ts +3 -3
- package/shared/to-table/index.d.ts.map +1 -1
- package/shared/to-yjs/add-node.d.ts +2 -2
- package/shared/to-yjs/add-node.d.ts.map +1 -1
- package/shared/to-yjs/index.d.ts.map +1 -1
- package/shared/to-yjs/remove-node.d.ts +2 -2
- package/shared/to-yjs/remove-node.d.ts.map +1 -1
- package/types/view.d.ts +32 -14
- package/types/view.d.ts.map +1 -1
- package/utils/build.d.ts +5 -0
- package/utils/build.d.ts.map +1 -0
- package/utils/common.d.ts +2 -0
- package/utils/common.d.ts.map +1 -0
- package/utils/field/date.d.ts +8 -0
- package/utils/field/date.d.ts.map +1 -0
- package/utils/field/field.d.ts +8 -0
- package/utils/field/field.d.ts.map +1 -0
- package/utils/field/index.d.ts +4 -0
- package/utils/field/index.d.ts.map +1 -0
- package/utils/field/number.d.ts +7 -0
- package/utils/field/number.d.ts.map +1 -0
- package/utils/field/rate.d.ts +7 -0
- package/utils/field/rate.d.ts.map +1 -0
- package/utils/field/select.d.ts +7 -0
- package/utils/field/select.d.ts.map +1 -0
- package/utils/field/text.d.ts +8 -0
- package/utils/field/text.d.ts.map +1 -0
- package/utils/filter-records.d.ts +5 -0
- package/utils/filter-records.d.ts.map +1 -0
- package/utils/index.d.ts +6 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/view.d.ts +6 -0
- package/utils/view.d.ts.map +1 -0
- package/view/action/general.d.ts +9 -1
- package/view/action/general.d.ts.map +1 -1
- package/view/action/index.d.ts +1 -0
- package/view/action/index.d.ts.map +1 -1
- package/view/action/position.d.ts +8 -0
- package/view/action/position.d.ts.map +1 -0
- package/view/action/view.d.ts +4 -3
- package/view/action/view.d.ts.map +1 -1
- package/view/constants/view.d.ts +2 -1
- package/view/constants/view.d.ts.map +1 -1
- package/view/plugins/view.plugin.d.ts.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/types/view.ts","../../../packages/state/src/shared/utils/init-shared.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/shared/utils/init-table.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/yjs-table.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/view/action/general.ts","../../../packages/state/src/view/action/view.ts","../../../packages/state/src/view/constants/view.ts","../../../packages/state/src/view/plugins/view.plugin.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AITable, AITableAction, AITableField, AITableRecord } from '@ai-table/grid';\nimport { WritableSignal } from '@angular/core';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: 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 LogicalOperator {\n and = 'and',\n or = 'or'\n}\n\nexport enum FilterOperationSymbol {\n eq = 'eq',\n gte = 'gte',\n lte = 'lte',\n gt = 'gt',\n lt = 'lt',\n in = 'in',\n contain = 'contain',\n ne = 'ne',\n nin = 'nin',\n between = 'between',\n besides = 'besides',\n empty = 'empty',\n exists = 'exists',\n notContain = 'not_contain'\n}\n\nexport interface AITableView {\n _id: string;\n name: string;\n emoji_icon?: string;\n settings?: GridSettings;\n}\n\nexport class GridSettings {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n // xxx\n }[];\n condition_logical?: LogicalOperator;\n conditions?: {\n field_id: Id;\n operation: FilterOperationSymbol;\n value: string | []; // TODO 明确类型\n }[];\n}\n\nexport type AITableViews = AITableView[];\n\nexport type AIViewPath = [string];\n\nexport interface AIViewTable extends AITable {\n views: WritableSignal<AITableView[]>;\n apply: (action: AITableSharedAction) => void;\n}\n\nexport enum ViewActionName {\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view'\n}\n\nexport interface SetViewAction {\n type: ViewActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: AIViewPath;\n}\n\nexport interface AddViewAction {\n type: ViewActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ViewActionName.RemoveView;\n path: AIViewPath;\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITableSharedAction = AITableViewAction | AITableAction;\n","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecord, AITableViewRecords, AITableViews, Positions, SyncMapElement } from '../../types';\n\nexport const createSharedType = () => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>('ai-table');\n return sharedType;\n};\n\nexport const initSharedType = (\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');\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\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(0, data.records.map(toRecordSyncElement));\n\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\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): Y.Array<Y.Array<any>> {\n const nonEditableArray = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n // 后续可能改为 YMap 或者通过在 views 中存储 positions 解决\n nonEditableArray.insert(0, [{ _id: record['_id'] }]);\n\n const editableArray = new Y.Array();\n const editableFields = [];\n for (const fieldId in record['values']) {\n editableFields.push(record['values'][fieldId]);\n }\n editableArray.insert(0, [...editableFields, record['positions']]);\n\n // To save memory, convert map to array.\n const element = new Y.Array<Y.Array<any>>();\n element.insert(0, [nonEditableArray, editableArray]);\n return element;\n}\n","import { AITableViewFields, AITableViewRecords, SyncArrayElement, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\n\nexport const translateToRecordValues = (arrayRecord: any[], fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = arrayRecord[index] || '';\n });\n return recordValue;\n};\n\nexport const translateToRecords = (arrayRecords: any[], fields: AITableViewFields) => {\n return arrayRecords.map((record: any) => {\n const [nonEditableArray, editableArray] = record;\n return {\n _id: nonEditableArray[0]['_id'],\n positions: editableArray[editableArray.length - 1],\n values: translateToRecordValues(editableArray.slice(0, editableArray.length - 1), fields)\n };\n });\n};\n\nexport function translatePositionToPath(data: AITableViewRecords | AITableViewFields, position: number, activeViewId: string) {\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\n return [index];\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 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","import { AITableViewFields, AITableViewRecords, SharedType } from '../../types';\nimport { translateToRecords } from './translate';\n\nexport const initTable = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = translateToRecords(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n","import { ActionName, AIFieldIdPath, AIFieldPath, AIFieldValueIdPath, AIRecordPath, AITableField, AITableQueries } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { isArray } from 'ngx-tethys/util';\nimport {\n AITableSharedAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n ViewActionName\n} from '../../types';\nimport { translatePositionToPath, getShareTypeNumberPath } from '../utils';\nimport { getSharedMapValueId, getSharedRecordId, translateToRecordValues } from '../utils/translate';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, activeViewId: string, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[] {\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: AITableSharedAction[] = [];\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: ViewActionName.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 [fixedField, customField] = data;\n const position = customField[customField.length - 1][activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as AIRecordPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: fixedField[0]['_id'],\n values: translateToRecordValues(customField, aiTable.fields() as AITableViewFields)\n }\n });\n });\n } else {\n try {\n delta.insert?.map((item: any) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset;\n const recordId = getSharedRecordId(sharedType.get('records')! as Y.Array<SyncArrayElement>, recordIndex);\n const fieldId = getSharedMapValueId(sharedType.get('fields')! as Y.Array<SyncMapElement>, fieldIndex);\n const path = [recordId, fieldId] as AIFieldValueIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n\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 } catch (error) {}\n }\n }\n if (isFieldsTranslate) {\n delta.insert?.map((item: Y.Map<any>) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.fields() as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId\n ) as AIFieldPath;\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: ViewActionName.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 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 AIFieldIdPath);\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 { ActionName, AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { AITableSharedAction, AITableView, AIViewTable, SharedType, SyncMapElement, ViewActionName } from '../../types';\n\nexport default function translateMapEvent(\n aiTable: AIViewTable,\n sharedType: SharedType,\n event: Y.YMapEvent<unknown>\n): AITableSharedAction[] {\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.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 : ViewActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableSharedAction[];\n }\n }\n return [];\n}\n","import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import * as Y from 'yjs';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\nimport { YjsAITable } from '../yjs-table';\nimport { AITableSharedAction, AIViewTable, SharedType } from '../../types';\n\nexport function translateYjsEvent(aiTable: AIViewTable, activeViewId: string, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[] {\n if (event instanceof Y.YArrayEvent) {\n return translateArrayEvent(aiTable, activeViewId, 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, activeViewId: string, sharedType: SharedType, events: Y.YEvent<any>[]) {\n events.forEach((event) =>\n translateYjsEvent(aiTable, activeViewId, sharedType, event).forEach((item: AITableSharedAction) => {\n aiTable.apply(item);\n })\n );\n}\n\nexport function applyYjsEvents(aiTable: AIViewTable, activeViewId: string, sharedType: SharedType, events: Y.YEvent<any>[]): void {\n if (YjsAITable.isUndo(aiTable)) {\n applyEvents(aiTable, activeViewId, sharedType, events);\n } else {\n YjsAITable.asRemote(aiTable, () => {\n applyEvents(aiTable, activeViewId, sharedType, events);\n });\n }\n}\n","import { UpdateFieldValueAction } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(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 { SetViewAction, SharedType, SyncMapElement, ViewActionName } from '../../types';\nimport { ActionName, SetFieldAction } from '@ai-table/grid';\nimport * as Y from 'yjs';\n\nexport default function setNode(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 === ViewActionName.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 { toRecordSyncElement, toSyncElement } from '../utils';\nimport { AddViewAction, AITableViewRecord, SharedType, SyncArrayElement, ViewActionName } from '../../types';\nimport { ActionName, AddFieldAction, AddRecordAction, getDefaultFieldValue } from '@ai-table/grid';\n\nexport default function addNode(sharedType: SharedType, action: AddFieldAction | AddRecordAction | AddViewAction): SharedType {\n switch (action.type) {\n case ActionName.AddRecord:\n const records = sharedType.get('records')!;\n records && records.push([toRecordSyncElement(action.record as AITableViewRecord)]);\n break;\n case ViewActionName.AddView:\n const views = sharedType.get('views')!;\n views && views.push([toSyncElement(action.view)]);\n break;\n case ActionName.AddField:\n const sharedFields = sharedType.get('fields')!;\n const sharedRecords = sharedType.get('records') as SyncArrayElement;\n if (sharedFields && sharedRecords) {\n sharedFields.push([toSyncElement(action.field)]);\n const path = action.path[0];\n for (let value of sharedRecords) {\n const newRecord = getDefaultFieldValue(action.field);\n const customField = value.get(1);\n customField.insert(path, [newRecord]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { ActionName, RemoveFieldAction, RemoveRecordAction } from '@ai-table/grid';\nimport { RemoveViewAction, SharedType, SyncArrayElement, SyncMapElement, ViewActionName } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function removeNode(sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType {\n switch (action.type) {\n case ActionName.RemoveRecord:\n const records = sharedType.get('records')! as Y.Array<SyncArrayElement>;\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 ViewActionName.RemoveView:\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\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 const sharedFields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const sharedRecords = sharedType.get('records') as Y.Array<SyncArrayElement>;\n if (sharedFields && sharedRecords) {\n const fieldIndex = getSharedMapValueIndex(sharedFields, action.path[0]);\n if (fieldIndex > -1) {\n sharedFields.delete(fieldIndex);\n for (let value of sharedRecords) {\n value.get(1).delete(fieldIndex);\n }\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { AITable, AITableAction } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { 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> = (sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n add_record: addNode,\n update_field_value: updateFieldValue,\n remove_record: removeNode,\n add_field: addNode,\n set_field: setNode,\n remove_field: removeNode,\n set_view: setNode,\n add_view: addNode,\n remove_view: removeNode,\n};\n\nexport function applyActionOps(sharedType: SharedType, actions: AITableAction[], aiTable: AITable): 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(sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { createDraft, finishDraft } from 'immer';\nimport { AITableView, AITableViewAction, AIViewTable, ViewActionName } from '../../types';\n\nexport const GeneralViewActions = {\n transform(aiTable: AIViewTable, action: AITableViewAction): void {\n const views = createDraft(aiTable.views());\n applyView(aiTable, views, action);\n aiTable.views.update(() => {\n return finishDraft(views);\n });\n }\n};\n\nexport const applyView = (aiTable: AIViewTable, views: AITableView[], action: AITableViewAction) => {\n switch (action.type) {\n case ViewActionName.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 ViewActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ViewActionName.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 }\n};\n","import { AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction, ViewActionName } from '../../types';\n\nexport function 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: ViewActionName.SetView,\n properties,\n newProperties,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nexport function addView(aiTable: AIViewTable, view: AITableView, path: [number]) {\n const operation: AddViewAction = {\n type: ViewActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ViewActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { ViewActionName } from '../../types';\n\nexport const VIEW_ACTIONS = [ViewActionName.SetView, ViewActionName.AddView, ViewActionName.RemoveView];\n","import { Actions, AITable, AITableAction, FLUSHING } from '@ai-table/grid';\nimport { GeneralViewActions } from '../action';\nimport { AITableSharedAction, AITableViewAction, AIViewTable, ViewActionName } from '../../types';\nimport { VIEW_ACTIONS } from '../constants/view';\n\nexport const withView = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.apply = (action: AITableSharedAction) => {\n (aiTable.actions as AITableSharedAction[]).push(action);\n if (VIEW_ACTIONS.includes(action.type as ViewActionName)) {\n GeneralViewActions.transform(viewTable, action as AITableViewAction);\n } else {\n Actions.transform(aiTable, action as AITableAction);\n }\n\n if (!FLUSHING.get(aiTable)) {\n FLUSHING.set(aiTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(aiTable, false);\n aiTable.onChange();\n aiTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAIa,SAAS,CAAA;AAErB,CAAA;IAcW,UAIX;AAJD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,YAAe,CAAA;AACnB,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA,CAAA;IAEW,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,eAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACb,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA,CAAA;IAEW,sBAeX;AAfD,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,qBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC9B,CAAC,EAfW,qBAAqB,KAArB,qBAAqB,GAehC,EAAA,CAAA,CAAA,CAAA;MASY,YAAY,CAAA;AAaxB,CAAA;IAWW,eAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC9B,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;;AChFM,MAAM,gBAAgB,GAAG,MAAK;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAM,UAAU,CAAC,CAAC;AAC/C,IAAA,OAAO,UAAU,CAAC;AACtB,EAAE;MAEW,cAAc,GAAG,CAC1B,GAAU,EACV,eAIC,KACD;IACA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAM,UAAU,CAAC,CAAC;AAC/C,IAAA,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC1C,IAAA,OAAO,UAAU,CAAC;AACtB,EAAE;AAEc,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,CAAC;AACtC,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1D,QAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAE1C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,KAAK,EAAgB,CAAC;AACrD,QAAA,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC5C,QAAA,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAElE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACtC,QAAA,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACzC,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7D,KAAC,CAAC,CAAC;AACP,CAAC;AAEK,SAAU,aAAa,CAAC,IAAS,EAAA;AACnC,IAAA,MAAM,OAAO,GAAmB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5C,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC/B;AACD,IAAA,OAAO,OAAO,CAAC;AACnB,CAAC;AAEK,SAAU,mBAAmB,CAAC,MAAyB,EAAA;AACzD,IAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;;;AAGvC,IAAA,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAErD,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;QACpC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KAClD;AACD,IAAA,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;AAGlE,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,KAAK,EAAgB,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;AACrD,IAAA,OAAO,OAAO,CAAC;AACnB;;MCnEa,uBAAuB,GAAG,CAAC,WAAkB,EAAE,MAAyB,KAAI;AACrF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;QAC7B,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACjD,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,WAAW,CAAC;AACvB,EAAE;MAEW,kBAAkB,GAAG,CAAC,YAAmB,EAAE,MAAyB,KAAI;AACjF,IAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACpC,QAAA,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;QACjD,OAAO;AACH,YAAA,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/B,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,YAAA,MAAM,EAAE,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;SAC5F,CAAC;AACN,KAAC,CAAC,CAAC;AACP,EAAE;SAEc,uBAAuB,CAAC,IAA4C,EAAE,QAAgB,EAAE,YAAoB,EAAA;IACxH,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,CAAC;SACnD;QACD,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC1G,KAAC,CAAC,CAAC;AACH,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,QAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;KACvB;IAED,OAAO,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAEK,SAAU,sBAAsB,CAAC,IAAyB,EAAA;AAC5D,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAa,CAAC;AACvE,CAAC;AAEe,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,CAAC;AACnG,CAAC;AAEe,SAAA,mBAAmB,CAAC,MAA+B,EAAE,KAAa,EAAA;AAC9E,IAAA,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAEe,SAAA,oBAAoB,CAAC,aAAwC,EAAE,QAAgB,EAAA;AAC3F,IAAA,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AACrB,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,CAAC;AAC/D,QAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;YAC7B,WAAW,GAAG,KAAK,CAAC;YACpB,MAAM;SACT;KACJ;AACD,IAAA,OAAO,WAAW,CAAC;AACvB,CAAC;AAEe,SAAA,sBAAsB,CAAC,WAAoC,EAAE,EAAU,EAAA;AACnF,IAAA,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AACnB,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,CAAC;AACzD,QAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;YACjB,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM;SACT;KACJ;AACD,IAAA,OAAO,SAAS,CAAC;AACrB;;ACpEa,MAAA,SAAS,GAAG,CAAC,UAAsB,KAAI;AAChD,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,IAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,OAAO,GAAuB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAChF,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO;QACH,OAAO;QACP,MAAM;QACN,KAAK;KACR,CAAC;AACN;;ACIc,SAAU,mBAAmB,CAAC,OAAoB,EAAE,YAAoB,EAAE,UAAsB,EAAE,KAAoB,EAAA;IAChI,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,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,CAAC;SAC/B;AAED,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,CAAC;oBAC3C,IAAI,UAAU,EAAE;wBACZ,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,cAAc,CAAC,UAAU;AAC/B,4BAAA,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;AACzB,yBAAA,CAAC,CAAC;qBACN;iBACJ;qBAAM;AACH,oBAAA,MAAM,IAAI,GAAG,kBAAkB,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;oBACnF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,oBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,wBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;4BACvB,OAAO,CAAC,IAAI,CAAC;gCACT,IAAI;gCACJ,IAAI;AACP,6BAAA,CAAC,CAAC;AACP,yBAAC,CAAC,CAAC;qBACN;iBACJ;aACJ;SACJ;AAED,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,CAAC;AAC3B,4BAAA,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;AACvC,4BAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACnE,4BAAA,MAAM,IAAI,GAAG,uBAAuB,CAChC,OAAO,CAAC,OAAO,EAAwB,EACvC,QAAQ,EACR,YAAY,CACC,CAAC;4BAElB,OAAO,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,UAAU,CAAC,SAAS;AAC1B,gCAAA,IAAI,EAAE,IAAI;AACV,gCAAA,MAAM,EAAE;AACJ,oCAAA,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oCACzB,MAAM,EAAE,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAuB,CAAC;AACtF,iCAAA;AACJ,6BAAA,CAAC,CAAC;AACP,yBAAC,CAAC,CAAC;qBACN;yBAAM;AACH,wBAAA,IAAI;4BACA,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAS,KAAI;AAC5B,gCAAA,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAW,CAAC;gCAC5C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,gCAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAA+B,EAAE,WAAW,CAAC,CAAC;AACzG,gCAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA6B,EAAE,UAAU,CAAC,CAAC;AACtG,gCAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAuB,CAAC;gCACvD,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;AAG/D,gCAAA,IAAI,UAAU,KAAK,IAAI,EAAE;oCACrB,OAAO,CAAC,IAAI,CAAC;wCACT,IAAI,EAAE,UAAU,CAAC,gBAAgB;wCACjC,IAAI;wCACJ,UAAU;AACV,wCAAA,aAAa,EAAE,IAAI;AACtB,qCAAA,CAAC,CAAC;iCACN;AACL,6BAAC,CAAC,CAAC;yBACN;AAAC,wBAAA,OAAO,KAAK,EAAE,GAAE;qBACrB;iBACJ;gBACD,IAAI,iBAAiB,EAAE;oBACnB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAgB,KAAI;AACnC,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B,wBAAA,MAAM,IAAI,GAAG,uBAAuB,CAChC,OAAO,CAAC,MAAM,EAAuB,EACrC,IAAI,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAC/B,YAAY,CACA,CAAC;wBACjB,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,UAAU,CAAC,QAAQ;4BACzB,IAAI;AACJ,4BAAA,KAAK,EAAE,IAAoB;AAC9B,yBAAA,CAAC,CAAC;AACP,qBAAC,CAAC,CAAC;iBACN;gBACD,IAAI,gBAAgB,EAAE;oBAClB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAgB,EAAE,KAAK,KAAI;AAC1C,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC3B,OAAO,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,cAAc,CAAC,OAAO;AAC5B,4BAAA,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,4BAAA,IAAI,EAAE,IAAmB;AAC5B,yBAAA,CAAC,CAAC;AACP,qBAAC,CAAC,CAAC;iBACN;aACJ;SACJ;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,OAAO,CAAC;AACnB,CAAC;AAEK,SAAU,aAAa,CAAC,UAAoB,EAAA;AAC9C,IAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AACnC,CAAC;AAEe,SAAA,YAAY,CAAC,KAAoB,EAAE,IAAsD,EAAA;IACrG,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE;AACP,QAAA,OAAO,GAAG,CAAC;KACd;IAED,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,EAAmB,CAAC,CAAC;aACxD;AACD,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,YAAY,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1C,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,CAAC;iBACjC;aACJ;SACJ;AACL,KAAC,CACJ,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACf;;AC5JwB,SAAA,iBAAiB,CACrC,OAAoB,EACpB,UAAsB,EACtB,KAA2B,EAAA;IAE3B,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAErD,IAAA,IAAI,eAAe,IAAI,iBAAiB,EAAE;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;AAClE,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAoB,CAAC;QACrD,IAAI,iBAAiB,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAmB,CAAC;YAC1E,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7F;QAED,IAAI,eAAe,EAAE;YACjB,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;SAC/C;QAED,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,UAAU,GAAuE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAChI,MAAM,aAAa,GAAwC,EAAE,CAAC;YAC9D,MAAM,UAAU,GAAwC,EAAE,CAAC;AAE3D,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,CAAC;AACzC,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,CAAC;AAC7G,aAAC,CAAC,CAAC;YAEH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;gBAChC,MAAM,CAAC,GAAG,GAAyC,CAAC;AACpD,gBAAA,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;aAC5B;YAED,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAG,aAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE;gBACnC,MAAM,CAAC,GAAG,GAAyC,CAAC;AACpD,gBAAA,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;aACzB;AACD,YAAA,MAAM,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC;YAC9E,OAAO;AACH,gBAAA;oBACI,IAAI;AACJ,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,aAAa,EAAE,aAAa;AAC5B,oBAAA,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC;AAC5B,iBAAA;aACqB,CAAC;SAC9B;KACJ;AACD,IAAA,OAAO,EAAE,CAAC;AACd;;ACzDA,MAAM,QAAQ,GAAiB,IAAI,OAAO,EAAE,CAAC;AAC7C,MAAM,SAAS,GAAiB,IAAI,OAAO,EAAE,CAAC;AAC9C,MAAM,OAAO,GAAiB,IAAI,OAAO,EAAE,CAAC;AAO/B,MAAA,UAAU,GAAG;AACtB,IAAA,OAAO,EAAE,CAAC,OAAgB,KAAa;AACnC,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChC;AAED,IAAA,OAAO,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAEtB,QAAA,EAAE,EAAE,CAAC;QAEL,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC5B;KACJ;AAED,IAAA,QAAQ,EAAE,CAAC,OAAgB,KAAa;AACpC,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACjC;AAED,IAAA,QAAQ,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QACjD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAEvB,QAAA,EAAE,EAAE,CAAC;QAEL,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC3D;KACJ;AAED,IAAA,MAAM,EAAE,CAAC,OAAgB,KAAa;AAClC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC/B;AAED,IAAA,MAAM,EAAE,CAAC,OAAgB,EAAE,EAAc,KAAU;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAErB,QAAA,EAAE,EAAE,CAAC;QAEL,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SACzD;KACJ;;;ACjDC,SAAU,iBAAiB,CAAC,OAAoB,EAAE,YAAoB,EAAE,UAAsB,EAAE,KAAoB,EAAA;AACtH,IAAA,IAAI,KAAK,YAAY,CAAC,CAAC,WAAW,EAAE;QAChC,OAAO,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;KACxE;AACD,IAAA,IAAI,KAAK,YAAY,CAAC,CAAC,SAAS,EAAE;QAC9B,OAAO,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;KACxD;AACD,IAAA,OAAO,EAAE,CAAC;AACd,CAAC;AAEK,SAAU,WAAW,CAAC,OAAoB,EAAE,YAAoB,EAAE,UAAsB,EAAE,MAAuB,EAAA;IACnH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACjB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAyB,KAAI;AAC9F,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvB,CAAC,CACL,CAAC;AACN,CAAC;AAEK,SAAU,cAAc,CAAC,OAAoB,EAAE,YAAoB,EAAE,UAAsB,EAAE,MAAuB,EAAA;AACtH,IAAA,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC5B,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAC1D;SAAM;AACH,QAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAK;YAC9B,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;AACL;;AC3Bc,SAAU,gBAAgB,CAAC,UAAsB,EAAE,MAA8B,EAAA;IAC3F,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AAC/C,IAAA,IAAI,aAAa,IAAI,YAAY,EAAE;AAC/B,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,QAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,YAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;YACrC,MAAM,MAAM,GAAG,aAAa,EAAE,GAAG,CAAC,WAAW,CAAqB,CAAC;YACnE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/B,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;SAC1D;KACJ;AAED,IAAA,OAAO,UAAU,CAAC;AACtB;;ACfc,SAAU,OAAO,CAAC,UAAsB,EAAE,MAAsC,EAAA;AAC1F,IAAA,IAAI,WAAW,CAAC;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,EAAE;AACrC,QAAA,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA6B,CAAC;KACtE;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,EAAE;AACxC,QAAA,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAA6B,CAAC;KACrE;IAED,IAAI,WAAW,EAAE;AACb,QAAA,IAAI,SAAS,GAAG,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,CAAC;AAC9E,QAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;YAChB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAmB,CAAC;AAC1D,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,CAAC;iBACpB;qBAAM;AACH,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACxB;AACL,aAAC,CAAC,CAAC;AACH,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,CAAC;iBACpB;AACL,aAAC,CAAC,CAAC;SACN;KACJ;AACD,IAAA,OAAO,UAAU,CAAC;AACtB;;AC9Bc,SAAU,OAAO,CAAC,UAAsB,EAAE,MAAwD,EAAA;AAC5G,IAAA,QAAQ,MAAM,CAAC,IAAI;QACf,KAAK,UAAU,CAAC,SAAS;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC3C,YAAA,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAA2B,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM;QACV,KAAK,cAAc,CAAC,OAAO;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AACvC,YAAA,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM;QACV,KAAK,UAAU,CAAC,QAAQ;YACpB,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAC/C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAqB,CAAC;AACpE,YAAA,IAAI,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAA,KAAK,IAAI,KAAK,IAAI,aAAa,EAAE;oBAC7B,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;iBACzC;aACJ;YACD,MAAM;KACb;AAED,IAAA,OAAO,UAAU,CAAC;AACtB;;ACzBc,SAAU,UAAU,CAAC,UAAsB,EAAE,MAAiE,EAAA;AACxH,IAAA,QAAQ,MAAM,CAAC,IAAI;QACf,KAAK,UAAU,CAAC,YAAY;YACxB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAA+B,CAAC;YACxE,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AAClB,oBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;iBAC/B;aACJ;YACD,MAAM;QACV,KAAK,cAAc,CAAC,UAAU;YAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAA6B,CAAC;YAClE,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,gBAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,oBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;iBAC3B;aACJ;YACD,MAAM;QACV,KAAK,UAAU,CAAC,WAAW;YACvB,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA4B,CAAC;YACzE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAA8B,CAAC;AAC7E,YAAA,IAAI,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,gBAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,oBAAA,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,oBAAA,KAAK,IAAI,KAAK,IAAI,aAAa,EAAE;wBAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;qBACnC;iBACJ;aACJ;YACD,MAAM;KACb;AAED,IAAA,OAAO,UAAU,CAAC;AACtB;;AC5Ba,MAAA,aAAa,GAA+B;AACrD,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,kBAAkB,EAAE,gBAAgB;AACpC,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,YAAY,EAAE,UAAU;AACxB,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,WAAW,EAAE,UAAU;EACzB;SAEc,cAAc,CAAC,UAAsB,EAAE,OAAwB,EAAE,OAAgB,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,CAAC;gBACrE,IAAI,KAAK,EAAE;AACP,oBAAA,OAAO,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;iBACpC;AACD,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;SACN,EAAE,OAAO,CAAC,CAAC;KACf;AAED,IAAA,OAAO,UAAU,CAAC;AACtB;;ACpCa,MAAA,kBAAkB,GAAG;IAC9B,SAAS,CAAC,OAAoB,EAAE,MAAyB,EAAA;QACrD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,QAAA,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAK;AACtB,YAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;EACH;AAEW,MAAA,SAAS,GAAG,CAAC,OAAoB,EAAE,KAAoB,EAAE,MAAyB,KAAI;AAC/F,IAAA,QAAQ,MAAM,CAAC,IAAI;AACf,QAAA,KAAK,cAAc,CAAC,OAAO,EAAE;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAgB,CAAC;YAC9E,IAAI,IAAI,EAAE;AACN,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE;oBACpC,MAAM,CAAC,GAAG,GAAwB,CAAC;oBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACtC,oBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,wBAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;qBAClB;yBAAM;AACF,wBAAA,IAAI,CAAC,CAAC,CAAS,GAAG,KAAK,CAAC;qBAC5B;iBACJ;;AAGD,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,CAAC;qBACvC;iBACJ;aACJ;YACD,MAAM;SACT;AACD,QAAA,KAAK,cAAc,CAAC,OAAO,EAAE;AACzB,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,YAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;gBAChB,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3C;YACD,MAAM;SACT;AACD,QAAA,KAAK,cAAc,CAAC,UAAU,EAAE;AAC5B,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AACjE,YAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC9B;YACD,MAAM;SACT;KACJ;AACL;;SCnDgB,OAAO,CAAC,OAAoB,EAAE,KAA2B,EAAE,IAAc,EAAA;IACrF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,IAAI,EAAE;QACN,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAyB,EAAE,CAAC;AAC/C,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,MAAM,CAAC,GAAG,GAAwB,CAAC;YACnC,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,CAAC;iBAClC;AACD,gBAAA,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC3B,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAQ,CAAC;iBACtC;aACJ;SACJ;AAED,QAAA,MAAM,SAAS,GAAkB;YAC7B,IAAI,EAAE,cAAc,CAAC,OAAO;YAC5B,UAAU;YACV,aAAa;YACb,IAAI;SACP,CAAC;AACF,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC5B;AACL,CAAC;SAEe,OAAO,CAAC,OAAoB,EAAE,IAAiB,EAAE,IAAc,EAAA;AAC3E,IAAA,MAAM,SAAS,GAAkB;QAC7B,IAAI,EAAE,cAAc,CAAC,OAAO;QAC5B,IAAI;QACJ,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAEe,SAAA,UAAU,CAAC,OAAoB,EAAE,IAAc,EAAA;AAC3D,IAAA,MAAM,SAAS,GAAqB;QAChC,IAAI,EAAE,cAAc,CAAC,UAAU;QAC/B,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAGY,MAAA,WAAW,GAAG;IACvB,OAAO;IACP,OAAO;IACP,UAAU;;;AChDD,MAAA,YAAY,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,UAAU;;ACGzF,MAAA,QAAQ,GAAG,CAAC,OAAgB,KAAI;IACzC,MAAM,SAAS,GAAG,OAAsB,CAAC;AACzC,IAAA,SAAS,CAAC,KAAK,GAAG,CAAC,MAA2B,KAAI;AAC7C,QAAA,OAAO,CAAC,OAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAsB,CAAC,EAAE;AACtD,YAAA,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,MAA2B,CAAC,CAAC;SACxE;aAAM;AACH,YAAA,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,MAAuB,CAAC,CAAC;SACvD;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5B,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,gBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,gBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;AACzB,aAAC,CAAC,CAAC;SACN;AACL,KAAC,CAAC;AACF,IAAA,OAAO,OAAO,CAAC;AACnB;;ACzBA;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"ai-table-state.mjs","sources":["../../../packages/state/src/types/view.ts","../../../packages/state/src/shared/utils/init-shared.ts","../../../packages/state/src/shared/utils/translate.ts","../../../packages/state/src/shared/utils/init-table.ts","../../../packages/state/src/shared/to-table/array-event.ts","../../../packages/state/src/shared/to-table/map-event.ts","../../../packages/state/src/shared/yjs-table.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/view.ts","../../../packages/state/src/view/action/general.ts","../../../packages/state/src/view/action/view.ts","../../../packages/state/src/view/action/position.ts","../../../packages/state/src/view/constants/view.ts","../../../packages/state/src/view/plugins/view.plugin.ts","../../../packages/state/src/utils/common.ts","../../../packages/state/src/utils/field/field.ts","../../../packages/state/src/utils/field/text.ts","../../../packages/state/src/utils/field/select.ts","../../../packages/state/src/utils/field/date.ts","../../../packages/state/src/utils/field/number.ts","../../../packages/state/src/utils/field/rate.ts","../../../packages/state/src/utils/field/index.ts","../../../packages/state/src/utils/filter-records.ts","../../../packages/state/src/utils/build.ts","../../../packages/state/src/ai-table-state.ts"],"sourcesContent":["import { AIRecordIdPath, AITable, AITableAction, AITableField, AITableRecord } from '@ai-table/grid';\nimport { WritableSignal } from '@angular/core';\nimport { Id } from 'ngx-tethys/types';\n\nexport class Positions {\n [view_id: string]: number;\n}\n\nexport interface AITableViewRecord extends AITableRecord {\n positions: Positions;\n}\n\nexport interface AITableViewField extends AITableField {\n positions: 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 enum AITableFilterOperation {\n eq = 'eq',\n gte = 'gte',\n lte = 'lte',\n gt = 'gt',\n lt = 'lt',\n in = 'in',\n contain = 'contain',\n ne = 'ne',\n nin = 'nin',\n between = 'between',\n besides = 'besides',\n empty = 'empty',\n exists = 'exists',\n notContain = 'not_contain'\n}\n\nexport interface AITableView {\n _id: string;\n name: string;\n emoji_icon?: string;\n settings?: GridSettings;\n}\n\nexport interface AITableFilterCondition<TValue = unknown> {\n field_id: Id;\n operation: AITableFilterOperation;\n value: TValue;\n}\n\nexport interface AITableFilterConditions<TValue = unknown> {\n condition_logical?: AITableFilterLogical;\n conditions?: AITableFilterCondition<TValue>[];\n}\n\nexport interface GridSettings<TValue = unknown> extends AITableFilterConditions<TValue> {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\n // xxx\n }[];\n}\n\nexport type AITableViews = AITableView[];\n\nexport type AIViewIdPath = [string];\n\nexport interface AIViewTable extends AITable {\n views: WritableSignal<AITableView[]>;\n activeViewId: WritableSignal<string>;\n apply: (action: AITableSharedAction) => void;\n}\n\nexport enum ViewActionName {\n SetView = 'set_view',\n AddView = 'add_view',\n RemoveView = 'remove_view'\n}\n\nexport enum PositionActionName {\n AddRecordPosition = 'add_record_position',\n RemoveRecordPosition = 'remove_record_position'\n}\n\nexport interface SetViewAction {\n type: ViewActionName.SetView;\n properties: Partial<AITableView>;\n newProperties: Partial<AITableView>;\n path: AIViewIdPath;\n}\n\nexport interface AddViewAction {\n type: ViewActionName.AddView;\n view: AITableView;\n path: [number];\n}\n\nexport interface RemoveViewAction {\n type: ViewActionName.RemoveView;\n path: AIViewIdPath;\n}\n\nexport interface AddRecordPositionAction {\n type: PositionActionName.AddRecordPosition;\n position: Positions;\n path: AIRecordIdPath;\n}\n\nexport interface RemoveRecordPositionAction {\n type: PositionActionName.RemoveRecordPosition;\n path: [string, string];\n}\n\nexport type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;\n\nexport type AITablePositionAction = AddRecordPositionAction | RemoveRecordPositionAction;\n\nexport type AITableSharedAction = AITableViewAction | AITableAction | AITablePositionAction;\n","import * as Y from 'yjs';\nimport { AITableViewFields, AITableViewRecord, AITableViewRecords, AITableViews, Positions, SyncMapElement } from '../../types';\n\nexport const createSharedType = () => {\n const doc = new Y.Doc();\n const sharedType = doc.getMap<any>('ai-table');\n return sharedType;\n};\n\nexport const initSharedType = (\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');\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\n const recordSharedType = new Y.Array<Y.Array<any>>();\n sharedType.set('records', recordSharedType);\n recordSharedType.insert(0, data.records.map(toRecordSyncElement));\n\n const viewsSharedType = new Y.Array();\n sharedType.set('views', viewsSharedType);\n viewsSharedType.insert(0, data.views.map(toSyncElement));\n });\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): Y.Array<Y.Array<any>> {\n const nonEditableArray = new Y.Array();\n // 临时方案:为了解决删除时协同操作无法精准获取删除的 id 的问题,将原来的[idValue] 改为[{'_id': idValue}]\n // 后续可能改为 YMap 或者通过在 views 中存储 positions 解决\n nonEditableArray.insert(0, [{ _id: record['_id'] }]);\n\n const editableArray = new Y.Array();\n const editableFields = [];\n for (const fieldId in record['values']) {\n editableFields.push(record['values'][fieldId]);\n }\n editableArray.insert(0, [...editableFields, record['positions']]);\n\n // To save memory, convert map to array.\n const element = new Y.Array<Y.Array<any>>();\n element.insert(0, [nonEditableArray, editableArray]);\n return element;\n}\n","import { AITableViewFields, AITableViewRecords, SyncArrayElement, SyncMapElement } from '../../types';\nimport * as Y from 'yjs';\n\nexport const translateToRecordValues = (arrayRecord: any[], fields: AITableViewFields) => {\n const fieldIds = fields.map((item) => item._id);\n const recordValue: Record<string, any> = {};\n fieldIds.forEach((item, index) => {\n recordValue[item] = arrayRecord[index] || '';\n });\n return recordValue;\n};\n\nexport const translateToRecords = (arrayRecords: any[], fields: AITableViewFields) => {\n return arrayRecords.map((record: any) => {\n const [nonEditableArray, editableArray] = record;\n return {\n _id: nonEditableArray[0]['_id'],\n positions: editableArray[editableArray.length - 1],\n values: translateToRecordValues(editableArray.slice(0, editableArray.length - 1), fields)\n };\n });\n};\n\nexport function translatePositionToPath(data: AITableViewRecords | AITableViewFields, position: number, activeViewId: string) {\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\n return [index];\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 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","import { AITableViewFields, AITableViewRecords, SharedType } from '../../types';\nimport { translateToRecords } from './translate';\n\nexport const initTable = (sharedType: SharedType) => {\n const data = sharedType.toJSON();\n const fields: AITableViewFields = data['fields'];\n const records: AITableViewRecords = translateToRecords(data['records'], fields);\n const views = data['views'];\n return {\n records,\n fields,\n views\n };\n};\n","import { ActionName, AIFieldIdPath, AIFieldPath, AIFieldValueIdPath, AIRecordPath, AITableField, AITableQueries } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { isArray } from 'ngx-tethys/util';\nimport {\n AITableSharedAction,\n AITableView,\n AITableViewFields,\n AITableViewRecords,\n AIViewTable,\n PositionActionName,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n ViewActionName\n} from '../../types';\nimport { translatePositionToPath, getShareTypeNumberPath } from '../utils';\nimport { getSharedMapValueId, getSharedRecordId, translateToRecordValues } from '../utils/translate';\n\nexport default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[] {\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: AITableSharedAction[] = [];\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: ViewActionName.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 [fixedField, customField] = data;\n const position = customField[customField.length - 1][activeViewId];\n const path = translatePositionToPath(\n aiTable.records() as AITableViewRecords,\n position,\n activeViewId\n ) as AIRecordPath;\n\n actions.push({\n type: ActionName.AddRecord,\n path: path,\n record: {\n _id: fixedField[0]['_id'],\n values: translateToRecordValues(customField, aiTable.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 delta.insert?.map((item: any) => {\n const recordIndex = targetPath[0] as number;\n const fieldIndex = offset;\n const record = (aiTable.records() as AITableViewRecords)[recordIndex];\n if (isPositionOperation(fieldIndex, sharedFields)) {\n for (const key in item) {\n if (!record.positions[key] && record.positions[key] !== 0) {\n actions.push({\n type: PositionActionName.AddRecordPosition,\n path: [record._id],\n position: {\n [key]: item[key]\n }\n });\n }\n }\n for (const key in record.positions) {\n if (!item[key] && item[key] !== 0) {\n actions.push({\n type: PositionActionName.RemoveRecordPosition,\n path: [key, record._id]\n });\n }\n }\n } else {\n const recordId = getSharedRecordId(sharedRecords, recordIndex);\n const fieldId = getSharedMapValueId(sharedFields, fieldIndex);\n const path = [recordId, fieldId] as AIFieldValueIdPath;\n const fieldValue = AITableQueries.getFieldValue(aiTable, path);\n\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>) => {\n const data = item.toJSON();\n const path = translatePositionToPath(\n aiTable.fields() as AITableViewFields,\n data['positions'][activeViewId],\n activeViewId\n ) as AIFieldPath;\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: ViewActionName.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 isPositionOperation(fieldIndex: number, sharedFields: Y.Array<SyncMapElement>): boolean {\n return fieldIndex === sharedFields.length;\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 AIFieldIdPath);\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 { ActionName, AITableField } from '@ai-table/grid';\nimport * as Y from 'yjs';\nimport { getShareTypeNumberPath } from '../utils';\nimport { AITableSharedAction, AITableView, AIViewTable, SharedType, SyncMapElement, ViewActionName } from '../../types';\n\nexport default function translateMapEvent(\n aiTable: AIViewTable,\n sharedType: SharedType,\n event: Y.YMapEvent<unknown>\n): AITableSharedAction[] {\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.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 : ViewActionName.SetView;\n return [\n {\n type,\n properties: properties,\n newProperties: newProperties,\n path: [targetElement._id]\n }\n ] as AITableSharedAction[];\n }\n }\n return [];\n}\n","import { AITable } from \"@ai-table/grid\";\n\nconst IS_LOCAL: WeakSet<any> = new WeakSet();\nconst IS_REMOTE: WeakSet<any> = new WeakSet();\nconst IS_UNDO: WeakSet<any> = new WeakSet();\n\nexport interface YjsAITable {\n isLocal: () => boolean;\n asLocal: () => void;\n}\n\nexport const YjsAITable = {\n isLocal: (aiTable: AITable): boolean => {\n return IS_LOCAL.has(aiTable);\n },\n\n asLocal: (aiTable: AITable, fn: () => void): void => {\n const wasLocal = YjsAITable.isLocal(aiTable);\n IS_LOCAL.add(aiTable);\n\n fn();\n\n if (!wasLocal) {\n IS_LOCAL.delete(aiTable);\n }\n },\n\n isRemote: (aiTable: AITable): boolean => {\n return IS_REMOTE.has(aiTable);\n },\n\n asRemote: (aiTable: AITable, fn: () => void): void => {\n const wasRemote = YjsAITable.isRemote(aiTable);\n IS_REMOTE.add(aiTable);\n\n fn();\n\n if (!wasRemote) {\n Promise.resolve().then(() => IS_REMOTE.delete(aiTable));\n }\n },\n\n isUndo: (aiTable: AITable): boolean => {\n return IS_UNDO.has(aiTable);\n },\n\n asUndo: (aiTable: AITable, fn: () => void): void => {\n const wasUndo = YjsAITable.isUndo(aiTable);\n IS_UNDO.add(aiTable);\n\n fn();\n\n if (!wasUndo) {\n Promise.resolve().then(() => IS_UNDO.delete(aiTable));\n }\n }\n};\n","import * as Y from 'yjs';\nimport translateArrayEvent from './array-event';\nimport translateMapEvent from './map-event';\nimport { YjsAITable } from '../yjs-table';\nimport { AITableSharedAction, AIViewTable, SharedType } from '../../types';\n\nexport function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[] {\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: AITableSharedAction) => {\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 { UpdateFieldValueAction } from '@ai-table/grid';\nimport { SharedType, SyncArrayElement, SyncMapElement } from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function updateFieldValue(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 { SetViewAction, SharedType, SyncMapElement, ViewActionName } from '../../types';\nimport { ActionName, SetFieldAction } from '@ai-table/grid';\nimport * as Y from 'yjs';\n\nexport default function setNode(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 === ViewActionName.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 { getSharedRecordIndex, toRecordSyncElement, toSyncElement } from '../utils';\nimport {\n AddRecordPositionAction,\n AddViewAction,\n AITableViewRecord,\n PositionActionName,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n ViewActionName\n} from '../../types';\nimport { ActionName, AddFieldAction, AddRecordAction, getDefaultFieldValue } from '@ai-table/grid';\nimport * as Y from 'yjs';\n\nexport default function addNode(\n sharedType: SharedType,\n action: AddFieldAction | AddRecordAction | AddViewAction | AddRecordPositionAction\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)]);\n break;\n case ViewActionName.AddView:\n views && views.push([toSyncElement(action.view)]);\n break;\n case PositionActionName.AddRecordPosition:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n const record = records.get(recordIndex);\n const customField = record.get(1) as Y.Array<any>;\n const positionsIndex = customField.length - 1;\n const positions = customField.get(positionsIndex);\n const newPositions = { ...positions, ...action.position };\n customField.delete(positionsIndex);\n customField.insert(positionsIndex, [newPositions]);\n }\n break;\n case ActionName.AddField:\n if (fields && records) {\n fields.push([toSyncElement(action.field)]);\n const path = action.path[0];\n for (let value of records) {\n const newRecord = getDefaultFieldValue(action.field);\n const customField = value.get(1);\n customField.insert(path, [newRecord]);\n }\n }\n break;\n }\n\n return sharedType;\n}\n","import { ActionName, RemoveFieldAction, RemoveRecordAction } from '@ai-table/grid';\nimport {\n PositionActionName,\n RemoveRecordPositionAction,\n RemoveViewAction,\n SharedType,\n SyncArrayElement,\n SyncMapElement,\n ViewActionName\n} from '../../types';\nimport { getSharedMapValueIndex, getSharedRecordIndex } from '../utils';\nimport * as Y from 'yjs';\n\nexport default function removeNode(\n sharedType: SharedType,\n action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction | RemoveRecordPositionAction\n): SharedType {\n const fields = sharedType.get('fields') as Y.Array<SyncMapElement>;\n const records = sharedType.get('records') as Y.Array<SyncArrayElement>;\n const views = sharedType.get('views')! as Y.Array<SyncMapElement>;\n\n switch (action.type) {\n case ActionName.RemoveRecord:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[0]);\n if (recordIndex > -1) {\n records.delete(recordIndex);\n }\n }\n break;\n case ViewActionName.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 PositionActionName.RemoveRecordPosition:\n if (records) {\n const recordIndex = getSharedRecordIndex(records, action.path[1]);\n const record = records.get(recordIndex);\n const customField = record.get(1) as Y.Array<any>;\n const positionsIndex = customField.length - 1;\n const positions = customField.get(positionsIndex);\n delete positions[action.path[0]];\n customField.delete(positionsIndex);\n customField.insert(positionsIndex, [positions]);\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, AITableAction } from '@ai-table/grid';\nimport updateFieldValue from './update-field-value';\nimport { 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> = (sharedType: SharedType, op: O) => SharedType;\n\nexport const actionMappers: Partial<ActionMapper<any>> = {\n add_record: addNode,\n update_field_value: updateFieldValue,\n remove_record: removeNode,\n add_field: addNode,\n set_field: setNode,\n remove_field: removeNode,\n set_view: setNode,\n add_view: addNode,\n remove_view: removeNode,\n add_record_position: addNode,\n remove_record_position: removeNode\n};\n\nexport function applyActionOps(sharedType: SharedType, actions: AITableAction[], aiTable: AITable): 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(sharedType, action);\n }\n return null;\n });\n }, aiTable);\n }\n\n return sharedType;\n}\n","import { idCreator, Actions } from '@ai-table/grid';\nimport { AITableView, AITableViewField, AITableViewFields, AITableViewRecords, AIViewTable, Positions } from '../types';\nimport { PositionActions, ViewActions } from '../view/action';\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 const maxPosition = data[data.length - 1].positions[activeId];\n views.forEach((element) => {\n positions[element._id] = element._id === activeId ? position : maxPosition + 1;\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 position = index;\n }\n return position;\n}\n\nexport function addView(aiTable: AIViewTable, type: 'add' | 'copy') {\n let index = aiTable.views().length;\n const newId = idCreator();\n let newView: AITableView = {\n _id: newId,\n name: '表格视图 ' + index\n };\n let originViewId = aiTable.views()[aiTable.views().length - 1]._id;\n if (type === 'copy') {\n originViewId = aiTable.activeViewId();\n const copyView = aiTable.views().find((item) => item._id === aiTable.activeViewId())!;\n newView = {\n ...copyView,\n _id: newId,\n name: copyView.name + '-副本'\n };\n index = aiTable.views().indexOf(copyView) + 1;\n }\n ViewActions.addView(aiTable, newView, [index]);\n (aiTable.records() as AITableViewRecords).forEach((record) => {\n PositionActions.addRecordPosition(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 PositionActions.removeRecordPosition(aiTable, [activeViewId, 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 { createDraft, finishDraft } from 'immer';\nimport {\n AITableSharedAction,\n AITableView,\n AITableViewAction,\n AITableViewField,\n AITableViewFields,\n AITableViewRecord,\n AITableViewRecords,\n AIViewTable,\n PositionActionName,\n ViewActionName\n} from '../../types';\nimport { ActionName, getDefaultFieldValue } from '@ai-table/grid';\nimport { createDefaultPositions } from '../../utils/view';\n\nexport const GeneralViewActions = {\n transform(aiTable: AIViewTable, action: AITableViewAction): void {\n const views = createDraft(aiTable.views());\n applyView(aiTable, views, action);\n aiTable.views.set(finishDraft(views));\n }\n};\n\nexport const applyView = (aiTable: AIViewTable, views: AITableView[], action: AITableViewAction) => {\n switch (action.type) {\n case ViewActionName.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 ViewActionName.AddView: {\n const [viewIndex] = action.path;\n if (viewIndex > -1) {\n views.splice(viewIndex, 0, action.view);\n }\n break;\n }\n case ViewActionName.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 }\n};\n\nexport const GeneralActions = {\n transform(aiTable: AIViewTable, action: AITableSharedAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n apply(aiTable, records, fields, action);\n if (action.type === ActionName.AddRecord) {\n aiTable.records.set(finishDraft(records));\n }\n if (action.type === ActionName.AddField) {\n aiTable.fields.set(finishDraft(fields));\n }\n }\n};\n\nexport const apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableViewFields, action: AITableSharedAction) => {\n switch (action.type) {\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 (newField as AITableViewField).positions = createDefaultPositions(\n aiTable.views(),\n aiTable.activeViewId(),\n aiTable.fields() as AITableViewFields,\n action.path[0]\n );\n fields.splice(fieldIndex, 0, newField as AITableViewField);\n const newRecord = {\n [newField._id]: getDefaultFieldValue(action.field)\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n break;\n }\n }\n};\n\nexport const GeneralPositionActions = {\n transform(aiTable: AIViewTable, action: AITableSharedAction): void {\n const records = createDraft(aiTable.records()) as AITableViewRecords;\n const fields = createDraft(aiTable.fields()) as AITableViewFields;\n applyPosition(aiTable, records, action);\n aiTable.records.update(() => {\n return finishDraft(records);\n });\n aiTable.fields.update(() => {\n return finishDraft(fields);\n });\n }\n};\n\nexport const applyPosition = (aiTable: AIViewTable, records: AITableViewRecords, action: AITableSharedAction) => {\n switch (action.type) {\n case PositionActionName.AddRecordPosition: {\n const { position, path } = action;\n const record = records.find((item) => item._id === path[0]);\n if (record) {\n record.positions = {\n ...record.positions,\n ...position\n };\n }\n break;\n }\n case PositionActionName.RemoveRecordPosition: {\n const { path } = action;\n const record = records.find((item) => item._id === path[1]);\n delete record?.positions[path[0]];\n break;\n }\n }\n};\n","import { AddViewAction, AITableView, AIViewTable, RemoveViewAction, SetViewAction, ViewActionName } 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: ViewActionName.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: ViewActionName.AddView,\n view,\n path\n };\n aiTable.apply(operation);\n}\n\nfunction removeView(aiTable: AIViewTable, path: [string]) {\n const operation: RemoveViewAction = {\n type: ViewActionName.RemoveView,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const ViewActions = {\n setView,\n addView,\n removeView\n};","import { AddRecordPositionAction, AIViewIdPath, AIViewTable, PositionActionName, Positions, RemoveRecordPositionAction } from '../../types';\n\nexport function addRecordPosition(aiTable: AIViewTable, position: Positions, path: AIViewIdPath) {\n const operation: AddRecordPositionAction = {\n type: PositionActionName.AddRecordPosition,\n position,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecordPosition(aiTable: AIViewTable, path: [string, string]) {\n const operation: RemoveRecordPositionAction = {\n type: PositionActionName.RemoveRecordPosition,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const PositionActions = {\n addRecordPosition,\n removeRecordPosition\n};\n","import { PositionActionName, ViewActionName } from '../../types';\n\nexport const VIEW_ACTIONS = [ViewActionName.SetView, ViewActionName.AddView, ViewActionName.RemoveView];\n\nexport const POSITION_ACTIONS = [PositionActionName.AddRecordPosition, PositionActionName.RemoveRecordPosition];\n","import { ActionName, Actions, AITable, AITableAction, FLUSHING } from '@ai-table/grid';\nimport { GeneralActions, GeneralPositionActions, GeneralViewActions } from '../action';\nimport {\n AITablePositionAction,\n AITableSharedAction,\n AITableViewAction,\n AIViewTable,\n PositionActionName,\n ViewActionName\n} from '../../types';\nimport { POSITION_ACTIONS, VIEW_ACTIONS } from '../constants/view';\n\nexport const withView = (aiTable: AITable) => {\n const viewTable = aiTable as AIViewTable;\n viewTable.apply = (action: AITableSharedAction) => {\n const sharedActions = viewTable.actions as AITableSharedAction[];\n sharedActions.push(action);\n if (VIEW_ACTIONS.includes(action.type as ViewActionName)) {\n GeneralViewActions.transform(viewTable, action as AITableViewAction);\n } else if (POSITION_ACTIONS.includes(action.type as PositionActionName)) {\n GeneralPositionActions.transform(viewTable, action as AITablePositionAction);\n } else {\n if (action.type === ActionName.AddField || action.type === ActionName.AddRecord) {\n GeneralActions.transform(viewTable, action);\n } else {\n Actions.transform(aiTable, action as AITableAction);\n }\n }\n if (!FLUSHING.get(aiTable)) {\n FLUSHING.set(aiTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(aiTable, false);\n aiTable.onChange();\n aiTable.actions = [];\n });\n }\n };\n return aiTable;\n};\n","import { isUndefinedOrNull, isEmpty as isArrayEmpty, isArray, isObject } from 'ngx-tethys/util';\n\nexport function isEmpty(value: any) {\n if (isArray(value)) {\n return isArrayEmpty(value);\n }\n\n if (isObject(value)) {\n return Reflect.ownKeys(value).length === 0;\n }\n\n return isUndefinedOrNull(value) || value == '';\n}\n","import { FieldValue } from '@ai-table/grid';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { isEmpty } from '../common';\n\nexport abstract class Field {\n protected stringInclude(str: string, searchStr: string) {\n return str.toLowerCase().includes(searchStr.trim().toLowerCase());\n }\n\n isMeetFilter(condition: AITableFilterCondition, cellValue: FieldValue) {\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n case AITableFilterOperation.exists: {\n return this.isEmptyOrNot(condition.operation, cellValue);\n }\n default: {\n return true;\n }\n }\n }\n\n isEmptyOrNot(operation: AITableFilterOperation.empty | AITableFilterOperation.exists, cellValue: FieldValue) {\n switch (operation) {\n case AITableFilterOperation.empty: {\n return isEmpty(cellValue);\n }\n case AITableFilterOperation.exists: {\n return !isEmpty(cellValue);\n }\n default: {\n throw new Error('compare operator type error');\n }\n }\n }\n}\n","import { isEmpty } from '../common';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { Field } from './field';\nimport { FieldValue } from '@ai-table/grid';\n\nexport class TextField extends Field {\n override isMeetFilter(condition: AITableFilterCondition<string>, cellValue: FieldValue) {\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n return isEmpty(cellValue);\n case AITableFilterOperation.exists:\n return !isEmpty(cellValue);\n case AITableFilterOperation.contain:\n return !isEmpty(cellValue) && this.stringInclude(cellValue, condition.value);\n default:\n return super.isMeetFilter(condition, cellValue);\n }\n }\n\n static stringInclude(str: string, searchStr: string) {\n return str.toLowerCase().includes(searchStr.trim().toLowerCase());\n }\n}\n","import { isEmpty } from '../common';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { Field } from './field';\nimport { SelectFieldValue } from '@ai-table/grid';\n\nexport class SelectField extends Field {\n override isMeetFilter(condition: AITableFilterCondition<string>, cellValue: SelectFieldValue) {\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n return isEmpty(cellValue);\n case AITableFilterOperation.exists:\n return !isEmpty(cellValue);\n case AITableFilterOperation.in:\n return Array.isArray(condition.value) && hasIntersect(cellValue, condition.value);\n case AITableFilterOperation.nin:\n return Array.isArray(condition.value) && !hasIntersect(cellValue, condition.value);\n default:\n return super.isMeetFilter(condition, cellValue);\n }\n }\n}\n\nfunction hasIntersect<T extends number | string>(array1: T[], array2: T[]) {\n if (!Array.isArray(array1) || !Array.isArray(array2)) {\n return false;\n }\n const set1 = new Set(array1);\n const set2 = new Set(array2);\n for (const ele of set1) {\n if (set2.has(ele)) {\n return true;\n }\n }\n return false;\n}\n","import { Field } from './field';\nimport { DateFieldValue } from '@ai-table/grid';\nimport { fromUnixTime, subDays } from 'date-fns';\nimport { isArray, TinyDate } from 'ngx-tethys/util';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types'\nimport { isEmpty } from '../common';\n\nexport class DateField extends Field {\n override isMeetFilter(condition: AITableFilterCondition<string>, cellValue: DateFieldValue) {\n const [left, right] = this.getTimeRange(condition.value);\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n return isEmpty(cellValue.timestamp) || cellValue.timestamp === 0;\n case AITableFilterOperation.exists:\n return !isEmpty(cellValue.timestamp) && cellValue.timestamp !== 0;\n case AITableFilterOperation.eq:\n return left <= cellValue.timestamp && cellValue.timestamp < right;\n case AITableFilterOperation.gt:\n return cellValue.timestamp > right;\n case AITableFilterOperation.lt:\n return cellValue.timestamp < left;\n case AITableFilterOperation.between:\n return left <= cellValue.timestamp && cellValue.timestamp < right;\n default:\n return super.isMeetFilter(condition, cellValue);\n }\n }\n\n getTimeRange(value: string | number | number[]) {\n switch (value) {\n case 'today':\n return [new TinyDate(new Date()).startOfDay().getUnixTime(), new TinyDate(new Date()).endOfDay().getUnixTime()];\n case 'current_week':\n return [\n new TinyDate().startOfWeek({ weekStartsOn: 1 }).getUnixTime(),\n new TinyDate().endOfWeek({ weekStartsOn: 1 }).getUnixTime()\n ];\n case 'yesterday':\n return [\n new TinyDate(subDays(new Date(), 1)).startOfDay().getUnixTime(),\n new TinyDate(subDays(new Date(), 1)).endOfDay().getUnixTime()\n ];\n case 'current_month':\n return [new TinyDate().startOfMonth().getUnixTime(), new TinyDate().endOfMonth().getUnixTime()];\n default:\n if (isArray(value)) {\n return [\n new TinyDate(fromUnixTime(value[0] as number)).startOfDay().getUnixTime(),\n new TinyDate(fromUnixTime(value[1] as number)).endOfDay().getUnixTime()\n ];\n }\n return [\n new TinyDate(fromUnixTime(value as number)).startOfDay().getUnixTime(),\n new TinyDate(fromUnixTime(value as number)).endOfDay().getUnixTime()\n ];\n }\n }\n}\n","import { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { Field } from './field';\nimport { FieldValue } from '@ai-table/grid';\nimport { isEmpty } from '../common';\n\nexport class NumberField extends Field {\n override isMeetFilter(condition: AITableFilterCondition<number>, cellValue: FieldValue) {\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n return isEmpty(cellValue) ;\n case AITableFilterOperation.exists:\n return !isEmpty(cellValue) ;\n case AITableFilterOperation.eq:\n return !Number.isNaN(condition.value) && cellValue != null && cellValue !== '' && condition.value === cellValue;\n case AITableFilterOperation.gte:\n return cellValue != null && cellValue !== '' && cellValue >= condition.value;\n case AITableFilterOperation.lte:\n return cellValue != null && cellValue !== '' && cellValue <= condition.value;\n case AITableFilterOperation.gt:\n return cellValue != null && cellValue !== '' && cellValue > condition.value;\n case AITableFilterOperation.lt:\n return cellValue != null && cellValue !== '' && cellValue < condition.value;\n case AITableFilterOperation.ne:\n return cellValue == null || cellValue == '' || Number.isNaN(condition.value) || cellValue !== condition.value;\n default:\n return super.isMeetFilter(condition, cellValue);\n }\n }\n}\n","import { isEmpty } from '../common';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { Field } from './field';\nimport { RateFieldValue } from '@ai-table/grid';\n\nexport class RateField extends Field {\n override isMeetFilter(condition: AITableFilterCondition<string[]>, cellValue: RateFieldValue | string) {\n switch (condition.operation) {\n case AITableFilterOperation.empty:\n return isEmpty(cellValue);\n case AITableFilterOperation.exists:\n return !isEmpty(cellValue);\n case AITableFilterOperation.in:\n return !isEmpty(cellValue) && condition.value.includes(cellValue.toString());\n case AITableFilterOperation.nin:\n return isEmpty(cellValue) || !condition.value.includes(cellValue.toString());\n default:\n return super.isMeetFilter(condition, cellValue);\n }\n }\n}\n","import { AITableFieldType } from '@ai-table/grid';\nimport { Field } from './field';\nimport { TextField } from './text';\nimport { SelectField } from './select';\nimport { DateField } from './date';\nimport { NumberField } from './number';\nimport { RateField } from './rate';\n\nexport const ViewOperationMap: Record<AITableFieldType, Field> = {\n [AITableFieldType.text]: new TextField(),\n [AITableFieldType.richText]: new TextField(),\n [AITableFieldType.select]: new SelectField(),\n [AITableFieldType.date]: new DateField(),\n [AITableFieldType.createdAt]: new DateField(),\n [AITableFieldType.updatedAt]: new DateField(),\n [AITableFieldType.number]: new NumberField(),\n [AITableFieldType.rate]: new RateField(),\n [AITableFieldType.link]: new TextField(),\n [AITableFieldType.member]: new SelectField(),\n [AITableFieldType.progress]: new NumberField(),\n [AITableFieldType.createdBy]: new SelectField(),\n [AITableFieldType.updatedBy]: new SelectField()\n};\n","import { AITableRecord, FieldValue } from '@ai-table/grid';\nimport { ViewOperationMap } from './field';\nimport {\n AITableFilterCondition,\n AITableFilterConditions,\n AITableFilterLogical,\n AITableFilterOperation,\n AITableView,\n AITableViewField,\n AITableViewFields,\n AITableViewRecords\n} from '../types';\nimport { isEmpty } from './common';\n\nexport function getFilteredRecords(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 return records.filter((record) => {\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 = fields.find((item) => item._id === condition.field_id);\n const cellValue = record.values[condition.field_id];\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 if (condition.operation === AITableFilterOperation.empty) {\n return isEmpty(cellValue);\n }\n if (condition.operation === AITableFilterOperation.exists) {\n return !isEmpty(cellValue);\n }\n\n return ViewOperationMap[field.type].isMeetFilter(condition, cellValue);\n}","import { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { getFilteredRecords } from './filter-records';\n\nexport function sortByView(data: AITableViewRecords | AITableViewFields, activeViewId: string) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeViewId] - b.positions[activeViewId]);\n }\n return data;\n}\n\nexport function buildRecordsByView(records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const filteredRecords = getFilteredRecords(records, fields, activeView);\n return sortByView(filteredRecords, activeView._id);\n}\n\nexport function buildFieldsByView(fields: AITableViewFields, activeView: AITableView) {\n return sortByView(fields as AITableViewFields, activeView._id);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["addView","removeView","isArrayEmpty"],"mappings":"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"}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
package/public-api.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../packages/state/src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../packages/state/src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC"}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { ActionName } from '@ai-table/grid';
|
2
2
|
import * as Y from 'yjs';
|
3
|
-
import { AITableSharedAction, AIViewTable, SharedType } from '../../types';
|
4
|
-
export default function translateArrayEvent(aiTable: AIViewTable,
|
3
|
+
import { AITableSharedAction, AIViewTable, SharedType, SyncMapElement } from '../../types';
|
4
|
+
export default function translateArrayEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[];
|
5
5
|
export declare function isAddOrRemove(targetPath: number[]): boolean;
|
6
|
+
export declare function isPositionOperation(fieldIndex: number, sharedFields: Y.Array<SyncMapElement>): boolean;
|
6
7
|
export declare function getRemoveIds(event: Y.YEvent<any>, type: ActionName.RemoveField | ActionName.RemoveRecord): [string][];
|
7
8
|
//# sourceMappingURL=array-event.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array-event.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-table/array-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8F,MAAM,gBAAgB,CAAC;AACxI,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EACH,mBAAmB,EAInB,WAAW,
|
1
|
+
{"version":3,"file":"array-event.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-table/array-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8F,MAAM,gBAAgB,CAAC;AACxI,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EACH,mBAAmB,EAInB,WAAW,EAEX,UAAU,EAEV,cAAc,EAEjB,MAAM,aAAa,CAAC;AAIrB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,EAAE,CA2IrI;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAEtG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,YAAY,cAyBxG"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as Y from 'yjs';
|
2
2
|
import { AITableSharedAction, AIViewTable, SharedType } from '../../types';
|
3
|
-
export declare function translateYjsEvent(aiTable: AIViewTable,
|
4
|
-
export declare function applyEvents(aiTable: AIViewTable,
|
5
|
-
export declare function applyYjsEvents(aiTable: AIViewTable,
|
3
|
+
export declare function translateYjsEvent(aiTable: AIViewTable, sharedType: SharedType, event: Y.YEvent<any>): AITableSharedAction[];
|
4
|
+
export declare function applyEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void;
|
5
|
+
export declare function applyYjsEvents(aiTable: AIViewTable, sharedType: SharedType, events: Y.YEvent<any>[]): void;
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,EAAE,CAQ3H;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAMhG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAQ1G"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AddViewAction, SharedType } from '../../types';
|
1
|
+
import { AddRecordPositionAction, AddViewAction, SharedType } from '../../types';
|
2
2
|
import { AddFieldAction, AddRecordAction } from '@ai-table/grid';
|
3
|
-
export default function addNode(sharedType: SharedType, action: AddFieldAction | AddRecordAction | AddViewAction): SharedType;
|
3
|
+
export default function addNode(sharedType: SharedType, action: AddFieldAction | AddRecordAction | AddViewAction | AddRecordPositionAction): SharedType;
|
4
4
|
//# sourceMappingURL=add-node.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"add-node.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/add-node.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"add-node.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/add-node.ts"],"names":[],"mappings":"AACA,OAAO,EACH,uBAAuB,EACvB,aAAa,EAGb,UAAU,EAIb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAc,cAAc,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AAGnG,MAAM,CAAC,OAAO,UAAU,OAAO,CAC3B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,uBAAuB,GACnF,UAAU,CAqCZ"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI;KAC/D,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;CACjE,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC;AAE/G,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI;KAC/D,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;CACjE,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC;AAE/G,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAYpD,CAAC;AAEF,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAc7G"}
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import { RemoveFieldAction, RemoveRecordAction } from '@ai-table/grid';
|
2
|
-
import { RemoveViewAction, SharedType } from '../../types';
|
3
|
-
export default function removeNode(sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction): SharedType;
|
2
|
+
import { RemoveRecordPositionAction, RemoveViewAction, SharedType } from '../../types';
|
3
|
+
export default function removeNode(sharedType: SharedType, action: RemoveFieldAction | RemoveRecordAction | RemoveViewAction | RemoveRecordPositionAction): SharedType;
|
4
4
|
//# sourceMappingURL=remove-node.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"remove-node.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/remove-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,
|
1
|
+
{"version":3,"file":"remove-node.d.ts","sourceRoot":"","sources":["../../../../packages/state/src/shared/to-yjs/remove-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAEH,0BAA0B,EAC1B,gBAAgB,EAChB,UAAU,EAIb,MAAM,aAAa,CAAC;AAIrB,MAAM,CAAC,OAAO,UAAU,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,0BAA0B,GAC/F,UAAU,CAgDZ"}
|
package/types/view.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AITable, AITableAction, AITableField, AITableRecord } from '@ai-table/grid';
|
1
|
+
import { AIRecordIdPath, AITable, AITableAction, AITableField, AITableRecord } from '@ai-table/grid';
|
2
2
|
import { WritableSignal } from '@angular/core';
|
3
3
|
import { Id } from 'ngx-tethys/types';
|
4
4
|
export declare class Positions {
|
@@ -17,11 +17,11 @@ export declare enum Direction {
|
|
17
17
|
ascending = 1,
|
18
18
|
descending = -1
|
19
19
|
}
|
20
|
-
export declare enum
|
20
|
+
export declare enum AITableFilterLogical {
|
21
21
|
and = "and",
|
22
22
|
or = "or"
|
23
23
|
}
|
24
|
-
export declare enum
|
24
|
+
export declare enum AITableFilterOperation {
|
25
25
|
eq = "eq",
|
26
26
|
gte = "gte",
|
27
27
|
lte = "lte",
|
@@ -43,23 +43,27 @@ export interface AITableView {
|
|
43
43
|
emoji_icon?: string;
|
44
44
|
settings?: GridSettings;
|
45
45
|
}
|
46
|
-
export
|
46
|
+
export interface AITableFilterCondition<TValue = unknown> {
|
47
|
+
field_id: Id;
|
48
|
+
operation: AITableFilterOperation;
|
49
|
+
value: TValue;
|
50
|
+
}
|
51
|
+
export interface AITableFilterConditions<TValue = unknown> {
|
52
|
+
condition_logical?: AITableFilterLogical;
|
53
|
+
conditions?: AITableFilterCondition<TValue>[];
|
54
|
+
}
|
55
|
+
export interface GridSettings<TValue = unknown> extends AITableFilterConditions<TValue> {
|
47
56
|
is_keep_sort?: boolean;
|
48
57
|
sorts?: {
|
49
58
|
sort_by: Id;
|
50
59
|
direction: Direction;
|
51
60
|
}[];
|
52
|
-
condition_logical?: LogicalOperator;
|
53
|
-
conditions?: {
|
54
|
-
field_id: Id;
|
55
|
-
operation: FilterOperationSymbol;
|
56
|
-
value: string | [];
|
57
|
-
}[];
|
58
61
|
}
|
59
62
|
export type AITableViews = AITableView[];
|
60
|
-
export type
|
63
|
+
export type AIViewIdPath = [string];
|
61
64
|
export interface AIViewTable extends AITable {
|
62
65
|
views: WritableSignal<AITableView[]>;
|
66
|
+
activeViewId: WritableSignal<string>;
|
63
67
|
apply: (action: AITableSharedAction) => void;
|
64
68
|
}
|
65
69
|
export declare enum ViewActionName {
|
@@ -67,11 +71,15 @@ export declare enum ViewActionName {
|
|
67
71
|
AddView = "add_view",
|
68
72
|
RemoveView = "remove_view"
|
69
73
|
}
|
74
|
+
export declare enum PositionActionName {
|
75
|
+
AddRecordPosition = "add_record_position",
|
76
|
+
RemoveRecordPosition = "remove_record_position"
|
77
|
+
}
|
70
78
|
export interface SetViewAction {
|
71
79
|
type: ViewActionName.SetView;
|
72
80
|
properties: Partial<AITableView>;
|
73
81
|
newProperties: Partial<AITableView>;
|
74
|
-
path:
|
82
|
+
path: AIViewIdPath;
|
75
83
|
}
|
76
84
|
export interface AddViewAction {
|
77
85
|
type: ViewActionName.AddView;
|
@@ -80,8 +88,18 @@ export interface AddViewAction {
|
|
80
88
|
}
|
81
89
|
export interface RemoveViewAction {
|
82
90
|
type: ViewActionName.RemoveView;
|
83
|
-
path:
|
91
|
+
path: AIViewIdPath;
|
92
|
+
}
|
93
|
+
export interface AddRecordPositionAction {
|
94
|
+
type: PositionActionName.AddRecordPosition;
|
95
|
+
position: Positions;
|
96
|
+
path: AIRecordIdPath;
|
97
|
+
}
|
98
|
+
export interface RemoveRecordPositionAction {
|
99
|
+
type: PositionActionName.RemoveRecordPosition;
|
100
|
+
path: [string, string];
|
84
101
|
}
|
85
102
|
export type AITableViewAction = SetViewAction | AddViewAction | RemoveViewAction;
|
86
|
-
export type
|
103
|
+
export type AITablePositionAction = AddRecordPositionAction | RemoveRecordPositionAction;
|
104
|
+
export type AITableSharedAction = AITableViewAction | AITableAction | AITablePositionAction;
|
87
105
|
//# sourceMappingURL=view.d.ts.map
|
package/types/view.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/types/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/types/view.ts"],"names":[],"mappings":"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"}
|
package/utils/build.d.ts
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
import { AITableView, AITableViewFields, AITableViewRecords } from '../types';
|
2
|
+
export declare function sortByView(data: AITableViewRecords | AITableViewFields, activeViewId: string): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
|
3
|
+
export declare function buildRecordsByView(records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
|
4
|
+
export declare function buildFieldsByView(fields: AITableViewFields, activeView: AITableView): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
|
5
|
+
//# sourceMappingURL=build.d.ts.map
|