@deephaven/iris-grid 0.56.0 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGridTableModelTemplate.d.ts +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridThemeProvider.d.ts.map +1 -1
- package/dist/IrisGridThemeProvider.js +2 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +1 -1
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/package.json +15 -15
|
@@ -4,7 +4,7 @@ import { CellRenderType, EditOperation, GridRange, ModelIndex, MoveOperation, Vi
|
|
|
4
4
|
import type { Column, ColumnStatistics, CustomColumn, dh as DhType, FilterCondition, Format, InputTable, LayoutHints, RollupConfig, Row, Sort, Table, TableTemplate, TotalsTable, ValueTypeUnion, ViewportData } from '@deephaven/jsapi-types';
|
|
5
5
|
import { CancelablePromise } from '@deephaven/utils';
|
|
6
6
|
import { TableUtils, Formatter } from '@deephaven/jsapi-utils';
|
|
7
|
-
import { DataBarOptions } from '
|
|
7
|
+
import type { DataBarOptions } from '@deephaven/grid';
|
|
8
8
|
import IrisGridModel from './IrisGridModel';
|
|
9
9
|
import IrisGridUtils from './IrisGridUtils';
|
|
10
10
|
import MissingKeyError from './MissingKeyError';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":";;AAIA,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EAGT,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,EAAE,IAAI,MAAM,EACZ,eAAe,EACf,MAAM,EACN,UAAU,EACV,WAAW,EACX,YAAY,EACZ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,aAAa,EAEb,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,iBAAiB,EAIlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModelTemplate.js","names":["memoize","throttle","GridRange","GridUtils","memoizeClear","Log","EventShimCustomEvent","PromiseUtils","assertNotNull","TableUtils","Formatter","FormatterUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","isColumnHeaderGroup","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","EMPTY_ARRAY","isIrisGridTableModelTemplate","model","table","undefined","IrisGridTableModelTemplate","seekRow","startRow","column","valueType","value","insensitive","contains","isBackwards","Error","export","columnStatistics","customColumns","formatColumns","updateFrozenColumns","columns","rollupConfig","selectDistinctColumns","names","constructor","dh","_this$layoutHints$col","_this$layoutHints","formatter","arguments","length","inputTable","_defineProperty","Map","layoutHints","_layoutHints$columnGr","movedColumns","groupMap","parseColumnHeaderGroups","columnGroups","moveColumn","name","toIndex","modelIndex","getColumnIndexByName","concat","visibleIndex","getVisibleIndex","moveItem","moveGroup","group","get","visibleRange","getVisibleRange","moveRange","frontColumns","backColumns","frozenColumns","usedColumns","Set","frontIndex","forEach","has","backIndex","columnMap","size","layoutHintColumnGroups","values","sort","a","b","depth","firstChildName","children","rightModelIndex","rightVisibleIndex","firstChildGroup","i","childName","childGroup","childColumn","isBeforeGroup","moveToIndex","childIndexes","_movedColumns","_layoutHints$columnGr2","groups","tableColumns","col","set","indices","_ref","top","bottom","error","viewport","debug2","applyViewport","viewportTop","viewportBottom","getCachedViewportRowRange","applyBufferedViewport","leading","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","viewHeight","Math","ROW_BUFFER_PAGES","pendingDataMap","keyColumnCount","map","row","rowIndex","data","rowData","_map$get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","irisFormatter","irisGridUtils","subscription","tableUtils","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","pendingNewRowCount","columnHeaderGroups","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","setViewport","dispatchEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","_this$totals$operatio","_this$totals","_this$totals$operatio2","operationOrder","pendingDataErrors","_this$inputTable$keyC","_this$inputTable","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","_this$totals$operatio3","_this$totals2","_this$totals2$operati","showOnTop","floatingTopRowCount","_this$totals$operatio4","_this$totals3","_this$totals3$operati","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","textValueForCell","_this$pendingStringDa","_this$formattedString","_this$totalsColumn","valueForCell","totalsColumn","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","_this$columns$x","isKeyColumn","pendingRow","isTextType","truncationCharForCell","isNumberType","truncateNumbersWithPound","colorForCell","theme","dataForCell","format","nullStringColor","color","isPendingRow","pendingTextColor","_this$totalsColumn2","isDateType","dateColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","errorTextColor","textColor","backgroundColorForCell","_this$formatForCell$b","_this$formatForCell","backgroundColor","textAlignForCell","dataBarOptionsForCell","_positiveColor","_negativeColor","_format$color","_markerColor","axis","direction","min","valuePlacement","marker","formatDataBar","positiveColor","negativeColor","markerColor","opacity","positiveBarColor","negativeBarColor","databarColor","includes","split","markerBarColor","toLowerCase","databarOptions","toUpperCase","columnMax","columnMin","markers","renderTypeForCell","textForColumnHeader","header","columnAtDepth","isNew","colorForColumnHeader","_column$color","getColumnHeaderGroup","getColumnHeaderParentGroup","_this$columnAtDepth$n","_this$columnAtDepth","columnHeaderParentMap","_this$columns$x2","currentDepth","textForRowFooter","totalsRow","initialMovedColumns","_this$layoutHints2","getMemoizedInitialMovedColumns","initialMovedRows","initialColumnHeaderGroups","_this$layoutHints3","getMemoizedInitialColumnHeaderGroups","getMemoizedColumnMap","columnHeaderMaxDepth","_this$_columnHeaderMa","_columnHeaderMaxDepth","columnHeaderGroupMap","_columnHeaderGroupMap","_columnHeaderGroups","newGroups","maxDepth","parentMap","groupedColumns","_this$totals$operatio5","_this$totals4","_this$totals4$operati","_this$totals$showOnTo","_this$totals5","_this$viewportData$of","_this$viewportData","_this$viewportData$ro","_this$viewportData2","_this$viewportData2$r","totalsRowCount","_this$totals6","_this$totalsDataMap$g","_this$totalsDataMap","operation","_this$pendingNewDataM","offset","viewportY","rows","_this$totals7","_this$totals$defaultO","_this$totals8","_this$totalsTable","defaultOperation","SUM","tableColumn","find","_this$totals9","_this$totals$operatio6","_this$totals10","_this$totals10$operat","_this$totals$showOnTo2","_this$totals11","isTotalsRow","_this$row","_this$dataForCell","_data$value","warn","extractViewportData","totalsData","_this$totals$defaultO2","_this$totals12","_this$totals13","_this","dataMap","operationMap","_loop","_operationMap$name$","_operationMap$name","c","findIndex","getFormat","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","index","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","applySort","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","listenerCount","snapshot","ranges","_arguments","_this2","_asyncToGenerator","includeHeaders","formatValue","consolidateRanges","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","endRow","add","startColumn","endColumn","columnsFromRanges","result","topFloatingRows","_loop2","rangeSet","rangeSetFromRanges","bottomFloatingRows","_loop3","textSnapshot","_arguments2","_this3","join","valuesTable","_this4","copy","selectDistinct","Array","isArray","isColumnMovable","isColumnSortable","_this$columns$modelIn","isSortable","_this$inputTable$keyC2","_this$inputTable2","isRowMovable","isEditableRange","isBounded","isPendingRange","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","_this5","setValueForRanges","_this6","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","_objectSpread","tableAreaRange","_this6$inputTable","_range$startRow","_range$endRow","newRows","addRows","cellText","setValues","_arguments3","_this7","edits","edit","_edit$column","_edit$row","makeCell","_edit$column2","_edit$row2","rowEditMap","reduce","rowMap","_edit$row3","_rowMap$get","_edit$column3","_edit$row4","_this7$inputTable","dataIndex","rangeRowCount","rowEdits","_edit$column4","info","_edit$column5","_edit$row5","commitPending","_this8","_this8$inputTable","_this8$viewport$botto","_this8$viewport","_ref2","editValueForCell","isValidForCell","e"],"sources":["../src/IrisGridTableModelTemplate.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport {\n CellRenderType,\n EditOperation,\n GridRange,\n GridUtils,\n memoizeClear,\n ModelIndex,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type {\n Column,\n ColumnStatistics,\n CustomColumn,\n dh as DhType,\n FilterCondition,\n Format,\n InputTable,\n LayoutHints,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableTemplate,\n TableViewportSubscription,\n TotalsTable,\n ValueTypeUnion,\n ViewportData,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport { TableUtils, Formatter, FormatterUtils } from '@deephaven/jsapi-utils';\nimport {\n AxisOption,\n DataBarOptions,\n DirectionOption,\n Marker,\n ValuePlacementOption,\n} from 'packages/grid/src/DataBarGridModel';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\nimport {\n ColumnName,\n UITotalsTableConfig,\n UIRow,\n PendingDataMap,\n CellData,\n UIViewportData,\n PendingDataErrorMap,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport ColumnHeaderGroup, { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\nconst EMPTY_ARRAY: unknown[] = [];\n\nexport function isIrisGridTableModelTemplate(\n model: IrisGridModel\n): model is IrisGridTableModelTemplate {\n return (model as IrisGridTableModelTemplate).table !== undefined;\n}\n\n/**\n * Template model for a grid\n */\n\nclass IrisGridTableModelTemplate<\n T extends TableTemplate<T> = Table,\n R extends UIRow = UIRow,\n> extends IrisGridModel {\n static ROW_BUFFER_PAGES = 1;\n\n seekRow(\n startRow: number,\n column: Column,\n valueType: ValueTypeUnion,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n export(): Promise<Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get customColumns(): ColumnName[] {\n return [];\n }\n\n set customColumns(customColumns: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n get formatColumns(): CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n throw new Error('Method not implemented.');\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n throw new Error('Method not implemented.');\n }\n\n get rollupConfig(): RollupConfig | null {\n throw new Error('Method not implemented.');\n }\n\n set rollupConfig(rollupConfig: RollupConfig | null) {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): ColumnName[] {\n throw new Error('Method not implemented.');\n }\n\n set selectDistinctColumns(names: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Returns an array of the columns in the model\n * The order of model columns should never change once established\n */\n get columns(): Column[] {\n return this.table.columns;\n }\n\n dh: DhType;\n\n irisGridUtils: IrisGridUtils;\n\n tableUtils: TableUtils;\n\n private irisFormatter: Formatter;\n\n inputTable: InputTable | null;\n\n private subscription: TableViewportSubscription | null;\n\n table: T;\n\n viewport: {\n top: VisibleIndex;\n bottom: VisibleIndex;\n columns: Column[];\n } | null;\n\n viewportData: UIViewportData<R> | null;\n\n formattedStringData: (string | null)[][];\n\n private pendingStringData: (string | null)[][];\n\n private isSaveInProgress: boolean;\n\n private totalsTable: TotalsTable | null;\n\n totalsTablePromise: CancelablePromise<TotalsTable> | null;\n\n totals: UITotalsTableConfig | null;\n\n private totalsDataMap: Map<string, R> | null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n private pendingNewDataMap: PendingDataMap<R>;\n\n private pendingNewRowCount = 0;\n\n private _columnHeaderGroupMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private columnHeaderParentMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private _columnHeaderMaxDepth: number | null = null;\n\n private _columnHeaderGroups: ColumnHeaderGroup[] = [];\n\n private _movedColumns: MoveOperation[] | null = null;\n\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n dh: DhType,\n table: T,\n formatter = new Formatter(dh),\n inputTable: InputTable | null = null\n ) {\n super(dh);\n\n this.handleTableDisconnect = this.handleTableDisconnect.bind(this);\n this.handleTableReconnect = this.handleTableReconnect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTotalsUpdate = this.handleTotalsUpdate.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n\n this.dh = dh;\n this.irisFormatter = formatter;\n this.irisGridUtils = new IrisGridUtils(dh);\n this.inputTable = inputTable;\n this.subscription = null;\n this.table = table;\n this.tableUtils = new TableUtils(dh);\n this.viewport = null;\n this.viewportData = null;\n this.formattedStringData = [];\n this.pendingStringData = [];\n this.isSaveInProgress = false;\n\n this.totalsTable = null;\n this.totalsTablePromise = null;\n this.totals = null;\n this.totalsDataMap = null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = 0;\n\n this.columnHeaderGroups = IrisGridUtils.parseColumnHeaderGroups(\n this,\n this.layoutHints?.columnGroups ?? []\n ).groups;\n }\n\n close(): void {\n this.table.close();\n if (this.totalsTable !== null) {\n this.totalsTable.close();\n }\n if (this.totalsTablePromise !== null) {\n this.totalsTablePromise.cancel();\n }\n }\n\n startListening(): void {\n super.startListening();\n\n const { dh } = this;\n\n this.table.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n this.table.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n\n this.applyViewport();\n }\n\n stopListening(): void {\n super.stopListening();\n\n const { dh } = this;\n\n this.table.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n this.table.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.closeSubscription();\n }\n\n addTotalsListeners(totalsTable: TotalsTable): void {\n const { dh } = this;\n totalsTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n\n // Totals table only has one row of data\n totalsTable.setViewport(0, 0);\n }\n\n removeTotalsListeners(totalsTable: TotalsTable): void {\n const { dh } = this;\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.DISCONNECT)\n );\n }\n\n handleTableReconnect(): void {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event: CustomEvent): void {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event: CustomEvent): void {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event: CustomEvent): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount(): number {\n return (\n this.table.size +\n this.pendingNewRowCount +\n (this.totals?.operationOrder?.length ?? 0)\n );\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap(): PendingDataMap<R> {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map: PendingDataMap<R>) {\n if (map === this.pendingNewDataMap) {\n return;\n }\n\n map.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(`Invalid rowIndex ${rowIndex}`);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(`Invalid columnIndex ${columnIndex}`);\n }\n });\n });\n\n this.pendingNewDataMap = map;\n\n this.pendingNewRowCount = Math.max(\n this.pendingNewRowCount,\n this.maxPendingDataRow\n );\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount(): number {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count: number) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow(): number {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount(): number {\n return this.columns.length;\n }\n\n get floatingBottomRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isChartBuilderAvailable(): boolean {\n return true;\n }\n\n get isTotalsAvailable(): boolean {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable(): boolean {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x: ModelIndex, y: ModelIndex): void {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x: ModelIndex, y: ModelIndex): string | null | undefined {\n // First check if there's any pending values we should read from\n if (this.pendingStringData[x]?.[y] !== undefined) {\n return this.pendingStringData[x][y];\n }\n\n // Use a separate cache from memoization just for the strings that are currently displayed\n if (this.formattedStringData[x]?.[y] === undefined) {\n const value = this.valueForCell(x, y);\n if (value === null) {\n return null;\n }\n if (value === undefined) {\n return undefined;\n }\n\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n this.formatter,\n column.name,\n column.type\n );\n let formatOverride;\n if (!hasCustomColumnFormat) {\n const formatForCell = this.formatForCell(x, y);\n if (formatForCell?.formatString != null) {\n formatOverride = formatForCell;\n }\n }\n const text = this.displayString(\n value,\n column.type,\n column.name,\n formatOverride\n );\n this.cacheFormattedValue(x, y, text);\n }\n\n return this.formattedStringData[x][y];\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null && this.pendingDataMap.has(pendingRow)) {\n // Asterisk to show a value is required for a key column on a row that has some data entered\n return '*';\n }\n }\n\n if (TableUtils.isTextType(this.columns[x]?.type)) {\n if (text === null) {\n return 'null';\n }\n\n if (text === '') {\n return 'empty';\n }\n }\n\n return text ?? '';\n }\n\n truncationCharForCell(x: ModelIndex): '#' | undefined {\n const column = this.columns[x];\n const { type } = column;\n if (\n TableUtils.isNumberType(type) &&\n this.formatter.truncateNumbersWithPound\n ) {\n return '#';\n }\n\n return undefined;\n }\n\n colorForCell(x: ModelIndex, y: ModelIndex, theme: IrisGridThemeType): string {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format, value } = data;\n if (value == null || value === '') {\n assertNotNull(theme.nullStringColor);\n return theme.nullStringColor;\n }\n if (format && format.color) {\n return format.color;\n }\n\n if (this.isPendingRow(y)) {\n // Data entered in a pending row\n assertNotNull(theme.pendingTextColor);\n return theme.pendingTextColor;\n }\n\n // Fallback to formatting based on the value/type of the cell\n if (value != null) {\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n if (TableUtils.isDateType(column.type) || column.name === 'Date') {\n assertNotNull(theme.dateColor);\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if ((value as number) > 0) {\n assertNotNull(theme.positiveNumberColor);\n return theme.positiveNumberColor;\n }\n if ((value as number) < 0) {\n assertNotNull(theme.negativeNumberColor);\n return theme.negativeNumberColor;\n }\n assertNotNull(theme.zeroNumberColor);\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n assertNotNull(theme.errorTextColor);\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x: ModelIndex, y: ModelIndex): string | null {\n return this.formatForCell(x, y)?.backgroundColor ?? null;\n }\n\n textAlignForCell(x: ModelIndex): CanvasTextAlign {\n const column = this.columns[x];\n const { type } = column;\n\n if (TableUtils.isNumberType(type)) {\n return 'right';\n }\n if (TableUtils.isDateType(type) || column.name === 'Date') {\n return 'center';\n }\n return 'left';\n }\n\n dataBarOptionsForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: IrisGridThemeType\n ): DataBarOptions {\n const format = this.formatForCell(column, row);\n assertNotNull(format);\n const { axis, direction, max, min, valuePlacement, value, marker } =\n format.formatDataBar;\n let { positiveColor, negativeColor, markerColor, opacity } =\n format.formatDataBar;\n\n positiveColor = positiveColor ?? theme.positiveBarColor;\n negativeColor = negativeColor ?? theme.negativeBarColor;\n let databarColor: string | string[] =\n format.color ?? (value >= 0 ? positiveColor : negativeColor);\n if (databarColor.includes(',')) {\n databarColor = databarColor.split(',');\n }\n markerColor = markerColor ?? theme.markerBarColor;\n\n opacity = valuePlacement.toLowerCase() === 'overlap' ? 0.5 : opacity;\n\n const databarOptions = {\n axis: axis.toLowerCase() as AxisOption,\n direction: direction.toUpperCase() as DirectionOption,\n columnMax: max,\n columnMin: min,\n opacity,\n color: databarColor,\n valuePlacement: valuePlacement.toLowerCase() as ValuePlacementOption,\n value,\n markers: [\n {\n value: marker,\n color: markerColor,\n },\n ] as Marker[],\n };\n\n return databarOptions;\n }\n\n renderTypeForCell(column: ModelIndex, row: ModelIndex): CellRenderType {\n const format = this.formatForCell(column, row);\n return format?.formatDataBar != null ? 'dataBar' : 'text';\n }\n\n textForColumnHeader(x: ModelIndex, depth = 0): string | undefined {\n const header = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(header)) {\n return header.isNew ? '' : header.name;\n }\n return header?.name;\n }\n\n colorForColumnHeader(x: ModelIndex, depth = 0): string | null {\n const column = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(column)) {\n return column.color ?? null;\n }\n return null;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n const group = this.columnAtDepth(modelIndex, depth);\n if (isColumnHeaderGroup(group)) {\n return group;\n }\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return this.columnHeaderParentMap.get(\n this.columnAtDepth(modelIndex, depth)?.name ?? ''\n );\n }\n\n columnAtDepth(\n x: ModelIndex,\n depth = 0\n ): ColumnHeaderGroup | Column | undefined {\n if (depth === 0) {\n return this.columns[x];\n }\n\n const columnName = this.columns[x]?.name;\n let group = this.columnHeaderParentMap.get(columnName);\n\n if (!group) {\n return undefined;\n }\n\n let currentDepth = group.depth;\n while (currentDepth < depth) {\n group = this.columnHeaderParentMap.get(group.name);\n if (!group) {\n return undefined;\n }\n currentDepth = group.depth;\n }\n\n if (group.depth === depth) {\n return group;\n }\n\n return undefined;\n }\n\n textForRowFooter(y: ModelIndex): string {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null && this.totals) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n private getMemoizedInitialMovedColumns = memoize(\n (layoutHints?: LayoutHints): readonly MoveOperation[] => {\n if (!layoutHints) {\n return [];\n }\n let movedColumns: MoveOperation[] = [];\n const { groupMap } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n );\n\n const moveColumn = (name: string, toIndex: VisibleIndex): void => {\n const modelIndex = this.getColumnIndexByName(name);\n if (modelIndex == null) {\n throw new Error(`Unknown layout hint column: ${name}`);\n }\n const visibleIndex = GridUtils.getVisibleIndex(\n modelIndex,\n movedColumns\n );\n movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);\n };\n\n const moveGroup = (name: string, toIndex: VisibleIndex): void => {\n const group = groupMap.get(name);\n if (group == null) {\n throw new Error(`Unknown layout hint group: ${name}`);\n }\n const visibleRange = group.getVisibleRange(movedColumns);\n movedColumns = GridUtils.moveRange(visibleRange, toIndex, movedColumns);\n };\n\n const {\n frontColumns = [],\n backColumns = [],\n frozenColumns = [],\n } = layoutHints;\n\n if (frontColumns.length || backColumns.length || frozenColumns.length) {\n const usedColumns = new Set();\n\n let frontIndex = 0;\n frozenColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n frontColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n\n let backIndex = this.columnMap.size - 1;\n backColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, backIndex);\n backIndex -= 1;\n });\n }\n\n const layoutHintColumnGroups = layoutHints?.columnGroups;\n if (layoutHintColumnGroups) {\n const columnGroups = [...groupMap.values()];\n columnGroups.sort((a, b) => a.depth - b.depth);\n\n columnGroups.forEach(group => {\n const firstChildName = group.children[0];\n const rightModelIndex = this.getColumnIndexByName(firstChildName);\n\n let rightVisibleIndex: number;\n\n if (rightModelIndex != null) {\n rightVisibleIndex = GridUtils.getVisibleIndex(\n rightModelIndex,\n movedColumns\n );\n } else {\n const firstChildGroup = groupMap.get(firstChildName);\n if (!firstChildGroup) {\n throw new Error(\n `Unknown column ${firstChildName} in group ${group.name}`\n );\n }\n\n const visibleRange = firstChildGroup.getVisibleRange(movedColumns);\n // Columns will be moved to start at the end of the first child group\n [, rightVisibleIndex] = visibleRange;\n }\n\n for (let i = 1; i < group.children.length; i += 1) {\n const childName = group.children[i];\n const childGroup = groupMap.get(childName);\n const childColumn = this.getColumnIndexByName(childName);\n\n if (childGroup) {\n // All columns in the group will be before or after the start index\n // Lower level groups are re-arranged first, so they will be contiguous\n const isBeforeGroup =\n childGroup.getVisibleRange(movedColumns)[0] < rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex - childGroup.childIndexes.length + 1\n : rightVisibleIndex + 1;\n\n moveGroup(childName, moveToIndex);\n rightVisibleIndex =\n moveToIndex + childGroup.childIndexes.length - 1;\n } else if (childColumn != null) {\n const isBeforeGroup =\n GridUtils.getVisibleIndex(childColumn, movedColumns) <\n rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex\n : rightVisibleIndex + 1;\n moveColumn(childName, moveToIndex);\n rightVisibleIndex = moveToIndex;\n }\n }\n });\n }\n\n this._movedColumns = movedColumns;\n return movedColumns;\n }\n );\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get initialMovedColumns(): readonly MoveOperation[] {\n return this.getMemoizedInitialMovedColumns(this.layoutHints ?? undefined);\n }\n\n /**\n * Not currently used by anything.\n */\n get initialMovedRows(): MoveOperation[] {\n return EMPTY_ARRAY as MoveOperation[];\n }\n\n getMemoizedInitialColumnHeaderGroups = memoize(\n (layoutHints?: LayoutHints) =>\n IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n ).groups\n );\n\n get initialColumnHeaderGroups(): ColumnHeaderGroup[] {\n return this.getMemoizedInitialColumnHeaderGroups(\n this.layoutHints ?? undefined\n );\n }\n\n getMemoizedColumnMap = memoize(\n (tableColumns: Column[]): Map<string, Column> => {\n const columnMap = new Map();\n tableColumns.forEach(col => columnMap.set(col.name, col));\n return columnMap;\n }\n );\n\n get columnMap(): Map<ColumnName, Column> {\n return this.getMemoizedColumnMap(this.table.columns);\n }\n\n get columnHeaderMaxDepth(): number {\n return this._columnHeaderMaxDepth ?? 1;\n }\n\n private set columnHeaderMaxDepth(depth: number) {\n this._columnHeaderMaxDepth = depth;\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n return this._columnHeaderGroupMap;\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n return this._columnHeaderGroups;\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n if (groups === this._columnHeaderGroups) {\n return;\n }\n\n const {\n groups: newGroups,\n maxDepth,\n parentMap,\n groupMap,\n } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n groups ?? this.initialColumnHeaderGroups\n );\n\n this._columnHeaderGroups = newGroups;\n this.columnHeaderMaxDepth = maxDepth;\n this.columnHeaderParentMap = parentMap;\n this._columnHeaderGroupMap = groupMap;\n }\n\n get groupedColumns(): Column[] {\n return [];\n }\n\n row(y: ModelIndex): R | null {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n const operation = this.totals?.operationOrder[totalsRow];\n assertNotNull(operation);\n return this.totalsDataMap?.get(operation) ?? null;\n }\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n return this.pendingNewDataMap.get(pendingRow) ?? null;\n }\n const offset = this.viewportData?.offset ?? 0;\n const viewportY = (showOnTop ? y - totalsRowCount : y) - offset;\n return this.viewportData?.rows?.[viewportY] ?? null;\n }\n\n /**\n * Retrieve the totals column if this is a totals row, or null otherwise\n * @param x Column index to get the totals column from\n * @param y Row index to get the totals column from\n */\n totalsColumn(x: ModelIndex, y: ModelIndex): Column | undefined | null {\n const totalsRow = this.totalsRow(y);\n if (totalsRow == null) return null;\n\n const operation = this.totals?.operationOrder[totalsRow];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const tableColumn = this.columns[x];\n\n // Find the matching totals table column for the operation\n // When there are multiple aggregations, the column name will be the original name of the column with the operation appended afterward\n // When the the operation is the default operation OR there is only one operation, then the totals column name is just the original column name\n return this.totalsTable?.columns.find(\n column =>\n column.name === `${tableColumn.name}__${operation}` ||\n ((operation === defaultOperation ||\n this.totals?.operationOrder.length === 1) &&\n column.name === tableColumn.name)\n );\n }\n\n /**\n * Translate from the row in the model to a row in the totals table.\n * If the row is not a totals row, return null\n * @param y The row in the model to get the totals row for\n * @returns The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y: ModelIndex): ModelIndex | null {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = showOnTop ? y : y - this.table.size;\n if (totalsRow >= 0 && totalsRow < totalsRowCount) {\n return totalsRow;\n }\n return null;\n }\n\n /**\n * Translate from the row in the model to a pending input row.\n * If the row is not a pending input row, return null\n * @param y The row in the model to get the pending row for\n * @returns The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y: ModelIndex): ModelIndex | null {\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n if (pendingRow >= 0 && pendingRow < this.pendingNewRowCount) {\n return pendingRow;\n }\n\n return null;\n }\n\n /**\n * Check if a row is a totals table row\n * @param y The row in the model to check if it's a totals table row\n * @returns True if the row is a totals row, false if not\n */\n isTotalsRow(y: ModelIndex): boolean {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param y The row in the model to check if it's a pending new row\n * @returns True if the row is a pending new row, false if not\n */\n isPendingRow(y: ModelIndex): boolean {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x: ModelIndex, y: ModelIndex): CellData | undefined {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x: ModelIndex, y: ModelIndex): Format | undefined {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x: ModelIndex, y: ModelIndex): unknown {\n const data = this.dataForCell(x, y);\n\n /* JS API current sets null values as undefined in some instances. This means \n we need to nullish coaelesce so all undefined values from the API return null \n since the data has been fetched. undefined is used to indicate the API has not \n fetched data yet */\n if (data) {\n return data.value ?? null;\n }\n return undefined;\n }\n\n copyViewportData(data: ViewportData): void {\n if (data == null) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData: ViewportData): void {\n if (totalsData == null) {\n log.warn('invalid data!');\n return;\n }\n\n const { columns, rows } = totalsData;\n if (rows.length !== 1) {\n log.error(\n 'Unexpected number of rows received for totals table, ignoring update'\n );\n return;\n }\n\n const dataMap = new Map();\n const row = rows[0];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const operationMap = this.totals?.operationMap;\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const [name, operation = operationMap?.[name]?.[0] ?? defaultOperation] =\n column.name.split('__');\n if (!dataMap.has(operation)) {\n dataMap.set(operation, { data: new Map() });\n }\n const { data: rowData } = dataMap.get(operation);\n const columnIndex = this.columns.findIndex(col => col.name === name);\n rowData.set(columnIndex, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n log.debug2('copyTotalsData', dataMap);\n\n this.totalsDataMap = dataMap;\n this.formattedStringData = [];\n }\n\n /**\n * Use this as the canonical column index since things like layoutHints could have\n * changed the column order.\n */\n getColumnIndexByName(name: ColumnName): number | undefined {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(\n (columns: Column[]): Map<ColumnName, ModelIndex> => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n }\n );\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param data The data to copy from\n */\n extractViewportData(data: ViewportData): UIViewportData<R> {\n const newData: UIViewportData<R> = {\n offset: data.offset,\n rows: [],\n };\n\n const { columns } = data;\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const newRow = this.extractViewportRow(row, columns);\n newData.rows.push(newRow);\n }\n\n return newData;\n }\n\n extractViewportRow(row: Row, columns: Column[]): R {\n const data = new Map<ModelIndex, CellData>();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n data.set(index, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data } as R;\n }\n\n closeSubscription(): void {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n }\n\n this.setViewport.cancel();\n this.applyViewport.cancel();\n }\n\n get filter(): FilterCondition[] {\n return this.table.filter;\n }\n\n set filter(filter: FilterCondition[]) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter(): Formatter {\n return this.irisFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED)\n );\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName = '',\n formatOverride?: { formatString: string }\n ): string {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort(): Sort[] {\n return this.table.sort;\n }\n\n set sort(sort: Sort[]) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n setTotalsTable(totalsTable: TotalsTable | null): void {\n log.debug('setTotalsTable', totalsTable);\n\n if (this.totalsTable !== null) {\n if (this.listenerCount > 0) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.totalsTable.close();\n }\n\n this.totalsTable = totalsTable;\n this.totalsDataMap = null;\n\n if (this.listenerCount > 0 && this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n }\n\n setViewport = throttle(\n (top: VisibleIndex, bottom: VisibleIndex, columns: Column[]) => {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n const { viewport } = this;\n if (\n viewport != null &&\n viewport.top === top &&\n viewport.bottom === bottom &&\n viewport.columns === columns\n ) {\n log.debug2('Ignoring duplicate viewport', viewport);\n return;\n }\n\n this.viewport = {\n top,\n bottom,\n columns,\n };\n log.debug2('setViewport', this.viewport);\n\n this.applyViewport();\n },\n SET_VIEWPORT_THROTTLE\n );\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport = throttle(\n (): void => {\n if (!this.viewport) {\n return;\n }\n\n log.debug2('applyViewport', this.viewport);\n const { top, bottom, columns } = this.viewport;\n const [viewportTop, viewportBottom] = this.getCachedViewportRowRange(\n top,\n bottom\n );\n this.applyBufferedViewport(viewportTop, viewportBottom, columns);\n },\n APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription = this.table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (value: unknown, column: Column) => unknown = value => value,\n consolidateRanges = true\n ): Promise<unknown[][]> {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = consolidateRanges\n ? GridRange.consolidate(ranges)\n : ranges;\n if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {\n throw new Error(`Invalid snapshot ranges ${ranges}`);\n }\n\n // Need to separate out the floating ranges as they're from a different source\n const topFloatingRowsSet = new Set<number>();\n const tableRanges: GridRange[] = [];\n const bottomFloatingRowsSet = new Set<number>();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n assertNotNull(range.endRow);\n assertNotNull(range.startRow);\n // Get the rows that are in the top aggregations section\n for (\n let r = range.startRow;\n r <= range.endRow && r < this.floatingTopRowCount;\n r += 1\n ) {\n topFloatingRowsSet.add(r);\n }\n\n // Separate out the range that is part of the actual table (ie. not the floating ranges, not aggregations)\n if (\n range.endRow >= this.floatingTopRowCount &&\n range.startRow <= this.floatingTopRowCount + this.table.size\n ) {\n tableRanges.push(\n new GridRange(\n range.startColumn,\n Math.min(Math.max(0, range.startRow - this.floatingTopRowCount)),\n range.endColumn,\n Math.min(\n Math.max(0, range.endRow - this.floatingTopRowCount),\n this.table.size - this.floatingTopRowCount\n )\n )\n );\n }\n // Get the rows that are in the bottom aggregations section\n for (\n let r = Math.max(\n range.startRow,\n this.floatingTopRowCount + this.table.size\n );\n r <= range.endRow &&\n r <\n this.floatingTopRowCount +\n this.table.size +\n this.floatingBottomRowCount;\n r += 1\n ) {\n bottomFloatingRowsSet.add(r);\n }\n }\n\n const columns = IrisGridUtils.columnsFromRanges(consolidated, this.columns);\n const result = [];\n if (includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n const topFloatingRows = [...topFloatingRowsSet].sort();\n for (let i = 0; i < topFloatingRows.length; i += 1) {\n const row = topFloatingRows[i];\n const rowData = columns.map(column => {\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\n });\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n if (tableRanges.length > 0) {\n const rangeSet = this.irisGridUtils.rangeSetFromRanges(tableRanges);\n const snapshot = await this.subscription.snapshot(rangeSet, columns);\n result.push(\n ...snapshot.rows.map(rowData =>\n columns.map(column => formatValue(rowData.get(column), column))\n )\n );\n }\n\n const bottomFloatingRows = [...bottomFloatingRowsSet].sort();\n for (let i = 0; i < bottomFloatingRows.length; i += 1) {\n const row = bottomFloatingRows[i];\n const rowData = columns.map(column => {\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\n });\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n return result;\n }\n\n /**\n * Get a text snapshot of the provided ranges\n * @param ranges The ranges to get the snapshot for\n * @param includeHeaders Whether to include the headers in the snapshot or not\n * @param formatValue Function for formatting the raw value into a string\n * @returns A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (\n value: unknown,\n column: Column,\n row?: Row\n ) => string = value => `${value}`\n ): Promise<string> {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(\n ranges,\n includeHeaders,\n formatValue,\n false\n );\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n async valuesTable(columns: Column | Column[]): Promise<Table> {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return table.selectDistinct(Array.isArray(columns) ? columns : [columns]);\n } finally {\n if (table != null) {\n table.close();\n }\n }\n }\n\n getCachedFormattedString = memoizeClear(\n (\n formatter: Formatter,\n value: unknown,\n columnType: string,\n columnName: ColumnName,\n formatOverride?: { formatString: string }\n ): string =>\n formatter.getFormattedString(\n value,\n columnType,\n columnName,\n formatOverride\n ),\n { max: 10000 }\n );\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n getCachedViewportRowRange = memoize(\n (top: number, bottom: number): [number, number] => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n }\n );\n\n getCachedPendingErrors = memoize(\n (\n pendingDataMap: PendingDataMap,\n columns: Column[],\n keyColumnCount: number\n ) => {\n const map = new Map<ModelIndex, MissingKeyError[]>();\n pendingDataMap.forEach((row, rowIndex) => {\n const { data: rowData } = row;\n for (let i = 0; i < keyColumnCount; i += 1) {\n if (!rowData.has(i)) {\n if (!map.has(rowIndex)) {\n map.set(rowIndex, []);\n }\n map\n .get(rowIndex)\n ?.push(new MissingKeyError(rowIndex, columns[i].name));\n }\n }\n });\n return map;\n }\n );\n\n isColumnMovable(modelIndex: ModelIndex, depth: number): boolean {\n if (modelIndex < 0 || modelIndex >= this.columnCount) {\n return false;\n }\n\n // All groups are movable\n if (depth > 0) {\n return true;\n }\n\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName) ||\n !columnName\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnSortable(modelIndex: ModelIndex): boolean {\n return this.columns[modelIndex].isSortable ?? true;\n }\n\n isKeyColumn(x: ModelIndex): boolean {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable(): boolean {\n return false;\n }\n\n isEditableRange(range: GridRange): boolean {\n // Make sure we have an input table and a valid range\n if (this.inputTable == null || !GridRange.isBounded(range)) {\n return false;\n }\n\n // Check that the edit is in the editable range\n // If an input table has keyed columns, the non-key columns are always editable\n // If an input table does not have key columns, it is append only and existing rows cannot be editable\n // Pending rows are always editable\n const isPendingRange =\n this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow);\n if (\n !(\n isPendingRange ||\n (this.inputTable.keyColumns.length !== 0 &&\n range.startColumn >= this.inputTable.keyColumns.length &&\n range.endColumn >= this.inputTable.keyColumns.length)\n )\n ) {\n return false;\n }\n\n // Editing the aggregations/totals which are floating above/below is not allowed\n if (\n range.startRow < this.floatingTopRowCount ||\n range.startRow >=\n this.floatingTopRowCount + this.table.size + this.pendingRowCount ||\n range.endRow >=\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n ) {\n return false;\n }\n\n return true;\n }\n\n isDeletableRange(range: GridRange): boolean {\n return (\n this.inputTable != null &&\n range.startRow != null &&\n range.endRow != null &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isEditableRanges(ranges: GridRange[]): boolean {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges: GridRange[]): boolean {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns A range corresponding to the underlying table\n */\n getTableAreaRange(): GridRange {\n return new GridRange(\n null,\n this.floatingTopRowCount,\n null,\n this.floatingTopRowCount + this.table.size - 1\n );\n }\n\n /**\n * @returns A range corresponding to the pending new rows\n */\n getPendingAreaRange(): GridRange {\n return new GridRange(\n null,\n this.floatingTopRowCount + this.table.size,\n null,\n this.floatingTopRowCount + this.table.size + this.pendingNewRowCount - 1\n );\n }\n\n /**\n * Set value in an editable table\n * @param x The column to set\n * @param y The row to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(\n x: ModelIndex,\n y: ModelIndex,\n text: string\n ): Promise<void> {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n return this.setValueForRanges([new GridRange(x, y, x, y)], text);\n }\n\n /**\n * Set value in an editable table\n * @param ranges The ranges to set\n * @param value The values to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges: GridRange[], text: string): Promise<void> {\n if (!this.isEditableRanges(ranges)) {\n throw new Error(`Uneditable ranges ${ranges}`);\n }\n\n try {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n const columnSet = new Set<Column>();\n\n // Formatted text for each column\n // Since there could be different formatting for each column, but the value will be the same across rows\n const formattedText: (string | null)[] = [];\n GridRange.forEachCell(ranges, (x, y) => {\n const column = this.columns[x];\n columnSet.add(column);\n if (formattedText[x] === undefined) {\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n formattedText[x] =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n }\n this.cachePendingValue(x, y, formattedText[x]);\n });\n\n // Take care of updates to the pending new area first, as they can be updated synchronously\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n GridRange.forEachCell(pendingRanges, (columnIndex, rowIndex) => {\n if (!newDataMap.has(rowIndex)) {\n newDataMap.set(rowIndex, { data: new Map() } as R);\n }\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n assertNotNull(row);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n if (value != null) {\n newRowData.set(columnIndex, { value });\n } else {\n newRowData.delete(columnIndex);\n }\n if (newRowData.size > 0) {\n newDataMap.set(rowIndex, { ...row, data: newRowData });\n } else {\n newDataMap.delete(rowIndex);\n }\n });\n this.pendingDataMap = newDataMap;\n }\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range =>\n new GridRange(\n null,\n range?.startRow ?? null,\n null,\n range?.endRow ?? null\n )\n )\n );\n const newRows = data.map(row => {\n const newRow: Record<ColumnName, unknown> = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n columnSet.forEach(column => {\n newRow[column.name] = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n });\n return newRow;\n });\n\n const result = await this.inputTable?.addRows(newRows);\n\n log.debug(\n 'setValueForRanges(',\n ranges,\n ',',\n text,\n ') set tableRanges',\n tableRanges,\n 'result',\n result\n );\n }\n\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n GridRange.forEachCell(ranges, (x, y) => {\n const cellText = formattedText[x];\n assertNotNull(cellText);\n this.cacheFormattedValue(x, y, cellText);\n });\n } catch (err) {\n log.error('Unable to set ranges', ranges, text, err);\n } finally {\n GridRange.forEachCell(ranges, (x, y) => {\n this.clearPendingValue(x, y);\n });\n }\n }\n\n async setValues(edits: EditOperation[] = []): Promise<void> {\n log.debug('setValues(', edits, ')');\n if (\n !edits.every(edit =>\n this.isEditableRange(\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n )\n ) {\n throw new Error(`Uneditable ranges ${edits}`);\n }\n\n try {\n const newDataMap = new Map(this.pendingNewDataMap);\n\n // Cache the display values\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cachePendingValue(x, y, formattedText);\n\n // Take care of updates to the pending new area as well, as that can be updated synchronously\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n if (!newDataMap.has(pendingRow)) {\n newDataMap.set(pendingRow, { data: new Map() } as R);\n }\n\n const row = newDataMap.get(pendingRow);\n assertNotNull(row);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n if (value != null) {\n newRowData.set(x, { value });\n } else {\n newRowData.delete(x);\n }\n if (newRowData.size > 0) {\n newDataMap.set(pendingRow, { ...row, data: newRowData });\n } else {\n newDataMap.delete(pendingRow);\n }\n }\n });\n\n this.pendingDataMap = newDataMap;\n\n // Send an update right after setting the pending map so the values are displayed immediately\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n\n // Need to group by row...\n const rowEditMap = edits.reduce((rowMap, edit) => {\n const y = edit.row ?? edit.y;\n if (!rowMap.has(y)) {\n rowMap.set(y, []);\n }\n rowMap.get(y)?.push(edit);\n return rowMap;\n }, new Map<ModelIndex, EditOperation[]>());\n\n const ranges = GridRange.consolidate(\n edits.map(edit =>\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n );\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(null, range.startRow, null, range.endRow);\n })\n );\n const newRows = data.map((row, dataIndex) => {\n let rowIndex = null;\n let r = dataIndex;\n for (let i = 0; i < tableRanges.length; i += 1) {\n const range = tableRanges[i];\n assertNotNull(range);\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n assertNotNull(range.startRow);\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow: Record<ColumnName, unknown> = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n assertNotNull(rowIndex);\n const rowEdits = rowEditMap.get(rowIndex);\n if (rowEdits != null) {\n rowEdits.forEach(edit => {\n const column = this.columns[edit.column ?? edit.x];\n newRow[column.name] = this.tableUtils.makeValue(\n column.type,\n edit.text,\n this.formatter.timeZone\n );\n });\n }\n return newRow;\n });\n\n log.info('setValues setting tableRanges', tableRanges);\n\n const result = await this.inputTable?.addRows(newRows);\n\n log.info('setValues set tableRanges', tableRanges, 'SUCCESS', result);\n }\n\n // We've sent the changes to the server, but have not yet got an update with those changes committed\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n\n this.cacheFormattedValue(x, y, formattedText);\n });\n } finally {\n edits.forEach(edit => {\n this.clearPendingValue(edit.column, edit.row);\n });\n }\n }\n\n async commitPending(): Promise<void> {\n if (this.pendingNewDataMap.size <= 0) {\n throw new Error('No pending changes to commit');\n }\n\n try {\n this.isSaveInProgress = true;\n\n const newRows: Record<ColumnName, unknown>[] = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow: Record<ColumnName, unknown> = {};\n row.data.forEach(({ value }, columnIndex) => {\n const column = this.columns[columnIndex];\n newRow[column.name] = value;\n });\n newRows.push(newRow);\n });\n const result = await this.inputTable?.addRows(newRows);\n\n log.debug('commitPending()', this.pendingNewDataMap, 'result', result);\n\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = Math.max(\n 0,\n (this.viewport?.bottom ?? 0) - this.table.size\n );\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x: ModelIndex, y: ModelIndex): string | null | undefined {\n return this.textValueForCell(x, y);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n throw new Error('Delete not implemented');\n }\n\n isValidForCell(x: ModelIndex, y: ModelIndex, value: string): boolean {\n try {\n const column = this.columns[x];\n this.tableUtils.makeValue(column.type, value, this.formatter.timeZone);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport default IrisGridTableModelTemplate;\n"],"mappings":";;;;;;;AAAA;AACA;AACA,OAAOA,OAAO,MAAM,aAAa;AACjC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAGEC,SAAS,EACTC,SAAS,EACTC,YAAY,QAIP,iBAAiB;AAoBxB,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAEEC,oBAAoB,EACpBC,YAAY,EACZC,aAAa,QACR,kBAAkB;AACzB,SAASC,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ,wBAAwB;AAAC,OAQxEC,aAAa;AAAA,OACbC,oBAAoB;AAAA,OACpBC,aAAa;AAAA,OACbC,eAAe;AAAA,SAWMC,mBAAmB;AAE/C,IAAMC,GAAG,GAAGZ,GAAG,CAACa,MAAM,CAAC,oBAAoB,CAAC;AAE5C,IAAMC,qBAAqB,GAAG,GAAG;AACjC,IAAMC,uBAAuB,GAAG,CAAC;AAEjC,IAAMC,WAAsB,GAAG,EAAE;AAEjC,OAAO,SAASC,4BAA4BA,CAC1CC,KAAoB,EACiB;EACrC,OAAQA,KAAK,CAAgCC,KAAK,KAAKC,SAAS;AAClE;;AAEA;AACA;AACA;;AAEA,MAAMC,0BAA0B,SAGtBd,aAAa,CAAC;EAGtBe,OAAOA,CACLC,QAAgB,EAChBC,MAAc,EACdC,SAAyB,EACzBC,KAAc,EACdC,WAAiC,EACjCC,QAA8B,EAC9BC,WAAiC,EAChB;IACjB,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAC,MAAMA,CAAA,EAAmB;IACvB,MAAM,IAAID,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAE,gBAAgBA,CAACR,MAAc,EAA6B;IAC1D,MAAM,IAAIM,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAIG,aAAaA,CAAA,EAAiB;IAChC,OAAO,EAAE;EACX;EAEA,IAAIA,aAAaA,CAACA,aAA2B,EAAE;IAC7C,MAAM,IAAIH,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAII,aAAaA,CAAA,EAAmB;IAClC,OAAO,EAAE;EACX;EAEA,IAAIA,aAAaA,CAACA,aAA6B,EAAE;IAC/C,MAAM,IAAIJ,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAK,mBAAmBA,CAACC,OAAqB,EAAQ;IAC/C,MAAM,IAAIN,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAIO,YAAYA,CAAA,EAAwB;IACtC,MAAM,IAAIP,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAIO,YAAYA,CAACA,YAAiC,EAAE;IAClD,MAAM,IAAIP,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAIQ,qBAAqBA,CAAA,EAAiB;IACxC,MAAM,IAAIR,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,IAAIQ,qBAAqBA,CAACC,KAAmB,EAAE;IAC7C,MAAM,IAAIT,KAAK,CAAC,yBAAyB,CAAC;EAC5C;;EAEA;AACF;AACA;AACA;EACE,IAAIM,OAAOA,CAAA,EAAa;IACtB,OAAO,IAAI,CAACjB,KAAK,CAACiB,OAAO;EAC3B;;EAsCA;EACA;EACA;EAeA;AACF;AACA;AACA;AACA;AACA;EACEI,WAAWA,CACTC,EAAU,EACVtB,KAAQ,EAGR;IAAA,IAAAuB,qBAAA,EAAAC,iBAAA;IAAA,IAFAC,UAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,IAAIxC,SAAS,CAACoC,EAAE,CAAC;IAAA,IAC7BM,UAA6B,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,IAAI;IAEpC,KAAK,CAACJ,EAAE,CAAC;IAACO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,6BAxBiB,CAAC;IAAAA,eAAA,gCAEkC,IAAIC,GAAG,CAAC,CAAC;IAAAD,eAAA,gCAET,IAAIC,GAAG,CAAC,CAAC;IAAAD,eAAA,gCAE1B,IAAI;IAAAA,eAAA,8BAEA,EAAE;IAAAA,eAAA,wBAEL,IAAI;IAAAA,eAAA,yCAsjBXrD,OAAO,CAC7CuD,WAAyB,IAA+B;MAAA,IAAAC,qBAAA;MACvD,IAAI,CAACD,WAAW,EAAE;QAChB,OAAO,EAAE;MACX;MACA,IAAIE,YAA6B,GAAG,EAAE;MACtC,IAAM;QAAEC;MAAS,CAAC,GAAG5C,aAAa,CAAC6C,uBAAuB,CACxD,IAAI,GAAAH,qBAAA,GACJD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEK,YAAY,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,EAC/B,CAAC;MAED,IAAMK,UAAU,GAAGA,CAACC,IAAY,EAAEC,OAAqB,KAAW;QAChE,IAAMC,UAAU,GAAG,IAAI,CAACC,oBAAoB,CAACH,IAAI,CAAC;QAClD,IAAIE,UAAU,IAAI,IAAI,EAAE;UACtB,MAAM,IAAI7B,KAAK,gCAAA+B,MAAA,CAAgCJ,IAAI,CAAE,CAAC;QACxD;QACA,IAAMK,YAAY,GAAGhE,SAAS,CAACiE,eAAe,CAC5CJ,UAAU,EACVP,YACF,CAAC;QACDA,YAAY,GAAGtD,SAAS,CAACkE,QAAQ,CAACF,YAAY,EAAEJ,OAAO,EAAEN,YAAY,CAAC;MACxE,CAAC;MAED,IAAMa,SAAS,GAAGA,CAACR,IAAY,EAAEC,OAAqB,KAAW;QAC/D,IAAMQ,KAAK,GAAGb,QAAQ,CAACc,GAAG,CAACV,IAAI,CAAC;QAChC,IAAIS,KAAK,IAAI,IAAI,EAAE;UACjB,MAAM,IAAIpC,KAAK,+BAAA+B,MAAA,CAA+BJ,IAAI,CAAE,CAAC;QACvD;QACA,IAAMW,YAAY,GAAGF,KAAK,CAACG,eAAe,CAACjB,YAAY,CAAC;QACxDA,YAAY,GAAGtD,SAAS,CAACwE,SAAS,CAACF,YAAY,EAAEV,OAAO,EAAEN,YAAY,CAAC;MACzE,CAAC;MAED,IAAM;QACJmB,YAAY,GAAG,EAAE;QACjBC,WAAW,GAAG,EAAE;QAChBC,aAAa,GAAG;MAClB,CAAC,GAAGvB,WAAW;MAEf,IAAIqB,YAAY,CAACzB,MAAM,IAAI0B,WAAW,CAAC1B,MAAM,IAAI2B,aAAa,CAAC3B,MAAM,EAAE;QACrE,IAAM4B,WAAW,GAAG,IAAIC,GAAG,CAAC,CAAC;QAE7B,IAAIC,UAAU,GAAG,CAAC;QAClBH,aAAa,CAACI,OAAO,CAACpB,IAAI,IAAI;UAC5B,IAAIiB,WAAW,CAACI,GAAG,CAACrB,IAAI,CAAC,EAAE;YACzB,MAAM,IAAI3B,KAAK,+CAAA+B,MAAA,CACiCJ,IAAI,CACpD,CAAC;UACH;UACAD,UAAU,CAACC,IAAI,EAAEmB,UAAU,CAAC;UAC5BA,UAAU,IAAI,CAAC;QACjB,CAAC,CAAC;QACFL,YAAY,CAACM,OAAO,CAACpB,IAAI,IAAI;UAC3B,IAAIiB,WAAW,CAACI,GAAG,CAACrB,IAAI,CAAC,EAAE;YACzB,MAAM,IAAI3B,KAAK,+CAAA+B,MAAA,CACiCJ,IAAI,CACpD,CAAC;UACH;UACAD,UAAU,CAACC,IAAI,EAAEmB,UAAU,CAAC;UAC5BA,UAAU,IAAI,CAAC;QACjB,CAAC,CAAC;QAEF,IAAIG,SAAS,GAAG,IAAI,CAACC,SAAS,CAACC,IAAI,GAAG,CAAC;QACvCT,WAAW,CAACK,OAAO,CAACpB,IAAI,IAAI;UAC1B,IAAIiB,WAAW,CAACI,GAAG,CAACrB,IAAI,CAAC,EAAE;YACzB,MAAM,IAAI3B,KAAK,+CAAA+B,MAAA,CACiCJ,IAAI,CACpD,CAAC;UACH;UACAD,UAAU,CAACC,IAAI,EAAEsB,SAAS,CAAC;UAC3BA,SAAS,IAAI,CAAC;QAChB,CAAC,CAAC;MACJ;MAEA,IAAMG,sBAAsB,GAAGhC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEK,YAAY;MACxD,IAAI2B,sBAAsB,EAAE;QAC1B,IAAM3B,YAAY,GAAG,CAAC,GAAGF,QAAQ,CAAC8B,MAAM,CAAC,CAAC,CAAC;QAC3C5B,YAAY,CAAC6B,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,KAAK,GAAGD,CAAC,CAACC,KAAK,CAAC;QAE9ChC,YAAY,CAACsB,OAAO,CAACX,KAAK,IAAI;UAC5B,IAAMsB,cAAc,GAAGtB,KAAK,CAACuB,QAAQ,CAAC,CAAC,CAAC;UACxC,IAAMC,eAAe,GAAG,IAAI,CAAC9B,oBAAoB,CAAC4B,cAAc,CAAC;UAEjE,IAAIG,iBAAyB;UAE7B,IAAID,eAAe,IAAI,IAAI,EAAE;YAC3BC,iBAAiB,GAAG7F,SAAS,CAACiE,eAAe,CAC3C2B,eAAe,EACftC,YACF,CAAC;UACH,CAAC,MAAM;YACL,IAAMwC,eAAe,GAAGvC,QAAQ,CAACc,GAAG,CAACqB,cAAc,CAAC;YACpD,IAAI,CAACI,eAAe,EAAE;cACpB,MAAM,IAAI9D,KAAK,mBAAA+B,MAAA,CACK2B,cAAc,gBAAA3B,MAAA,CAAaK,KAAK,CAACT,IAAI,CACzD,CAAC;YACH;YAEA,IAAMW,YAAY,GAAGwB,eAAe,CAACvB,eAAe,CAACjB,YAAY,CAAC;YAClE;YACA,GAAGuC,iBAAiB,CAAC,GAAGvB,YAAY;UACtC;UAEA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG3B,KAAK,CAACuB,QAAQ,CAAC3C,MAAM,EAAE+C,CAAC,IAAI,CAAC,EAAE;YACjD,IAAMC,SAAS,GAAG5B,KAAK,CAACuB,QAAQ,CAACI,CAAC,CAAC;YACnC,IAAME,UAAU,GAAG1C,QAAQ,CAACc,GAAG,CAAC2B,SAAS,CAAC;YAC1C,IAAME,WAAW,GAAG,IAAI,CAACpC,oBAAoB,CAACkC,SAAS,CAAC;YAExD,IAAIC,UAAU,EAAE;cACd;cACA;cACA,IAAME,aAAa,GACjBF,UAAU,CAAC1B,eAAe,CAACjB,YAAY,CAAC,CAAC,CAAC,CAAC,GAAGuC,iBAAiB;cAEjE,IAAMO,WAAW,GAAGD,aAAa,GAC7BN,iBAAiB,GAAGI,UAAU,CAACI,YAAY,CAACrD,MAAM,GAAG,CAAC,GACtD6C,iBAAiB,GAAG,CAAC;cAEzB1B,SAAS,CAAC6B,SAAS,EAAEI,WAAW,CAAC;cACjCP,iBAAiB,GACfO,WAAW,GAAGH,UAAU,CAACI,YAAY,CAACrD,MAAM,GAAG,CAAC;YACpD,CAAC,MAAM,IAAIkD,WAAW,IAAI,IAAI,EAAE;cAC9B,IAAMC,cAAa,GACjBnG,SAAS,CAACiE,eAAe,CAACiC,WAAW,EAAE5C,YAAY,CAAC,GACpDuC,iBAAiB;cAEnB,IAAMO,YAAW,GAAGD,cAAa,GAC7BN,iBAAiB,GACjBA,iBAAiB,GAAG,CAAC;cACzBnC,UAAU,CAACsC,SAAS,EAAEI,YAAW,CAAC;cAClCP,iBAAiB,GAAGO,YAAW;YACjC;UACF;QACF,CAAC,CAAC;MACJ;MAEA,IAAI,CAACE,aAAa,GAAGhD,YAAY;MACjC,OAAOA,YAAY;IACrB,CACF,CAAC;IAAAJ,eAAA,+CAgBsCrD,OAAO,CAC3CuD,WAAyB;MAAA,IAAAmD,sBAAA;MAAA,OACxB5F,aAAa,CAAC6C,uBAAuB,CACnC,IAAI,GAAA+C,sBAAA,GACJnD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEK,YAAY,cAAA8C,sBAAA,cAAAA,sBAAA,GAAI,EAC/B,CAAC,CAACC,MAAM;IAAA,CACZ,CAAC;IAAAtD,eAAA,+BAQsBrD,OAAO,CAC3B4G,YAAsB,IAA0B;MAC/C,IAAMvB,SAAS,GAAG,IAAI/B,GAAG,CAAC,CAAC;MAC3BsD,YAAY,CAAC1B,OAAO,CAAC2B,GAAG,IAAIxB,SAAS,CAACyB,GAAG,CAACD,GAAG,CAAC/C,IAAI,EAAE+C,GAAG,CAAC,CAAC;MACzD,OAAOxB,SAAS;IAClB,CACF,CAAC;IAAAhC,eAAA,oCA2N2BrD,OAAO,CAChCyC,OAAiB,IAAkC;MAClD,IAAMsE,OAAO,GAAG,IAAIzD,GAAG,CAAC,CAAC;MACzBb,OAAO,CAACyC,OAAO,CAAC,CAAA8B,IAAA,EAAWd,CAAC;QAAA,IAAX;UAAEpC;QAAK,CAAC,GAAAkD,IAAA;QAAA,OAAQD,OAAO,CAACD,GAAG,CAAChD,IAAI,EAAEoC,CAAC,CAAC;MAAA,EAAC;MACtD,OAAOa,OAAO;IAChB,CACF,CAAC;IAAA1D,eAAA,sBAkKapD,QAAQ,CACpB,CAACgH,GAAiB,EAAEC,MAAoB,EAAEzE,OAAiB,KAAK;MAC9D,IAAIyE,MAAM,GAAGD,GAAG,EAAE;QAChBhG,GAAG,CAACkG,KAAK,CAAC,kBAAkB,EAAEF,GAAG,EAAEC,MAAM,CAAC;QAC1C;MACF;MAEA,IAAM;QAAEE;MAAS,CAAC,GAAG,IAAI;MACzB,IACEA,QAAQ,IAAI,IAAI,IAChBA,QAAQ,CAACH,GAAG,KAAKA,GAAG,IACpBG,QAAQ,CAACF,MAAM,KAAKA,MAAM,IAC1BE,QAAQ,CAAC3E,OAAO,KAAKA,OAAO,EAC5B;QACAxB,GAAG,CAACoG,MAAM,CAAC,6BAA6B,EAAED,QAAQ,CAAC;QACnD;MACF;MAEA,IAAI,CAACA,QAAQ,GAAG;QACdH,GAAG;QACHC,MAAM;QACNzE;MACF,CAAC;MACDxB,GAAG,CAACoG,MAAM,CAAC,aAAa,EAAE,IAAI,CAACD,QAAQ,CAAC;MAExC,IAAI,CAACE,aAAa,CAAC,CAAC;IACtB,CAAC,EACDnG,qBACF,CAAC;IAAAkC,eAAA,wBAKepD,QAAQ,CACtB,MAAY;MACV,IAAI,CAAC,IAAI,CAACmH,QAAQ,EAAE;QAClB;MACF;MAEAnG,GAAG,CAACoG,MAAM,CAAC,eAAe,EAAE,IAAI,CAACD,QAAQ,CAAC;MAC1C,IAAM;QAAEH,GAAG;QAAEC,MAAM;QAAEzE;MAAQ,CAAC,GAAG,IAAI,CAAC2E,QAAQ;MAC9C,IAAM,CAACG,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAI,CAACC,yBAAyB,CAClER,GAAG,EACHC,MACF,CAAC;MACD,IAAI,CAACQ,qBAAqB,CAACH,WAAW,EAAEC,cAAc,EAAE/E,OAAO,CAAC;IAClE,CAAC,EACDrB,uBAAuB,EACvB;MAAEuG,OAAO,EAAE;IAAM,CACnB,CAAC;IAAAtE,eAAA,mCAgL0BjD,YAAY,CACrC,CACE6C,SAAoB,EACpBlB,KAAc,EACd6F,UAAkB,EAClBC,UAAsB,EACtBC,cAAyC,KAEzC7E,SAAS,CAAC8E,kBAAkB,CAC1BhG,KAAK,EACL6F,UAAU,EACVC,UAAU,EACVC,cACF,CAAC,EACH;MAAEE,GAAG,EAAE;IAAM,CACf,CAAC;IAAA3E,eAAA,0CAEiCjD,YAAY,CAC5CO,cAAc,CAACsH,2BAA2B,EAC1C;MAAED,GAAG,EAAE;IAAM,CACf,CAAC;IAAA3E,eAAA,oCAE2BrD,OAAO,CACjC,CAACiH,GAAW,EAAEC,MAAc,KAAuB;MACjD,IAAMgB,UAAU,GAAGhB,MAAM,GAAGD,GAAG;MAC/B,IAAMM,WAAW,GAAGY,IAAI,CAACH,GAAG,CAC1B,CAAC,EACDf,GAAG,GAAGiB,UAAU,GAAGxG,0BAA0B,CAAC0G,gBAChD,CAAC;MACD,IAAMZ,cAAc,GAClBN,MAAM,GAAGgB,UAAU,GAAGxG,0BAA0B,CAAC0G,gBAAgB;MACnE,OAAO,CAACb,WAAW,EAAEC,cAAc,CAAC;IACtC,CACF,CAAC;IAAAnE,eAAA,iCAEwBrD,OAAO,CAC9B,CACEqI,cAA8B,EAC9B5F,OAAiB,EACjB6F,cAAsB,KACnB;MACH,IAAMC,GAAG,GAAG,IAAIjF,GAAG,CAAgC,CAAC;MACpD+E,cAAc,CAACnD,OAAO,CAAC,CAACsD,GAAG,EAAEC,QAAQ,KAAK;QACxC,IAAM;UAAEC,IAAI,EAAEC;QAAQ,CAAC,GAAGH,GAAG;QAC7B,KAAK,IAAItC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoC,cAAc,EAAEpC,CAAC,IAAI,CAAC,EAAE;UAC1C,IAAI,CAACyC,OAAO,CAACxD,GAAG,CAACe,CAAC,CAAC,EAAE;YAAA,IAAA0C,QAAA;YACnB,IAAI,CAACL,GAAG,CAACpD,GAAG,CAACsD,QAAQ,CAAC,EAAE;cACtBF,GAAG,CAACzB,GAAG,CAAC2B,QAAQ,EAAE,EAAE,CAAC;YACvB;YACA,CAAAG,QAAA,GAAAL,GAAG,CACA/D,GAAG,CAACiE,QAAQ,CAAC,cAAAG,QAAA,uBADhBA,QAAA,CAEIC,IAAI,CAAC,IAAI9H,eAAe,CAAC0H,QAAQ,EAAEhG,OAAO,CAACyD,CAAC,CAAC,CAACpC,IAAI,CAAC,CAAC;UAC1D;QACF;MACF,CAAC,CAAC;MACF,OAAOyE,GAAG;IACZ,CACF,CAAC;IAj3CC,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACC,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACG,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACI,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACK,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACL,IAAI,CAAC,IAAI,CAAC;IAE5C,IAAI,CAACjG,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACuG,aAAa,GAAGpG,UAAS;IAC9B,IAAI,CAACqG,aAAa,GAAG,IAAIxI,aAAa,CAACgC,EAAE,CAAC;IAC1C,IAAI,CAACM,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACmG,YAAY,GAAG,IAAI;IACxB,IAAI,CAAC/H,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACgI,UAAU,GAAG,IAAI/I,UAAU,CAACqC,EAAE,CAAC;IACpC,IAAI,CAACsE,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACqC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,mBAAmB,GAAG,EAAE;IAC7B,IAAI,CAACC,iBAAiB,GAAG,EAAE;IAC3B,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAE7B,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,aAAa,GAAG,IAAI;;IAEzB;IACA;IACA;IACA,IAAI,CAACC,iBAAiB,GAAG,IAAI3G,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC4G,kBAAkB,GAAG,CAAC;IAE3B,IAAI,CAACC,kBAAkB,GAAGrJ,aAAa,CAAC6C,uBAAuB,CAC7D,IAAI,GAAAZ,qBAAA,IAAAC,iBAAA,GACJ,IAAI,CAACO,WAAW,cAAAP,iBAAA,uBAAhBA,iBAAA,CAAkBY,YAAY,cAAAb,qBAAA,cAAAA,qBAAA,GAAI,EACpC,CAAC,CAAC4D,MAAM;EACV;EAEAyD,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAC5I,KAAK,CAAC4I,KAAK,CAAC,CAAC;IAClB,IAAI,IAAI,CAACP,WAAW,KAAK,IAAI,EAAE;MAC7B,IAAI,CAACA,WAAW,CAACO,KAAK,CAAC,CAAC;IAC1B;IACA,IAAI,IAAI,CAACN,kBAAkB,KAAK,IAAI,EAAE;MACpC,IAAI,CAACA,kBAAkB,CAACO,MAAM,CAAC,CAAC;IAClC;EACF;EAEAC,cAAcA,CAAA,EAAS;IACrB,KAAK,CAACA,cAAc,CAAC,CAAC;IAEtB,IAAM;MAAExH;IAAG,CAAC,GAAG,IAAI;IAEnB,IAAI,CAACtB,KAAK,CAAC+I,gBAAgB,CACzBzH,EAAE,CAAC0H,KAAK,CAACC,gBAAgB,EACzB,IAAI,CAAC3B,qBACP,CAAC;IACD,IAAI,CAACtH,KAAK,CAAC+I,gBAAgB,CACzBzH,EAAE,CAAC0H,KAAK,CAACE,eAAe,EACxB,IAAI,CAAC1B,oBACP,CAAC;IACD,IAAI,CAACxH,KAAK,CAAC+I,gBAAgB,CAACzH,EAAE,CAAC0H,KAAK,CAACG,aAAa,EAAE,IAAI,CAAC1B,iBAAiB,CAAC;IAC3E,IAAI,CAACzH,KAAK,CAAC+I,gBAAgB,CACzBzH,EAAE,CAAC8H,MAAM,CAACC,oBAAoB,EAC9B,IAAI,CAAC1B,mBACP,CAAC;IACD,IAAI,CAAC3H,KAAK,CAAC+I,gBAAgB,CACzBzH,EAAE,CAAC0H,KAAK,CAACM,0BAA0B,EACnC,IAAI,CAAC1B,0BACP,CAAC;IAED,IAAI,IAAI,CAACS,WAAW,IAAI,IAAI,EAAE;MAC5B,IAAI,CAACkB,kBAAkB,CAAC,IAAI,CAAClB,WAAW,CAAC;IAC3C;IAEA,IAAI,CAACvC,aAAa,CAAC,CAAC;EACtB;EAEA0D,aAAaA,CAAA,EAAS;IACpB,KAAK,CAACA,aAAa,CAAC,CAAC;IAErB,IAAM;MAAElI;IAAG,CAAC,GAAG,IAAI;IAEnB,IAAI,CAACtB,KAAK,CAACyJ,mBAAmB,CAC5BnI,EAAE,CAAC0H,KAAK,CAACC,gBAAgB,EACzB,IAAI,CAAC3B,qBACP,CAAC;IACD,IAAI,CAACtH,KAAK,CAACyJ,mBAAmB,CAC5BnI,EAAE,CAAC0H,KAAK,CAACE,eAAe,EACxB,IAAI,CAAC1B,oBACP,CAAC;IACD,IAAI,CAACxH,KAAK,CAACyJ,mBAAmB,CAC5BnI,EAAE,CAAC0H,KAAK,CAACG,aAAa,EACtB,IAAI,CAAC1B,iBACP,CAAC;IACD,IAAI,CAACzH,KAAK,CAACyJ,mBAAmB,CAC5BnI,EAAE,CAAC8H,MAAM,CAACC,oBAAoB,EAC9B,IAAI,CAAC1B,mBACP,CAAC;IACD,IAAI,CAAC3H,KAAK,CAACyJ,mBAAmB,CAC5BnI,EAAE,CAAC0H,KAAK,CAACM,0BAA0B,EACnC,IAAI,CAAC1B,0BACP,CAAC;IAED,IAAI,IAAI,CAACS,WAAW,IAAI,IAAI,EAAE;MAC5B,IAAI,CAACqB,qBAAqB,CAAC,IAAI,CAACrB,WAAW,CAAC;IAC9C;IAEA,IAAI,CAACsB,iBAAiB,CAAC,CAAC;EAC1B;EAEAJ,kBAAkBA,CAAClB,WAAwB,EAAQ;IACjD,IAAM;MAAE/G;IAAG,CAAC,GAAG,IAAI;IACnB+G,WAAW,CAACU,gBAAgB,CAC1BzH,EAAE,CAAC0H,KAAK,CAACG,aAAa,EACtB,IAAI,CAACzB,kBACP,CAAC;;IAED;IACAW,WAAW,CAACuB,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;EAC/B;EAEAF,qBAAqBA,CAACrB,WAAwB,EAAQ;IACpD,IAAM;MAAE/G;IAAG,CAAC,GAAG,IAAI;IACnB+G,WAAW,CAACoB,mBAAmB,CAC7BnI,EAAE,CAAC0H,KAAK,CAACG,aAAa,EACtB,IAAI,CAACzB,kBACP,CAAC;EACH;EAEAJ,qBAAqBA,CAAA,EAAS;IAC5B,IAAI,CAACuC,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACC,UAAU,CACzD,CAAC;EACH;EAEAvC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACqC,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACE,SAAS,CAAC,CAAC;EAC7E;EAEAvC,iBAAiBA,CAACwC,KAAkB,EAAQ;IAC1C,IAAI,CAACC,gBAAgB,CAACD,KAAK,CAACE,MAAM,CAAC;IAEnC,IAAI,CAACN,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;EAC3E;EAEA1C,kBAAkBA,CAACuC,KAAkB,EAAQ;IAC3C,IAAI,CAACI,cAAc,CAACJ,KAAK,CAACE,MAAM,CAAC;IAEjC,IAAI,CAACN,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;EAC3E;EAEAzC,mBAAmBA,CAACsC,KAAkB,EAAQ;IAC5C,IAAI,CAACJ,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACQ,cAAc,EAAEL,KAAK,CACpE,CAAC;EACH;EAEArC,0BAA0BA,CAAA,EAAS;IACjC,IAAI,CAACiC,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACS,eAAe,EAAE;MAC5DJ,MAAM,EAAE,IAAI,CAAClJ;IACf,CAAC,CACH,CAAC;EACH;EAEA,IAAIuJ,QAAQA,CAAA,EAAW;IAAA,IAAAC,qBAAA,EAAAC,YAAA,EAAAC,sBAAA;IACrB,OACE,IAAI,CAAC3K,KAAK,CAAC8D,IAAI,GACf,IAAI,CAAC4E,kBAAkB,KAAA+B,qBAAA,IAAAC,YAAA,GACtB,IAAI,CAACnC,MAAM,cAAAmC,YAAA,wBAAAC,sBAAA,GAAXD,YAAA,CAAaE,cAAc,cAAAD,sBAAA,uBAA3BA,sBAAA,CAA6BhJ,MAAM,cAAA8I,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EAE9C;EAEA,IAAII,iBAAiBA,CAAA,EAAwB;IAAA,IAAAC,qBAAA,EAAAC,gBAAA;IAC3C,OAAO,IAAI,CAACC,sBAAsB,CAChC,IAAI,CAACvC,iBAAiB,EACtB,IAAI,CAACxH,OAAO,GAAA6J,qBAAA,IAAAC,gBAAA,GACZ,IAAI,CAACnJ,UAAU,cAAAmJ,gBAAA,uBAAfA,gBAAA,CAAiBE,UAAU,CAACtJ,MAAM,cAAAmJ,qBAAA,cAAAA,qBAAA,GAAI,CACxC,CAAC;EACH;EAEA,IAAIjE,cAAcA,CAAA,EAAsB;IACtC,OAAO,IAAI,CAAC4B,iBAAiB;EAC/B;EAEA,IAAI5B,cAAcA,CAACE,GAAsB,EAAE;IACzC,IAAIA,GAAG,KAAK,IAAI,CAAC0B,iBAAiB,EAAE;MAClC;IACF;IAEA1B,GAAG,CAACrD,OAAO,CAAC,CAACsD,GAAG,EAAEC,QAAQ,KAAK;MAC7B,IAAI,CAAC3H,aAAa,CAAC4L,YAAY,CAACjE,QAAQ,CAAC,EAAE;QACzC,MAAM,IAAItG,KAAK,qBAAA+B,MAAA,CAAqBuE,QAAQ,CAAE,CAAC;MACjD;MAEA,IAAM;QAAEC;MAAK,CAAC,GAAGF,GAAG;MACpBE,IAAI,CAACxD,OAAO,CAAC,CAACnD,KAAK,EAAE4K,WAAW,KAAK;QACnC,IAAI,CAAC7L,aAAa,CAAC4L,YAAY,CAACC,WAAW,CAAC,EAAE;UAC5C,MAAM,IAAIxK,KAAK,wBAAA+B,MAAA,CAAwByI,WAAW,CAAE,CAAC;QACvD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC1C,iBAAiB,GAAG1B,GAAG;IAE5B,IAAI,CAAC2B,kBAAkB,GAAG/B,IAAI,CAACH,GAAG,CAChC,IAAI,CAACkC,kBAAkB,EACvB,IAAI,CAAC0C,iBACP,CAAC;IAED,IAAI,CAAClD,mBAAmB,GAAG,EAAE;IAE7B,IAAI,CAAC2B,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACuB,oBAAoB,CACnE,CAAC;EACH;EAEA,IAAIC,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAAC5C,kBAAkB;EAChC;EAEA,IAAI4C,eAAeA,CAACC,KAAa,EAAE;IACjC,IAAIA,KAAK,KAAK,IAAI,CAAC7C,kBAAkB,EAAE;MACrC;IACF;IAEA,IAAI,CAACA,kBAAkB,GAAG/B,IAAI,CAACH,GAAG,CAAC,CAAC,EAAE+E,KAAK,EAAE,IAAI,CAACH,iBAAiB,CAAC;IAEpE,IAAI,CAACvB,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;EAC3E;EAEA,IAAIgB,iBAAiBA,CAAA,EAAW;IAC9B,OAAO,IAAI,CAAC3C,iBAAiB,CAAC3E,IAAI,GAAG,CAAC,GAClC6C,IAAI,CAACH,GAAG,CAAC,GAAG,IAAI,CAACiC,iBAAiB,CAAC+C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAC9C,CAAC;EACP;EAEA,IAAIC,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACxK,OAAO,CAACU,MAAM;EAC5B;EAEA,IAAI+J,sBAAsBA,CAAA,EAAW;IAAA,IAAAC,sBAAA,EAAAC,aAAA,EAAAC,qBAAA;IACnC,OAAO,IAAI,CAACtD,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,CAACuD,SAAS,GAC/C,CAAC,IAAAH,sBAAA,IAAAC,aAAA,GACD,IAAI,CAACrD,MAAM,cAAAqD,aAAA,wBAAAC,qBAAA,GAAXD,aAAA,CAAahB,cAAc,cAAAiB,qBAAA,uBAA3BA,qBAAA,CAA6BlK,MAAM,cAAAgK,sBAAA,cAAAA,sBAAA,GAAI,CAAC;EAC9C;EAEA,IAAII,mBAAmBA,CAAA,EAAW;IAAA,IAAAC,sBAAA,EAAAC,aAAA,EAAAC,qBAAA;IAChC,OAAO,IAAI,CAAC3D,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,CAACuD,SAAS,IAAAE,sBAAA,IAAAC,aAAA,GAC/C,IAAI,CAAC1D,MAAM,cAAA0D,aAAA,wBAAAC,qBAAA,GAAXD,aAAA,CAAarB,cAAc,cAAAsB,qBAAA,uBAA3BA,qBAAA,CAA6BvK,MAAM,cAAAqK,sBAAA,cAAAA,sBAAA,GAAI,CAAC,GACxC,CAAC;EACP;EAEA,IAAIG,uBAAuBA,CAAA,EAAY;IACrC,OAAO,IAAI;EACb;EAEA,IAAIC,iBAAiBA,CAAA,EAAY;IAC/B,OAAO,IAAI,CAACpM,KAAK,CAACqM,cAAc,IAAI,IAAI;EAC1C;EAEA,IAAIC,UAAUA,CAAA,EAAY;IACxB,OAAO,CAAC,IAAI,CAAClE,gBAAgB,IAAI,IAAI,CAACxG,UAAU,IAAI,IAAI;EAC1D;EAEA2K,mBAAmBA,CAACC,CAAa,EAAEC,CAAa,EAAEC,IAAmB,EAAQ;IAC3E,IAAI,IAAI,CAACxE,mBAAmB,CAACsE,CAAC,CAAC,IAAI,IAAI,EAAE;MACvC,IAAI,CAACtE,mBAAmB,CAACsE,CAAC,CAAC,GAAG,EAAE;IAClC;IACA,IAAI,CAACtE,mBAAmB,CAACsE,CAAC,CAAC,CAACC,CAAC,CAAC,GAAGC,IAAI;EACvC;EAEAC,iBAAiBA,CAACH,CAAa,EAAEC,CAAa,EAAEC,IAAmB,EAAQ;IACzE,IAAI,IAAI,CAACvE,iBAAiB,CAACqE,CAAC,CAAC,IAAI,IAAI,EAAE;MACrC,IAAI,CAACrE,iBAAiB,CAACqE,CAAC,CAAC,GAAG,EAAE;IAChC;IACA,IAAI,CAACrE,iBAAiB,CAACqE,CAAC,CAAC,CAACC,CAAC,CAAC,GAAGC,IAAI;EACrC;EAEAE,iBAAiBA,CAACJ,CAAa,EAAEC,CAAa,EAAQ;IACpD,IAAMpM,MAAM,GAAG,IAAI,CAAC8H,iBAAiB,CAACqE,CAAC,CAAC;IACxC,IAAInM,MAAM,IAAI,IAAI,EAAE;MAClB,OAAOA,MAAM,CAACoM,CAAC,CAAC;IAClB;EACF;EAEAI,gBAAgBA,CAACL,CAAa,EAAEC,CAAa,EAA6B;IAAA,IAAAK,qBAAA,EAAAC,qBAAA;IACxE;IACA,IAAI,EAAAD,qBAAA,OAAI,CAAC3E,iBAAiB,CAACqE,CAAC,CAAC,cAAAM,qBAAA,uBAAzBA,qBAAA,CAA4BL,CAAC,CAAC,MAAKxM,SAAS,EAAE;MAChD,OAAO,IAAI,CAACkI,iBAAiB,CAACqE,CAAC,CAAC,CAACC,CAAC,CAAC;IACrC;;IAEA;IACA,IAAI,EAAAM,qBAAA,OAAI,CAAC7E,mBAAmB,CAACsE,CAAC,CAAC,cAAAO,qBAAA,uBAA3BA,qBAAA,CAA8BN,CAAC,CAAC,MAAKxM,SAAS,EAAE;MAAA,IAAA+M,kBAAA;MAClD,IAAMzM,MAAK,GAAG,IAAI,CAAC0M,YAAY,CAACT,CAAC,EAAEC,CAAC,CAAC;MACrC,IAAIlM,MAAK,KAAK,IAAI,EAAE;QAClB,OAAO,IAAI;MACb;MACA,IAAIA,MAAK,KAAKN,SAAS,EAAE;QACvB,OAAOA,SAAS;MAClB;MAEA,IAAMI,OAAM,IAAA2M,kBAAA,GAAG,IAAI,CAACE,YAAY,CAACV,CAAC,EAAEC,CAAC,CAAC,cAAAO,kBAAA,cAAAA,kBAAA,GAAI,IAAI,CAAC/L,OAAO,CAACuL,CAAC,CAAC;MACzD,IAAMW,qBAAqB,GAAG,IAAI,CAACC,+BAA+B,CAChE,IAAI,CAAC3L,SAAS,EACdpB,OAAM,CAACiC,IAAI,EACXjC,OAAM,CAACgN,IACT,CAAC;MACD,IAAI/G,cAAc;MAClB,IAAI,CAAC6G,qBAAqB,EAAE;QAC1B,IAAMG,aAAa,GAAG,IAAI,CAACA,aAAa,CAACd,CAAC,EAAEC,CAAC,CAAC;QAC9C,IAAI,CAAAa,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEC,YAAY,KAAI,IAAI,EAAE;UACvCjH,cAAc,GAAGgH,aAAa;QAChC;MACF;MACA,IAAMZ,IAAI,GAAG,IAAI,CAACc,aAAa,CAC7BjN,MAAK,EACLF,OAAM,CAACgN,IAAI,EACXhN,OAAM,CAACiC,IAAI,EACXgE,cACF,CAAC;MACD,IAAI,CAACiG,mBAAmB,CAACC,CAAC,EAAEC,CAAC,EAAEC,IAAI,CAAC;IACtC;IAEA,OAAO,IAAI,CAACxE,mBAAmB,CAACsE,CAAC,CAAC,CAACC,CAAC,CAAC;EACvC;EAEAgB,WAAWA,CAACjB,CAAa,EAAEC,CAAa,EAAU;IAAA,IAAAiB,eAAA;IAChD,IAAMhB,IAAI,GAAG,IAAI,CAACG,gBAAgB,CAACL,CAAC,EAAEC,CAAC,CAAC;IACxC,IAAIC,IAAI,IAAI,IAAI,IAAI,IAAI,CAACiB,WAAW,CAACnB,CAAC,CAAC,EAAE;MACvC,IAAMoB,UAAU,GAAG,IAAI,CAACA,UAAU,CAACnB,CAAC,CAAC;MACrC,IAAImB,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC/G,cAAc,CAAClD,GAAG,CAACiK,UAAU,CAAC,EAAE;QAC7D;QACA,OAAO,GAAG;MACZ;IACF;IAEA,IAAI3O,UAAU,CAAC4O,UAAU,EAAAH,eAAA,GAAC,IAAI,CAACzM,OAAO,CAACuL,CAAC,CAAC,cAAAkB,eAAA,uBAAfA,eAAA,CAAiBL,IAAI,CAAC,EAAE;MAChD,IAAIX,IAAI,KAAK,IAAI,EAAE;QACjB,OAAO,MAAM;MACf;MAEA,IAAIA,IAAI,KAAK,EAAE,EAAE;QACf,OAAO,OAAO;MAChB;IACF;IAEA,OAAOA,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,EAAE;EACnB;EAEAoB,qBAAqBA,CAACtB,CAAa,EAAmB;IACpD,IAAMnM,MAAM,GAAG,IAAI,CAACY,OAAO,CAACuL,CAAC,CAAC;IAC9B,IAAM;MAAEa;IAAK,CAAC,GAAGhN,MAAM;IACvB,IACEpB,UAAU,CAAC8O,YAAY,CAACV,IAAI,CAAC,IAC7B,IAAI,CAAC5L,SAAS,CAACuM,wBAAwB,EACvC;MACA,OAAO,GAAG;IACZ;IAEA,OAAO/N,SAAS;EAClB;EAEAgO,YAAYA,CAACzB,CAAa,EAAEC,CAAa,EAAEyB,KAAwB,EAAU;IAC3E,IAAMhH,IAAI,GAAG,IAAI,CAACiH,WAAW,CAAC3B,CAAC,EAAEC,CAAC,CAAC;IACnC,IAAIvF,IAAI,EAAE;MACR,IAAM;QAAEkH,MAAM;QAAE7N,KAAK,EAALA;MAAM,CAAC,GAAG2G,IAAI;MAC9B,IAAI3G,OAAK,IAAI,IAAI,IAAIA,OAAK,KAAK,EAAE,EAAE;QACjCvB,aAAa,CAACkP,KAAK,CAACG,eAAe,CAAC;QACpC,OAAOH,KAAK,CAACG,eAAe;MAC9B;MACA,IAAID,MAAM,IAAIA,MAAM,CAACE,KAAK,EAAE;QAC1B,OAAOF,MAAM,CAACE,KAAK;MACrB;MAEA,IAAI,IAAI,CAACC,YAAY,CAAC9B,CAAC,CAAC,EAAE;QACxB;QACAzN,aAAa,CAACkP,KAAK,CAACM,gBAAgB,CAAC;QACrC,OAAON,KAAK,CAACM,gBAAgB;MAC/B;;MAEA;MACA,IAAIjO,OAAK,IAAI,IAAI,EAAE;QAAA,IAAAkO,mBAAA;QACjB,IAAMpO,QAAM,IAAAoO,mBAAA,GAAG,IAAI,CAACvB,YAAY,CAACV,CAAC,EAAEC,CAAC,CAAC,cAAAgC,mBAAA,cAAAA,mBAAA,GAAI,IAAI,CAACxN,OAAO,CAACuL,CAAC,CAAC;QACzD,IAAIvN,UAAU,CAACyP,UAAU,CAACrO,QAAM,CAACgN,IAAI,CAAC,IAAIhN,QAAM,CAACiC,IAAI,KAAK,MAAM,EAAE;UAChEtD,aAAa,CAACkP,KAAK,CAACS,SAAS,CAAC;UAC9B,OAAOT,KAAK,CAACS,SAAS;QACxB;QACA,IAAI1P,UAAU,CAAC8O,YAAY,CAAC1N,QAAM,CAACgN,IAAI,CAAC,EAAE;UACxC,IAAK9M,OAAK,GAAc,CAAC,EAAE;YACzBvB,aAAa,CAACkP,KAAK,CAACU,mBAAmB,CAAC;YACxC,OAAOV,KAAK,CAACU,mBAAmB;UAClC;UACA,IAAKrO,OAAK,GAAc,CAAC,EAAE;YACzBvB,aAAa,CAACkP,KAAK,CAACW,mBAAmB,CAAC;YACxC,OAAOX,KAAK,CAACW,mBAAmB;UAClC;UACA7P,aAAa,CAACkP,KAAK,CAACY,eAAe,CAAC;UACpC,OAAOZ,KAAK,CAACY,eAAe;QAC9B;MACF;IACF,CAAC,MAAM,IAAI,IAAI,CAACP,YAAY,CAAC9B,CAAC,CAAC,IAAI,IAAI,CAACkB,WAAW,CAACnB,CAAC,CAAC,EAAE;MACtDxN,aAAa,CAACkP,KAAK,CAACa,cAAc,CAAC;MACnC,OAAOb,KAAK,CAACa,cAAc;IAC7B;IAEA,OAAOb,KAAK,CAACc,SAAS;EACxB;EAEAC,sBAAsBA,CAACzC,CAAa,EAAEC,CAAa,EAAiB;IAAA,IAAAyC,qBAAA,EAAAC,mBAAA;IAClE,QAAAD,qBAAA,IAAAC,mBAAA,GAAO,IAAI,CAAC7B,aAAa,CAACd,CAAC,EAAEC,CAAC,CAAC,cAAA0C,mBAAA,uBAAxBA,mBAAA,CAA0BC,eAAe,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EAC1D;EAEAG,gBAAgBA,CAAC7C,CAAa,EAAmB;IAC/C,IAAMnM,MAAM,GAAG,IAAI,CAACY,OAAO,CAACuL,CAAC,CAAC;IAC9B,IAAM;MAAEa;IAAK,CAAC,GAAGhN,MAAM;IAEvB,IAAIpB,UAAU,CAAC8O,YAAY,CAACV,IAAI,CAAC,EAAE;MACjC,OAAO,OAAO;IAChB;IACA,IAAIpO,UAAU,CAACyP,UAAU,CAACrB,IAAI,CAAC,IAAIhN,MAAM,CAACiC,IAAI,KAAK,MAAM,EAAE;MACzD,OAAO,QAAQ;IACjB;IACA,OAAO,MAAM;EACf;EAEAgN,qBAAqBA,CACnBjP,MAAkB,EAClB2G,GAAe,EACfkH,KAAwB,EACR;IAAA,IAAAqB,cAAA,EAAAC,cAAA,EAAAC,aAAA,EAAAC,YAAA;IAChB,IAAMtB,MAAM,GAAG,IAAI,CAACd,aAAa,CAACjN,MAAM,EAAE2G,GAAG,CAAC;IAC9ChI,aAAa,CAACoP,MAAM,CAAC;IACrB,IAAM;MAAEuB,IAAI;MAAEC,SAAS;MAAEpJ,GAAG;MAAEqJ,GAAG;MAAEC,cAAc;MAAEvP,KAAK;MAAEwP;IAAO,CAAC,GAChE3B,MAAM,CAAC4B,aAAa;IACtB,IAAI;MAAEC,aAAa;MAAEC,aAAa;MAAEC,WAAW;MAAEC;IAAQ,CAAC,GACxDhC,MAAM,CAAC4B,aAAa;IAEtBC,aAAa,IAAAV,cAAA,GAAGU,aAAa,cAAAV,cAAA,cAAAA,cAAA,GAAIrB,KAAK,CAACmC,gBAAgB;IACvDH,aAAa,IAAAV,cAAA,GAAGU,aAAa,cAAAV,cAAA,cAAAA,cAAA,GAAItB,KAAK,CAACoC,gBAAgB;IACvD,IAAIC,YAA+B,IAAAd,aAAA,GACjCrB,MAAM,CAACE,KAAK,cAAAmB,aAAA,cAAAA,aAAA,GAAKlP,KAAK,IAAI,CAAC,GAAG0P,aAAa,GAAGC,aAAc;IAC9D,IAAIK,YAAY,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC9BD,YAAY,GAAGA,YAAY,CAACE,KAAK,CAAC,GAAG,CAAC;IACxC;IACAN,WAAW,IAAAT,YAAA,GAAGS,WAAW,cAAAT,YAAA,cAAAA,YAAA,GAAIxB,KAAK,CAACwC,cAAc;IAEjDN,OAAO,GAAGN,cAAc,CAACa,WAAW,CAAC,CAAC,KAAK,SAAS,GAAG,GAAG,GAAGP,OAAO;IAEpE,IAAMQ,cAAc,GAAG;MACrBjB,IAAI,EAAEA,IAAI,CAACgB,WAAW,CAAC,CAAe;MACtCf,SAAS,EAAEA,SAAS,CAACiB,WAAW,CAAC,CAAoB;MACrDC,SAAS,EAAEtK,GAAG;MACduK,SAAS,EAAElB,GAAG;MACdO,OAAO;MACP9B,KAAK,EAAEiC,YAAY;MACnBT,cAAc,EAAEA,cAAc,CAACa,WAAW,CAAC,CAAyB;MACpEpQ,KAAK;MACLyQ,OAAO,EAAE,CACP;QACEzQ,KAAK,EAAEwP,MAAM;QACbzB,KAAK,EAAE6B;MACT,CAAC;IAEL,CAAC;IAED,OAAOS,cAAc;EACvB;EAEAK,iBAAiBA,CAAC5Q,MAAkB,EAAE2G,GAAe,EAAkB;IACrE,IAAMoH,MAAM,GAAG,IAAI,CAACd,aAAa,CAACjN,MAAM,EAAE2G,GAAG,CAAC;IAC9C,OAAO,CAAAoH,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE4B,aAAa,KAAI,IAAI,GAAG,SAAS,GAAG,MAAM;EAC3D;EAEAkB,mBAAmBA,CAAC1E,CAAa,EAAiC;IAAA,IAA/BpI,KAAK,GAAA1C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,CAAC;IAC1C,IAAMyP,MAAM,GAAG,IAAI,CAACC,aAAa,CAAC5E,CAAC,EAAEpI,KAAK,CAAC;IAC3C,IAAI5E,mBAAmB,CAAC2R,MAAM,CAAC,EAAE;MAC/B,OAAOA,MAAM,CAACE,KAAK,GAAG,EAAE,GAAGF,MAAM,CAAC7O,IAAI;IACxC;IACA,OAAO6O,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE7O,IAAI;EACrB;EAEAgP,oBAAoBA,CAAC9E,CAAa,EAA4B;IAAA,IAA1BpI,KAAK,GAAA1C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,CAAC;IAC3C,IAAMrB,MAAM,GAAG,IAAI,CAAC+Q,aAAa,CAAC5E,CAAC,EAAEpI,KAAK,CAAC;IAC3C,IAAI5E,mBAAmB,CAACa,MAAM,CAAC,EAAE;MAAA,IAAAkR,aAAA;MAC/B,QAAAA,aAAA,GAAOlR,MAAM,CAACiO,KAAK,cAAAiD,aAAA,cAAAA,aAAA,GAAI,IAAI;IAC7B;IACA,OAAO,IAAI;EACb;EAEAC,oBAAoBA,CAClBhP,UAAsB,EACtB4B,KAAa,EACkB;IAC/B,IAAMrB,KAAK,GAAG,IAAI,CAACqO,aAAa,CAAC5O,UAAU,EAAE4B,KAAK,CAAC;IACnD,IAAI5E,mBAAmB,CAACuD,KAAK,CAAC,EAAE;MAC9B,OAAOA,KAAK;IACd;IACA,OAAO9C,SAAS;EAClB;EAEAwR,0BAA0BA,CACxBjP,UAAsB,EACtB4B,KAAa,EACkB;IAAA,IAAAsN,qBAAA,EAAAC,mBAAA;IAC/B,OAAO,IAAI,CAACC,qBAAqB,CAAC5O,GAAG,EAAA0O,qBAAA,IAAAC,mBAAA,GACnC,IAAI,CAACP,aAAa,CAAC5O,UAAU,EAAE4B,KAAK,CAAC,cAAAuN,mBAAA,uBAArCA,mBAAA,CAAuCrP,IAAI,cAAAoP,qBAAA,cAAAA,qBAAA,GAAI,EACjD,CAAC;EACH;EAEAN,aAAaA,CACX5E,CAAa,EAE2B;IAAA,IAAAqF,gBAAA;IAAA,IADxCzN,KAAK,GAAA1C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,CAAC;IAET,IAAI0C,KAAK,KAAK,CAAC,EAAE;MACf,OAAO,IAAI,CAACnD,OAAO,CAACuL,CAAC,CAAC;IACxB;IAEA,IAAMnG,UAAU,IAAAwL,gBAAA,GAAG,IAAI,CAAC5Q,OAAO,CAACuL,CAAC,CAAC,cAAAqF,gBAAA,uBAAfA,gBAAA,CAAiBvP,IAAI;IACxC,IAAIS,KAAK,GAAG,IAAI,CAAC6O,qBAAqB,CAAC5O,GAAG,CAACqD,UAAU,CAAC;IAEtD,IAAI,CAACtD,KAAK,EAAE;MACV,OAAO9C,SAAS;IAClB;IAEA,IAAI6R,YAAY,GAAG/O,KAAK,CAACqB,KAAK;IAC9B,OAAO0N,YAAY,GAAG1N,KAAK,EAAE;MAC3BrB,KAAK,GAAG,IAAI,CAAC6O,qBAAqB,CAAC5O,GAAG,CAACD,KAAK,CAACT,IAAI,CAAC;MAClD,IAAI,CAACS,KAAK,EAAE;QACV,OAAO9C,SAAS;MAClB;MACA6R,YAAY,GAAG/O,KAAK,CAACqB,KAAK;IAC5B;IAEA,IAAIrB,KAAK,CAACqB,KAAK,KAAKA,KAAK,EAAE;MACzB,OAAOrB,KAAK;IACd;IAEA,OAAO9C,SAAS;EAClB;EAEA8R,gBAAgBA,CAACtF,CAAa,EAAU;IACtC,IAAMuF,SAAS,GAAG,IAAI,CAACA,SAAS,CAACvF,CAAC,CAAC;IACnC,IAAIuF,SAAS,IAAI,IAAI,IAAI,IAAI,CAACzJ,MAAM,EAAE;MACpC,OAAO,IAAI,CAACA,MAAM,CAACqC,cAAc,CAACoH,SAAS,CAAC;IAC9C;IACA,OAAO,EAAE;EACX;EA8IA;AACF;AACA;EACE,IAAIC,mBAAmBA,CAAA,EAA6B;IAAA,IAAAC,kBAAA;IAClD,OAAO,IAAI,CAACC,8BAA8B,EAAAD,kBAAA,GAAC,IAAI,CAACnQ,WAAW,cAAAmQ,kBAAA,cAAAA,kBAAA,GAAIjS,SAAS,CAAC;EAC3E;;EAEA;AACF;AACA;EACE,IAAImS,gBAAgBA,CAAA,EAAoB;IACtC,OAAOvS,WAAW;EACpB;EAUA,IAAIwS,yBAAyBA,CAAA,EAAwB;IAAA,IAAAC,kBAAA;IACnD,OAAO,IAAI,CAACC,oCAAoC,EAAAD,kBAAA,GAC9C,IAAI,CAACvQ,WAAW,cAAAuQ,kBAAA,cAAAA,kBAAA,GAAIrS,SACtB,CAAC;EACH;EAUA,IAAI4D,SAASA,CAAA,EAA4B;IACvC,OAAO,IAAI,CAAC2O,oBAAoB,CAAC,IAAI,CAACxS,KAAK,CAACiB,OAAO,CAAC;EACtD;EAEA,IAAIwR,oBAAoBA,CAAA,EAAW;IAAA,IAAAC,qBAAA;IACjC,QAAAA,qBAAA,GAAO,IAAI,CAACC,qBAAqB,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EACxC;EAEA,IAAYD,oBAAoBA,CAACrO,KAAa,EAAE;IAC9C,IAAI,CAACuO,qBAAqB,GAAGvO,KAAK;EACpC;EAEA,IAAIwO,oBAAoBA,CAAA,EAAmC;IACzD,OAAO,IAAI,CAACC,qBAAqB;EACnC;EAEA,IAAIlK,kBAAkBA,CAAA,EAAwB;IAC5C,OAAO,IAAI,CAACmK,mBAAmB;EACjC;EAEA,IAAInK,kBAAkBA,CAACxD,MAA2B,EAAE;IAClD,IAAIA,MAAM,KAAK,IAAI,CAAC2N,mBAAmB,EAAE;MACvC;IACF;IAEA,IAAM;MACJ3N,MAAM,EAAE4N,SAAS;MACjBC,QAAQ;MACRC,SAAS;MACT/Q;IACF,CAAC,GAAG5C,aAAa,CAAC6C,uBAAuB,CACvC,IAAI,EACJgD,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,IAAI,CAACkN,yBACjB,CAAC;IAED,IAAI,CAACS,mBAAmB,GAAGC,SAAS;IACpC,IAAI,CAACN,oBAAoB,GAAGO,QAAQ;IACpC,IAAI,CAACpB,qBAAqB,GAAGqB,SAAS;IACtC,IAAI,CAACJ,qBAAqB,GAAG3Q,QAAQ;EACvC;EAEA,IAAIgR,cAAcA,CAAA,EAAa;IAC7B,OAAO,EAAE;EACX;EAEAlM,GAAGA,CAACyF,CAAa,EAAY;IAAA,IAAA0G,sBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,qBAAA;IAC3B,IAAMC,cAAc,IAAAV,sBAAA,IAAAC,aAAA,GAAG,IAAI,CAAC7K,MAAM,cAAA6K,aAAA,wBAAAC,qBAAA,GAAXD,aAAA,CAAaxI,cAAc,cAAAyI,qBAAA,uBAA3BA,qBAAA,CAA6B1R,MAAM,cAAAwR,sBAAA,cAAAA,sBAAA,GAAI,CAAC;IAC/D,IAAMrH,SAAS,IAAAwH,qBAAA,IAAAC,aAAA,GAAG,IAAI,CAAChL,MAAM,cAAAgL,aAAA,uBAAXA,aAAA,CAAazH,SAAS,cAAAwH,qBAAA,cAAAA,qBAAA,GAAI,KAAK;IACjD,IAAMtB,SAAS,GAAG,IAAI,CAACA,SAAS,CAACvF,CAAC,CAAC;IACnC,IAAIuF,SAAS,IAAI,IAAI,EAAE;MAAA,IAAA8B,aAAA,EAAAC,qBAAA,EAAAC,mBAAA;MACrB,IAAMC,SAAS,IAAAH,aAAA,GAAG,IAAI,CAACvL,MAAM,cAAAuL,aAAA,uBAAXA,aAAA,CAAalJ,cAAc,CAACoH,SAAS,CAAC;MACxDhT,aAAa,CAACiV,SAAS,CAAC;MACxB,QAAAF,qBAAA,IAAAC,mBAAA,GAAO,IAAI,CAACxL,aAAa,cAAAwL,mBAAA,uBAAlBA,mBAAA,CAAoBhR,GAAG,CAACiR,SAAS,CAAC,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IACnD;IACA,IAAMnG,UAAU,GAAG,IAAI,CAACA,UAAU,CAACnB,CAAC,CAAC;IACrC,IAAImB,UAAU,IAAI,IAAI,EAAE;MAAA,IAAAsG,qBAAA;MACtB,QAAAA,qBAAA,GAAO,IAAI,CAACzL,iBAAiB,CAACzF,GAAG,CAAC4K,UAAU,CAAC,cAAAsG,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IACvD;IACA,IAAMC,MAAM,IAAAX,qBAAA,IAAAC,kBAAA,GAAG,IAAI,CAACxL,YAAY,cAAAwL,kBAAA,uBAAjBA,kBAAA,CAAmBU,MAAM,cAAAX,qBAAA,cAAAA,qBAAA,GAAI,CAAC;IAC7C,IAAMY,SAAS,GAAG,CAACtI,SAAS,GAAGW,CAAC,GAAGoH,cAAc,GAAGpH,CAAC,IAAI0H,MAAM;IAC/D,QAAAT,qBAAA,IAAAC,mBAAA,GAAO,IAAI,CAAC1L,YAAY,cAAA0L,mBAAA,wBAAAC,qBAAA,GAAjBD,mBAAA,CAAmBU,IAAI,cAAAT,qBAAA,uBAAvBA,qBAAA,CAA0BQ,SAAS,CAAC,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACrD;;EAEA;AACF;AACA;AACA;AACA;EACExG,YAAYA,CAACV,CAAa,EAAEC,CAAa,EAA6B;IAAA,IAAA6H,aAAA,EAAAC,qBAAA,EAAAC,aAAA,EAAAC,iBAAA;IACpE,IAAMzC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACvF,CAAC,CAAC;IACnC,IAAIuF,SAAS,IAAI,IAAI,EAAE,OAAO,IAAI;IAElC,IAAMiC,SAAS,IAAAK,aAAA,GAAG,IAAI,CAAC/L,MAAM,cAAA+L,aAAA,uBAAXA,aAAA,CAAa1J,cAAc,CAACoH,SAAS,CAAC;IACxD,IAAM0C,gBAAgB,IAAAH,qBAAA,IAAAC,aAAA,GACpB,IAAI,CAACjM,MAAM,cAAAiM,aAAA,uBAAXA,aAAA,CAAaE,gBAAgB,cAAAH,qBAAA,cAAAA,qBAAA,GAAIlV,oBAAoB,CAACsV,GAAG;IAC3D,IAAMC,WAAW,GAAG,IAAI,CAAC3T,OAAO,CAACuL,CAAC,CAAC;;IAEnC;IACA;IACA;IACA,QAAAiI,iBAAA,GAAO,IAAI,CAACpM,WAAW,cAAAoM,iBAAA,uBAAhBA,iBAAA,CAAkBxT,OAAO,CAAC4T,IAAI,CACnCxU,MAAM;MAAA,IAAAyU,aAAA;MAAA,OACJzU,MAAM,CAACiC,IAAI,QAAAI,MAAA,CAAQkS,WAAW,CAACtS,IAAI,QAAAI,MAAA,CAAKuR,SAAS,CAAE,IAClD,CAACA,SAAS,KAAKS,gBAAgB,IAC9B,EAAAI,aAAA,OAAI,CAACvM,MAAM,cAAAuM,aAAA,uBAAXA,aAAA,CAAalK,cAAc,CAACjJ,MAAM,MAAK,CAAC,KACxCtB,MAAM,CAACiC,IAAI,KAAKsS,WAAW,CAACtS,IAAK;IAAA,CACvC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE0P,SAASA,CAACvF,CAAa,EAAqB;IAAA,IAAAsI,sBAAA,EAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,cAAA;IAC1C,IAAMtB,cAAc,IAAAkB,sBAAA,IAAAC,cAAA,GAAG,IAAI,CAACzM,MAAM,cAAAyM,cAAA,wBAAAC,qBAAA,GAAXD,cAAA,CAAapK,cAAc,cAAAqK,qBAAA,uBAA3BA,qBAAA,CAA6BtT,MAAM,cAAAoT,sBAAA,cAAAA,sBAAA,GAAI,CAAC;IAC/D,IAAMjJ,SAAS,IAAAoJ,sBAAA,IAAAC,cAAA,GAAG,IAAI,CAAC5M,MAAM,cAAA4M,cAAA,uBAAXA,cAAA,CAAarJ,SAAS,cAAAoJ,sBAAA,cAAAA,sBAAA,GAAI,KAAK;IACjD,IAAMlD,SAAS,GAAGlG,SAAS,GAAGW,CAAC,GAAGA,CAAC,GAAG,IAAI,CAACzM,KAAK,CAAC8D,IAAI;IACrD,IAAIkO,SAAS,IAAI,CAAC,IAAIA,SAAS,GAAG6B,cAAc,EAAE;MAChD,OAAO7B,SAAS;IAClB;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEpE,UAAUA,CAACnB,CAAa,EAAqB;IAC3C,IAAMmB,UAAU,GAAGnB,CAAC,GAAG,IAAI,CAACV,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI;IACjE,IAAI8J,UAAU,IAAI,CAAC,IAAIA,UAAU,GAAG,IAAI,CAAClF,kBAAkB,EAAE;MAC3D,OAAOkF,UAAU;IACnB;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEwH,WAAWA,CAAC3I,CAAa,EAAW;IAClC,OAAO,IAAI,CAACuF,SAAS,CAACvF,CAAC,CAAC,IAAI,IAAI;EAClC;;EAEA;AACF;AACA;AACA;AACA;EACE8B,YAAYA,CAAC9B,CAAa,EAAW;IACnC,OAAO,IAAI,CAACmB,UAAU,CAACnB,CAAC,CAAC,IAAI,IAAI;EACnC;EAEA0B,WAAWA,CAAC3B,CAAa,EAAEC,CAAa,EAAwB;IAAA,IAAA4I,SAAA;IAC9D,QAAAA,SAAA,GAAO,IAAI,CAACrO,GAAG,CAACyF,CAAC,CAAC,cAAA4I,SAAA,uBAAXA,SAAA,CAAanO,IAAI,CAAClE,GAAG,CAACwJ,CAAC,CAAC;EACjC;EAEAc,aAAaA,CAACd,CAAa,EAAEC,CAAa,EAAsB;IAAA,IAAA6I,iBAAA;IAC9D,QAAAA,iBAAA,GAAO,IAAI,CAACnH,WAAW,CAAC3B,CAAC,EAAEC,CAAC,CAAC,cAAA6I,iBAAA,uBAAtBA,iBAAA,CAAwBlH,MAAM;EACvC;EAEAnB,YAAYA,CAACT,CAAa,EAAEC,CAAa,EAAW;IAClD,IAAMvF,IAAI,GAAG,IAAI,CAACiH,WAAW,CAAC3B,CAAC,EAAEC,CAAC,CAAC;;IAEnC;AACJ;AACA;AACA;IACI,IAAIvF,IAAI,EAAE;MAAA,IAAAqO,WAAA;MACR,QAAAA,WAAA,GAAOrO,IAAI,CAAC3G,KAAK,cAAAgV,WAAA,cAAAA,WAAA,GAAI,IAAI;IAC3B;IACA,OAAOtV,SAAS;EAClB;EAEAiK,gBAAgBA,CAAChD,IAAkB,EAAQ;IACzC,IAAIA,IAAI,IAAI,IAAI,EAAE;MAChBzH,GAAG,CAAC+V,IAAI,CAAC,eAAe,CAAC;MACzB;IACF;IAEA,IAAI,CAACvN,YAAY,GAAG,IAAI,CAACwN,mBAAmB,CAACvO,IAAI,CAAC;IAClD,IAAI,CAACgB,mBAAmB,GAAG,EAAE;EAC/B;EAEAmC,cAAcA,CAACqL,UAAwB,EAAQ;IAAA,IAAAC,sBAAA;MAAAC,cAAA;MAAAC,cAAA;MAAAC,KAAA;IAC7C,IAAIJ,UAAU,IAAI,IAAI,EAAE;MACtBjW,GAAG,CAAC+V,IAAI,CAAC,eAAe,CAAC;MACzB;IACF;IAEA,IAAM;MAAEvU,OAAO;MAAEoT;IAAK,CAAC,GAAGqB,UAAU;IACpC,IAAIrB,IAAI,CAAC1S,MAAM,KAAK,CAAC,EAAE;MACrBlC,GAAG,CAACkG,KAAK,CACP,sEACF,CAAC;MACD;IACF;IAEA,IAAMoQ,OAAO,GAAG,IAAIjU,GAAG,CAAC,CAAC;IACzB,IAAMkF,GAAG,GAAGqN,IAAI,CAAC,CAAC,CAAC;IACnB,IAAMK,gBAAgB,IAAAiB,sBAAA,IAAAC,cAAA,GACpB,IAAI,CAACrN,MAAM,cAAAqN,cAAA,uBAAXA,cAAA,CAAalB,gBAAgB,cAAAiB,sBAAA,cAAAA,sBAAA,GAAItW,oBAAoB,CAACsV,GAAG;IAC3D,IAAMqB,YAAY,IAAAH,cAAA,GAAG,IAAI,CAACtN,MAAM,cAAAsN,cAAA,uBAAXA,cAAA,CAAaG,YAAY;IAAC,IAAAC,KAAA,YAAAA,MAAA,EACH;MAAA,IAAAC,mBAAA,EAAAC,kBAAA;MAC1C,IAAM9V,MAAM,GAAGY,OAAO,CAACmV,CAAC,CAAC;MACzB,IAAM,CAAC9T,IAAI,EAAE2R,SAAS,IAAAiC,mBAAA,GAAGF,YAAY,aAAZA,YAAY,wBAAAG,kBAAA,GAAZH,YAAY,CAAG1T,IAAI,CAAC,cAAA6T,kBAAA,uBAApBA,kBAAA,CAAuB,CAAC,CAAC,cAAAD,mBAAA,cAAAA,mBAAA,GAAIxB,gBAAgB,CAAC,GACrErU,MAAM,CAACiC,IAAI,CAACmO,KAAK,CAAC,IAAI,CAAC;MACzB,IAAI,CAACsF,OAAO,CAACpS,GAAG,CAACsQ,SAAS,CAAC,EAAE;QAC3B8B,OAAO,CAACzQ,GAAG,CAAC2O,SAAS,EAAE;UAAE/M,IAAI,EAAE,IAAIpF,GAAG,CAAC;QAAE,CAAC,CAAC;MAC7C;MACA,IAAM;QAAEoF,IAAI,EAAEC;MAAQ,CAAC,GAAG4O,OAAO,CAAC/S,GAAG,CAACiR,SAAS,CAAC;MAChD,IAAM9I,WAAW,GAAG2K,KAAI,CAAC7U,OAAO,CAACoV,SAAS,CAAChR,GAAG,IAAIA,GAAG,CAAC/C,IAAI,KAAKA,IAAI,CAAC;MACpE6E,OAAO,CAAC7B,GAAG,CAAC6F,WAAW,EAAE;QACvB5K,KAAK,EAAEyG,GAAG,CAAChE,GAAG,CAAC3C,MAAM,CAAC;QACtB+N,MAAM,EAAEpH,GAAG,CAACsP,SAAS,CAACjW,MAAM;MAC9B,CAAC,CAAC;IACJ,CAAC;IAbD,KAAK,IAAI+V,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnV,OAAO,CAACU,MAAM,EAAEyU,CAAC,IAAI,CAAC;MAAAH,KAAA;IAAA;IAe1CxW,GAAG,CAACoG,MAAM,CAAC,gBAAgB,EAAEkQ,OAAO,CAAC;IAErC,IAAI,CAACvN,aAAa,GAAGuN,OAAO;IAC5B,IAAI,CAAC7N,mBAAmB,GAAG,EAAE;EAC/B;;EAEA;AACF;AACA;AACA;EACEzF,oBAAoBA,CAACH,IAAgB,EAAsB;IACzD,OAAO,IAAI,CAACiU,yBAAyB,CAAC,IAAI,CAACtV,OAAO,CAAC,CAAC+B,GAAG,CAACV,IAAI,CAAC;EAC/D;EAUA;AACF;AACA;AACA;EACEmT,mBAAmBA,CAACvO,IAAkB,EAAqB;IACzD,IAAMsP,OAA0B,GAAG;MACjCrC,MAAM,EAAEjN,IAAI,CAACiN,MAAM;MACnBE,IAAI,EAAE;IACR,CAAC;IAED,IAAM;MAAEpT;IAAQ,CAAC,GAAGiG,IAAI;IACxB,KAAK,IAAIuP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvP,IAAI,CAACmN,IAAI,CAAC1S,MAAM,EAAE8U,CAAC,IAAI,CAAC,EAAE;MAC5C,IAAMzP,IAAG,GAAGE,IAAI,CAACmN,IAAI,CAACoC,CAAC,CAAC;MACxB,IAAMC,MAAM,GAAG,IAAI,CAACC,kBAAkB,CAAC3P,IAAG,EAAE/F,OAAO,CAAC;MACpDuV,OAAO,CAACnC,IAAI,CAAChN,IAAI,CAACqP,MAAM,CAAC;IAC3B;IAEA,OAAOF,OAAO;EAChB;EAEAG,kBAAkBA,CAAC3P,GAAQ,EAAE/F,OAAiB,EAAK;IACjD,IAAMiG,IAAI,GAAG,IAAIpF,GAAG,CAAuB,CAAC;IAC5C,KAAK,IAAIsU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnV,OAAO,CAACU,MAAM,EAAEyU,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAM/V,QAAM,GAAGY,OAAO,CAACmV,CAAC,CAAC;MAEzB,IAAMQ,KAAK,GAAG,IAAI,CAACnU,oBAAoB,CAACpC,QAAM,CAACiC,IAAI,CAAC;MACpDtD,aAAa,CAAC4X,KAAK,CAAC;MACpB1P,IAAI,CAAC5B,GAAG,CAACsR,KAAK,EAAE;QACdrW,KAAK,EAAEyG,GAAG,CAAChE,GAAG,CAAC3C,QAAM,CAAC;QACtB+N,MAAM,EAAEpH,GAAG,CAACsP,SAAS,CAACjW,QAAM;MAC9B,CAAC,CAAC;IACJ;IAEA,OAAO;MAAE6G;IAAK,CAAC;EACjB;EAEAyC,iBAAiBA,CAAA,EAAS;IACxBlK,GAAG,CAACoG,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAACkC,YAAY,CAAC;IAClD,IAAI,IAAI,CAACA,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAACa,KAAK,CAAC,CAAC;MACzB,IAAI,CAACb,YAAY,GAAG,IAAI;IAC1B;IAEA,IAAI,CAAC6B,WAAW,CAACf,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC/C,aAAa,CAAC+C,MAAM,CAAC,CAAC;EAC7B;EAEA,IAAIgO,MAAMA,CAAA,EAAsB;IAC9B,OAAO,IAAI,CAAC7W,KAAK,CAAC6W,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAACA,MAAyB,EAAE;IACpC,IAAI,CAAClN,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAAC3J,KAAK,CAAC8W,WAAW,CAACD,MAAM,CAAC;IAC9B,IAAI,CAAC/Q,aAAa,CAAC,CAAC;EACtB;EAEA,IAAIrE,SAASA,CAAA,EAAc;IACzB,OAAO,IAAI,CAACoG,aAAa;EAC3B;EAEA,IAAIpG,SAASA,CAACA,SAAoB,EAAE;IAClC,IAAI,CAACoG,aAAa,GAAGpG,SAAS;IAC9B,IAAI,CAACyG,mBAAmB,GAAG,EAAE;IAC7B,IAAI,CAAC2B,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACiN,iBAAiB,CAChE,CAAC;EACH;EAEAvJ,aAAaA,CACXjN,KAAc,EACd6F,UAAkB,EAGV;IAAA,IAFRC,UAAU,GAAA3E,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAzB,SAAA,GAAAyB,SAAA,MAAG,EAAE;IAAA,IACf4E,cAAyC,GAAA5E,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAzB,SAAA;IAEzC,OAAO,IAAI,CAAC+W,wBAAwB,CAClC,IAAI,CAACvV,SAAS,EACdlB,KAAK,EACL6F,UAAU,EACVC,UAAU,EACVC,cACF,CAAC;EACH;EAEA,IAAIrC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACjE,KAAK,CAACiE,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAACA,IAAY,EAAE;IACrB,IAAI,CAAC0F,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAAC3J,KAAK,CAACiX,SAAS,CAAChT,IAAI,CAAC;IAC1B,IAAI,CAAC6B,aAAa,CAAC,CAAC;EACtB;EAEA,IAAIoR,YAAYA,CAACA,YAAwC,EAAE;IACzDzX,GAAG,CAAC0X,KAAK,CAAC,kBAAkB,EAAED,YAAY,CAAC;IAE3C,IAAIA,YAAY,KAAK,IAAI,CAAC3O,MAAM,EAAE;MAChC;MACA;IACF;IAEA,IAAI,CAACA,MAAM,GAAG2O,YAAY;IAC1B,IAAI,CAAChP,mBAAmB,GAAG,EAAE;IAE7B,IAAI,IAAI,CAACI,kBAAkB,IAAI,IAAI,EAAE;MACnC,IAAI,CAACA,kBAAkB,CAACO,MAAM,CAAC,CAAC;IAClC;IAEA,IAAI,CAACuO,cAAc,CAAC,IAAI,CAAC;IAEzB,IAAIF,YAAY,IAAI,IAAI,EAAE;MACxB,IAAI,CAACrN,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;MACzE;IACF;IAEA,IAAI,CAAC9B,kBAAkB,GAAGvJ,YAAY,CAACsY,cAAc,CACnD,IAAI,CAACrX,KAAK,CAACqM,cAAc,CAAC6K,YAAY,CAAC,EACvClX,KAAK,IAAIA,KAAK,CAAC4I,KAAK,CAAC,CACvB,CAAC;IACD,IAAI,CAACN,kBAAkB,CACpBgP,IAAI,CAACjP,WAAW,IAAI;MACnB,IAAI,CAACC,kBAAkB,GAAG,IAAI;MAC9B,IAAI,CAAC8O,cAAc,CAAC/O,WAAW,CAAC;IAClC,CAAC,CAAC,CACDkP,KAAK,CAACC,GAAG,IAAI;MACZ,IAAIzY,YAAY,CAAC0Y,UAAU,CAACD,GAAG,CAAC,EAAE;QAChC;MACF;MAEA/X,GAAG,CAACkG,KAAK,CAAC,gCAAgC,EAAE6R,GAAG,CAAC;MAChD,IAAI,CAAClP,kBAAkB,GAAG,IAAI;MAE9B,IAAI,CAACuB,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACQ,cAAc,EAAE;QAC3DH,MAAM,EAAEqN;MACV,CAAC,CACH,CAAC;IACH,CAAC,CAAC;EACN;EAEAJ,cAAcA,CAAC/O,WAA+B,EAAQ;IACpD5I,GAAG,CAAC0X,KAAK,CAAC,gBAAgB,EAAE9O,WAAW,CAAC;IAExC,IAAI,IAAI,CAACA,WAAW,KAAK,IAAI,EAAE;MAC7B,IAAI,IAAI,CAACqP,aAAa,GAAG,CAAC,EAAE;QAC1B,IAAI,CAAChO,qBAAqB,CAAC,IAAI,CAACrB,WAAW,CAAC;MAC9C;MAEA,IAAI,CAACA,WAAW,CAACO,KAAK,CAAC,CAAC;IAC1B;IAEA,IAAI,CAACP,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACG,aAAa,GAAG,IAAI;IAEzB,IAAI,IAAI,CAACkP,aAAa,GAAG,CAAC,IAAI,IAAI,CAACrP,WAAW,IAAI,IAAI,EAAE;MACtD,IAAI,CAACkB,kBAAkB,CAAC,IAAI,CAAClB,WAAW,CAAC;IAC3C;EACF;;EAgCA;AACF;AACA;;EAmBEnC,qBAAqBA,CACnBH,WAAmB,EACnBC,cAAsB,EACtB/E,OAAiB,EACX;IACNxB,GAAG,CAACoG,MAAM,CAAC,uBAAuB,EAAEE,WAAW,EAAEC,cAAc,EAAE/E,OAAO,CAAC;IACzE,IAAI,IAAI,CAAC8G,YAAY,IAAI,IAAI,EAAE;MAC7BtI,GAAG,CAACoG,MAAM,CAAC,iDAAiD,CAAC;MAC7D,IAAI,CAACkC,YAAY,GAAG,IAAI,CAAC/H,KAAK,CAAC4J,WAAW,CACxC7D,WAAW,EACXC,cAAc,EACd/E,OACF,CAAC;IACH,CAAC,MAAM;MACLxB,GAAG,CAACoG,MAAM,CAAC,mDAAmD,CAAC;MAC/D,IAAI,CAACkC,YAAY,CAAC6B,WAAW,CAAC7D,WAAW,EAAEC,cAAc,EAAE/E,OAAO,CAAC;IACrE;EACF;EAEM0W,QAAQA,CACZC,MAAmB,EAIG;IAAA,IAAAC,UAAA,GAAAnW,SAAA;MAAAoW,MAAA;IAAA,OAAAC,iBAAA;MAAA,IAHtBC,cAAc,GAAAH,UAAA,CAAAlW,MAAA,QAAAkW,UAAA,QAAA5X,SAAA,GAAA4X,UAAA,MAAG,KAAK;MAAA,IACtBI,WAAwD,GAAAJ,UAAA,CAAAlW,MAAA,QAAAkW,UAAA,QAAA5X,SAAA,GAAA4X,UAAA,MAAGtX,KAAK,IAAIA,KAAK;MAAA,IACzE2X,iBAAiB,GAAAL,UAAA,CAAAlW,MAAA,QAAAkW,UAAA,QAAA5X,SAAA,GAAA4X,UAAA,MAAG,IAAI;MAExB,IAAIC,MAAI,CAAC/P,YAAY,IAAI,IAAI,EAAE;QAC7B,MAAM,IAAIpH,KAAK,CAAC,2BAA2B,CAAC;MAC9C;MAEA,IAAMwX,YAAY,GAAGD,iBAAiB,GAClCxZ,SAAS,CAAC0Z,WAAW,CAACR,MAAM,CAAC,GAC7BA,MAAM;MACV,IAAI,CAACtY,aAAa,CAAC+Y,qBAAqB,CAACF,YAAY,CAAC,EAAE;QACtD,MAAM,IAAIxX,KAAK,4BAAA+B,MAAA,CAA4BkV,MAAM,CAAE,CAAC;MACtD;;MAEA;MACA,IAAMU,kBAAkB,GAAG,IAAI9U,GAAG,CAAS,CAAC;MAC5C,IAAM+U,WAAwB,GAAG,EAAE;MACnC,IAAMC,qBAAqB,GAAG,IAAIhV,GAAG,CAAS,CAAC;MAC/C,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyT,YAAY,CAACxW,MAAM,EAAE+C,CAAC,IAAI,CAAC,EAAE;QAC/C,IAAM+T,KAAK,GAAGN,YAAY,CAACzT,CAAC,CAAC;QAC7B1F,aAAa,CAACyZ,KAAK,CAACC,MAAM,CAAC;QAC3B1Z,aAAa,CAACyZ,KAAK,CAACrY,QAAQ,CAAC;QAC7B;QACA,KACE,IAAIqW,CAAC,GAAGgC,KAAK,CAACrY,QAAQ,EACtBqW,CAAC,IAAIgC,KAAK,CAACC,MAAM,IAAIjC,CAAC,GAAGqB,MAAI,CAAC/L,mBAAmB,EACjD0K,CAAC,IAAI,CAAC,EACN;UACA6B,kBAAkB,CAACK,GAAG,CAAClC,CAAC,CAAC;QAC3B;;QAEA;QACA,IACEgC,KAAK,CAACC,MAAM,IAAIZ,MAAI,CAAC/L,mBAAmB,IACxC0M,KAAK,CAACrY,QAAQ,IAAI0X,MAAI,CAAC/L,mBAAmB,GAAG+L,MAAI,CAAC9X,KAAK,CAAC8D,IAAI,EAC5D;UACAyU,WAAW,CAAClR,IAAI,CACd,IAAI3I,SAAS,CACX+Z,KAAK,CAACG,WAAW,EACjBjS,IAAI,CAACkJ,GAAG,CAAClJ,IAAI,CAACH,GAAG,CAAC,CAAC,EAAEiS,KAAK,CAACrY,QAAQ,GAAG0X,MAAI,CAAC/L,mBAAmB,CAAC,CAAC,EAChE0M,KAAK,CAACI,SAAS,EACflS,IAAI,CAACkJ,GAAG,CACNlJ,IAAI,CAACH,GAAG,CAAC,CAAC,EAAEiS,KAAK,CAACC,MAAM,GAAGZ,MAAI,CAAC/L,mBAAmB,CAAC,EACpD+L,MAAI,CAAC9X,KAAK,CAAC8D,IAAI,GAAGgU,MAAI,CAAC/L,mBACzB,CACF,CACF,CAAC;QACH;QACA;QACA,KACE,IAAI0K,EAAC,GAAG9P,IAAI,CAACH,GAAG,CACdiS,KAAK,CAACrY,QAAQ,EACd0X,MAAI,CAAC/L,mBAAmB,GAAG+L,MAAI,CAAC9X,KAAK,CAAC8D,IACxC,CAAC,EACD2S,EAAC,IAAIgC,KAAK,CAACC,MAAM,IACjBjC,EAAC,GACCqB,MAAI,CAAC/L,mBAAmB,GACtB+L,MAAI,CAAC9X,KAAK,CAAC8D,IAAI,GACfgU,MAAI,CAACpM,sBAAsB,EAC/B+K,EAAC,IAAI,CAAC,EACN;UACA+B,qBAAqB,CAACG,GAAG,CAAClC,EAAC,CAAC;QAC9B;MACF;MAEA,IAAMxV,OAAO,GAAG3B,aAAa,CAACwZ,iBAAiB,CAACX,YAAY,EAAEL,MAAI,CAAC7W,OAAO,CAAC;MAC3E,IAAM8X,MAAM,GAAG,EAAE;MACjB,IAAIf,cAAc,EAAE;QAClBe,MAAM,CAAC1R,IAAI,CAACpG,OAAO,CAAC8F,GAAG,CAACqP,CAAC,IAAIA,CAAC,CAAC9T,IAAI,CAAC,CAAC;MACvC;MACA,IAAM0W,eAAe,GAAG,CAAC,GAAGV,kBAAkB,CAAC,CAACrU,IAAI,CAAC,CAAC;MAAC,IAAAgV,MAAA,aAAAA,OAAA,EACH;QAClD,IAAMjS,GAAG,GAAGgS,eAAe,CAACtU,EAAC,CAAC;QAC9B,IAAMyC,OAAO,GAAGlG,OAAO,CAAC8F,GAAG,CAAC1G,MAAM,IAAI;UACpC,IAAMuW,KAAK,GAAGkB,MAAI,CAACrV,oBAAoB,CAACpC,MAAM,CAACiC,IAAI,CAAC;UACpDtD,aAAa,CAAC4X,KAAK,CAAC;UACpB,OAAOqB,WAAW,CAACH,MAAI,CAAC7K,YAAY,CAAC2J,KAAK,EAAE5P,GAAG,CAAC,EAAE3G,MAAM,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI2X,cAAc,EAAE;UAClB7Q,OAAO,CAACE,IAAI,CAACyQ,MAAI,CAAC/F,gBAAgB,CAAC/K,GAAG,CAAC,CAAC;QAC1C;QACA+R,MAAM,CAAC1R,IAAI,CAACF,OAAO,CAAC;MACtB,CAAC;MAXD,KAAK,IAAIzC,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGsU,eAAe,CAACrX,MAAM,EAAE+C,EAAC,IAAI,CAAC;QAAA,OAAAuU,MAAA;MAAA;MAalD,IAAIV,WAAW,CAAC5W,MAAM,GAAG,CAAC,EAAE;QAC1B,IAAMuX,QAAQ,GAAGpB,MAAI,CAAChQ,aAAa,CAACqR,kBAAkB,CAACZ,WAAW,CAAC;QACnE,IAAMZ,QAAQ,SAASG,MAAI,CAAC/P,YAAY,CAAC4P,QAAQ,CAACuB,QAAQ,EAAEjY,OAAO,CAAC;QACpE8X,MAAM,CAAC1R,IAAI,CACT,GAAGsQ,QAAQ,CAACtD,IAAI,CAACtN,GAAG,CAACI,OAAO,IAC1BlG,OAAO,CAAC8F,GAAG,CAAC1G,MAAM,IAAI4X,WAAW,CAAC9Q,OAAO,CAACnE,GAAG,CAAC3C,MAAM,CAAC,EAAEA,MAAM,CAAC,CAChE,CACF,CAAC;MACH;MAEA,IAAM+Y,kBAAkB,GAAG,CAAC,GAAGZ,qBAAqB,CAAC,CAACvU,IAAI,CAAC,CAAC;MAAC,IAAAoV,MAAA,aAAAA,OAAA,EACN;QACrD,IAAMrS,GAAG,GAAGoS,kBAAkB,CAAC1U,GAAC,CAAC;QACjC,IAAMyC,OAAO,GAAGlG,OAAO,CAAC8F,GAAG,CAAC1G,MAAM,IAAI;UACpC,IAAMuW,KAAK,GAAGkB,MAAI,CAACrV,oBAAoB,CAACpC,MAAM,CAACiC,IAAI,CAAC;UACpDtD,aAAa,CAAC4X,KAAK,CAAC;UACpB,OAAOqB,WAAW,CAACH,MAAI,CAAC7K,YAAY,CAAC2J,KAAK,EAAE5P,GAAG,CAAC,EAAE3G,MAAM,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI2X,cAAc,EAAE;UAClB7Q,OAAO,CAACE,IAAI,CAACyQ,MAAI,CAAC/F,gBAAgB,CAAC/K,GAAG,CAAC,CAAC;QAC1C;QACA+R,MAAM,CAAC1R,IAAI,CAACF,OAAO,CAAC;MACtB,CAAC;MAXD,KAAK,IAAIzC,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG0U,kBAAkB,CAACzX,MAAM,EAAE+C,GAAC,IAAI,CAAC;QAAA,OAAA2U,MAAA;MAAA;MAarD,OAAON,MAAM;IAAC;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACQO,YAAYA,CAChB1B,MAAmB,EAOF;IAAA,IAAA2B,WAAA,GAAA7X,SAAA;MAAA8X,MAAA;IAAA,OAAAzB,iBAAA;MAAA,IANjBC,cAAc,GAAAuB,WAAA,CAAA5X,MAAA,QAAA4X,WAAA,QAAAtZ,SAAA,GAAAsZ,WAAA,MAAG,KAAK;MAAA,IACtBtB,WAIW,GAAAsB,WAAA,CAAA5X,MAAA,QAAA4X,WAAA,QAAAtZ,SAAA,GAAAsZ,WAAA,MAAGhZ,KAAK,OAAAmC,MAAA,CAAOnC,KAAK,CAAE;MAEjCd,GAAG,CAACoG,MAAM,CAAC,cAAc,EAAE+R,MAAM,EAAEI,cAAc,CAAC;MAElD,IAAM9Q,IAAI,SAASsS,MAAI,CAAC7B,QAAQ,CAC9BC,MAAM,EACNI,cAAc,EACdC,WAAW,EACX,KACF,CAAC;MACD,OAAO/Q,IAAI,CAACH,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACyS,IAAI,CAAC,IAAI,CAAC,CAAC,CAACA,IAAI,CAAC,IAAI,CAAC;IAAC;EACpD;EAEMC,WAAWA,CAACzY,OAA0B,EAAkB;IAAA,IAAA0Y,MAAA;IAAA,OAAA5B,iBAAA;MAC5D,IAAI/X,KAAK,GAAG,IAAI;MAChB,IAAI;QACFA,KAAK,SAAS2Z,MAAI,CAAC3Z,KAAK,CAAC4Z,IAAI,CAAC,CAAC;QAC/B5Z,KAAK,CAAC8W,WAAW,CAAC,EAAE,CAAC;QACrB9W,KAAK,CAACiX,SAAS,CAAC,EAAE,CAAC;QACnB,OAAOjX,KAAK,CAAC6Z,cAAc,CAACC,KAAK,CAACC,OAAO,CAAC9Y,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC,CAAC;MAC3E,CAAC,SAAS;QACR,IAAIjB,KAAK,IAAI,IAAI,EAAE;UACjBA,KAAK,CAAC4I,KAAK,CAAC,CAAC;QACf;MACF;IAAC;EACH;EA6DAoR,eAAeA,CAACxX,UAAsB,EAAE4B,KAAa,EAAW;IAC9D,IAAI5B,UAAU,GAAG,CAAC,IAAIA,UAAU,IAAI,IAAI,CAACiJ,WAAW,EAAE;MACpD,OAAO,KAAK;IACd;;IAEA;IACA,IAAIrH,KAAK,GAAG,CAAC,EAAE;MACb,OAAO,IAAI;IACb;IAEA,IAAMiC,UAAU,GAAG,IAAI,CAACpF,OAAO,CAACuB,UAAU,CAAC,CAACF,IAAI;IAChD,IACE,IAAI,CAACc,YAAY,CAACoN,QAAQ,CAACnK,UAAU,CAAC,IACtC,IAAI,CAAChD,WAAW,CAACmN,QAAQ,CAACnK,UAAU,CAAC,IACrC,IAAI,CAAC/C,aAAa,CAACkN,QAAQ,CAACnK,UAAU,CAAC,IACvC,CAACA,UAAU,EACX;MACA,OAAO,KAAK;IACd;IACA,OAAO,CAAC,IAAI,CAACsH,WAAW,CAACnL,UAAU,CAAC;EACtC;EAEAyX,gBAAgBA,CAACzX,UAAsB,EAAW;IAAA,IAAA0X,qBAAA;IAChD,QAAAA,qBAAA,GAAO,IAAI,CAACjZ,OAAO,CAACuB,UAAU,CAAC,CAAC2X,UAAU,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACpD;EAEAvM,WAAWA,CAACnB,CAAa,EAAW;IAAA,IAAA4N,sBAAA,EAAAC,iBAAA;IAClC,OAAO7N,CAAC,KAAA4N,sBAAA,IAAAC,iBAAA,GAAI,IAAI,CAACzY,UAAU,cAAAyY,iBAAA,uBAAfA,iBAAA,CAAiBpP,UAAU,CAACtJ,MAAM,cAAAyY,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC;EACtD;EAEAE,YAAYA,CAAA,EAAY;IACtB,OAAO,KAAK;EACd;EAEAC,eAAeA,CAAC9B,KAAgB,EAAW;IACzC;IACA,IAAI,IAAI,CAAC7W,UAAU,IAAI,IAAI,IAAI,CAAClD,SAAS,CAAC8b,SAAS,CAAC/B,KAAK,CAAC,EAAE;MAC1D,OAAO,KAAK;IACd;;IAEA;IACA;IACA;IACA;IACA,IAAMgC,cAAc,GAClB,IAAI,CAAClM,YAAY,CAACkK,KAAK,CAACrY,QAAQ,CAAC,IAAI,IAAI,CAACmO,YAAY,CAACkK,KAAK,CAACC,MAAM,CAAC;IACtE,IACE,EACE+B,cAAc,IACb,IAAI,CAAC7Y,UAAU,CAACqJ,UAAU,CAACtJ,MAAM,KAAK,CAAC,IACtC8W,KAAK,CAACG,WAAW,IAAI,IAAI,CAAChX,UAAU,CAACqJ,UAAU,CAACtJ,MAAM,IACtD8W,KAAK,CAACI,SAAS,IAAI,IAAI,CAACjX,UAAU,CAACqJ,UAAU,CAACtJ,MAAO,CACxD,EACD;MACA,OAAO,KAAK;IACd;;IAEA;IACA,IACE8W,KAAK,CAACrY,QAAQ,GAAG,IAAI,CAAC2L,mBAAmB,IACzC0M,KAAK,CAACrY,QAAQ,IACZ,IAAI,CAAC2L,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,IAAI,CAACwH,eAAe,IACnEmN,KAAK,CAACC,MAAM,IACV,IAAI,CAAC3M,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,IAAI,CAACwH,eAAe,EACnE;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEAoP,gBAAgBA,CAACjC,KAAgB,EAAW;IAC1C,OACE,IAAI,CAAC7W,UAAU,IAAI,IAAI,IACvB6W,KAAK,CAACrY,QAAQ,IAAI,IAAI,IACtBqY,KAAK,CAACC,MAAM,IAAI,IAAI,IACpBD,KAAK,CAACrY,QAAQ,IAAI,IAAI,CAAC2L,mBAAmB,IAC1C0M,KAAK,CAACrY,QAAQ,GACZ,IAAI,CAAC2L,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,IAAI,CAACwH,eAAe,IACnEmN,KAAK,CAACC,MAAM,GACV,IAAI,CAAC3M,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,IAAI,CAACwH,eAAe;EAEvE;EAEAqP,gBAAgBA,CAAC/C,MAAmB,EAAW;IAC7C,OAAOA,MAAM,CAACgD,KAAK,CAACnC,KAAK,IAAI,IAAI,CAAC8B,eAAe,CAAC9B,KAAK,CAAC,CAAC;EAC3D;EAEAoC,iBAAiBA,CAACjD,MAAmB,EAAW;IAC9C,OAAOA,MAAM,CAACgD,KAAK,CAACnC,KAAK,IAAI,IAAI,CAACiC,gBAAgB,CAACjC,KAAK,CAAC,CAAC;EAC5D;;EAEA;AACF;AACA;EACEqC,iBAAiBA,CAAA,EAAc;IAC7B,OAAO,IAAIpc,SAAS,CAClB,IAAI,EACJ,IAAI,CAACqN,mBAAmB,EACxB,IAAI,EACJ,IAAI,CAACA,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,CAC/C,CAAC;EACH;;EAEA;AACF;AACA;EACEiX,mBAAmBA,CAAA,EAAc;IAC/B,OAAO,IAAIrc,SAAS,CAClB,IAAI,EACJ,IAAI,CAACqN,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,EAC1C,IAAI,EACJ,IAAI,CAACiI,mBAAmB,GAAG,IAAI,CAAC/L,KAAK,CAAC8D,IAAI,GAAG,IAAI,CAAC4E,kBAAkB,GAAG,CACzE,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACQsS,eAAeA,CACnBxO,CAAa,EACbC,CAAa,EACbC,IAAY,EACG;IAAA,IAAAuO,MAAA;IAAA,OAAAlD,iBAAA;MACf;MACA,OAAOkD,MAAI,CAACC,iBAAiB,CAAC,CAAC,IAAIxc,SAAS,CAAC8N,CAAC,EAAEC,CAAC,EAAED,CAAC,EAAEC,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC;IAAC;EACnE;;EAEA;AACF;AACA;AACA;AACA;AACA;EACQwO,iBAAiBA,CAACtD,MAAmB,EAAElL,IAAY,EAAiB;IAAA,IAAAyO,MAAA;IAAA,OAAApD,iBAAA;MACxE,IAAI,CAACoD,MAAI,CAACR,gBAAgB,CAAC/C,MAAM,CAAC,EAAE;QAClC,MAAM,IAAIjX,KAAK,sBAAA+B,MAAA,CAAsBkV,MAAM,CAAE,CAAC;MAChD;MAEA,IAAI;QACF;QACA,IAAMwD,SAAS,GAAG,IAAI5X,GAAG,CAAS,CAAC;;QAEnC;QACA;QACA,IAAM6X,aAAgC,GAAG,EAAE;QAC3C3c,SAAS,CAAC4c,WAAW,CAAC1D,MAAM,EAAE,CAACpL,CAAC,EAAEC,CAAC,KAAK;UACtC,IAAMpM,MAAM,GAAG8a,MAAI,CAACla,OAAO,CAACuL,CAAC,CAAC;UAC9B4O,SAAS,CAACzC,GAAG,CAACtY,MAAM,CAAC;UACrB,IAAIgb,aAAa,CAAC7O,CAAC,CAAC,KAAKvM,SAAS,EAAE;YAClC,IAAMM,OAAK,GAAG4a,MAAI,CAACnT,UAAU,CAACuT,SAAS,CACrClb,MAAM,CAACgN,IAAI,EACXX,IAAI,EACJyO,MAAI,CAAC1Z,SAAS,CAAC+Z,QACjB,CAAC;YACDH,aAAa,CAAC7O,CAAC,CAAC,GACdjM,OAAK,IAAI,IAAI,GACT4a,MAAI,CAAC3N,aAAa,CAACjN,OAAK,EAAEF,MAAM,CAACgN,IAAI,EAAEhN,MAAM,CAACiC,IAAI,CAAC,GACnD,IAAI;UACZ;UACA6Y,MAAI,CAACxO,iBAAiB,CAACH,CAAC,EAAEC,CAAC,EAAE4O,aAAa,CAAC7O,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC;;QAEF;QACA,IAAMiP,gBAAgB,GAAGN,MAAI,CAACJ,mBAAmB,CAAC,CAAC;QACnD,IAAMW,aAAa,GAAG9D,MAAM,CACzB7Q,GAAG,CAAC0R,KAAK,IAAI/Z,SAAS,CAACid,YAAY,CAACF,gBAAgB,EAAEhD,KAAK,CAAC,CAAC,CAC7D5B,MAAM,CAAC4B,KAAK,IAAIA,KAAK,IAAI,IAAI,CAAC,CAC9B1R,GAAG,CAAC0R,KAAK,IAAI;UACZzZ,aAAa,CAACyZ,KAAK,CAAC;UACpB,OAAO/Z,SAAS,CAACyV,MAAM,CACrBsE,KAAK,EACL,CAAC,EACD,EAAE0C,MAAI,CAACpP,mBAAmB,GAAGoP,MAAI,CAACnb,KAAK,CAAC8D,IAAI,CAC9C,CAAC;QACH,CAAC,CAAC;QACJ,IAAI4X,aAAa,CAAC/Z,MAAM,GAAG,CAAC,EAAE;UAC5B,IAAMia,UAAU,GAAG,IAAI9Z,GAAG,CAACqZ,MAAI,CAAC1S,iBAAiB,CAAC;UAClD/J,SAAS,CAAC4c,WAAW,CAACI,aAAa,EAAE,CAACvQ,WAAW,EAAElE,QAAQ,KAAK;YAC9D,IAAI,CAAC2U,UAAU,CAACjY,GAAG,CAACsD,QAAQ,CAAC,EAAE;cAC7B2U,UAAU,CAACtW,GAAG,CAAC2B,QAAQ,EAAE;gBAAEC,IAAI,EAAE,IAAIpF,GAAG,CAAC;cAAE,CAAM,CAAC;YACpD;YACA,IAAMzB,MAAM,GAAG8a,MAAI,CAACla,OAAO,CAACkK,WAAW,CAAC;YACxC,IAAMnE,GAAG,GAAG4U,UAAU,CAAC5Y,GAAG,CAACiE,QAAQ,CAAC;YACpCjI,aAAa,CAACgI,GAAG,CAAC;YAClB,IAAM;cAAEE,IAAI,EAAEC;YAAQ,CAAC,GAAGH,GAAG;YAC7B,IAAM6U,UAAU,GAAG,IAAI/Z,GAAG,CAACqF,OAAO,CAAC;YACnC,IAAM5G,KAAK,GAAG4a,MAAI,CAACnT,UAAU,CAACuT,SAAS,CACrClb,MAAM,CAACgN,IAAI,EACXX,IAAI,EACJyO,MAAI,CAAC1Z,SAAS,CAAC+Z,QACjB,CAAC;YACD,IAAIjb,KAAK,IAAI,IAAI,EAAE;cACjBsb,UAAU,CAACvW,GAAG,CAAC6F,WAAW,EAAE;gBAAE5K;cAAM,CAAC,CAAC;YACxC,CAAC,MAAM;cACLsb,UAAU,CAACC,MAAM,CAAC3Q,WAAW,CAAC;YAChC;YACA,IAAI0Q,UAAU,CAAC/X,IAAI,GAAG,CAAC,EAAE;cACvB8X,UAAU,CAACtW,GAAG,CAAC2B,QAAQ,EAAA8U,aAAA,CAAAA,aAAA,KAAO/U,GAAG;gBAAEE,IAAI,EAAE2U;cAAU,EAAE,CAAC;YACxD,CAAC,MAAM;cACLD,UAAU,CAACE,MAAM,CAAC7U,QAAQ,CAAC;YAC7B;UACF,CAAC,CAAC;UACFkU,MAAI,CAACtU,cAAc,GAAG+U,UAAU;QAClC;QAEAT,MAAI,CAACtR,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;QAEzE,IAAM4R,cAAc,GAAGb,MAAI,CAACL,iBAAiB,CAAC,CAAC;QAC/C,IAAMvC,WAAW,GAAGX,MAAM,CACvB7Q,GAAG,CAAC0R,KAAK,IAAI/Z,SAAS,CAACid,YAAY,CAACK,cAAc,EAAEvD,KAAK,CAAC,CAAC,CAC3D5B,MAAM,CAAC4B,KAAK,IAAIA,KAAK,IAAI,IAAI,CAAC;QACjC,IAAIF,WAAW,CAAC5W,MAAM,GAAG,CAAC,EAAE;UAAA,IAAAsa,iBAAA;UAC1B;UACA,IAAM/U,IAAI,SAASiU,MAAI,CAACxD,QAAQ,CAC9BY,WAAW,CAACxR,GAAG,CACb0R,KAAK;YAAA,IAAAyD,eAAA,EAAAC,aAAA;YAAA,OACH,IAAIzd,SAAS,CACX,IAAI,GAAAwd,eAAA,GACJzD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAErY,QAAQ,cAAA8b,eAAA,cAAAA,eAAA,GAAI,IAAI,EACvB,IAAI,GAAAC,aAAA,GACJ1D,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,MAAM,cAAAyD,aAAA,cAAAA,aAAA,GAAI,IACnB,CAAC;UAAA,CACL,CACF,CAAC;UACD,IAAMC,OAAO,GAAGlV,IAAI,CAACH,GAAG,CAACC,GAAG,IAAI;YAC9B,IAAM0P,MAAmC,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+E,MAAI,CAACla,OAAO,CAACU,MAAM,EAAEyU,CAAC,IAAI,CAAC,EAAE;cAC/CM,MAAM,CAACyE,MAAI,CAACla,OAAO,CAACmV,CAAC,CAAC,CAAC9T,IAAI,CAAC,GAAG0E,GAAG,CAACoP,CAAC,CAAC;YACvC;YAEAgF,SAAS,CAAC1X,OAAO,CAACrD,MAAM,IAAI;cAC1BqW,MAAM,CAACrW,MAAM,CAACiC,IAAI,CAAC,GAAG6Y,MAAI,CAACnT,UAAU,CAACuT,SAAS,CAC7Clb,MAAM,CAACgN,IAAI,EACXX,IAAI,EACJyO,MAAI,CAAC1Z,SAAS,CAAC+Z,QACjB,CAAC;YACH,CAAC,CAAC;YACF,OAAO9E,MAAM;UACf,CAAC,CAAC;UAEF,IAAMqC,MAAM,UAAAkD,iBAAA,GAASd,MAAI,CAACvZ,UAAU,cAAAqa,iBAAA,uBAAfA,iBAAA,CAAiBI,OAAO,CAACD,OAAO,CAAC;UAEtD3c,GAAG,CAAC0X,KAAK,CACP,oBAAoB,EACpBS,MAAM,EACN,GAAG,EACHlL,IAAI,EACJ,mBAAmB,EACnB6L,WAAW,EACX,QAAQ,EACRQ,MACF,CAAC;QACH;;QAEA;QACA;QACA;QACAra,SAAS,CAAC4c,WAAW,CAAC1D,MAAM,EAAE,CAACpL,CAAC,EAAEC,CAAC,KAAK;UACtC,IAAM6P,QAAQ,GAAGjB,aAAa,CAAC7O,CAAC,CAAC;UACjCxN,aAAa,CAACsd,QAAQ,CAAC;UACvBnB,MAAI,CAAC5O,mBAAmB,CAACC,CAAC,EAAEC,CAAC,EAAE6P,QAAQ,CAAC;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC,OAAO9E,GAAG,EAAE;QACZ/X,GAAG,CAACkG,KAAK,CAAC,sBAAsB,EAAEiS,MAAM,EAAElL,IAAI,EAAE8K,GAAG,CAAC;MACtD,CAAC,SAAS;QACR9Y,SAAS,CAAC4c,WAAW,CAAC1D,MAAM,EAAE,CAACpL,CAAC,EAAEC,CAAC,KAAK;UACtC0O,MAAI,CAACvO,iBAAiB,CAACJ,CAAC,EAAEC,CAAC,CAAC;QAC9B,CAAC,CAAC;MACJ;IAAC;EACH;EAEM8P,SAASA,CAAA,EAA6C;IAAA,IAAAC,WAAA,GAAA9a,SAAA;MAAA+a,MAAA;IAAA,OAAA1E,iBAAA;MAAA,IAA5C2E,KAAsB,GAAAF,WAAA,CAAA7a,MAAA,QAAA6a,WAAA,QAAAvc,SAAA,GAAAuc,WAAA,MAAG,EAAE;MACzC/c,GAAG,CAAC0X,KAAK,CAAC,YAAY,EAAEuF,KAAK,EAAE,GAAG,CAAC;MACnC,IACE,CAACA,KAAK,CAAC9B,KAAK,CAAC+B,IAAI;QAAA,IAAAC,YAAA,EAAAC,SAAA;QAAA,OACfJ,MAAI,CAAClC,eAAe,CAClB7b,SAAS,CAACoe,QAAQ,EAAAF,YAAA,GAACD,IAAI,CAACtc,MAAM,cAAAuc,YAAA,cAAAA,YAAA,GAAID,IAAI,CAACnQ,CAAC,GAAAqQ,SAAA,GAAEF,IAAI,CAAC3V,GAAG,cAAA6V,SAAA,cAAAA,SAAA,GAAIF,IAAI,CAAClQ,CAAC,CAC9D,CAAC;MAAA,CACH,CAAC,EACD;QACA,MAAM,IAAI9L,KAAK,sBAAA+B,MAAA,CAAsBga,KAAK,CAAE,CAAC;MAC/C;MAEA,IAAI;QACF,IAAMd,UAAU,GAAG,IAAI9Z,GAAG,CAAC2a,MAAI,CAAChU,iBAAiB,CAAC;;QAElD;QACAiU,KAAK,CAAChZ,OAAO,CAACiZ,IAAI,IAAI;UAAA,IAAAI,aAAA,EAAAC,UAAA;UACpB,IAAM;YAAEtQ;UAAK,CAAC,GAAGiQ,IAAI;UACrB,IAAMnQ,CAAC,IAAAuQ,aAAA,GAAGJ,IAAI,CAACtc,MAAM,cAAA0c,aAAA,cAAAA,aAAA,GAAIJ,IAAI,CAACnQ,CAAC;UAC/B,IAAMC,CAAC,IAAAuQ,UAAA,GAAGL,IAAI,CAAC3V,GAAG,cAAAgW,UAAA,cAAAA,UAAA,GAAIL,IAAI,CAAClQ,CAAC;UAC5B,IAAMpM,MAAM,GAAGoc,MAAI,CAACxb,OAAO,CAACuL,CAAC,CAAC;UAC9B,IAAMjM,KAAK,GAAGkc,MAAI,CAACzU,UAAU,CAACuT,SAAS,CACrClb,MAAM,CAACgN,IAAI,EACXX,IAAI,EACJ+P,MAAI,CAAChb,SAAS,CAAC+Z,QACjB,CAAC;UACD,IAAMH,aAAa,GACjB9a,KAAK,IAAI,IAAI,GACTkc,MAAI,CAACjP,aAAa,CAACjN,KAAK,EAAEF,MAAM,CAACgN,IAAI,EAAEhN,MAAM,CAACiC,IAAI,CAAC,GACnD,IAAI;UACVma,MAAI,CAAC9P,iBAAiB,CAACH,CAAC,EAAEC,CAAC,EAAE4O,aAAa,CAAC;;UAE3C;UACA,IAAMzN,UAAU,GAAG6O,MAAI,CAAC7O,UAAU,CAACnB,CAAC,CAAC;UACrC,IAAImB,UAAU,IAAI,IAAI,EAAE;YACtB,IAAI,CAACgO,UAAU,CAACjY,GAAG,CAACiK,UAAU,CAAC,EAAE;cAC/BgO,UAAU,CAACtW,GAAG,CAACsI,UAAU,EAAE;gBAAE1G,IAAI,EAAE,IAAIpF,GAAG,CAAC;cAAE,CAAM,CAAC;YACtD;YAEA,IAAMkF,KAAG,GAAG4U,UAAU,CAAC5Y,GAAG,CAAC4K,UAAU,CAAC;YACtC5O,aAAa,CAACgI,KAAG,CAAC;YAClB,IAAM;cAAEE,IAAI,EAAEC;YAAQ,CAAC,GAAGH,KAAG;YAC7B,IAAM6U,UAAU,GAAG,IAAI/Z,GAAG,CAACqF,OAAO,CAAC;YACnC,IAAI5G,KAAK,IAAI,IAAI,EAAE;cACjBsb,UAAU,CAACvW,GAAG,CAACkH,CAAC,EAAE;gBAAEjM;cAAM,CAAC,CAAC;YAC9B,CAAC,MAAM;cACLsb,UAAU,CAACC,MAAM,CAACtP,CAAC,CAAC;YACtB;YACA,IAAIqP,UAAU,CAAC/X,IAAI,GAAG,CAAC,EAAE;cACvB8X,UAAU,CAACtW,GAAG,CAACsI,UAAU,EAAAmO,aAAA,CAAAA,aAAA,KAAO/U,KAAG;gBAAEE,IAAI,EAAE2U;cAAU,EAAE,CAAC;YAC1D,CAAC,MAAM;cACLD,UAAU,CAACE,MAAM,CAAClO,UAAU,CAAC;YAC/B;UACF;QACF,CAAC,CAAC;QAEF6O,MAAI,CAAC5V,cAAc,GAAG+U,UAAU;;QAEhC;QACAa,MAAI,CAAC5S,aAAa,CAAC,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACM,OAAO,CAAC,CAAC;;QAEzE;QACA,IAAM6S,UAAU,GAAGP,KAAK,CAACQ,MAAM,CAAC,CAACC,MAAM,EAAER,IAAI,KAAK;UAAA,IAAAS,UAAA,EAAAC,WAAA;UAChD,IAAM5Q,CAAC,IAAA2Q,UAAA,GAAGT,IAAI,CAAC3V,GAAG,cAAAoW,UAAA,cAAAA,UAAA,GAAIT,IAAI,CAAClQ,CAAC;UAC5B,IAAI,CAAC0Q,MAAM,CAACxZ,GAAG,CAAC8I,CAAC,CAAC,EAAE;YAClB0Q,MAAM,CAAC7X,GAAG,CAACmH,CAAC,EAAE,EAAE,CAAC;UACnB;UACA,CAAA4Q,WAAA,GAAAF,MAAM,CAACna,GAAG,CAACyJ,CAAC,CAAC,cAAA4Q,WAAA,uBAAbA,WAAA,CAAehW,IAAI,CAACsV,IAAI,CAAC;UACzB,OAAOQ,MAAM;QACf,CAAC,EAAE,IAAIrb,GAAG,CAA8B,CAAC,CAAC;QAE1C,IAAM8V,MAAM,GAAGlZ,SAAS,CAAC0Z,WAAW,CAClCsE,KAAK,CAAC3V,GAAG,CAAC4V,IAAI;UAAA,IAAAW,aAAA,EAAAC,UAAA;UAAA,OACZ7e,SAAS,CAACoe,QAAQ,EAAAQ,aAAA,GAACX,IAAI,CAACtc,MAAM,cAAAid,aAAA,cAAAA,aAAA,GAAIX,IAAI,CAACnQ,CAAC,GAAA+Q,UAAA,GAAEZ,IAAI,CAAC3V,GAAG,cAAAuW,UAAA,cAAAA,UAAA,GAAIZ,IAAI,CAAClQ,CAAC,CAAC;QAAA,CAC/D,CACF,CAAC;QACD,IAAMuP,cAAc,GAAGS,MAAI,CAAC3B,iBAAiB,CAAC,CAAC;QAC/C,IAAMvC,WAAW,GAAGX,MAAM,CACvB7Q,GAAG,CAAC0R,KAAK,IAAI/Z,SAAS,CAACid,YAAY,CAACK,cAAc,EAAEvD,KAAK,CAAC,CAAC,CAC3D5B,MAAM,CAAC4B,KAAK,IAAIA,KAAK,IAAI,IAAI,CAAC;QAEjC,IAAIF,WAAW,CAAC5W,MAAM,GAAG,CAAC,EAAE;UAAA,IAAA6b,iBAAA;UAC1B;UACA,IAAMtW,IAAI,SAASuV,MAAI,CAAC9E,QAAQ,CAC9BY,WAAW,CAACxR,GAAG,CAAC0R,KAAK,IAAI;YACvBzZ,aAAa,CAACyZ,KAAK,CAAC;YACpB,OAAO,IAAI/Z,SAAS,CAAC,IAAI,EAAE+Z,KAAK,CAACrY,QAAQ,EAAE,IAAI,EAAEqY,KAAK,CAACC,MAAM,CAAC;UAChE,CAAC,CACH,CAAC;UACD,IAAM0D,OAAO,GAAGlV,IAAI,CAACH,GAAG,CAAC,CAACC,GAAG,EAAEyW,SAAS,KAAK;YAC3C,IAAIxW,QAAQ,GAAG,IAAI;YACnB,IAAIwP,CAAC,GAAGgH,SAAS;YACjB,KAAK,IAAI/Y,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6T,WAAW,CAAC5W,MAAM,EAAE+C,CAAC,IAAI,CAAC,EAAE;cAC9C,IAAM+T,KAAK,GAAGF,WAAW,CAAC7T,CAAC,CAAC;cAC5B1F,aAAa,CAACyZ,KAAK,CAAC;cACpB,IAAMiF,aAAa,GAAGhf,SAAS,CAAC8L,QAAQ,CAAC,CAACiO,KAAK,CAAC,CAAC;cACjD,IAAIhC,CAAC,GAAGiH,aAAa,EAAE;gBACrB1e,aAAa,CAACyZ,KAAK,CAACrY,QAAQ,CAAC;gBAC7B6G,QAAQ,GAAGwR,KAAK,CAACrY,QAAQ,GAAGqW,CAAC;gBAC7B;cACF;cACAA,CAAC,IAAIiH,aAAa;YACpB;YAEA,IAAMhH,MAAmC,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqG,MAAI,CAACxb,OAAO,CAACU,MAAM,EAAEyU,CAAC,IAAI,CAAC,EAAE;cAC/CM,MAAM,CAAC+F,MAAI,CAACxb,OAAO,CAACmV,CAAC,CAAC,CAAC9T,IAAI,CAAC,GAAG0E,GAAG,CAACoP,CAAC,CAAC;YACvC;YACApX,aAAa,CAACiI,QAAQ,CAAC;YACvB,IAAM0W,QAAQ,GAAGV,UAAU,CAACja,GAAG,CAACiE,QAAQ,CAAC;YACzC,IAAI0W,QAAQ,IAAI,IAAI,EAAE;cACpBA,QAAQ,CAACja,OAAO,CAACiZ,IAAI,IAAI;gBAAA,IAAAiB,aAAA;gBACvB,IAAMvd,MAAM,GAAGoc,MAAI,CAACxb,OAAO,EAAA2c,aAAA,GAACjB,IAAI,CAACtc,MAAM,cAAAud,aAAA,cAAAA,aAAA,GAAIjB,IAAI,CAACnQ,CAAC,CAAC;gBAClDkK,MAAM,CAACrW,MAAM,CAACiC,IAAI,CAAC,GAAGma,MAAI,CAACzU,UAAU,CAACuT,SAAS,CAC7Clb,MAAM,CAACgN,IAAI,EACXsP,IAAI,CAACjQ,IAAI,EACT+P,MAAI,CAAChb,SAAS,CAAC+Z,QACjB,CAAC;cACH,CAAC,CAAC;YACJ;YACA,OAAO9E,MAAM;UACf,CAAC,CAAC;UAEFjX,GAAG,CAACoe,IAAI,CAAC,+BAA+B,EAAEtF,WAAW,CAAC;UAEtD,IAAMQ,MAAM,UAAAyE,iBAAA,GAASf,MAAI,CAAC7a,UAAU,cAAA4b,iBAAA,uBAAfA,iBAAA,CAAiBnB,OAAO,CAACD,OAAO,CAAC;UAEtD3c,GAAG,CAACoe,IAAI,CAAC,2BAA2B,EAAEtF,WAAW,EAAE,SAAS,EAAEQ,MAAM,CAAC;QACvE;;QAEA;QACA;QACA;QACA;QACA2D,KAAK,CAAChZ,OAAO,CAACiZ,IAAI,IAAI;UAAA,IAAAmB,aAAA,EAAAC,UAAA;UACpB,IAAM;YAAErR;UAAK,CAAC,GAAGiQ,IAAI;UACrB,IAAMnQ,CAAC,IAAAsR,aAAA,GAAGnB,IAAI,CAACtc,MAAM,cAAAyd,aAAA,cAAAA,aAAA,GAAInB,IAAI,CAACnQ,CAAC;UAC/B,IAAMC,CAAC,IAAAsR,UAAA,GAAGpB,IAAI,CAAC3V,GAAG,cAAA+W,UAAA,cAAAA,UAAA,GAAIpB,IAAI,CAAClQ,CAAC;UAC5B,IAAMpM,MAAM,GAAGoc,MAAI,CAACxb,OAAO,CAACuL,CAAC,CAAC;UAC9B,IAAMjM,KAAK,GAAGkc,MAAI,CAACzU,UAAU,CAACuT,SAAS,CACrClb,MAAM,CAACgN,IAAI,EACXX,IAAI,EACJ+P,MAAI,CAAChb,SAAS,CAAC+Z,QACjB,CAAC;UACD,IAAMH,aAAa,GACjB9a,KAAK,IAAI,IAAI,GACTkc,MAAI,CAACjP,aAAa,CAACjN,KAAK,EAAEF,MAAM,CAACgN,IAAI,EAAEhN,MAAM,CAACiC,IAAI,CAAC,GACnD,IAAI;UAEVma,MAAI,CAAClQ,mBAAmB,CAACC,CAAC,EAAEC,CAAC,EAAE4O,aAAa,CAAC;QAC/C,CAAC,CAAC;MACJ,CAAC,SAAS;QACRqB,KAAK,CAAChZ,OAAO,CAACiZ,IAAI,IAAI;UACpBF,MAAI,CAAC7P,iBAAiB,CAAC+P,IAAI,CAACtc,MAAM,EAAEsc,IAAI,CAAC3V,GAAG,CAAC;QAC/C,CAAC,CAAC;MACJ;IAAC;EACH;EAEMgX,aAAaA,CAAA,EAAkB;IAAA,IAAAC,MAAA;IAAA,OAAAlG,iBAAA;MACnC,IAAIkG,MAAI,CAACxV,iBAAiB,CAAC3E,IAAI,IAAI,CAAC,EAAE;QACpC,MAAM,IAAInD,KAAK,CAAC,8BAA8B,CAAC;MACjD;MAEA,IAAI;QAAA,IAAAud,iBAAA,EAAAC,qBAAA,EAAAC,eAAA;QACFH,MAAI,CAAC7V,gBAAgB,GAAG,IAAI;QAE5B,IAAMgU,OAAsC,GAAG,EAAE;QACjD6B,MAAI,CAACxV,iBAAiB,CAAC/E,OAAO,CAACsD,GAAG,IAAI;UACpC,IAAM0P,MAAmC,GAAG,CAAC,CAAC;UAC9C1P,GAAG,CAACE,IAAI,CAACxD,OAAO,CAAC,CAAA2a,KAAA,EAAYlT,WAAW,KAAK;YAAA,IAA3B;cAAE5K;YAAM,CAAC,GAAA8d,KAAA;YACzB,IAAMhe,MAAM,GAAG4d,MAAI,CAAChd,OAAO,CAACkK,WAAW,CAAC;YACxCuL,MAAM,CAACrW,MAAM,CAACiC,IAAI,CAAC,GAAG/B,KAAK;UAC7B,CAAC,CAAC;UACF6b,OAAO,CAAC/U,IAAI,CAACqP,MAAM,CAAC;QACtB,CAAC,CAAC;QACF,IAAMqC,MAAM,UAAAmF,iBAAA,GAASD,MAAI,CAACrc,UAAU,cAAAsc,iBAAA,uBAAfA,iBAAA,CAAiB7B,OAAO,CAACD,OAAO,CAAC;QAEtD3c,GAAG,CAAC0X,KAAK,CAAC,iBAAiB,EAAE8G,MAAI,CAACxV,iBAAiB,EAAE,QAAQ,EAAEsQ,MAAM,CAAC;QAEtEkF,MAAI,CAACxV,iBAAiB,GAAG,IAAI3G,GAAG,CAAC,CAAC;QAClCmc,MAAI,CAACvV,kBAAkB,GAAG/B,IAAI,CAACH,GAAG,CAChC,CAAC,EACD,EAAA2X,qBAAA,IAAAC,eAAA,GAACH,MAAI,CAACrY,QAAQ,cAAAwY,eAAA,uBAAbA,eAAA,CAAe1Y,MAAM,cAAAyY,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAIF,MAAI,CAACje,KAAK,CAAC8D,IAC5C,CAAC;QACDma,MAAI,CAAC/V,mBAAmB,GAAG,EAAE;QAE7B+V,MAAI,CAACpU,aAAa,CAChB,IAAI/K,oBAAoB,CAACM,aAAa,CAAC0K,KAAK,CAACuB,oBAAoB,CACnE,CAAC;MACH,CAAC,SAAS;QACR4S,MAAI,CAAC7V,gBAAgB,GAAG,KAAK;MAC/B;IAAC;EACH;EAEAkW,gBAAgBA,CAAC9R,CAAa,EAAEC,CAAa,EAA6B;IACxE,OAAO,IAAI,CAACI,gBAAgB,CAACL,CAAC,EAAEC,CAAC,CAAC;EACpC;EAEMqP,MAAMA,CAAClE,MAAmB,EAAiB;IAAA,OAAAG,iBAAA;MAC/C,MAAM,IAAIpX,KAAK,CAAC,wBAAwB,CAAC;IAAC;EAC5C;EAEA4d,cAAcA,CAAC/R,CAAa,EAAEC,CAAa,EAAElM,KAAa,EAAW;IACnE,IAAI;MACF,IAAMF,QAAM,GAAG,IAAI,CAACY,OAAO,CAACuL,CAAC,CAAC;MAC9B,IAAI,CAACxE,UAAU,CAACuT,SAAS,CAAClb,QAAM,CAACgN,IAAI,EAAE9M,KAAK,EAAE,IAAI,CAACkB,SAAS,CAAC+Z,QAAQ,CAAC;MACtE,OAAO,IAAI;IACb,CAAC,CAAC,OAAOgD,CAAC,EAAE;MACV,OAAO,KAAK;IACd;EACF;AACF;AAAC3c,eAAA,CAn+DK3B,0BAA0B,sBAIJ,CAAC;AAi+D7B,eAAeA,0BAA0B"}
|
|
1
|
+
{"version":3,"file":"IrisGridTableModelTemplate.js","names":["memoize","throttle","GridRange","GridUtils","memoizeClear","Log","EventShimCustomEvent","PromiseUtils","assertNotNull","TableUtils","Formatter","FormatterUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","isColumnHeaderGroup","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","EMPTY_ARRAY","isIrisGridTableModelTemplate","model","table","undefined","IrisGridTableModelTemplate","seekRow","startRow","column","valueType","value","insensitive","contains","isBackwards","Error","export","columnStatistics","customColumns","formatColumns","updateFrozenColumns","columns","rollupConfig","selectDistinctColumns","names","constructor","dh","_this$layoutHints$col","_this$layoutHints","formatter","arguments","length","inputTable","_defineProperty","Map","layoutHints","_layoutHints$columnGr","movedColumns","groupMap","parseColumnHeaderGroups","columnGroups","moveColumn","name","toIndex","modelIndex","getColumnIndexByName","concat","visibleIndex","getVisibleIndex","moveItem","moveGroup","group","get","visibleRange","getVisibleRange","moveRange","frontColumns","backColumns","frozenColumns","usedColumns","Set","frontIndex","forEach","has","backIndex","columnMap","size","layoutHintColumnGroups","values","sort","a","b","depth","firstChildName","children","rightModelIndex","rightVisibleIndex","firstChildGroup","i","childName","childGroup","childColumn","isBeforeGroup","moveToIndex","childIndexes","_movedColumns","_layoutHints$columnGr2","groups","tableColumns","col","set","indices","_ref","top","bottom","error","viewport","debug2","applyViewport","viewportTop","viewportBottom","getCachedViewportRowRange","applyBufferedViewport","leading","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","viewHeight","Math","ROW_BUFFER_PAGES","pendingDataMap","keyColumnCount","map","row","rowIndex","data","rowData","_map$get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","irisFormatter","irisGridUtils","subscription","tableUtils","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","pendingNewRowCount","columnHeaderGroups","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","setViewport","dispatchEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","_this$totals$operatio","_this$totals","_this$totals$operatio2","operationOrder","pendingDataErrors","_this$inputTable$keyC","_this$inputTable","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","_this$totals$operatio3","_this$totals2","_this$totals2$operati","showOnTop","floatingTopRowCount","_this$totals$operatio4","_this$totals3","_this$totals3$operati","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","textValueForCell","_this$pendingStringDa","_this$formattedString","_this$totalsColumn","valueForCell","totalsColumn","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","_this$columns$x","isKeyColumn","pendingRow","isTextType","truncationCharForCell","isNumberType","truncateNumbersWithPound","colorForCell","theme","dataForCell","format","nullStringColor","color","isPendingRow","pendingTextColor","_this$totalsColumn2","isDateType","dateColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","errorTextColor","textColor","backgroundColorForCell","_this$formatForCell$b","_this$formatForCell","backgroundColor","textAlignForCell","dataBarOptionsForCell","_positiveColor","_negativeColor","_format$color","_markerColor","axis","direction","min","valuePlacement","marker","formatDataBar","positiveColor","negativeColor","markerColor","opacity","positiveBarColor","negativeBarColor","databarColor","includes","split","markerBarColor","toLowerCase","databarOptions","toUpperCase","columnMax","columnMin","markers","renderTypeForCell","textForColumnHeader","header","columnAtDepth","isNew","colorForColumnHeader","_column$color","getColumnHeaderGroup","getColumnHeaderParentGroup","_this$columnAtDepth$n","_this$columnAtDepth","columnHeaderParentMap","_this$columns$x2","currentDepth","textForRowFooter","totalsRow","initialMovedColumns","_this$layoutHints2","getMemoizedInitialMovedColumns","initialMovedRows","initialColumnHeaderGroups","_this$layoutHints3","getMemoizedInitialColumnHeaderGroups","getMemoizedColumnMap","columnHeaderMaxDepth","_this$_columnHeaderMa","_columnHeaderMaxDepth","columnHeaderGroupMap","_columnHeaderGroupMap","_columnHeaderGroups","newGroups","maxDepth","parentMap","groupedColumns","_this$totals$operatio5","_this$totals4","_this$totals4$operati","_this$totals$showOnTo","_this$totals5","_this$viewportData$of","_this$viewportData","_this$viewportData$ro","_this$viewportData2","_this$viewportData2$r","totalsRowCount","_this$totals6","_this$totalsDataMap$g","_this$totalsDataMap","operation","_this$pendingNewDataM","offset","viewportY","rows","_this$totals7","_this$totals$defaultO","_this$totals8","_this$totalsTable","defaultOperation","SUM","tableColumn","find","_this$totals9","_this$totals$operatio6","_this$totals10","_this$totals10$operat","_this$totals$showOnTo2","_this$totals11","isTotalsRow","_this$row","_this$dataForCell","_data$value","warn","extractViewportData","totalsData","_this$totals$defaultO2","_this$totals12","_this$totals13","_this","dataMap","operationMap","_loop","_operationMap$name$","_operationMap$name","c","findIndex","getFormat","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","index","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","applySort","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","listenerCount","snapshot","ranges","_arguments","_this2","_asyncToGenerator","includeHeaders","formatValue","consolidateRanges","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","endRow","add","startColumn","endColumn","columnsFromRanges","result","topFloatingRows","_loop2","rangeSet","rangeSetFromRanges","bottomFloatingRows","_loop3","textSnapshot","_arguments2","_this3","join","valuesTable","_this4","copy","selectDistinct","Array","isArray","isColumnMovable","isColumnSortable","_this$columns$modelIn","isSortable","_this$inputTable$keyC2","_this$inputTable2","isRowMovable","isEditableRange","isBounded","isPendingRange","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","_this5","setValueForRanges","_this6","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","_objectSpread","tableAreaRange","_this6$inputTable","_range$startRow","_range$endRow","newRows","addRows","cellText","setValues","_arguments3","_this7","edits","edit","_edit$column","_edit$row","makeCell","_edit$column2","_edit$row2","rowEditMap","reduce","rowMap","_edit$row3","_rowMap$get","_edit$column3","_edit$row4","_this7$inputTable","dataIndex","rangeRowCount","rowEdits","_edit$column4","info","_edit$column5","_edit$row5","commitPending","_this8","_this8$inputTable","_this8$viewport$botto","_this8$viewport","_ref2","editValueForCell","isValidForCell","e"],"sources":["../src/IrisGridTableModelTemplate.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport {\n CellRenderType,\n EditOperation,\n GridRange,\n GridUtils,\n memoizeClear,\n ModelIndex,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type {\n Column,\n ColumnStatistics,\n CustomColumn,\n dh as DhType,\n FilterCondition,\n Format,\n InputTable,\n LayoutHints,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableTemplate,\n TableViewportSubscription,\n TotalsTable,\n ValueTypeUnion,\n ViewportData,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport { TableUtils, Formatter, FormatterUtils } from '@deephaven/jsapi-utils';\nimport type {\n AxisOption,\n DataBarOptions,\n DirectionOption,\n Marker,\n ValuePlacementOption,\n} from '@deephaven/grid';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\nimport {\n ColumnName,\n UITotalsTableConfig,\n UIRow,\n PendingDataMap,\n CellData,\n UIViewportData,\n PendingDataErrorMap,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport ColumnHeaderGroup, { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\nconst EMPTY_ARRAY: unknown[] = [];\n\nexport function isIrisGridTableModelTemplate(\n model: IrisGridModel\n): model is IrisGridTableModelTemplate {\n return (model as IrisGridTableModelTemplate).table !== undefined;\n}\n\n/**\n * Template model for a grid\n */\n\nclass IrisGridTableModelTemplate<\n T extends TableTemplate<T> = Table,\n R extends UIRow = UIRow,\n> extends IrisGridModel {\n static ROW_BUFFER_PAGES = 1;\n\n seekRow(\n startRow: number,\n column: Column,\n valueType: ValueTypeUnion,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n export(): Promise<Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get customColumns(): ColumnName[] {\n return [];\n }\n\n set customColumns(customColumns: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n get formatColumns(): CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n throw new Error('Method not implemented.');\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n throw new Error('Method not implemented.');\n }\n\n get rollupConfig(): RollupConfig | null {\n throw new Error('Method not implemented.');\n }\n\n set rollupConfig(rollupConfig: RollupConfig | null) {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): ColumnName[] {\n throw new Error('Method not implemented.');\n }\n\n set selectDistinctColumns(names: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Returns an array of the columns in the model\n * The order of model columns should never change once established\n */\n get columns(): Column[] {\n return this.table.columns;\n }\n\n dh: DhType;\n\n irisGridUtils: IrisGridUtils;\n\n tableUtils: TableUtils;\n\n private irisFormatter: Formatter;\n\n inputTable: InputTable | null;\n\n private subscription: TableViewportSubscription | null;\n\n table: T;\n\n viewport: {\n top: VisibleIndex;\n bottom: VisibleIndex;\n columns: Column[];\n } | null;\n\n viewportData: UIViewportData<R> | null;\n\n formattedStringData: (string | null)[][];\n\n private pendingStringData: (string | null)[][];\n\n private isSaveInProgress: boolean;\n\n private totalsTable: TotalsTable | null;\n\n totalsTablePromise: CancelablePromise<TotalsTable> | null;\n\n totals: UITotalsTableConfig | null;\n\n private totalsDataMap: Map<string, R> | null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n private pendingNewDataMap: PendingDataMap<R>;\n\n private pendingNewRowCount = 0;\n\n private _columnHeaderGroupMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private columnHeaderParentMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private _columnHeaderMaxDepth: number | null = null;\n\n private _columnHeaderGroups: ColumnHeaderGroup[] = [];\n\n private _movedColumns: MoveOperation[] | null = null;\n\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n dh: DhType,\n table: T,\n formatter = new Formatter(dh),\n inputTable: InputTable | null = null\n ) {\n super(dh);\n\n this.handleTableDisconnect = this.handleTableDisconnect.bind(this);\n this.handleTableReconnect = this.handleTableReconnect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTotalsUpdate = this.handleTotalsUpdate.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n\n this.dh = dh;\n this.irisFormatter = formatter;\n this.irisGridUtils = new IrisGridUtils(dh);\n this.inputTable = inputTable;\n this.subscription = null;\n this.table = table;\n this.tableUtils = new TableUtils(dh);\n this.viewport = null;\n this.viewportData = null;\n this.formattedStringData = [];\n this.pendingStringData = [];\n this.isSaveInProgress = false;\n\n this.totalsTable = null;\n this.totalsTablePromise = null;\n this.totals = null;\n this.totalsDataMap = null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = 0;\n\n this.columnHeaderGroups = IrisGridUtils.parseColumnHeaderGroups(\n this,\n this.layoutHints?.columnGroups ?? []\n ).groups;\n }\n\n close(): void {\n this.table.close();\n if (this.totalsTable !== null) {\n this.totalsTable.close();\n }\n if (this.totalsTablePromise !== null) {\n this.totalsTablePromise.cancel();\n }\n }\n\n startListening(): void {\n super.startListening();\n\n const { dh } = this;\n\n this.table.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n this.table.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n\n this.applyViewport();\n }\n\n stopListening(): void {\n super.stopListening();\n\n const { dh } = this;\n\n this.table.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n this.table.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.closeSubscription();\n }\n\n addTotalsListeners(totalsTable: TotalsTable): void {\n const { dh } = this;\n totalsTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n\n // Totals table only has one row of data\n totalsTable.setViewport(0, 0);\n }\n\n removeTotalsListeners(totalsTable: TotalsTable): void {\n const { dh } = this;\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.DISCONNECT)\n );\n }\n\n handleTableReconnect(): void {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event: CustomEvent): void {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event: CustomEvent): void {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event: CustomEvent): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount(): number {\n return (\n this.table.size +\n this.pendingNewRowCount +\n (this.totals?.operationOrder?.length ?? 0)\n );\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap(): PendingDataMap<R> {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map: PendingDataMap<R>) {\n if (map === this.pendingNewDataMap) {\n return;\n }\n\n map.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(`Invalid rowIndex ${rowIndex}`);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(`Invalid columnIndex ${columnIndex}`);\n }\n });\n });\n\n this.pendingNewDataMap = map;\n\n this.pendingNewRowCount = Math.max(\n this.pendingNewRowCount,\n this.maxPendingDataRow\n );\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount(): number {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count: number) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow(): number {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount(): number {\n return this.columns.length;\n }\n\n get floatingBottomRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isChartBuilderAvailable(): boolean {\n return true;\n }\n\n get isTotalsAvailable(): boolean {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable(): boolean {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x: ModelIndex, y: ModelIndex): void {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x: ModelIndex, y: ModelIndex): string | null | undefined {\n // First check if there's any pending values we should read from\n if (this.pendingStringData[x]?.[y] !== undefined) {\n return this.pendingStringData[x][y];\n }\n\n // Use a separate cache from memoization just for the strings that are currently displayed\n if (this.formattedStringData[x]?.[y] === undefined) {\n const value = this.valueForCell(x, y);\n if (value === null) {\n return null;\n }\n if (value === undefined) {\n return undefined;\n }\n\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n this.formatter,\n column.name,\n column.type\n );\n let formatOverride;\n if (!hasCustomColumnFormat) {\n const formatForCell = this.formatForCell(x, y);\n if (formatForCell?.formatString != null) {\n formatOverride = formatForCell;\n }\n }\n const text = this.displayString(\n value,\n column.type,\n column.name,\n formatOverride\n );\n this.cacheFormattedValue(x, y, text);\n }\n\n return this.formattedStringData[x][y];\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null && this.pendingDataMap.has(pendingRow)) {\n // Asterisk to show a value is required for a key column on a row that has some data entered\n return '*';\n }\n }\n\n if (TableUtils.isTextType(this.columns[x]?.type)) {\n if (text === null) {\n return 'null';\n }\n\n if (text === '') {\n return 'empty';\n }\n }\n\n return text ?? '';\n }\n\n truncationCharForCell(x: ModelIndex): '#' | undefined {\n const column = this.columns[x];\n const { type } = column;\n if (\n TableUtils.isNumberType(type) &&\n this.formatter.truncateNumbersWithPound\n ) {\n return '#';\n }\n\n return undefined;\n }\n\n colorForCell(x: ModelIndex, y: ModelIndex, theme: IrisGridThemeType): string {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format, value } = data;\n if (value == null || value === '') {\n assertNotNull(theme.nullStringColor);\n return theme.nullStringColor;\n }\n if (format && format.color) {\n return format.color;\n }\n\n if (this.isPendingRow(y)) {\n // Data entered in a pending row\n assertNotNull(theme.pendingTextColor);\n return theme.pendingTextColor;\n }\n\n // Fallback to formatting based on the value/type of the cell\n if (value != null) {\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n if (TableUtils.isDateType(column.type) || column.name === 'Date') {\n assertNotNull(theme.dateColor);\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if ((value as number) > 0) {\n assertNotNull(theme.positiveNumberColor);\n return theme.positiveNumberColor;\n }\n if ((value as number) < 0) {\n assertNotNull(theme.negativeNumberColor);\n return theme.negativeNumberColor;\n }\n assertNotNull(theme.zeroNumberColor);\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n assertNotNull(theme.errorTextColor);\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x: ModelIndex, y: ModelIndex): string | null {\n return this.formatForCell(x, y)?.backgroundColor ?? null;\n }\n\n textAlignForCell(x: ModelIndex): CanvasTextAlign {\n const column = this.columns[x];\n const { type } = column;\n\n if (TableUtils.isNumberType(type)) {\n return 'right';\n }\n if (TableUtils.isDateType(type) || column.name === 'Date') {\n return 'center';\n }\n return 'left';\n }\n\n dataBarOptionsForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: IrisGridThemeType\n ): DataBarOptions {\n const format = this.formatForCell(column, row);\n assertNotNull(format);\n const { axis, direction, max, min, valuePlacement, value, marker } =\n format.formatDataBar;\n let { positiveColor, negativeColor, markerColor, opacity } =\n format.formatDataBar;\n\n positiveColor = positiveColor ?? theme.positiveBarColor;\n negativeColor = negativeColor ?? theme.negativeBarColor;\n let databarColor: string | string[] =\n format.color ?? (value >= 0 ? positiveColor : negativeColor);\n if (databarColor.includes(',')) {\n databarColor = databarColor.split(',');\n }\n markerColor = markerColor ?? theme.markerBarColor;\n\n opacity = valuePlacement.toLowerCase() === 'overlap' ? 0.5 : opacity;\n\n const databarOptions = {\n axis: axis.toLowerCase() as AxisOption,\n direction: direction.toUpperCase() as DirectionOption,\n columnMax: max,\n columnMin: min,\n opacity,\n color: databarColor,\n valuePlacement: valuePlacement.toLowerCase() as ValuePlacementOption,\n value,\n markers: [\n {\n value: marker,\n color: markerColor,\n },\n ] as Marker[],\n };\n\n return databarOptions;\n }\n\n renderTypeForCell(column: ModelIndex, row: ModelIndex): CellRenderType {\n const format = this.formatForCell(column, row);\n return format?.formatDataBar != null ? 'dataBar' : 'text';\n }\n\n textForColumnHeader(x: ModelIndex, depth = 0): string | undefined {\n const header = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(header)) {\n return header.isNew ? '' : header.name;\n }\n return header?.name;\n }\n\n colorForColumnHeader(x: ModelIndex, depth = 0): string | null {\n const column = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(column)) {\n return column.color ?? null;\n }\n return null;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n const group = this.columnAtDepth(modelIndex, depth);\n if (isColumnHeaderGroup(group)) {\n return group;\n }\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return this.columnHeaderParentMap.get(\n this.columnAtDepth(modelIndex, depth)?.name ?? ''\n );\n }\n\n columnAtDepth(\n x: ModelIndex,\n depth = 0\n ): ColumnHeaderGroup | Column | undefined {\n if (depth === 0) {\n return this.columns[x];\n }\n\n const columnName = this.columns[x]?.name;\n let group = this.columnHeaderParentMap.get(columnName);\n\n if (!group) {\n return undefined;\n }\n\n let currentDepth = group.depth;\n while (currentDepth < depth) {\n group = this.columnHeaderParentMap.get(group.name);\n if (!group) {\n return undefined;\n }\n currentDepth = group.depth;\n }\n\n if (group.depth === depth) {\n return group;\n }\n\n return undefined;\n }\n\n textForRowFooter(y: ModelIndex): string {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null && this.totals) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n private getMemoizedInitialMovedColumns = memoize(\n (layoutHints?: LayoutHints): readonly MoveOperation[] => {\n if (!layoutHints) {\n return [];\n }\n let movedColumns: MoveOperation[] = [];\n const { groupMap } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n );\n\n const moveColumn = (name: string, toIndex: VisibleIndex): void => {\n const modelIndex = this.getColumnIndexByName(name);\n if (modelIndex == null) {\n throw new Error(`Unknown layout hint column: ${name}`);\n }\n const visibleIndex = GridUtils.getVisibleIndex(\n modelIndex,\n movedColumns\n );\n movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);\n };\n\n const moveGroup = (name: string, toIndex: VisibleIndex): void => {\n const group = groupMap.get(name);\n if (group == null) {\n throw new Error(`Unknown layout hint group: ${name}`);\n }\n const visibleRange = group.getVisibleRange(movedColumns);\n movedColumns = GridUtils.moveRange(visibleRange, toIndex, movedColumns);\n };\n\n const {\n frontColumns = [],\n backColumns = [],\n frozenColumns = [],\n } = layoutHints;\n\n if (frontColumns.length || backColumns.length || frozenColumns.length) {\n const usedColumns = new Set();\n\n let frontIndex = 0;\n frozenColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n frontColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n\n let backIndex = this.columnMap.size - 1;\n backColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, backIndex);\n backIndex -= 1;\n });\n }\n\n const layoutHintColumnGroups = layoutHints?.columnGroups;\n if (layoutHintColumnGroups) {\n const columnGroups = [...groupMap.values()];\n columnGroups.sort((a, b) => a.depth - b.depth);\n\n columnGroups.forEach(group => {\n const firstChildName = group.children[0];\n const rightModelIndex = this.getColumnIndexByName(firstChildName);\n\n let rightVisibleIndex: number;\n\n if (rightModelIndex != null) {\n rightVisibleIndex = GridUtils.getVisibleIndex(\n rightModelIndex,\n movedColumns\n );\n } else {\n const firstChildGroup = groupMap.get(firstChildName);\n if (!firstChildGroup) {\n throw new Error(\n `Unknown column ${firstChildName} in group ${group.name}`\n );\n }\n\n const visibleRange = firstChildGroup.getVisibleRange(movedColumns);\n // Columns will be moved to start at the end of the first child group\n [, rightVisibleIndex] = visibleRange;\n }\n\n for (let i = 1; i < group.children.length; i += 1) {\n const childName = group.children[i];\n const childGroup = groupMap.get(childName);\n const childColumn = this.getColumnIndexByName(childName);\n\n if (childGroup) {\n // All columns in the group will be before or after the start index\n // Lower level groups are re-arranged first, so they will be contiguous\n const isBeforeGroup =\n childGroup.getVisibleRange(movedColumns)[0] < rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex - childGroup.childIndexes.length + 1\n : rightVisibleIndex + 1;\n\n moveGroup(childName, moveToIndex);\n rightVisibleIndex =\n moveToIndex + childGroup.childIndexes.length - 1;\n } else if (childColumn != null) {\n const isBeforeGroup =\n GridUtils.getVisibleIndex(childColumn, movedColumns) <\n rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex\n : rightVisibleIndex + 1;\n moveColumn(childName, moveToIndex);\n rightVisibleIndex = moveToIndex;\n }\n }\n });\n }\n\n this._movedColumns = movedColumns;\n return movedColumns;\n }\n );\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get initialMovedColumns(): readonly MoveOperation[] {\n return this.getMemoizedInitialMovedColumns(this.layoutHints ?? undefined);\n }\n\n /**\n * Not currently used by anything.\n */\n get initialMovedRows(): MoveOperation[] {\n return EMPTY_ARRAY as MoveOperation[];\n }\n\n getMemoizedInitialColumnHeaderGroups = memoize(\n (layoutHints?: LayoutHints) =>\n IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n ).groups\n );\n\n get initialColumnHeaderGroups(): ColumnHeaderGroup[] {\n return this.getMemoizedInitialColumnHeaderGroups(\n this.layoutHints ?? undefined\n );\n }\n\n getMemoizedColumnMap = memoize(\n (tableColumns: Column[]): Map<string, Column> => {\n const columnMap = new Map();\n tableColumns.forEach(col => columnMap.set(col.name, col));\n return columnMap;\n }\n );\n\n get columnMap(): Map<ColumnName, Column> {\n return this.getMemoizedColumnMap(this.table.columns);\n }\n\n get columnHeaderMaxDepth(): number {\n return this._columnHeaderMaxDepth ?? 1;\n }\n\n private set columnHeaderMaxDepth(depth: number) {\n this._columnHeaderMaxDepth = depth;\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n return this._columnHeaderGroupMap;\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n return this._columnHeaderGroups;\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n if (groups === this._columnHeaderGroups) {\n return;\n }\n\n const {\n groups: newGroups,\n maxDepth,\n parentMap,\n groupMap,\n } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n groups ?? this.initialColumnHeaderGroups\n );\n\n this._columnHeaderGroups = newGroups;\n this.columnHeaderMaxDepth = maxDepth;\n this.columnHeaderParentMap = parentMap;\n this._columnHeaderGroupMap = groupMap;\n }\n\n get groupedColumns(): Column[] {\n return [];\n }\n\n row(y: ModelIndex): R | null {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n const operation = this.totals?.operationOrder[totalsRow];\n assertNotNull(operation);\n return this.totalsDataMap?.get(operation) ?? null;\n }\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n return this.pendingNewDataMap.get(pendingRow) ?? null;\n }\n const offset = this.viewportData?.offset ?? 0;\n const viewportY = (showOnTop ? y - totalsRowCount : y) - offset;\n return this.viewportData?.rows?.[viewportY] ?? null;\n }\n\n /**\n * Retrieve the totals column if this is a totals row, or null otherwise\n * @param x Column index to get the totals column from\n * @param y Row index to get the totals column from\n */\n totalsColumn(x: ModelIndex, y: ModelIndex): Column | undefined | null {\n const totalsRow = this.totalsRow(y);\n if (totalsRow == null) return null;\n\n const operation = this.totals?.operationOrder[totalsRow];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const tableColumn = this.columns[x];\n\n // Find the matching totals table column for the operation\n // When there are multiple aggregations, the column name will be the original name of the column with the operation appended afterward\n // When the the operation is the default operation OR there is only one operation, then the totals column name is just the original column name\n return this.totalsTable?.columns.find(\n column =>\n column.name === `${tableColumn.name}__${operation}` ||\n ((operation === defaultOperation ||\n this.totals?.operationOrder.length === 1) &&\n column.name === tableColumn.name)\n );\n }\n\n /**\n * Translate from the row in the model to a row in the totals table.\n * If the row is not a totals row, return null\n * @param y The row in the model to get the totals row for\n * @returns The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y: ModelIndex): ModelIndex | null {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = showOnTop ? y : y - this.table.size;\n if (totalsRow >= 0 && totalsRow < totalsRowCount) {\n return totalsRow;\n }\n return null;\n }\n\n /**\n * Translate from the row in the model to a pending input row.\n * If the row is not a pending input row, return null\n * @param y The row in the model to get the pending row for\n * @returns The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y: ModelIndex): ModelIndex | null {\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n if (pendingRow >= 0 && pendingRow < this.pendingNewRowCount) {\n return pendingRow;\n }\n\n return null;\n }\n\n /**\n * Check if a row is a totals table row\n * @param y The row in the model to check if it's a totals table row\n * @returns True if the row is a totals row, false if not\n */\n isTotalsRow(y: ModelIndex): boolean {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param y The row in the model to check if it's a pending new row\n * @returns True if the row is a pending new row, false if not\n */\n isPendingRow(y: ModelIndex): boolean {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x: ModelIndex, y: ModelIndex): CellData | undefined {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x: ModelIndex, y: ModelIndex): Format | undefined {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x: ModelIndex, y: ModelIndex): unknown {\n const data = this.dataForCell(x, y);\n\n /* JS API current sets null values as undefined in some instances. This means \n we need to nullish coaelesce so all undefined values from the API return null \n since the data has been fetched. undefined is used to indicate the API has not \n fetched data yet */\n if (data) {\n return data.value ?? null;\n }\n return undefined;\n }\n\n copyViewportData(data: ViewportData): void {\n if (data == null) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData: ViewportData): void {\n if (totalsData == null) {\n log.warn('invalid data!');\n return;\n }\n\n const { columns, rows } = totalsData;\n if (rows.length !== 1) {\n log.error(\n 'Unexpected number of rows received for totals table, ignoring update'\n );\n return;\n }\n\n const dataMap = new Map();\n const row = rows[0];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const operationMap = this.totals?.operationMap;\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const [name, operation = operationMap?.[name]?.[0] ?? defaultOperation] =\n column.name.split('__');\n if (!dataMap.has(operation)) {\n dataMap.set(operation, { data: new Map() });\n }\n const { data: rowData } = dataMap.get(operation);\n const columnIndex = this.columns.findIndex(col => col.name === name);\n rowData.set(columnIndex, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n log.debug2('copyTotalsData', dataMap);\n\n this.totalsDataMap = dataMap;\n this.formattedStringData = [];\n }\n\n /**\n * Use this as the canonical column index since things like layoutHints could have\n * changed the column order.\n */\n getColumnIndexByName(name: ColumnName): number | undefined {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(\n (columns: Column[]): Map<ColumnName, ModelIndex> => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n }\n );\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param data The data to copy from\n */\n extractViewportData(data: ViewportData): UIViewportData<R> {\n const newData: UIViewportData<R> = {\n offset: data.offset,\n rows: [],\n };\n\n const { columns } = data;\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const newRow = this.extractViewportRow(row, columns);\n newData.rows.push(newRow);\n }\n\n return newData;\n }\n\n extractViewportRow(row: Row, columns: Column[]): R {\n const data = new Map<ModelIndex, CellData>();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n data.set(index, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data } as R;\n }\n\n closeSubscription(): void {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n }\n\n this.setViewport.cancel();\n this.applyViewport.cancel();\n }\n\n get filter(): FilterCondition[] {\n return this.table.filter;\n }\n\n set filter(filter: FilterCondition[]) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter(): Formatter {\n return this.irisFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED)\n );\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName = '',\n formatOverride?: { formatString: string }\n ): string {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort(): Sort[] {\n return this.table.sort;\n }\n\n set sort(sort: Sort[]) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n setTotalsTable(totalsTable: TotalsTable | null): void {\n log.debug('setTotalsTable', totalsTable);\n\n if (this.totalsTable !== null) {\n if (this.listenerCount > 0) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.totalsTable.close();\n }\n\n this.totalsTable = totalsTable;\n this.totalsDataMap = null;\n\n if (this.listenerCount > 0 && this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n }\n\n setViewport = throttle(\n (top: VisibleIndex, bottom: VisibleIndex, columns: Column[]) => {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n const { viewport } = this;\n if (\n viewport != null &&\n viewport.top === top &&\n viewport.bottom === bottom &&\n viewport.columns === columns\n ) {\n log.debug2('Ignoring duplicate viewport', viewport);\n return;\n }\n\n this.viewport = {\n top,\n bottom,\n columns,\n };\n log.debug2('setViewport', this.viewport);\n\n this.applyViewport();\n },\n SET_VIEWPORT_THROTTLE\n );\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport = throttle(\n (): void => {\n if (!this.viewport) {\n return;\n }\n\n log.debug2('applyViewport', this.viewport);\n const { top, bottom, columns } = this.viewport;\n const [viewportTop, viewportBottom] = this.getCachedViewportRowRange(\n top,\n bottom\n );\n this.applyBufferedViewport(viewportTop, viewportBottom, columns);\n },\n APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription = this.table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (value: unknown, column: Column) => unknown = value => value,\n consolidateRanges = true\n ): Promise<unknown[][]> {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = consolidateRanges\n ? GridRange.consolidate(ranges)\n : ranges;\n if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {\n throw new Error(`Invalid snapshot ranges ${ranges}`);\n }\n\n // Need to separate out the floating ranges as they're from a different source\n const topFloatingRowsSet = new Set<number>();\n const tableRanges: GridRange[] = [];\n const bottomFloatingRowsSet = new Set<number>();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n assertNotNull(range.endRow);\n assertNotNull(range.startRow);\n // Get the rows that are in the top aggregations section\n for (\n let r = range.startRow;\n r <= range.endRow && r < this.floatingTopRowCount;\n r += 1\n ) {\n topFloatingRowsSet.add(r);\n }\n\n // Separate out the range that is part of the actual table (ie. not the floating ranges, not aggregations)\n if (\n range.endRow >= this.floatingTopRowCount &&\n range.startRow <= this.floatingTopRowCount + this.table.size\n ) {\n tableRanges.push(\n new GridRange(\n range.startColumn,\n Math.min(Math.max(0, range.startRow - this.floatingTopRowCount)),\n range.endColumn,\n Math.min(\n Math.max(0, range.endRow - this.floatingTopRowCount),\n this.table.size - this.floatingTopRowCount\n )\n )\n );\n }\n // Get the rows that are in the bottom aggregations section\n for (\n let r = Math.max(\n range.startRow,\n this.floatingTopRowCount + this.table.size\n );\n r <= range.endRow &&\n r <\n this.floatingTopRowCount +\n this.table.size +\n this.floatingBottomRowCount;\n r += 1\n ) {\n bottomFloatingRowsSet.add(r);\n }\n }\n\n const columns = IrisGridUtils.columnsFromRanges(consolidated, this.columns);\n const result = [];\n if (includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n const topFloatingRows = [...topFloatingRowsSet].sort();\n for (let i = 0; i < topFloatingRows.length; i += 1) {\n const row = topFloatingRows[i];\n const rowData = columns.map(column => {\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\n });\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n if (tableRanges.length > 0) {\n const rangeSet = this.irisGridUtils.rangeSetFromRanges(tableRanges);\n const snapshot = await this.subscription.snapshot(rangeSet, columns);\n result.push(\n ...snapshot.rows.map(rowData =>\n columns.map(column => formatValue(rowData.get(column), column))\n )\n );\n }\n\n const bottomFloatingRows = [...bottomFloatingRowsSet].sort();\n for (let i = 0; i < bottomFloatingRows.length; i += 1) {\n const row = bottomFloatingRows[i];\n const rowData = columns.map(column => {\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\n });\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n return result;\n }\n\n /**\n * Get a text snapshot of the provided ranges\n * @param ranges The ranges to get the snapshot for\n * @param includeHeaders Whether to include the headers in the snapshot or not\n * @param formatValue Function for formatting the raw value into a string\n * @returns A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (\n value: unknown,\n column: Column,\n row?: Row\n ) => string = value => `${value}`\n ): Promise<string> {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(\n ranges,\n includeHeaders,\n formatValue,\n false\n );\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n async valuesTable(columns: Column | Column[]): Promise<Table> {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return table.selectDistinct(Array.isArray(columns) ? columns : [columns]);\n } finally {\n if (table != null) {\n table.close();\n }\n }\n }\n\n getCachedFormattedString = memoizeClear(\n (\n formatter: Formatter,\n value: unknown,\n columnType: string,\n columnName: ColumnName,\n formatOverride?: { formatString: string }\n ): string =>\n formatter.getFormattedString(\n value,\n columnType,\n columnName,\n formatOverride\n ),\n { max: 10000 }\n );\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n getCachedViewportRowRange = memoize(\n (top: number, bottom: number): [number, number] => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n }\n );\n\n getCachedPendingErrors = memoize(\n (\n pendingDataMap: PendingDataMap,\n columns: Column[],\n keyColumnCount: number\n ) => {\n const map = new Map<ModelIndex, MissingKeyError[]>();\n pendingDataMap.forEach((row, rowIndex) => {\n const { data: rowData } = row;\n for (let i = 0; i < keyColumnCount; i += 1) {\n if (!rowData.has(i)) {\n if (!map.has(rowIndex)) {\n map.set(rowIndex, []);\n }\n map\n .get(rowIndex)\n ?.push(new MissingKeyError(rowIndex, columns[i].name));\n }\n }\n });\n return map;\n }\n );\n\n isColumnMovable(modelIndex: ModelIndex, depth: number): boolean {\n if (modelIndex < 0 || modelIndex >= this.columnCount) {\n return false;\n }\n\n // All groups are movable\n if (depth > 0) {\n return true;\n }\n\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName) ||\n !columnName\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnSortable(modelIndex: ModelIndex): boolean {\n return this.columns[modelIndex].isSortable ?? true;\n }\n\n isKeyColumn(x: ModelIndex): boolean {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable(): boolean {\n return false;\n }\n\n isEditableRange(range: GridRange): boolean {\n // Make sure we have an input table and a valid range\n if (this.inputTable == null || !GridRange.isBounded(range)) {\n return false;\n }\n\n // Check that the edit is in the editable range\n // If an input table has keyed columns, the non-key columns are always editable\n // If an input table does not have key columns, it is append only and existing rows cannot be editable\n // Pending rows are always editable\n const isPendingRange =\n this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow);\n if (\n !(\n isPendingRange ||\n (this.inputTable.keyColumns.length !== 0 &&\n range.startColumn >= this.inputTable.keyColumns.length &&\n range.endColumn >= this.inputTable.keyColumns.length)\n )\n ) {\n return false;\n }\n\n // Editing the aggregations/totals which are floating above/below is not allowed\n if (\n range.startRow < this.floatingTopRowCount ||\n range.startRow >=\n this.floatingTopRowCount + this.table.size + this.pendingRowCount ||\n range.endRow >=\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n ) {\n return false;\n }\n\n return true;\n }\n\n isDeletableRange(range: GridRange): boolean {\n return (\n this.inputTable != null &&\n range.startRow != null &&\n range.endRow != null &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isEditableRanges(ranges: GridRange[]): boolean {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges: GridRange[]): boolean {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns A range corresponding to the underlying table\n */\n getTableAreaRange(): GridRange {\n return new GridRange(\n null,\n this.floatingTopRowCount,\n null,\n this.floatingTopRowCount + this.table.size - 1\n );\n }\n\n /**\n * @returns A range corresponding to the pending new rows\n */\n getPendingAreaRange(): GridRange {\n return new GridRange(\n null,\n this.floatingTopRowCount + this.table.size,\n null,\n this.floatingTopRowCount + this.table.size + this.pendingNewRowCount - 1\n );\n }\n\n /**\n * Set value in an editable table\n * @param x The column to set\n * @param y The row to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(\n x: ModelIndex,\n y: ModelIndex,\n text: string\n ): Promise<void> {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n return this.setValueForRanges([new GridRange(x, y, x, y)], text);\n }\n\n /**\n * Set value in an editable table\n * @param ranges The ranges to set\n * @param value The values to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges: GridRange[], text: string): Promise<void> {\n if (!this.isEditableRanges(ranges)) {\n throw new Error(`Uneditable ranges ${ranges}`);\n }\n\n try {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n const columnSet = new Set<Column>();\n\n // Formatted text for each column\n // Since there could be different formatting for each column, but the value will be the same across rows\n const formattedText: (string | null)[] = [];\n GridRange.forEachCell(ranges, (x, y) => {\n const column = this.columns[x];\n columnSet.add(column);\n if (formattedText[x] === undefined) {\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n formattedText[x] =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n }\n this.cachePendingValue(x, y, formattedText[x]);\n });\n\n // Take care of updates to the pending new area first, as they can be updated synchronously\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n GridRange.forEachCell(pendingRanges, (columnIndex, rowIndex) => {\n if (!newDataMap.has(rowIndex)) {\n newDataMap.set(rowIndex, { data: new Map() } as R);\n }\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n assertNotNull(row);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n if (value != null) {\n newRowData.set(columnIndex, { value });\n } else {\n newRowData.delete(columnIndex);\n }\n if (newRowData.size > 0) {\n newDataMap.set(rowIndex, { ...row, data: newRowData });\n } else {\n newDataMap.delete(rowIndex);\n }\n });\n this.pendingDataMap = newDataMap;\n }\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range =>\n new GridRange(\n null,\n range?.startRow ?? null,\n null,\n range?.endRow ?? null\n )\n )\n );\n const newRows = data.map(row => {\n const newRow: Record<ColumnName, unknown> = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n columnSet.forEach(column => {\n newRow[column.name] = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n });\n return newRow;\n });\n\n const result = await this.inputTable?.addRows(newRows);\n\n log.debug(\n 'setValueForRanges(',\n ranges,\n ',',\n text,\n ') set tableRanges',\n tableRanges,\n 'result',\n result\n );\n }\n\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n GridRange.forEachCell(ranges, (x, y) => {\n const cellText = formattedText[x];\n assertNotNull(cellText);\n this.cacheFormattedValue(x, y, cellText);\n });\n } catch (err) {\n log.error('Unable to set ranges', ranges, text, err);\n } finally {\n GridRange.forEachCell(ranges, (x, y) => {\n this.clearPendingValue(x, y);\n });\n }\n }\n\n async setValues(edits: EditOperation[] = []): Promise<void> {\n log.debug('setValues(', edits, ')');\n if (\n !edits.every(edit =>\n this.isEditableRange(\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n )\n ) {\n throw new Error(`Uneditable ranges ${edits}`);\n }\n\n try {\n const newDataMap = new Map(this.pendingNewDataMap);\n\n // Cache the display values\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cachePendingValue(x, y, formattedText);\n\n // Take care of updates to the pending new area as well, as that can be updated synchronously\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n if (!newDataMap.has(pendingRow)) {\n newDataMap.set(pendingRow, { data: new Map() } as R);\n }\n\n const row = newDataMap.get(pendingRow);\n assertNotNull(row);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n if (value != null) {\n newRowData.set(x, { value });\n } else {\n newRowData.delete(x);\n }\n if (newRowData.size > 0) {\n newDataMap.set(pendingRow, { ...row, data: newRowData });\n } else {\n newDataMap.delete(pendingRow);\n }\n }\n });\n\n this.pendingDataMap = newDataMap;\n\n // Send an update right after setting the pending map so the values are displayed immediately\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n\n // Need to group by row...\n const rowEditMap = edits.reduce((rowMap, edit) => {\n const y = edit.row ?? edit.y;\n if (!rowMap.has(y)) {\n rowMap.set(y, []);\n }\n rowMap.get(y)?.push(edit);\n return rowMap;\n }, new Map<ModelIndex, EditOperation[]>());\n\n const ranges = GridRange.consolidate(\n edits.map(edit =>\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n );\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(null, range.startRow, null, range.endRow);\n })\n );\n const newRows = data.map((row, dataIndex) => {\n let rowIndex = null;\n let r = dataIndex;\n for (let i = 0; i < tableRanges.length; i += 1) {\n const range = tableRanges[i];\n assertNotNull(range);\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n assertNotNull(range.startRow);\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow: Record<ColumnName, unknown> = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n assertNotNull(rowIndex);\n const rowEdits = rowEditMap.get(rowIndex);\n if (rowEdits != null) {\n rowEdits.forEach(edit => {\n const column = this.columns[edit.column ?? edit.x];\n newRow[column.name] = this.tableUtils.makeValue(\n column.type,\n edit.text,\n this.formatter.timeZone\n );\n });\n }\n return newRow;\n });\n\n log.info('setValues setting tableRanges', tableRanges);\n\n const result = await this.inputTable?.addRows(newRows);\n\n log.info('setValues set tableRanges', tableRanges, 'SUCCESS', result);\n }\n\n // We've sent the changes to the server, but have not yet got an update with those changes committed\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = this.tableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n\n this.cacheFormattedValue(x, y, formattedText);\n });\n } finally {\n edits.forEach(edit => {\n this.clearPendingValue(edit.column, edit.row);\n });\n }\n }\n\n async commitPending(): Promise<void> {\n if (this.pendingNewDataMap.size <= 0) {\n throw new Error('No pending changes to commit');\n }\n\n try {\n this.isSaveInProgress = true;\n\n const newRows: Record<ColumnName, unknown>[] = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow: Record<ColumnName, unknown> = {};\n row.data.forEach(({ value }, columnIndex) => {\n const column = this.columns[columnIndex];\n newRow[column.name] = value;\n });\n newRows.push(newRow);\n });\n const result = await this.inputTable?.addRows(newRows);\n\n log.debug('commitPending()', this.pendingNewDataMap, 'result', result);\n\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = Math.max(\n 0,\n (this.viewport?.bottom ?? 0) - this.table.size\n );\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x: ModelIndex, y: ModelIndex): string | null | undefined {\n return this.textValueForCell(x, y);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n throw new Error('Delete not implemented');\n }\n\n isValidForCell(x: ModelIndex, y: ModelIndex, value: string): boolean {\n try {\n const column = this.columns[x];\n this.tableUtils.makeValue(column.type, value, this.formatter.timeZone);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport default IrisGridTableModelTemplate;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridThemeProvider.d.ts","sourceRoot":"","sources":["../src/IrisGridThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,
|
|
1
|
+
{"version":3,"file":"IrisGridThemeProvider.d.ts","sourceRoot":"","sources":["../src/IrisGridThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAW,MAAM,OAAO,CAAC;AAC1D,OAAO,EAA8B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,4DACsB,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,GACT,EAAE,0BAA0B,GAAG,GAAG,CAAC,OAAO,CAU1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useTheme } from '@deephaven/components';
|
|
2
|
-
import { createContext,
|
|
2
|
+
import { createContext, useMemo } from 'react';
|
|
3
3
|
import { createDefaultIrisGridTheme } from "./IrisGridTheme.js";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
export var IrisGridThemeContext = /*#__PURE__*/createContext(null);
|
|
@@ -10,12 +10,7 @@ export function IrisGridThemeProvider(_ref) {
|
|
|
10
10
|
var {
|
|
11
11
|
activeThemes
|
|
12
12
|
} = useTheme();
|
|
13
|
-
var
|
|
14
|
-
useEffect(function refreshIrisGridTheme() {
|
|
15
|
-
if (activeThemes != null) {
|
|
16
|
-
setGridTheme(createDefaultIrisGridTheme());
|
|
17
|
-
}
|
|
18
|
-
}, [activeThemes]);
|
|
13
|
+
var gridTheme = useMemo(createDefaultIrisGridTheme, [activeThemes]);
|
|
19
14
|
return /*#__PURE__*/_jsx(IrisGridThemeContext.Provider, {
|
|
20
15
|
value: gridTheme,
|
|
21
16
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridThemeProvider.js","names":["useTheme","createContext","
|
|
1
|
+
{"version":3,"file":"IrisGridThemeProvider.js","names":["useTheme","createContext","useMemo","createDefaultIrisGridTheme","jsx","_jsx","IrisGridThemeContext","IrisGridThemeProvider","_ref","children","activeThemes","gridTheme","Provider","value"],"sources":["../src/IrisGridThemeProvider.tsx"],"sourcesContent":["import { useTheme } from '@deephaven/components';\nimport { createContext, ReactNode, useMemo } from 'react';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } from './IrisGridTheme';\n\nexport type IrisGridThemeContextValue = Partial<IrisGridThemeType>;\n\nexport const IrisGridThemeContext =\n createContext<IrisGridThemeContextValue | null>(null);\n\nexport interface IrisGridThemeProviderProps {\n children: ReactNode;\n}\n\nexport function IrisGridThemeProvider({\n children,\n}: IrisGridThemeProviderProps): JSX.Element {\n const { activeThemes } = useTheme();\n\n const gridTheme = useMemo(createDefaultIrisGridTheme, [activeThemes]);\n\n return (\n <IrisGridThemeContext.Provider value={gridTheme}>\n {children}\n </IrisGridThemeContext.Provider>\n );\n}\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,aAAa,EAAaC,OAAO,QAAQ,OAAO;AAAC,SACjDC,0BAA0B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAInC,OAAO,IAAMC,oBAAoB,gBAC/BL,aAAa,CAAmC,IAAI,CAAC;AAMvD,OAAO,SAASM,qBAAqBA,CAAAC,IAAA,EAEO;EAAA,IAFN;IACpCC;EAC0B,CAAC,GAAAD,IAAA;EAC3B,IAAM;IAAEE;EAAa,CAAC,GAAGV,QAAQ,CAAC,CAAC;EAEnC,IAAMW,SAAS,GAAGT,OAAO,CAACC,0BAA0B,EAAE,CAACO,YAAY,CAAC,CAAC;EAErE,oBACEL,IAAA,CAACC,oBAAoB,CAACM,QAAQ;IAACC,KAAK,EAAEF,SAAU;IAAAF,QAAA,EAC7CA;EAAQ,CACoB,CAAC;AAEpC"}
|
|
@@ -334,7 +334,7 @@ class CustomColumnBuilder extends Component {
|
|
|
334
334
|
onClick: this.handleSaveClick,
|
|
335
335
|
children: [isCustomColumnApplying && /*#__PURE__*/_jsxs("span", {
|
|
336
336
|
children: [/*#__PURE__*/_jsx(LoadingSpinner, {
|
|
337
|
-
className: "loading-spinner-vertical-align"
|
|
337
|
+
className: "mr-2 loading-spinner-vertical-align"
|
|
338
338
|
}), /*#__PURE__*/_jsx("span", {
|
|
339
339
|
className: "btn-normal-content",
|
|
340
340
|
children: "Applying"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomColumnBuilder.js","names":["React","Component","classNames","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","Button","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsWarning","vsPass","DbNameValidator","CustomColumnInput","IrisGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","_defineProperty","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","isSuccessShowing","container","successButtonTimer","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","_objectSpread","setTimeout","SUCCESS_SHOW_DURATION","event","customEvent","children","icon","className","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","_this$container","querySelectorAll","focus","_this$container2","_this$container2$quer","querySelector","_this$container3","nextFocusIndex","onSave","originalCustomColumns","forEach","concat","_ref","renderInputs","nameCount","Map","_ref2","_nameCount$get","set","get","_nameCount$get2","isDuplicate","inputIndex","onChange","onDeleteColumn","onTabInEditor","invalid","renderSaveButton","saveText","areNamesValid","every","_ref3","isValidColumnName","filteredNames","filter","_ref4","_ref5","areNamesUnique","Set","size","kind","disabled","onClick","render","onCancel","role","ref","onFocus","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder"],"sources":["../../src/sidebar/CustomColumnBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsWarning, vsPass } from '@deephaven/icons';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nexport type CustomColumnKey = 'eventKey' | 'name' | 'formula';\n\ntype Input = {\n eventKey: string;\n name: string;\n formula: string;\n};\nexport interface CustomColumnBuilderProps {\n model: IrisGridModel;\n customColumns: readonly string[];\n onSave: (columns: readonly string[]) => void;\n onCancel: () => void;\n}\n\ninterface CustomColumnBuilderState {\n inputs: readonly Input[];\n isCustomColumnApplying: boolean;\n errorMessage: ReactElement | null;\n hasRequestFailed: boolean;\n isSuccessShowing: boolean;\n}\nclass CustomColumnBuilder extends Component<\n CustomColumnBuilderProps,\n CustomColumnBuilderState\n> {\n static SUCCESS_SHOW_DURATION = 750;\n\n static makeCustomColumnInputEventKey(): string {\n return shortid.generate();\n }\n\n static createCustomColumnInput(): Input {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props: CustomColumnBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n isSuccessShowing: false,\n };\n this.container = null;\n this.successButtonTimer = null;\n }\n\n componentDidMount(): void {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n if (this.successButtonTimer) {\n clearTimeout(this.successButtonTimer);\n }\n }\n\n container: HTMLDivElement | null;\n\n successButtonTimer: ReturnType<typeof setTimeout> | null;\n\n getInput = memoize((inputs: readonly Input[], key: string) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs: readonly Input[], key: string) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage(): void {\n this.setState({ errorMessage: null });\n }\n\n startListening(): void {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening(): void {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns: readonly string[]): void {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick(): void {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey: string): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(\n eventKey: string,\n type: CustomColumnKey,\n value: string\n ): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput } as Input;\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated(): void {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState(\n { isCustomColumnApplying: false, isSuccessShowing: true },\n () => {\n this.successButtonTimer = setTimeout(\n () => this.setState({ isSuccessShowing: false }),\n CustomColumnBuilder.SUCCESS_SHOW_DURATION\n );\n }\n );\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {customEvent.detail.errorMessage}\n <br />\n Table configuration:{' '}\n {JSON.stringify(customEvent.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result: DropResult): void {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex: number, shiftKey: boolean): void {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n (\n this.container?.querySelectorAll('.btn-drag-handle')[\n focusEditorIndex\n ] as HTMLButtonElement\n ).focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n (\n this.container?.querySelector('.btn-add-column') as HTMLButtonElement\n )?.focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n (\n this.container?.querySelectorAll(`.custom-column-input`)[\n nextFocusIndex\n ] as HTMLInputElement\n ).focus();\n }\n }\n\n handleSaveClick(): void {\n const { onSave, customColumns: originalCustomColumns } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [] as string[];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({\n // If both are 0, then moving from no custom to no custom. The parent won't re-render to cancel the loading state\n isCustomColumnApplying:\n customColumns.length > 0 || originalCustomColumns.length > 0,\n });\n onSave(customColumns);\n }\n\n resetRequestFailed(): void {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs(): ReactElement[] {\n const { inputs, hasRequestFailed } = this.state;\n\n const nameCount = new Map();\n inputs.forEach(({ name }) =>\n nameCount.set(name, (nameCount.get(name) ?? 0) + 1)\n );\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n const isDuplicate = (nameCount.get(name) ?? 0) > 1;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n isDuplicate={isDuplicate}\n />\n );\n });\n }\n\n renderSaveButton(): ReactElement {\n const { inputs, isCustomColumnApplying, isSuccessShowing } = this.state;\n const saveText = inputs.length > 1 ? 'Save Columns' : 'Save Column';\n const areNamesValid = inputs.every(\n ({ name }) => name === '' || DbNameValidator.isValidColumnName(name)\n );\n const filteredNames = inputs\n .filter(({ name }) => name !== '')\n .map(({ name }) => name);\n const areNamesUnique = new Set(filteredNames).size === filteredNames.length;\n\n return (\n <Button\n kind={isSuccessShowing ? 'success' : 'primary'}\n className={classNames('btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n disabled={\n isSuccessShowing ||\n isCustomColumnApplying ||\n !areNamesValid ||\n !areNamesUnique\n }\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Applying</span>\n </span>\n )}\n {!isSuccessShowing && !isCustomColumnApplying && saveText}\n {isSuccessShowing && (\n <>\n <FontAwesomeIcon icon={vsPass} /> Success\n </>\n )}\n </Button>\n );\n }\n\n render(): JSX.Element {\n const { onCancel } = this.props;\n const { errorMessage } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n icon={dhNewCircleLargeFilled}\n >\n Add Another Column\n </Button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <Button kind=\"secondary\" className=\"mr-2\" onClick={onCancel}>\n Cancel\n </Button>\n {this.renderSaveButton()}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomColumnBuilder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CustomColumnBuilder.js","names":["React","Component","classNames","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","Button","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsWarning","vsPass","DbNameValidator","CustomColumnInput","IrisGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","_defineProperty","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","isSuccessShowing","container","successButtonTimer","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","_objectSpread","setTimeout","SUCCESS_SHOW_DURATION","event","customEvent","children","icon","className","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","_this$container","querySelectorAll","focus","_this$container2","_this$container2$quer","querySelector","_this$container3","nextFocusIndex","onSave","originalCustomColumns","forEach","concat","_ref","renderInputs","nameCount","Map","_ref2","_nameCount$get","set","get","_nameCount$get2","isDuplicate","inputIndex","onChange","onDeleteColumn","onTabInEditor","invalid","renderSaveButton","saveText","areNamesValid","every","_ref3","isValidColumnName","filteredNames","filter","_ref4","_ref5","areNamesUnique","Set","size","kind","disabled","onClick","render","onCancel","role","ref","onFocus","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder"],"sources":["../../src/sidebar/CustomColumnBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsWarning, vsPass } from '@deephaven/icons';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nexport type CustomColumnKey = 'eventKey' | 'name' | 'formula';\n\ntype Input = {\n eventKey: string;\n name: string;\n formula: string;\n};\nexport interface CustomColumnBuilderProps {\n model: IrisGridModel;\n customColumns: readonly string[];\n onSave: (columns: readonly string[]) => void;\n onCancel: () => void;\n}\n\ninterface CustomColumnBuilderState {\n inputs: readonly Input[];\n isCustomColumnApplying: boolean;\n errorMessage: ReactElement | null;\n hasRequestFailed: boolean;\n isSuccessShowing: boolean;\n}\nclass CustomColumnBuilder extends Component<\n CustomColumnBuilderProps,\n CustomColumnBuilderState\n> {\n static SUCCESS_SHOW_DURATION = 750;\n\n static makeCustomColumnInputEventKey(): string {\n return shortid.generate();\n }\n\n static createCustomColumnInput(): Input {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props: CustomColumnBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n isSuccessShowing: false,\n };\n this.container = null;\n this.successButtonTimer = null;\n }\n\n componentDidMount(): void {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n if (this.successButtonTimer) {\n clearTimeout(this.successButtonTimer);\n }\n }\n\n container: HTMLDivElement | null;\n\n successButtonTimer: ReturnType<typeof setTimeout> | null;\n\n getInput = memoize((inputs: readonly Input[], key: string) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs: readonly Input[], key: string) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage(): void {\n this.setState({ errorMessage: null });\n }\n\n startListening(): void {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening(): void {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns: readonly string[]): void {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick(): void {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey: string): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(\n eventKey: string,\n type: CustomColumnKey,\n value: string\n ): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput } as Input;\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated(): void {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState(\n { isCustomColumnApplying: false, isSuccessShowing: true },\n () => {\n this.successButtonTimer = setTimeout(\n () => this.setState({ isSuccessShowing: false }),\n CustomColumnBuilder.SUCCESS_SHOW_DURATION\n );\n }\n );\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {customEvent.detail.errorMessage}\n <br />\n Table configuration:{' '}\n {JSON.stringify(customEvent.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result: DropResult): void {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex: number, shiftKey: boolean): void {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n (\n this.container?.querySelectorAll('.btn-drag-handle')[\n focusEditorIndex\n ] as HTMLButtonElement\n ).focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n (\n this.container?.querySelector('.btn-add-column') as HTMLButtonElement\n )?.focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n (\n this.container?.querySelectorAll(`.custom-column-input`)[\n nextFocusIndex\n ] as HTMLInputElement\n ).focus();\n }\n }\n\n handleSaveClick(): void {\n const { onSave, customColumns: originalCustomColumns } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [] as string[];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({\n // If both are 0, then moving from no custom to no custom. The parent won't re-render to cancel the loading state\n isCustomColumnApplying:\n customColumns.length > 0 || originalCustomColumns.length > 0,\n });\n onSave(customColumns);\n }\n\n resetRequestFailed(): void {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs(): ReactElement[] {\n const { inputs, hasRequestFailed } = this.state;\n\n const nameCount = new Map();\n inputs.forEach(({ name }) =>\n nameCount.set(name, (nameCount.get(name) ?? 0) + 1)\n );\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n const isDuplicate = (nameCount.get(name) ?? 0) > 1;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n isDuplicate={isDuplicate}\n />\n );\n });\n }\n\n renderSaveButton(): ReactElement {\n const { inputs, isCustomColumnApplying, isSuccessShowing } = this.state;\n const saveText = inputs.length > 1 ? 'Save Columns' : 'Save Column';\n const areNamesValid = inputs.every(\n ({ name }) => name === '' || DbNameValidator.isValidColumnName(name)\n );\n const filteredNames = inputs\n .filter(({ name }) => name !== '')\n .map(({ name }) => name);\n const areNamesUnique = new Set(filteredNames).size === filteredNames.length;\n\n return (\n <Button\n kind={isSuccessShowing ? 'success' : 'primary'}\n className={classNames('btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n disabled={\n isSuccessShowing ||\n isCustomColumnApplying ||\n !areNamesValid ||\n !areNamesUnique\n }\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Applying</span>\n </span>\n )}\n {!isSuccessShowing && !isCustomColumnApplying && saveText}\n {isSuccessShowing && (\n <>\n <FontAwesomeIcon icon={vsPass} /> Success\n </>\n )}\n </Button>\n );\n }\n\n render(): JSX.Element {\n const { onCancel } = this.props;\n const { errorMessage } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n icon={dhNewCircleLargeFilled}\n >\n Add Another Column\n </Button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <Button kind=\"secondary\" className=\"mr-2\" onClick={onCancel}>\n Cancel\n </Button>\n {this.renderSaveButton()}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomColumnBuilder;\n"],"mappings":"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"}
|
|
@@ -408,7 +408,7 @@ class TableCsvExporter extends Component {
|
|
|
408
408
|
onClick: this.handleDownloadClick,
|
|
409
409
|
children: [isDownloading && /*#__PURE__*/_jsxs("span", {
|
|
410
410
|
children: [/*#__PURE__*/_jsx(LoadingSpinner, {
|
|
411
|
-
className: "loading-spinner-vertical-align"
|
|
411
|
+
className: "mr-2 loading-spinner-vertical-align"
|
|
412
412
|
}), /*#__PURE__*/_jsx("span", {
|
|
413
413
|
className: "btn-normal-content",
|
|
414
414
|
children: "Downloading"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","Select","GridRange","GridUtils","vsWarning","TimeUtils","shortid","Log","IrisGridUtils","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","TableCsvExporter","getDateString","dh","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","model","name","state","fileName","concat","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","_objectSpread","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","_this","_asyncToGenerator","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","children","icon","event","target","value","eventTargetValue","parseInt","_ref","_ref2","_ref3","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","className","onChange","disabled","toString","replace","role","onClick","type","placeholder","htmlFor","checked","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","style","width","kind","_defineProperty","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n Select,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport type {\n dh as DhType,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: readonly MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: readonly GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(dh: DhType): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged =\n this.handleDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowOptionChanged =\n this.handleCustomizedDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowsChanged =\n this.handleCustomizedDownloadRowsChanged.bind(this);\n this.handleIncludeColumnHeadersChanged =\n this.handleIncludeColumnHeadersChanged.bind(this);\n this.handleIncludeHiddenColumnsChanged =\n this.handleIncludeHiddenColumnsChanged.bind(this);\n this.handleUseUnformattedValuesChanged =\n this.handleUseUnformattedValuesChanged.bind(this);\n\n const { model, name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString(model.dh)}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: readonly GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const { model, isDownloading, onDownloadStart, onDownload, onCancel } =\n this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(eventTargetValue: string): void {\n this.setState({ customizedDownloadRowOption: eventTargetValue });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <Select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </Select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","Select","GridRange","GridUtils","vsWarning","TimeUtils","shortid","Log","IrisGridUtils","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","TableCsvExporter","getDateString","dh","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","model","name","state","fileName","concat","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","_objectSpread","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","_this","_asyncToGenerator","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","children","icon","event","target","value","eventTargetValue","parseInt","_ref","_ref2","_ref3","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","className","onChange","disabled","toString","replace","role","onClick","type","placeholder","htmlFor","checked","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","style","width","kind","_defineProperty","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n Select,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport type {\n dh as DhType,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: readonly MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: readonly GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(dh: DhType): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged =\n this.handleDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowOptionChanged =\n this.handleCustomizedDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowsChanged =\n this.handleCustomizedDownloadRowsChanged.bind(this);\n this.handleIncludeColumnHeadersChanged =\n this.handleIncludeColumnHeadersChanged.bind(this);\n this.handleIncludeHiddenColumnsChanged =\n this.handleIncludeHiddenColumnsChanged.bind(this);\n this.handleUseUnformattedValuesChanged =\n this.handleUseUnformattedValuesChanged.bind(this);\n\n const { model, name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString(model.dh)}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: readonly GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const { model, isDownloading, onDownloadStart, onDownload, onCancel } =\n this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(eventTargetValue: string): void {\n this.setState({ customizedDownloadRowOption: eventTargetValue });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <Select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </Select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@deephaven/components": "^0.
|
|
35
|
-
"@deephaven/console": "^0.
|
|
36
|
-
"@deephaven/filters": "^0.
|
|
37
|
-
"@deephaven/grid": "^0.
|
|
38
|
-
"@deephaven/icons": "^0.
|
|
39
|
-
"@deephaven/jsapi-types": "^0.
|
|
40
|
-
"@deephaven/jsapi-utils": "^0.
|
|
41
|
-
"@deephaven/log": "^0.
|
|
42
|
-
"@deephaven/react-hooks": "^0.
|
|
43
|
-
"@deephaven/storage": "^0.
|
|
44
|
-
"@deephaven/utils": "^0.
|
|
34
|
+
"@deephaven/components": "^0.57.0",
|
|
35
|
+
"@deephaven/console": "^0.57.0",
|
|
36
|
+
"@deephaven/filters": "^0.57.0",
|
|
37
|
+
"@deephaven/grid": "^0.57.0",
|
|
38
|
+
"@deephaven/icons": "^0.57.0",
|
|
39
|
+
"@deephaven/jsapi-types": "^0.57.0",
|
|
40
|
+
"@deephaven/jsapi-utils": "^0.57.0",
|
|
41
|
+
"@deephaven/log": "^0.57.0",
|
|
42
|
+
"@deephaven/react-hooks": "^0.57.0",
|
|
43
|
+
"@deephaven/storage": "^0.57.0",
|
|
44
|
+
"@deephaven/utils": "^0.57.0",
|
|
45
45
|
"@dnd-kit/core": "^6.0.5",
|
|
46
46
|
"@dnd-kit/sortable": "^7.0.0",
|
|
47
47
|
"@dnd-kit/utilities": "^3.2.0",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"react-dom": "^17.x"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^0.
|
|
68
|
-
"@deephaven/mocks": "^0.
|
|
67
|
+
"@deephaven/jsapi-shim": "^0.57.0",
|
|
68
|
+
"@deephaven/mocks": "^0.57.0"
|
|
69
69
|
},
|
|
70
70
|
"files": [
|
|
71
71
|
"dist"
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "c8a74a2f6e87110710e395115f0f68802b9f7c67"
|
|
80
80
|
}
|