persian-data-grid 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +1 -1
  2. package/dist/{ERPTableGroupRow-PSAPAHGL.js → ERPTableGroupRow-E5Q6FYDS.js} +4 -4
  3. package/dist/{ERPTableGroupRow-PSAPAHGL.js.map → ERPTableGroupRow-E5Q6FYDS.js.map} +1 -1
  4. package/dist/{ERPTableGroupRow-J5Z2LRC5.cjs → ERPTableGroupRow-F2IPDYL5.cjs} +9 -9
  5. package/dist/{ERPTableGroupRow-J5Z2LRC5.cjs.map → ERPTableGroupRow-F2IPDYL5.cjs.map} +1 -1
  6. package/dist/{GridPlugin-CJCaYnlw.d.ts → GridPlugin-Bewn0X51.d.ts} +1 -1
  7. package/dist/{GridPlugin-oxhq8AsM.d.cts → GridPlugin-DewWufGZ.d.cts} +1 -1
  8. package/dist/{GridSession-Bc7UIawO.d.ts → GridSession-CeIfVFck.d.ts} +142 -9
  9. package/dist/{GridSession-B-9lLcoB.d.cts → GridSession-CmQn2RnL.d.cts} +142 -9
  10. package/dist/GridSyncService-3JQLEY65.cjs +12 -0
  11. package/dist/{GridSyncService-TAPAHABV.cjs.map → GridSyncService-3JQLEY65.cjs.map} +1 -1
  12. package/dist/GridSyncService-GECXGEKL.js +3 -0
  13. package/dist/{GridSyncService-KTLB4KP3.js.map → GridSyncService-GECXGEKL.js.map} +1 -1
  14. package/dist/{PdfRenderer-CBg7hWNS.d.cts → PdfRenderer-B9FJaCo_.d.cts} +1 -1
  15. package/dist/{PdfRenderer-1HFh6UeR.d.ts → PdfRenderer-bN7ca_Aj.d.ts} +1 -1
  16. package/dist/{UITableController-DU8RopUM.d.ts → UITableController-C71LXBiX.d.ts} +48 -2
  17. package/dist/{UITableController-Cuwq481K.d.cts → UITableController-CIwnHIw8.d.cts} +48 -2
  18. package/dist/{VazirmatnPdfRenderer-BCMpC1zy.d.cts → VazirmatnPdfRenderer-CpCqA-Wh.d.cts} +2 -2
  19. package/dist/{VazirmatnPdfRenderer-Dz_G-m3c.d.ts → VazirmatnPdfRenderer-D46smncn.d.ts} +2 -2
  20. package/dist/adapters/arian-erp.cjs +16 -4
  21. package/dist/adapters/arian-erp.cjs.map +1 -1
  22. package/dist/adapters/arian-erp.d.cts +3 -1
  23. package/dist/adapters/arian-erp.d.ts +3 -1
  24. package/dist/adapters/arian-erp.js +11 -3
  25. package/dist/adapters/arian-erp.js.map +1 -1
  26. package/dist/{applyImportedRows-BO6yxoAN.d.cts → applyImportedRows-C2fWYoPy.d.cts} +3 -3
  27. package/dist/{applyImportedRows-D4zVY8uD.d.ts → applyImportedRows-Cqh_N_0k.d.ts} +3 -3
  28. package/dist/{applyRowVisibilityHandler-LXCOGESZ.cjs → applyRowVisibilityHandler-Q64ZFC7A.cjs} +7 -6
  29. package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs.map +1 -0
  30. package/dist/{applyRowVisibilityHandler-KS6TMCBN.js → applyRowVisibilityHandler-ZLZXQEGY.js} +6 -5
  31. package/dist/applyRowVisibilityHandler-ZLZXQEGY.js.map +1 -0
  32. package/dist/callbackRemoteApi-BYLjmSI6.d.ts +51 -0
  33. package/dist/callbackRemoteApi-Cv26MmSD.d.cts +51 -0
  34. package/dist/{cellRenderContext-DB7V_mlu.d.ts → cellRenderContext-BaNh4qn_.d.ts} +2 -2
  35. package/dist/{cellRenderContext-DG5BOlxK.d.cts → cellRenderContext-DvngkptV.d.cts} +2 -2
  36. package/dist/{chunk-HTNJT2QU.js → chunk-27ALJSZP.js} +617 -104
  37. package/dist/chunk-27ALJSZP.js.map +1 -0
  38. package/dist/{chunk-KUBVDIF7.cjs → chunk-3HP3HQCW.cjs} +52 -17
  39. package/dist/chunk-3HP3HQCW.cjs.map +1 -0
  40. package/dist/{chunk-DXRCYW42.cjs → chunk-52LFOPXD.cjs} +43 -23
  41. package/dist/chunk-52LFOPXD.cjs.map +1 -0
  42. package/dist/{chunk-VVGYRZ7S.cjs → chunk-72IVAOTK.cjs} +4 -4
  43. package/dist/{chunk-VVGYRZ7S.cjs.map → chunk-72IVAOTK.cjs.map} +1 -1
  44. package/dist/{chunk-LJ7LMEXO.js → chunk-7GWV5HGO.js} +3 -3
  45. package/dist/{chunk-LJ7LMEXO.js.map → chunk-7GWV5HGO.js.map} +1 -1
  46. package/dist/{chunk-RM6ZWNT3.js → chunk-7T6AWRPU.js} +43 -23
  47. package/dist/chunk-7T6AWRPU.js.map +1 -0
  48. package/dist/{chunk-PXCHPZTP.cjs → chunk-CMQ4VLCW.cjs} +8 -7
  49. package/dist/{chunk-EHHHC5JV.js.map → chunk-CMQ4VLCW.cjs.map} +1 -1
  50. package/dist/chunk-E2J533UH.cjs +53 -0
  51. package/dist/chunk-E2J533UH.cjs.map +1 -0
  52. package/dist/chunk-F6EMC75A.cjs +34 -0
  53. package/dist/chunk-F6EMC75A.cjs.map +1 -0
  54. package/dist/chunk-GKE33FOJ.js +32 -0
  55. package/dist/chunk-GKE33FOJ.js.map +1 -0
  56. package/dist/{chunk-QQMU44KJ.js → chunk-HLOHWFOA.js} +52 -19
  57. package/dist/chunk-HLOHWFOA.js.map +1 -0
  58. package/dist/{chunk-633KP74Z.js → chunk-KCNTKYUY.js} +19 -2
  59. package/dist/chunk-KCNTKYUY.js.map +1 -0
  60. package/dist/{chunk-BLYVOV3G.cjs → chunk-LY27YAXE.cjs} +19 -2
  61. package/dist/chunk-LY27YAXE.cjs.map +1 -0
  62. package/dist/{chunk-EHHHC5JV.js → chunk-NB5GCGHL.js} +5 -4
  63. package/dist/chunk-NB5GCGHL.js.map +1 -0
  64. package/dist/{chunk-6XBXZPBW.js → chunk-NQUVAJQA.js} +3 -3
  65. package/dist/{chunk-6XBXZPBW.js.map → chunk-NQUVAJQA.js.map} +1 -1
  66. package/dist/chunk-SVO62ZV2.js +50 -0
  67. package/dist/chunk-SVO62ZV2.js.map +1 -0
  68. package/dist/{chunk-MU3RY46O.js → chunk-VBAZ77Q4.js} +3 -3
  69. package/dist/{chunk-MU3RY46O.js.map → chunk-VBAZ77Q4.js.map} +1 -1
  70. package/dist/{chunk-H2LESGMX.cjs → chunk-VSAFQTW5.cjs} +4 -4
  71. package/dist/{chunk-H2LESGMX.cjs.map → chunk-VSAFQTW5.cjs.map} +1 -1
  72. package/dist/{chunk-2BJCRYOS.cjs → chunk-VYJQ2HTA.cjs} +5 -5
  73. package/dist/{chunk-2BJCRYOS.cjs.map → chunk-VYJQ2HTA.cjs.map} +1 -1
  74. package/dist/{chunk-IIISFUW4.cjs → chunk-WTHTVKVI.cjs} +621 -108
  75. package/dist/chunk-WTHTVKVI.cjs.map +1 -0
  76. package/dist/{createEngineGridQuery-Mt1hc33m.d.ts → createEngineGridQuery-BBkud5oE.d.ts} +61 -6
  77. package/dist/{createEngineGridQuery-Dmq3i5v3.d.cts → createEngineGridQuery-D-fgO_jg.d.cts} +61 -6
  78. package/dist/date-picker-jalali.cjs +17 -17
  79. package/dist/date-picker-jalali.d.cts +3 -3
  80. package/dist/date-picker-jalali.d.ts +3 -3
  81. package/dist/date-picker-jalali.js +1 -1
  82. package/dist/headless.cjs +102 -102
  83. package/dist/headless.d.cts +13 -9
  84. package/dist/headless.d.ts +13 -9
  85. package/dist/headless.js +4 -4
  86. package/dist/index.cjs +440 -382
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.cts +34 -14
  89. package/dist/index.d.ts +34 -14
  90. package/dist/index.js +200 -143
  91. package/dist/index.js.map +1 -1
  92. package/dist/plugins/csv.cjs +3 -3
  93. package/dist/plugins/csv.d.cts +2 -2
  94. package/dist/plugins/csv.d.ts +2 -2
  95. package/dist/plugins/csv.js +2 -2
  96. package/dist/plugins/excel.cjs +11 -11
  97. package/dist/plugins/excel.d.cts +4 -4
  98. package/dist/plugins/excel.d.ts +4 -4
  99. package/dist/plugins/excel.js +3 -3
  100. package/dist/plugins/pdf/fonts/vazirmatn.cjs +6 -6
  101. package/dist/plugins/pdf/fonts/vazirmatn.d.cts +4 -4
  102. package/dist/plugins/pdf/fonts/vazirmatn.d.ts +4 -4
  103. package/dist/plugins/pdf/fonts/vazirmatn.js +3 -3
  104. package/dist/plugins/pdf.cjs +5 -5
  105. package/dist/plugins/pdf.d.cts +5 -5
  106. package/dist/plugins/pdf.d.ts +5 -5
  107. package/dist/plugins/pdf.js +2 -2
  108. package/dist/presence.d.cts +3 -3
  109. package/dist/presence.d.ts +3 -3
  110. package/dist/sync.cjs +2 -2
  111. package/dist/sync.d.cts +3 -3
  112. package/dist/sync.d.ts +3 -3
  113. package/dist/sync.js +1 -1
  114. package/package.json +3 -3
  115. package/dist/GridSyncService-KTLB4KP3.js +0 -3
  116. package/dist/GridSyncService-TAPAHABV.cjs +0 -12
  117. package/dist/applyRowVisibilityHandler-KS6TMCBN.js.map +0 -1
  118. package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs.map +0 -1
  119. package/dist/callbackRemoteApi-BlXO5NJz.d.ts +0 -30
  120. package/dist/callbackRemoteApi-DgnXH-i0.d.cts +0 -30
  121. package/dist/chunk-633KP74Z.js.map +0 -1
  122. package/dist/chunk-ASPTRYRD.cjs +0 -21
  123. package/dist/chunk-ASPTRYRD.cjs.map +0 -1
  124. package/dist/chunk-BHDRUZH5.cjs +0 -33
  125. package/dist/chunk-BHDRUZH5.cjs.map +0 -1
  126. package/dist/chunk-BLYVOV3G.cjs.map +0 -1
  127. package/dist/chunk-DXRCYW42.cjs.map +0 -1
  128. package/dist/chunk-HTNJT2QU.js.map +0 -1
  129. package/dist/chunk-IIISFUW4.cjs.map +0 -1
  130. package/dist/chunk-KUBVDIF7.cjs.map +0 -1
  131. package/dist/chunk-KYAOSBQN.js +0 -31
  132. package/dist/chunk-KYAOSBQN.js.map +0 -1
  133. package/dist/chunk-PXCHPZTP.cjs.map +0 -1
  134. package/dist/chunk-QQMU44KJ.js.map +0 -1
  135. package/dist/chunk-RM6ZWNT3.js.map +0 -1
  136. package/dist/chunk-Y6W5V2CI.js +0 -19
  137. package/dist/chunk-Y6W5V2CI.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../application/handlers/cellCommandsHandler.ts"],"names":[],"mappings":"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","file":"chunk-RM6ZWNT3.js","sourcesContent":["// application/handlers/cellCommandsHandler.ts\r\n\r\nimport {\r\n ColumnSchema,\r\n FieldType,\r\n} from '../../bootstrap/type';\r\nimport { Table } from '../../domain/entities/Table';\r\nimport { DomainError } from '../../domain/errors/DomainError';\r\nimport {\r\n Actor,\r\n PermissionPolicy,\r\n} from '../../domain/policies';\r\nimport {\r\n ColumnId,\r\n RowId,\r\n RowStateEnum,\r\n} from '../../domain/value-objects';\r\nimport {\r\n ApplyDynamicProjectionCommand,\r\n ChangeCellDisplayValueCommand,\r\n ChangeCellValueCommand,\r\n SaveDescriptionCommand,\r\n} from '../commands';\r\nimport { TableEvent } from '../events';\r\nimport { AuditLogger } from '../ports/AuditLogger';\r\nimport { RemoteApi } from '../ports/RemoteApi';\r\nimport { TableRepository } from '../ports/TableRepository';\r\n\r\nexport type DynamicConfig = {\r\n columnMeta: Map<string, ColumnSchema>;\r\n remoteApi: RemoteApi;\r\n};\r\n\r\n/* ─── shared helper ──────────────────────────────────────────────── */\r\n\r\nexport function logError(audit: AuditLogger, error: unknown, context?: string): void {\r\n if (error instanceof DomainError) {\r\n audit.log({\r\n type: error.code,\r\n message: error.message,\r\n payload: { details: error.details, context },\r\n });\r\n } else if (error instanceof Error) {\r\n audit.log({\r\n type: 'INVARIANT_VIOLATION',\r\n message: error.message,\r\n payload: { stack: error.stack, context },\r\n });\r\n } else {\r\n audit.log({\r\n type: 'INVARIANT_VIOLATION',\r\n message: 'Unexpected error',\r\n payload: { error, context },\r\n });\r\n }\r\n}\r\n\r\n/* ======================================================\r\n ChangeCellValueHandler\r\n ====================================================== */\r\n\r\n/**\r\n * Remote visibility (`resolveOn`) projection shared by the cell-change, dynamic\r\n * re-projection and row-activation handlers.\r\n */\r\nexport async function applyRemoteVisibilityRules(\r\ndynamic: DynamicConfig | undefined,\r\ninput: {\r\ntable: Table;\r\nrowId: RowId;\r\nchangedColumnId: ColumnId;\r\nnewValue: unknown;\r\n/** When false (e.g. row activate / re-project), keep existing dependent cell values. */\r\nclearDependents?: boolean;\r\n},\r\n): Promise<void> {\r\nconst {\r\n table,\r\n rowId,\r\n changedColumnId,\r\n newValue,\r\n clearDependents = true,\r\n} = input;\r\n\r\nconst meta = dynamic?.columnMeta;\r\nif (!meta) return;\r\nconst colKey = `${table.getActiveCollectionName() ?? 'default'}_${changedColumnId.value}`;\r\nconst changedMeta = meta.get(colKey) ?? meta.get(changedColumnId.value);\r\nconst resolveOn = changedMeta?.resolveOn;\r\nif (!resolveOn) return;\r\nif (resolveOn.fieldName !== changedColumnId.value) return;\r\n\r\nconst row = table.getRows().find(r => r.id.value === rowId.value);\r\nif (!row) return;\r\n\r\nconst rowValues: Record<string, unknown> = {};\r\nfor (const [colId, cell] of row.getCells().entries()) {\r\n rowValues[colId] = cell.getValue();\r\n}\r\nif (newValue == null || newValue === '') return;\r\nconst params =\r\n typeof resolveOn.buildParams === 'function'\r\n ? resolveOn.buildParams(rowValues)\r\n : { value: newValue };\r\nconst response = await dynamic!.remoteApi.request({\r\n endpoint: resolveOn.endpoint,\r\n params,\r\n method: 'POST',\r\n});\r\n\r\nresolveOn.getResponse?.(response, row);\r\nconst flags: Record<string, boolean> = resolveOn.mapFlags?.(response) ?? {};\r\n\r\nconst toShow: ColumnSchema[] = [];\r\nconst visibilityCondition: Record<string, boolean> = {};\r\nconst activeCollection = table.getActiveCollectionName() ?? 'default';\r\n\r\nmeta.forEach(colCfg => {\r\n // Collection guard — same rationale as applyDynamicProjection: configs of\r\n // other collections must not react to this collection's cell changes.\r\n if ((colCfg.fieldCollection ?? 'default') !== activeCollection) return;\r\n const v = colCfg.visibility;\r\n\r\n if (\r\n v?.kind === 'whenRemoteFlag' &&\r\n v.sourceFieldName === changedColumnId.value\r\n ) {\r\n const colId = new ColumnId(colCfg.fieldName);\r\n const schema = table.getColumnSchema(colId);\r\n const flagValue = flags[v.flag] ?? false;\r\n\r\n // کلید visibilityCondition باید fieldName باشد چون UI (cellRenderer /\r\n // moveActiveCell / isInitiallyHidden) با col.fieldName چک می‌کند.\r\n visibilityCondition[colCfg.fieldName] = flagValue;\r\n\r\n if (flagValue && schema) {\r\n toShow.push({ ...schema, hidden: false });\r\n }\r\n }\r\n\r\n const dependency = colCfg.dynamicSource?.dependsOn;\r\n if (\r\n clearDependents &&\r\n dependency &&\r\n dependency.includes(changedColumnId.value) &&\r\n !Object.hasOwn(visibilityCondition, colCfg.fieldName) &&\r\n colCfg.visibility?.kind !== 'whenTableType' &&\r\n colCfg.visibility?.kind !== 'whenCollection'\r\n ) {\r\n const cell = row.getCell(colCfg.fieldName);\r\n cell?.changeValue(null);\r\n cell?.changeDisplay(null);\r\n }\r\n});\r\n\r\nif (toShow.length > 0) {\r\n table.addColumns(toShow);\r\n}\r\n\r\nrow.setVisibilityCondition(visibilityCondition);\r\n}\r\n\r\nexport class ChangeCellValueHandler {\r\n constructor(\r\n private readonly repo: TableRepository,\r\n private readonly audit: AuditLogger,\r\n private readonly permissionPolicy: PermissionPolicy,\r\n private readonly dynamic?: DynamicConfig,\r\n ) { }\r\n\r\n async execute(\r\n command: ChangeCellValueCommand,\r\n actor: Actor,\r\n ): Promise<TableEvent[]> {\r\n const table = await this.repo.getById(command.store, command.tableKey);\r\n try {\r\n const rowId = new RowId(command.rowId);\r\n const columnId = new ColumnId(command.columnId);\r\n /* 1. schema existence */\r\n const schema = table.getColumnSchema(columnId);\r\n if (!schema) {\r\n throw new DomainError('COLUMN_NOT_FOUND', 'Column does not exist', {\r\n columnId: columnId.value,\r\n });\r\n }\r\n /* 2. editable policy */\r\n if (schema.editable === false) {\r\n throw new DomainError('NOT_EDITABLE', 'Cell is not editable', {\r\n rowId: rowId.value,\r\n columnId: columnId.value,\r\n });\r\n }\r\n /* 3. permission policy */\r\n if (\r\n !this.permissionPolicy.canChangeCell({\r\n actor,\r\n rowId: command.rowId,\r\n columnId: command.columnId,\r\n })\r\n ) {\r\n throw new DomainError(\r\n 'FORBIDDEN',\r\n 'Actor is not allowed to change this cell',\r\n { actor, rowId: rowId.value, columnId: columnId.value },\r\n );\r\n }\r\n /* 4. type validation */\r\n const validated = this.validateCellValue(schema.fieldType, command.newValue);\r\n /* 5. domain mutation */\r\n const domainEvent = table.changeCell(rowId, columnId, validated.value);\r\n // Keep existing display unless a dedicated display-change command updates it.\r\n // Writing the raw value here wipes select labels (e.g. account title).\r\n if (!domainEvent) {\r\n throw new DomainError(\r\n 'CELL_NOT_FOUND',\r\n 'Cell not found or value not changed',\r\n { rowId: rowId.value, columnId: columnId.value },\r\n );\r\n }\r\n /* 6. application-level side effects */\r\n if (this.dynamic) {\r\n await this.applyComputedColumns({\r\n table,\r\n rowId,\r\n changedColumnId: columnId,\r\n remoteApi: this.dynamic.remoteApi,\r\n });\r\n await this.applyRemoteVisibilityRules({\r\n table,\r\n rowId,\r\n changedColumnId: columnId,\r\n newValue: command.newValue,\r\n });\r\n this.applyDynamicProjection({\r\n table,\r\n rowId,\r\n changedColumnId: columnId,\r\n validatedValue: command.newValue,\r\n });\r\n }\r\n\r\n /* 7. RowState management */\r\n const state = table\r\n .getRows()\r\n .find(r => r.id.value === rowId.value)\r\n ?.getCells()\r\n .get('RowState')\r\n ?.getValue();\r\n\r\n if (state === RowStateEnum.Unchanged) {\r\n table.changeCell(rowId, new ColumnId('RowState'), RowStateEnum.Modified);\r\n table.changeDisplay(rowId, new ColumnId('RowState'), RowStateEnum.Modified);\r\n }\r\n\r\n /* 8. persist */\r\n await this.repo.save(command.store, table);\r\n\r\n /* 9. output event */\r\n const out: TableEvent = {\r\n type: 'CELL_CHANGED',\r\n tableId: command.tableKey,\r\n rowId: domainEvent.rowId.value,\r\n columnId: domainEvent.columnId.value,\r\n newValue: domainEvent.newValue,\r\n previousValue: domainEvent.previousValue,\r\n };\r\n this.audit.log({ type: 'CELL_CHANGED', message: out.type, payload: out });\r\n return [out];\r\n\r\n } catch (e) {\r\n logError(this.audit, e, `ChangeCellValueHandler[${command.tableKey}:${command.rowId}:${command.columnId}]`);\r\n return [];\r\n }\r\n }\r\n\r\n /* ── helpers ─────────────────────────────────────────────────────── */\r\n\r\n private applyRemoteVisibilityRules(input: Parameters<typeof applyRemoteVisibilityRules>[1]): Promise<void> {\r\n return applyRemoteVisibilityRules(this.dynamic, input);\r\n }\r\n\r\n private async applyComputedColumns(input: {\r\n table: Table;\r\n rowId: RowId;\r\n changedColumnId: ColumnId;\r\n remoteApi: RemoteApi;\r\n }): Promise<void> {\r\n const { table, rowId, changedColumnId, remoteApi } = input;\r\n const meta = this.dynamic!.columnMeta;\r\n\r\n const computedColumns = Array.from(meta.values()).filter(\r\n (c): c is ColumnSchema & {\r\n computed: NonNullable<ColumnSchema['computed']>;\r\n } => c.computed != null,\r\n );\r\n\r\n if (computedColumns.length === 0) return;\r\n\r\n const row = table.getRows().find(r => r.id.value === rowId.value);\r\n if (!row) return;\r\n\r\n const rowValues: Record<string, unknown> = {};\r\n for (const [colId, cell] of row.getCells().entries()) {\r\n rowValues[colId] = cell.getValue();\r\n }\r\n\r\n const dependents = new Map<string, typeof computedColumns>();\r\n for (const col of computedColumns) {\r\n for (const dep of col.computed.dependsOn ?? []) {\r\n if (!dependents.has(dep)) dependents.set(dep, []);\r\n dependents.get(dep)!.push(col);\r\n }\r\n }\r\n\r\n const queue: string[] = [changedColumnId.value];\r\n const visited = new Set<string>();\r\n let safetyCounter = 0;\r\n const MAX = computedColumns.length + 1;\r\n\r\n while (queue.length > 0) {\r\n if (safetyCounter++ > MAX) {\r\n throw new Error('Computed cycle detected');\r\n }\r\n const source = queue.shift()!;\r\n const targets = dependents.get(source) ?? [];\r\n\r\n for (const colCfg of targets) {\r\n const targetField = colCfg.fieldName;\r\n const targetColId = new ColumnId(targetField);\r\n const schema = table.getColumnSchema(targetColId);\r\n if (!schema || !colCfg.computed) continue;\r\n\r\n const rawValue = colCfg.computed.compute(rowValues, remoteApi);\r\n const newValue = rawValue instanceof Promise ? await rawValue : rawValue;\r\n const validated = this.validateCellValue(schema.fieldType, newValue);\r\n\r\n if (validated.value instanceof Promise) {\r\n throw new Error(\r\n `Computed column \"${targetField}\" returned a Promise after validation`,\r\n );\r\n }\r\n\r\n const prev = rowValues[targetField];\r\n if (Object.is(prev, validated.value)) continue;\r\n\r\n table.changeCell(rowId, targetColId, validated.value);\r\n\r\n if (schema.displayFormat) {\r\n const validatedDisplay = this.validateCellValue(\r\n schema.fieldType,\r\n schema.displayFormat(newValue),\r\n );\r\n table.changeDisplay(rowId, targetColId, validatedDisplay.value);\r\n } else {\r\n table.changeDisplay(rowId, targetColId, validated.value);\r\n }\r\n\r\n rowValues[targetField] = validated.value;\r\n queue.push(targetField);\r\n visited.add(targetField);\r\n }\r\n }\r\n }\r\n\r\n private validateCellValue(type: FieldType, value: unknown) {\r\n switch (type) {\r\n case 'text':\r\n case 'textArea':\r\n case 'description':\r\n case 'date':\r\n return typeof value === 'string'\r\n ? { ok: true as const, value }\r\n : { ok: false as const, error: { message: 'Expected string', details: { value } }, value };\r\n\r\n case 'static':\r\n return { ok: true as const, value };\r\n\r\n case 'checkbox':\r\n return typeof value === 'boolean'\r\n ? { ok: true as const, value }\r\n : { ok: false as const, error: { message: 'Expected boolean', details: { value } }, value };\r\n\r\n case 'number':\r\n case 'price':\r\n case 'select':\r\n case 'selectOption': {\r\n if (value === '' || value === undefined) {\r\n return { ok: true as const, value };\r\n }\r\n const n = typeof value === 'number' ? value : Number(value);\r\n return Number.isFinite(n)\r\n ? { ok: true as const, value: n }\r\n : { ok: false as const, error: { message: 'Expected number', details: { value } }, value };\r\n }\r\n\r\n default:\r\n return { ok: false as const, error: { message: 'Unsupported type', details: { type, value } }, value };\r\n }\r\n }\r\n\r\n private applyDynamicProjection(input: {\r\n table: Table;\r\n rowId: RowId;\r\n changedColumnId: ColumnId;\r\n validatedValue: unknown;\r\n }): void {\r\n const { table, changedColumnId, validatedValue } = input;\r\n const activeCollection = table.getActiveCollectionName() ?? 'default';\r\n this.dynamic!.columnMeta.forEach((colMeta, key) => {\r\n // Collection guard: a column config may only be projected onto the table\r\n // when it belongs to the ACTIVE collection. Twin configs of other\r\n // collections must never leak their dynamicSource/visibility into this\r\n // collection's column map — a value in one tab must not unhide/reconfigure\r\n // the same-named column in other tabs.\r\n if ((colMeta.fieldCollection ?? 'default') !== activeCollection) return;\r\n const col = table.getColumnSchema(new ColumnId(colMeta.fieldName));\r\n\r\n const depends = colMeta.dynamicSource?.dependsOn;\r\n if (depends?.includes(changedColumnId.value)) {\r\n const { dynamicSource } = colMeta;\r\n const { endpoint, dependsOn, ...restDynamic } = dynamicSource ?? {};\r\n const base = col ?? colMeta;\r\n table.setColumnSchema(new ColumnId(base.fieldName), {\r\n ...base,\r\n dynamicSelectFilterOption:\r\n base.dynamicSelectFilterOption ?? (() => true),\r\n dynamicSource: {\r\n endpoint: endpoint ?? '',\r\n ...restDynamic,\r\n dependOn: {\r\n fieldName: changedColumnId.value,\r\n value: validatedValue,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (\r\n colMeta.visibility?.kind === 'whenFieldTruthy' &&\r\n colMeta.visibility.fieldName === changedColumnId.value &&\r\n col\r\n ) {\r\n table.setColumnSchema(new ColumnId(colMeta.fieldName), col);\r\n }\r\n });\r\n }\r\n}\r\n\r\n/* ======================================================\r\n ChangeCellDisplayValueHandler\r\n ====================================================== */\r\n\r\nexport class ChangeCellDisplayValueHandler {\r\n constructor(\r\n private readonly repo: TableRepository,\r\n private readonly audit: AuditLogger,\r\n private readonly permissionPolicy: PermissionPolicy,\r\n ) { }\r\n\r\n async execute(\r\n command: ChangeCellDisplayValueCommand,\r\n actor: Actor,\r\n ): Promise<TableEvent[]> {\r\n const table = await this.repo.getById(command.store, command.tableKey);\r\n try {\r\n const rowId = new RowId(command.rowId);\r\n const columnId = new ColumnId(command.columnId);\r\n\r\n const schema = table.getColumnSchema(columnId);\r\n if (!schema) {\r\n throw new DomainError('COLUMN_NOT_FOUND', 'Column does not exist', {\r\n columnId: columnId.value,\r\n });\r\n }\r\n\r\n if (schema.editable === false) {\r\n throw new DomainError('NOT_EDITABLE', 'Cell is not editable', {\r\n rowId: rowId.value,\r\n columnId: columnId.value,\r\n });\r\n }\r\n\r\n if (\r\n !this.permissionPolicy.canChangeCell({\r\n actor,\r\n rowId: command.rowId,\r\n columnId: command.columnId,\r\n })\r\n ) {\r\n throw new DomainError(\r\n 'FORBIDDEN',\r\n 'Actor is not allowed to change this cell',\r\n { actor, rowId: rowId.value, columnId: columnId.value },\r\n );\r\n }\r\n\r\n const domainEvent = table.changeDisplay(rowId, columnId, command.newValue);\r\n\r\n if (!domainEvent) {\r\n throw new DomainError(\r\n 'CELL_NOT_FOUND',\r\n 'Cell not found or value not changed',\r\n { rowId: rowId.value, columnId: columnId.value },\r\n );\r\n }\r\n\r\n await this.repo.save(command.store, table);\r\n\r\n const out: TableEvent = {\r\n type: 'CELL_DISPLAY_CHANGED',\r\n tableId: command.tableKey,\r\n rowId: domainEvent.rowId.value,\r\n columnId: domainEvent.columnId.value,\r\n newValue: domainEvent.newValue,\r\n };\r\n this.audit.log({ type: 'CELL_DISPLAY_CHANGED', message: out.type, payload: out });\r\n return [out];\r\n\r\n } catch (e) {\r\n logError(this.audit, e, `ChangeCellDisplayValueHandler[${command.tableKey}:${command.rowId}:${command.columnId}]`);\r\n return [];\r\n }\r\n }\r\n}\r\n\r\n/* ======================================================\r\n SaveDescriptionHandler\r\n ====================================================== */\r\n\r\nexport class SaveDescriptionHandler {\r\n constructor(\r\n private readonly repo: TableRepository,\r\n private readonly audit: AuditLogger,\r\n private readonly permissionPolicy: PermissionPolicy,\r\n ) { }\r\n\r\n async execute(\r\n command: SaveDescriptionCommand,\r\n actor: Actor,\r\n ): Promise<TableEvent[]> {\r\n const table = await this.repo.getById(command.store, command.tableKey);\r\n try {\r\n const rowId = new RowId(command.rowId);\r\n const domainEvent = table.saveDescription(rowId, command.flag);\r\n\r\n if (!domainEvent) {\r\n throw new DomainError(\r\n 'CELL_NOT_FOUND',\r\n 'Cell not found or value not changed',\r\n { rowId: rowId.value, flag: command.flag },\r\n );\r\n }\r\n\r\n await this.repo.save(command.store, table);\r\n\r\n const out: TableEvent = {\r\n type: 'ROW_DESCRIPTION_SAVED',\r\n tableId: command.tableKey,\r\n rowId: domainEvent.rowId.value,\r\n description: command.flag,\r\n };\r\n this.audit.log({ type: 'INFORMATION', message: out.type, payload: out });\r\n return [out];\r\n\r\n } catch (e) {\r\n logError(this.audit, e, `SaveDescriptionHandler[${command.tableKey}:${command.rowId}]`);\r\n return [];\r\n }\r\n }\r\n}\r\n\r\n/* ======================================================\r\n ApplyDynamicProjectionHandler\r\n ====================================================== */\r\n\r\nexport class ApplyDynamicProjectionHandler {\r\n constructor(\r\n private readonly repo: TableRepository,\r\n private readonly audit: AuditLogger,\r\n private readonly permissionPolicy: PermissionPolicy,\r\n private readonly dynamic?: DynamicConfig,\r\n ) { }\r\n\r\n async execute(\r\n command: ApplyDynamicProjectionCommand,\r\n actor: Actor,\r\n ): Promise<TableEvent[]> {\r\n const { store, tableKey, rowId, columnId } = command;\r\n const table = await this.repo.getById(store, tableKey);\r\n\r\n try {\r\n const row = table.getRow(rowId);\r\n if (!row) {\r\n throw new DomainError('ROW_NOT_FOUND', `Row ${rowId} not found`, { rowId });\r\n }\r\n\r\n const cell = row.getCell(columnId);\r\n if (!cell) {\r\n throw new DomainError('CELL_NOT_FOUND', `Cell ${columnId} not found`, { columnId });\r\n }\r\n\r\n const colValue = cell.getValue();\r\n const previousValue = colValue;\r\n const newRowId = new RowId(rowId);\r\n const newColumnId = new ColumnId(columnId);\r\n\r\n if (this.dynamic) {\r\n await this.applyComputedColumns({\r\n table,\r\n rowId: newRowId,\r\n changedColumnId: newColumnId,\r\n remoteApi: this.dynamic.remoteApi,\r\n });\r\n await this.applyRemoteVisibilityRules({\r\n table,\r\n rowId: newRowId,\r\n changedColumnId: newColumnId,\r\n newValue: colValue,\r\n clearDependents: false,\r\n });\r\n this.applyDynamicProjection({\r\n table,\r\n rowId: newRowId,\r\n changedColumnId: newColumnId,\r\n validatedValue: colValue,\r\n });\r\n }\r\n\r\n /* RowState management */\r\n const state = table\r\n .getRows()\r\n .find(r => r.id.value === newRowId.value)\r\n ?.getCells()\r\n .get('RowState')\r\n ?.getValue();\r\n\r\n if (state === RowStateEnum.Unchanged) {\r\n table.changeCell(newRowId, new ColumnId('RowState'), RowStateEnum.Modified);\r\n table.changeDisplay(newRowId, new ColumnId('RowState'), RowStateEnum.Modified);\r\n }\r\n\r\n await this.repo.save(store, table);\r\n\r\n const out: TableEvent = {\r\n type: 'CELL_CHANGED',\r\n tableId: tableKey,\r\n rowId: newRowId.value,\r\n columnId: newColumnId.value,\r\n newValue: colValue,\r\n previousValue,\r\n };\r\n this.audit.log({ type: 'CELL_CHANGED', message: out.type, payload: out });\r\n return [out];\r\n\r\n } catch (e) {\r\n logError(this.audit, e, `ApplyDynamicProjectionHandler[${tableKey}:${rowId}:${columnId}]`);\r\n return [];\r\n }\r\n }\r\n\r\n /* ── helpers (identical to ChangeCellValueHandler) ───────────────── */\r\n\r\n private applyRemoteVisibilityRules(input: Parameters<typeof applyRemoteVisibilityRules>[1]): Promise<void> {\r\n return applyRemoteVisibilityRules(this.dynamic, input);\r\n }\r\n\r\n private async applyComputedColumns(input: {\r\n table: Table;\r\n rowId: RowId;\r\n changedColumnId: ColumnId;\r\n remoteApi: RemoteApi;\r\n }): Promise<void> {\r\n const { table, rowId, changedColumnId, remoteApi } = input;\r\n const meta = this.dynamic!.columnMeta;\r\n\r\n const computedColumns = Array.from(meta.values()).filter(\r\n (c): c is ColumnSchema & {\r\n computed: NonNullable<ColumnSchema['computed']>;\r\n } => c.computed != null,\r\n );\r\n\r\n if (computedColumns.length === 0) return;\r\n\r\n const row = table.getRows().find(r => r.id.value === rowId.value);\r\n if (!row) return;\r\n\r\n const rowValues: Record<string, unknown> = {};\r\n for (const [colId, cell] of row.getCells().entries()) {\r\n rowValues[colId] = cell.getValue();\r\n }\r\n\r\n const dependents = new Map<string, typeof computedColumns>();\r\n for (const col of computedColumns) {\r\n for (const dep of col.computed.dependsOn ?? []) {\r\n if (!dependents.has(dep)) dependents.set(dep, []);\r\n dependents.get(dep)!.push(col);\r\n }\r\n }\r\n\r\n const queue: string[] = [changedColumnId.value];\r\n const visited = new Set<string>();\r\n let safetyCounter = 0;\r\n const MAX = computedColumns.length + 1;\r\n\r\n while (queue.length > 0) {\r\n if (safetyCounter++ > MAX) throw new Error('Computed cycle detected');\r\n const source = queue.shift()!;\r\n const targets = dependents.get(source) ?? [];\r\n\r\n for (const colCfg of targets) {\r\n const targetField = colCfg.fieldName;\r\n const targetColId = new ColumnId(targetField);\r\n const schema = table.getColumnSchema(targetColId);\r\n if (!schema || !colCfg.computed) continue;\r\n\r\n const rawValue = colCfg.computed.compute(rowValues, remoteApi);\r\n const newValue = rawValue instanceof Promise ? await rawValue : rawValue;\r\n const validated = this.validateCellValue(schema.fieldType, newValue);\r\n\r\n if (validated.value instanceof Promise) {\r\n throw new Error(`Computed column \"${targetField}\" returned a Promise after validation`);\r\n }\r\n\r\n const prev = rowValues[targetField];\r\n if (Object.is(prev, validated.value)) continue;\r\n\r\n table.changeCell(rowId, targetColId, validated.value);\r\n\r\n if (schema.displayFormat) {\r\n const validatedDisplay = this.validateCellValue(\r\n schema.fieldType,\r\n schema.displayFormat(newValue),\r\n );\r\n table.changeDisplay(rowId, targetColId, validatedDisplay.value);\r\n } else {\r\n table.changeDisplay(rowId, targetColId, validated.value);\r\n }\r\n\r\n rowValues[targetField] = validated.value;\r\n queue.push(targetField);\r\n visited.add(targetField);\r\n }\r\n }\r\n }\r\n\r\n private validateCellValue(type: FieldType, value: unknown) {\r\n switch (type) {\r\n case 'text':\r\n case 'textArea':\r\n case 'description':\r\n case 'date':\r\n return typeof value === 'string'\r\n ? { ok: true as const, value }\r\n : { ok: false as const, error: { message: 'Expected string', details: { value } }, value };\r\n\r\n case 'static':\r\n return { ok: true as const, value };\r\n\r\n case 'checkbox':\r\n return typeof value === 'boolean'\r\n ? { ok: true as const, value }\r\n : { ok: false as const, error: { message: 'Expected boolean', details: { value } }, value };\r\n\r\n case 'number':\r\n case 'price':\r\n case 'select':\r\n case 'selectOption': {\r\n if (value === '' || value === undefined) return { ok: true as const, value };\r\n const n = typeof value === 'number' ? value : Number(value);\r\n return Number.isFinite(n)\r\n ? { ok: true as const, value: n }\r\n : { ok: false as const, error: { message: 'Expected number', details: { value } }, value };\r\n }\r\n\r\n default:\r\n return { ok: false as const, error: { message: 'Unsupported type', details: { type, value } }, value };\r\n }\r\n }\r\n\r\n private applyDynamicProjection(input: {\r\n table: Table;\r\n rowId: RowId;\r\n changedColumnId: ColumnId;\r\n validatedValue: unknown;\r\n }): void {\r\n const { table, changedColumnId, validatedValue } = input;\r\n const activeCollection = table.getActiveCollectionName() ?? 'default';\r\n this.dynamic!.columnMeta.forEach((colMeta, key) => {\r\n // Collection guard: a column config may only be projected onto the table\r\n // when it belongs to the ACTIVE collection. Twin configs of other\r\n // collections must never leak their dynamicSource/visibility into this\r\n // collection's column map — a value in one tab must not unhide/reconfigure\r\n // the same-named column in other tabs.\r\n if ((colMeta.fieldCollection ?? 'default') !== activeCollection) return;\r\n const col = table.getColumnSchema(new ColumnId(colMeta.fieldName));\r\n\r\n const depends = colMeta.dynamicSource?.dependsOn;\r\n if (depends?.includes(changedColumnId.value)) {\r\n const { dynamicSource } = colMeta;\r\n const { endpoint, dependsOn, ...restDynamic } = dynamicSource ?? {};\r\n const base = col ?? colMeta;\r\n table.setColumnSchema(new ColumnId(base.fieldName), {\r\n ...base,\r\n dynamicSelectFilterOption:\r\n base.dynamicSelectFilterOption ?? (() => true),\r\n dynamicSource: {\r\n endpoint: endpoint ?? '',\r\n ...restDynamic,\r\n dependOn: {\r\n fieldName: changedColumnId.value,\r\n value: validatedValue,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (\r\n colMeta.visibility?.kind === 'whenFieldTruthy' &&\r\n colMeta.visibility.fieldName === changedColumnId.value &&\r\n col\r\n ) {\r\n table.setColumnSchema(new ColumnId(colMeta.fieldName), col);\r\n }\r\n });\r\n }\r\n}\r\n"]}
@@ -1,19 +0,0 @@
1
- // infrastructure/Repositories/callbackRemoteApi.ts
2
- var CallbackRemoteApi = class {
3
- constructor(send, onError) {
4
- this.send = send;
5
- this.onError = onError;
6
- }
7
- async request(input) {
8
- try {
9
- return await this.send(input);
10
- } catch (error) {
11
- this.onError?.(error);
12
- throw error;
13
- }
14
- }
15
- };
16
-
17
- export { CallbackRemoteApi };
18
- //# sourceMappingURL=chunk-Y6W5V2CI.js.map
19
- //# sourceMappingURL=chunk-Y6W5V2CI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../infrastructure/Repositories/callbackRemoteApi.ts"],"names":[],"mappings":";AAuBO,IAAM,oBAAN,MAA6C;AAAA,EAClD,WAAA,CACmB,MACA,OAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAChB;AAAA,EAEH,MAAM,QAA6B,KAAA,EAA6C;AAC9E,IAAA,IAAI;AACF,MAAA,OAAQ,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,IAC/B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AACF","file":"chunk-Y6W5V2CI.js","sourcesContent":["import type { RemoteApi } from '../../application/ports/RemoteApi';\r\n\r\nexport type RemoteApiRequest = {\r\n endpoint: string;\r\n params?: Record<string, unknown>;\r\n method?: 'GET' | 'POST';\r\n};\r\n\r\n/**\r\n * Wraps ANY host transport as a `RemoteApi` port — the grid never learns how\r\n * requests are authenticated or where defaults come from.\r\n *\r\n * arianERP example (RTK Query base query with token refresh + Redux defaults):\r\n *\r\n * const remoteApi = new CallbackRemoteApi(async ({ endpoint, params, method }) => {\r\n * const res = await baseQueryByToken(\r\n * { url: endpoint, method: method ?? 'POST', body: params ?? {} },\r\n * { getState: () => store.getState(), dispatch: store.dispatch } as never,\r\n * {},\r\n * );\r\n * return res.data;\r\n * });\r\n */\r\nexport class CallbackRemoteApi implements RemoteApi {\r\n constructor(\r\n private readonly send: (request: RemoteApiRequest) => Promise<unknown>,\r\n private readonly onError?: (error: unknown) => void,\r\n ) {}\r\n\r\n async request<TResponse = unknown>(input: RemoteApiRequest): Promise<TResponse> {\r\n try {\r\n return (await this.send(input)) as TResponse;\r\n } catch (error) {\r\n this.onError?.(error);\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}