@ai-table/grid 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/components/cell-editors/cell-editor.scss +20 -0
  2. package/components/cell-editors/number/number-editor.component.d.ts.map +1 -1
  3. package/components/cell-editors/progress/progress-editor.component.d.ts +22 -0
  4. package/components/cell-editors/progress/progress-editor.component.d.ts.map +1 -0
  5. package/components/cell-editors/progress/progress-editor.component.scss +21 -0
  6. package/components/cell-editors/rating/rating-editor.component.d.ts.map +1 -1
  7. package/components/cell-editors/text/text-editor.component.d.ts +9 -1
  8. package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
  9. package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
  10. package/components/index.d.ts +6 -0
  11. package/components/index.d.ts.map +1 -1
  12. package/constants/editor.d.ts.map +1 -1
  13. package/constants/field.d.ts +3 -3
  14. package/constants/grid.d.ts +1 -0
  15. package/constants/grid.d.ts.map +1 -1
  16. package/core/constants/field.d.ts.map +1 -1
  17. package/core/types/core.d.ts +14 -8
  18. package/core/types/core.d.ts.map +1 -1
  19. package/core/utils/field.d.ts +3 -3
  20. package/core/utils/field.d.ts.map +1 -1
  21. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +2 -2
  22. package/esm2022/components/cell-editors/number/number-editor.component.mjs +7 -6
  23. package/esm2022/components/cell-editors/progress/progress-editor.component.mjs +75 -0
  24. package/esm2022/components/cell-editors/rating/rating-editor.component.mjs +7 -6
  25. package/esm2022/components/cell-editors/select/select-editor.component.mjs +3 -3
  26. package/esm2022/components/cell-editors/text/text-editor.component.mjs +54 -21
  27. package/esm2022/components/field-menu/field-menu.component.mjs +3 -3
  28. package/esm2022/components/field-property-editor/field-property-editor.component.mjs +5 -5
  29. package/esm2022/components/index.mjs +7 -1
  30. package/esm2022/constants/editor.mjs +6 -8
  31. package/esm2022/constants/field.mjs +4 -4
  32. package/esm2022/constants/grid.mjs +4 -2
  33. package/esm2022/core/action/general.mjs +4 -4
  34. package/esm2022/core/constants/field.mjs +43 -3
  35. package/esm2022/core/types/core.mjs +6 -2
  36. package/esm2022/core/utils/field.mjs +6 -3
  37. package/esm2022/core/utils/queries.mjs +2 -2
  38. package/esm2022/core/utils/record.mjs +3 -3
  39. package/esm2022/grid.component.mjs +94 -50
  40. package/esm2022/pipes/grid.pipe.mjs +31 -0
  41. package/esm2022/pipes/index.mjs +2 -2
  42. package/esm2022/services/event.service.mjs +37 -24
  43. package/esm2022/services/selection.service.mjs +72 -0
  44. package/esm2022/types/field.mjs +1 -1
  45. package/esm2022/types/grid.mjs +2 -8
  46. package/esm2022/utils/build.mjs +35 -13
  47. package/esm2022/utils/cell.mjs +3 -3
  48. package/fesm2022/ai-table-grid.mjs +649 -397
  49. package/fesm2022/ai-table-grid.mjs.map +1 -1
  50. package/grid.component.d.ts +19 -16
  51. package/grid.component.d.ts.map +1 -1
  52. package/package.json +1 -1
  53. package/pipes/grid.pipe.d.ts +15 -0
  54. package/pipes/grid.pipe.d.ts.map +1 -0
  55. package/pipes/index.d.ts +1 -1
  56. package/pipes/index.d.ts.map +1 -1
  57. package/services/event.service.d.ts +7 -6
  58. package/services/event.service.d.ts.map +1 -1
  59. package/services/{selection.servive.d.ts → selection.service.d.ts} +1 -1
  60. package/services/{selection.servive.d.ts.map → selection.service.d.ts.map} +1 -1
  61. package/styles/styles.scss +6 -10
  62. package/types/field.d.ts +1 -1
  63. package/types/field.d.ts.map +1 -1
  64. package/types/grid.d.ts +8 -6
  65. package/types/grid.d.ts.map +1 -1
  66. package/utils/build.d.ts +3 -2
  67. package/utils/build.d.ts.map +1 -1
  68. package/utils/cell.d.ts +1 -1
  69. package/utils/cell.d.ts.map +1 -1
  70. package/esm2022/pipes/grid.mjs +0 -17
  71. package/esm2022/services/selection.servive.mjs +0 -64
  72. package/pipes/grid.d.ts +0 -9
  73. package/pipes/grid.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai-table-grid.mjs","sources":["../../../packages/grid/src/pipes/grid.ts","../../../packages/grid/src/core/types/core.ts","../../../packages/grid/src/core/types/action.ts","../../../packages/grid/src/core/utils/id-creator.ts","../../../packages/grid/src/core/constants/field.ts","../../../packages/grid/src/core/utils/field.ts","../../../packages/grid/src/core/utils/weak-map.ts","../../../packages/grid/src/core/utils/common.ts","../../../packages/grid/src/core/utils/record.ts","../../../packages/grid/src/core/utils/queries.ts","../../../packages/grid/src/core/action/field.ts","../../../packages/grid/src/core/action/general.ts","../../../packages/grid/src/core/action/record.ts","../../../packages/grid/src/core/action/index.ts","../../../packages/grid/src/utils/build.ts","../../../packages/grid/src/utils/cell.ts","../../../packages/grid/src/constants/grid.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.html","../../../packages/grid/src/services/field.service.ts","../../../packages/grid/src/constants/field.ts","../../../packages/grid/src/components/cell-editors/abstract-cell-editor.component.ts","../../../packages/grid/src/components/cell-editors/text/text-editor.component.ts","../../../packages/grid/src/components/cell-editors/number/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/date-time/date-time-editor.component.ts","../../../packages/grid/src/components/cell-editors/rating/rating-editor.component.ts","../../../packages/grid/src/components/cell-editors/link/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.ts","../../../packages/grid/src/constants/editor.ts","../../../packages/grid/src/services/event.service.ts","../../../packages/grid/src/components/field-menu/field-menu.component.ts","../../../packages/grid/src/components/field-menu/field-menu.component.html","../../../packages/grid/src/services/selection.servive.ts","../../../packages/grid/src/grid.component.ts","../../../packages/grid/src/grid.component.html","../../../packages/grid/src/types/grid.ts","../../../packages/grid/src/ai-table-grid.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { AITableSelectOption } from '../core';\n\n@Pipe({\n name: 'selectOption',\n standalone: true\n})\nexport class SelectOptionPipe implements PipeTransform {\n transform(id: string, options: AITableSelectOption[]) {\n return options.find((item) => item.id === id);\n }\n}\n","import { WritableSignal } from '@angular/core';\nimport { AITableAction } from './action';\nimport { AITableSelection } from '../../types';\nimport { Id } from 'ngx-tethys/types';\n\nexport enum AITableFieldType {\n text = 'text', // 包含多行文本\n richText = 'rich_text', // 包含多行文本\n select = 'select', // 包含单选和多选\n number = 'number',\n date = 'date',\n member = 'member', // 包含单个和多个\n // cascadeSelect = \"cascade_select\", // 包含单选和多选,参数复杂后续再进行设计\n progress = 'progress',\n rate = 'rate',\n link = 'link'\n}\n\nexport enum AITableStatType {\n None = 0,\n CountAll = 1,\n Empty = 2,\n Filled = 3,\n Unique = 4,\n PercentEmpty = 5,\n PercentFilled = 6,\n PercentUnique = 7,\n Sum = 8,\n Average = 9,\n Max = 10,\n Min = 11,\n DateRangeOfDays = 12,\n DateRangeOfMonths = 13,\n Checked = 14,\n UnChecked = 15,\n PercentChecked = 16,\n PercentUnChecked = 17\n}\n\nexport interface AITableSelectOption {\n id: string;\n name: string;\n color?: string;\n}\n\nexport interface AITableField<T = unknown> {\n id: string;\n name: string;\n type: AITableFieldType;\n icon?: string;\n width?: number;\n hidden?: boolean;\n frozen?: boolean;\n statType?: AITableStatType;\n isMultiple?: boolean;\n [key: string]: T | any;\n}\n\nexport type TextFieldValue = string;\n\nexport type SelectFieldValue = Id[]; // 数字\n\nexport type NumberFieldValue = number;\n\nexport type DateFieldValue = { timestamp: number }; // 时间戳\n\nexport type MemberFieldValue = Id[];\n\nexport type ProgressFieldValue = number; // [0,1]\n\nexport type RateFieldValue = 1 | 2 | 3 | 4 | 5;\n\nexport type FieldValue =\n | TextFieldValue\n | SelectFieldValue\n | NumberFieldValue\n | DateFieldValue\n | MemberFieldValue\n | ProgressFieldValue\n | RateFieldValue\n | any;\n\nexport interface AITableRecord {\n id: string;\n checked?: boolean;\n values: Record<string, FieldValue>;\n}\n\nexport type AITableRecords = AITableRecord[];\n\nexport type AITableFields = AITableField[];\n\nexport interface AITableValue {\n records: AITableRecords;\n fields: AITableFields;\n}\n\nexport interface AITable {\n records: WritableSignal<AITableRecords>;\n fields: WritableSignal<AITableFields>;\n actions: AITableAction[];\n selection: WritableSignal<AITableSelection>;\n onChange: () => void;\n apply: (action: AITableAction) => void;\n}\n\nexport interface AITableChangeOptions {\n records: AITableRecord[];\n fields: AITableField[];\n actions: AITableAction[];\n}\n\nexport interface AITableFieldInfo {\n type: AITableFieldType;\n name: string;\n icon: string;\n width: number;\n}\n\nexport type AIPlugin = (aiTable: AITable) => AITable;\n","import { AITableField, AITableRecord } from './core';\n\nexport type AIRecordPath = [number];\n\nexport type AIFieldPath = [number];\n\nexport type AIFieldValuePath = [number, number];\n\nexport type Path = AIRecordPath | AIFieldPath | AIFieldValuePath;\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIFieldValuePath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: AIRecordPath;\n record: AITableRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: AIFieldPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: AIFieldPath;\n newPath: AIFieldPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: AIRecordPath;\n newPath: AIRecordPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: AIFieldPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: AIRecordPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: AIFieldPath;\n field: Partial<AITableField>;\n newField: Partial<AITableField>;\n};\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction;\n","export function idCreator(length = 5) {\n // remove numeral\n const $chars =\n 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /**** Easily confusing characters are removed by default oOLl,9gq,Vv,Uu,I1****/\n const maxPosition = $chars.length;\n let key = '';\n for (let i = 0; i < length; i++) {\n key += $chars.charAt(Math.floor(Math.random() * maxPosition));\n }\n return key;\n}\n","import { AITableFieldInfo, AITableFieldType } from '../types';\nimport { helpers } from 'ngx-tethys/util';\n\nexport const BasicFields = [\n {\n type: AITableFieldType.text,\n name: '文本',\n icon: 'font',\n width: 300\n },\n {\n type: AITableFieldType.select,\n name: '单选',\n icon: 'check-circle',\n width: 200\n },\n {\n type: AITableFieldType.number,\n name: '数字',\n icon: 'hashtag',\n width: 200\n },\n {\n type: AITableFieldType.date,\n name: '日期',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.rate,\n name: '评分',\n icon: 'star-circle',\n width: 200\n },\n {\n type: AITableFieldType.link,\n name: '链接',\n icon: 'link-insert',\n width: 300\n }\n];\n\nexport const Fields: AITableFieldInfo[] = [...BasicFields];\n\nexport const FieldsMap = helpers.keyBy([...BasicFields], 'type');\n","import { FieldsMap } from '../constants/field';\nimport { AITable, AITableFieldType } from '../types';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultFieldValue(type: AITableFieldType) {\n return '';\n}\n\nexport function createDefaultFieldName(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n const fields = aiTable.fields();\n const count = fields.filter((item) => item.type === type).length;\n return count === 0 ? FieldsMap[type].name : FieldsMap[type].name + count;\n}\n\nexport function createDefaultField(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n return { id: idCreator(), type, name: createDefaultFieldName(aiTable, type) };\n}\n","import { AITable } from '../types';\n\nexport const FLUSHING = new WeakMap<AITable, boolean>();\n","import { Actions } from '../action';\nimport { AITable, AITableAction, AITableFields, AITableRecords, Path } from '../types';\nimport { FLUSHING } from './weak-map';\nimport { WritableSignal, signal } from '@angular/core';\n\nexport function createAITable(records: WritableSignal<AITableRecords>, fields: WritableSignal<AITableFields>): AITable {\n const aiTable: AITable = {\n records,\n fields,\n actions: [],\n selection: signal({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n }),\n onChange: () => {},\n apply: (action: AITableAction) => {\n aiTable.actions.push(action);\n Actions.transform(aiTable, action);\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 };\n return aiTable;\n}\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n","import { AITableFields, AITableRecord } from '../types';\nimport { getDefaultFieldValue } from './field';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultRecord(fields: AITableFields) {\n const newRow: AITableRecord = {\n id: idCreator(),\n values: {}\n };\n fields.map((item) => {\n newRow.values[item.id] = getDefaultFieldValue(item.type);\n });\n return newRow;\n}\n","import { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Path, AITable, AITableField, AITableRecord, AIFieldValuePath, AIRecordPath, AIFieldPath } from '../types';\n\nexport const AITableQueries = {\n findPath(aiTable: AITable, field?: AITableField, record?: AITableRecord): Path {\n const recordIndex = record && aiTable.records().indexOf(record);\n const fieldIndex = field && aiTable.fields().indexOf(field);\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1 && !isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [recordIndex!, fieldIndex!] as AIFieldValuePath;\n }\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1) {\n return [recordIndex] as AIRecordPath;\n }\n if (!isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [fieldIndex] as AIFieldPath;\n }\n throw new Error(`can not find the path: ${JSON.stringify({ ...(field || {}), ...(record || {}) })}`);\n },\n getFieldValue(aiTable: AITable, path: [number, number]): any {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!aiTable.records()) {\n throw new Error(`aiTable has no records`);\n }\n if (!aiTable.fields()) {\n throw new Error(`aiTable has no fields`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n\n const field = aiTable.fields()[path[1]];\n if (!field) {\n throw new Error(`can not find field at path [${path}]`);\n }\n return aiTable.records()[path[0]].values[field.id];\n },\n\n getField(aiTable: AITable, path: AIFieldPath): AITableField {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.fields()[path[0]];\n },\n\n getRecord(aiTable: AITable, path: AIRecordPath): AITableRecord {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.records()[path[0]];\n }\n};\n","import {\n ActionName,\n AddFieldAction,\n AIFieldPath,\n AITable,\n AITableField,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function addField(aiTable: AITable, field: AITableField, path: AIFieldPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AITable, path: AIFieldPath, newPath: AIFieldPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeField(aiTable: AITable, path: AIFieldPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField(aiTable: AITable, value: Partial<AITableField>, path: AIFieldPath) {\n const field = AITableQueries.getField(aiTable, path);\n if (field) {\n const oldField: Partial<AITableField> = {};\n const newField: Partial<AITableField> = {};\n for (const k in value) {\n if (field[k] !== value[k]) {\n if (field.hasOwnProperty(k)) {\n oldField[k] = field[k];\n }\n newField[k] = value[k];\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n field: oldField,\n newField,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField\n};\n","import { ActionName, AITable, AITableAction, AITableFields, AITableRecords } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { isPathEqual } from '../utils';\n\nconst apply = (aiTable: AITable, records: AITableRecords, fields: AITableFields, options: AITableAction) => {\n switch (options.type) {\n case ActionName.UpdateFieldValue: {\n const [recordIndex, fieldIndex] = options.path;\n if (fieldIndex > -1 && recordIndex > -1) {\n const fieldId = aiTable.fields()[fieldIndex].id;\n records[recordIndex].values[fieldId] = options.newFieldValue;\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = options.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 0, options.record);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n const newField = options.field;\n fields.splice(fieldIndex, 0, newField);\n const newRecord = {\n [newField.id]: ''\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(options.path, options.newPath)) {\n return;\n }\n const record = records[options.path[0]];\n records.splice(options.path[0], 1);\n records.splice(options.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(options.path, options.newPath)) {\n return;\n }\n const field = fields[options.path[0]];\n fields.splice(options.path[0], 1);\n fields.splice(options.newPath[0], 0, field);\n\n break;\n }\n case ActionName.RemoveField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n const fieldId = aiTable.fields()[fieldIndex].id;\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordIndex] = options.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1, {\n ...fields[fieldIndex],\n ...options.newField\n });\n }\n break;\n }\n }\n return {\n records,\n fields\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AITable, op: AITableAction): void {\n const records = createDraft(aiTable.records());\n const fields = createDraft(aiTable.fields());\n apply(aiTable, records, fields, op);\n aiTable.fields.update(() => {\n return finishDraft(fields);\n });\n aiTable.records.update(() => {\n return finishDraft(records);\n });\n }\n};\n","import {\n ActionName,\n AddRecordAction,\n AIRecordPath,\n UpdateFieldValueAction,\n AITable,\n AITableRecord,\n AIFieldValuePath,\n MoveRecordAction,\n RemoveRecordAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function updateFieldValue(aiTable: AITable, value: any, path: AIFieldValuePath) {\n const field = AITableQueries.getFieldValue(aiTable, path);\n if (field !== value) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: field,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nexport function addRecord(aiTable: AITable, record: AITableRecord, path: AIRecordPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AITable, path: AIRecordPath, newPath: AIRecordPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AITable, path: AIRecordPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { RecordActions } from './record';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions\n};\n","import { AITableFields, AITableRecords, FieldsMap } from '../core';\nimport { AITableGridData, AITableSelection } from '../types';\n\nexport const buildGridData = (recordValue: AITableRecords, fieldsValue: AITableFields, selection: AITableSelection): AITableGridData => {\n return {\n type: 'grid',\n fields: fieldsValue.map(item=>{\n return {\n ...item,\n icon: item.icon || FieldsMap[item.type].icon,\n width: item.width || FieldsMap[item.type].width\n }\n }),\n records: recordValue.map((item) => {\n return { ...item, checked: selection.selectedRecords.has(item.id) };\n })\n };\n};\n","import { computed, Signal } from '@angular/core';\nimport { AITableField, AITableFields, AITableRecord, AITableRecords } from '../core';\n\nexport function getRecordOrField(value: Signal<AITableRecords | AITableFields>, id: string): Signal<AITableField | AITableRecord> {\n return computed(() => {\n return value().find((item) => item.id === id)!;\n });\n}\n","import { AITable, AITableFieldType } from '../core';\n\nexport const DEFAULT_COLUMN_WIDTH = 200;\n\nexport const MIN_COLUMN_WIDTH = 80;\n\nexport const DBL_CLICK_EDIT_TYPE = [\n AITableFieldType.text,\n AITableFieldType.number,\n AITableFieldType.select,\n AITableFieldType.date\n];\n\nexport const RowHeight = {\n Short: 32,\n Medium: 57,\n Tall: 104,\n ExtraTall: 152\n};\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, booleanAttribute, computed, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInput, ThyInputCount, ThyInputGroup, ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyConfirmValidatorDirective, ThyUniqueCheckValidator, ThyFormValidatorConfig, ThyFormModule } from 'ngx-tethys/form';\nimport {\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n} from 'ngx-tethys/dropdown';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { AITable, AITableField, AITableFieldType, Actions, Fields, FieldsMap, createDefaultFieldName } from '../../core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyListItem } from 'ngx-tethys/list';\nimport { of } from 'rxjs';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\n\n@Component({\n selector: 'ai-table-field-property-editor',\n templateUrl: './field-property-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgForOf,\n FormsModule,\n ThyIcon,\n ThyInput,\n ThyInputGroup,\n ThyInputCount,\n ThyInputDirective,\n ThyConfirmValidatorDirective,\n ThyUniqueCheckValidator,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyButton,\n ThyFormModule,\n ThyListItem,\n NgTemplateOutlet,\n ThyAutofocusDirective\n ],\n host: {\n class: 'field-property-editor d-block pl-5 pr-5 pb-5 pt-4'\n },\n styles: [\n `\n :host {\n width: 350px;\n }\n `\n ]\n})\nexport class AITableFieldPropertyEditor {\n aiField = model.required<AITableField>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input() aiExternalTemplate: TemplateRef<any> | null = null;\n\n @Input({ transform: booleanAttribute }) isUpdate!: boolean;\n\n fieldType = computed(() => {\n return FieldsMap[this.aiField().type];\n });\n\n fieldMaxLength = 32;\n\n validatorConfig: ThyFormValidatorConfig = {\n validationMessages: {\n fieldName: {\n required: '列名不能为空',\n thyUniqueCheck: '列名已存在'\n }\n }\n };\n\n selectableFields = Fields;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AITableFieldPropertyEditor>);\n\n constructor() {}\n\n checkUniqueName = (fieldName: string) => {\n fieldName = fieldName?.trim();\n return of(!!this.aiTable.fields()?.find((field) => field.name === fieldName && this.aiField()?.id !== field.id));\n };\n\n selectFieldType(fieldType: AITableFieldType) {\n this.aiField.update((item) => ({ ...item, type: fieldType, name: createDefaultFieldName(this.aiTable, fieldType) }));\n }\n\n editFieldProperty() {\n if (this.isUpdate) {\n const path = this.aiTable.fields().findIndex((item) => item.id === this.aiField().id);\n Actions.setField(this.aiTable, this.aiField(), [path]);\n } else {\n Actions.addField(this.aiTable, this.aiField(), [this.aiTable.fields().length]);\n }\n this.thyPopoverRef.close();\n }\n\n cancel() {\n this.thyPopoverRef.close();\n }\n}\n","<form thyForm name=\"createPropertyForm\" [thyFormValidatorConfig]=\"validatorConfig\" thyLayout=\"vertical\">\n <thy-form-group thyLabelRequired thyLabelText=\"表格列名\">\n <thy-input-group>\n <input\n thyInput\n [thyAutofocus]=\"true\"\n name=\"fieldName\"\n [maxlength]=\"fieldMaxLength\"\n [(ngModel)]=\"aiField().name\"\n required\n placeholder=\"输入列名称\"\n [thyUniqueCheck]=\"checkUniqueName\"\n />\n <ng-template #suffix>\n <thy-input-count></thy-input-count>\n </ng-template>\n </thy-input-group>\n </thy-form-group>\n <thy-form-group thyLabelText=\"列类型\">\n <div class=\"ml-n5 mr-n5\">\n <thy-list-item [thyDropdown]=\"menu\" thyTrigger=\"hover\" thyPlacement=\"right\" class=\"justify-content-between\">\n <span>\n <thy-icon [thyIconName]=\"fieldType().icon\" class=\"text-desc mr-2\"></thy-icon>\n <span>{{ fieldType().name }}</span>\n </span>\n <thy-icon thyIconName=\"angle-right\" class=\"text-desc\"></thy-icon>\n </thy-list-item>\n </div>\n </thy-form-group>\n <ng-container *ngIf=\"aiExternalTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"aiExternalTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <!-- TODO: 内部属性渲染 -->\n </ng-template>\n <thy-form-group-footer thyAlign=\"right\">\n <button thyButton=\"link-secondary\" (click)=\"cancel()\" thySize=\"sm\">取消</button>\n <button thyButton=\"primary\" (thyFormSubmit)=\"editFieldProperty()\" thySize=\"sm\">确定</button>\n </thy-form-group-footer>\n</form>\n\n<thy-dropdown-menu #menu>\n @for (item of selectableFields; track item.type) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"selectFieldType(item.type)\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n </a>\n }\n</thy-dropdown-menu>\n","import { ElementRef, Injectable, ModelSignal, WritableSignal } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { AITable, AITableField, AITableFields } from '../core';\nimport { AITableFieldPropertyEditor } from '../components';\nimport { AIFieldConfig } from '../types';\n\nexport const AI_TABLE_GRID_FIELD_SERVICE_MAP = new WeakMap<AITable, AITableGridFieldService>();\n\n@Injectable()\nexport class AITableGridFieldService {\n aiFieldConfig: AIFieldConfig | undefined;\n\n constructor(private thyPopover: ThyPopover) {}\n\n initAIFieldConfig(aiFieldConfig: AIFieldConfig | undefined) {\n this.aiFieldConfig = aiFieldConfig;\n }\n\n editFieldProperty(origin: HTMLElement | ElementRef<any>, aiTable: AITable, aiField: WritableSignal<AITableField>, isUpdate: boolean) {\n const component = this.aiFieldConfig?.fieldPropertyEditor ?? AITableFieldPropertyEditor;\n this.thyPopover.open(component, {\n origin: origin,\n manualClosure: true,\n placement: 'bottomLeft',\n initialState: {\n aiTable,\n aiField,\n isUpdate\n }\n });\n }\n}\n","import { Actions, AIFieldPath, AITable, AITableField, AITableQueries } from '../core';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP } from '../services/field.service';\nimport { ElementRef, signal, Signal, WritableSignal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../types';\n\nexport const DividerMenuItem = {\n id: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n id: 'editFieldProperty',\n name: '编辑列',\n icon: 'edit',\n exec: (aiTable: AITable, field: Signal<AITableField>, origin?: HTMLElement | ElementRef<any>) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: WritableSignal<AITableField> = signal(JSON.parse(JSON.stringify(field())));\n origin && fieldService?.editFieldProperty(origin, aiTable, copyField, true);\n }\n};\n\nexport const RemoveFieldItem = {\n id: 'removeField',\n name: '删除列',\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const path = AITableQueries.findPath(aiTable, field()) as AIFieldPath;\n Actions.removeField(aiTable, path);\n }\n};\n\nexport const DefaultFieldMenus: AITableFieldMenuItem[] = [EditFieldPropertyItem, RemoveFieldItem];\n","import { ChangeDetectionStrategy, Component, computed, inject, Input, input, OnInit } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Actions, AIFieldValuePath, AITable, AITableField, AITableQueries, AITableRecord } from '../../core';\n\n@Component({\n selector: 'abstract-edit-cell',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport abstract class AbstractEditCellEditor<TValue, TFieldType extends AITableField = AITableField> implements OnInit {\n field = input.required<TFieldType>();\n\n record = input.required<AITableRecord>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n modelValue!: TValue;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AbstractEditCellEditor<TValue>>);\n\n ngOnInit(): void {\n this.modelValue = computed(() => {\n const path = AITableQueries.findPath(this.aiTable, this.field(), this.record()) as AIFieldValuePath;\n return AITableQueries.getFieldValue(this.aiTable, path);\n })();\n }\n\n updateFieldValue() {\n const path = AITableQueries.findPath(this.aiTable, this.field(), this.record()) as AIFieldValuePath;\n Actions.updateFieldValue(this.aiTable, this.modelValue, path);\n }\n\n closePopover() {\n this.thyPopoverRef.close();\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'text-cell-editor',\n template: `<input\n thyInput\n [thyAutofocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (thyEnter)=\"updateValue()\"\n (blur)=\"updateValue()\"\n placeholder=\"\"\n /> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, ThyAutofocusDirective, ThyInputDirective, ThyEnterDirective]\n})\nexport class TextCellEditorComponent extends AbstractEditCellEditor<string> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'number-cell-editor',\n template: `<thy-input-number\n class=\"h-100\"\n [thyAutoFocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (thyEnter)=\"updateValue()\"\n (thyBlur)=\"updateValue()\"\n placeholder=\"\"\n /> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber]\n})\nexport class NumberCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DateEntry, ThyDatePicker } from 'ngx-tethys/date-picker';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\n\n@Component({\n selector: 'date-time-cell-editor',\n template: `\n <thy-date-picker\n class=\"h-100\"\n thyTimestampPrecision=\"milliseconds\"\n thyPlaceHolder=\"选择时间\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"updateValue()\"\n (thyOpenChange)=\"thyOpenChange($event)\"\n [thyAllowClear]=\"true\"\n [thyShowShortcut]=\"true\"\n [thyHasBackdrop]=\"false\"\n [thyShowTime]=\"dateShowTime()\"\n [thyOpen]=\"true\"\n [thyFormat]=\"dateFormat\"\n >\n </thy-date-picker>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyDatePicker, ThyTimePickerModule],\n host: {\n class: 'date-time-cell-editor'\n }\n})\nexport class DateTimeCellEditorComponent extends AbstractEditCellEditor<DateEntry> {\n dateShowTime = input<boolean>(false);\n\n dateFormat = computed(() => {\n return this.dateShowTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n })();\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (!this.modelValue && this.dateShowTime()) {\n this.modelValue = {\n date: 0,\n with_time: 1\n };\n }\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n\n thyOpenChange(isOpen: Boolean) {\n if (!isOpen) {\n this.closePopover();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@Component({\n selector: 'rating-cell-editor',\n template: ` <thy-rate [(ngModel)]=\"modelValue\" (ngModelChange)=\"updateValue()\"></thy-rate> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyRate, ThyTooltipModule]\n})\nexport class RatingCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'link-cell-editor',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber]\n})\nexport class LinkCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { NgForOf, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThySelect } from 'ngx-tethys/select';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyOption } from 'ngx-tethys/shared';\nimport { AITableSelectOption, AITableField } from '../../../core';\n\nexport interface AITableSingleSelectField extends AITableField<AITableSelectOption> {\n options: AITableSelectOption[];\n}\n\n@Component({\n selector: 'single-select-cell-editor',\n template: `<thy-select [(ngModel)]=\"modelValue\" [thyAutoExpand]=\"true\" (thyOnExpandStatusChange)=\"updateValue($event)\">\n <thy-option *ngFor=\"let option of selectOptions()\" [thyValue]=\"option.id\" [thyLabelText]=\"option.name\"> </thy-option>\n </thy-select> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-block h-100'\n },\n imports: [NgIf, NgForOf, FormsModule, ThySelect, ThyOption, ThyTag, ThyIcon]\n})\nexport class SelectCellEditorComponent extends AbstractEditCellEditor<string, AITableSingleSelectField> {\n @Input() isMultiple!: boolean;\n\n selectOptions = computed(() => {\n return this.field().options;\n });\n\n constructor() {\n super();\n }\n\n updateValue(value: boolean) {\n if (!value) {\n this.updateFieldValue();\n this.closePopover();\n }\n }\n}\n","import { AITableFieldType } from '../core';\nimport { TextCellEditorComponent } from '../components/cell-editors/text/text-editor.component';\nimport { NumberCellEditorComponent } from '../components/cell-editors/number/number-editor.component';\nimport { DateTimeCellEditorComponent } from '../components/cell-editors/date-time/date-time-editor.component';\nimport { RatingCellEditorComponent } from '../components/cell-editors/rating/rating-editor.component';\nimport { LinkCellEditorComponent } from '../components/cell-editors/link/number-editor.component';\nimport { SelectCellEditorComponent } from '../components/cell-editors/select/select-editor.component';\n\nexport const GRID_CELL_EDITOR_MAP: Partial<Record<AITableFieldType, any>> = {\n [AITableFieldType.text]: TextCellEditorComponent,\n [AITableFieldType.select]: SelectCellEditorComponent,\n [AITableFieldType.number]: NumberCellEditorComponent,\n [AITableFieldType.date]: DateTimeCellEditorComponent,\n [AITableFieldType.rate]: RatingCellEditorComponent,\n [AITableFieldType.link]: LinkCellEditorComponent\n};\n","import { Injectable, Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Subject } from 'rxjs';\nimport { DBL_CLICK_EDIT_TYPE } from '../constants';\nimport { getRecordOrField } from '../utils';\nimport { AITable, AITableField, AITableFieldType, AITableRecord } from '../core';\nimport { GRID_CELL_EDITOR_MAP } from '../constants/editor';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { AITableGridCellRenderSchema } from '../types';\n\n@Injectable()\nexport class AITableGridEventService {\n aiTable!: AITable;\n\n aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n mousedownEvent$ = new Subject<MouseEvent>();\n\n constructor(private thyPopover: ThyPopover) {}\n\n initialize(aiTable: AITable, aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>) {\n this.aiTable = aiTable;\n this.aiFieldRenderers = aiFieldRenderers;\n }\n\n registerEvents(element: HTMLElement) {\n fromEvent<MouseEvent>(element, 'dblclick')\n .pipe(this.takeUntilDestroyed)\n .subscribe((event) => {\n this.dblClick(event as MouseEvent);\n });\n\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(this.takeUntilDestroyed)\n .subscribe((event) => {\n this.mousedownEvent$.next(event as MouseEvent);\n });\n }\n\n private dblClick(event: MouseEvent) {\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && cellDom.getAttribute('type')! as AITableFieldType;\n if (type && DBL_CLICK_EDIT_TYPE.includes(type)) {\n this.openEdit(cellDom);\n }\n }\n\n private getEditorComponent(type: AITableFieldType) {\n if (this.aiFieldRenderers && this.aiFieldRenderers[type]) {\n return this.aiFieldRenderers[type]!.editor;\n }\n return GRID_CELL_EDITOR_MAP[type];\n }\n\n private openEdit(cellDom: HTMLElement) {\n const { x, y, width, height } = cellDom.getBoundingClientRect();\n const fieldId = cellDom.getAttribute('fieldId')!;\n const recordId = cellDom.getAttribute('recordId')!;\n const field = getRecordOrField(this.aiTable.fields, fieldId) as Signal<AITableField>;\n const record = getRecordOrField(this.aiTable.records, recordId) as Signal<AITableRecord>;\n const component = this.getEditorComponent(field().type);\n this.thyPopover.open(component, {\n origin: cellDom,\n originPosition: {\n x: x - 1,\n y: y + 1,\n width: width + 2,\n height: height + 2\n },\n width: width + 2 + 'px',\n height: height + 2 + 'px',\n placement: 'top',\n offset: -(height + 4),\n minWidth: width,\n initialState: {\n field: field,\n record: record,\n aiTable: this.aiTable\n },\n panelClass: 'grid-cell-editor',\n outsideClosable: false,\n hasBackdrop: false,\n manualClosure: true,\n animationDisabled: true\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, Signal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../../types/field';\nimport { AITable, AITableField } from '../../core';\nimport {\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyDropdownMenuComponent\n} from 'ngx-tethys/dropdown';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { getRecordOrField } from '../../utils';\n\n@Component({\n selector: 'field-menu',\n templateUrl: './field-menu.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ThyIcon,\n ThyDivider,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n ]\n})\nexport class FieldMenu {\n @Input({ required: true }) fieldId!: string;\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input({ required: true }) fieldMenus!: AITableFieldMenuItem[];\n\n @Input() origin!: HTMLElement | ElementRef<any>;\n\n execute(menu: AITableFieldMenuItem) {\n const field = getRecordOrField(this.aiTable.fields, this.fieldId) as Signal<AITableField>;\n menu.exec && menu.exec(this.aiTable, field, this.origin);\n }\n}\n","@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.id === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AITable } from '../core';\n\n@Injectable()\nexport class AITableGridSelectionService {\n aiTable!: AITable;\n\n constructor() {}\n\n initialize(aiTable: AITable) {\n this.aiTable = aiTable;\n }\n\n clearSelection() {\n this.aiTable.selection.set({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n selectCell(recordId: string, fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedCells.set(recordId, { [fieldId]: true });\n }\n\n selectField(fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedFields.set(fieldId, true);\n }\n\n selectRecord(recordId: string) {\n if (this.aiTable.selection().selectedRecords.has(recordId)) {\n this.aiTable.selection().selectedRecords.delete(recordId);\n } else {\n this.aiTable.selection().selectedRecords.set(recordId, true);\n }\n this.aiTable.selection.set({\n selectedRecords: this.aiTable.selection().selectedRecords,\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n toggleSelectAll(checked: boolean) {\n this.clearSelection();\n if (checked) {\n this.aiTable.records().forEach((item) => {\n this.selectRecord(item.id);\n });\n }\n }\n\n updateSelect(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const cellDom = target.closest('.grid-cell');\n const colDom = target.closest('.grid-field');\n if (cellDom) {\n const fieldId = cellDom.getAttribute('fieldId');\n const recordId = cellDom.getAttribute('recordId');\n fieldId && recordId && this.selectCell(recordId, fieldId);\n }\n if (colDom) {\n const fieldId = colDom.getAttribute('fieldId');\n fieldId && this.selectField(fieldId);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, input, model, NgZone, OnInit, output, signal } from '@angular/core';\nimport { CommonModule, NgClass, NgComponentOutlet, NgForOf } from '@angular/common';\nimport { SelectOptionPipe } from './pipes/grid';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { buildGridData } from './utils';\nimport { AIFieldConfig, AITableFieldMenuItem, AITableRowHeight } from './types';\nimport {\n Actions,\n createAITable,\n getDefaultRecord,\n AITable,\n AITableChangeOptions,\n AITableFields,\n AITableFieldType,\n AITableRecords,\n createDefaultField,\n AIPlugin\n} from './core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { AITableGridEventService } from './services/event.service';\nimport { AITableFieldPropertyEditor } from './components/field-property-editor/field-property-editor.component';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { FormsModule } from '@angular/forms';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyTooltipModule, ThyTooltipService } from 'ngx-tethys/tooltip';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { FieldMenu } from './components/field-menu/field-menu.component';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { ThyDropdownDirective, ThyDropdownMenuComponent } from 'ngx-tethys/dropdown';\nimport { DefaultFieldMenus } from './constants';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITableGridFieldService } from './services/field.service';\nimport { AITableGridSelectionService } from './services/selection.servive';\n\n@Component({\n selector: 'ai-table-grid',\n templateUrl: './grid.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ai-table-grid'\n },\n imports: [\n NgForOf,\n NgClass,\n NgComponentOutlet,\n CommonModule,\n FormsModule,\n SelectOptionPipe,\n ThyTag,\n ThyPopoverModule,\n ThyIcon,\n ThyRate,\n AITableFieldPropertyEditor,\n ThyDatePickerFormatPipe,\n ThyTooltipModule,\n ThyFlexibleText,\n ThyStopPropagationDirective,\n FieldMenu,\n ThyAction,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyCheckboxModule\n ],\n providers: [ThyTooltipService, AITableGridEventService, AITableGridFieldService, AITableGridSelectionService]\n})\nexport class AITableGrid implements OnInit {\n aiRecords = model.required<AITableRecords>();\n\n aiFields = model.required<AITableFields>();\n\n aiRowHeight = input<AITableRowHeight>();\n\n aiFieldConfig = input<AIFieldConfig>();\n\n aiReadonly = input<boolean>();\n\n aiPlugins = input<AIPlugin[]>();\n\n AITableFieldType = AITableFieldType;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n aiTable!: AITable;\n\n get isSelectedAll() {\n return this.aiTable.selection().selectedRecords.size === this.aiRecords().length;\n }\n\n onChange = output<AITableChangeOptions>();\n\n aiTableInitialized = output<AITable>();\n\n fieldMenus!: AITableFieldMenuItem[];\n\n gridData = computed(() => {\n return buildGridData(this.aiRecords(), this.aiFields(), this.aiTable.selection());\n });\n\n constructor(\n private elementRef: ElementRef,\n private aiTableGridEventService: AITableGridEventService,\n public aiTableGridSelectionService: AITableGridSelectionService,\n private aiTableGridFieldService: AITableGridFieldService,\n private ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n this.initAITable();\n this.initService();\n this.buildFieldMenus();\n this.ngZone.runOutsideAngular(() => {\n this.aiTableGridEventService.mousedownEvent$.pipe(this.takeUntilDestroyed).subscribe((event) => {\n if ((event as MouseEvent)?.target) {\n this.aiTableGridSelectionService.updateSelect(event as MouseEvent);\n }\n });\n });\n }\n\n initAITable() {\n this.aiTable = createAITable(this.aiRecords, this.aiFields);\n this.aiPlugins()?.forEach((plugin) => {\n this.aiTable = plugin(this.aiTable);\n });\n this.aiTableInitialized.emit(this.aiTable);\n this.aiTable.onChange = () => {\n this.onChange.emit({\n records: this.aiRecords(),\n fields: this.aiFields(),\n actions: this.aiTable.actions\n });\n };\n }\n\n initService() {\n this.aiTableGridEventService.initialize(this.aiTable, this.aiFieldConfig()?.fieldPropertyEditor);\n this.aiTableGridSelectionService.initialize(this.aiTable);\n this.aiTableGridEventService.registerEvents(this.elementRef.nativeElement);\n this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());\n AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);\n }\n\n buildFieldMenus() {\n this.fieldMenus = this.aiFieldConfig()?.fieldMenus ?? DefaultFieldMenus;\n }\n\n addRecord() {\n Actions.addRecord(this.aiTable, getDefaultRecord(this.aiFields()), [this.aiRecords().length]);\n }\n\n selectRecord(recordId: string) {\n this.aiTableGridSelectionService.selectRecord(recordId);\n }\n\n toggleSelectAll(checked: boolean) {\n this.aiTableGridSelectionService.toggleSelectAll(checked);\n }\n\n addField(gridColumnBlank: HTMLElement) {\n const field = signal(createDefaultField(this.aiTable, AITableFieldType.text));\n this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);\n }\n}\n","<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field.id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field.id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field.id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field.id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record.id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: aiTable.selection().selectedRecords.has(record.id) }\">\n <div class=\"grid-row-index\">\n <label\n [ngClass]=\"record.checked ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record.checked\"\n (ngModelChange)=\"selectRecord(record.id)\"\n ></label>\n <span [ngClass]=\"record.checked ? 'grid-row-no-number' : 'grid-row-number'\"> {{ index + 1 }} </span>\n </div>\n @for (field of gridData().fields; track $index) {\n <div\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record.id) || aiTable.selection().selectedFields.has(field.id),\n selected: aiTable.selection().selectedCells.get(record.id)?.hasOwnProperty(field.id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field.id]\"\n [attr.recordId]=\"[record.id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n #cell\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @if (!field.isMultiple && record.values[field.id] | selectOption: field['options']; as selectedOption) {\n <thy-tag [thyColor]=\"selectedOption!.color!\">{{ selectedOption.name }}</thy-tag>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field.id] | thyDatePickerFormat }}\n }\n @case (AITableFieldType.rate) {\n <thy-rate [(ngModel)]=\"record.values[field.id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field.id]?.text\"\n [href]=\"record.values[field.id]?.url\"\n target=\"_blank\"\n >{{ record.values[field.id]?.text }}</a\n >\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field.id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n","import { AITableField, AITableFieldType, AITableRecord } from '../core';\nimport { AITableFieldMenuItem } from './field';\n\nexport enum AITableRowHeight {\n Short = 1,\n Medium = 2,\n Tall = 3,\n ExtraTall = 4\n}\n\nexport interface AITableGridCellRenderSchema {\n editor: any;\n}\n\nexport interface AITableGridData {\n type: 'grid';\n fields: AITableField[];\n records: AITableRecord[];\n}\n\nexport interface AITableSelection {\n selectedRecords: Map<string, boolean>;\n selectedFields: Map<string, boolean>;\n selectedCells: Map<string, {}>;\n}\nexport interface AIFieldConfig {\n fieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>;\n fieldPropertyEditor?: any;\n fieldMenus?: AITableFieldMenuItem[];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.AITableGridEventService","i2.AITableGridSelectionService","i3.AITableGridFieldService","i5"],"mappings":"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"}
1
+ {"version":3,"file":"ai-table-grid.mjs","sources":["../../../packages/grid/src/core/types/core.ts","../../../packages/grid/src/core/types/action.ts","../../../packages/grid/src/core/utils/id-creator.ts","../../../packages/grid/src/core/constants/field.ts","../../../packages/grid/src/core/utils/field.ts","../../../packages/grid/src/core/utils/weak-map.ts","../../../packages/grid/src/core/utils/common.ts","../../../packages/grid/src/core/utils/record.ts","../../../packages/grid/src/core/utils/queries.ts","../../../packages/grid/src/core/action/field.ts","../../../packages/grid/src/core/action/general.ts","../../../packages/grid/src/core/action/record.ts","../../../packages/grid/src/core/action/index.ts","../../../packages/grid/src/components/cell-editors/abstract-cell-editor.component.ts","../../../packages/grid/src/components/cell-editors/date-time/date-time-editor.component.ts","../../../packages/grid/src/components/cell-editors/link/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/number/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/progress/progress-editor.component.ts","../../../packages/grid/src/components/cell-editors/rating/rating-editor.component.ts","../../../packages/grid/src/components/cell-editors/text/text-editor.component.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.html","../../../packages/grid/src/utils/build.ts","../../../packages/grid/src/utils/cell.ts","../../../packages/grid/src/components/field-menu/field-menu.component.ts","../../../packages/grid/src/components/field-menu/field-menu.component.html","../../../packages/grid/src/constants/grid.ts","../../../packages/grid/src/services/field.service.ts","../../../packages/grid/src/constants/field.ts","../../../packages/grid/src/pipes/grid.pipe.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.ts","../../../packages/grid/src/constants/editor.ts","../../../packages/grid/src/services/event.service.ts","../../../packages/grid/src/services/selection.service.ts","../../../packages/grid/src/grid.component.ts","../../../packages/grid/src/grid.component.html","../../../packages/grid/src/ai-table-grid.ts"],"sourcesContent":["import { WritableSignal } from '@angular/core';\nimport { Id } from 'ngx-tethys/types';\nimport { AITableSelection } from '../../types';\nimport { AITableAction } from './action';\n\nexport enum AITableFieldType {\n text = 'text', // 包含多行文本\n richText = 'rich_text', // 包含多行文本\n select = 'select', // 包含单选和多选\n number = 'number',\n date = 'date',\n member = 'member', // 包含单个和多个\n // cascadeSelect = 'cascade_select', // 包含单选和多选,参数复杂后续再进行设计\n progress = 'progress',\n rate = 'rate',\n link = 'link',\n createdAt = 'created_at',\n updatedAt = 'updated_at',\n createdBy = 'created_by',\n updatedBy = 'updated_by'\n}\n\nexport enum AITableStatType {\n None = 0,\n CountAll = 1,\n Empty = 2,\n Filled = 3,\n Unique = 4,\n PercentEmpty = 5,\n PercentFilled = 6,\n PercentUnique = 7,\n Sum = 8,\n Average = 9,\n Max = 10,\n Min = 11,\n DateRangeOfDays = 12,\n DateRangeOfMonths = 13,\n Checked = 14,\n UnChecked = 15,\n PercentChecked = 16,\n PercentUnChecked = 17\n}\n\nexport interface AITableSelectOption {\n _id: string;\n text: string;\n color?: string;\n bg_color?: string;\n [key: string]: any;\n}\n\nexport interface AITableField<T = unknown> {\n _id: string;\n name: string;\n type: AITableFieldType;\n icon?: string;\n width?: number;\n hidden?: boolean;\n frozen?: boolean;\n statType?: AITableStatType;\n readonly?: boolean;\n isMultiple?: boolean;\n [key: string]: T | any;\n}\n\nexport type TextFieldValue = string;\n\nexport type SelectFieldValue = Id[]; // 数字\n\nexport type NumberFieldValue = number;\n\nexport type DateFieldValue = { timestamp: number }; // 时间戳\n\nexport type MemberFieldValue = Id[];\n\nexport type ProgressFieldValue = number; // [0,1]\n\nexport type RateFieldValue = 1 | 2 | 3 | 4 | 5;\n\nexport type FieldValue =\n | TextFieldValue\n | SelectFieldValue\n | NumberFieldValue\n | DateFieldValue\n | MemberFieldValue\n | ProgressFieldValue\n | RateFieldValue\n | any;\n\nexport interface AITableRecord {\n _id: string;\n values: Record<string, FieldValue>;\n}\n\nexport type AITableRecords = AITableRecord[];\n\nexport type AITableFields = AITableField[];\n\nexport interface AITableValue {\n records: AITableRecords;\n fields: AITableFields;\n}\n\nexport interface AITable {\n records: WritableSignal<AITableRecords>;\n fields: WritableSignal<AITableFields>;\n actions: AITableAction[];\n selection: WritableSignal<AITableSelection>;\n onChange: () => void;\n apply: (action: AITableAction) => void;\n}\n\nexport interface AITableChangeOptions {\n records: AITableRecord[];\n fields: AITableField[];\n actions: AITableAction[];\n}\n\nexport interface AITableFieldInfo {\n type: AITableFieldType;\n name: string;\n icon: string;\n width: number;\n}\n\nexport type AIPlugin = (aiTable: AITable) => AITable;\n","import { AITableField, AITableRecord } from './core';\n\nexport type AIRecordPath = [number];\n\nexport type AIFieldPath = [number];\n\nexport type AIFieldValuePath = [number, number];\n\nexport type Path = AIRecordPath | AIFieldPath | AIFieldValuePath;\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIFieldValuePath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: AIRecordPath;\n record: AITableRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: AIFieldPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: AIFieldPath;\n newPath: AIFieldPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: AIRecordPath;\n newPath: AIRecordPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: AIFieldPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: AIRecordPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: AIFieldPath;\n field: Partial<AITableField>;\n newField: Partial<AITableField>;\n};\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction;\n","export function idCreator(length = 5) {\n // remove numeral\n const $chars =\n 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /**** Easily confusing characters are removed by default oOLl,9gq,Vv,Uu,I1****/\n const maxPosition = $chars.length;\n let key = '';\n for (let i = 0; i < length; i++) {\n key += $chars.charAt(Math.floor(Math.random() * maxPosition));\n }\n return key;\n}\n","import { helpers } from 'ngx-tethys/util';\nimport { AITableFieldInfo, AITableFieldType } from '../types';\n\nexport const BasicFields = [\n {\n type: AITableFieldType.text,\n name: '单行文本',\n icon: 'font',\n width: 300\n },\n // 多行文本\n {\n type: AITableFieldType.select,\n name: '单选',\n icon: 'check-circle',\n width: 200\n },\n // 多选\n {\n type: AITableFieldType.number,\n name: '数字',\n icon: 'hashtag',\n width: 200\n },\n {\n type: AITableFieldType.date,\n name: '日期',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.member,\n name: '成员',\n icon: 'user',\n width: 200\n },\n // 级联单选\n // 级联多选\n {\n type: AITableFieldType.progress,\n name: '进度',\n icon: 'progress',\n width: 200\n },\n {\n type: AITableFieldType.rate,\n name: '评分',\n icon: 'star-circle',\n width: 200\n },\n {\n type: AITableFieldType.link,\n name: '链接',\n icon: 'link-insert',\n width: 300\n },\n {\n type: AITableFieldType.createdBy,\n name: '创建人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.createdAt,\n name: '创建时间',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.updatedBy,\n name: '更新人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.updatedAt,\n name: '更新时间',\n icon: 'calendar',\n width: 200\n }\n];\n\nexport const Fields: AITableFieldInfo[] = [...BasicFields];\n\nexport const FieldsMap = helpers.keyBy([...BasicFields], 'type');\n","import { FieldsMap } from '../constants/field';\nimport { AITable, AITableField, AITableFieldType } from '../types';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultFieldValue(field: AITableField) {\n if ([AITableFieldType.member, AITableFieldType.createdBy, AITableFieldType.updatedBy].includes(field.type)) {\n return [];\n }\n return '';\n}\n\nexport function createDefaultFieldName(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n const fields = aiTable.fields();\n const count = fields.filter((item) => item.type === type).length;\n return count === 0 ? FieldsMap[type].name : FieldsMap[type].name + count;\n}\n\nexport function createDefaultField(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n return { _id: idCreator(), type, name: createDefaultFieldName(aiTable, type) };\n}\n","import { AITable } from '../types';\n\nexport const FLUSHING = new WeakMap<AITable, boolean>();\n","import { Actions } from '../action';\nimport { AITable, AITableAction, AITableFields, AITableRecords, Path } from '../types';\nimport { FLUSHING } from './weak-map';\nimport { WritableSignal, signal } from '@angular/core';\n\nexport function createAITable(records: WritableSignal<AITableRecords>, fields: WritableSignal<AITableFields>): AITable {\n const aiTable: AITable = {\n records,\n fields,\n actions: [],\n selection: signal({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n }),\n onChange: () => {},\n apply: (action: AITableAction) => {\n aiTable.actions.push(action);\n Actions.transform(aiTable, action);\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 };\n return aiTable;\n}\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n","import { AITableFields, AITableRecord } from '../types';\nimport { getDefaultFieldValue } from './field';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultRecord(fields: AITableFields) {\n const newRow: AITableRecord = {\n _id: idCreator(),\n values: {}\n };\n fields.map((item) => {\n newRow.values[item._id] = getDefaultFieldValue(item);\n });\n return newRow;\n}\n","import { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Path, AITable, AITableField, AITableRecord, AIFieldValuePath, AIRecordPath, AIFieldPath } from '../types';\n\nexport const AITableQueries = {\n findPath(aiTable: AITable, field?: AITableField, record?: AITableRecord): Path {\n const recordIndex = record && aiTable.records().indexOf(record);\n const fieldIndex = field && aiTable.fields().indexOf(field);\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1 && !isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [recordIndex!, fieldIndex!] as AIFieldValuePath;\n }\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1) {\n return [recordIndex] as AIRecordPath;\n }\n if (!isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [fieldIndex] as AIFieldPath;\n }\n throw new Error(`can not find the path: ${JSON.stringify({ ...(field || {}), ...(record || {}) })}`);\n },\n getFieldValue(aiTable: AITable, path: [number, number]): any {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!aiTable.records()) {\n throw new Error(`aiTable has no records`);\n }\n if (!aiTable.fields()) {\n throw new Error(`aiTable has no fields`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n\n const field = aiTable.fields()[path[1]];\n if (!field) {\n throw new Error(`can not find field at path [${path}]`);\n }\n return aiTable.records()[path[0]].values[field._id];\n },\n\n getField(aiTable: AITable, path: AIFieldPath): AITableField {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.fields()[path[0]];\n },\n\n getRecord(aiTable: AITable, path: AIRecordPath): AITableRecord {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.records()[path[0]];\n }\n};\n","import {\n ActionName,\n AddFieldAction,\n AIFieldPath,\n AITable,\n AITableField,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function addField(aiTable: AITable, field: AITableField, path: AIFieldPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AITable, path: AIFieldPath, newPath: AIFieldPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeField(aiTable: AITable, path: AIFieldPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField(aiTable: AITable, value: Partial<AITableField>, path: AIFieldPath) {\n const field = AITableQueries.getField(aiTable, path);\n if (field) {\n const oldField: Partial<AITableField> = {};\n const newField: Partial<AITableField> = {};\n for (const k in value) {\n if (field[k] !== value[k]) {\n if (field.hasOwnProperty(k)) {\n oldField[k] = field[k];\n }\n newField[k] = value[k];\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n field: oldField,\n newField,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField\n};\n","import { ActionName, AITable, AITableAction, AITableFields, AITableRecords } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { isPathEqual } from '../utils';\n\nconst apply = (aiTable: AITable, records: AITableRecords, fields: AITableFields, options: AITableAction) => {\n switch (options.type) {\n case ActionName.UpdateFieldValue: {\n const [recordIndex, fieldIndex] = options.path;\n if (fieldIndex > -1 && recordIndex > -1) {\n const fieldId = aiTable.fields()[fieldIndex]._id;\n records[recordIndex].values[fieldId] = options.newFieldValue;\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = options.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 0, options.record);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n const newField = options.field;\n fields.splice(fieldIndex, 0, newField);\n const newRecord = {\n [newField._id]: ''\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(options.path, options.newPath)) {\n return;\n }\n const record = records[options.path[0]];\n records.splice(options.path[0], 1);\n records.splice(options.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(options.path, options.newPath)) {\n return;\n }\n const field = fields[options.path[0]];\n fields.splice(options.path[0], 1);\n fields.splice(options.newPath[0], 0, field);\n\n break;\n }\n case ActionName.RemoveField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n const fieldId = aiTable.fields()[fieldIndex]._id;\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordIndex] = options.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const [fieldIndex] = options.path;\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1, {\n ...fields[fieldIndex],\n ...options.newField\n });\n }\n break;\n }\n }\n return {\n records,\n fields\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AITable, op: AITableAction): void {\n const records = createDraft(aiTable.records());\n const fields = createDraft(aiTable.fields());\n apply(aiTable, records, fields, op);\n aiTable.fields.update(() => {\n return finishDraft(fields);\n });\n aiTable.records.update(() => {\n return finishDraft(records);\n });\n }\n};\n","import {\n ActionName,\n AddRecordAction,\n AIRecordPath,\n UpdateFieldValueAction,\n AITable,\n AITableRecord,\n AIFieldValuePath,\n MoveRecordAction,\n RemoveRecordAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function updateFieldValue(aiTable: AITable, value: any, path: AIFieldValuePath) {\n const field = AITableQueries.getFieldValue(aiTable, path);\n if (field !== value) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: field,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nexport function addRecord(aiTable: AITable, record: AITableRecord, path: AIRecordPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AITable, path: AIRecordPath, newPath: AIRecordPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AITable, path: AIRecordPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { RecordActions } from './record';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions\n};\n","import { ChangeDetectionStrategy, Component, computed, inject, Input, input, OnInit } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Actions, AIFieldValuePath, AITable, AITableField, AITableQueries, AITableRecord } from '../../core';\n\n@Component({\n selector: 'abstract-edit-cell',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport abstract class AbstractEditCellEditor<TValue, TFieldType extends AITableField = AITableField> implements OnInit {\n field = input.required<TFieldType>();\n\n record = input.required<AITableRecord>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n modelValue!: TValue;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AbstractEditCellEditor<TValue>>);\n\n ngOnInit(): void {\n this.modelValue = computed(() => {\n const path = AITableQueries.findPath(this.aiTable, this.field(), this.record()) as AIFieldValuePath;\n return AITableQueries.getFieldValue(this.aiTable, path);\n })();\n }\n\n updateFieldValue() {\n const path = AITableQueries.findPath(this.aiTable, this.field(), this.record()) as AIFieldValuePath;\n Actions.updateFieldValue(this.aiTable, this.modelValue, path);\n }\n\n closePopover() {\n this.thyPopoverRef?.close();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DateEntry, ThyDatePicker } from 'ngx-tethys/date-picker';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\n\n@Component({\n selector: 'date-time-cell-editor',\n template: `\n <thy-date-picker\n class=\"h-100\"\n thyTimestampPrecision=\"milliseconds\"\n thyPlaceHolder=\"选择时间\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"updateValue()\"\n (thyOpenChange)=\"thyOpenChange($event)\"\n [thyAllowClear]=\"true\"\n [thyShowShortcut]=\"true\"\n [thyHasBackdrop]=\"false\"\n [thyShowTime]=\"dateShowTime()\"\n [thyOpen]=\"true\"\n [thyFormat]=\"dateFormat\"\n >\n </thy-date-picker>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyDatePicker, ThyTimePickerModule],\n host: {\n class: 'date-time-cell-editor'\n }\n})\nexport class DateTimeCellEditorComponent extends AbstractEditCellEditor<DateEntry> {\n dateShowTime = input<boolean>(false);\n\n dateFormat = computed(() => {\n return this.dateShowTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n })();\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (!this.modelValue && this.dateShowTime()) {\n this.modelValue = {\n date: 0,\n with_time: 1\n };\n }\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n\n thyOpenChange(isOpen: Boolean) {\n if (!isOpen) {\n this.closePopover();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'link-cell-editor',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber]\n})\nexport class LinkCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'number-cell-editor',\n template: `<thy-input-number\n class=\"h-100\"\n [thyAutoFocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (thyEnter)=\"updateValue()\"\n (thyBlur)=\"updateValue()\"\n /> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber],\n host: {\n class: 'number-cell-editor'\n }\n})\nexport class NumberCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThySlider, ThySliderSize, ThySliderType } from 'ngx-tethys/slider';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\nexport interface AITableProgressConfig {\n max?: number;\n min?: number;\n step?: number;\n progressType?: ThySliderType;\n suffix?: string;\n size?: ThySliderSize;\n}\n\n@Component({\n selector: 'progress-editor',\n template: `\n <thy-slider\n [(ngModel)]=\"modelValue\"\n [thyMax]=\"config?.max || 100\"\n [thyMin]=\"config?.min || 0\"\n [thyStep]=\"config?.step || 1\"\n [thyType]=\"config?.progressType || 'success'\"\n [thySize]=\"config?.size || 'md'\"\n (ngModelChange)=\"updateValue($event)\"\n (mousedown)=\"sliderMousedownHandler($event)\"\n ></thy-slider>\n <span class=\"progress-text\">{{ modelValue }}{{ config?.suffix || '%' }}</span>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThySlider],\n host: {\n class: 'grid-cell progress-editor',\n '[attr.type]': 'field().type',\n '[attr.fieldId]': 'field()._id',\n '[attr.recordId]': 'record()._id'\n }\n})\nexport class ProgressEditorComponent extends AbstractEditCellEditor<number> implements OnInit {\n config: Partial<AITableProgressConfig | undefined> = {\n max: 100,\n min: 0,\n step: 1,\n progressType: 'success',\n suffix: '%',\n size: 'md'\n };\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event: Event) {\n event.preventDefault();\n }\n\n constructor() {\n super();\n }\n\n sliderMousedownHandler(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n updateValue(value: number) {\n this.updateFieldValue();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'rating-cell-editor',\n template: ` <thy-rate [(ngModel)]=\"modelValue\" (ngModelChange)=\"updateValue()\"></thy-rate> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyRate],\n host: {\n class: 'd-flex align-items-center h-100 px-3'\n }\n})\nexport class RatingCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n }\n}\n","import { NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'text-cell-editor',\n template: `\n <textarea\n placeholder=\"\"\n rows=\"1\"\n thyInput\n [thyAutofocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"valueChange()\"\n (thyEnter)=\"updateValue()\"\n (blur)=\"updateValue()\"\n ></textarea>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, ThyAutofocusDirective, ThyInputDirective, ThyEnterDirective],\n host: {\n class: 'text-cell-editor'\n }\n})\nexport class TextCellEditorComponent extends AbstractEditCellEditor<string> implements AfterViewInit {\n private elementRef = inject(ElementRef);\n\n private render2 = inject(Renderer2);\n\n private maxHeight = 148;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.updateStyle();\n });\n }\n\n updateStyle() {\n const textarea = this.elementRef.nativeElement.querySelector('textarea');\n const height = textarea.scrollHeight < this.maxHeight ? textarea.scrollHeight : this.maxHeight;\n\n this.render2.setStyle(textarea, 'height', `${height}px`);\n this.render2.setStyle(textarea, 'min-height', `44px`);\n this.render2.setStyle(textarea, 'max-height', `${this.maxHeight}px`);\n this.render2.setStyle(textarea, 'resize', 'none');\n }\n\n valueChange() {\n this.updateStyle();\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, booleanAttribute, computed, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInput, ThyInputCount, ThyInputGroup, ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyConfirmValidatorDirective, ThyUniqueCheckValidator, ThyFormValidatorConfig, ThyFormModule } from 'ngx-tethys/form';\nimport {\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n} from 'ngx-tethys/dropdown';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { AITable, AITableField, AITableFieldType, Actions, Fields, FieldsMap, createDefaultFieldName } from '../../core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyListItem } from 'ngx-tethys/list';\nimport { of } from 'rxjs';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\n\n@Component({\n selector: 'ai-table-field-property-editor',\n templateUrl: './field-property-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgForOf,\n FormsModule,\n ThyIcon,\n ThyInput,\n ThyInputGroup,\n ThyInputCount,\n ThyInputDirective,\n ThyConfirmValidatorDirective,\n ThyUniqueCheckValidator,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyButton,\n ThyFormModule,\n ThyListItem,\n NgTemplateOutlet,\n ThyAutofocusDirective\n ],\n host: {\n class: 'field-property-editor d-block pl-5 pr-5 pb-5 pt-4'\n },\n styles: [\n `\n :host {\n width: 350px;\n }\n `\n ]\n})\nexport class AITableFieldPropertyEditor {\n aiField = model.required<AITableField>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input() aiExternalTemplate: TemplateRef<any> | null = null;\n\n @Input({ transform: booleanAttribute }) isUpdate!: boolean;\n\n fieldType = computed(() => {\n return FieldsMap[this.aiField().type];\n });\n\n fieldMaxLength = 32;\n\n validatorConfig: ThyFormValidatorConfig = {\n validationMessages: {\n fieldName: {\n required: '列名不能为空',\n thyUniqueCheck: '列名已存在'\n }\n }\n };\n\n selectableFields = Fields;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AITableFieldPropertyEditor>);\n\n constructor() {}\n\n checkUniqueName = (fieldName: string) => {\n fieldName = fieldName?.trim();\n return of(!!this.aiTable.fields()?.find((field) => field.name === fieldName && this.aiField()?._id !== field._id));\n };\n\n selectFieldType(fieldType: AITableFieldType) {\n this.aiField.update((item) => ({ ...item, type: fieldType, name: createDefaultFieldName(this.aiTable, fieldType) }));\n }\n\n editFieldProperty() {\n if (this.isUpdate) {\n const path = this.aiTable.fields().findIndex((item) => item._id === this.aiField()._id);\n Actions.setField(this.aiTable, this.aiField(), [path]);\n } else {\n Actions.addField(this.aiTable, this.aiField(), [this.aiTable.fields().length]);\n }\n this.thyPopoverRef.close();\n }\n\n cancel() {\n this.thyPopoverRef.close();\n }\n}\n","<form thyForm name=\"createPropertyForm\" [thyFormValidatorConfig]=\"validatorConfig\" thyLayout=\"vertical\">\n <thy-form-group thyLabelRequired thyLabelText=\"表格列名\">\n <thy-input-group>\n <input\n thyInput\n [thyAutofocus]=\"true\"\n name=\"fieldName\"\n [maxlength]=\"fieldMaxLength\"\n [(ngModel)]=\"aiField().name\"\n required\n placeholder=\"输入列名称\"\n [thyUniqueCheck]=\"checkUniqueName\"\n />\n <ng-template #suffix>\n <thy-input-count></thy-input-count>\n </ng-template>\n </thy-input-group>\n </thy-form-group>\n <thy-form-group thyLabelText=\"列类型\">\n <div class=\"ml-n5 mr-n5\">\n <thy-list-item [thyDropdown]=\"menu\" thyTrigger=\"hover\" thyPlacement=\"right\" class=\"justify-content-between\">\n <span>\n <thy-icon [thyIconName]=\"fieldType().icon\" class=\"text-desc mr-2\"></thy-icon>\n <span>{{ fieldType().name }}</span>\n </span>\n <thy-icon thyIconName=\"angle-right\" class=\"text-desc\"></thy-icon>\n </thy-list-item>\n </div>\n </thy-form-group>\n <ng-container *ngIf=\"aiExternalTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"aiExternalTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <!-- TODO: 内部属性渲染 -->\n </ng-template>\n <thy-form-group-footer thyAlign=\"right\">\n <button thyButton=\"link-secondary\" (click)=\"cancel()\" thySize=\"sm\">取消</button>\n <button thyButton=\"primary\" (thyFormSubmit)=\"editFieldProperty()\" thySize=\"sm\">确定</button>\n </thy-form-group-footer>\n</form>\n\n<thy-dropdown-menu #menu>\n @for (item of selectableFields; track $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"selectFieldType(item.type)\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n </a>\n }\n</thy-dropdown-menu>\n","import { createDraft, finishDraft } from 'immer';\nimport { AITableFields, AITableFieldType, AITableRecords, FieldsMap } from '../core';\nimport { AITableGridData, AITableReferences, AITableSelection, AITableUserInfo } from '../types';\n\nexport const buildGridData = (recordValue: AITableRecords, fieldsValue: AITableFields, references?: AITableReferences): AITableGridData => {\n const fields = fieldsValue.map((item) => {\n return {\n ...item,\n icon: item.icon || FieldsMap[item.type].icon,\n width: item.width || FieldsMap[item.type].width\n };\n });\n let records = buildRecordsByReferences(recordValue, fieldsValue, references);\n return {\n type: 'grid',\n fields,\n records\n };\n};\n\nexport function buildRecordsByReferences(records: AITableRecords, fields: AITableFields, references?: AITableReferences) {\n if (!references) {\n return records;\n }\n const memberFields = fields.filter((field) =>\n [AITableFieldType.createdBy, AITableFieldType.updatedBy, AITableFieldType.member].includes(field.type)\n );\n if (memberFields.length) {\n const uidToMember = references.members.reduce(\n (map: { [key: string]: any }, member: AITableUserInfo) => {\n map[member.uid!] = member;\n return map;\n },\n {} as Record<string, AITableUserInfo>\n );\n const draftRecords = createDraft(records);\n draftRecords.forEach((record) => {\n memberFields.forEach((field) => {\n const value = record.values[field._id];\n record.values[field._id] = value.map((uid: string) => uidToMember[uid]).filter(Boolean);\n });\n });\n records = finishDraft(draftRecords);\n }\n return records;\n}\n","import { computed, Signal } from '@angular/core';\nimport { AITableField, AITableFields, AITableRecord, AITableRecords } from '../core';\n\nexport function getRecordOrField(value: Signal<AITableRecords | AITableFields>, _id: string): Signal<AITableField | AITableRecord> {\n return computed(() => {\n return value().find((item) => item._id === _id)!;\n });\n}\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, Signal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../../types/field';\nimport { AITable, AITableField } from '../../core';\nimport {\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyDropdownMenuComponent\n} from 'ngx-tethys/dropdown';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { getRecordOrField } from '../../utils';\n\n@Component({\n selector: 'field-menu',\n templateUrl: './field-menu.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ThyIcon,\n ThyDivider,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n ]\n})\nexport class FieldMenu {\n @Input({ required: true }) fieldId!: string;\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input({ required: true }) fieldMenus!: AITableFieldMenuItem[];\n\n @Input() origin!: HTMLElement | ElementRef<any>;\n\n execute(menu: AITableFieldMenuItem) {\n const field = getRecordOrField(this.aiTable.fields, this.fieldId) as Signal<AITableField>;\n menu.exec && menu.exec(this.aiTable, field, this.origin);\n }\n}\n","@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n}\n","import { AITableFieldType } from '../core';\n\nexport const DEFAULT_COLUMN_WIDTH = 200;\n\nexport const MIN_COLUMN_WIDTH = 80;\n\nexport const DBL_CLICK_EDIT_TYPE = [\n AITableFieldType.text,\n AITableFieldType.number,\n AITableFieldType.select,\n AITableFieldType.date,\n AITableFieldType.member\n];\n\nexport const MOUSEOVER_EDIT_TYPE = [AITableFieldType.progress];\n\nexport const RowHeight = {\n Short: 32,\n Medium: 57,\n Tall: 104,\n ExtraTall: 152\n};\n","import { ElementRef, Injectable, ModelSignal, WritableSignal } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { AITable, AITableField, AITableFields } from '../core';\nimport { AITableFieldPropertyEditor } from '../components';\nimport { AIFieldConfig } from '../types';\n\nexport const AI_TABLE_GRID_FIELD_SERVICE_MAP = new WeakMap<AITable, AITableGridFieldService>();\n\n@Injectable()\nexport class AITableGridFieldService {\n aiFieldConfig: AIFieldConfig | undefined;\n\n constructor(private thyPopover: ThyPopover) {}\n\n initAIFieldConfig(aiFieldConfig: AIFieldConfig | undefined) {\n this.aiFieldConfig = aiFieldConfig;\n }\n\n editFieldProperty(origin: HTMLElement | ElementRef<any>, aiTable: AITable, aiField: WritableSignal<AITableField>, isUpdate: boolean) {\n const component = this.aiFieldConfig?.fieldPropertyEditor ?? AITableFieldPropertyEditor;\n this.thyPopover.open(component, {\n origin: origin,\n manualClosure: true,\n placement: 'bottomLeft',\n initialState: {\n aiTable,\n aiField,\n isUpdate\n }\n });\n }\n}\n","import { Actions, AIFieldPath, AITable, AITableField, AITableQueries } from '../core';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP } from '../services/field.service';\nimport { ElementRef, signal, Signal, WritableSignal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../types';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n type: 'editFieldProperty',\n name: '编辑列',\n icon: 'edit',\n exec: (aiTable: AITable, field: Signal<AITableField>, origin?: HTMLElement | ElementRef<any>) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: WritableSignal<AITableField> = signal(JSON.parse(JSON.stringify(field())));\n origin && fieldService?.editFieldProperty(origin, aiTable, copyField, true);\n }\n};\n\nexport const RemoveFieldItem = {\n type: 'removeField',\n name: '删除列',\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n const path = AITableQueries.findPath(aiTable, field()) as AIFieldPath;\n Actions.removeField(aiTable, path);\n }\n};\n\nexport const DefaultFieldMenus: AITableFieldMenuItem[] = [EditFieldPropertyItem, RemoveFieldItem];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AITableSelectOption } from '../core';\nimport { AITableSelection } from '../types';\n\n@Pipe({\n name: 'selectOption',\n standalone: true\n})\nexport class SelectOptionPipe implements PipeTransform {\n transform(_id: string, options: AITableSelectOption[]) {\n return options.find((item) => item._id === _id);\n }\n}\n\n@Pipe({\n name: 'isSelectRecord',\n standalone: true\n})\nexport class IsSelectRecordPipe implements PipeTransform {\n transform(recordId: string, selection: AITableSelection) {\n return selection.selectedRecords.has(recordId);\n }\n}\n","import { NgForOf, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThySelect } from 'ngx-tethys/select';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyOption } from 'ngx-tethys/shared';\nimport { AITableSelectOption, AITableField } from '../../../core';\n\nexport interface AITableSingleSelectField extends AITableField<AITableSelectOption> {\n options: AITableSelectOption[];\n}\n\n@Component({\n selector: 'single-select-cell-editor',\n template: `<thy-select [(ngModel)]=\"modelValue\" [thyAutoExpand]=\"true\" (thyOnExpandStatusChange)=\"updateValue($event)\">\n <thy-option *ngFor=\"let option of selectOptions()\" [thyValue]=\"option._id\" [thyLabelText]=\"option.text\"> </thy-option>\n </thy-select> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-block h-100'\n },\n imports: [NgIf, NgForOf, FormsModule, ThySelect, ThyOption, ThyTag, ThyIcon]\n})\nexport class SelectCellEditorComponent extends AbstractEditCellEditor<string, AITableSingleSelectField> {\n @Input() isMultiple!: boolean;\n\n selectOptions = computed(() => {\n return this.field().options;\n });\n\n constructor() {\n super();\n }\n\n updateValue(value: boolean) {\n if (!value) {\n this.updateFieldValue();\n this.closePopover();\n }\n }\n}\n","import {\n DateTimeCellEditorComponent,\n LinkCellEditorComponent,\n NumberCellEditorComponent,\n ProgressEditorComponent,\n RatingCellEditorComponent,\n TextCellEditorComponent\n} from '../components';\nimport { SelectCellEditorComponent } from '../components/cell-editors/select/select-editor.component';\nimport { AITableFieldType } from '../core';\n\nexport const GRID_CELL_EDITOR_MAP: Partial<Record<AITableFieldType, any>> = {\n [AITableFieldType.text]: TextCellEditorComponent,\n [AITableFieldType.richText]: TextCellEditorComponent,\n [AITableFieldType.select]: SelectCellEditorComponent,\n [AITableFieldType.number]: NumberCellEditorComponent,\n [AITableFieldType.date]: DateTimeCellEditorComponent,\n [AITableFieldType.rate]: RatingCellEditorComponent,\n [AITableFieldType.link]: LinkCellEditorComponent,\n [AITableFieldType.progress]: ProgressEditorComponent\n};\n","import { DestroyRef, inject, Injectable, Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { debounceTime, fromEvent, Subject } from 'rxjs';\nimport { GRID_CELL_EDITOR_MAP } from '../constants/editor';\nimport { AITable, AITableField, AITableFieldType, AITableRecord } from '../core';\nimport { AITableGridCellRenderSchema } from '../types';\nimport { getRecordOrField } from '../utils';\n\n@Injectable()\nexport class AITableGridEventService {\n aiTable!: AITable;\n\n aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>;\n\n dblClickEvent$ = new Subject<MouseEvent>();\n\n mousedownEvent$ = new Subject<MouseEvent>();\n\n mouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMousedownEvent$ = new Subject<MouseEvent>();\n\n private destroyRef = inject(DestroyRef);\n\n private thyPopover = inject(ThyPopover);\n\n initialize(aiTable: AITable, aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>) {\n this.aiTable = aiTable;\n this.aiFieldRenderers = aiFieldRenderers;\n }\n\n registerEvents(element: HTMLElement) {\n fromEvent<MouseEvent>(element, 'dblclick')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.dblClickEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mouseover')\n .pipe(debounceTime(80), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mousedownEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMousedownEvent$.next(event as MouseEvent);\n });\n }\n\n private getEditorComponent(type: AITableFieldType) {\n if (this.aiFieldRenderers && this.aiFieldRenderers[type]) {\n return this.aiFieldRenderers[type]!.editor;\n }\n return GRID_CELL_EDITOR_MAP[type];\n }\n\n openEdit(cellDom: HTMLElement) {\n const { x, y, width, height } = cellDom.getBoundingClientRect();\n const fieldId = cellDom.getAttribute('fieldId')!;\n const recordId = cellDom.getAttribute('recordId')!;\n const field = getRecordOrField(this.aiTable.fields, fieldId) as Signal<AITableField>;\n const record = getRecordOrField(this.aiTable.records, recordId) as Signal<AITableRecord>;\n const component = this.getEditorComponent(field().type);\n const ref = this.thyPopover.open(component, {\n origin: cellDom,\n originPosition: {\n x: x - 1,\n y: y + 1,\n width: width + 2,\n height: height + 2\n },\n width: width + 1 + 'px',\n height: height + 2 + 'px',\n placement: 'top',\n offset: -(height + 4),\n minWidth: width,\n initialState: {\n field: field,\n record: record,\n aiTable: this.aiTable\n },\n panelClass: 'grid-cell-editor',\n outsideClosable: false,\n hasBackdrop: false,\n manualClosure: true,\n animationDisabled: true,\n autoAdaptive: true\n });\n return ref;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AITable } from '../core';\n\n@Injectable()\nexport class AITableGridSelectionService {\n aiTable!: AITable;\n\n constructor() {}\n\n initialize(aiTable: AITable) {\n this.aiTable = aiTable;\n }\n\n clearSelection() {\n this.aiTable.selection.set({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n selectCell(recordId: string, fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedCells.set(recordId, { [fieldId]: true });\n }\n\n selectField(fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedFields.set(fieldId, true);\n }\n\n selectRecord(recordId: string) {\n if (this.aiTable.selection().selectedRecords.has(recordId)) {\n this.aiTable.selection().selectedRecords.delete(recordId);\n } else {\n this.aiTable.selection().selectedRecords.set(recordId, true);\n }\n this.aiTable.selection.set({\n selectedRecords: this.aiTable.selection().selectedRecords,\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n toggleSelectAll(checked: boolean) {\n this.clearSelection();\n if (checked) {\n this.aiTable.records().forEach((item) => {\n this.selectRecord(item._id);\n });\n }\n }\n\n updateSelect(event: MouseEvent) {\n const target = event?.target as HTMLElement;\n if (!target) {\n return;\n }\n const cellDom = target.closest('.grid-cell');\n const colDom = target.closest('.grid-field');\n const checkbox = target.tagName === 'INPUT' && (target as HTMLInputElement).type === 'checkbox' && target.closest('.grid-checkbox');\n const fieldAction = target.closest('.grid-field-action');\n if (cellDom) {\n const fieldId = cellDom.getAttribute('fieldId');\n const recordId = cellDom.getAttribute('recordId');\n fieldId && recordId && this.selectCell(recordId, fieldId);\n }\n if (colDom && !fieldAction) {\n const fieldId = colDom.getAttribute('fieldId');\n fieldId && this.selectField(fieldId);\n }\n if (!cellDom && !colDom && !checkbox) {\n this.clearSelection();\n }\n }\n}\n","import { CommonModule, NgClass, NgComponentOutlet, NgForOf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n NgZone,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyDropdownDirective, ThyDropdownMenuComponent } from 'ngx-tethys/dropdown';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverModule, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyProgress } from 'ngx-tethys/progress';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { mergeWith } from 'rxjs/operators';\nimport { ProgressEditorComponent } from './components';\nimport { FieldMenu } from './components/field-menu/field-menu.component';\nimport { AITableFieldPropertyEditor } from './components/field-property-editor/field-property-editor.component';\nimport { DBL_CLICK_EDIT_TYPE, DefaultFieldMenus, MOUSEOVER_EDIT_TYPE } from './constants';\nimport {\n Actions,\n AIPlugin,\n AITable,\n AITableChangeOptions,\n AITableFields,\n AITableFieldType,\n AITableRecords,\n createAITable,\n createDefaultField,\n getDefaultRecord\n} from './core';\nimport { IsSelectRecordPipe, SelectOptionPipe } from './pipes/grid.pipe';\nimport { AITableGridEventService } from './services/event.service';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITableGridFieldService } from './services/field.service';\nimport { AITableGridSelectionService } from './services/selection.service';\nimport { AIFieldConfig, AITableFieldMenuItem, AITableReferences } from './types';\nimport { buildGridData } from './utils';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\n\n@Component({\n selector: 'ai-table-grid',\n templateUrl: './grid.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ai-table-grid'\n },\n imports: [\n NgForOf,\n NgClass,\n NgComponentOutlet,\n CommonModule,\n FormsModule,\n SelectOptionPipe,\n ThyTag,\n ThyPopoverModule,\n ThyIcon,\n ThyRate,\n ThyProgress,\n AITableFieldPropertyEditor,\n ThyDatePickerFormatPipe,\n ThyFlexibleText,\n ThyStopPropagationDirective,\n FieldMenu,\n ThyAction,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyCheckboxModule,\n ProgressEditorComponent,\n ThyAvatarModule,\n NgTemplateOutlet,\n IsSelectRecordPipe\n ],\n providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService]\n})\nexport class AITableGrid implements OnInit {\n aiRecords = model.required<AITableRecords>();\n\n aiFields = model.required<AITableFields>();\n\n aiFieldConfig = input<AIFieldConfig>();\n\n aiReadonly = input<boolean>();\n\n aiPlugins = input<AIPlugin[]>();\n\n aiReferences = input<AITableReferences>();\n\n AITableFieldType = AITableFieldType;\n\n aiTable!: AITable;\n\n isSelectedAll = computed(() => {\n return this.aiTable.selection().selectedRecords.size === this.aiRecords().length;\n });\n\n onChange = output<AITableChangeOptions>();\n\n aiTableInitialized = output<AITable>();\n\n fieldMenus!: AITableFieldMenuItem[];\n\n mouseoverRef!: ThyPopoverRef<any>;\n\n gridData = computed(() => {\n return buildGridData(this.aiRecords(), this.aiFields(), this.aiReferences());\n });\n\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private destroyRef = inject(DestroyRef);\n private aiTableGridFieldService = inject(AITableGridFieldService);\n private aiTableGridEventService = inject(AITableGridEventService);\n public aiTableGridSelectionService = inject(AITableGridSelectionService);\n\n ngOnInit(): void {\n this.initAITable();\n this.initService();\n this.buildFieldMenus();\n this.subscribeEvents();\n }\n\n initAITable() {\n this.aiTable = createAITable(this.aiRecords, this.aiFields);\n this.aiPlugins()?.forEach((plugin) => {\n this.aiTable = plugin(this.aiTable);\n });\n this.aiTableInitialized.emit(this.aiTable);\n this.aiTable.onChange = () => {\n this.onChange.emit({\n records: this.aiRecords(),\n fields: this.aiFields(),\n actions: this.aiTable.actions\n });\n };\n }\n\n initService() {\n this.aiTableGridEventService.initialize(this.aiTable, this.aiFieldConfig()?.fieldPropertyEditor);\n this.aiTableGridSelectionService.initialize(this.aiTable);\n this.aiTableGridEventService.registerEvents(this.elementRef.nativeElement);\n this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());\n AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);\n }\n\n buildFieldMenus() {\n this.fieldMenus = this.aiFieldConfig()?.fieldMenus ?? DefaultFieldMenus;\n }\n\n addRecord() {\n Actions.addRecord(this.aiTable, getDefaultRecord(this.aiFields()), [this.aiRecords().length]);\n }\n\n selectRecord(recordId: string) {\n this.aiTableGridSelectionService.selectRecord(recordId);\n }\n\n toggleSelectAll(checked: boolean) {\n this.aiTableGridSelectionService.toggleSelectAll(checked);\n }\n\n addField(gridColumnBlank: HTMLElement) {\n const field = signal(createDefaultField(this.aiTable, AITableFieldType.text));\n this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);\n }\n\n private subscribeEvents() {\n this.ngZone.runOutsideAngular(() => {\n this.aiTableGridEventService.dblClickEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.dblClick(event);\n });\n this.aiTableGridEventService.mousedownEvent$\n .pipe(mergeWith(this.aiTableGridEventService.globalMousedownEvent$), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.aiTableGridSelectionService.updateSelect(event);\n });\n\n this.aiTableGridEventService.mouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.mouseoverHandle(event);\n });\n this.aiTableGridEventService.globalMouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.closeHoverCellEditor(event);\n });\n });\n }\n\n private dblClick(event: MouseEvent) {\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n const readonly = cellDom && cellDom.getAttribute('readonly')!;\n if (type && !readonly && DBL_CLICK_EDIT_TYPE.includes(type)) {\n this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private mouseoverHandle(event: MouseEvent) {\n if (this.mouseoverRef) {\n this.mouseoverRef?.close();\n }\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n if (type && MOUSEOVER_EDIT_TYPE.includes(type)) {\n this.mouseoverRef = this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private closeHoverCellEditor(e: MouseEvent) {\n if (this.mouseoverRef) {\n const hasGrid = e.target && (e.target as HTMLElement).closest('.ai-table-grid');\n const hasCellEditor = e.target && (e.target as HTMLElement).closest('.grid-cell-editor');\n if (!hasGrid && !hasCellEditor) {\n this.mouseoverRef.close();\n }\n }\n }\n}\n","<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell grid-checkbox\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll()\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field._id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field._id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field._id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record._id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: (record._id | isSelectRecord: aiTable.selection()) }\">\n <div class=\"grid-row-index grid-checkbox\">\n <label\n [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record._id | isSelectRecord: aiTable.selection()\"\n (ngModelChange)=\"selectRecord(record._id)\"\n ></label>\n <span [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'grid-row-no-number' : 'grid-row-number'\">\n {{ index + 1 }}\n </span>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n #cell\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record._id) || aiTable.selection().selectedFields.has(field._id),\n selected: aiTable.selection().selectedCells.get(record._id)?.hasOwnProperty(field._id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field._id]\"\n [attr.readonly]=\"[field?.readonly]\"\n [attr.recordId]=\"[record._id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @if (!field.isMultiple && record.values[field._id] | selectOption: field['options']; as selectedOption) {\n <thy-tag [thyColor]=\"selectedOption!.color! || selectedOption!.bg_color! || 'default'\">{{\n selectedOption.text\n }}</thy-tag>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field._id] | thyDatePickerFormat }}\n }\n @case (AITableFieldType.updatedAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.createdAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.rate) {\n <thy-rate [ngModel]=\"record.values[field._id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n target=\"_blank\"\n [href]=\"record.values[field._id]?.url\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field._id]?.text\"\n >\n {{ record.values[field._id]?.text }}\n </a>\n }\n @case (AITableFieldType.progress) {\n <thy-progress\n class=\"w-100\"\n [thyValue]=\"record.values[field._id]\"\n [thySize]=\"record.values[field._id]?.config?.size || 'md'\"\n [thyMax]=\"record.values[field._id]?.config?.max || 100\"\n [thyType]=\"record.values[field._id]?.config?.progressType || 'success'\"\n >\n <span> {{ record.values[field._id] }}{{ record.values[field._id]?.config?.suffix || '%' }} </span>\n </thy-progress>\n }\n @case (AITableFieldType.member) {\n @if (!field.isMultiple) {\n @if (record.values[field._id][0]; as recordValue) {\n <thy-avatar\n [thyName]=\"recordValue.display_name\"\n [thySrc]=\"recordValue.avatar\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n } @else {\n <thy-avatar-list thyAvatarSize=\"xs\">\n @for (item of record.values[field._id]; track $index) {\n <thy-avatar [thyName]=\"item.display_name\" [thySrc]=\"item.avatar\"></thy-avatar>\n }\n </thy-avatar-list>\n }\n }\n @case (AITableFieldType.createdBy) {\n @if (record.values[field._id][0]; as recordValue) {\n <thy-avatar\n [thyName]=\"recordValue.display_name\"\n [thySrc]=\"recordValue.avatar\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @case (AITableFieldType.updatedBy) {\n @if (record.values[field._id][0]; as recordValue) {\n <thy-avatar\n [thyName]=\"recordValue.display_name\"\n [thySrc]=\"recordValue.avatar\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field._id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKY,iBAeX;AAfD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;AAEjB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AAC5B,CAAC,EAfW,gBAAgB,KAAhB,gBAAgB,GAe3B,EAAA,CAAA,CAAA,CAAA;IAEW,gBAmBX;AAnBD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,eAAA,CAAA,eAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,eAAA,CAAA,eAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,eAAA,CAAA,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,eAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,eAAA,CAAA,eAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAQ,CAAA;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAQ,CAAA;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAoB,CAAA;AACpB,IAAA,eAAA,CAAA,eAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAsB,CAAA;AACtB,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAY,CAAA;AACZ,IAAA,eAAA,CAAA,eAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAc,CAAA;AACd,IAAA,eAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAmB,CAAA;AACnB,IAAA,eAAA,CAAA,eAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAqB,CAAA;AACzB,CAAC,EAnBW,eAAe,KAAf,eAAe,GAmB1B,EAAA,CAAA,CAAA;;IC/BW,WASX;AATD,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC,CAAA;AACvC,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B,CAAA;AAC5B,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AAC1B,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA,CAAA;IAEW,YAIX;AAJD,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA;;ACzBe,SAAA,SAAS,CAAC,MAAM,GAAG,CAAC,EAAA;;AAEhC,IAAA,MAAM,MAAM,GACR,2CAA2C,CAAC;AAChD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;KACjE;AACD,IAAA,OAAO,GAAG,CAAC;AACf;;ACPa,MAAA,WAAW,GAAG;AACvB,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;;AAED,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;;AAED,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;;;AAGD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,QAAQ;AAC/B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,SAAS;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,SAAS;AAChC,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,SAAS;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,IAAI,EAAE,gBAAgB,CAAC,SAAS;AAChC,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,GAAG;AACb,KAAA;EACH;MAEW,MAAM,GAAuB,CAAC,GAAG,WAAW,EAAE;AAEpD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,MAAM;;AChFzD,SAAU,oBAAoB,CAAC,KAAmB,EAAA;IACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACxG,QAAA,OAAO,EAAE,CAAC;KACb;AACD,IAAA,OAAO,EAAE,CAAC;AACd,CAAC;AAEK,SAAU,sBAAsB,CAAC,OAAgB,EAAE,IAAyB,GAAA,gBAAgB,CAAC,IAAI,EAAA;AACnG,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAChC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACjE,OAAO,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;AAC7E,CAAC;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAE,IAAyB,GAAA,gBAAgB,CAAC,IAAI,EAAA;AAC/F,IAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AACnF;;ACjBa,MAAA,QAAQ,GAAG,IAAI,OAAO;;ACGnB,SAAA,aAAa,CAAC,OAAuC,EAAE,MAAqC,EAAA;AACxG,IAAA,MAAM,OAAO,GAAY;QACrB,OAAO;QACP,MAAM;AACN,QAAA,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;YACd,eAAe,EAAE,IAAI,GAAG,EAAE;YAC1B,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,aAAa,EAAE,IAAI,GAAG,EAAE;SAC3B,CAAC;AACF,QAAA,QAAQ,EAAE,MAAK,GAAG;AAClB,QAAA,KAAK,EAAE,CAAC,MAAqB,KAAI;AAC7B,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,YAAA,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxB,gBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,oBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7B,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,oBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;AACzB,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ,CAAC;AACF,IAAA,OAAO,OAAO,CAAC;AACnB,CAAC;AAEe,SAAA,WAAW,CAAC,IAAU,EAAE,OAAa,EAAA;IACjD,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF;;AC/BM,SAAU,gBAAgB,CAAC,MAAqB,EAAA;AAClD,IAAA,MAAM,MAAM,GAAkB;QAC1B,GAAG,EAAE,SAAS,EAAE;AAChB,QAAA,MAAM,EAAE,EAAE;KACb,CAAC;AACF,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAChB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACzD,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAClB;;ACVa,MAAA,cAAc,GAAG;AAC1B,IAAA,QAAQ,CAAC,OAAgB,EAAE,KAAoB,EAAE,MAAsB,EAAA;AACnE,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChE,QAAA,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AAC1G,YAAA,OAAO,CAAC,WAAY,EAAE,UAAW,CAAqB,CAAC;SAC1D;QACD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;YACrD,OAAO,CAAC,WAAW,CAAiB,CAAC;SACxC;QACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;YACnD,OAAO,CAAC,UAAU,CAAgB,CAAC;SACtC;QACD,MAAM,IAAI,KAAK,CAAC,CAA0B,uBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE,GAAG,CAAC,CAAE,CAAA,CAAC,CAAC;KACxG;IACD,aAAa,CAAC,OAAgB,EAAE,IAAsB,EAAA;QAClD,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAC;SAC7C;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAC;SAC7C;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,CAAuB,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;SAC5D;AAED,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;SAC3D;AACD,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACvD;IAED,QAAQ,CAAC,OAAgB,EAAE,IAAiB,EAAA;QACxC,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;SAC5D;QACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC;IAED,SAAS,CAAC,OAAgB,EAAE,IAAkB,EAAA;QAC1C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;SAC5D;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC;;;SC7CW,QAAQ,CAAC,OAAgB,EAAE,KAAmB,EAAE,IAAiB,EAAA;AAC7E,IAAA,MAAM,SAAS,GAAmB;QAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,KAAK;QACL,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;SAEe,SAAS,CAAC,OAAgB,EAAE,IAAiB,EAAE,OAAoB,EAAA;AAC/E,IAAA,MAAM,SAAS,GAAoB;QAC/B,IAAI,EAAE,UAAU,CAAC,SAAS;QAC1B,IAAI;QACJ,OAAO;KACV,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAEe,SAAA,WAAW,CAAC,OAAgB,EAAE,IAAiB,EAAA;AAC3D,IAAA,MAAM,SAAS,GAAsB;QACjC,IAAI,EAAE,UAAU,CAAC,WAAW;QAC5B,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;SAEe,QAAQ,CAAC,OAAgB,EAAE,KAA4B,EAAE,IAAiB,EAAA;IACtF,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE;QACP,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAA0B,EAAE,CAAC;AAC3C,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBACzB,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC1B;gBACD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;aAC1B;SACJ;AAED,QAAA,MAAM,SAAS,GAAmB;YAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ;AACzB,YAAA,KAAK,EAAE,QAAQ;YACf,QAAQ;YACR,IAAI;SACP,CAAC;AAEF,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC5B;AACL,CAAC;AAEM,MAAM,YAAY,GAAG;IACxB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;CACX;;AChED,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,OAAuB,EAAE,MAAqB,EAAE,OAAsB,KAAI;AACvG,IAAA,QAAQ,OAAO,CAAC,IAAI;AAChB,QAAA,KAAK,UAAU,CAAC,gBAAgB,EAAE;YAC9B,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAC/C,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;gBACrC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;AACjD,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;aAChE;YACD,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACvB,YAAA,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aAClD;YACD,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvC,gBAAA,MAAM,SAAS,GAAG;AACd,oBAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE;iBACrB,CAAC;AACF,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBACrB,IAAI,CAAC,MAAM,GAAG;wBACV,GAAG,IAAI,CAAC,MAAM;AACd,wBAAA,GAAG,SAAS;qBACf,CAAC;AACN,iBAAC,CAAC,CAAC;aACN;YAED,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,UAAU,EAAE;YACxB,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC5C,OAAO;aACV;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,SAAS,EAAE;YACvB,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC5C,OAAO;aACV;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAE5C,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;gBACjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;AACjD,gBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC7B,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,iBAAC,CAAC,CAAC;aACN;YACD,MAAM;SACT;AACD,QAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC1B,YAAA,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AAClB,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAClC;YACD,MAAM;SACT;AAED,QAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACjB,gBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;oBACzB,GAAG,MAAM,CAAC,UAAU,CAAC;oBACrB,GAAG,OAAO,CAAC,QAAQ;AACtB,iBAAA,CAAC,CAAC;aACN;YACD,MAAM;SACT;KACJ;IACD,OAAO;QACH,OAAO;QACP,MAAM;KACT,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG;IAC1B,SAAS,CAAC,OAAgB,EAAE,EAAiB,EAAA;QACzC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAK;AACvB,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAK;AACxB,YAAA,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;CACJ;;SC7Fe,gBAAgB,CAAC,OAAgB,EAAE,KAAU,EAAE,IAAsB,EAAA;IACjF,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1D,IAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACjB,QAAA,MAAM,SAAS,GAA2B;YACtC,IAAI,EAAE,UAAU,CAAC,gBAAgB;AACjC,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,aAAa,EAAE,KAAK;YACpB,IAAI;SACP,CAAC;AACF,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC5B;AACL,CAAC;SAEe,SAAS,CAAC,OAAgB,EAAE,MAAqB,EAAE,IAAkB,EAAA;AACjF,IAAA,MAAM,SAAS,GAAoB;QAC/B,IAAI,EAAE,UAAU,CAAC,SAAS;QAC1B,MAAM;QACN,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;SAEe,UAAU,CAAC,OAAgB,EAAE,IAAkB,EAAE,OAAqB,EAAA;AAClF,IAAA,MAAM,SAAS,GAAqB;QAChC,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B,IAAI;QACJ,OAAO;KACV,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAEe,SAAA,YAAY,CAAC,OAAgB,EAAE,IAAkB,EAAA;AAC7D,IAAA,MAAM,SAAS,GAAuB;QAClC,IAAI,EAAE,UAAU,CAAC,YAAY;QAC7B,IAAI;KACP,CAAC;AACF,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAEM,MAAM,aAAa,GAAG;IACzB,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,YAAY;CACf;;ACrDY,MAAA,OAAO,GAAG;AACnB,IAAA,GAAG,cAAc;AACjB,IAAA,GAAG,aAAa;AAChB,IAAA,GAAG,YAAY;;;MCGG,sBAAsB,CAAA;AAN5C,IAAA,WAAA,GAAA;AAOI,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAc,CAAC;AAErC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAiB,CAAC;AAM/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,EAAC,aAA6C,EAAC,CAAC;AAiBnF,KAAA;IAfG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAK;YAC5B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAqB,CAAC;YACpG,OAAO,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC3D,CAAC,EAAE,CAAC;KACR;IAED,gBAAgB,GAAA;QACZ,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAqB,CAAC;AACpG,QAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACjE;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;KAC/B;8GAzBiB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,ycAJ9B,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIM,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAClD,iBAAA,CAAA;8BAM8B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;;;ACiBvB,MAAO,2BAA4B,SAAQ,sBAAiC,CAAA;AA1BlF,IAAA,WAAA,GAAA;;AA2BI,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,kBAAkB,GAAG,YAAY,CAAC;SAClE,CAAC,EAAE,CAAC;AAsBR,KAAA;IApBY,QAAQ,GAAA;QACb,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACzC,IAAI,CAAC,UAAU,GAAG;AACd,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,SAAS,EAAE,CAAC;aACf,CAAC;SACL;KACJ;IAED,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED,IAAA,aAAa,CAAC,MAAe,EAAA;QACzB,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;8GA1BQ,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAxB1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;AAgBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKhD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA1BvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,CAAC;AAC1D,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,uBAAuB;AACjC,qBAAA;AACJ,iBAAA,CAAA;;;AClBK,MAAO,uBAAwB,SAAQ,sBAA8B,CAAA;IACvE,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;8GAJQ,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALtB,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGF,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEZ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACnF,iBAAA,CAAA;;;ACUK,MAAO,yBAA0B,SAAQ,sBAA8B,CAAA;IACzE,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;8GAJQ,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAdxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMN,OAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGM,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAyB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKtE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMN,OAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,CAAC;AAChF,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,oBAAoB;AAC9B,qBAAA;AACJ,iBAAA,CAAA;;;ACkBK,MAAO,uBAAwB,SAAQ,sBAA8B,CAAA;AAWvE,IAAA,gBAAgB,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAfZ,QAAA,IAAA,CAAA,MAAM,GAA+C;AACjD,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,IAAI,EAAE,IAAI;SACb,CAAC;KASD;AAED,IAAA,sBAAsB,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;8GA1BQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAvBtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;KAYT,EAGS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+VAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAQvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,gBAAgB,EAAE,aAAa;AAC/B,wBAAA,iBAAiB,EAAE,cAAc;AACpC,qBAAA;AACJ,iBAAA,CAAA;wDAYG,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AClCnC,MAAO,yBAA0B,SAAQ,sBAA8B,CAAA;IACzE,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;8GAHQ,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EARxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gFAAA,CAAkF,EAGlF,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+VAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKrB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAkF,gFAAA,CAAA;AAC5F,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,sCAAsC;AAChD,qBAAA;AACJ,iBAAA,CAAA;;;ACcK,MAAO,uBAAwB,SAAQ,sBAA8B,CAAA;AAOvE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAPJ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAE5B,IAAS,CAAA,SAAA,GAAG,GAAG,CAAC;KAIvB;IAED,eAAe,GAAA;QACX,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACP,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;AAE/F,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAM,IAAA,CAAA,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KACrD;IAED,WAAW,GAAA;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;8GAlCQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAnBtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGe,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,+IAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAK/E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;AACzF,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,kBAAkB;AAC5B,qBAAA;AACJ,iBAAA,CAAA;;;MC+BY,0BAA0B,CAAA;AA4BnC,IAAA,WAAA,GAAA;AA3BA,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAgB,CAAC;QAIhC,IAAkB,CAAA,kBAAA,GAA4B,IAAI,CAAC;AAI5D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACtB,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;QAEH,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAEpB,QAAA,IAAA,CAAA,eAAe,GAA2B;AACtC,YAAA,kBAAkB,EAAE;AAChB,gBAAA,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,cAAc,EAAE,OAAO;AAC1B,iBAAA;AACJ,aAAA;SACJ,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC;AAEhB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,EAAC,aAAyC,EAAC,CAAC;AAI5E,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,SAAiB,KAAI;AACpC,YAAA,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9B,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvH,SAAC,CAAC;KALc;AAOhB,IAAA,eAAe,CAAC,SAA2B,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;KACxH;IAED,iBAAiB,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AACxF,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1D;aAAM;YACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;SAClF;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC9B;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC9B;8GAnDQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAOf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAgB,ECjExC,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mDAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8vEAiDA,8EDvBQ,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEJ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,OAAO,EAEP,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,kFACb,iBAAiB,EAAA,QAAA,EAAA,uDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEjB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,EACxB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,sGAC5B,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhC,SAAS,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAW,EACX,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAChB,qBAAqB,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAahB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAtCtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,cAE9B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACL,IAAI;wBACJ,OAAO;wBACP,WAAW;wBACX,OAAO;wBACP,QAAQ;wBACR,aAAa;wBACb,aAAa;wBACb,iBAAiB;wBACjB,4BAA4B;wBAC5B,uBAAuB;wBACvB,oBAAoB;wBACpB,wBAAwB;wBACxB,4BAA4B;wBAC5B,gCAAgC;wBAChC,gCAAgC;wBAChC,SAAS;wBACT,aAAa;wBACb,WAAW;wBACX,gBAAgB;wBAChB,qBAAqB;qBACxB,EACK,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,mDAAmD;AAC7D,qBAAA,EAAA,QAAA,EAAA,8vEAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA;wDAY0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAEhB,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEkC,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;;;AE7D7B,MAAA,aAAa,GAAG,CAAC,WAA2B,EAAE,WAA0B,EAAE,UAA8B,KAAqB;IACtI,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACpC,OAAO;AACH,YAAA,GAAG,IAAI;AACP,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;AAC5C,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK;SAClD,CAAC;AACN,KAAC,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,wBAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC7E,OAAO;AACH,QAAA,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,OAAO;KACV,CAAC;AACN,EAAE;SAEc,wBAAwB,CAAC,OAAuB,EAAE,MAAqB,EAAE,UAA8B,EAAA;IACnH,IAAI,CAAC,UAAU,EAAE;AACb,QAAA,OAAO,OAAO,CAAC;KAClB;AACD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KACrC,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACzG,CAAC;AACF,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE;AACrB,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CACzC,CAAC,GAA2B,EAAE,MAAuB,KAAI;AACrD,YAAA,GAAG,CAAC,MAAM,CAAC,GAAI,CAAC,GAAG,MAAM,CAAC;AAC1B,YAAA,OAAO,GAAG,CAAC;SACd,EACD,EAAqC,CACxC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAW,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5F,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;KACvC;AACD,IAAA,OAAO,OAAO,CAAC;AACnB;;AC1CgB,SAAA,gBAAgB,CAAC,KAA6C,EAAE,GAAW,EAAA;IACvF,OAAO,QAAQ,CAAC,MAAK;AACjB,QAAA,OAAO,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAE,CAAC;AACrD,KAAC,CAAC,CAAC;AACP;;MCoBa,SAAS,CAAA;AASlB,IAAA,OAAO,CAAC,IAA0B,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAyB,CAAC;AAC1F,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5D;8GAZQ,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,sKC3BtB,oYAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDSQ,OAAO,EACP,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,qJAEV,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKvB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAEV,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACL,OAAO;wBACP,UAAU;wBACV,wBAAwB;wBACxB,4BAA4B;wBAC5B,gCAAgC;wBAChC,gCAAgC;AACnC,qBAAA,EAAA,QAAA,EAAA,oYAAA,EAAA,CAAA;8BAG0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAEE,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAEE,UAAU,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAEhB,MAAM,EAAA,CAAA;sBAAd,KAAK;;;AEhCH,MAAM,oBAAoB,GAAG,IAAI;AAEjC,MAAM,gBAAgB,GAAG,GAAG;AAEtB,MAAA,mBAAmB,GAAG;AAC/B,IAAA,gBAAgB,CAAC,IAAI;AACrB,IAAA,gBAAgB,CAAC,MAAM;AACvB,IAAA,gBAAgB,CAAC,MAAM;AACvB,IAAA,gBAAgB,CAAC,IAAI;AACrB,IAAA,gBAAgB,CAAC,MAAM;EACzB;MAEW,mBAAmB,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAElD,MAAA,SAAS,GAAG;AACrB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,SAAS,EAAE,GAAG;;;ACdX,MAAM,+BAA+B,GAAG,IAAI,OAAO,EAAoC,CAAC;MAGlF,uBAAuB,CAAA;AAGhC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;AAE9C,IAAA,iBAAiB,CAAC,aAAwC,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED,IAAA,iBAAiB,CAAC,MAAqC,EAAE,OAAgB,EAAE,OAAqC,EAAE,QAAiB,EAAA;QAC/H,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,mBAAmB,IAAI,0BAA0B,CAAC;AACxF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,YAAY,EAAE;gBACV,OAAO;gBACP,OAAO;gBACP,QAAQ;AACX,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;8GArBQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACHE,MAAA,eAAe,GAAG;AAC3B,IAAA,IAAI,EAAE,SAAS;EACjB;AAEW,MAAA,qBAAqB,GAAG;AACjC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,CAAC,OAAgB,EAAE,KAA2B,EAAE,MAAsC,KAAI;QAC5F,MAAM,YAAY,GAAG,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,MAAM,SAAS,GAAiC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAA,MAAM,IAAI,YAAY,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KAC/E;EACH;AAEW,MAAA,eAAe,GAAG;AAC3B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,IAAI,EAAE,CAAC,OAAgB,EAAE,KAA2B,KAAI;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAgB,CAAC;AACtE,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACtC;EACH;MAEW,iBAAiB,GAA2B,CAAC,qBAAqB,EAAE,eAAe;;MCtBnF,gBAAgB,CAAA;IACzB,SAAS,CAAC,GAAW,EAAE,OAA8B,EAAA;AACjD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KACnD;8GAHQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;MAWY,kBAAkB,CAAA;IAC3B,SAAS,CAAC,QAAgB,EAAE,SAA2B,EAAA;QACnD,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAClD;8GAHQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACSK,MAAO,yBAA0B,SAAQ,sBAAwD,CAAA;AAOnG,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AALZ,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;AAChC,SAAC,CAAC,CAAC;KAIF;AAED,IAAA,WAAW,CAAC,KAAc,EAAA;QACtB,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;8GAhBQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAVxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAEK,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAMC,OAAO,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,ymBAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,CAAA;;AAEK,kBAAA,CAAA;AACf,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,eAAe;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAC/E,iBAAA,CAAA;wDAEY,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;AChBH,MAAM,oBAAoB,GAA2C;AACxE,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,uBAAuB;AAChD,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG,uBAAuB;AACpD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG,yBAAyB;AACpD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG,yBAAyB;AACpD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,2BAA2B;AACpD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,yBAAyB;AAClD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,uBAAuB;AAChD,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG,uBAAuB;CACvD;;MCVY,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAMI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAc,CAAC;AAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAc,CAAC;AAE5C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAc,CAAC;AAE5C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAc,CAAC;AAElD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAc,CAAC;AAE1C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAgF3C,KAAA;IA9EG,UAAU,CAAC,OAAgB,EAAE,gBAAiF,EAAA;AAC1G,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC5C;AAED,IAAA,cAAc,CAAC,OAAoB,EAAA;AAC/B,QAAA,SAAS,CAAa,OAAO,EAAE,UAAU,CAAC;AACrC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;AAEP,QAAA,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC;AACtC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AAEP,QAAA,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC;AACvC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEP,QAAA,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC;AACtC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AAEP,QAAA,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC;AACvC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,kBAAkB,CAAC,IAAsB,EAAA;QAC7C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC;SAC9C;AACD,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,QAAQ,CAAC,OAAoB,EAAA;AACzB,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAE,CAAC;AACnD,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAyB,CAAC;AACrF,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAA0B,CAAC;QACzF,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE;AACxC,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,cAAc,EAAE;gBACZ,CAAC,EAAE,CAAC,GAAG,CAAC;gBACR,CAAC,EAAE,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,MAAM,EAAE,MAAM,GAAG,CAAC;AACrB,aAAA;AACD,YAAA,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI;AACvB,YAAA,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;AACzB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,MAAM,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AACrB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,YAAY,EAAE;AACV,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA;AACD,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,YAAY,EAAE,IAAI;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,CAAC;KACd;8GAhGQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MCLE,2BAA2B,CAAA;AAGpC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,UAAU,CAAC,OAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;YACvB,eAAe,EAAE,IAAI,GAAG,EAAE;YAC1B,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,aAAa,EAAE,IAAI,GAAG,EAAE;AAC3B,SAAA,CAAC,CAAC;KACN;IAED,UAAU,CAAC,QAAgB,EAAE,OAAe,EAAA;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;KAC7E;AAED,IAAA,WAAW,CAAC,OAAe,EAAA;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC9D;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC7D;aAAM;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChE;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;YACvB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe;YACzD,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,aAAa,EAAE,IAAI,GAAG,EAAE;AAC3B,SAAA,CAAC,CAAC;KACN;AAED,IAAA,eAAe,CAAC,OAAgB,EAAA;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,KAAK,EAAE,MAAqB,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,IAAK,MAA2B,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACpI,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE;YACT,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC7D;AACD,QAAA,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/C,YAAA,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;8GAtEQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;;MCsFE,WAAW,CAAA;AApCxB,IAAA,WAAA,GAAA;AAqCI,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAkB,CAAC;AAE7C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAiB,CAAC;QAE3C,IAAa,CAAA,aAAA,GAAG,KAAK,EAAiB,CAAC;QAEvC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAW,CAAC;QAE9B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAc,CAAC;QAEhC,IAAY,CAAA,YAAA,GAAG,KAAK,EAAqB,CAAC;QAE1C,IAAgB,CAAA,gBAAA,GAAG,gBAAgB,CAAC;AAIpC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AACrF,SAAC,CAAC,CAAC;QAEH,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAwB,CAAC;QAE1C,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAW,CAAC;AAMvC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACjF,SAAC,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAsG5E,KAAA;IApGG,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;YACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;AACvB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAChC,aAAA,CAAC,CAAC;AACP,SAAC,CAAC;KACL;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACjG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;KACnF;IAED,eAAe,GAAA;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,IAAI,iBAAiB,CAAC;KAC3E;IAED,SAAS,GAAA;QACL,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;KACjG;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KAC3D;AAED,IAAA,eAAe,CAAC,OAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KAC7D;AAED,IAAA,QAAQ,CAAC,eAA4B,EAAA;AACjC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC/F;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACtG,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,eAAe;AACvC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxG,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,gBAAA,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;YAEP,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvG,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7G,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,QAAQ,CAAC,KAAiB,EAAA;QAC9B,MAAM,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,YAAY,CAAgB,CAAC;QACnF,MAAM,IAAI,GAAG,OAAO,IAAK,OAAO,CAAC,YAAY,CAAC,MAAM,CAAuB,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAE,CAAC;AAC9D,QAAA,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClD;KACJ;AAEO,IAAA,eAAe,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;SAC9B;QACD,MAAM,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,YAAY,CAAgB,CAAC;QACnF,MAAM,IAAI,GAAG,OAAO,IAAK,OAAO,CAAC,YAAY,CAAC,MAAM,CAAuB,CAAC;QAC5E,IAAI,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACtE;KACJ;AAEO,IAAA,oBAAoB,CAAC,CAAa,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,IAAK,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAChF,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,IAAK,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE;AAC5B,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;aAC7B;SACJ;KACJ;8GA3IQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFT,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,2BAA2B,CAAC,ECvF9F,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oyRAwKA,4CDzGQ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEP,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,0VACX,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,EACP,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,8LACP,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEX,uBAAuB,EACvB,IAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,EAC3B,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,+GACT,SAAS,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,yGACxB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEf,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIb,WAAW,EAAA,UAAA,EAAA,CAAA;kBApCvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,eAAe;qBACzB,EACQ,OAAA,EAAA;wBACL,OAAO;wBACP,OAAO;wBACP,iBAAiB;wBACjB,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,MAAM;wBACN,gBAAgB;wBAChB,OAAO;wBACP,OAAO;wBACP,WAAW;wBACX,0BAA0B;wBAC1B,uBAAuB;wBACvB,eAAe;wBACf,2BAA2B;wBAC3B,SAAS;wBACT,SAAS;wBACT,oBAAoB;wBACpB,wBAAwB;wBACxB,iBAAiB;wBACjB,uBAAuB;wBACvB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;AACrB,qBAAA,EAAA,SAAA,EACU,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,oyRAAA,EAAA,CAAA;;;AEvF9F;;AAEG;;;;"}