persian-data-grid 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{ERPTableGroupRow-PSAPAHGL.js → ERPTableGroupRow-E5Q6FYDS.js} +4 -4
- package/dist/{ERPTableGroupRow-PSAPAHGL.js.map → ERPTableGroupRow-E5Q6FYDS.js.map} +1 -1
- package/dist/{ERPTableGroupRow-J5Z2LRC5.cjs → ERPTableGroupRow-F2IPDYL5.cjs} +9 -9
- package/dist/{ERPTableGroupRow-J5Z2LRC5.cjs.map → ERPTableGroupRow-F2IPDYL5.cjs.map} +1 -1
- package/dist/{GridPlugin-CJCaYnlw.d.ts → GridPlugin-Bewn0X51.d.ts} +1 -1
- package/dist/{GridPlugin-oxhq8AsM.d.cts → GridPlugin-DewWufGZ.d.cts} +1 -1
- package/dist/{GridSession-Bc7UIawO.d.ts → GridSession-CeIfVFck.d.ts} +142 -9
- package/dist/{GridSession-B-9lLcoB.d.cts → GridSession-CmQn2RnL.d.cts} +142 -9
- package/dist/GridSyncService-3JQLEY65.cjs +12 -0
- package/dist/{GridSyncService-TAPAHABV.cjs.map → GridSyncService-3JQLEY65.cjs.map} +1 -1
- package/dist/GridSyncService-GECXGEKL.js +3 -0
- package/dist/{GridSyncService-KTLB4KP3.js.map → GridSyncService-GECXGEKL.js.map} +1 -1
- package/dist/{PdfRenderer-CBg7hWNS.d.cts → PdfRenderer-B9FJaCo_.d.cts} +1 -1
- package/dist/{PdfRenderer-1HFh6UeR.d.ts → PdfRenderer-bN7ca_Aj.d.ts} +1 -1
- package/dist/{UITableController-DU8RopUM.d.ts → UITableController-C71LXBiX.d.ts} +48 -2
- package/dist/{UITableController-Cuwq481K.d.cts → UITableController-CIwnHIw8.d.cts} +48 -2
- package/dist/{VazirmatnPdfRenderer-BCMpC1zy.d.cts → VazirmatnPdfRenderer-CpCqA-Wh.d.cts} +2 -2
- package/dist/{VazirmatnPdfRenderer-Dz_G-m3c.d.ts → VazirmatnPdfRenderer-D46smncn.d.ts} +2 -2
- package/dist/adapters/arian-erp.cjs +16 -4
- package/dist/adapters/arian-erp.cjs.map +1 -1
- package/dist/adapters/arian-erp.d.cts +3 -1
- package/dist/adapters/arian-erp.d.ts +3 -1
- package/dist/adapters/arian-erp.js +11 -3
- package/dist/adapters/arian-erp.js.map +1 -1
- package/dist/{applyImportedRows-BO6yxoAN.d.cts → applyImportedRows-C2fWYoPy.d.cts} +3 -3
- package/dist/{applyImportedRows-D4zVY8uD.d.ts → applyImportedRows-Cqh_N_0k.d.ts} +3 -3
- package/dist/{applyRowVisibilityHandler-LXCOGESZ.cjs → applyRowVisibilityHandler-Q64ZFC7A.cjs} +7 -6
- package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs.map +1 -0
- package/dist/{applyRowVisibilityHandler-KS6TMCBN.js → applyRowVisibilityHandler-ZLZXQEGY.js} +6 -5
- package/dist/applyRowVisibilityHandler-ZLZXQEGY.js.map +1 -0
- package/dist/callbackRemoteApi-BYLjmSI6.d.ts +51 -0
- package/dist/callbackRemoteApi-Cv26MmSD.d.cts +51 -0
- package/dist/{cellRenderContext-DB7V_mlu.d.ts → cellRenderContext-BaNh4qn_.d.ts} +2 -2
- package/dist/{cellRenderContext-DG5BOlxK.d.cts → cellRenderContext-DvngkptV.d.cts} +2 -2
- package/dist/{chunk-HTNJT2QU.js → chunk-27ALJSZP.js} +617 -104
- package/dist/chunk-27ALJSZP.js.map +1 -0
- package/dist/{chunk-KUBVDIF7.cjs → chunk-3HP3HQCW.cjs} +52 -17
- package/dist/chunk-3HP3HQCW.cjs.map +1 -0
- package/dist/{chunk-DXRCYW42.cjs → chunk-52LFOPXD.cjs} +43 -23
- package/dist/chunk-52LFOPXD.cjs.map +1 -0
- package/dist/{chunk-VVGYRZ7S.cjs → chunk-72IVAOTK.cjs} +4 -4
- package/dist/{chunk-VVGYRZ7S.cjs.map → chunk-72IVAOTK.cjs.map} +1 -1
- package/dist/{chunk-LJ7LMEXO.js → chunk-7GWV5HGO.js} +3 -3
- package/dist/{chunk-LJ7LMEXO.js.map → chunk-7GWV5HGO.js.map} +1 -1
- package/dist/{chunk-RM6ZWNT3.js → chunk-7T6AWRPU.js} +43 -23
- package/dist/chunk-7T6AWRPU.js.map +1 -0
- package/dist/{chunk-PXCHPZTP.cjs → chunk-CMQ4VLCW.cjs} +8 -7
- package/dist/{chunk-EHHHC5JV.js.map → chunk-CMQ4VLCW.cjs.map} +1 -1
- package/dist/chunk-E2J533UH.cjs +53 -0
- package/dist/chunk-E2J533UH.cjs.map +1 -0
- package/dist/chunk-F6EMC75A.cjs +34 -0
- package/dist/chunk-F6EMC75A.cjs.map +1 -0
- package/dist/chunk-GKE33FOJ.js +32 -0
- package/dist/chunk-GKE33FOJ.js.map +1 -0
- package/dist/{chunk-QQMU44KJ.js → chunk-HLOHWFOA.js} +52 -19
- package/dist/chunk-HLOHWFOA.js.map +1 -0
- package/dist/{chunk-633KP74Z.js → chunk-KCNTKYUY.js} +19 -2
- package/dist/chunk-KCNTKYUY.js.map +1 -0
- package/dist/{chunk-BLYVOV3G.cjs → chunk-LY27YAXE.cjs} +19 -2
- package/dist/chunk-LY27YAXE.cjs.map +1 -0
- package/dist/{chunk-EHHHC5JV.js → chunk-NB5GCGHL.js} +5 -4
- package/dist/chunk-NB5GCGHL.js.map +1 -0
- package/dist/{chunk-6XBXZPBW.js → chunk-NQUVAJQA.js} +3 -3
- package/dist/{chunk-6XBXZPBW.js.map → chunk-NQUVAJQA.js.map} +1 -1
- package/dist/chunk-SVO62ZV2.js +50 -0
- package/dist/chunk-SVO62ZV2.js.map +1 -0
- package/dist/{chunk-MU3RY46O.js → chunk-VBAZ77Q4.js} +3 -3
- package/dist/{chunk-MU3RY46O.js.map → chunk-VBAZ77Q4.js.map} +1 -1
- package/dist/{chunk-H2LESGMX.cjs → chunk-VSAFQTW5.cjs} +4 -4
- package/dist/{chunk-H2LESGMX.cjs.map → chunk-VSAFQTW5.cjs.map} +1 -1
- package/dist/{chunk-2BJCRYOS.cjs → chunk-VYJQ2HTA.cjs} +5 -5
- package/dist/{chunk-2BJCRYOS.cjs.map → chunk-VYJQ2HTA.cjs.map} +1 -1
- package/dist/{chunk-IIISFUW4.cjs → chunk-WTHTVKVI.cjs} +621 -108
- package/dist/chunk-WTHTVKVI.cjs.map +1 -0
- package/dist/{createEngineGridQuery-Mt1hc33m.d.ts → createEngineGridQuery-BBkud5oE.d.ts} +61 -6
- package/dist/{createEngineGridQuery-Dmq3i5v3.d.cts → createEngineGridQuery-D-fgO_jg.d.cts} +61 -6
- package/dist/date-picker-jalali.cjs +17 -17
- package/dist/date-picker-jalali.d.cts +3 -3
- package/dist/date-picker-jalali.d.ts +3 -3
- package/dist/date-picker-jalali.js +1 -1
- package/dist/headless.cjs +102 -102
- package/dist/headless.d.cts +13 -9
- package/dist/headless.d.ts +13 -9
- package/dist/headless.js +4 -4
- package/dist/index.cjs +440 -382
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -14
- package/dist/index.d.ts +34 -14
- package/dist/index.js +200 -143
- package/dist/index.js.map +1 -1
- package/dist/plugins/csv.cjs +3 -3
- package/dist/plugins/csv.d.cts +2 -2
- package/dist/plugins/csv.d.ts +2 -2
- package/dist/plugins/csv.js +2 -2
- package/dist/plugins/excel.cjs +11 -11
- package/dist/plugins/excel.d.cts +4 -4
- package/dist/plugins/excel.d.ts +4 -4
- package/dist/plugins/excel.js +3 -3
- package/dist/plugins/pdf/fonts/vazirmatn.cjs +6 -6
- package/dist/plugins/pdf/fonts/vazirmatn.d.cts +4 -4
- package/dist/plugins/pdf/fonts/vazirmatn.d.ts +4 -4
- package/dist/plugins/pdf/fonts/vazirmatn.js +3 -3
- package/dist/plugins/pdf.cjs +5 -5
- package/dist/plugins/pdf.d.cts +5 -5
- package/dist/plugins/pdf.d.ts +5 -5
- package/dist/plugins/pdf.js +2 -2
- package/dist/presence.d.cts +3 -3
- package/dist/presence.d.ts +3 -3
- package/dist/sync.cjs +2 -2
- package/dist/sync.d.cts +3 -3
- package/dist/sync.d.ts +3 -3
- package/dist/sync.js +1 -1
- package/package.json +3 -3
- package/dist/GridSyncService-KTLB4KP3.js +0 -3
- package/dist/GridSyncService-TAPAHABV.cjs +0 -12
- package/dist/applyRowVisibilityHandler-KS6TMCBN.js.map +0 -1
- package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs.map +0 -1
- package/dist/callbackRemoteApi-BlXO5NJz.d.ts +0 -30
- package/dist/callbackRemoteApi-DgnXH-i0.d.cts +0 -30
- package/dist/chunk-633KP74Z.js.map +0 -1
- package/dist/chunk-ASPTRYRD.cjs +0 -21
- package/dist/chunk-ASPTRYRD.cjs.map +0 -1
- package/dist/chunk-BHDRUZH5.cjs +0 -33
- package/dist/chunk-BHDRUZH5.cjs.map +0 -1
- package/dist/chunk-BLYVOV3G.cjs.map +0 -1
- package/dist/chunk-DXRCYW42.cjs.map +0 -1
- package/dist/chunk-HTNJT2QU.js.map +0 -1
- package/dist/chunk-IIISFUW4.cjs.map +0 -1
- package/dist/chunk-KUBVDIF7.cjs.map +0 -1
- package/dist/chunk-KYAOSBQN.js +0 -31
- package/dist/chunk-KYAOSBQN.js.map +0 -1
- package/dist/chunk-PXCHPZTP.cjs.map +0 -1
- package/dist/chunk-QQMU44KJ.js.map +0 -1
- package/dist/chunk-RM6ZWNT3.js.map +0 -1
- package/dist/chunk-Y6W5V2CI.js +0 -19
- package/dist/chunk-Y6W5V2CI.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ai as SortModel, F as FilterModel, E as EventStore, b as GridSession, b0 as ExportRequestedPayload, b1 as ImportRequestedPayload, ah as SortDirection, d as CellRange, l as ColumnDef, m as GetRowId$1, G as GridEvent, x as FieldType, b2 as IRule, b3 as ColumnVisibilityRule, b4 as IDependOn, b5 as Actor, f as Table, R as Row,
|
|
2
|
-
import { h as SyncResult, e as SyncConflictPolicy, S as SyncConflict, M as ManualResolution, b as PresencePeer, U as UITableController, z as ConnectivitySource, i as SyncTransport, d as PresenceTransport, l as ClipboardCopyBuildOptions, q as GridPasteRuntimeOptions, O as OfflineStatus, g as SyncPort, c as PresencePort } from './UITableController-
|
|
1
|
+
import { ai as SortModel, F as FilterModel, E as EventStore, b as GridSession, b0 as ExportRequestedPayload, b1 as ImportRequestedPayload, ah as SortDirection, d as CellRange, l as ColumnDef, m as GetRowId$1, G as GridEvent, x as FieldType, b2 as IRule, b3 as ColumnVisibilityRule, b4 as IDependOn, C as ColumnSchema, D as DefaultOptionType, b5 as ResolveOnConfig, b6 as IBaseQueryResponse, b7 as HostRemoteApi, U as UIRow, a7 as ItemType, b8 as Actor, f as Table, R as Row, b9 as ColDefOrGroup, ba as TableRepository, bb as PermissionPolicy, bc as CellEditType, bd as CellEditCommit, be as EnterNavigation, ab as RowModelType, e as TableEngine, i as ChangelogProjection, H as HistoryPanelViewModel, j as CellUndoStack, a as Unsubscribe, z as AppendResult, ap as Viewport, aq as VisibleRange, A as AggFunc, y as AggFuncName } from './GridSession-CeIfVFck.js';
|
|
2
|
+
import { h as SyncResult, e as SyncConflictPolicy, S as SyncConflict, M as ManualResolution, b as PresencePeer, U as UITableController, z as ConnectivitySource, i as SyncTransport, d as PresenceTransport, l as ClipboardCopyBuildOptions, q as GridPasteRuntimeOptions, O as OfflineStatus, g as SyncPort, c as PresencePort } from './UITableController-C71LXBiX.js';
|
|
3
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
4
|
import { A as AuditLogger, R as RemoteApi } from './RemoteApi-CCQxiSf1.js';
|
|
4
|
-
import { c as GridQueryPort, G as GridPlugin } from './GridPlugin-
|
|
5
|
+
import { c as GridQueryPort, G as GridPlugin } from './GridPlugin-Bewn0X51.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Host-provided row source for `rowModelType: 'infinite' | 'serverSide'` (PR-96).
|
|
@@ -43,6 +44,8 @@ type PluginHostDeps = {
|
|
|
43
44
|
eventStore: EventStore;
|
|
44
45
|
session: GridSession;
|
|
45
46
|
query: GridQueryPort;
|
|
47
|
+
/** Runs before an export reads rows (createGrid: write the open cell edit). */
|
|
48
|
+
beforeRead?: () => Promise<void>;
|
|
46
49
|
};
|
|
47
50
|
/**
|
|
48
51
|
* Registers plugins and publishes plugin/view-stream events (e.g. EXPORT_REQUESTED).
|
|
@@ -214,7 +217,7 @@ interface ColumnDefinition {
|
|
|
214
217
|
readonly expandable?: boolean;
|
|
215
218
|
readonly rules?: IRule[];
|
|
216
219
|
readonly options?: ReadonlyArray<{
|
|
217
|
-
label?:
|
|
220
|
+
label?: unknown;
|
|
218
221
|
value?: string | number;
|
|
219
222
|
title?: string;
|
|
220
223
|
}>;
|
|
@@ -252,6 +255,26 @@ interface ColumnViewBinding {
|
|
|
252
255
|
readonly dynamicSelectFilterOption?: (inputValue: string, option: unknown) => boolean;
|
|
253
256
|
}
|
|
254
257
|
|
|
258
|
+
/** Select option with a renderable label. */
|
|
259
|
+
type HostDefaultOptionType = Omit<DefaultOptionType, 'label'> & {
|
|
260
|
+
label?: ReactNode;
|
|
261
|
+
};
|
|
262
|
+
/** Remote flag resolution typed with the arianERP query envelope. */
|
|
263
|
+
type HostResolveOnConfig<K = unknown> = ResolveOnConfig<K, IBaseQueryResponse<K>>;
|
|
264
|
+
interface HostColumnSchema<T = unknown, K = unknown> extends Omit<ColumnSchema<T, K>, 'options' | 'resolveOn' | 'computed' | 'indexOptions' | 'onChange' | 'dynamicSelectFilterOption' | 'style'> {
|
|
265
|
+
options?: HostDefaultOptionType[];
|
|
266
|
+
resolveOn?: HostResolveOnConfig<K>;
|
|
267
|
+
computed?: {
|
|
268
|
+
dependsOn: readonly string[];
|
|
269
|
+
compute(row: Record<string, unknown>, remoteApi: HostRemoteApi): Promise<unknown>;
|
|
270
|
+
children?: [] | undefined;
|
|
271
|
+
};
|
|
272
|
+
/** Extra items of the row index menu. */
|
|
273
|
+
indexOptions?: (tableKey: string, rowId: number, row: UIRow, controller: UITableController) => ItemType[];
|
|
274
|
+
onChange?: (tableKey: string, rowId: number, row: UIRow, controller: UITableController, value: unknown, option?: HostDefaultOptionType) => void;
|
|
275
|
+
dynamicSelectFilterOption?: (inputValue: string, option: HostDefaultOptionType) => boolean;
|
|
276
|
+
style?: CSSProperties;
|
|
277
|
+
}
|
|
255
278
|
type CollectionRowMap = Record<string, object>;
|
|
256
279
|
type GetRowId<TRow = unknown> = (row: TRow, index: number) => string;
|
|
257
280
|
type RowInput = {
|
|
@@ -296,7 +319,7 @@ type CreateERPTableConfig<TRow = unknown> = {
|
|
|
296
319
|
* If both are set, `columns` wins.
|
|
297
320
|
* @deprecated Prefer `columnDefs` (D14). Remains working for ERP hosts.
|
|
298
321
|
*/
|
|
299
|
-
columns?:
|
|
322
|
+
columns?: HostColumnSchema[];
|
|
300
323
|
/**
|
|
301
324
|
* ERP / legacy rows. Optional when `rowData` is set (PR-82).
|
|
302
325
|
* If both are set, `rows` wins for the initial load.
|
|
@@ -413,6 +436,26 @@ type CreateERPTableConfig<TRow = unknown> = {
|
|
|
413
436
|
* Host `onRowValueChanged` still fires per committed cell change.
|
|
414
437
|
*/
|
|
415
438
|
editType?: CellEditType;
|
|
439
|
+
/**
|
|
440
|
+
* When typed values become durable.
|
|
441
|
+
* - `'immediate'`: every editor change is written at once (the arianERP
|
|
442
|
+
* table contract): `getRowView`, totals, `computed` / `resolveOn`, host
|
|
443
|
+
* `onChange` code and saves always see what the user typed; `Esc` ends
|
|
444
|
+
* editing and keeps the value.
|
|
445
|
+
* - `'deferred'` (PR-126): typing edits a session draft, written on commit
|
|
446
|
+
* (move / Enter / Tab / focus leaves the grid / any durable read such as
|
|
447
|
+
* `getFullSnapShot`, `iterateRowsFromDb`, export, dispose); `Esc` discards.
|
|
448
|
+
*
|
|
449
|
+
* Default: `'immediate'` with `persistence: 'paged-idb'`, else `'deferred'`.
|
|
450
|
+
*/
|
|
451
|
+
cellEditCommit?: CellEditCommit;
|
|
452
|
+
/**
|
|
453
|
+
* `Enter` on an active cell. `'nextCell'` (default): next editable cell of
|
|
454
|
+
* the row, then the next row; past the last row a new row is added
|
|
455
|
+
* (`Shift+Enter` goes back) — the data-entry behaviour of the 0.5 line /
|
|
456
|
+
* arianERP. `'down'`: commit and move to the cell below (spreadsheet style).
|
|
457
|
+
*/
|
|
458
|
+
enterNavigation?: EnterNavigation;
|
|
416
459
|
/**
|
|
417
460
|
* Row model (PR-96). Default `clientSide`.
|
|
418
461
|
* `infinite` / `serverSide` skip local sort/filter and call `datasource.getRows`.
|
|
@@ -624,6 +667,8 @@ interface KvStore {
|
|
|
624
667
|
}
|
|
625
668
|
interface KvDatabase {
|
|
626
669
|
objectStore(name: string): KvStore;
|
|
670
|
+
/** Release the underlying connection (IndexedDB). Stored data is untouched. */
|
|
671
|
+
close?(): void;
|
|
627
672
|
}
|
|
628
673
|
declare class MemoryKvDatabase implements KvDatabase {
|
|
629
674
|
private stores;
|
|
@@ -645,11 +690,21 @@ declare class IndexedDbEventStore implements EventStore {
|
|
|
645
690
|
private listeners;
|
|
646
691
|
private globalListeners;
|
|
647
692
|
private ready;
|
|
693
|
+
private closed;
|
|
694
|
+
private closePromise?;
|
|
695
|
+
private readonly inflight;
|
|
648
696
|
constructor(db: KvDatabase);
|
|
649
697
|
static open(dbName?: string): Promise<IndexedDbEventStore>;
|
|
650
698
|
/** Test / Node helper — durable API with in-memory persistence backend. */
|
|
651
699
|
static inMemory(): IndexedDbEventStore;
|
|
700
|
+
/**
|
|
701
|
+
* Release the IndexedDB connection (stored events are untouched). Waits for
|
|
702
|
+
* appends already in flight; appends started afterwards are dropped (they
|
|
703
|
+
* resolve `ok` without writing) because the owning grid is gone. Idempotent.
|
|
704
|
+
*/
|
|
705
|
+
close(): Promise<void>;
|
|
652
706
|
append(streamId: string, events: GridEvent[], expectedVersion: number): Promise<AppendResult>;
|
|
707
|
+
private appendInternal;
|
|
653
708
|
read(streamId: string, fromVersion?: number): Promise<GridEvent[]>;
|
|
654
709
|
readAll(fromPosition?: number): Promise<GridEvent[]>;
|
|
655
710
|
subscribe(streamId: string, onEvent: Listener): Unsubscribe;
|
|
@@ -881,4 +936,4 @@ declare function applyQuickFilter(rowIds: readonly number[], quickFilterText: st
|
|
|
881
936
|
*/
|
|
882
937
|
declare function createEngineGridQuery(engine: TableEngine): GridQueryPort;
|
|
883
938
|
|
|
884
|
-
export {
|
|
939
|
+
export { accumulateRemove as $, type AggAccumulator as A, type KvStore as B, CATALOG_TO_HOST_CALLBACKS as C, DEFAULT_EVENT_STORE_PREFIX as D, EVENT_CATALOG as E, QuickFilterIndex as F, type GetRowId as G, type HostColumnSchema as H, InMemoryEventStore as I, ROW_DATA_UPDATED_CATALOG_TYPES as J, type KvDatabase as K, LEGACY_EVENT_STORE_PREFIX as L, MemoryKvDatabase as M, NoopRemoteApi as N, type RequestExportOptions as O, PluginHost as P, type QuickFilterBlobAccessor as Q, type RowInput as R, type RequestImportOptions as S, type RowDataUpdatedEvent as T, type RowValueChangedEvent as U, type SelectionChangedEvent as V, type SnapshotStore as W, SnapshotStrategy as X, type StartEditingCellParams as Y, ViewportCalculator as Z, accumulateAdd as _, type AggregateSnapshot as a, applyAgg as a0, applyQuickFilter as a1, buildCumulativeWidths as a2, buildQuickFilterBlob as a3, calculateColumnViewport as a4, columnDefFieldName as a5, createAccumulator as a6, createERPTable as a7, createEngineGridQuery as a8, createGrid as a9, createGridApi as aa, createGridTableKey as ab, dispatchCatalogHostEvent as ac, eventStoreDbName as ad, getEventCatalogEntry as ae, isAggFuncName as af, isCustomAggFunc as ag, listUndoableEventTypes as ah, mapColumnDefs as ai, mapColumnSchemas as aj, mapColumnSchemasToDefs as ak, normalizeQuickFilterText as al, openIndexedDbDatabase as am, readAccumulator as an, resolveColumnAggSpecs as ao, resolveCreateGridDefaults as ap, subscribeCatalogHostEvents as aq, toColumnDef as ar, toColumnDefinition as as, toColumnSchema as at, toColumnViewBinding as au, toMinorUnits as av, type CatalogHostEventHandlers as aw, mapColDefOrGroups as ax, type CellFocusedEvent as b, type CellValueChangedEvent as c, type CollectionRowMap as d, ColumnAggIndex as e, type ColumnAggSpec as f, type ColumnDefinition as g, type ColumnViewBinding as h, type ColumnVisibleRange as i, type CreateERPTableConfig as j, type CreateERPTableResult as k, type CreateGridApiInput as l, type CreateGridConfig as m, type CreateGridResult as n, DEFAULT_GRID_ACTOR as o, DEFAULT_MEMORY_STORE as p, type EventCatalogEntry as q, type ExportDataAsExcelOptions as r, type GridApi as s, type GridColumnState as t, type GridDatasource as u, type GridDatasourceGetRowsParams as v, type GridDatasourceGetRowsResult as w, type GridRowNode as x, InMemorySnapshotStore as y, IndexedDbEventStore as z };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ai as SortModel, F as FilterModel, E as EventStore, b as GridSession, b0 as ExportRequestedPayload, b1 as ImportRequestedPayload, ah as SortDirection, d as CellRange, l as ColumnDef, m as GetRowId$1, G as GridEvent, x as FieldType, b2 as IRule, b3 as ColumnVisibilityRule, b4 as IDependOn, b5 as Actor, f as Table, R as Row,
|
|
2
|
-
import { h as SyncResult, e as SyncConflictPolicy, S as SyncConflict, M as ManualResolution, b as PresencePeer, U as UITableController, z as ConnectivitySource, i as SyncTransport, d as PresenceTransport, l as ClipboardCopyBuildOptions, q as GridPasteRuntimeOptions, O as OfflineStatus, g as SyncPort, c as PresencePort } from './UITableController-
|
|
1
|
+
import { ai as SortModel, F as FilterModel, E as EventStore, b as GridSession, b0 as ExportRequestedPayload, b1 as ImportRequestedPayload, ah as SortDirection, d as CellRange, l as ColumnDef, m as GetRowId$1, G as GridEvent, x as FieldType, b2 as IRule, b3 as ColumnVisibilityRule, b4 as IDependOn, C as ColumnSchema, D as DefaultOptionType, b5 as ResolveOnConfig, b6 as IBaseQueryResponse, b7 as HostRemoteApi, U as UIRow, a7 as ItemType, b8 as Actor, f as Table, R as Row, b9 as ColDefOrGroup, ba as TableRepository, bb as PermissionPolicy, bc as CellEditType, bd as CellEditCommit, be as EnterNavigation, ab as RowModelType, e as TableEngine, i as ChangelogProjection, H as HistoryPanelViewModel, j as CellUndoStack, a as Unsubscribe, z as AppendResult, ap as Viewport, aq as VisibleRange, A as AggFunc, y as AggFuncName } from './GridSession-CmQn2RnL.cjs';
|
|
2
|
+
import { h as SyncResult, e as SyncConflictPolicy, S as SyncConflict, M as ManualResolution, b as PresencePeer, U as UITableController, z as ConnectivitySource, i as SyncTransport, d as PresenceTransport, l as ClipboardCopyBuildOptions, q as GridPasteRuntimeOptions, O as OfflineStatus, g as SyncPort, c as PresencePort } from './UITableController-CIwnHIw8.cjs';
|
|
3
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
4
|
import { A as AuditLogger, R as RemoteApi } from './RemoteApi-CCQxiSf1.cjs';
|
|
4
|
-
import { c as GridQueryPort, G as GridPlugin } from './GridPlugin-
|
|
5
|
+
import { c as GridQueryPort, G as GridPlugin } from './GridPlugin-DewWufGZ.cjs';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Host-provided row source for `rowModelType: 'infinite' | 'serverSide'` (PR-96).
|
|
@@ -43,6 +44,8 @@ type PluginHostDeps = {
|
|
|
43
44
|
eventStore: EventStore;
|
|
44
45
|
session: GridSession;
|
|
45
46
|
query: GridQueryPort;
|
|
47
|
+
/** Runs before an export reads rows (createGrid: write the open cell edit). */
|
|
48
|
+
beforeRead?: () => Promise<void>;
|
|
46
49
|
};
|
|
47
50
|
/**
|
|
48
51
|
* Registers plugins and publishes plugin/view-stream events (e.g. EXPORT_REQUESTED).
|
|
@@ -214,7 +217,7 @@ interface ColumnDefinition {
|
|
|
214
217
|
readonly expandable?: boolean;
|
|
215
218
|
readonly rules?: IRule[];
|
|
216
219
|
readonly options?: ReadonlyArray<{
|
|
217
|
-
label?:
|
|
220
|
+
label?: unknown;
|
|
218
221
|
value?: string | number;
|
|
219
222
|
title?: string;
|
|
220
223
|
}>;
|
|
@@ -252,6 +255,26 @@ interface ColumnViewBinding {
|
|
|
252
255
|
readonly dynamicSelectFilterOption?: (inputValue: string, option: unknown) => boolean;
|
|
253
256
|
}
|
|
254
257
|
|
|
258
|
+
/** Select option with a renderable label. */
|
|
259
|
+
type HostDefaultOptionType = Omit<DefaultOptionType, 'label'> & {
|
|
260
|
+
label?: ReactNode;
|
|
261
|
+
};
|
|
262
|
+
/** Remote flag resolution typed with the arianERP query envelope. */
|
|
263
|
+
type HostResolveOnConfig<K = unknown> = ResolveOnConfig<K, IBaseQueryResponse<K>>;
|
|
264
|
+
interface HostColumnSchema<T = unknown, K = unknown> extends Omit<ColumnSchema<T, K>, 'options' | 'resolveOn' | 'computed' | 'indexOptions' | 'onChange' | 'dynamicSelectFilterOption' | 'style'> {
|
|
265
|
+
options?: HostDefaultOptionType[];
|
|
266
|
+
resolveOn?: HostResolveOnConfig<K>;
|
|
267
|
+
computed?: {
|
|
268
|
+
dependsOn: readonly string[];
|
|
269
|
+
compute(row: Record<string, unknown>, remoteApi: HostRemoteApi): Promise<unknown>;
|
|
270
|
+
children?: [] | undefined;
|
|
271
|
+
};
|
|
272
|
+
/** Extra items of the row index menu. */
|
|
273
|
+
indexOptions?: (tableKey: string, rowId: number, row: UIRow, controller: UITableController) => ItemType[];
|
|
274
|
+
onChange?: (tableKey: string, rowId: number, row: UIRow, controller: UITableController, value: unknown, option?: HostDefaultOptionType) => void;
|
|
275
|
+
dynamicSelectFilterOption?: (inputValue: string, option: HostDefaultOptionType) => boolean;
|
|
276
|
+
style?: CSSProperties;
|
|
277
|
+
}
|
|
255
278
|
type CollectionRowMap = Record<string, object>;
|
|
256
279
|
type GetRowId<TRow = unknown> = (row: TRow, index: number) => string;
|
|
257
280
|
type RowInput = {
|
|
@@ -296,7 +319,7 @@ type CreateERPTableConfig<TRow = unknown> = {
|
|
|
296
319
|
* If both are set, `columns` wins.
|
|
297
320
|
* @deprecated Prefer `columnDefs` (D14). Remains working for ERP hosts.
|
|
298
321
|
*/
|
|
299
|
-
columns?:
|
|
322
|
+
columns?: HostColumnSchema[];
|
|
300
323
|
/**
|
|
301
324
|
* ERP / legacy rows. Optional when `rowData` is set (PR-82).
|
|
302
325
|
* If both are set, `rows` wins for the initial load.
|
|
@@ -413,6 +436,26 @@ type CreateERPTableConfig<TRow = unknown> = {
|
|
|
413
436
|
* Host `onRowValueChanged` still fires per committed cell change.
|
|
414
437
|
*/
|
|
415
438
|
editType?: CellEditType;
|
|
439
|
+
/**
|
|
440
|
+
* When typed values become durable.
|
|
441
|
+
* - `'immediate'`: every editor change is written at once (the arianERP
|
|
442
|
+
* table contract): `getRowView`, totals, `computed` / `resolveOn`, host
|
|
443
|
+
* `onChange` code and saves always see what the user typed; `Esc` ends
|
|
444
|
+
* editing and keeps the value.
|
|
445
|
+
* - `'deferred'` (PR-126): typing edits a session draft, written on commit
|
|
446
|
+
* (move / Enter / Tab / focus leaves the grid / any durable read such as
|
|
447
|
+
* `getFullSnapShot`, `iterateRowsFromDb`, export, dispose); `Esc` discards.
|
|
448
|
+
*
|
|
449
|
+
* Default: `'immediate'` with `persistence: 'paged-idb'`, else `'deferred'`.
|
|
450
|
+
*/
|
|
451
|
+
cellEditCommit?: CellEditCommit;
|
|
452
|
+
/**
|
|
453
|
+
* `Enter` on an active cell. `'nextCell'` (default): next editable cell of
|
|
454
|
+
* the row, then the next row; past the last row a new row is added
|
|
455
|
+
* (`Shift+Enter` goes back) — the data-entry behaviour of the 0.5 line /
|
|
456
|
+
* arianERP. `'down'`: commit and move to the cell below (spreadsheet style).
|
|
457
|
+
*/
|
|
458
|
+
enterNavigation?: EnterNavigation;
|
|
416
459
|
/**
|
|
417
460
|
* Row model (PR-96). Default `clientSide`.
|
|
418
461
|
* `infinite` / `serverSide` skip local sort/filter and call `datasource.getRows`.
|
|
@@ -624,6 +667,8 @@ interface KvStore {
|
|
|
624
667
|
}
|
|
625
668
|
interface KvDatabase {
|
|
626
669
|
objectStore(name: string): KvStore;
|
|
670
|
+
/** Release the underlying connection (IndexedDB). Stored data is untouched. */
|
|
671
|
+
close?(): void;
|
|
627
672
|
}
|
|
628
673
|
declare class MemoryKvDatabase implements KvDatabase {
|
|
629
674
|
private stores;
|
|
@@ -645,11 +690,21 @@ declare class IndexedDbEventStore implements EventStore {
|
|
|
645
690
|
private listeners;
|
|
646
691
|
private globalListeners;
|
|
647
692
|
private ready;
|
|
693
|
+
private closed;
|
|
694
|
+
private closePromise?;
|
|
695
|
+
private readonly inflight;
|
|
648
696
|
constructor(db: KvDatabase);
|
|
649
697
|
static open(dbName?: string): Promise<IndexedDbEventStore>;
|
|
650
698
|
/** Test / Node helper — durable API with in-memory persistence backend. */
|
|
651
699
|
static inMemory(): IndexedDbEventStore;
|
|
700
|
+
/**
|
|
701
|
+
* Release the IndexedDB connection (stored events are untouched). Waits for
|
|
702
|
+
* appends already in flight; appends started afterwards are dropped (they
|
|
703
|
+
* resolve `ok` without writing) because the owning grid is gone. Idempotent.
|
|
704
|
+
*/
|
|
705
|
+
close(): Promise<void>;
|
|
652
706
|
append(streamId: string, events: GridEvent[], expectedVersion: number): Promise<AppendResult>;
|
|
707
|
+
private appendInternal;
|
|
653
708
|
read(streamId: string, fromVersion?: number): Promise<GridEvent[]>;
|
|
654
709
|
readAll(fromPosition?: number): Promise<GridEvent[]>;
|
|
655
710
|
subscribe(streamId: string, onEvent: Listener): Unsubscribe;
|
|
@@ -881,4 +936,4 @@ declare function applyQuickFilter(rowIds: readonly number[], quickFilterText: st
|
|
|
881
936
|
*/
|
|
882
937
|
declare function createEngineGridQuery(engine: TableEngine): GridQueryPort;
|
|
883
938
|
|
|
884
|
-
export {
|
|
939
|
+
export { accumulateRemove as $, type AggAccumulator as A, type KvStore as B, CATALOG_TO_HOST_CALLBACKS as C, DEFAULT_EVENT_STORE_PREFIX as D, EVENT_CATALOG as E, QuickFilterIndex as F, type GetRowId as G, type HostColumnSchema as H, InMemoryEventStore as I, ROW_DATA_UPDATED_CATALOG_TYPES as J, type KvDatabase as K, LEGACY_EVENT_STORE_PREFIX as L, MemoryKvDatabase as M, NoopRemoteApi as N, type RequestExportOptions as O, PluginHost as P, type QuickFilterBlobAccessor as Q, type RowInput as R, type RequestImportOptions as S, type RowDataUpdatedEvent as T, type RowValueChangedEvent as U, type SelectionChangedEvent as V, type SnapshotStore as W, SnapshotStrategy as X, type StartEditingCellParams as Y, ViewportCalculator as Z, accumulateAdd as _, type AggregateSnapshot as a, applyAgg as a0, applyQuickFilter as a1, buildCumulativeWidths as a2, buildQuickFilterBlob as a3, calculateColumnViewport as a4, columnDefFieldName as a5, createAccumulator as a6, createERPTable as a7, createEngineGridQuery as a8, createGrid as a9, createGridApi as aa, createGridTableKey as ab, dispatchCatalogHostEvent as ac, eventStoreDbName as ad, getEventCatalogEntry as ae, isAggFuncName as af, isCustomAggFunc as ag, listUndoableEventTypes as ah, mapColumnDefs as ai, mapColumnSchemas as aj, mapColumnSchemasToDefs as ak, normalizeQuickFilterText as al, openIndexedDbDatabase as am, readAccumulator as an, resolveColumnAggSpecs as ao, resolveCreateGridDefaults as ap, subscribeCatalogHostEvents as aq, toColumnDef as ar, toColumnDefinition as as, toColumnSchema as at, toColumnViewBinding as au, toMinorUnits as av, type CatalogHostEventHandlers as aw, mapColDefOrGroups as ax, type CellFocusedEvent as b, type CellValueChangedEvent as c, type CollectionRowMap as d, ColumnAggIndex as e, type ColumnAggSpec as f, type ColumnDefinition as g, type ColumnViewBinding as h, type ColumnVisibleRange as i, type CreateERPTableConfig as j, type CreateERPTableResult as k, type CreateGridApiInput as l, type CreateGridConfig as m, type CreateGridResult as n, DEFAULT_GRID_ACTOR as o, DEFAULT_MEMORY_STORE as p, type EventCatalogEntry as q, type ExportDataAsExcelOptions as r, type GridApi as s, type GridColumnState as t, type GridDatasource as u, type GridDatasourceGetRowsParams as v, type GridDatasourceGetRowsResult as w, type GridRowNode as x, InMemorySnapshotStore as y, IndexedDbEventStore as z };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var chunkWUMOSOEK_cjs = require('./chunk-WUMOSOEK.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk3HP3HQCW_cjs = require('./chunk-3HP3HQCW.cjs');
|
|
7
7
|
require('./chunk-CILNIWYW.cjs');
|
|
8
8
|
require('./chunk-SX4VQXAA.cjs');
|
|
9
9
|
require('./chunk-QZN7R2WP.cjs');
|
|
@@ -23,16 +23,16 @@ function JalaliCalendar({
|
|
|
23
23
|
showHolidays = true,
|
|
24
24
|
className
|
|
25
25
|
}) {
|
|
26
|
-
const theme =
|
|
27
|
-
const t =
|
|
26
|
+
const theme = chunk3HP3HQCW_cjs.useERPTableTheme();
|
|
27
|
+
const t = chunk3HP3HQCW_cjs.useTranslations();
|
|
28
28
|
const seed = value ?? range?.start ?? range?.end ?? /* @__PURE__ */ new Date();
|
|
29
|
-
const seedYmd =
|
|
29
|
+
const seedYmd = chunk3HP3HQCW_cjs.toJalaliYmd(seed);
|
|
30
30
|
const [view, setView] = react.useState({ jy: seedYmd.jy, jm: seedYmd.jm });
|
|
31
31
|
const [draftStart, setDraftStart] = react.useState(
|
|
32
32
|
range?.start ?? null
|
|
33
33
|
);
|
|
34
34
|
const cells = react.useMemo(
|
|
35
|
-
() =>
|
|
35
|
+
() => chunk3HP3HQCW_cjs.buildJalaliMonthGrid(view.jy, view.jm),
|
|
36
36
|
[view.jy, view.jm]
|
|
37
37
|
);
|
|
38
38
|
const effectiveRange = mode === "range" ? {
|
|
@@ -40,7 +40,7 @@ function JalaliCalendar({
|
|
|
40
40
|
end: range?.end ?? null
|
|
41
41
|
} : { start: value, end: value };
|
|
42
42
|
const go = (delta) => {
|
|
43
|
-
setView((v) =>
|
|
43
|
+
setView((v) => chunk3HP3HQCW_cjs.addJalaliMonths(v.jy, v.jm, delta));
|
|
44
44
|
};
|
|
45
45
|
const handleDayClick = (date) => {
|
|
46
46
|
if (mode === "single") {
|
|
@@ -53,7 +53,7 @@ function JalaliCalendar({
|
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
const start = draftStart;
|
|
56
|
-
const ordered =
|
|
56
|
+
const ordered = chunk3HP3HQCW_cjs.compareJalaliDay(start, date) <= 0 ? { start, end: date } : { start: date, end: start };
|
|
57
57
|
setDraftStart(null);
|
|
58
58
|
onRangeChange?.(ordered);
|
|
59
59
|
};
|
|
@@ -77,7 +77,7 @@ function JalaliCalendar({
|
|
|
77
77
|
}
|
|
78
78
|
),
|
|
79
79
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "pdg-jalali-cal__title", children: [
|
|
80
|
-
|
|
80
|
+
chunk3HP3HQCW_cjs.jalaliMonthName(view.jm),
|
|
81
81
|
" ",
|
|
82
82
|
view.jy
|
|
83
83
|
] }),
|
|
@@ -92,16 +92,16 @@ function JalaliCalendar({
|
|
|
92
92
|
}
|
|
93
93
|
)
|
|
94
94
|
] }),
|
|
95
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pdg-jalali-cal__weekdays", "aria-hidden": true, children:
|
|
95
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pdg-jalali-cal__weekdays", "aria-hidden": true, children: chunk3HP3HQCW_cjs.JALALI_WEEKDAY_LABELS_FA.map((d) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pdg-jalali-cal__wd", children: d }, d)) }),
|
|
96
96
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pdg-jalali-cal__grid", role: "grid", children: cells.map((cell) => {
|
|
97
|
-
const selected = mode === "single" ? value != null &&
|
|
98
|
-
effectiveRange.start &&
|
|
97
|
+
const selected = mode === "single" ? value != null && chunk3HP3HQCW_cjs.sameJalaliDay(cell.date, value) : Boolean(
|
|
98
|
+
effectiveRange.start && chunk3HP3HQCW_cjs.sameJalaliDay(cell.date, effectiveRange.start)
|
|
99
99
|
) || Boolean(
|
|
100
|
-
effectiveRange.end &&
|
|
100
|
+
effectiveRange.end && chunk3HP3HQCW_cjs.sameJalaliDay(cell.date, effectiveRange.end)
|
|
101
101
|
);
|
|
102
|
-
const inRange = mode === "range" &&
|
|
102
|
+
const inRange = mode === "range" && chunk3HP3HQCW_cjs.isDateInRange(cell.date, effectiveRange);
|
|
103
103
|
const holiday = showHolidays && chunkWUMOSOEK_cjs.isIranHoliday(cell.date);
|
|
104
|
-
const today =
|
|
104
|
+
const today = chunk3HP3HQCW_cjs.sameJalaliDay(cell.date, /* @__PURE__ */ new Date());
|
|
105
105
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
106
106
|
"button",
|
|
107
107
|
{
|
|
@@ -133,9 +133,9 @@ function parseValue(value, adapter) {
|
|
|
133
133
|
return adapter.parse(value);
|
|
134
134
|
}
|
|
135
135
|
function PersianRangeDatePicker(props) {
|
|
136
|
-
const theme =
|
|
137
|
-
const t =
|
|
138
|
-
const hostAdapter =
|
|
136
|
+
const theme = chunk3HP3HQCW_cjs.useERPTableTheme();
|
|
137
|
+
const t = chunk3HP3HQCW_cjs.useTranslations();
|
|
138
|
+
const hostAdapter = chunk3HP3HQCW_cjs.useDateAdapter();
|
|
139
139
|
const adapter = hostAdapter.id === "jalali" ? hostAdapter : chunkKRJG3KMP_cjs.jalaliAdapter;
|
|
140
140
|
const panelId = react.useId();
|
|
141
141
|
const rootRef = react.useRef(null);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { C as CellRenderContext } from './cellRenderContext-
|
|
3
|
-
import './GridSession-
|
|
2
|
+
import { C as CellRenderContext } from './cellRenderContext-DvngkptV.cjs';
|
|
3
|
+
import './GridSession-CmQn2RnL.cjs';
|
|
4
4
|
import './RemoteApi-CCQxiSf1.cjs';
|
|
5
|
-
import './UITableController-
|
|
5
|
+
import './UITableController-CIwnHIw8.cjs';
|
|
6
6
|
|
|
7
7
|
type DateRangeValue = {
|
|
8
8
|
start: Date | null;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { C as CellRenderContext } from './cellRenderContext-
|
|
3
|
-
import './GridSession-
|
|
2
|
+
import { C as CellRenderContext } from './cellRenderContext-BaNh4qn_.js';
|
|
3
|
+
import './GridSession-CeIfVFck.js';
|
|
4
4
|
import './RemoteApi-CCQxiSf1.js';
|
|
5
|
-
import './UITableController-
|
|
5
|
+
import './UITableController-C71LXBiX.js';
|
|
6
6
|
|
|
7
7
|
type DateRangeValue = {
|
|
8
8
|
start: Date | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isIranHoliday } from './chunk-W5256BJ4.js';
|
|
2
|
-
import { useERPTableTheme, useTranslations, toJalaliYmd, buildJalaliMonthGrid, jalaliMonthName, JALALI_WEEKDAY_LABELS_FA, sameJalaliDay, isDateInRange, useDateAdapter, addJalaliMonths, compareJalaliDay } from './chunk-
|
|
2
|
+
import { useERPTableTheme, useTranslations, toJalaliYmd, buildJalaliMonthGrid, jalaliMonthName, JALALI_WEEKDAY_LABELS_FA, sameJalaliDay, isDateInRange, useDateAdapter, addJalaliMonths, compareJalaliDay } from './chunk-HLOHWFOA.js';
|
|
3
3
|
import './chunk-SZ7BLAY3.js';
|
|
4
4
|
import './chunk-F4PYOYHR.js';
|
|
5
5
|
import './chunk-77UXAJII.js';
|