@ai-table/state 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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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"}
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/sort-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 { Signal, 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 type ViewSettings = AITableFilterConditions & AITableSortOptions\n\nexport interface AITableView {\n _id: string;\n name: string;\n emoji_icon?: string;\n settings?: ViewSettings;\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 AITableSortOptions {\n is_keep_sort?: boolean;\n sorts?: {\n sort_by: Id;\n direction: Direction;\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 viewsMap: Signal<{ [key: string]: 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 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\nexport function sortByViewPosition(data: AITableViewRecords | AITableViewFields, activeView: AITableView) {\n const hasPositions = data.every((item) => item.positions && item.positions);\n if (hasPositions) {\n return [...data].sort((a, b) => a.positions[activeView._id] - b.positions[activeView._id]);\n }\n return data;\n}","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 { AITableField, FieldValue } from '@ai-table/grid';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { isEmpty } from '../common';\nimport { isEqual } from 'lodash';\n\nexport const zhIntlCollator = typeof Intl !== 'undefined' ? new Intl.Collator('zh-CN') : undefined;\n\nexport abstract class Field {\n protected stringInclude(str: string, searchStr: string) {\n return str.toLowerCase().includes(searchStr.trim().toLowerCase());\n }\n\n abstract cellValueToString(cellValue: FieldValue, field: AITableField): string | null;\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 eq(cv1: FieldValue, cv2: FieldValue): boolean {\n return isEqual(cv1, cv2);\n }\n\n compare(cellValue1: FieldValue, cellValue2: FieldValue, field: AITableField): number {\n if (this.eq(cellValue1, cellValue2)) {\n return 0;\n }\n if (cellValue1 == null) {\n return -1;\n }\n if (cellValue2 == null) {\n return 1;\n }\n\n let str1 = this.cellValueToString(cellValue1, field);\n let str2 = this.cellValueToString(cellValue2, field);\n\n if (str1 === str2) {\n return 0;\n }\n if (str1 == null) {\n return -1;\n }\n if (str2 == null) {\n return 1;\n }\n\n str1 = str1.trim();\n str2 = str2.trim();\n\n // test pinyin sort\n return str1 === str2 ? 0 : zhIntlCollator ? zhIntlCollator.compare(str1, str2) : str1.localeCompare(str2, 'zh-CN') > 0 ? 1 : -1;\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 override eq(cv1: string | null, cv2: string | null): boolean {\n return this.cellValueToString(cv1) === this.cellValueToString(cv2);\n }\n\n cellValueToString(cellValue: string | null): string | null {\n return cellValue;\n }\n}\n","import { isEmpty } from '../common';\nimport { AITableFilterCondition, AITableFilterOperation } from '../../types';\nimport { Field } from './field';\nimport { AITableField, AITableSelectOption, SelectFieldValue, SelectSettings } from '@ai-table/grid';\nimport { Id } from 'ngx-tethys/types';\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 cellValueToString(cellValue: SelectFieldValue, field: AITableField): string | null {\n return this.arrayValueToString(this.cellValueToArray(cellValue, field));\n }\n\n cellValueToArray(cellValue: SelectFieldValue, field: AITableField): string[] | null {\n if (!cellValue) {\n return null;\n }\n const result: string[] = [];\n for (let i = 0, l = cellValue.length; i < l; i++) {\n const option = this.findOptionById(field, cellValue[i]);\n if (option) {\n result.push(option.text);\n }\n }\n return result;\n }\n\n findOptionById(field: AITableField, id: Id): AITableSelectOption | null {\n return (field.settings as SelectSettings).options.find(option => option._id === id) || null;\n }\n\n arrayValueToString(cellValues: string[] | null): string | null {\n return cellValues && cellValues.length ? cellValues.join(', ') : null;\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 cellValueToString(_cellValue: DateFieldValue): string | null {\n return null;\n }\n\n static _compare(cellValue1: DateFieldValue, cellValue2: DateFieldValue): number {\n if (isEmpty(cellValue1?.timestamp) && isEmpty(cellValue2?.timestamp)) {\n return 0;\n }\n if (isEmpty(cellValue1?.timestamp)) {\n return -1;\n }\n if (isEmpty(cellValue2?.timestamp)) {\n return 1;\n }\n\n return cellValue1.timestamp === cellValue2.timestamp ? 0 : cellValue1.timestamp > cellValue2.timestamp ? 1 : -1;\n }\n\n override compare(cellValue1: DateFieldValue, cellValue2: DateFieldValue): number {\n return DateField._compare(cellValue1, cellValue2);\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 cellValueToString(_cellValue: FieldValue): string | null {\n return null;\n }\n\n static _compare(cellValue1: number, cellValue2: number): number {\n if (isEmpty(cellValue1) && isEmpty(cellValue2)) {\n return 0;\n }\n if (isEmpty(cellValue1)) {\n return -1;\n }\n if (isEmpty(cellValue2)) {\n return 1;\n }\n return cellValue1 === cellValue2 ? 0 : cellValue1 > cellValue2 ? 1 : -1;\n }\n\n override compare(cellValue1: number, cellValue2: number): number {\n return NumberField._compare(cellValue1, cellValue2);\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 cellValueToString(_cellValue: RateFieldValue): string | null {\n return null;\n }\n\n static _compare(cellValue1: number, cellValue2: number): number {\n if (isEmpty(cellValue1) && isEmpty(cellValue2)) {\n return 0;\n }\n if (isEmpty(cellValue1)) {\n return -1;\n }\n if (isEmpty(cellValue2)) {\n return 1;\n }\n return cellValue1 === cellValue2 ? 0 : cellValue1 > cellValue2 ? 1 : -1;\n }\n\n override compare(cellValue1: number, cellValue2: number): number {\n return RateField._compare(cellValue1, cellValue2);\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 { AITable, AITableQueries } from '@ai-table/grid';\nimport { ViewOperationMap } from './field';\nimport { AITableView, AITableViewRecords } from '../types';\nimport { sortByViewPosition } from './view';\n\nexport function getSortRecords(aiTable: AITable, records: AITableViewRecords, activeView: AITableView) {\n if (!activeView?.settings || !activeView.settings.sorts?.length) {\n return records;\n }\n const { is_keep_sort, sorts } = activeView.settings;\n if (is_keep_sort && sorts?.length) {\n return sortRecordsBySortInfo(aiTable, records, activeView);\n }\n return sortByViewPosition(records, activeView);\n}\n\nexport function sortRecordsBySortInfo(aiTable: AITable, records: AITableViewRecords, activeView: AITableView) {\n const shallowRows = [...records];\n if (activeView.settings?.sorts?.length) {\n shallowRows.sort((prev, current) => {\n return activeView.settings!.sorts!.reduce((acc, rule) => {\n const field = aiTable.fieldsMap()[rule.sort_by];\n if (!field || acc !== 0) {\n return acc;\n }\n const fieldMethod = ViewOperationMap[field.type];\n\n const cellValue1 = AITableQueries.getFieldValue(aiTable, [prev._id, field._id]);\n const cellValue2 = AITableQueries.getFieldValue(aiTable, [current._id, field._id]);\n const res = fieldMethod.compare(cellValue1, cellValue2, field);\n return res * rule.direction;\n }, 0);\n });\n return shallowRows;\n }\n return shallowRows;\n}\n","import { AITableView, AITableViewFields, AITableViewRecords } from '../types';\nimport { getFilteredRecords } from './filter-records';\nimport { AITable } from '@ai-table/grid';\nimport { getSortRecords } from './sort-records';\nimport { sortByViewPosition } from './view';\n\nexport function buildRecordsByView(aiTable: AITable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView) {\n const filteredRecords = getFilteredRecords(records, fields, activeView);\n return getSortRecords(aiTable, filteredRecords, activeView);\n}\n\nexport function buildFieldsByView(fields: AITableViewFields, activeView: AITableView) {\n return sortByViewPosition(fields as AITableViewFields, activeView);\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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-table/state",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "peerDependencies": {
5
5
  "@ai-table/grid": "^0.0.7"
6
6
  },
package/types/view.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AIRecordIdPath, AITable, AITableAction, AITableField, AITableRecord } from '@ai-table/grid';
2
- import { WritableSignal } from '@angular/core';
2
+ import { Signal, WritableSignal } from '@angular/core';
3
3
  import { Id } from 'ngx-tethys/types';
4
4
  export declare class Positions {
5
5
  [view_id: string]: number;
@@ -37,11 +37,12 @@ export declare enum AITableFilterOperation {
37
37
  exists = "exists",
38
38
  notContain = "not_contain"
39
39
  }
40
+ export type ViewSettings = AITableFilterConditions & AITableSortOptions;
40
41
  export interface AITableView {
41
42
  _id: string;
42
43
  name: string;
43
44
  emoji_icon?: string;
44
- settings?: GridSettings;
45
+ settings?: ViewSettings;
45
46
  }
46
47
  export interface AITableFilterCondition<TValue = unknown> {
47
48
  field_id: Id;
@@ -52,7 +53,7 @@ export interface AITableFilterConditions<TValue = unknown> {
52
53
  condition_logical?: AITableFilterLogical;
53
54
  conditions?: AITableFilterCondition<TValue>[];
54
55
  }
55
- export interface GridSettings<TValue = unknown> extends AITableFilterConditions<TValue> {
56
+ export interface AITableSortOptions {
56
57
  is_keep_sort?: boolean;
57
58
  sorts?: {
58
59
  sort_by: Id;
@@ -64,6 +65,9 @@ export type AIViewIdPath = [string];
64
65
  export interface AIViewTable extends AITable {
65
66
  views: WritableSignal<AITableView[]>;
66
67
  activeViewId: WritableSignal<string>;
68
+ viewsMap: Signal<{
69
+ [key: string]: AITableView;
70
+ }>;
67
71
  apply: (action: AITableSharedAction) => void;
68
72
  }
69
73
  export declare enum ViewActionName {
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../packages/state/src/types/view.ts"],"names":[],"mappings":"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"}
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 CHANGED
@@ -1,5 +1,5 @@
1
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)[];
2
+ import { AITable } from '@ai-table/grid';
3
+ export declare function buildRecordsByView(aiTable: AITable, records: AITableViewRecords, fields: AITableViewFields, activeView: AITableView): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
4
4
  export declare function buildFieldsByView(fields: AITableViewFields, activeView: AITableView): (import("../types").AITableViewRecord | import("../types").AITableViewField)[];
5
5
  //# sourceMappingURL=build.d.ts.map