comins-table 0.2.1 → 0.2.3

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 (94) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +6 -2
  3. package/THIRD_PARTY_NOTICES.md +4 -0
  4. package/dist/browser/measurements.d.ts.map +1 -1
  5. package/dist/browser/viewport-requests.d.ts.map +1 -1
  6. package/dist/cell-fill.d.ts +7 -0
  7. package/dist/cell-fill.d.ts.map +1 -1
  8. package/dist/{clipboard-CNrbmDue.js → clipboard-DZmm2iRM.js} +172 -146
  9. package/dist/clipboard-DZmm2iRM.js.map +1 -0
  10. package/dist/clipboard.js +2 -2
  11. package/dist/column-filter.d.ts +6 -1
  12. package/dist/column-filter.d.ts.map +1 -1
  13. package/dist/column-pinning.d.ts.map +1 -1
  14. package/dist/component-renderer.d.ts.map +1 -1
  15. package/dist/core/editing/xlsx-data.d.ts +12 -0
  16. package/dist/core/editing/xlsx-data.d.ts.map +1 -0
  17. package/dist/core/editing/xlsx-model.d.ts +103 -0
  18. package/dist/core/editing/xlsx-model.d.ts.map +1 -0
  19. package/dist/core/layout/columns.d.ts.map +1 -1
  20. package/dist/core/layout/virtual.d.ts.map +1 -1
  21. package/dist/core/model.d.ts +2 -0
  22. package/dist/core/model.d.ts.map +1 -1
  23. package/dist/core/rows/filter-value.d.ts +12 -0
  24. package/dist/core/rows/filter-value.d.ts.map +1 -0
  25. package/dist/core/rows/filtering.d.ts +27 -7
  26. package/dist/core/rows/filtering.d.ts.map +1 -1
  27. package/dist/core/rows/values-filter.d.ts +46 -0
  28. package/dist/core/rows/values-filter.d.ts.map +1 -0
  29. package/dist/core/viewport/data.d.ts.map +1 -1
  30. package/dist/{core-compat-B4I2OHGY.js → core-compat-CQ_YgTHr.js} +8 -3
  31. package/dist/core-compat-CQ_YgTHr.js.map +1 -0
  32. package/dist/core.d.ts +5 -0
  33. package/dist/core.d.ts.map +1 -1
  34. package/dist/core.js +3 -3
  35. package/dist/engine-iWefk5Rv.js +146 -0
  36. package/dist/engine-iWefk5Rv.js.map +1 -0
  37. package/dist/export-B_Q9_Whp.js +184 -0
  38. package/dist/export-B_Q9_Whp.js.map +1 -0
  39. package/dist/filtering.d.ts +23 -25
  40. package/dist/filtering.d.ts.map +1 -1
  41. package/dist/grouping.d.ts +8 -0
  42. package/dist/grouping.d.ts.map +1 -1
  43. package/dist/index.d.ts +32 -5
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2819 -2314
  46. package/dist/index.js.map +1 -1
  47. package/dist/react/cell-tooltip.d.ts +20 -0
  48. package/dist/react/cell-tooltip.d.ts.map +1 -0
  49. package/dist/react/core-compat.d.ts.map +1 -1
  50. package/dist/react/state.d.ts.map +1 -1
  51. package/dist/react/table-transfer.d.ts +4 -0
  52. package/dist/react/table-transfer.d.ts.map +1 -1
  53. package/dist/react/value-filter-types.d.ts +79 -0
  54. package/dist/react/value-filter-types.d.ts.map +1 -0
  55. package/dist/react/value-filter.d.ts +897 -0
  56. package/dist/react/value-filter.d.ts.map +1 -0
  57. package/dist/react-types.d.ts +10 -1
  58. package/dist/react-types.d.ts.map +1 -1
  59. package/dist/selection.js +1 -1
  60. package/dist/summary.d.ts +9 -0
  61. package/dist/summary.d.ts.map +1 -1
  62. package/dist/tree-drag.d.ts.map +1 -1
  63. package/dist/values-filter-pFAPWz1Q.js +497 -0
  64. package/dist/values-filter-pFAPWz1Q.js.map +1 -0
  65. package/dist/workbook-C7MXhUjt.js +349 -0
  66. package/dist/workbook-C7MXhUjt.js.map +1 -0
  67. package/dist/xlsx/engine.d.ts +5 -0
  68. package/dist/xlsx/engine.d.ts.map +1 -0
  69. package/dist/xlsx/errors.d.ts +12 -0
  70. package/dist/xlsx/errors.d.ts.map +1 -0
  71. package/dist/xlsx/export.d.ts +3 -0
  72. package/dist/xlsx/export.d.ts.map +1 -0
  73. package/dist/xlsx/styles.d.ts +37 -0
  74. package/dist/xlsx/styles.d.ts.map +1 -0
  75. package/dist/xlsx/text.d.ts +7 -0
  76. package/dist/xlsx/text.d.ts.map +1 -0
  77. package/dist/xlsx/workbook.d.ts +32 -0
  78. package/dist/xlsx/workbook.d.ts.map +1 -0
  79. package/dist/xlsx/xml.d.ts +14 -0
  80. package/dist/xlsx/xml.d.ts.map +1 -0
  81. package/dist/xlsx/zip.d.ts +9 -0
  82. package/dist/xlsx/zip.d.ts.map +1 -0
  83. package/dist/xlsx.d.ts +7 -0
  84. package/dist/xlsx.d.ts.map +1 -0
  85. package/dist/xlsx.js +39 -0
  86. package/dist/xlsx.js.map +1 -0
  87. package/dist/zip-Oz81THHH.js +62 -0
  88. package/dist/zip-Oz81THHH.js.map +1 -0
  89. package/package.json +22 -12
  90. package/styles.css +35 -0
  91. package/dist/clipboard-CNrbmDue.js.map +0 -1
  92. package/dist/core-compat-B4I2OHGY.js.map +0 -1
  93. package/dist/export-structure-Dy2zOqbj.js +0 -166
  94. package/dist/export-structure-Dy2zOqbj.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-compat-B4I2OHGY.js","names":[],"sources":["../src/react/edit-policy.ts","../src/react/model.ts","../src/react/core-compat.ts"],"sourcesContent":["import type { CoreCellDataConfig, CominsCellComponentPayload as CorePayload } from \"../core/model\";\nimport type {\n CominsTableState, CominsTableRuntimeColumn, CominsCellComponentPayload, CominsClipboardGuard,\n} from \"../react-types\";\nimport type { CominsRowId } from \"../model\";\nimport { getCominsCellValue } from \"../core/state/table\";\n\nexport function createCellComponentParams<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n rowIndex = state.rowIds.indexOf(rowId),\n): CominsCellComponentPayload<TData> {\n return {\n column: {\n definition: column,\n field: column.field,\n id: column.id,\n index: state.columns.findIndex((current) => current.id === column.id),\n label: column.label,\n },\n row: {\n data: row,\n dataIndex: rowIndex,\n disabled: false,\n id: rowId,\n index: rowIndex,\n selected: state.selection.rowIds.includes(rowId),\n },\n selection: {\n selectedRowCount: state.selection.rowIds.length,\n },\n value: getCominsCellValue(state, row, column.id),\n };\n}\n\nexport function resolveGuard<TData>(\n guard: CominsClipboardGuard<TData> | undefined,\n params: CominsCellComponentPayload<TData>,\n) {\n if (guard === undefined) {\n return true;\n }\n\n return typeof guard === \"boolean\" ? guard : guard(params);\n}\n\nexport function resolveCellProps<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n) {\n const params = createCellComponentParams(state, row, rowId, column);\n const props = column.cell?.props;\n\n return typeof props === \"function\" ? props(params) : props;\n}\n\n/** Interpret React props once per guard evaluation, retaining the original payload and receiver. */\nexport function createReactEditPolicy<TData>(\n state: CominsTableState<TData>,\n column: CominsTableRuntimeColumn<TData>,\n): CoreCellDataConfig<TData> {\n const evaluations = new WeakMap<CorePayload<TData>, {\n params: CominsCellComponentPayload<TData>;\n props: ReturnType<typeof resolveCellProps<TData>>;\n }>();\n const evaluate = (payload: CorePayload<TData>) => {\n const cached = evaluations.get(payload);\n if (cached) return cached;\n const params = createCellComponentParams(state, payload.row.data, payload.row.id, column, payload.row.dataIndex);\n const definition = column.cell?.props;\n const result = { params, props: typeof definition === \"function\" ? definition(params) : definition };\n evaluations.set(payload, result);\n return result;\n };\n return {\n disabled: payload => {\n const { params, props } = evaluate(payload);\n return props?.disabled !== undefined && resolveGuard(props.disabled, params) === true;\n },\n copyable: payload => {\n const { params, props } = evaluate(payload);\n return resolveGuard(props?.copyable, params);\n },\n pasteable: payload => {\n const { params, props } = evaluate(payload);\n return resolveGuard(props?.pasteable, params);\n },\n parseClipboard: column.cell?.parseClipboard ? payload => column.cell!.parseClipboard!({\n ...createCellComponentParams(state, payload.row.data, payload.row.id, column, payload.row.dataIndex),\n text: payload.text,\n }) : undefined,\n validateFill: column.cell?.validateFill ? payload => column.cell!.validateFill!({\n ...createCellComponentParams(state, payload.row.data, payload.row.id, column, payload.row.dataIndex),\n value: payload.value,\n }) : undefined,\n };\n}\n","import type * as Core from \"../core/model\";\nimport type * as React from \"../react-types\";\nimport { createReactEditPolicy } from \"./edit-policy\";\n\n/** Only data options cross the boundary; state-dependent cell policies are attached by the bridge. */\nexport function projectReactColumn<TData>(column: React.CominsTableRuntimeColumn<TData>): Core.CominsTableRuntimeColumn<TData> {\n const sort = column.sort;\n const filter = column.filter;\n return {\n id: column.id, field: column.field,\n label: typeof column.label === \"string\" ? column.label : column.id,\n hidden: column.hidden, lockPosition: column.lockPosition,\n minWidth: column.minWidth, maxWidth: column.maxWidth, width: column.width, pinned: column.pinned,\n sort: typeof sort === \"function\" ? (left, right, leftRow, rightRow) => sort.call(column, left, right, leftRow, rightRow) : sort,\n filter: filter && { ...filter, getValue: filter.getValue\n ? params => filter.getValue!({ ...params, column }) : undefined },\n };\n}\n\nexport function projectReactGroup(group: React.CominsTableRuntimeColumnGroup): Core.CominsTableRuntimeColumnGroup {\n return { id: group.id, children: group.children, hidden: group.hidden, lockPosition: group.lockPosition,\n pinned: group.pinned, label: typeof group.label === \"string\" ? group.label : group.id };\n}\n\nexport type ReactStateBridge<TData> = {\n source: React.CominsTableState<TData>;\n core: Core.CominsTableState<TData>;\n restoreColumn: (column: Core.CominsTableRuntimeColumn<TData>) => React.CominsTableRuntimeColumn<TData>;\n restoreGroup: (group: Core.CominsTableRuntimeColumnGroup) => React.CominsTableRuntimeColumnGroup;\n};\n\nexport function projectReactState<TData>(source: React.CominsTableState<TData>): ReactStateBridge<TData> {\n const columnSources = new Map<Core.CominsTableRuntimeColumn<TData>, React.CominsTableRuntimeColumn<TData>>();\n const groupSources = new Map<Core.CominsTableRuntimeColumnGroup, React.CominsTableRuntimeColumnGroup>();\n const columns = source.columns.map(column => {\n const projected = projectReactColumn(column);\n if (column.cell) projected.cell = createReactEditPolicy(source, column);\n columnSources.set(projected, column);\n return projected;\n });\n const columnGroups = source.columnGroups.map(group => {\n const projected = projectReactGroup(group);\n groupSources.set(projected, group);\n return projected;\n });\n return {\n source,\n core: {\n columns, columnGroups, columnOrder: source.columnOrder,\n columnState: source.columnState, columnGroupState: source.columnGroupState,\n rows: source.rows, rowIds: source.rowIds, getRowId: source.getRowId,\n pagination: source.pagination, selection: source.selection, showHeader: source.showHeader,\n sort: source.sort, sortModel: source.sortModel,\n },\n restoreColumn(column) {\n const original = columnSources.get(column);\n if (!original) throw new Error(\"Cannot restore a column from a different React state bridge.\");\n return original;\n },\n restoreGroup(group) {\n const original = groupSources.get(group);\n if (!original) throw new Error(\"Cannot restore a group from a different React state bridge.\");\n return original;\n },\n };\n}\n\nexport function restoreReactState<TData>(bridge: ReactStateBridge<TData>, next: Core.CominsTableState<TData>): React.CominsTableState<TData> {\n if (next === bridge.core) return bridge.source;\n return {\n ...bridge.source, ...next,\n columns: next.columns === bridge.core.columns ? bridge.source.columns : next.columns.map(bridge.restoreColumn),\n columnGroups: next.columnGroups === bridge.core.columnGroups ? bridge.source.columnGroups : next.columnGroups.map(bridge.restoreGroup),\n };\n}\n","import type { CominsTableTheme, CominsTableRuntimeColumn } from \"../react-types\";\nexport type { CominsColumnPinned } from \"../column-pinning\";\n\nexport type {\n CominsRowId,\n CominsTableDensity,\n CominsSortDirection,\n CominsSortState,\n CominsSortModel,\n CominsComponentPrimitiveValue,\n CominsComponentAlign,\n CominsComponentDirection,\n CominsComponentPlacement,\n CominsComponentRowPayload,\n CominsColumnRuntimeState,\n CominsColumnGroupRuntimeState,\n CominsColumnLayout,\n CominsPaginationState,\n CominsSelectionState,\n CominsRowUpdate,\n CominsVirtualRowsOptions,\n CominsVirtualRows,\n CominsCopiedRow,\n CominsCopiedCell,\n CominsCopiedCellRangeCell,\n CominsCopiedCellRange,\n CominsExportFormat,\n CominsExportValueSource,\n CominsExportColumn,\n CominsExportRowsOptions,\n CominsCellAddress,\n CominsCellRange,\n CominsPasteRowOptions,\n CominsRowSelectionOptions,\n CominsCellSelectionOptions,\n CominsFillCellRangeOptions,\n} from \"../model\";\n\nexport type {\n CominsTableTheme,\n CominsCellFormatParams,\n CominsColumnValueResolver,\n CominsTableComponentOption,\n CominsVirtualListItem,\n CominsTableMenuItem,\n CominsComponentColumnPayload,\n CominsCellComponentPayload,\n CominsHeaderComponentPayload,\n CominsClipboardGuard,\n CominsColumnProps,\n CominsTableComponentProps,\n CominsTableOptions,\n CominsTableMenuItems,\n CominsVirtualListItems,\n CominsButtonComponentConfig,\n CominsInputCommitEvent,\n CominsInputComponentConfig,\n CominsCheckboxComponentConfig,\n CominsRadioComponentConfig,\n CominsSelectComponentConfig,\n CominsToggleComponentConfig,\n CominsProgressComponentConfig,\n CominsMenuComponentConfig,\n CominsVirtualListSearchFilterPayload,\n CominsVirtualListComponentConfig,\n CominsHeaderComponentConfig,\n CominsCellComponentConfig,\n CominsHeaderComponent,\n CominsCellComponent,\n CominsTableCellConfig,\n CominsTableHeaderConfig,\n CominsTableColumn,\n CominsTableColumnGroup,\n CominsTableRuntimeColumn,\n CominsTableRuntimeColumnGroup,\n CominsEventColumn,\n CominsTableState,\n CominsTableStateInput,\n CominsHeaderColumnCell,\n CominsHeaderGroupCell,\n CominsHeaderCell,\n} from \"../react-types\";\nexport { parseCominsClipboardText } from \"../clipboard-text\";\nimport type {\n CominsCopiedRow, CominsCopiedCell, CominsCopiedCellRange, CominsPasteRowOptions, CominsFillCellRangeOptions,\n} from \"../model\";\nimport * as cells from \"../core/editing/cells\";\nimport * as clipboard from \"../core/editing/clipboard\";\nimport { createCellComponentParams, resolveCellProps, resolveGuard } from \"./edit-policy\";\nimport type {\n CominsTableState,\n CominsTableStateInput,\n CominsHeaderCell,\n} from \"../react-types\";\nimport type {\n CominsRowId,\n CominsSortState,\n CominsSortModel,\n CominsColumnLayout,\n CominsPaginationState,\n CominsRowUpdate,\n CominsVirtualRowsOptions,\n CominsVirtualRows,\n CominsCellAddress,\n CominsCellRange,\n CominsRowSelectionOptions,\n CominsCellSelectionOptions,\n} from \"../core/model\";\nimport * as table from \"../core/state/table\";\nimport * as columns from \"../core/layout/columns\";\nimport * as selection from \"../core/selection/state\";\nimport {\n projectReactState,\n restoreReactState,\n projectReactColumn,\n projectReactGroup,\n} from \"./model\";\nexport type { CominsRowGroupMoveOptions } from \"../core/state/table\";\nimport type {\n CominsRowGroupMoveOptions,\n} from \"../core/state/table\";\n\nexport function setCominsColumnWidth<TData>(\n state: CominsTableState<TData>,\n columnId: string,\n width: number,\n) {\n const bridge = projectReactState(state);\n const next = columns.setCominsColumnWidth(bridge.core, columnId, width);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsColumnHidden<TData>(\n state: CominsTableState<TData>,\n columnId: string,\n hidden: boolean,\n) {\n const bridge = projectReactState(state);\n const next = columns.setCominsColumnHidden(bridge.core, columnId, hidden);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsColumnGroupHidden<TData>(\n state: CominsTableState<TData>,\n groupId: string,\n hidden: boolean,\n) {\n const bridge = projectReactState(state);\n const next = columns.setCominsColumnGroupHidden(bridge.core, groupId, hidden);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsColumnGroupWidth<TData>(\n state: CominsTableState<TData>,\n groupId: string,\n width: number,\n) {\n const bridge = projectReactState(state);\n const next = columns.setCominsColumnGroupWidth(bridge.core, groupId, width);\n return restoreReactState(bridge, next);\n}\n\nexport function moveCominsColumn<TData>(\n state: CominsTableState<TData>,\n columnId: string,\n targetIndex: number,\n) {\n const bridge = projectReactState(state);\n const next = columns.moveCominsColumn(bridge.core, columnId, targetIndex);\n return restoreReactState(bridge, next);\n}\n\nexport function moveCominsColumnGroup<TData>(\n state: CominsTableState<TData>,\n groupId: string,\n targetIndex: number,\n) {\n const bridge = projectReactState(state);\n const next = columns.moveCominsColumnGroup(bridge.core, groupId, targetIndex);\n return restoreReactState(bridge, next);\n}\n\nexport function serializeCominsColumnLayout<TData>(state: CominsTableState<TData>): CominsColumnLayout {\n const bridge = projectReactState(state);\n const next = columns.serializeCominsColumnLayout(bridge.core);\n return next;\n}\n\nexport function applyCominsColumnLayout<TData>(state: CominsTableState<TData>, layout: CominsColumnLayout) {\n const bridge = projectReactState(state);\n const next = columns.applyCominsColumnLayout(bridge.core, layout);\n return restoreReactState(bridge, next);\n}\n\nexport function selectRow<TData>(\n state: CominsTableState<TData>,\n rowId: CominsRowId,\n options: CominsRowSelectionOptions = {},\n) {\n const bridge = projectReactState(state);\n const next = selection.selectRow(bridge.core, rowId, options);\n return restoreReactState(bridge, next);\n}\n\nexport function selectRows<TData>(state: CominsTableState<TData>, rowIds: readonly CominsRowId[]) {\n const bridge = projectReactState(state);\n const next = selection.selectRows(bridge.core, rowIds);\n return restoreReactState(bridge, next);\n}\n\nexport function selectCell<TData>(\n state: CominsTableState<TData>,\n cell: CominsCellAddress,\n options: CominsCellSelectionOptions = {},\n) {\n const bridge = projectReactState(state);\n const next = selection.selectCell(bridge.core, cell, options);\n return { ...restoreReactState(bridge, next), selection: next.selection };\n}\n\nexport function selectCellRange<TData>(state: CominsTableState<TData>, range: CominsCellRange) {\n const bridge = projectReactState(state);\n const next = selection.selectCellRange(bridge.core, range);\n return { ...restoreReactState(bridge, next), selection: next.selection };\n}\n\nexport function clearCominsCellRange<TData>(state: CominsTableState<TData>) {\n const bridge = projectReactState(state);\n const next = selection.clearCominsCellRange(bridge.core);\n return { ...restoreReactState(bridge, next), selection: next.selection };\n}\n\nexport function clearCominsSelection<TData>(state: CominsTableState<TData>) {\n const bridge = projectReactState(state);\n const next = selection.clearCominsSelection(bridge.core);\n return restoreReactState(bridge, next);\n}\n\nexport function isCominsRowSelected<TData>(state: CominsTableState<TData>, rowId: CominsRowId) {\n return selection.isCominsRowSelected(state, rowId);\n}\n\nexport function isCominsCellSelected<TData>(state: CominsTableState<TData>, cell: CominsCellAddress) {\n return selection.isCominsCellSelected(state, cell);\n}\n\nexport function getCominsSelectedCellRange<TData>(\n state: CominsTableState<TData>,\n range: CominsCellRange | null = state.selection.range,\n rowIds: readonly CominsRowId[] = state.rowIds,\n) {\n const bridge = projectReactState(state);\n const next = selection.getCominsSelectedCellRange(bridge.core, range, rowIds);\n return next;\n}\n\nexport function isCominsCellInSelectedRange<TData>(\n state: CominsTableState<TData>,\n cell: CominsCellAddress,\n rowIds: readonly CominsRowId[] = state.rowIds,\n) {\n const bridge = projectReactState(state);\n const next = selection.isCominsCellInSelectedRange(bridge.core, cell, rowIds);\n return next;\n}\n\nexport function queryCominsRows<TData>(\n state: CominsTableState<TData>,\n predicate?: (row: TData, index: number) => boolean,\n) {\n return table.queryCominsRows(state, predicate);\n}\n\nexport function replaceCominsRows<TData>(state: CominsTableState<TData>, rows: readonly TData[]) {\n const bridge = projectReactState(state);\n const next = table.replaceCominsRows(bridge.core, rows);\n return restoreReactState(bridge, next);\n}\n\nexport function addCominsRows<TData>(state: CominsTableState<TData>, rows: readonly TData[]) {\n const bridge = projectReactState(state);\n const next = table.addCominsRows(bridge.core, rows);\n return restoreReactState(bridge, next);\n}\n\nexport function updateCominsRows<TData>(\n state: CominsTableState<TData>,\n updates: ReadonlyArray<CominsRowUpdate<TData>>,\n) {\n const bridge = projectReactState(state);\n const next = table.updateCominsRows(bridge.core, updates);\n return restoreReactState(bridge, next);\n}\n\nexport function deleteCominsRows<TData>(state: CominsTableState<TData>, rowIds: readonly CominsRowId[]) {\n const bridge = projectReactState(state);\n const next = table.deleteCominsRows(bridge.core, rowIds);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsHeaderVisible<TData>(state: CominsTableState<TData>, showHeader: boolean) {\n const bridge = projectReactState(state);\n const next = table.setCominsHeaderVisible(bridge.core, showHeader);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsPagination<TData>(\n state: CominsTableState<TData>,\n pagination: Partial<CominsPaginationState>,\n) {\n const bridge = projectReactState(state);\n const next = table.setCominsPagination(bridge.core, pagination);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsSortState<TData>(\n state: CominsTableState<TData>,\n sort: CominsSortState | null,\n) {\n const bridge = projectReactState(state);\n const next = table.setCominsSortState(bridge.core, sort);\n return restoreReactState(bridge, next);\n}\n\nexport function setCominsSortModel<TData>(\n state: CominsTableState<TData>,\n sortModel: CominsSortModel,\n) {\n const bridge = projectReactState(state);\n const next = table.setCominsSortModel(bridge.core, sortModel);\n return restoreReactState(bridge, next);\n}\n\nexport function clearCominsSortState<TData>(state: CominsTableState<TData>) {\n const bridge = projectReactState(state);\n const next = table.clearCominsSortState(bridge.core);\n return restoreReactState(bridge, next);\n}\n\nexport function getCominsSortedRowIndexes<TData>(\n state: CominsTableState<TData>,\n sourceIndexes: readonly number[] = state.rows.map((_row, index) => index),\n) {\n const bridge = projectReactState(state);\n const next = table.getCominsSortedRowIndexes(bridge.core, sourceIndexes);\n return next;\n}\n\nexport function sortCominsRows<TData>(\n state: CominsTableState<TData>,\n sort: CominsSortState | null,\n) {\n const bridge = projectReactState(state);\n const next = table.sortCominsRows(bridge.core, sort);\n return restoreReactState(bridge, next);\n}\n\nexport function getCominsPageRows<TData>(\n state: CominsTableState<TData>,\n pagination: Partial<CominsPaginationState> = {},\n) {\n const bridge = projectReactState(state);\n const next = table.getCominsPageRows(bridge.core, pagination);\n return next;\n}\n\nexport function getCominsVirtualRows<TData>(\n state: CominsTableState<TData>,\n { overscan = 2, rowHeight, scrollTop, viewportHeight }: CominsVirtualRowsOptions,\n): CominsVirtualRows<TData> {\n const bridge = projectReactState(state);\n const next = table.getCominsVirtualRows(bridge.core, { overscan, rowHeight, scrollTop, viewportHeight });\n return next;\n}\n\nexport function moveCominsRow<TData>(\n state: CominsTableState<TData>,\n rowId: CominsRowId,\n targetIndex: number,\n) {\n const bridge = projectReactState(state);\n const next = table.moveCominsRow(bridge.core, rowId, targetIndex);\n return restoreReactState(bridge, next);\n}\n\nexport function moveCominsRowToGroup<TData>(\n state: CominsTableState<TData>,\n options: CominsRowGroupMoveOptions<TData>,\n) {\n const bridge = projectReactState(state);\n const next = table.moveCominsRowToGroup(bridge.core, options);\n return restoreReactState(bridge, next);\n}\n\nexport function getCominsCellValue<TData>(\n state: CominsTableState<TData>,\n row: TData,\n columnId: string,\n) {\n return table.getCominsCellValue(state, row, columnId);\n}\n\nexport function createCominsTableState<TData>(input: CominsTableStateInput<TData>): CominsTableState<TData> {\n const runtimeColumns = columns.normalizeColumns(input.columns);\n const runtimeGroups = columns.normalizeColumnGroups(runtimeColumns, input.columnGroups);\n const state = table.createCominsTableState({ ...input, columns: runtimeColumns.map(projectReactColumn), columnGroups: runtimeGroups.map(projectReactGroup) });\n return { ...state, columns: runtimeColumns, columnGroups: runtimeGroups, theme: input.theme ?? {} };\n}\n\nexport function getCominsVisibleColumns<TData>(state: CominsTableState<TData>) {\n const bridge = projectReactState(state);\n return columns.getCominsVisibleColumns(bridge.core).map(bridge.restoreColumn);\n}\n\nexport function getCominsHeaderRows<TData>(state: CominsTableState<TData>): Array<Array<CominsHeaderCell<TData>>> {\n const bridge = projectReactState(state);\n return columns.getCominsHeaderRows(bridge.core).map(row => row.map(cell => cell.kind === \"column\"\n ? { ...cell, column: bridge.restoreColumn(cell.column) }\n : { ...cell, group: bridge.restoreGroup(cell.group) }));\n}\n\nexport function setCominsTableTheme<TData>(state: CominsTableState<TData>, theme: CominsTableTheme) {\n return {\n ...state,\n theme: { ...state.theme, ...theme },\n };\n}\n\nexport function formatCominsCellValue<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n) {\n const value = getCominsCellValue(state, row, column.id);\n\n if (column.cell?.format) {\n return column.cell.format(createCellComponentParams(state, row, rowId, column));\n }\n\n return value == null ? \"\" : String(value);\n}\n\nexport function isCominsCellDisabled<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n) {\n const props = resolveCellProps(state, row, rowId, column);\n\n return props?.disabled !== undefined && resolveGuard(props.disabled, createCellComponentParams(state, row, rowId, column)) === true;\n}\n\nexport function getCominsCellClassName<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n) {\n const params = createCellComponentParams(state, row, rowId, column);\n const className = resolveCellProps(state, row, rowId, column)?.className;\n\n return typeof className === \"function\" ? className(params) : className;\n}\n\nexport function getCominsCellStyle<TData>(\n state: CominsTableState<TData>,\n row: TData,\n rowId: CominsRowId,\n column: CominsTableRuntimeColumn<TData>,\n) {\n const params = createCellComponentParams(state, row, rowId, column);\n const style = resolveCellProps(state, row, rowId, column)?.style;\n\n return typeof style === \"function\" ? style(params) : style;\n}\n\nexport function copyCominsRow<TData>(state: CominsTableState<TData>, rowId: CominsRowId): CominsCopiedRow<TData> {\n const bridge = projectReactState(state);\n return clipboard.copyCominsRow(bridge.core, rowId);\n}\n\nexport function pasteCominsRow<TData>(\n state: CominsTableState<TData>,\n copied: CominsCopiedRow<TData>,\n options: CominsPasteRowOptions<TData>,\n) {\n const bridge = projectReactState(state);\n const next = clipboard.pasteCominsRow(bridge.core, copied, options);\n return restoreReactState(bridge, next);\n}\n\nexport function copyCominsCell<TData>(\n state: CominsTableState<TData>,\n { columnId, rowId }: CominsCellAddress,\n): CominsCopiedCell | null {\n const bridge = projectReactState(state);\n return cells.copyCominsCell(bridge.core, { columnId, rowId });\n}\n\nexport function pasteCominsCell<TData>(\n state: CominsTableState<TData>,\n { columnId, rowId }: CominsCellAddress,\n copied: CominsCopiedCell | null,\n) {\n const bridge = projectReactState(state);\n const next = cells.pasteCominsCell(bridge.core, { columnId, rowId }, copied);\n return restoreReactState(bridge, next);\n}\n\nexport function copyCominsCellRange<TData>(\n state: CominsTableState<TData>,\n range: CominsCellRange | null = state.selection.range,\n rowIds: readonly CominsRowId[] = state.rowIds,\n): CominsCopiedCellRange | null {\n const bridge = projectReactState(state);\n return clipboard.copyCominsCellRange(bridge.core, range, rowIds);\n}\n\nexport function pasteCominsCellRange<TData>(\n state: CominsTableState<TData>,\n target: CominsCellAddress,\n copied: CominsCopiedCellRange | null,\n rowIds: readonly CominsRowId[] = state.rowIds,\n) {\n const bridge = projectReactState(state);\n const next = clipboard.pasteCominsCellRange(bridge.core, target, copied, rowIds);\n return restoreReactState(bridge, next);\n}\n\nexport function pasteCominsText<TData>(\n state: CominsTableState<TData>,\n target: CominsCellAddress,\n text: string,\n rowIds: readonly CominsRowId[] = state.rowIds,\n) {\n const bridge = projectReactState(state);\n const next = clipboard.pasteCominsText(bridge.core, target, text, rowIds);\n return restoreReactState(bridge, next);\n}\n\nexport function fillCominsCellRange<TData>(\n state: CominsTableState<TData>,\n { source, target }: CominsFillCellRangeOptions,\n rowIds: readonly CominsRowId[] = state.rowIds,\n) {\n const bridge = projectReactState(state);\n const next = clipboard.fillCominsCellRange(bridge.core, { source, target }, rowIds);\n return restoreReactState(bridge, next);\n}\n"],"mappings":";;AAOA,SAAgB,EACd,GACA,GACA,GACA,GACA,IAAW,EAAM,OAAO,QAAQ,CAAK,GACF;CACnC,OAAO;EACL,QAAQ;GACN,YAAY;GACZ,OAAO,EAAO;GACd,IAAI,EAAO;GACX,OAAO,EAAM,QAAQ,WAAW,MAAY,EAAQ,OAAO,EAAO,EAAE;GACpE,OAAO,EAAO;EAChB;EACA,KAAK;GACH,MAAM;GACN,WAAW;GACX,UAAU;GACV,IAAI;GACJ,OAAO;GACP,UAAU,EAAM,UAAU,OAAO,SAAS,CAAK;EACjD;EACA,WAAW,EACT,kBAAkB,EAAM,UAAU,OAAO,OAC3C;EACA,OAAO,EAAmB,GAAO,GAAK,EAAO,EAAE;CACjD;AACF;AAEA,SAAgB,EACd,GACA,GACA;CAKA,OAJI,MAAU,KAAA,IACL,KAGF,OAAO,KAAU,YAAY,IAAQ,EAAM,CAAM;AAC1D;AAEA,SAAgB,EACd,GACA,GACA,GACA,GACA;CACA,IAAM,IAAS,EAA0B,GAAO,GAAK,GAAO,CAAM,GAC5D,IAAQ,EAAO,MAAM;CAE3B,OAAO,OAAO,KAAU,aAAa,EAAM,CAAM,IAAI;AACvD;AAGA,SAAgB,EACd,GACA,GAC2B;CAC3B,IAAM,oBAAc,IAAI,QAGrB,GACG,KAAY,MAAgC;EAChD,IAAM,IAAS,EAAY,IAAI,CAAO;EACtC,IAAI,GAAQ,OAAO;EACnB,IAAM,IAAS,EAA0B,GAAO,EAAQ,IAAI,MAAM,EAAQ,IAAI,IAAI,GAAQ,EAAQ,IAAI,SAAS,GACzG,IAAa,EAAO,MAAM,OAC1B,IAAS;GAAE;GAAQ,OAAO,OAAO,KAAe,aAAa,EAAW,CAAM,IAAI;EAAW;EAEnG,OADA,EAAY,IAAI,GAAS,CAAM,GACxB;CACT;CACA,OAAO;EACL,WAAU,MAAW;GACnB,IAAM,EAAE,WAAQ,aAAU,EAAS,CAAO;GAC1C,OAAO,GAAO,aAAa,KAAA,KAAa,EAAa,EAAM,UAAU,CAAM,MAAM;EACnF;EACA,WAAU,MAAW;GACnB,IAAM,EAAE,WAAQ,aAAU,EAAS,CAAO;GAC1C,OAAO,EAAa,GAAO,UAAU,CAAM;EAC7C;EACA,YAAW,MAAW;GACpB,IAAM,EAAE,WAAQ,aAAU,EAAS,CAAO;GAC1C,OAAO,EAAa,GAAO,WAAW,CAAM;EAC9C;EACA,gBAAgB,EAAO,MAAM,kBAAiB,MAAW,EAAO,KAAM,eAAgB;GACpF,GAAG,EAA0B,GAAO,EAAQ,IAAI,MAAM,EAAQ,IAAI,IAAI,GAAQ,EAAQ,IAAI,SAAS;GACnG,MAAM,EAAQ;EAChB,CAAC,IAAI,KAAA;EACL,cAAc,EAAO,MAAM,gBAAe,MAAW,EAAO,KAAM,aAAc;GAC9E,GAAG,EAA0B,GAAO,EAAQ,IAAI,MAAM,EAAQ,IAAI,IAAI,GAAQ,EAAQ,IAAI,SAAS;GACnG,OAAO,EAAQ;EACjB,CAAC,IAAI,KAAA;CACP;AACF;;;AC/FA,SAAgB,EAA0B,GAAqF;CAC7H,IAAM,IAAO,EAAO,MACd,IAAS,EAAO;CACtB,OAAO;EACL,IAAI,EAAO;EAAI,OAAO,EAAO;EAC7B,OAAO,OAAO,EAAO,SAAU,WAAW,EAAO,QAAQ,EAAO;EAChE,QAAQ,EAAO;EAAQ,cAAc,EAAO;EAC5C,UAAU,EAAO;EAAU,UAAU,EAAO;EAAU,OAAO,EAAO;EAAO,QAAQ,EAAO;EAC1F,MAAM,OAAO,KAAS,cAAc,GAAM,GAAO,GAAS,MAAa,EAAK,KAAK,GAAQ,GAAM,GAAO,GAAS,CAAQ,IAAI;EAC3H,QAAQ,KAAU;GAAE,GAAG;GAAQ,UAAU,EAAO,YAC5C,MAAU,EAAO,SAAU;IAAE,GAAG;IAAQ;GAAO,CAAC,IAAI,KAAA;EAAU;CACpE;AACF;AAEA,SAAgB,EAAkB,GAAgF;CAChH,OAAO;EAAE,IAAI,EAAM;EAAI,UAAU,EAAM;EAAU,QAAQ,EAAM;EAAQ,cAAc,EAAM;EACzF,QAAQ,EAAM;EAAQ,OAAO,OAAO,EAAM,SAAU,WAAW,EAAM,QAAQ,EAAM;CAAG;AAC1F;AASA,SAAgB,EAAyB,GAAgE;CACvG,IAAM,oBAAgB,IAAI,IAAiF,GACrG,oBAAe,IAAI,IAA6E;CAYtG,OAAO;EACL;EACA,MAAM;GACJ,SAdY,EAAO,QAAQ,KAAI,MAAU;IAC3C,IAAM,IAAY,EAAmB,CAAM;IAG3C,OAFI,EAAO,SAAM,EAAU,OAAO,EAAsB,GAAQ,CAAM,IACtE,EAAc,IAAI,GAAW,CAAM,GAC5B;GACT,CASI;GAAS,cARQ,EAAO,aAAa,KAAI,MAAS;IACpD,IAAM,IAAY,EAAkB,CAAK;IAEzC,OADA,EAAa,IAAI,GAAW,CAAK,GAC1B;GACT,CAIa;GAAc,aAAa,EAAO;GAC3C,aAAa,EAAO;GAAa,kBAAkB,EAAO;GAC1D,MAAM,EAAO;GAAM,QAAQ,EAAO;GAAQ,UAAU,EAAO;GAC3D,YAAY,EAAO;GAAY,WAAW,EAAO;GAAW,YAAY,EAAO;GAC/E,MAAM,EAAO;GAAM,WAAW,EAAO;EACvC;EACA,cAAc,GAAQ;GACpB,IAAM,IAAW,EAAc,IAAI,CAAM;GACzC,IAAI,CAAC,GAAU,MAAU,MAAM,8DAA8D;GAC7F,OAAO;EACT;EACA,aAAa,GAAO;GAClB,IAAM,IAAW,EAAa,IAAI,CAAK;GACvC,IAAI,CAAC,GAAU,MAAU,MAAM,6DAA6D;GAC5F,OAAO;EACT;CACF;AACF;AAEA,SAAgB,EAAyB,GAAiC,GAAmE;CAE3I,OADI,MAAS,EAAO,OAAa,EAAO,SACjC;EACL,GAAG,EAAO;EAAQ,GAAG;EACrB,SAAS,EAAK,YAAY,EAAO,KAAK,UAAU,EAAO,OAAO,UAAU,EAAK,QAAQ,IAAI,EAAO,aAAa;EAC7G,cAAc,EAAK,iBAAiB,EAAO,KAAK,eAAe,EAAO,OAAO,eAAe,EAAK,aAAa,IAAI,EAAO,YAAY;CACvI;AACF;;;ACgDA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA6B,EAAO,MAAM,GAAU,CAChC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA8B,EAAO,MAAM,GAAU,CACjC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAmC,EAAO,MAAM,GAAS,CACrC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAkC,EAAO,MAAM,GAAS,CACpC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAyB,EAAO,MAAM,GAAU,CAC5B,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA8B,EAAO,MAAM,GAAS,CAChC,CAAI;AACvC;AAEA,SAAgB,GAAmC,GAAoD;CACrG,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAAoC,EAAO,IACjD;AACT;AAEA,SAAgB,GAA+B,GAAgC,GAA4B;CACzG,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAgC,EAAO,MAAM,CACzB,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,IAAqC,CAAC,GACtC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAoB,EAAO,MAAM,GAAO,CACpB,CAAI;AACvC;AAEA,SAAgB,GAAkB,GAAgC,GAAgC;CAChG,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,GAAqB,EAAO,MAAM,CACd,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,IAAsC,CAAC,GACvC;CACA,IAAM,IAAS,EAAkB,CAAK,GAChC,IAAO,EAAqB,EAAO,MAAM,GAAM,CAAO;CAC5D,OAAO;EAAE,GAAG,EAAkB,GAAQ,CAAI;EAAG,WAAW,EAAK;CAAU;AACzE;AAEA,SAAgB,GAAuB,GAAgC,GAAwB;CAC7F,IAAM,IAAS,EAAkB,CAAK,GAChC,IAAO,EAA0B,EAAO,MAAM,CAAK;CACzD,OAAO;EAAE,GAAG,EAAkB,GAAQ,CAAI;EAAG,WAAW,EAAK;CAAU;AACzE;AAEA,SAAgB,GAA4B,GAAgC;CAC1E,IAAM,IAAS,EAAkB,CAAK,GAChC,IAAO,EAA+B,EAAO,IAAI;CACvD,OAAO;EAAE,GAAG,EAAkB,GAAQ,CAAI;EAAG,WAAW,EAAK;CAAU;AACzE;AAEA,SAAgB,GAA4B,GAAgC;CAC1E,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA+B,EAAO,IAClB,CAAI;AACvC;AAEA,SAAgB,GAA2B,GAAgC,GAAoB;CAC7F,OAAO,GAA8B,GAAO,CAAK;AACnD;AAEA,SAAgB,GAA4B,GAAgC,GAAyB;CACnG,OAAO,EAA+B,GAAO,CAAI;AACnD;AAEA,SAAgB,GACd,GACA,IAAgC,EAAM,UAAU,OAChD,IAAiC,EAAM,QACvC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAAqC,EAAO,MAAM,GAAO,CAC/D;AACT;AAEA,SAAgB,GACd,GACA,GACA,IAAiC,EAAM,QACvC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAAsC,EAAO,MAAM,GAAM,CAC/D;AACT;AAEA,SAAgB,GACd,GACA,GACA;CACA,OAAO,EAAsB,GAAO,CAAS;AAC/C;AAEA,SAAgB,GAAyB,GAAgC,GAAwB;CAC/F,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,GAAwB,EAAO,MAAM,CACjB,CAAI;AACvC;AAEA,SAAgB,GAAqB,GAAgC,GAAwB;CAC3F,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAoB,EAAO,MAAM,CACb,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAuB,EAAO,MAAM,CAChB,CAAI;AACvC;AAEA,SAAgB,GAAwB,GAAgC,GAAgC;CACtG,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAuB,EAAO,MAAM,CAChB,CAAI;AACvC;AAEA,SAAgB,GAA8B,GAAgC,GAAqB;CACjG,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA6B,EAAO,MAAM,CACtB,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA0B,EAAO,MAAM,CACnB,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAyB,EAAO,MAAM,CAClB,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,GAAyB,EAAO,MAAM,CAClB,CAAI;AACvC;AAEA,SAAgB,GAA4B,GAAgC;CAC1E,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA2B,EAAO,IACd,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,IAAmC,EAAM,KAAK,KAAK,GAAM,MAAU,CAAK,GACxE;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAAgC,EAAO,MAAM,CACnD;AACT;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAqB,EAAO,MAAM,CACd,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,IAA6C,CAAC,GAC9C;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAAwB,EAAO,MAAM,CAC3C;AACT;AAEA,SAAgB,GACd,GACA,EAAE,cAAW,GAAG,cAAW,cAAW,qBACZ;CAC1B,IAAM,IAAS,EAAkB,CAAK;CAEtC,OADa,EAA2B,EAAO,MAAM;EAAE;EAAU;EAAW;EAAW;CAAe,CAC/F;AACT;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAoB,EAAO,MAAM,GAAO,CACpB,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA2B,EAAO,MAAM,CACpB,CAAI;AACvC;AAEA,SAAgB,EACd,GACA,GACA,GACA;CACA,OAAO,EAAyB,GAAO,GAAK,CAAQ;AACtD;AAEA,SAAgB,GAA8B,GAA8D;CAC1G,IAAM,IAAiB,EAAyB,EAAM,OAAO,GACvD,IAAgB,EAA8B,GAAgB,EAAM,YAAY;CAEtF,OAAO;EAAE,GADK,EAA6B;GAAE,GAAG;GAAO,SAAS,EAAe,IAAI,CAAkB;GAAG,cAAc,EAAc,IAAI,CAAiB;EAAE,CAC/I;EAAO,SAAS;EAAgB,cAAc;EAAe,OAAO,EAAM,SAAS,CAAC;CAAE;AACpG;AAEA,SAAgB,GAA+B,GAAgC;CAC7E,IAAM,IAAS,EAAkB,CAAK;CACtC,OAAO,EAAgC,EAAO,IAAI,CAAC,CAAC,IAAI,EAAO,aAAa;AAC9E;AAEA,SAAgB,GAA2B,GAAuE;CAChH,IAAM,IAAS,EAAkB,CAAK;CACtC,OAAO,EAA4B,EAAO,IAAI,CAAC,CAAC,KAAI,MAAO,EAAI,KAAI,MAAQ,EAAK,SAAS,WACrF;EAAE,GAAG;EAAM,QAAQ,EAAO,cAAc,EAAK,MAAM;CAAE,IACrD;EAAE,GAAG;EAAM,OAAO,EAAO,aAAa,EAAK,KAAK;CAAE,CAAC,CAAC;AAC1D;AAEA,SAAgB,GAA2B,GAAgC,GAAyB;CAClG,OAAO;EACL,GAAG;EACH,OAAO;GAAE,GAAG,EAAM;GAAO,GAAG;EAAM;CACpC;AACF;AAEA,SAAgB,EACd,GACA,GACA,GACA,GACA;CACA,IAAM,IAAQ,EAAmB,GAAO,GAAK,EAAO,EAAE;CAMtD,OAJI,EAAO,MAAM,SACR,EAAO,KAAK,OAAO,EAA0B,GAAO,GAAK,GAAO,CAAM,CAAC,IAGzE,KAAS,OAAO,KAAK,OAAO,CAAK;AAC1C;AAEA,SAAgB,GACd,GACA,GACA,GACA,GACA;CACA,IAAM,IAAQ,EAAiB,GAAO,GAAK,GAAO,CAAM;CAExD,OAAO,GAAO,aAAa,KAAA,KAAa,EAAa,EAAM,UAAU,EAA0B,GAAO,GAAK,GAAO,CAAM,CAAC,MAAM;AACjI;AAEA,SAAgB,GACd,GACA,GACA,GACA,GACA;CACA,IAAM,IAAS,EAA0B,GAAO,GAAK,GAAO,CAAM,GAC5D,IAAY,EAAiB,GAAO,GAAK,GAAO,CAAM,CAAC,EAAE;CAE/D,OAAO,OAAO,KAAc,aAAa,EAAU,CAAM,IAAI;AAC/D;AAEA,SAAgB,GACd,GACA,GACA,GACA,GACA;CACA,IAAM,IAAS,EAA0B,GAAO,GAAK,GAAO,CAAM,GAC5D,IAAQ,EAAiB,GAAO,GAAK,GAAO,CAAM,CAAC,EAAE;CAE3D,OAAO,OAAO,KAAU,aAAa,EAAM,CAAM,IAAI;AACvD;AAEA,SAAgB,GAAqB,GAAgC,GAA4C;CAC/G,IAAM,IAAS,EAAkB,CAAK;CACtC,OAAO,EAAwB,EAAO,MAAM,CAAK;AACnD;AAEA,SAAgB,GACd,GACA,GACA,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAyB,EAAO,MAAM,GAAQ,CAC1B,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,EAAE,aAAU,YACa;CACzB,IAAM,IAAS,EAAkB,CAAK;CACtC,OAAO,EAAqB,EAAO,MAAM;EAAE;EAAU;CAAM,CAAC;AAC9D;AAEA,SAAgB,GACd,GACA,EAAE,aAAU,YACZ,GACA;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAAsB,EAAO,MAAM;EAAE;EAAU;CAAM,GAAG,CACpC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,IAAgC,EAAM,UAAU,OAChD,IAAiC,EAAM,QACT;CAC9B,IAAM,IAAS,EAAkB,CAAK;CACtC,OAAO,EAA8B,EAAO,MAAM,GAAO,CAAM;AACjE;AAEA,SAAgB,GACd,GACA,GACA,GACA,IAAiC,EAAM,QACvC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA+B,EAAO,MAAM,GAAQ,GAAQ,CACxC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,GACA,GACA,IAAiC,EAAM,QACvC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA0B,EAAO,MAAM,GAAQ,GAAM,CACjC,CAAI;AACvC;AAEA,SAAgB,GACd,GACA,EAAE,WAAQ,aACV,IAAiC,EAAM,QACvC;CACA,IAAM,IAAS,EAAkB,CAAK;CAEtC,OAAO,EAAkB,GADZ,EAA8B,EAAO,MAAM;EAAE;EAAQ;CAAO,GAAG,CAC3C,CAAI;AACvC"}
@@ -1,166 +0,0 @@
1
- //#region src/core/editing/export.ts
2
- var e = [
3
- "__rowId",
4
- "__parentId",
5
- "__depth",
6
- "__groupId"
7
- ];
8
- function t(t, n) {
9
- return e.flatMap((e) => {
10
- let r = t?.[e];
11
- if (!r) return [];
12
- if (n.includes(e)) throw Error(`Export metadata column collision: ${e}`);
13
- return [{
14
- key: e,
15
- value: r
16
- }];
17
- });
18
- }
19
- function n({ columnOrder: e, columns: t }) {
20
- if (!e?.length) return t;
21
- let n = new Map(t.map((e) => [e.id, e]));
22
- return e.map((e) => n.get(e)).filter((e) => !!e);
23
- }
24
- function r(e) {
25
- return e == null ? "" : typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" || typeof e == "bigint" ? String(e) : JSON.stringify(e);
26
- }
27
- function i(e) {
28
- let t = r(e);
29
- return /[",\r\n]/u.test(t) ? `"${t.replaceAll("\"", "\"\"")}"` : t;
30
- }
31
- function a(e, t) {
32
- return e.id && t?.[e.id] !== void 0 ? t[e.id] : e.label ?? e.id ?? "";
33
- }
34
- function o(e, t, n, r) {
35
- return r === "formatted" && e.format ? e.format(t, n) : e.value(t, n);
36
- }
37
- function s({ columnOrder: e, columns: r, headerOverrides: s, rows: c, metadata: l, valueSource: u = "raw" }) {
38
- let d = n({
39
- columnOrder: e,
40
- columns: r
41
- }), f = d.map((e) => a(e, s)), p = t(l, f);
42
- return [[...f, ...p.map((e) => e.key)].map(i).join(","), ...c.map((e, t) => [...d.map((n) => o(n, e, t, u)), ...p.map((n) => n.value(e, t))].map(i).join(","))].join("\n");
43
- }
44
- function c({ columnOrder: e, columns: r, headerOverrides: i, rows: s, metadata: c, valueSource: l = "raw" }) {
45
- let u = n({
46
- columnOrder: e,
47
- columns: r
48
- }), d = t(c, u.map((e) => a(e, i))), f = s.map((e, t) => Object.fromEntries([...u.map((n) => [a(n, i), o(n, e, t, l)]), ...d.map((n) => [n.key, n.value(e, t)])]));
49
- return JSON.stringify(f, null, 2);
50
- }
51
- //#endregion
52
- //#region src/core/editing/import.ts
53
- function l(e, t) {
54
- if (!Number.isSafeInteger(e) || e < 1) throw RangeError(`${t} must be a positive safe integer.`);
55
- }
56
- function u({ text: e, mapRow: t, hasHeader: n = !0, maxCharacters: r = 1e6, maxCells: i = 1e5 }) {
57
- if (l(r, "maxCharacters"), l(i, "maxCells"), e.length > r) throw RangeError("CSV exceeds the character limit.");
58
- let a = +(e.charCodeAt(0) === 65279);
59
- if (e.length === a) return [];
60
- let o = [], s = [], c = "", u = !1, d = !1, f = 0, p, m = (e) => /* @__PURE__ */ SyntaxError(`Invalid CSV at record ${o.length + 1}, field ${s.length + 1}: ${e}.`), h = () => {
61
- if (++f > i) throw RangeError("CSV exceeds the cell limit.");
62
- s.push(c), c = "", d = !1;
63
- }, g = () => {
64
- if (h(), p ??= s.length, s.length !== p) throw m("inconsistent field count");
65
- o.push(s), s = [];
66
- };
67
- for (let t = a; t < e.length; t++) {
68
- let n = e[t];
69
- if (u) n === "\"" ? e[t + 1] === "\"" ? (c += "\"", t++) : (u = !1, d = !0) : c += n;
70
- else if (n === ",") h();
71
- else if (n === "\r" || n === "\n") g(), n === "\r" && e[t + 1] === "\n" && t++;
72
- else if (d) throw m("unexpected text after a quoted field");
73
- else if (n === "\"") {
74
- if (c !== "") throw m("quote inside an unquoted field");
75
- u = !0;
76
- } else c += n;
77
- }
78
- if (u) throw m("unclosed quoted field");
79
- (s.length || c !== "" || d || !/[\r\n]$/u.test(e)) && g();
80
- let _ = n ? o[0] : null, v = +!!n;
81
- return o.slice(v).map((e, n) => t({
82
- cells: e,
83
- headers: _,
84
- rowIndex: n
85
- }));
86
- }
87
- //#endregion
88
- //#region src/core/editing/export-structure.ts
89
- function d(e, t, n) {
90
- if (e.has(t)) throw Error(`Duplicate export ${n} id: ${String(t)}`);
91
- e.add(t);
92
- }
93
- function f({ nodes: e, getRowId: t, ...n }) {
94
- let r = [], i = [], a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = e.map((e) => ({
95
- node: e,
96
- parentId: null,
97
- depth: 0
98
- })).reverse();
99
- for (; s.length;) {
100
- let { node: e, parentId: n, depth: c, exit: l } = s.pop();
101
- if (l) {
102
- o.delete(e);
103
- continue;
104
- }
105
- if (o.has(e)) throw Error("Cyclic export tree");
106
- o.add(e);
107
- let u = t(e.item, r.length);
108
- d(a, u, "row"), r.push(e.item), i.push({
109
- id: u,
110
- parentId: n,
111
- depth: c
112
- }), s.push({
113
- node: e,
114
- parentId: n,
115
- depth: c,
116
- exit: !0
117
- });
118
- let f = e.children ?? [];
119
- for (let e = f.length - 1; e >= 0; e--) s.push({
120
- node: f[e],
121
- parentId: u,
122
- depth: c + 1
123
- });
124
- }
125
- return {
126
- ...n,
127
- rows: r,
128
- metadata: {
129
- __rowId: (e, t) => i[t].id,
130
- __parentId: (e, t) => i[t].parentId,
131
- __depth: (e, t) => i[t].depth
132
- }
133
- };
134
- }
135
- function p({ rows: e, groups: t, getGroupId: n, getRowGroupId: r, getRowId: i, ...a }) {
136
- let o = /* @__PURE__ */ new Set(), s = /* @__PURE__ */ new Map();
137
- for (let e of t) {
138
- let t = n(e);
139
- d(o, t, "group"), s.set(t, []);
140
- }
141
- let c = /* @__PURE__ */ new Set();
142
- e.forEach((e, t) => {
143
- let n = i(e, t);
144
- d(c, n, "row");
145
- let a = r(e, t), o = s.get(a);
146
- if (!o) throw Error(`Unknown export group id: ${String(a)}`);
147
- o.push({
148
- row: e,
149
- id: n,
150
- groupId: a
151
- });
152
- });
153
- let l = [...s.values()].flat();
154
- return {
155
- ...a,
156
- rows: l.map((e) => e.row),
157
- metadata: {
158
- __rowId: (e, t) => l[t].id,
159
- __groupId: (e, t) => l[t].groupId
160
- }
161
- };
162
- }
163
- //#endregion
164
- export { c as a, s as i, f as n, u as r, p as t };
165
-
166
- //# sourceMappingURL=export-structure-Dy2zOqbj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-structure-Dy2zOqbj.js","names":[],"sources":["../src/core/editing/export.ts","../src/core/editing/import.ts","../src/core/editing/export-structure.ts"],"sourcesContent":["import type { CominsExportColumn, CominsExportRowsOptions, CominsExportValueSource, CominsExportMetadata } from \"../model\";\n\nconst metadataKeys = [\"__rowId\", \"__parentId\", \"__depth\", \"__groupId\"] as const;\n\nfunction getMetadataColumns<TData>(metadata: CominsExportMetadata<TData> | undefined, headers: readonly (string | undefined)[]) {\n return metadataKeys.flatMap(key => {\n const value = metadata?.[key];\n if (!value) return [];\n if (headers.includes(key)) throw new Error(`Export metadata column collision: ${key}`);\n return [{ key, value }];\n });\n}\n\nfunction normalizeCominsExportColumns<TData>({\n columnOrder,\n columns,\n}: Pick<CominsExportRowsOptions<TData>, \"columnOrder\" | \"columns\">) {\n if (!columnOrder?.length) {\n return columns;\n }\n\n const columnsById = new Map(columns.map((column) => [column.id, column]));\n\n return columnOrder\n .map((id) => columnsById.get(id))\n .filter((column): column is CominsExportColumn<TData> => Boolean(column));\n}\n\nfunction stringifyCominsExportValue(value: unknown) {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n\n return JSON.stringify(value);\n}\n\nfunction escapeCominsCsvCell(value: unknown) {\n const text = stringifyCominsExportValue(value);\n\n return /[\",\\r\\n]/u.test(text) ? `\"${text.replaceAll('\"', '\"\"')}\"` : text;\n}\n\nfunction getCominsExportHeader<TData>(column: CominsExportColumn<TData>, headerOverrides?: Record<string, string>) {\n if (column.id && headerOverrides?.[column.id] !== undefined) {\n return headerOverrides[column.id];\n }\n\n return column.label ?? column.id ?? \"\";\n}\n\nfunction getCominsExportValue<TData>(\n column: CominsExportColumn<TData>,\n row: TData,\n rowIndex: number,\n valueSource: CominsExportValueSource,\n) {\n if (valueSource === \"formatted\" && column.format) {\n return column.format(row, rowIndex);\n }\n\n return column.value(row, rowIndex);\n}\n\nexport function exportCominsRowsToCsv<TData>({\n columnOrder,\n columns,\n headerOverrides,\n rows,\n metadata,\n valueSource = \"raw\",\n}: CominsExportRowsOptions<TData>) {\n const exportColumns = normalizeCominsExportColumns({ columnOrder, columns });\n const headers = exportColumns.map(column => getCominsExportHeader(column, headerOverrides));\n const managementColumns = getMetadataColumns(metadata, headers);\n const lines = [\n [...headers, ...managementColumns.map(column => column.key)].map(escapeCominsCsvCell).join(\",\"),\n ...rows.map((row, rowIndex) =>\n [...exportColumns.map(column => getCominsExportValue(column, row, rowIndex, valueSource)),\n ...managementColumns.map(column => column.value(row, rowIndex))].map(escapeCominsCsvCell).join(\",\"),\n ),\n ];\n\n return lines.join(\"\\n\");\n}\n\nexport function exportCominsRowsToJson<TData>({\n columnOrder,\n columns,\n headerOverrides,\n rows,\n metadata,\n valueSource = \"raw\",\n}: CominsExportRowsOptions<TData>) {\n const exportColumns = normalizeCominsExportColumns({ columnOrder, columns });\n const managementColumns = getMetadataColumns(metadata, exportColumns.map(column => getCominsExportHeader(column, headerOverrides)));\n const data = rows.map((row, rowIndex) =>\n Object.fromEntries(\n [...exportColumns.map((column) => [\n getCominsExportHeader(column, headerOverrides),\n getCominsExportValue(column, row, rowIndex, valueSource),\n ]), ...managementColumns.map(column => [column.key, column.value(row, rowIndex)])],\n ),\n );\n\n return JSON.stringify(data, null, 2);\n}\n","import type { CominsCsvImportOptions } from \"../model\";\n\nfunction validateLimit(value: number, name: string) {\n if (!Number.isSafeInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive safe integer.`);\n }\n}\n\n/** Parse and validate the complete CSV before mapping any application-owned rows. */\nexport function importCominsRowsFromCsv<TData>({\n text,\n mapRow,\n hasHeader = true,\n maxCharacters = 1_000_000,\n maxCells = 100_000,\n}: CominsCsvImportOptions<TData>): TData[] {\n validateLimit(maxCharacters, \"maxCharacters\");\n validateLimit(maxCells, \"maxCells\");\n if (text.length > maxCharacters) throw new RangeError(\"CSV exceeds the character limit.\");\n\n const start = text.charCodeAt(0) === 0xfeff ? 1 : 0;\n if (text.length === start) return [];\n\n const records: string[][] = [];\n let row: string[] = [];\n let value = \"\";\n let quoted = false;\n let closed = false;\n let cellCount = 0;\n let width: number | undefined;\n const syntaxError = (reason: string) => new SyntaxError(\n `Invalid CSV at record ${records.length + 1}, field ${row.length + 1}: ${reason}.`,\n );\n const finishCell = () => {\n if (++cellCount > maxCells) throw new RangeError(\"CSV exceeds the cell limit.\");\n row.push(value);\n value = \"\";\n closed = false;\n };\n const finishRecord = () => {\n finishCell();\n width ??= row.length;\n if (row.length !== width) throw syntaxError(\"inconsistent field count\");\n records.push(row);\n row = [];\n };\n\n for (let index = start; index < text.length; index++) {\n const char = text[index]!;\n if (quoted) {\n if (char === '\"') {\n if (text[index + 1] === '\"') { value += '\"'; index++; }\n else { quoted = false; closed = true; }\n } else value += char;\n } else if (char === \",\") {\n finishCell();\n } else if (char === \"\\r\" || char === \"\\n\") {\n finishRecord();\n if (char === \"\\r\" && text[index + 1] === \"\\n\") index++;\n } else if (closed) {\n throw syntaxError(\"unexpected text after a quoted field\");\n } else if (char === '\"') {\n if (value !== \"\") throw syntaxError(\"quote inside an unquoted field\");\n quoted = true;\n } else value += char;\n }\n if (quoted) throw syntaxError(\"unclosed quoted field\");\n // A final record separator terminates the preceding row, not an extra blank row.\n if (row.length || value !== \"\" || closed || !/[\\r\\n]$/u.test(text)) finishRecord();\n\n const headers = hasHeader ? records[0]! : null;\n const firstRow = hasHeader ? 1 : 0;\n return records.slice(firstRow).map((cells, rowIndex) => mapRow({ cells, headers, rowIndex }));\n}\n","import type { CominsExportGroupedOptions, CominsExportRowsOptions, CominsExportTreeOptions, CominsRowId } from \"../model\";\nimport type { CominsTreeNode } from \"../../tree\";\n\nfunction addUniqueId(ids: Set<CominsRowId>, id: CominsRowId, kind: \"row\" | \"group\") {\n if (ids.has(id)) throw new Error(`Duplicate export ${kind} id: ${String(id)}`);\n ids.add(id);\n}\n\n/** Export every supplied node in preorder, independently of disclosure state. */\nexport function createCominsTreeExportOptions<TData>({ nodes, getRowId, ...options }: CominsExportTreeOptions<TData>): CominsExportRowsOptions<TData> {\n const rows: TData[] = [];\n const metadata: { id: CominsRowId; parentId: CominsRowId | null; depth: number }[] = [];\n const ids = new Set<CominsRowId>();\n const active = new Set<CominsTreeNode<TData>>();\n type Frame = { node: CominsTreeNode<TData>; parentId: CominsRowId | null; depth: number; exit?: boolean };\n const stack: Frame[] = nodes.map(node => ({ node, parentId: null, depth: 0 })).reverse();\n while (stack.length) {\n const { node, parentId, depth, exit } = stack.pop()!;\n if (exit) { active.delete(node); continue; }\n if (active.has(node)) throw new Error(\"Cyclic export tree\");\n active.add(node);\n const id = getRowId(node.item, rows.length);\n addUniqueId(ids, id, \"row\");\n rows.push(node.item);\n metadata.push({ id, parentId, depth });\n stack.push({ node, parentId, depth, exit: true });\n const children = node.children ?? [];\n for (let index = children.length - 1; index >= 0; index--) {\n stack.push({ node: children[index]!, parentId: id, depth: depth + 1 });\n }\n }\n return { ...options, rows, metadata: {\n __rowId: (_row, index) => metadata[index]!.id,\n __parentId: (_row, index) => metadata[index]!.parentId,\n __depth: (_row, index) => metadata[index]!.depth,\n } };\n}\n\n/** Group order follows groups; member order follows the supplied rows. Empty groups add no data row. */\nexport function createCominsGroupedExportOptions<TData, TGroup>({ rows, groups, getGroupId, getRowGroupId, getRowId, ...options }: CominsExportGroupedOptions<TData, TGroup>): CominsExportRowsOptions<TData> {\n const groupIds = new Set<CominsRowId>();\n const buckets = new Map<CominsRowId, { row: TData; id: CominsRowId; groupId: CominsRowId }[]>();\n for (const group of groups) {\n const groupId = getGroupId(group);\n addUniqueId(groupIds, groupId, \"group\");\n buckets.set(groupId, []);\n }\n const rowIds = new Set<CominsRowId>();\n rows.forEach((row, index) => {\n const id = getRowId(row, index);\n addUniqueId(rowIds, id, \"row\");\n const groupId = getRowGroupId(row, index);\n const bucket = buckets.get(groupId);\n if (!bucket) throw new Error(`Unknown export group id: ${String(groupId)}`);\n bucket.push({ row, id, groupId });\n });\n const entries = [...buckets.values()].flat();\n return { ...options, rows: entries.map(entry => entry.row), metadata: {\n __rowId: (_row, index) => entries[index]!.id,\n __groupId: (_row, index) => entries[index]!.groupId,\n } };\n}\n"],"mappings":";AAEA,IAAM,IAAe;CAAC;CAAW;CAAc;CAAW;AAAW;AAErE,SAAS,EAA0B,GAAmD,GAA0C;CAC9H,OAAO,EAAa,SAAQ,MAAO;EACjC,IAAM,IAAQ,IAAW;EACzB,IAAI,CAAC,GAAO,OAAO,CAAC;EACpB,IAAI,EAAQ,SAAS,CAAG,GAAG,MAAU,MAAM,qCAAqC,GAAK;EACrF,OAAO,CAAC;GAAE;GAAK;EAAM,CAAC;CACxB,CAAC;AACH;AAEA,SAAS,EAAoC,EAC3C,gBACA,cACkE;CAClE,IAAI,CAAC,GAAa,QAChB,OAAO;CAGT,IAAM,IAAc,IAAI,IAAI,EAAQ,KAAK,MAAW,CAAC,EAAO,IAAI,CAAM,CAAC,CAAC;CAExE,OAAO,EACJ,KAAK,MAAO,EAAY,IAAI,CAAE,CAAC,CAAC,CAChC,QAAQ,MAAgD,EAAQ,CAAO;AAC5E;AAEA,SAAS,EAA2B,GAAgB;CAWlD,OAVI,KAAU,OACL,KAEL,OAAO,KAAU,WACZ,IAEL,OAAO,KAAU,YAAY,OAAO,KAAU,aAAa,OAAO,KAAU,WACvE,OAAO,CAAK,IAGd,KAAK,UAAU,CAAK;AAC7B;AAEA,SAAS,EAAoB,GAAgB;CAC3C,IAAM,IAAO,EAA2B,CAAK;CAE7C,OAAO,YAAY,KAAK,CAAI,IAAI,IAAI,EAAK,WAAW,MAAK,MAAI,EAAE,KAAK;AACtE;AAEA,SAAS,EAA6B,GAAmC,GAA0C;CAKjH,OAJI,EAAO,MAAM,IAAkB,EAAO,QAAQ,KAAA,IACzC,EAAgB,EAAO,MAGzB,EAAO,SAAS,EAAO,MAAM;AACtC;AAEA,SAAS,EACP,GACA,GACA,GACA,GACA;CAKA,OAJI,MAAgB,eAAe,EAAO,SACjC,EAAO,OAAO,GAAK,CAAQ,IAG7B,EAAO,MAAM,GAAK,CAAQ;AACnC;AAEA,SAAgB,EAA6B,EAC3C,gBACA,YACA,oBACA,SACA,aACA,iBAAc,SACmB;CACjC,IAAM,IAAgB,EAA6B;EAAE;EAAa;CAAQ,CAAC,GACrE,IAAU,EAAc,KAAI,MAAU,EAAsB,GAAQ,CAAe,CAAC,GACpF,IAAoB,EAAmB,GAAU,CAAO;CAS9D,OAAO,CAPL,CAAC,GAAG,GAAS,GAAG,EAAkB,KAAI,MAAU,EAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAmB,CAAC,CAAC,KAAK,GAAG,GAC9F,GAAG,EAAK,KAAK,GAAK,MAChB,CAAC,GAAG,EAAc,KAAI,MAAU,EAAqB,GAAQ,GAAK,GAAU,CAAW,CAAC,GACtF,GAAG,EAAkB,KAAI,MAAU,EAAO,MAAM,GAAK,CAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAmB,CAAC,CAAC,KAAK,GAAG,CACtG,CAGK,CAAA,CAAM,KAAK,IAAI;AACxB;AAEA,SAAgB,EAA8B,EAC5C,gBACA,YACA,oBACA,SACA,aACA,iBAAc,SACmB;CACjC,IAAM,IAAgB,EAA6B;EAAE;EAAa;CAAQ,CAAC,GACrE,IAAoB,EAAmB,GAAU,EAAc,KAAI,MAAU,EAAsB,GAAQ,CAAe,CAAC,CAAC,GAC5H,IAAO,EAAK,KAAK,GAAK,MAC1B,OAAO,YACL,CAAC,GAAG,EAAc,KAAK,MAAW,CAChC,EAAsB,GAAQ,CAAe,GAC7C,EAAqB,GAAQ,GAAK,GAAU,CAAW,CACzD,CAAC,GAAG,GAAG,EAAkB,KAAI,MAAU,CAAC,EAAO,KAAK,EAAO,MAAM,GAAK,CAAQ,CAAC,CAAC,CAAC,CACnF,CACF;CAEA,OAAO,KAAK,UAAU,GAAM,MAAM,CAAC;AACrC;;;AC7GA,SAAS,EAAc,GAAe,GAAc;CAClD,IAAI,CAAC,OAAO,cAAc,CAAK,KAAK,IAAQ,GAC1C,MAAU,WAAW,GAAG,EAAK,kCAAkC;AAEnE;AAGA,SAAgB,EAA+B,EAC7C,SACA,WACA,eAAY,IACZ,mBAAgB,KAChB,cAAW,OAC8B;CAGzC,IAFA,EAAc,GAAe,eAAe,GAC5C,EAAc,GAAU,UAAU,GAC9B,EAAK,SAAS,GAAe,MAAU,WAAW,kCAAkC;CAExF,IAAM,IAAQ,IAAK,WAAW,CAAC,MAAM;CACrC,IAAI,EAAK,WAAW,GAAO,OAAO,CAAC;CAEnC,IAAM,IAAsB,CAAC,GACzB,IAAgB,CAAC,GACjB,IAAQ,IACR,IAAS,IACT,IAAS,IACT,IAAY,GACZ,GACE,KAAe,MAAmB,gBAAI,YAC1C,yBAAyB,EAAQ,SAAS,EAAE,UAAU,EAAI,SAAS,EAAE,IAAI,EAAO,EAClF,GACM,UAAmB;EACvB,IAAI,EAAE,IAAY,GAAU,MAAU,WAAW,6BAA6B;EAG9E,AAFA,EAAI,KAAK,CAAK,GACd,IAAQ,IACR,IAAS;CACX,GACM,UAAqB;EAGzB,IAFA,EAAW,GACX,MAAU,EAAI,QACV,EAAI,WAAW,GAAO,MAAM,EAAY,0BAA0B;EAEtE,AADA,EAAQ,KAAK,CAAG,GAChB,IAAM,CAAC;CACT;CAEA,KAAK,IAAI,IAAQ,GAAO,IAAQ,EAAK,QAAQ,KAAS;EACpD,IAAM,IAAO,EAAK;EAClB,IAAI,GACF,AAAI,MAAS,OACP,EAAK,IAAQ,OAAO,QAAO,KAAS,MAAK,QACtC,IAAS,IAAO,IAAS,MAC3B,KAAS;OACX,IAAI,MAAS,KAClB,EAAW;OACN,IAAI,MAAS,QAAQ,MAAS,MAEnC,AADA,EAAa,GACT,MAAS,QAAQ,EAAK,IAAQ,OAAO,QAAM;OAC1C,IAAI,GACT,MAAM,EAAY,sCAAsC;OACnD,IAAI,MAAS,MAAK;GACvB,IAAI,MAAU,IAAI,MAAM,EAAY,gCAAgC;GACpE,IAAS;EACX,OAAO,KAAS;CAClB;CACA,IAAI,GAAQ,MAAM,EAAY,uBAAuB;CAErD,CAAI,EAAI,UAAU,MAAU,MAAM,KAAU,CAAC,WAAW,KAAK,CAAI,MAAG,EAAa;CAEjF,IAAM,IAAU,IAAY,EAAQ,KAAM,MACpC,IAAW;CACjB,OAAO,EAAQ,MAAM,CAAQ,CAAC,CAAC,KAAK,GAAO,MAAa,EAAO;EAAE;EAAO;EAAS;CAAS,CAAC,CAAC;AAC9F;;;ACtEA,SAAS,EAAY,GAAuB,GAAiB,GAAuB;CAClF,IAAI,EAAI,IAAI,CAAE,GAAG,MAAU,MAAM,oBAAoB,EAAK,OAAO,OAAO,CAAE,GAAG;CAC7E,EAAI,IAAI,CAAE;AACZ;AAGA,SAAgB,EAAqC,EAAE,UAAO,aAAU,GAAG,KAA2E;CACpJ,IAAM,IAAgB,CAAC,GACjB,IAA+E,CAAC,GAChF,oBAAM,IAAI,IAAiB,GAC3B,oBAAS,IAAI,IAA2B,GAExC,IAAiB,EAAM,KAAI,OAAS;EAAE;EAAM,UAAU;EAAM,OAAO;CAAE,EAAE,CAAC,CAAC,QAAQ;CACvF,OAAO,EAAM,SAAQ;EACnB,IAAM,EAAE,SAAM,aAAU,UAAO,YAAS,EAAM,IAAI;EAClD,IAAI,GAAM;GAAE,EAAO,OAAO,CAAI;GAAG;EAAU;EAC3C,IAAI,EAAO,IAAI,CAAI,GAAG,MAAU,MAAM,oBAAoB;EAC1D,EAAO,IAAI,CAAI;EACf,IAAM,IAAK,EAAS,EAAK,MAAM,EAAK,MAAM;EAI1C,AAHA,EAAY,GAAK,GAAI,KAAK,GAC1B,EAAK,KAAK,EAAK,IAAI,GACnB,EAAS,KAAK;GAAE;GAAI;GAAU;EAAM,CAAC,GACrC,EAAM,KAAK;GAAE;GAAM;GAAU;GAAO,MAAM;EAAK,CAAC;EAChD,IAAM,IAAW,EAAK,YAAY,CAAC;EACnC,KAAK,IAAI,IAAQ,EAAS,SAAS,GAAG,KAAS,GAAG,KAChD,EAAM,KAAK;GAAE,MAAM,EAAS;GAAS,UAAU;GAAI,OAAO,IAAQ;EAAE,CAAC;CAEzE;CACA,OAAO;EAAE,GAAG;EAAS;EAAM,UAAU;GACnC,UAAU,GAAM,MAAU,EAAS,EAAM,CAAE;GAC3C,aAAa,GAAM,MAAU,EAAS,EAAM,CAAE;GAC9C,UAAU,GAAM,MAAU,EAAS,EAAM,CAAE;EAC7C;CAAE;AACJ;AAGA,SAAgB,EAAgD,EAAE,SAAM,WAAQ,eAAY,kBAAe,aAAU,GAAG,KAAsF;CAC5M,IAAM,oBAAW,IAAI,IAAiB,GAChC,oBAAU,IAAI,IAA0E;CAC9F,KAAK,IAAM,KAAS,GAAQ;EAC1B,IAAM,IAAU,EAAW,CAAK;EAEhC,AADA,EAAY,GAAU,GAAS,OAAO,GACtC,EAAQ,IAAI,GAAS,CAAC,CAAC;CACzB;CACA,IAAM,oBAAS,IAAI,IAAiB;CACpC,EAAK,SAAS,GAAK,MAAU;EAC3B,IAAM,IAAK,EAAS,GAAK,CAAK;EAC9B,EAAY,GAAQ,GAAI,KAAK;EAC7B,IAAM,IAAU,EAAc,GAAK,CAAK,GAClC,IAAS,EAAQ,IAAI,CAAO;EAClC,IAAI,CAAC,GAAQ,MAAU,MAAM,4BAA4B,OAAO,CAAO,GAAG;EAC1E,EAAO,KAAK;GAAE;GAAK;GAAI;EAAQ,CAAC;CAClC,CAAC;CACD,IAAM,IAAU,CAAC,GAAG,EAAQ,OAAO,CAAC,CAAC,CAAC,KAAK;CAC3C,OAAO;EAAE,GAAG;EAAS,MAAM,EAAQ,KAAI,MAAS,EAAM,GAAG;EAAG,UAAU;GACpE,UAAU,GAAM,MAAU,EAAQ,EAAM,CAAE;GAC1C,YAAY,GAAM,MAAU,EAAQ,EAAM,CAAE;EAC9C;CAAE;AACJ"}