@deephaven/iris-grid 0.104.1-beta.0 → 0.104.1-beta.11
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,IAAI,EACT,gBAAgB,EAChB,KAAK,SAAS,EAMd,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAEL,uBAAuB,EAEvB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAgB5C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD;;GAEG;AACH,cAAM,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,kBAAkB,SAAmC;IAE5D,MAAM,CAAC,YAAY,SAAmC;IAEtD,MAAM,CAAC,qBAAqB,SAAmC;IAE/D,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,UAAU,SAAoC;IAErD,MAAM,CAAC,YAAY,SAAoC;IAEvD,MAAM,CAAC,mBAAmB,SAAoC;IAE9D,MAAM,CAAC,qBAAqB;;;;MAIjB;IAEX;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,YAAY,EAAE,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,EACvD,eAAe,EAAE,MAAM,CAAC,eAAe,EACvC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAC5B,MAAM,CAAC,eAAe;IAUzB;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACvB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAC5B,MAAM;IAMT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;IAI7D,MAAM,CAAC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,SAAK,GACP,MAAM;IAOT,QAAQ,EAAE,QAAQ,CAAC;IAEnB,2BAA2B,EAAE,aAAa,CACxC,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CACvE,CAAC;gBAEU,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,MAAM;IAiBjD,oBAAoB,IAAI,IAAI;IAI5B,EAAE,EAAE,OAAO,MAAM,CAAC;IAElB,gBAAgB,CACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACnB,uBAAuB,EAAE;IAmL5B,cAAc,CACZ,WAAW,EAAE,UAAU,EACvB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,GACnB,aAAa,EAAE;
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -277,6 +277,9 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
277
277
|
row: sourceRow
|
|
278
278
|
} = sourceCell;
|
|
279
279
|
var value = model.valueForCell(sourceColumn, sourceRow);
|
|
280
|
+
var {
|
|
281
|
+
selectedRanges
|
|
282
|
+
} = irisGrid.state;
|
|
280
283
|
var column = columns[sourceColumn];
|
|
281
284
|
var actions = [];
|
|
282
285
|
var theme = irisGrid.getTheme();
|
|
@@ -357,32 +360,43 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
357
360
|
}
|
|
358
361
|
});
|
|
359
362
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
363
|
+
if (isEditableGridModel(model) && model.isEditable) {
|
|
364
|
+
// selectedRanges is updated by GridSelectionMouseHandler in the same cycle so can't access the updated value here
|
|
365
|
+
// so need to handle cases where a cell is right clicked without highlighting it first
|
|
366
|
+
var canPasteInOriginalRange = selectedRanges.every(range => model.isEditableRange(range));
|
|
367
|
+
|
|
368
|
+
// To account for how when a cell outside of a selection is right clicked, that selection gets cleared
|
|
369
|
+
var isCellInOriginalRange = GridRange.containsCell(selectedRanges, columnIndex, rowIndex);
|
|
370
|
+
var canPasteInCell = model.isEditableRange(GridRange.makeCell(columnIndex, rowIndex));
|
|
371
|
+
if ((canPasteInOriginalRange || !isCellInOriginalRange) && canPasteInCell) {
|
|
372
|
+
actions.push({
|
|
373
|
+
title: 'Paste',
|
|
374
|
+
group: IrisGridContextMenuHandler.GROUP_COPY,
|
|
375
|
+
order: 50,
|
|
376
|
+
action: function () {
|
|
377
|
+
var _action = _asyncToGenerator(function* () {
|
|
378
|
+
try {
|
|
379
|
+
var text = yield readFromClipboard();
|
|
380
|
+
var items = text.split('\n').map(row => row.split('\t'));
|
|
381
|
+
yield grid.pasteValue(items);
|
|
382
|
+
} catch (err) {
|
|
383
|
+
if (err instanceof ClipboardUnavailableError) {
|
|
384
|
+
irisGrid.handleOpenNoPastePermissionModal('For security reasons your browser does not allow access to your clipboard on click.');
|
|
385
|
+
} else if (err instanceof ClipboardPermissionsDeniedError) {
|
|
386
|
+
irisGrid.handleOpenNoPastePermissionModal('Requested clipboard permissions have not been granted, please grant them and try again.');
|
|
387
|
+
} else {
|
|
388
|
+
throw err;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
function action() {
|
|
393
|
+
return _action.apply(this, arguments);
|
|
377
394
|
}
|
|
378
|
-
|
|
395
|
+
return action;
|
|
396
|
+
}()
|
|
379
397
|
});
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
}
|
|
383
|
-
return action;
|
|
384
|
-
}()
|
|
385
|
-
});
|
|
398
|
+
}
|
|
399
|
+
}
|
|
386
400
|
actions.push({
|
|
387
401
|
title: 'View Cell Contents',
|
|
388
402
|
group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","GridRange","GridRenderer","isDeletableGridModel","isEditableGridModel","isExpandableGridModel","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","ClipboardPermissionsDeniedError","ClipboardUnavailableError","TextUtils","assertNotEmpty","assertNotNaN","assertNotNull","copyToClipboard","readFromClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","isPartitionedGridModel","jsxs","_jsxs","jsx","_jsx","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","MAX_MULTISELECT_ROWS","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","concat","getOperatorAsText","getRowOptionFormatted","command","cellValue","len","arguments","length","undefined","truncate","constructor","irisGrid","dh","_defineProperty","getNumberValueEqualsFilter","bind","getFilterValueForNumberOrChar","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelIndex","gridPoint","column","visibleIndex","model","props","columns","actions","metrics","reverse","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","name","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFreezable","getColumnHeaderParentGroup","hasExpandableRows","isColumnFrozen","isColumnSortable","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","disabled","unFreezeColumnByColumnName","freezeColumnByColumnName","order","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","GROUP_COPY","shortcutText","isMacPlatform","_model$textForColumnH","textForColumnHeader","catch","e","error","isDateType","type","GROUP_FORMAT","dateFormatActions","isNumberType","_this$numberFormatAct","numberFormatActions","getCellActions","modelColumn","grid","columnIndex","row","rowIndex","canCopy","modelRow","getModelRow","sourceCell","sourceForCell","sourceColumn","sourceRow","value","valueForCell","isRowExpandable","expandingColumn","cellText","textForCell","isRowExpanded","GROUP_EXPAND_COLLAPSE","setRowExpanded","isExpandAllAvailable","expandAll","collapseAll","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","_action","_asyncToGenerator","text","items","split","map","pasteValue","err","handleOpenNoPastePermissionModal","apply","GROUP_VIEW_CONTENTS","setState","showOverflowModal","overflowText","getValueForCell","isPartitionAwareSourceTable","selectPartitionKeyFromTable","getCellFilterActions","_this","getSelectedRanges","isFilterable","settings","selectedRanges","containsCell","rowCount","lastRow","pop","lastRowSize","_lastRow$endRow","startColumn","startRow","endColumn","endRow","snapshot","snapshotValues","Set","i","add","filterMenu","nullFilterActions","groups","high","has","emptyStringFilterActions","isBooleanType","booleanFilterActions","isCharType","numberFilterActions","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","dateFilterActions","stringFilterActions","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","eq","columnType","ofString","String","fromCharCode","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","columnHeaderHeight","gridY","columnHeaderMaxDepth","valueText","clearFilterRange","getClearFilterRange","removeColumnFilter","Array","from","keys","col","COPY","copyRanges","isEditable","isDeletable","GROUP_EDIT","isDeletableRanges","deleteRanges","gridWrapper","triggerMenu","clientX","clientY","_this2","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","_loop","description","format","isSelected","getColumnIndexByName","_this3","isDecimalType","isIntegerType","_loop2","_objectSpread","TYPE_CONTEXT_CUSTOM","quickFilter","filterValues","valueDescription","newQuickFilter","toFilterText","item","_TableUtils$escapeQui","escapeQuickTextFilter","menuElement","className","children","join","slice","setQuickFilter","reduce","prev","curr","low","notEq","isNull","not","contains","valueDesc","acc","NaN","maxValue","a","b","minValue","maxFilterValue","minFilterValue","maxValueText","minValueText","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","maxDateText","minDateText","maxPreviewText","minPreviewText","valueFilter","sortActions","ascending","checkColumnSort","descending","style","color","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n type IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n type ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n type ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n type EventHandlerResult,\n type Grid,\n GridMouseHandler,\n type GridPoint,\n GridRange,\n GridRenderer,\n isDeletableGridModel,\n isEditableGridModel,\n isExpandableGridModel,\n type ModelIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n type TableColumnFormat,\n type IntegerColumnFormat,\n type SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport {\n ClipboardPermissionsDeniedError,\n ClipboardUnavailableError,\n TextUtils,\n assertNotEmpty,\n assertNotNaN,\n assertNotNull,\n copyToClipboard,\n readFromClipboard,\n} from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport type IrisGrid from '../IrisGrid';\nimport { type QuickFilter } from '../CommonTypes';\nimport { isPartitionedGridModel } from '../PartitionedGridModel';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\nconst MAX_MULTISELECT_ROWS = 1000;\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_EXPAND_COLLAPSE = ContextActions.groups.high + 55;\n\n static GROUP_GOTO = ContextActions.groups.high + 60;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static GROUP_VIEW_CONTENTS = ContextActions.groups.high + 175;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: DhType.FilterCondition | null | undefined,\n newColumnFilter: DhType.FilterCondition,\n operator?: '&&' | '||' | null\n ): DhType.FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n static getRowOptionFormatted(\n command: string,\n cellValue: string,\n len = 30\n ): string {\n return `${command} \"${GridRenderer.truncate(\n cellValue,\n len - command.length - 3\n )}\"`;\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid, dh: typeof DhType) {\n super();\n\n this.getNumberValueEqualsFilter =\n this.getNumberValueEqualsFilter.bind(this);\n this.getFilterValueForNumberOrChar =\n this.getFilterValueForNumberOrChar.bind(this);\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.dh = dh;\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n dh: typeof DhType;\n\n getHeaderActions(\n modelIndex: ModelIndex,\n gridPoint: GridPoint\n ): ResolvableContextAction[] {\n const { irisGrid } = this;\n const { column: visibleIndex } = gridPoint;\n assertNotNull(visibleIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelIndex];\n\n const actions = [] as ContextAction[];\n\n const { metrics, reverse, quickFilters, advancedFilters, searchFilter } =\n irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, column.name);\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFreezable =\n model.getColumnHeaderParentGroup(modelIndex, 0) === undefined &&\n !(isExpandableGridModel(model) && model.hasExpandableRows);\n const isColumnFrozen = model.isColumnFrozen(modelIndex);\n const isColumnSortable = model.isColumnSortable(modelIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(visibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n disabled: !isColumnFreezable,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(visibleIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelIndex) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(visibleIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelIndex, columnSort),\n disabled: !isColumnSortable,\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (reverse && modelSort.length === 1) ||\n (columnSort && reverse && modelSort.length === 2) ||\n modelSort.length === 0 ||\n !isColumnSortable,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelIndex),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (reverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n visibleIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title: reverse ? 'Clear Reverse Table' : 'Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n this.irisGrid.reverse(!reverse);\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n shortcutText: ContextActionUtils.isMacPlatform() ? '⌥Click' : 'Alt+Click',\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelIndex) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: ModelIndex,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const sourceCell = model.sourceForCell(modelColumn, modelRow);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const value = model.valueForCell(sourceColumn, sourceRow);\n\n const column = columns[sourceColumn];\n\n const actions = [] as ContextAction[];\n\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n\n if (column == null || rowIndex == null) return actions;\n\n // Expand/Collapse options\n if (isExpandableGridModel(model) && model.isRowExpandable(sourceRow)) {\n // If there are grouped columns, then it is a rollup\n // The first column will be the \"group\" column with the value that should be expanded\n const expandingColumn = 0;\n const cellValue = model.valueForCell(expandingColumn, sourceRow);\n const cellText =\n cellValue == null\n ? 'null'\n : model.textForCell(expandingColumn, sourceRow);\n\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n model.isRowExpanded(sourceRow) ? 'Collapse' : 'Expand',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 10,\n action: () => {\n model.setRowExpanded(sourceRow, !model.isRowExpanded(sourceRow));\n },\n });\n\n if (model.isExpandAllAvailable === true) {\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n 'Expand All in',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 20,\n action: () => {\n model.setRowExpanded(sourceRow, true, true);\n },\n });\n }\n }\n\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n model.isExpandAllAvailable === true\n ) {\n actions.push({\n title: 'Expand Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 30,\n action: () => {\n model.expandAll();\n },\n });\n\n actions.push({\n title: 'Collapse Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 40,\n action: () => {\n model.collapseAll();\n },\n });\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () =>\n this.irisGrid.toggleGotoRow(`${rowIndex + 1}`, `${value}`, column.name),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n shortcutText: ContextActionUtils.isMacPlatform()\n ? '⌥Click'\n : 'Alt+Click',\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n actions.push({\n title: 'Paste',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 50,\n action: async () => {\n try {\n const text = await readFromClipboard();\n const items = text.split('\\n').map(row => row.split('\\t'));\n await grid.pasteValue(items);\n } catch (err) {\n if (err instanceof ClipboardUnavailableError) {\n irisGrid.handleOpenNoPastePermissionModal(\n 'For security reasons your browser does not allow access to your clipboard on click.'\n );\n } else if (err instanceof ClipboardPermissionsDeniedError) {\n irisGrid.handleOpenNoPastePermissionModal(\n 'Requested clipboard permissions have not been granted, please grant them and try again.'\n );\n } else {\n throw err;\n }\n }\n },\n });\n\n actions.push({\n title: 'View Cell Contents',\n group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,\n order: 10,\n action: () => {\n irisGrid.setState({\n showOverflowModal: true,\n overflowText: irisGrid.getValueForCell(\n columnIndex,\n rowIndex\n ) as string,\n });\n },\n });\n\n if (isPartitionedGridModel(model) && !model.isPartitionAwareSourceTable) {\n actions.push({\n title: 'View Constituent Table',\n group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,\n order: 40,\n action: () => {\n irisGrid.selectPartitionKeyFromTable(rowIndex);\n },\n });\n }\n\n return actions;\n }\n\n // moved out of getCellActions since snapshots are async\n async getCellFilterActions(\n modelColumn: ModelIndex,\n grid: Grid,\n gridPoint: GridPoint\n ): Promise<ContextAction[]> {\n const { dh, irisGrid } = this;\n const { row: rowIndex } = gridPoint;\n const { model } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { getSelectedRanges } = grid;\n assertNotNull(modelRow);\n const sourceCell = model.sourceForCell(modelColumn, modelRow);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const column = columns[sourceColumn];\n\n if (column == null || rowIndex == null) return [];\n if (!model.isFilterable(sourceColumn)) return [];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n let selectedRanges = [...getSelectedRanges()];\n // no selected range (i.e. right clicked a cell without highlighting it)\n // although GridSelectionMouseHandler does change selectedRanges, state isn't updated in\n // time for getSelectedRanges to show the selected cell\n if (selectedRanges.length === 0) {\n selectedRanges.push(\n new GridRange(sourceColumn, sourceRow, sourceColumn, sourceRow)\n );\n }\n\n // - this block truncates the selected ranges to MAX_MULTISELECT_ROWS rows\n // - NOT first MAX_MULTISELECT_ROWS rows after the first row\n // - NOT first MAX_MULTISELECT_ROWS unique values (prevent case where there are a small\n // amount of values, but a large amount of rows with those values)\n if (GridRange.containsCell(selectedRanges, sourceColumn, sourceRow)) {\n let rowCount = GridRange.rowCount(selectedRanges);\n while (rowCount > MAX_MULTISELECT_ROWS) {\n const lastRow = selectedRanges.pop();\n // should never occur, sanity check\n assertNotNull(lastRow, 'Selected ranges should not be empty');\n\n const lastRowSize = GridRange.rowCount([lastRow]);\n // should never occur, sanity check\n assertNotNaN(lastRowSize, 'Selected ranges should not be unbounded');\n\n // if removing the last rows makes it dip below the max, then need to\n // bring it back but truncated\n if (rowCount - lastRowSize < MAX_MULTISELECT_ROWS) {\n // nullish operator to make TS happy, but the check above should prevent this\n selectedRanges.push(\n new GridRange(\n lastRow.startColumn,\n lastRow.startRow,\n lastRow.endColumn,\n (lastRow.endRow ?? 0) - (rowCount - MAX_MULTISELECT_ROWS)\n )\n );\n break;\n }\n rowCount -= lastRowSize;\n }\n } else {\n // if the block is not in the selected ranges, meaning the user must've right-clicked\n // outside the selected ranges`\n selectedRanges = [\n new GridRange(sourceColumn, sourceRow, sourceColumn, sourceRow),\n ];\n }\n\n // this should be non empty\n // - valid selected ranges will always have a startRow and endRow\n // - if there are no selected ranges, then one with sourceColumn/Row is added\n assertNotEmpty(selectedRanges);\n\n // get the snapshot values, but ignore all null/undefined values\n const snapshot = await model.snapshot(selectedRanges);\n const snapshotValues = new Set();\n for (let i = 0; i < snapshot.length; i += 1) {\n if (snapshot[i].length === 1) {\n // if the selected range has start/end columns defined, so the snapshot is a 1D array of the row\n if (snapshot[i][0] != null) {\n snapshotValues.add(snapshot[i][0]);\n }\n } else if (snapshot[i][sourceColumn] != null) {\n // if the selected range is an entire row\n snapshotValues.add(snapshot[i][sourceColumn]);\n }\n }\n // if snapshotValues is empty here, it means all of the snapshot's values were null/undefined\n\n const filterMenu = {\n title: `Filter by Value${snapshotValues.size > 1 ? 's' : ''}`,\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n // only made of null/undefineds\n if (snapshotValues.size === 0) {\n // null gets a special menu\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (snapshotValues.size === 1 && snapshotValues.has('')) {\n // empty string gets a special menu\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.emptyStringFilterActions(\n column,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.emptyStringFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n model.textForCell(sourceColumn, sourceRow),\n quickFilters.get(sourceColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(\n column,\n model.textForCell(sourceColumn, sourceRow)\n )\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(sourceColumn);\n\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n snapshotValues as Set<number>,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n snapshotValues as Set<number>,\n quickFilters.get(sourceColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n snapshotValues as Set<Date>,\n dateFilterFormatter,\n previewFilterFormatter,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n snapshotValues as Set<Date>,\n dateFilterFormatter,\n previewFilterFormatter,\n quickFilters.get(sourceColumn)\n )\n );\n } else {\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.stringFilterActions(\n column,\n snapshotValues as Set<string>,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, snapshotValues as Set<string>)\n );\n }\n return [filterMenu];\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n getNumberValueEqualsFilter(\n column: DhType.Column,\n value: number\n ): DhType.FilterCondition {\n const { dh } = this;\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n return columnFilter.eq(filterValue);\n }\n\n getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): DhType.FilterValue {\n const { dh } = this;\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value as number);\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions: ResolvableContextAction[] = [];\n\n if (modelColumn != null && modelRow != null) {\n const sourceCell = model.sourceForCell(modelColumn, modelRow ?? 0);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const value = model.valueForCell(sourceColumn, sourceRow);\n const valueText = model.textForCell(sourceColumn, sourceRow);\n const column = columns[sourceColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n ...onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null) {\n const clearFilterRange = model.getClearFilterRange(modelColumn);\n if (clearFilterRange != null && clearFilterRange.length > 0) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title:\n clearFilterRange[1] - clearFilterRange[0] > 0\n ? 'Clear Group Filter'\n : 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(clearFilterRange);\n },\n disabled:\n !Array.from(quickFilters.keys()).some(\n col => col >= clearFilterRange[0] && col <= clearFilterRange[1]\n ) &&\n !Array.from(advancedFilters.keys()).some(\n col => col >= clearFilterRange[0] && col <= clearFilterRange[1]\n ),\n });\n }\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n actions.push(this.getCellFilterActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0 &&\n isDeletableGridModel(model) &&\n model.isDeletable\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n disabled: !model.isDeletableRanges(selectedRanges),\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.clientX,\n event.clientY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: DhType.Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } =\n formatOptions[i];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: DhType.Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const { dh } = this;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: DhType.Column,\n snapshotValues: Set<string>,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const values = Array.from(snapshotValues.keys());\n const filterValues = values.map(value => dh.FilterValue.ofString(value));\n const valueDescription =\n filterValues.length === 1 ? filterValues[0] : 'the selected values';\n\n let newQuickFilter:\n | {\n filter: null | DhType.FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const toFilterText = (item: string) =>\n TableUtils.escapeQuickTextFilter(item) ?? '';\n\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values.slice(0, 20).map(value => `\"${toFilterText(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${valueDescription} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(filterValue => column.filter().eq(filterValue))\n .reduce((prev, curr) => prev.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(toFilterText).join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueDescription} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(filterValue => column.filter().notEq(filterValue))\n .reduce((prev, curr) => prev.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!=${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue => column.filter().contains(filterValue))\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `~${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .or(\n filterValues\n .map(filterValue =>\n column.filter().contains(filterValue).not()\n )\n .reduce((prev, curr) => prev.and(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!~${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue =>\n column.filter().invoke('startsWith', filterValue)\n )\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `${toFilterText(value)}*`).join(' || '),\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue =>\n column.filter().invoke('endsWith', filterValue)\n )\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `*${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: DhType.Column,\n snapshotValues: Set<number>,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const values = Array.from(snapshotValues.keys());\n const valueDesc = values.length === 1 ? `${values}` : 'the selected values';\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const toFilterText = (item: number) =>\n TableUtils.isCharType(column.type)\n ? String.fromCharCode(item as number)\n : `${item}`;\n\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values.slice(0, 20).map(value => `\"${toFilterText(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n values\n .map(value =>\n this.getNumberValueEqualsFilter(column, value as number)\n )\n .reduce((acc, curr) => acc.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `=${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n values\n .map(value =>\n this.getNumberValueEqualsFilter(column, value as number).not()\n )\n .reduce((acc, curr) => acc.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!=${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (\n !snapshotValues.has(Number.NaN) &&\n !snapshotValues.has(Number.POSITIVE_INFINITY) &&\n !snapshotValues.has(Number.NEGATIVE_INFINITY) &&\n !TableUtils.isCharType(column.type)\n ) {\n // get the min/max because these are all ge/ne filters\n const maxValue = values.reduce((a, b) => (a > b ? a : b));\n const minValue = values.reduce((a, b) => (a < b ? a : b));\n const maxFilterValue = this.getFilterValueForNumberOrChar(\n column.type,\n maxValue\n );\n const minFilterValue = this.getFilterValueForNumberOrChar(\n column.type,\n minValue\n );\n const maxValueText = `${maxFilterValue}`;\n const minValueText = `${minFilterValue}`;\n\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${maxValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${toFilterText(maxValue)}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${maxValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${toFilterText(maxValue)}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${minValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${toFilterText(minValue)}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${minValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${toFilterText(minValue)}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n\n return actions;\n }\n\n booleanFilterActions(\n column: DhType.Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText ?? 'null'}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: DhType.Column,\n snapshotValues: Set<unknown>,\n dateFilterFormatter: DateTimeColumnFormatter,\n previewFilterFormatter: DateTimeColumnFormatter,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n\n const values = Array.from(snapshotValues.keys()) as DhType.DateWrapper[];\n const filterValues = values.map(value => dh.FilterValue.ofNumber(value));\n const valueDesc =\n filterValues.length === 1\n ? previewFilterFormatter.format(values[0])\n : 'the selected values';\n\n const maxValue = values.reduce((a, b) => (a > b ? a : b));\n const minValue = values.reduce((a, b) => (a < b ? a : b));\n const maxFilterValue = dh.FilterValue.ofNumber(maxValue);\n const minFilterValue = dh.FilterValue.ofNumber(minValue);\n const maxDateText = dateFilterFormatter.format(maxValue);\n const minDateText = dateFilterFormatter.format(minValue);\n const maxPreviewText = previewFilterFormatter.format(maxValue);\n const minPreviewText = previewFilterFormatter.format(minValue);\n\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values\n .slice(0, 20)\n .map(value => `\"${previewFilterFormatter.format(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(valueFilter => column.filter().eq(valueFilter))\n .reduce((acc, curr) => acc.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values\n .map(value => `=${dateFilterFormatter.format(value)}`)\n .join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(valueFilter => column.filter().notEq(valueFilter))\n .reduce((acc, curr) => acc.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values\n .map(value => `!=${dateFilterFormatter.format(value)}`)\n .join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${minPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${minDateText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${minPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${minDateText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${maxPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${maxDateText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${maxPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${maxDateText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n emptyStringFilterActions(\n column: DhType.Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString('');\n let newQuickFilter:\n | {\n filter: null | DhType.FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">empty</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'is empty string',\n description: `Show only rows where ${column.name} is empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not empty string',\n description: `Show only rows where ${column.name} is not empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n nullFilterActions(\n column: DhType.Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">null</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: DhType.Column,\n modelColumn: ModelIndex,\n columnSort: DhType.Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: DhType.Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : 'Ctrl+Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: DhType.Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"mappings":";;;;;;;AAAA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,cAAc,EACdC,QAAQ,EACRC,OAAO,EACPC,QAAQ,QAEH,kBAAkB;AACzB,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAEEC,cAAc,EACdC,kBAAkB,EAClBC,gBAAgB,QAEX,uBAAuB;AAC9B,SAGEC,gBAAgB,EAEhBC,SAAS,EACTC,YAAY,EACZC,oBAAoB,EACpBC,mBAAmB,EACnBC,qBAAqB,QAEhB,iBAAiB;AAExB,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,UAAU,QAIL,wBAAwB;AAC/B,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SACEC,+BAA+B,EAC/BC,yBAAyB,EACzBC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,iBAAiB,QACZ,kBAAkB;AAAC,SAExBC,yBAAyB,EACzBC,wBAAwB,EACxBC,wBAAwB;AAAA;AAAA,OAGnBC,SAAS;AAAA,SAGPC,sBAAsB;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE/B,IAAMC,GAAG,GAAGlB,GAAG,CAACmB,MAAM,CAAC,4BAA4B,CAAC;AAEpD,IAAMC,sBAAsB,GAAG,GAAG;AAClC,IAAMC,wBAAwB,GAAG,+BAA+B;AAChE,IAAMC,oBAAoB,GAAG,IAAI;;AAEjC;AACA;AACA;AACA,MAAMC,0BAA0B,SAAShC,gBAAgB,CAAC;EAyBxD;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOiC,uBAAuBA,CAC5BC,YAAuD,EACvDC,eAAuC,EACvCC,QAA6B,EACL;IACxB,IAAIF,YAAY,IAAIE,QAAQ,KAAK,IAAI,EAAE;MACrC,OAAOF,YAAY,CAACG,GAAG,CAACF,eAAe,CAAC;IAC1C;IACA,IAAID,YAAY,IAAIE,QAAQ,KAAK,IAAI,EAAE;MACrC,OAAOF,YAAY,CAACI,EAAE,CAACH,eAAe,CAAC;IACzC;IACA,OAAOA,eAAe;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOI,kBAAkBA,CACvBC,UAAqC,EACrCC,aAAqB,EACrBL,QAA6B,EACrB;IACR,OAAOA,QAAQ,IAAII,UAAU,IAAI,IAAI,MAAAE,MAAA,CAC9BF,UAAU,OAAAE,MAAA,CAAIN,QAAQ,OAAAM,MAAA,CAAID,aAAa,IAC1CA,aAAa;EACnB;;EAEA;AACF;AACA;EACE,OAAOE,iBAAiBA,CAACP,QAAqB,EAAgB;IAC5D,OAAOA,QAAQ,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI;EACzC;EAEA,OAAOQ,qBAAqBA,CAC1BC,OAAe,EACfC,SAAiB,EAET;IAAA,IADRC,GAAG,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAER,UAAAN,MAAA,CAAUG,OAAO,SAAAH,MAAA,CAAKxC,YAAY,CAACiD,QAAQ,CACzCL,SAAS,EACTC,GAAG,GAAGF,OAAO,CAACI,MAAM,GAAG,CACzB,CAAC;EACH;EAQAG,WAAWA,CAACC,QAAkB,EAAEC,EAAiB,EAAE;IACjD,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAER,IAAI,CAACC,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACC,6BAA6B,GAChC,IAAI,CAACA,6BAA6B,CAACD,IAAI,CAAC,IAAI,CAAC;IAE/C,IAAI,CAACE,2BAA2B,GAAG/D,QAAQ,CACzCyD,QAAQ,CAACO,qBAAqB,EAC9B/B,sBACF,CAAC;IAED,IAAI,CAACyB,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAQ,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACF,2BAA2B,CAACG,KAAK,CAAC,CAAC;EAC1C;EAIAC,gBAAgBA,CACdC,UAAsB,EACtBC,SAAoB,EACO;IAC3B,IAAM;MAAEZ;IAAS,CAAC,GAAG,IAAI;IACzB,IAAM;MAAEa,MAAM,EAAEC;IAAa,CAAC,GAAGF,SAAS;IAC1ClD,aAAa,CAACoD,YAAY,CAAC;IAC3B,IAAM;MAAEC;IAAM,CAAC,GAAGf,QAAQ,CAACgB,KAAK;IAChC,IAAM;MAAEC;IAAQ,CAAC,GAAGF,KAAK;IACzB,IAAMF,MAAM,GAAGI,OAAO,CAACN,UAAU,CAAC;IAElC,IAAMO,OAAO,GAAG,EAAqB;IAErC,IAAM;MAAEC,OAAO;MAAEC,OAAO;MAAEC,YAAY;MAAEC,eAAe;MAAEC;IAAa,CAAC,GACrEvB,QAAQ,CAACwB,KAAK;IAChB,IAAMC,KAAK,GAAGzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;IACjChE,aAAa,CAACyD,OAAO,CAAC;IACtB,IAAM;MACJQ,eAAe;MACfC,oBAAoB;MACpBC,wBAAwB;MACxBC;IACF,CAAC,GAAGL,KAAK;IAET,IAAMM,SAAS,GAAGhB,KAAK,CAACiB,IAAI;IAC5B,IAAMC,UAAU,GAAG9E,UAAU,CAAC+E,gBAAgB,CAACH,SAAS,EAAElB,MAAM,CAACsB,IAAI,CAAC;IACtE,IAAM;MAAEC;IAAiB,CAAC,GAAGjB,OAAO;IACpC,IAAMkB,cAAc,GAAG,CAAC,GAAGD,gBAAgB,CAACE,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CACxDC,WAAW,IAAIA,WAAW,KAAK,CACjC,CAAC;IACD,IAAMC,iBAAiB,GACrB1B,KAAK,CAAC2B,0BAA0B,CAAC/B,UAAU,EAAE,CAAC,CAAC,KAAKd,SAAS,IAC7D,EAAE7C,qBAAqB,CAAC+D,KAAK,CAAC,IAAIA,KAAK,CAAC4B,iBAAiB,CAAC;IAC5D,IAAMC,cAAc,GAAG7B,KAAK,CAAC6B,cAAc,CAACjC,UAAU,CAAC;IACvD,IAAMkC,gBAAgB,GAAG9B,KAAK,CAAC8B,gBAAgB,CAAClC,UAAU,CAAC;IAC3DO,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,aAAa;MACpBC,KAAK,EAAErE,0BAA0B,CAACsE,kBAAkB;MACpDC,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACmD,wBAAwB,CAACrC,YAAY,CAAC;MACtD;IACF,CAAC,CAAC;IACFI,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAEH,cAAc,GAAG,iBAAiB,GAAG,eAAe;MAC3DI,KAAK,EAAErE,0BAA0B,CAACsE,kBAAkB;MACpDG,QAAQ,EAAE,CAACX,iBAAiB;MAC5BS,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAIN,cAAc,EAAE;UAClB,IAAI,CAAC5C,QAAQ,CAACqD,0BAA0B,CAACxC,MAAM,CAACsB,IAAI,CAAC;QACvD,CAAC,MAAM;UACL,IAAI,CAACnC,QAAQ,CAACsD,wBAAwB,CAACzC,MAAM,CAACsB,IAAI,CAAC;QACrD;MACF,CAAC;MACDoB,KAAK,EAAE;IACT,CAAC,CAAC;IACFrC,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,kBAAkB;MACzBC,KAAK,EAAErE,0BAA0B,CAACsE,kBAAkB;MACpDC,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwD,cAAc,CAAC,CAAC;MAChC,CAAC;MACDJ,QAAQ,EAAE,CAACf;IACb,CAAC,CAAC;IACFnB,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,eAAe;MACtBU,IAAI,EAAErH,QAAQ;MACdsH,SAAS,EAAE9B,oBAAoB;MAC/B+B,QAAQ,EAAE3F,SAAS,CAAC4F,KAAK,CAACC,mBAAmB;MAC7Cb,KAAK,EAAErE,0BAA0B,CAACmF,YAAY;MAC9CP,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC+D,eAAe,CAACjD,YAAY,CAAC;MAC7C;IACF,CAAC,CAAC;IACFI,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,kBAAkB;MACzBU,IAAI,EAAEnC,eAAe,CAAC0C,GAAG,CAACrD,UAAU,CAAC,GAAGxE,cAAc,GAAGG,QAAQ;MACjEoH,SAAS,EAAE/B,eAAe;MAC1BqB,KAAK,EAAErE,0BAA0B,CAACmF,YAAY;MAC9CP,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACiE,wBAAwB,CAACnD,YAAY,CAAC;MACtD;IACF,CAAC,CAAC;IACFI,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,qBAAqB;MAC5BC,KAAK,EAAErE,0BAA0B,CAACmF,YAAY;MAC9CP,KAAK,EAAE,EAAE;MACT;MACAI,QAAQ,EAAE3F,SAAS,CAAC4F,KAAK,CAACM,aAAa;MACvChB,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACmE,eAAe,CAAC,CAAC;MACjC,CAAC;MACDf,QAAQ,EAAE,EACR/B,YAAY,CAAC+C,IAAI,GAAG,CAAC,IACrB9C,eAAe,CAAC8C,IAAI,GAAG,CAAC,IACxB7C,YAAY,IAAI,IAAI;IAExB,CAAC,CAAC;IACFL,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,SAAS;MAChBU,IAAI,EAAErH,QAAQ;MACdsH,SAAS,EAAE7B,wBAAwB;MACnCmB,KAAK,EAAErE,0BAA0B,CAAC0F,UAAU;MAC5Cd,KAAK,EAAE,EAAE;MACTrC,OAAO,EAAE,IAAI,CAACoD,aAAa,CAACzD,MAAM,EAAEF,UAAU,EAAEsB,UAAU,CAAC;MAC3DmB,QAAQ,EAAE,CAACP;IACb,CAAC,CAAC;IACF3B,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,qBAAqB;MAC5B;AACN;AACA;AACA;AACA;AACA;AACA;AACA;MACMK,QAAQ,EACLnB,UAAU,IAAIF,SAAS,CAACnC,MAAM,KAAK,CAAC,IACpCwB,OAAO,IAAIW,SAAS,CAACnC,MAAM,KAAK,CAAE,IAClCqC,UAAU,IAAIb,OAAO,IAAIW,SAAS,CAACnC,MAAM,KAAK,CAAE,IACjDmC,SAAS,CAACnC,MAAM,KAAK,CAAC,IACtB,CAACiD,gBAAgB;MACnBG,KAAK,EAAErE,0BAA0B,CAAC0F,UAAU;MAC5Cd,KAAK,EAAE,EAAE;MACTrC,OAAO,EAAE,IAAI,CAACqD,qBAAqB,CAAC1D,MAAM,EAAEF,UAAU;IACxD,CAAC,CAAC;IACFO,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,qBAAqB;MAC5BK,QAAQ;MACN;MACArB,SAAS,CAACnC,MAAM,KAAK,CAAC,IAAKwB,OAAO,IAAIW,SAAS,CAACnC,MAAM,KAAK,CAAE;MAC/DoD,KAAK,EAAErE,0BAA0B,CAAC0F,UAAU;MAC5CnB,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtB1D,YAAY,EACZnC,0BAA0B,CAAC8F,qBAAqB,CAACC,IACnD,CAAC;MACH,CAAC;MACDnB,KAAK,EAAE;IACT,CAAC,CAAC;IACFrC,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE3B,OAAO,GAAG,qBAAqB,GAAG,eAAe;MACxDqC,IAAI,EAAErH,QAAQ;MACdsH,SAAS,EAAE5B,2BAA2B;MACtCkB,KAAK,EAAErE,0BAA0B,CAAC0F,UAAU;MAC5Cd,KAAK,EAAE,EAAE;MACTH,QAAQ,EAAE,CAACrC,KAAK,CAAC4D,YAAY;MAC7B;MACAhB,QAAQ,EAAE3F,SAAS,CAAC4F,KAAK,CAACgB,OAAO;MACjC1B,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACoB,OAAO,CAAC,CAACA,OAAO,CAAC;MACjC;IACF,CAAC,CAAC;IACFF,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,kBAAkB;MACzBC,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;MAC5CC,YAAY,EAAErI,kBAAkB,CAACsI,aAAa,CAAC,CAAC,GAAG,QAAQ,GAAG,WAAW;MACzE7B,MAAM,EAAEA,CAAA,KAAM;QAAA,IAAA8B,qBAAA;QACZrH,eAAe,EAAAqH,qBAAA,GAACjE,KAAK,CAACkE,mBAAmB,CAACtE,UAAU,CAAC,cAAAqE,qBAAA,cAAAA,qBAAA,GAAI,EAAE,CAAC,CAACE,KAAK,CAACC,CAAC,IAClE7G,GAAG,CAAC8G,KAAK,CAAC,uBAAuB,EAAED,CAAC,CACtC,CAAC;MACH;IACF,CAAC,CAAC;IAEF,IAAIhI,UAAU,CAACkI,UAAU,CAACxE,MAAM,CAACyE,IAAI,CAAC,EAAE;MACtCpE,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,kBAAkB;QACzBC,KAAK,EAAErE,0BAA0B,CAAC4G,YAAY;QAC9CrE,OAAO,EAAE,IAAI,CAACsE,iBAAiB,CAAC3E,MAAM;MACxC,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI1D,UAAU,CAACsI,YAAY,CAAC5E,MAAM,CAACyE,IAAI,CAAC,EAAE;MAAA,IAAAI,qBAAA;MAC/CxE,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,eAAe;QACtBC,KAAK,EAAErE,0BAA0B,CAAC4G,YAAY;QAC9CrE,OAAO,GAAAwE,qBAAA,GAAE,IAAI,CAACC,mBAAmB,CAAC9E,MAAM,CAAC,cAAA6E,qBAAA,cAAAA,qBAAA,GAAI7F;MAC/C,CAAC,CAAC;IACJ;IACA,OAAOqB,OAAO;EAChB;EAEA0E,cAAcA,CACZC,WAAuB,EACvBC,IAAU,EACVlF,SAAoB,EACH;IACjB,IAAM;MAAEZ;IAAS,CAAC,GAAG,IAAI;IACzB,IAAM;MAAEa,MAAM,EAAEkF,WAAW;MAAEC,GAAG,EAAEC;IAAS,CAAC,GAAGrF,SAAS;IACxD,IAAM;MAAEG,KAAK;MAAEmF;IAAQ,CAAC,GAAGlG,QAAQ,CAACgB,KAAK;IACzC,IAAM;MAAEC;IAAQ,CAAC,GAAGF,KAAK;IACzB,IAAMoF,QAAQ,GAAGnG,QAAQ,CAACoG,WAAW,CAACH,QAAQ,CAAC;IAC/CvI,aAAa,CAACyI,QAAQ,CAAC;IACvB,IAAME,UAAU,GAAGtF,KAAK,CAACuF,aAAa,CAACT,WAAW,EAAEM,QAAQ,CAAC;IAC7D,IAAM;MAAEtF,MAAM,EAAE0F,YAAY;MAAEP,GAAG,EAAEQ;IAAU,CAAC,GAAGH,UAAU;IAC3D,IAAMI,KAAK,GAAG1F,KAAK,CAAC2F,YAAY,CAACH,YAAY,EAAEC,SAAS,CAAC;IAEzD,IAAM3F,MAAM,GAAGI,OAAO,CAACsF,YAAY,CAAC;IAEpC,IAAMrF,OAAO,GAAG,EAAqB;IAErC,IAAMO,KAAK,GAAGzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;IACjC,IAAM;MAAEC;IAAgB,CAAC,GAAGF,KAAK;IAEjC,IAAIZ,MAAM,IAAI,IAAI,IAAIoF,QAAQ,IAAI,IAAI,EAAE,OAAO/E,OAAO;;IAEtD;IACA,IAAIlE,qBAAqB,CAAC+D,KAAK,CAAC,IAAIA,KAAK,CAAC4F,eAAe,CAACH,SAAS,CAAC,EAAE;MACpE;MACA;MACA,IAAMI,eAAe,GAAG,CAAC;MACzB,IAAMnH,SAAS,GAAGsB,KAAK,CAAC2F,YAAY,CAACE,eAAe,EAAEJ,SAAS,CAAC;MAChE,IAAMK,QAAQ,GACZpH,SAAS,IAAI,IAAI,GACb,MAAM,GACNsB,KAAK,CAAC+F,WAAW,CAACF,eAAe,EAAEJ,SAAS,CAAC;MAEnDtF,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAEpE,0BAA0B,CAACY,qBAAqB,CACrDwB,KAAK,CAACgG,aAAa,CAACP,SAAS,CAAC,GAAG,UAAU,GAAG,QAAQ,EACtDK,QACF,CAAC;QACD7D,KAAK,EAAErE,0BAA0B,CAACqI,qBAAqB;QACvDzD,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZnC,KAAK,CAACkG,cAAc,CAACT,SAAS,EAAE,CAACzF,KAAK,CAACgG,aAAa,CAACP,SAAS,CAAC,CAAC;QAClE;MACF,CAAC,CAAC;MAEF,IAAIzF,KAAK,CAACmG,oBAAoB,KAAK,IAAI,EAAE;QACvChG,OAAO,CAAC4B,IAAI,CAAC;UACXC,KAAK,EAAEpE,0BAA0B,CAACY,qBAAqB,CACrD,eAAe,EACfsH,QACF,CAAC;UACD7D,KAAK,EAAErE,0BAA0B,CAACqI,qBAAqB;UACvDzD,KAAK,EAAE,EAAE;UACTL,MAAM,EAAEA,CAAA,KAAM;YACZnC,KAAK,CAACkG,cAAc,CAACT,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;UAC7C;QACF,CAAC,CAAC;MACJ;IACF;IAEA,IACExJ,qBAAqB,CAAC+D,KAAK,CAAC,IAC5BA,KAAK,CAAC4B,iBAAiB,IACvB5B,KAAK,CAACmG,oBAAoB,KAAK,IAAI,EACnC;MACAhG,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,qBAAqB;QAC5BC,KAAK,EAAErE,0BAA0B,CAACqI,qBAAqB;QACvDzD,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZnC,KAAK,CAACoG,SAAS,CAAC,CAAC;QACnB;MACF,CAAC,CAAC;MAEFjG,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,uBAAuB;QAC9BC,KAAK,EAAErE,0BAA0B,CAACqI,qBAAqB;QACvDzD,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZnC,KAAK,CAACqG,WAAW,CAAC,CAAC;QACrB;MACF,CAAC,CAAC;IACJ;IAEA,IAAMC,OAAO,GAAG;MACdtE,KAAK,EAAE,OAAO;MACdW,SAAS,EAAE/B,eAAe;MAC1BgC,QAAQ,EAAE3F,SAAS,CAAC4F,KAAK,CAAC0D,QAAQ;MAClCtE,KAAK,EAAErE,0BAA0B,CAAC4I,UAAU;MAC5ChE,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KACN,IAAI,CAAClD,QAAQ,CAACwH,aAAa,IAAAnI,MAAA,CAAI4G,QAAQ,GAAG,CAAC,MAAA5G,MAAA,CAAOoH,KAAK,GAAI5F,MAAM,CAACsB,IAAI;IAC1E,CAAC;IACDjB,OAAO,CAAC4B,IAAI,CAACuE,OAAO,CAAC;IAErB,IAAInB,OAAO,EAAE;MACXhF,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,WAAW;QAClBC,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;QAC5CC,YAAY,EAAErI,kBAAkB,CAACsI,aAAa,CAAC,CAAC,GAC5C,QAAQ,GACR,WAAW;QACfxB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZlD,QAAQ,CAACyH,QAAQ,CAAC1B,WAAW,EAAEE,QAAQ,CAAC;QAC1C;MACF,CAAC,CAAC;MAEF/E,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,uBAAuB;QAC9BC,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;QAC5CtB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZlD,QAAQ,CAACyH,QAAQ,CAAC1B,WAAW,EAAEE,QAAQ,EAAE,IAAI,CAAC;QAChD;MACF,CAAC,CAAC;IACJ;IAEA/E,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,OAAO;MACdC,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;MAC5CtB,KAAK,EAAE,EAAE;MACTL,MAAM;QAAA,IAAAwE,OAAA,GAAAC,iBAAA,CAAE,aAAY;UAClB,IAAI;YACF,IAAMC,IAAI,SAAShK,iBAAiB,CAAC,CAAC;YACtC,IAAMiK,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC,CAACC,GAAG,CAAC/B,GAAG,IAAIA,GAAG,CAAC8B,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAMhC,IAAI,CAACkC,UAAU,CAACH,KAAK,CAAC;UAC9B,CAAC,CAAC,OAAOI,GAAG,EAAE;YACZ,IAAIA,GAAG,YAAY3K,yBAAyB,EAAE;cAC5C0C,QAAQ,CAACkI,gCAAgC,CACvC,qFACF,CAAC;YACH,CAAC,MAAM,IAAID,GAAG,YAAY5K,+BAA+B,EAAE;cACzD2C,QAAQ,CAACkI,gCAAgC,CACvC,yFACF,CAAC;YACH,CAAC,MAAM;cACL,MAAMD,GAAG;YACX;UACF;QACF,CAAC;QAAA,SAAA/E,OAAA;UAAA,OAAAwE,OAAA,CAAAS,KAAA,OAAAxI,SAAA;QAAA;QAAA,OAAAuD,MAAA;MAAA;IACH,CAAC,CAAC;IAEFhC,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,oBAAoB;MAC3BC,KAAK,EAAErE,0BAA0B,CAACyJ,mBAAmB;MACrD7E,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZlD,QAAQ,CAACqI,QAAQ,CAAC;UAChBC,iBAAiB,EAAE,IAAI;UACvBC,YAAY,EAAEvI,QAAQ,CAACwI,eAAe,CACpCzC,WAAW,EACXE,QACF;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,IAAIhI,sBAAsB,CAAC8C,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC0H,2BAA2B,EAAE;MACvEvH,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,wBAAwB;QAC/BC,KAAK,EAAErE,0BAA0B,CAACyJ,mBAAmB;QACrD7E,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZlD,QAAQ,CAAC0I,2BAA2B,CAACzC,QAAQ,CAAC;QAChD;MACF,CAAC,CAAC;IACJ;IAEA,OAAO/E,OAAO;EAChB;;EAEA;EACMyH,oBAAoBA,CACxB9C,WAAuB,EACvBC,IAAU,EACVlF,SAAoB,EACM;IAAA,IAAAgI,KAAA;IAAA,OAAAjB,iBAAA;MAC1B,IAAM;QAAE1H,EAAE;QAAED;MAAS,CAAC,GAAG4I,KAAI;MAC7B,IAAM;QAAE5C,GAAG,EAAEC;MAAS,CAAC,GAAGrF,SAAS;MACnC,IAAM;QAAEG;MAAM,CAAC,GAAGf,QAAQ,CAACgB,KAAK;MAChC,IAAM;QAAEC;MAAQ,CAAC,GAAGF,KAAK;MACzB,IAAMoF,QAAQ,GAAGnG,QAAQ,CAACoG,WAAW,CAACH,QAAQ,CAAC;MAC/C,IAAM;QAAE4C;MAAkB,CAAC,GAAG/C,IAAI;MAClCpI,aAAa,CAACyI,QAAQ,CAAC;MACvB,IAAME,UAAU,GAAGtF,KAAK,CAACuF,aAAa,CAACT,WAAW,EAAEM,QAAQ,CAAC;MAC7D,IAAM;QAAEtF,MAAM,EAAE0F,YAAY;QAAEP,GAAG,EAAEQ;MAAU,CAAC,GAAGH,UAAU;MAC3D,IAAMxF,MAAM,GAAGI,OAAO,CAACsF,YAAY,CAAC;MAEpC,IAAI1F,MAAM,IAAI,IAAI,IAAIoF,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE;MACjD,IAAI,CAAClF,KAAK,CAAC+H,YAAY,CAACvC,YAAY,CAAC,EAAE,OAAO,EAAE;MAEhD,IAAM;QAAElF;MAAa,CAAC,GAAGrB,QAAQ,CAACwB,KAAK;MACvC,IAAMC,KAAK,GAAGzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;MACjC,IAAM;QAAEC;MAAgB,CAAC,GAAGF,KAAK;MACjC,IAAM;QAAEsH;MAAS,CAAC,GAAG/I,QAAQ,CAACgB,KAAK;MAEnC,IAAIgI,cAAc,GAAG,CAAC,GAAGH,iBAAiB,CAAC,CAAC,CAAC;MAC7C;MACA;MACA;MACA,IAAIG,cAAc,CAACpJ,MAAM,KAAK,CAAC,EAAE;QAC/BoJ,cAAc,CAAClG,IAAI,CACjB,IAAIlG,SAAS,CAAC2J,YAAY,EAAEC,SAAS,EAAED,YAAY,EAAEC,SAAS,CAChE,CAAC;MACH;;MAEA;MACA;MACA;MACA;MACA,IAAI5J,SAAS,CAACqM,YAAY,CAACD,cAAc,EAAEzC,YAAY,EAAEC,SAAS,CAAC,EAAE;QACnE,IAAI0C,QAAQ,GAAGtM,SAAS,CAACsM,QAAQ,CAACF,cAAc,CAAC;QACjD,OAAOE,QAAQ,GAAGxK,oBAAoB,EAAE;UACtC,IAAMyK,OAAO,GAAGH,cAAc,CAACI,GAAG,CAAC,CAAC;UACpC;UACA1L,aAAa,CAACyL,OAAO,EAAE,qCAAqC,CAAC;UAE7D,IAAME,WAAW,GAAGzM,SAAS,CAACsM,QAAQ,CAAC,CAACC,OAAO,CAAC,CAAC;UACjD;UACA1L,YAAY,CAAC4L,WAAW,EAAE,yCAAyC,CAAC;;UAEpE;UACA;UACA,IAAIH,QAAQ,GAAGG,WAAW,GAAG3K,oBAAoB,EAAE;YAAA,IAAA4K,eAAA;YACjD;YACAN,cAAc,CAAClG,IAAI,CACjB,IAAIlG,SAAS,CACXuM,OAAO,CAACI,WAAW,EACnBJ,OAAO,CAACK,QAAQ,EAChBL,OAAO,CAACM,SAAS,EACjB,EAAAH,eAAA,GAACH,OAAO,CAACO,MAAM,cAAAJ,eAAA,cAAAA,eAAA,GAAI,CAAC,KAAKJ,QAAQ,GAAGxK,oBAAoB,CAC1D,CACF,CAAC;YACD;UACF;UACAwK,QAAQ,IAAIG,WAAW;QACzB;MACF,CAAC,MAAM;QACL;QACA;QACAL,cAAc,GAAG,CACf,IAAIpM,SAAS,CAAC2J,YAAY,EAAEC,SAAS,EAAED,YAAY,EAAEC,SAAS,CAAC,CAChE;MACH;;MAEA;MACA;MACA;MACAhJ,cAAc,CAACwL,cAAc,CAAC;;MAE9B;MACA,IAAMW,QAAQ,SAAS5I,KAAK,CAAC4I,QAAQ,CAACX,cAAc,CAAC;MACrD,IAAMY,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC;MAChC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,QAAQ,CAAC/J,MAAM,EAAEkK,CAAC,IAAI,CAAC,EAAE;QAC3C,IAAIH,QAAQ,CAACG,CAAC,CAAC,CAAClK,MAAM,KAAK,CAAC,EAAE;UAC5B;UACA,IAAI+J,QAAQ,CAACG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC1BF,cAAc,CAACG,GAAG,CAACJ,QAAQ,CAACG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACpC;QACF,CAAC,MAAM,IAAIH,QAAQ,CAACG,CAAC,CAAC,CAACvD,YAAY,CAAC,IAAI,IAAI,EAAE;UAC5C;UACAqD,cAAc,CAACG,GAAG,CAACJ,QAAQ,CAACG,CAAC,CAAC,CAACvD,YAAY,CAAC,CAAC;QAC/C;MACF;MACA;;MAEA,IAAMyD,UAAU,GAAG;QACjBjH,KAAK,oBAAA1D,MAAA,CAAoBuK,cAAc,CAACxF,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAE;QAC7DX,IAAI,EAAErH,QAAQ;QACdsH,SAAS,EAAE/B,eAAe;QAC1BqB,KAAK,EAAErE,0BAA0B,CAACmF,YAAY;QAC9CP,KAAK,EAAE,EAAE;QACTrC,OAAO,EAAE;MACX,CAOC;;MAED;MACA,IAAI0I,cAAc,CAACxF,IAAI,KAAK,CAAC,EAAE;QAC7B;QACA,IAAI/C,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,KAAK;YACZ7B,OAAO,EAAE0H,KAAI,CAACqB,iBAAiB,CAC7BpJ,MAAM,EACNQ,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC,GAAG8F,KAAI,CAACqB,iBAAiB,CAACpJ,MAAM,CAAC,CAAC;MAC5D,CAAC,MAAM,IAAI+I,cAAc,CAACxF,IAAI,KAAK,CAAC,IAAIwF,cAAc,CAACQ,GAAG,CAAC,EAAE,CAAC,EAAE;QAC9D;QACA,IAAI/I,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,KAAK;YAEZ7B,OAAO,EAAE0H,KAAI,CAACyB,wBAAwB,CACpCxJ,MAAM,EACNQ,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC,GAAG8F,KAAI,CAACyB,wBAAwB,CAACxJ,MAAM,CAAC,CAAC;MACnE,CAAC,MAAM,IAAI1D,UAAU,CAACmN,aAAa,CAACzJ,MAAM,CAACyE,IAAI,CAAC,EAAE;QAChD;QACA,IAAIjE,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,IAAI;YACX7B,OAAO,EAAE0H,KAAI,CAAC2B,oBAAoB,CAChC1J,MAAM,EACNE,KAAK,CAAC+F,WAAW,CAACP,YAAY,EAAEC,SAAS,CAAC,EAC1CnF,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CACrB,GAAG8F,KAAI,CAAC2B,oBAAoB,CAC1B1J,MAAM,EACNE,KAAK,CAAC+F,WAAW,CAACP,YAAY,EAAEC,SAAS,CAC3C,CACF,CAAC;MACH,CAAC,MAAM,IACLrJ,UAAU,CAACsI,YAAY,CAAC5E,MAAM,CAACyE,IAAI,CAAC,IACpCnI,UAAU,CAACqN,UAAU,CAAC3J,MAAM,CAACyE,IAAI,CAAC,EAClC;QACA;QACA5H,aAAa,CAAC6I,YAAY,CAAC;QAE3B,IAAIlF,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,KAAK;YACZ7B,OAAO,EAAE0H,KAAI,CAAC6B,mBAAmB,CAC/B5J,MAAM,EACN+I,cAAc,EACdvI,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CACrB,GAAG8F,KAAI,CAAC6B,mBAAmB,CACzB5J,MAAM,EACN+I,cAAc,EACdvI,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAC/B,CACF,CAAC;MACH,CAAC,MAAM,IAAIpJ,UAAU,CAACkI,UAAU,CAACxE,MAAM,CAACyE,IAAI,CAAC,EAAE;QAC7C,IAAMoF,mBAAmB,GAAG,IAAIxN,uBAAuB,CAAC+C,EAAE,EAAE;UAC1D0K,QAAQ,EAAE5B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE4B,QAAQ;UAC5BC,YAAY,EAAE,KAAK;UACnBC,cAAc,EAAE,IAAI;UACpBC,2BAA2B,EAAErM;QAC/B,CAAC,CAAC;QACF,IAAMsM,sBAAsB,GAAG,IAAI7N,uBAAuB,CAAC+C,EAAE,EAAE;UAC7D0K,QAAQ,EAAE5B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE4B,QAAQ;UAC5BC,YAAY,EAAE7B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE6B,YAAY;UACpCC,cAAc,EAAE9B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE8B,cAAc;UACxCC,2BAA2B,EAAErM;QAC/B,CAAC,CAAC;QACF,IAAI4C,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,KAAK;YACZ7B,OAAO,EAAE0H,KAAI,CAACoC,iBAAiB,CAC7BnK,MAAM,EACN+I,cAAc,EACdc,mBAAmB,EACnBK,sBAAsB,EACtB1J,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CACrB,GAAG8F,KAAI,CAACoC,iBAAiB,CACvBnK,MAAM,EACN+I,cAAc,EACdc,mBAAmB,EACnBK,sBAAsB,EACtB1J,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAC/B,CACF,CAAC;MACH,CAAC,MAAM;QACL,IAAIlF,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAAE;UAClCyD,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CAAC;YACtBC,KAAK,EAAE,KAAK;YACZ7B,OAAO,EAAE0H,KAAI,CAACqC,mBAAmB,CAC/BpK,MAAM,EACN+I,cAAc,EACdvI,YAAY,CAAC2C,GAAG,CAACuC,YAAY,CAAC,EAC9B,IACF,CAAC;YACDhD,KAAK,EAAE,CAAC;YACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;UAC/B,CAAC,CAAC;QACJ;QACAH,UAAU,CAAC9I,OAAO,CAAC4B,IAAI,CACrB,GAAG8F,KAAI,CAACqC,mBAAmB,CAACpK,MAAM,EAAE+I,cAA6B,CACnE,CAAC;MACH;MACA,OAAO,CAACI,UAAU,CAAC;IAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;EACE7J,0BAA0BA,CACxBU,MAAqB,EACrB4F,KAAa,EACW;IACxB,IAAM;MAAExG;IAAG,CAAC,GAAG,IAAI;IACnB,IAAMpB,YAAY,GAAGgC,MAAM,CAACqK,MAAM,CAAC,CAAC;IACpC,IAAIzE,KAAK,KAAK0E,MAAM,CAACC,iBAAiB,EAAE;MACtC,OAAOnL,EAAE,CAACoL,eAAe,CAACC,MAAM,CAAC,OAAO,EAAEzM,YAAY,CAAC,CAACG,GAAG,CACzDH,YAAY,CAAC0M,WAAW,CAACtL,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAAC,CAAC,CAAC,CACrD,CAAC;IACH;IACA,IAAIhF,KAAK,KAAK0E,MAAM,CAACO,iBAAiB,EAAE;MACtC,OAAOzL,EAAE,CAACoL,eAAe,CAACC,MAAM,CAAC,OAAO,EAAEzM,YAAY,CAAC,CAACG,GAAG,CACzDH,YAAY,CAAC8M,QAAQ,CAAC1L,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAAC,CAAC,CAAC,CAClD,CAAC;IACH;IACA,IAAIN,MAAM,CAACS,KAAK,CAACnF,KAAK,CAAC,EAAE;MACvB,OAAOxG,EAAE,CAACoL,eAAe,CAACC,MAAM,CAAC,OAAO,EAAEzM,YAAY,CAAC;IACzD;IAEA,IAAMgN,WAAW,GAAG,IAAI,CAACxL,6BAA6B,CAACQ,MAAM,CAACyE,IAAI,EAAEmB,KAAK,CAAC;IAC1E,OAAO5H,YAAY,CAACiN,EAAE,CAACD,WAAW,CAAC;EACrC;EAEAxL,6BAA6BA,CAC3B0L,UAAkB,EAClBtF,KAAc,EACM;IACpB,IAAM;MAAExG;IAAG,CAAC,GAAG,IAAI;IACnB,OAAO9C,UAAU,CAACqN,UAAU,CAACuB,UAAU,CAAC,GACpC9L,EAAE,CAACuL,WAAW,CAACQ,QAAQ,CAACC,MAAM,CAACC,YAAY,CAACzF,KAAe,CAAC,CAAC,GAC7DxG,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAAChF,KAAe,CAAC;EAC9C;EAEA0F,aAAaA,CACXvL,SAAoB,EACpBkF,IAAU,EACVsG,KAA4C,EACxB;IACpB,IAAM;MAAEpM;IAAS,CAAC,GAAG,IAAI;IACzB,IAAM;MACJqM,CAAC;MACDxL,MAAM,EAAEkF,WAAW;MACnBC,GAAG,EAAEC,QAAQ;MACbqG;IACF,CAAC,GAAG1L,SAAS;IACb,IAAMiF,WAAW,GAAG7F,QAAQ,CAACuM,cAAc,CAACxG,WAAW,CAAC;IACxD,IAAMI,QAAQ,GAAGnG,QAAQ,CAACoG,WAAW,CAACH,QAAQ,CAAC;IAE/C,IAAM;MAAElF,KAAK;MAAEmF;IAAQ,CAAC,GAAGlG,QAAQ,CAACgB,KAAK;IACzC,IAAM;MAAEC;IAAQ,CAAC,GAAGF,KAAK;IAEzB,IAAM;MACJI,OAAO;MACPqL,gBAAgB;MAChBnL,YAAY;MACZC,eAAe;MACf0H;IACF,CAAC,GAAGhJ,QAAQ,CAACwB,KAAK;IAElB9D,aAAa,CAACyD,OAAO,CAAC;IAEtB,IAAM;MAAEsL,kBAAkB;MAAEC,KAAK;MAAEC;IAAqB,CAAC,GAAGxL,OAAO;IAEnE,IAAMD,OAAkC,GAAG,EAAE;IAE7C,IAAI2E,WAAW,IAAI,IAAI,IAAIM,QAAQ,IAAI,IAAI,EAAE;MAC3C,IAAME,UAAU,GAAGtF,KAAK,CAACuF,aAAa,CAACT,WAAW,EAAEM,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,CAAC,CAAC;MAClE,IAAM;QAAEtF,MAAM,EAAE0F,YAAY;QAAEP,GAAG,EAAEQ;MAAU,CAAC,GAAGH,UAAU;MAC3D,IAAMI,KAAK,GAAG1F,KAAK,CAAC2F,YAAY,CAACH,YAAY,EAAEC,SAAS,CAAC;MACzD,IAAMoG,SAAS,GAAG7L,KAAK,CAAC+F,WAAW,CAACP,YAAY,EAAEC,SAAS,CAAC;MAC5D,IAAM3F,MAAM,GAAGI,OAAO,CAACsF,YAAY,CAAC;MAEpC,IAAM;QAAE4F;MAAc,CAAC,GAAGnM,QAAQ,CAACgB,KAAK;MAExC,IAAIH,MAAM,IAAI,IAAI,EAAE;QAClBK,OAAO,CAAC4B,IAAI,CACV,GAAGqJ,aAAa,CAAC;UACfpL,KAAK;UACL0F,KAAK;UACLmG,SAAS;UACT/L,MAAM;UACNoF,QAAQ;UACRF,WAAW;UACXI,QAAQ;UACRN;QACF,CAAC,CACH,CAAC;MACH;IACF;IAEA,IAAIA,WAAW,IAAI,IAAI,EAAE;MACvB,IAAMgH,gBAAgB,GAAG9L,KAAK,CAAC+L,mBAAmB,CAACjH,WAAW,CAAC;MAC/D,IAAIgH,gBAAgB,IAAI,IAAI,IAAIA,gBAAgB,CAACjN,MAAM,GAAG,CAAC,EAAE;QAC3D;QACA;QACAsB,OAAO,CAAC4B,IAAI,CAAC;UACXC,KAAK,EACH8J,gBAAgB,CAAC,CAAC,CAAC,GAAGA,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GACzC,oBAAoB,GACpB,qBAAqB;UAC3B7J,KAAK,EAAErE,0BAA0B,CAACmF,YAAY;UAC9CP,KAAK,EAAE,EAAE;UACTL,MAAM,EAAEA,CAAA,KAAM;YACZ,IAAI,CAAClD,QAAQ,CAAC+M,kBAAkB,CAACF,gBAAgB,CAAC;UACpD,CAAC;UACDzJ,QAAQ,EACN,CAAC4J,KAAK,CAACC,IAAI,CAAC5L,YAAY,CAAC6L,IAAI,CAAC,CAAC,CAAC,CAAC3K,IAAI,CACnC4K,GAAG,IAAIA,GAAG,IAAIN,gBAAgB,CAAC,CAAC,CAAC,IAAIM,GAAG,IAAIN,gBAAgB,CAAC,CAAC,CAChE,CAAC,IACD,CAACG,KAAK,CAACC,IAAI,CAAC3L,eAAe,CAAC4L,IAAI,CAAC,CAAC,CAAC,CAAC3K,IAAI,CACtC4K,GAAG,IAAIA,GAAG,IAAIN,gBAAgB,CAAC,CAAC,CAAC,IAAIM,GAAG,IAAIN,gBAAgB,CAAC,CAAC,CAChE;QACJ,CAAC,CAAC;MACJ;IACF;IAEA,IACEL,gBAAgB,GACZH,CAAC,IAAIK,KAAK,GACVL,CAAC,IAAII,kBAAkB,GAAGE,oBAAoB,IAC9CL,iBAAiB,KAAK,CAAC,EAC3B;MACA;MACA,IAAIzG,WAAW,IAAI,IAAI,EAAE;QACvB3E,OAAO,CAAC4B,IAAI,CAAC,GAAG,IAAI,CAACpC,gBAAgB,CAACmF,WAAW,EAAEjF,SAAS,CAAC,CAAC;MAChE;IACF,CAAC,MAAM;MACL;MACA,IAAIiF,WAAW,IAAI,IAAI,IAAIM,QAAQ,IAAI,IAAI,EAAE;QAC3CjF,OAAO,CAAC4B,IAAI,CAAC,GAAG,IAAI,CAAC8C,cAAc,CAACC,WAAW,EAAEC,IAAI,EAAElF,SAAS,CAAC,CAAC;QAClEM,OAAO,CAAC4B,IAAI,CAAC,IAAI,CAAC6F,oBAAoB,CAAC9C,WAAW,EAAEC,IAAI,EAAElF,SAAS,CAAC,CAAC;MACvE;;MAEA;MACA,IAAIsF,OAAO,IAAI8C,cAAc,CAACpJ,MAAM,GAAG,CAAC,EAAE;QACxCsB,OAAO,CAAC4B,IAAI,CAAC;UACXC,KAAK,EAAE,gBAAgB;UACvBY,QAAQ,EAAEjH,gBAAgB,CAAC0Q,IAAI;UAC/BpK,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;UAC5CtB,KAAK,EAAE,EAAE;UACTL,MAAM,EAAEA,CAAA,KAAM;YACZlD,QAAQ,CAACqN,UAAU,CAACrE,cAAc,CAAC;UACrC;QACF,CAAC,CAAC;QAEF9H,OAAO,CAAC4B,IAAI,CAAC;UACXC,KAAK,EAAE,2BAA2B;UAClCC,KAAK,EAAErE,0BAA0B,CAACkG,UAAU;UAC5CtB,KAAK,EAAE,EAAE;UACTL,MAAM,EAAEA,CAAA,KAAM;YACZlD,QAAQ,CAACqN,UAAU,CAACrE,cAAc,EAAE,IAAI,CAAC;UAC3C;QACF,CAAC,CAAC;MACJ;MAEA,IACEjM,mBAAmB,CAACgE,KAAK,CAAC,IAC1BA,KAAK,CAACuM,UAAU,IAChBtE,cAAc,CAACpJ,MAAM,GAAG,CAAC,IACzB9C,oBAAoB,CAACiE,KAAK,CAAC,IAC3BA,KAAK,CAACwM,WAAW,EACjB;QACArM,OAAO,CAAC4B,IAAI,CAAC;UACXC,KAAK,EAAE,sBAAsB;UAC7BC,KAAK,EAAErE,0BAA0B,CAAC6O,UAAU;UAC5CpK,QAAQ,EAAE,CAACrC,KAAK,CAAC0M,iBAAiB,CAACzE,cAAc,CAAC;UAClDzF,KAAK,EAAE,EAAE;UACTL,MAAM,EAAEA,CAAA,KAAM;YACZ,IAAI,CAAClD,QAAQ,CAAC0N,YAAY,CAAC1E,cAAc,CAAC;UAC5C;QACF,CAAC,CAAC;MACJ;IACF;IAEA,IAAI9H,OAAO,CAACtB,MAAM,KAAK,CAAC,EAAE;MACxB,OAAO,KAAK;IACd;IAEAlC,aAAa,CAACsC,QAAQ,CAAC2N,WAAW,CAAC;IAEnCnR,cAAc,CAACoR,WAAW,CACxB5N,QAAQ,CAAC2N,WAAW,EACpBvB,KAAK,CAACyB,OAAO,EACbzB,KAAK,CAAC0B,OAAO,EACb5M,OACF,CAAC;IACD,OAAO,IAAI;EACb;EAEAsE,iBAAiBA,CAAC3E,MAAqB,EAAmB;IAAA,IAAAkN,MAAA;IACxD,IAAM;MAAEhN;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM;MAAEgN;IAAU,CAAC,GAAGjN,KAAK;IAC3B,IAAMkN,cAAc,GAAGD,SAAS,CAACE,eAAe,CAACrN,MAAM,CAACyE,IAAI,EAAEzE,MAAM,CAACsB,IAAI,CAAC;IAE1E,IAAMgM,aAAa,GAAGtQ,yBAAyB,CAACuQ,UAAU,CACxDJ,SAAS,EACTC,cACF,CAAC;IAED,IAAM/M,OAAO,GAAG,EAAE;IAAC,IAAAmN,KAAA,YAAAA,MAAA,EAE+B;MAChD,IAAM;QAAEC,WAAW;QAAEC,MAAM;QAAEvL,KAAK;QAAEwL,UAAU;QAAEzL;MAAM,CAAC,GACrDoL,aAAa,CAACrE,CAAC,CAAC;MAClB5I,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK;QACLuL,WAAW;QACX7K,IAAI,EAAE+K,UAAU,GAAGnS,OAAO,GAAGwD,SAAS;QACtCmD,KAAK;QACLO,KAAK,EAAEuG,CAAC;QACR5G,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAMvC,UAAU,GAAGI,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;UAC1DzE,aAAa,CAACiD,UAAU,CAAC;UACzBoN,MAAI,CAAC/N,QAAQ,CAACO,qBAAqB,CAACI,UAAU,EAAE4N,MAAM,CAAC;QACzD;MACF,CAAC,CAAC;IACJ,CAAC;IAfD,KAAK,IAAIzE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqE,aAAa,CAACvO,MAAM,EAAEkK,CAAC,IAAI,CAAC;MAAAuE,KAAA;IAAA;IAgBhD,OAAOnN,OAAO;EAChB;EAEAyE,mBAAmBA,CAAC9E,MAAqB,EAA0B;IAAA,IAAA6N,MAAA;IACjE,IAAM;MAAE3N;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM;MAAEgN;IAAU,CAAC,GAAGjN,KAAK;IAC3B,IAAM;MAAEd;IAAG,CAAC,GAAG,IAAI;IACnB,IAAMgO,cAAc,GAAGD,SAAS,CAACE,eAAe,CAC9CrN,MAAM,CAACyE,IAAI,EACXzE,MAAM,CAACsB,IACT,CAAwB;IACxB,IAAIgM,aAAa;IAEjB,IAAMpI,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3D,IAAIhF,UAAU,CAACwR,aAAa,CAAC9N,MAAM,CAACyE,IAAI,CAAC,EAAE;MACzC6I,aAAa,GAAGrQ,wBAAwB,CAACsQ,UAAU,CACjDnO,EAAE,EACFgO,cAAc,EACdM,MAAM,IAAI;QACR7Q,aAAa,CAACqI,WAAW,CAAC;QAC1B,IAAI,CAACzF,2BAA2B,CAACyF,WAAW,EAAEwI,MAAM,CAAC;MACvD,CACF,CAAC;IACH,CAAC,MAAM,IAAIpR,UAAU,CAACyR,aAAa,CAAC/N,MAAM,CAACyE,IAAI,CAAC,EAAE;MAChD6I,aAAa,GAAGpQ,wBAAwB,CAACqQ,UAAU,CACjDnO,EAAE,EACFgO,cAAc,EACdM,MAAM,IAAI;QACR7Q,aAAa,CAACqI,WAAW,CAAC;QAC1B,IAAI,CAACzF,2BAA2B,CAACyF,WAAW,EAAEwI,MAAM,CAAC;MACvD,CACF,CAAC;IACH,CAAC,MAAM;MACLjQ,GAAG,CAAC8G,KAAK,CAAC,4CAA4C,CAAC;MACvD,OAAO,IAAI;IACb;IAEA,IAAMlE,OAAO,GAAG,EAAE;IAAC,IAAA2N,MAAA,YAAAA,OAAA,EAE+B;MAChD,IAAM;QAAEN,MAAM;QAAEC;MAAW,CAAC,GAAGL,aAAa,CAACrE,CAAC,CAAC;MAC/C5I,OAAO,CAAC4B,IAAI,CAAAgM,aAAA,CAAAA,aAAA,KACPX,aAAa,CAACrE,CAAC,CAAC;QACnBrG,IAAI,EAAE+K,UAAU,GAAGnS,OAAO,GAAGwD,SAAS;QACtC0D,KAAK,EAAEuG,CAAC;QACR5G,MAAM,EAAEA,CAAA,KAAM;UACZ,IACE6C,WAAW,KAAKlG,SAAS,IACzB0O,MAAM,IACNA,MAAM,CAACjJ,IAAI,KAAKrI,oBAAoB,CAAC8R,mBAAmB,EACxD;YACA;UACF;UACArR,aAAa,CAACqI,WAAW,CAAC;UAC1B2I,MAAI,CAAC1O,QAAQ,CAACO,qBAAqB,CAACwF,WAAW,EAAEwI,MAAM,CAAC;QAC1D;MAAC,EACF,CAAC;IACJ,CAAC;IAlBD,KAAK,IAAIzE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqE,aAAa,CAACvO,MAAM,EAAEkK,CAAC,IAAI,CAAC;MAAA+E,MAAA;IAAA;IAmBhD,OAAO3N,OAAO;EAChB;EAEA+J,mBAAmBA,CACjBpK,MAAqB,EACrB+I,cAA2B,EAC3BoF,WAAyB,EACzBjQ,QAA6B,EACZ;IACjB,IAAM;MAAEkB;IAAG,CAAC,GAAG,IAAI;IACnB,IAAMqC,MAAM,GAAG0K,KAAK,CAACC,IAAI,CAACrD,cAAc,CAACsD,IAAI,CAAC,CAAC,CAAC;IAChD,IAAM+B,YAAY,GAAG3M,MAAM,CAACyF,GAAG,CAACtB,KAAK,IAAIxG,EAAE,CAACuL,WAAW,CAACQ,QAAQ,CAACvF,KAAK,CAAC,CAAC;IACxE,IAAMyI,gBAAgB,GACpBD,YAAY,CAACrP,MAAM,KAAK,CAAC,GAAGqP,YAAY,CAAC,CAAC,CAAC,GAAG,qBAAqB;IAErE,IAAIE,cAMI,GAAGH,WAAW;IACtB,IAAI,CAACG,cAAc,EAAE;MACnBA,cAAc,GAAG;QAAEjE,MAAM,EAAE,IAAI;QAAEtD,IAAI,EAAE;MAAK,CAAC;IAC/C;IACA,IAAM;MAAEsD,MAAM;MAAEtD,IAAI,EAAEzI;IAAW,CAAC,GAAGgQ,cAAc;IACnD,IAAMjO,OAAO,GAAG,EAAE;IAClB,IAAM;MAAEH;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM+E,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAE3D,IAAMiN,YAAY,GAAIC,IAAY;MAAA,IAAAC,qBAAA;MAAA,QAAAA,qBAAA,GAChCnS,UAAU,CAACoS,qBAAqB,CAACF,IAAI,CAAC,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAAA;IAE9C5R,aAAa,CAACqI,WAAW,CAAC;IAE1B7E,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,EACVxB,SAAS,CAACoS,IAAI,CACbrN,MAAM,CAACsN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC7H,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAQ+P,YAAY,CAAC3I,KAAK,CAAC,OAAG,CAC7D,CAAC,EACAnE,MAAM,CAAC1C,MAAM,GAAG,CAAC,iBAChBzB,KAAA;UAAKsR,SAAS,EAAC,gCAAgC;UAAAC,QAAA,GAAC,GAC7C,EAACpN,MAAM,CAAC1C,MAAM,EAAC,mBAClB;QAAA,CAAK,CACN;MAAA,CACE,CACN;MACD2D,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IAEFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,iBAAiB;MACxBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,UAAA9C,MAAA,CAAO6P,gBAAgB,sBAAmB;MAC1FhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN+D,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IAAIhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACY,EAAE,CAACD,WAAW,CAAC,CAAC,CACnDiE,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC9Q,EAAE,CAAC+Q,IAAI,CAAC,CAAC,EACxCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACqH,YAAY,CAAC,CAACO,IAAI,CAAC,MAAM,CAAC,EACrC5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,qBAAqB;MAC5BuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,cAAA9C,MAAA,CAAW6P,gBAAgB,sBAAmB;MAC9FhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN+D,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IAAIhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACgF,KAAK,CAACrE,WAAW,CAAC,CAAC,CACtDiE,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC/Q,GAAG,CAACgR,IAAI,CAAC,CAAC,EACzCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAS+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC5D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,iBAAiB;MACtBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,gBAAA9C,MAAA,CAAa6P,gBAAgB,CAAE;MAC/EhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CACHqK,MAAM,CAAC,CAAC,CACRiF,MAAM,CAAC,CAAC,CACRC,GAAG,CAAC,CAAC,CACLpR,GAAG,CACFiQ,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IAAIhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACmF,QAAQ,CAACxE,WAAW,CAAC,CAAC,CACzDiE,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC9Q,EAAE,CAAC+Q,IAAI,CAAC,CACzC,CAAC,EACHjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,QAAApH,MAAA,CAAQ+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC3D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,uBAAuB;MAC9BuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,wBAAA9C,MAAA,CAAqB6P,gBAAgB,CAAE;MACvFhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CACHqK,MAAM,CAAC,CAAC,CACRiF,MAAM,CAAC,CAAC,CACRlR,EAAE,CACDgQ,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IACdhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACmF,QAAQ,CAACxE,WAAW,CAAC,CAACuE,GAAG,CAAC,CAC5C,CAAC,CACAN,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC/Q,GAAG,CAACgR,IAAI,CAAC,CAC1C,CAAC,EACHjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAS+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC5D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,kBAAkB;MACzBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,mBAAA9C,MAAA,CAAgB6P,gBAAgB,CAAE;MAClFhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CACHqK,MAAM,CAAC,CAAC,CACRiF,MAAM,CAAC,CAAC,CACRC,GAAG,CAAC,CAAC,CACLpR,GAAG,CACFiQ,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IACdhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACI,MAAM,CAAC,YAAY,EAAEO,WAAW,CAClD,CAAC,CACAiE,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC9Q,EAAE,CAAC+Q,IAAI,CAAC,CACzC,CAAC,EACHjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,OAAApH,MAAA,CAAO+P,YAAY,CAAC3I,KAAK,CAAC,MAAG,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC3D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,gBAAgB;MACvBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,iBAAA9C,MAAA,CAAc6P,gBAAgB,CAAE;MAChFhM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CACHqK,MAAM,CAAC,CAAC,CACRiF,MAAM,CAAC,CAAC,CACRC,GAAG,CAAC,CAAC,CACLpR,GAAG,CACFiQ,YAAY,CACTlH,GAAG,CAAC8D,WAAW,IACdhL,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACI,MAAM,CAAC,UAAU,EAAEO,WAAW,CAChD,CAAC,CACAiE,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,CAAC9Q,EAAE,CAAC+Q,IAAI,CAAC,CACzC,CAAC,EACHjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,QAAApH,MAAA,CAAQ+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC3D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF,OAAO/O,OAAO;EAChB;EAEAuJ,mBAAmBA,CACjB5J,MAAqB,EACrB+I,cAA2B,EAC3BoF,WAAgC,EAChCjQ,QAA6B,EACZ;IACjB,IAAMuD,MAAM,GAAG0K,KAAK,CAACC,IAAI,CAACrD,cAAc,CAACsD,IAAI,CAAC,CAAC,CAAC;IAChD,IAAMoD,SAAS,GAAGhO,MAAM,CAAC1C,MAAM,KAAK,CAAC,MAAAP,MAAA,CAAMiD,MAAM,IAAK,qBAAqB;IAC3E;IACA;IACA,IAAM8M,YAAY,GAAIC,IAAY,IAChClS,UAAU,CAACqN,UAAU,CAAC3J,MAAM,CAACyE,IAAI,CAAC,GAC9B2G,MAAM,CAACC,YAAY,CAACmD,IAAc,CAAC,MAAAhQ,MAAA,CAChCgQ,IAAI,CAAE;IAEf,IAAInE,MAAqC,GAAG,IAAI;IAChD,IAAI/L,UAAyB,GAAG,IAAI;IACpC,IAAI6P,WAAW,EAAE;MACf9D,MAAM,GAAG8D,WAAW,CAAC9D,MAAM;MAC3B/L,UAAU,GAAG6P,WAAW,CAACpH,IAAI;IAC/B;IACA,IAAM1G,OAAO,GAAG,EAAE;IAClB,IAAM;MAAEH;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM+E,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3DzE,aAAa,CAACqI,WAAW,CAAC;IAC1B7E,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,EACVxB,SAAS,CAACoS,IAAI,CACbrN,MAAM,CAACsN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC7H,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAQ+P,YAAY,CAAC3I,KAAK,CAAC,OAAG,CAC7D,CAAC,EACAnE,MAAM,CAAC1C,MAAM,GAAG,CAAC,iBAChBzB,KAAA;UAAKsR,SAAS,EAAC,gCAAgC;UAAAC,QAAA,GAAC,GAC7C,EAACpN,MAAM,CAAC1C,MAAM,EAAC,mBAClB;QAAA,CAAK,CACN;MAAA,CACE,CACN;MACD2D,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IACFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,aAAa;MACpBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,UAAA9C,MAAA,CAAOiR,SAAS,CAAE;MAClEpN,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN5I,MAAM,CACHyF,GAAG,CAACtB,KAAK,IACR,IAAI,CAACtG,0BAA0B,CAACU,MAAM,EAAE4F,KAAe,CACzD,CAAC,CACAqJ,MAAM,CAAC,CAACS,GAAG,EAAEP,IAAI,KAAKO,GAAG,CAACtR,EAAE,CAAC+Q,IAAI,CAAC,CAAC,EACtCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,QAAApH,MAAA,CAAQ+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC3D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,iBAAiB;MACxBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,cAAA9C,MAAA,CAAWiR,SAAS,CAAE;MACtEpN,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN5I,MAAM,CACHyF,GAAG,CAACtB,KAAK,IACR,IAAI,CAACtG,0BAA0B,CAACU,MAAM,EAAE4F,KAAe,CAAC,CAAC2J,GAAG,CAAC,CAC/D,CAAC,CACAN,MAAM,CAAC,CAACS,GAAG,EAAEP,IAAI,KAAKO,GAAG,CAACvR,GAAG,CAACgR,IAAI,CAAC,CAAC,EACvCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CAACyF,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAS+P,YAAY,CAAC3I,KAAK,CAAC,CAAE,CAAC,CAACkJ,IAAI,CAAC,MAAM,CAAC,EAC5D5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;;IAEF;IACA;IACA;IACA,IACE,CAACrG,cAAc,CAACQ,GAAG,CAACe,MAAM,CAACqF,GAAG,CAAC,IAC/B,CAAC5G,cAAc,CAACQ,GAAG,CAACe,MAAM,CAACC,iBAAiB,CAAC,IAC7C,CAACxB,cAAc,CAACQ,GAAG,CAACe,MAAM,CAACO,iBAAiB,CAAC,IAC7C,CAACvO,UAAU,CAACqN,UAAU,CAAC3J,MAAM,CAACyE,IAAI,CAAC,EACnC;MACA;MACA,IAAMmL,QAAQ,GAAGnO,MAAM,CAACwN,MAAM,CAAC,CAACY,CAAC,EAAEC,CAAC,KAAMD,CAAC,GAAGC,CAAC,GAAGD,CAAC,GAAGC,CAAE,CAAC;MACzD,IAAMC,QAAQ,GAAGtO,MAAM,CAACwN,MAAM,CAAC,CAACY,CAAC,EAAEC,CAAC,KAAMD,CAAC,GAAGC,CAAC,GAAGD,CAAC,GAAGC,CAAE,CAAC;MACzD,IAAME,cAAc,GAAG,IAAI,CAACxQ,6BAA6B,CACvDQ,MAAM,CAACyE,IAAI,EACXmL,QACF,CAAC;MACD,IAAMK,cAAc,GAAG,IAAI,CAACzQ,6BAA6B,CACvDQ,MAAM,CAACyE,IAAI,EACXsL,QACF,CAAC;MACD,IAAMG,YAAY,MAAA1R,MAAA,CAAMwR,cAAc,CAAE;MACxC,IAAMG,YAAY,MAAA3R,MAAA,CAAMyR,cAAc,CAAE;MAExC5P,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,cAAc;QACrBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,uBAAA9C,MAAA,CAAoB0R,YAAY,CAAE;QAClF7N,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACK,WAAW,CAACsF,cAAc,CAAC,EAC3C9R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,MAAAE,MAAA,CACN+P,YAAY,CAACqB,QAAQ,CAAC,GAC1B1R,QACF,CACF,CAAC;QACH,CAAC;QACDwE,KAAK,EAAE,EAAE;QACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;MAC/B,CAAC,CAAC;MACF/O,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,0BAA0B;QACjCuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,mCAAA9C,MAAA,CAAgC0R,YAAY,CAAE;QAC9F7N,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAAC+F,oBAAoB,CAACJ,cAAc,CAAC,EACpD9R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,OAAAE,MAAA,CACL+P,YAAY,CAACqB,QAAQ,CAAC,GAC3B1R,QACF,CACF,CAAC;QACH,CAAC;QACDwE,KAAK,EAAE,EAAE;QACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;MAC/B,CAAC,CAAC;MACF/O,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,WAAW;QAClBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,oBAAA9C,MAAA,CAAiB2R,YAAY,CAAE;QAC/E9N,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACS,QAAQ,CAACmF,cAAc,CAAC,EACxC/R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,MAAAE,MAAA,CACN+P,YAAY,CAACwB,QAAQ,CAAC,GAC1B7R,QACF,CACF,CAAC;QACH,CAAC;QACDwE,KAAK,EAAE,EAAE;QACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;MAC/B,CAAC,CAAC;MACF/O,OAAO,CAAC4B,IAAI,CAAC;QACXC,KAAK,EAAE,uBAAuB;QAC9BuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,gCAAA9C,MAAA,CAA6B2R,YAAY,CAAE;QAC3F9N,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACgG,iBAAiB,CAACJ,cAAc,CAAC,EACjD/R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,OAAAE,MAAA,CACL+P,YAAY,CAACwB,QAAQ,CAAC,GAC3B7R,QACF,CACF,CAAC;QACH,CAAC;QACDwE,KAAK,EAAE,EAAE;QACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;MAC/B,CAAC,CAAC;IACJ;IAEA,OAAO/O,OAAO;EAChB;EAEAqJ,oBAAoBA,CAClB1J,MAAqB,EACrB+L,SAAwB,EACxBoC,WAAgC,EAChCjQ,QAA6B,EACZ;IACjB,IAAMmC,OAAwB,GAAG,EAAE;IAEnC,IAAM;MAAEH;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM;MAAEkK,MAAM;MAAEtD,IAAI,EAAEzI;IAAW,CAAC,GAAG6P,WAAW,IAAI,CAAC,CAAC;IACtD,IAAMjJ,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3DzE,aAAa,CAACqI,WAAW,CAAC;IAE1B7E,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,EAAC,IACN,EAAC6N,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,MAAM,EAAC,IAC7B;MAAA,CAAK,CACN;MACDrJ,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IAEFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,MAAM;MACbuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,aAAU;MAC1De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACiG,MAAM,CAAC,CAAC,EACxBpS,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,MAAM,EACNJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,OAAO;MACduL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,cAAW;MAC3De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACkG,OAAO,CAAC,CAAC,EACzBrS,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,OAAO,EACPJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,SAAS;MAChBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,aAAU;MAC1De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACiF,MAAM,CAAC,CAAC,EACxBpR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,MAAM,EACNJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IAEF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,aAAa;MACpBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,iBAAc;MAC9De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACiF,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,EAC9BrR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,OAAO,EACPJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IAEF,OAAO/O,OAAO;EAChB;EAEA8J,iBAAiBA,CACfnK,MAAqB,EACrB+I,cAA4B,EAC5Bc,mBAA4C,EAC5CK,sBAA+C,EAC/CiE,WAAgC,EAChCjQ,QAA6B,EACZ;IACjB,IAAM;MAAEkB;IAAG,CAAC,GAAG,IAAI;IAEnB,IAAMqC,MAAM,GAAG0K,KAAK,CAACC,IAAI,CAACrD,cAAc,CAACsD,IAAI,CAAC,CAAC,CAAyB;IACxE,IAAM+B,YAAY,GAAG3M,MAAM,CAACyF,GAAG,CAACtB,KAAK,IAAIxG,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAAChF,KAAK,CAAC,CAAC;IACxE,IAAM6J,SAAS,GACbrB,YAAY,CAACrP,MAAM,KAAK,CAAC,GACrBmL,sBAAsB,CAACwD,MAAM,CAACjM,MAAM,CAAC,CAAC,CAAC,CAAC,GACxC,qBAAqB;IAE3B,IAAMmO,QAAQ,GAAGnO,MAAM,CAACwN,MAAM,CAAC,CAACY,CAAC,EAAEC,CAAC,KAAMD,CAAC,GAAGC,CAAC,GAAGD,CAAC,GAAGC,CAAE,CAAC;IACzD,IAAMC,QAAQ,GAAGtO,MAAM,CAACwN,MAAM,CAAC,CAACY,CAAC,EAAEC,CAAC,KAAMD,CAAC,GAAGC,CAAC,GAAGD,CAAC,GAAGC,CAAE,CAAC;IACzD,IAAME,cAAc,GAAG5Q,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAACgF,QAAQ,CAAC;IACxD,IAAMK,cAAc,GAAG7Q,EAAE,CAACuL,WAAW,CAACC,QAAQ,CAACmF,QAAQ,CAAC;IACxD,IAAMS,WAAW,GAAG3G,mBAAmB,CAAC6D,MAAM,CAACkC,QAAQ,CAAC;IACxD,IAAMa,WAAW,GAAG5G,mBAAmB,CAAC6D,MAAM,CAACqC,QAAQ,CAAC;IACxD,IAAMW,cAAc,GAAGxG,sBAAsB,CAACwD,MAAM,CAACkC,QAAQ,CAAC;IAC9D,IAAMe,cAAc,GAAGzG,sBAAsB,CAACwD,MAAM,CAACqC,QAAQ,CAAC;IAE9D,IAAI1F,MAAqC,GAAG,IAAI;IAChD,IAAI/L,UAAyB,GAAG,IAAI;IACpC,IAAI6P,WAAW,EAAE;MACf9D,MAAM,GAAG8D,WAAW,CAAC9D,MAAM;MAC3B/L,UAAU,GAAG6P,WAAW,CAACpH,IAAI;IAC/B;IACA,IAAM;MAAE7G;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM+E,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3DzE,aAAa,CAACqI,WAAW,CAAC;IAE1B,IAAM7E,OAAO,GAAG,EAAE;IAElBA,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,EACVxB,SAAS,CAACoS,IAAI,CACbrN,MAAM,CACHsN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACZ7H,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAAQ0L,sBAAsB,CAACwD,MAAM,CAAC9H,KAAK,CAAC,OAAG,CAC7D,CAAC,EACAnE,MAAM,CAAC1C,MAAM,GAAG,CAAC,iBAChBzB,KAAA;UAAKsR,SAAS,EAAC,gCAAgC;UAAAC,QAAA,GAAC,GAC7C,EAACpN,MAAM,CAAC1C,MAAM,EAAC,mBAClB;QAAA,CAAK,CACN;MAAA,CACE,CACN;MACD2D,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IACFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,SAAS;MAChBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,UAAA9C,MAAA,CAAOiR,SAAS,CAAE;MAClEpN,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN+D,YAAY,CACTlH,GAAG,CAAC0J,WAAW,IAAI5Q,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACY,EAAE,CAAC2F,WAAW,CAAC,CAAC,CACnD3B,MAAM,CAAC,CAACS,GAAG,EAAEP,IAAI,KAAKO,GAAG,CAACtR,EAAE,CAAC+Q,IAAI,CAAC,CAAC,EACtCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CACHyF,GAAG,CAACtB,KAAK,QAAApH,MAAA,CAAQqL,mBAAmB,CAAC6D,MAAM,CAAC9H,KAAK,CAAC,CAAE,CAAC,CACrDkJ,IAAI,CAAC,MAAM,CAAC,EACf5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,aAAa;MACpBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,cAAA9C,MAAA,CAAWiR,SAAS,CAAE;MACtEpN,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACN+D,YAAY,CACTlH,GAAG,CAAC0J,WAAW,IAAI5Q,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACgF,KAAK,CAACuB,WAAW,CAAC,CAAC,CACtD3B,MAAM,CAAC,CAACS,GAAG,EAAEP,IAAI,KAAKO,GAAG,CAACvR,GAAG,CAACgR,IAAI,CAAC,CAAC,EACvCjR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACVmD,MAAM,CACHyF,GAAG,CAACtB,KAAK,SAAApH,MAAA,CAASqL,mBAAmB,CAAC6D,MAAM,CAAC9H,KAAK,CAAC,CAAE,CAAC,CACtDkJ,IAAI,CAAC,MAAM,CAAC,EACf5Q,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,gBAAgB;MACvBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,iBAAA9C,MAAA,CAAcmS,cAAc,CAAE;MAC9EtO,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACS,QAAQ,CAACmF,cAAc,CAAC,EACxC/R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,MAAAE,MAAA,CACNiS,WAAW,GACfvS,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,yBAAyB;MAChCuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,6BAAA9C,MAAA,CAA0BmS,cAAc,CAAE;MAC1FtO,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACgG,iBAAiB,CAACJ,cAAc,CAAC,EACjD/R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,OAAAE,MAAA,CACLiS,WAAW,GAChBvS,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,eAAe;MACtBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,uBAAA9C,MAAA,CAAoBkS,cAAc,CAAE;MACpFrO,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACK,WAAW,CAACsF,cAAc,CAAC,EAC3C9R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,MAAAE,MAAA,CACNgS,WAAW,GACftS,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,wBAAwB;MAC/BuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,4BAAA9C,MAAA,CAAyBkS,cAAc,CAAE;MACzFrO,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAAC+F,oBAAoB,CAACJ,cAAc,CAAC,EACpD9R,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,OAAAE,MAAA,CACLgS,WAAW,GAChBtS,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF,OAAO/O,OAAO;EAChB;EAEAmJ,wBAAwBA,CACtBxJ,MAAqB,EACrBmO,WAAyB,EACzBjQ,QAA6B,EACZ;IACjB,IAAM;MAAEkB;IAAG,CAAC,GAAG,IAAI;IACnB,IAAM4L,WAAW,GAAG5L,EAAE,CAACuL,WAAW,CAACQ,QAAQ,CAAC,EAAE,CAAC;IAC/C,IAAImD,cAMI,GAAGH,WAAW;IACtB,IAAI,CAACG,cAAc,EAAE;MACnBA,cAAc,GAAG;QAAEjE,MAAM,EAAE,IAAI;QAAEtD,IAAI,EAAE;MAAK,CAAC;IAC/C;IACA,IAAM;MAAEsD,MAAM;MAAEtD,IAAI,EAAEzI;IAAW,CAAC,GAAGgQ,cAAc;IACnD,IAAMjO,OAAO,GAAG,EAAE;IAClB,IAAM;MAAEH;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM+E,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3DzE,aAAa,CAACqI,WAAW,CAAC;IAE1B7E,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,eACXV,IAAA;UAAGoR,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAK,CAAG,CAAC;MAAA,CAChC,CACN;MACDnM,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IAEFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,iBAAiB;MACxBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,cAAW;MAC3De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACY,EAAE,CAACD,WAAW,CAAC,EAC/B9M,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,OAEVJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,qBAAqB;MAC5BuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,kBAAe;MAC/De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACgF,KAAK,CAACrE,WAAW,CAAC,EAClC9M,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,QAEVJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IAEF,OAAO/O,OAAO;EAChB;EAEA+I,iBAAiBA,CACfpJ,MAAqB,EACrBmO,WAAyB,EACzBjQ,QAA6B,EACZ;IACjB,IAAImM,MAAqC,GAAG,IAAI;IAChD,IAAI/L,UAAyB,GAAG,IAAI;IACpC,IAAI6P,WAAW,EAAE;MACf9D,MAAM,GAAG8D,WAAW,CAAC9D,MAAM;MAC3B/L,UAAU,GAAG6P,WAAW,CAACpH,IAAI;IAC/B;IACA,IAAM1G,OAAO,GAAG,EAAE;IAClB,IAAM;MAAEH;IAAM,CAAC,GAAG,IAAI,CAACf,QAAQ,CAACgB,KAAK;IACrC,IAAM+E,WAAW,GAAGhF,KAAK,CAAC0N,oBAAoB,CAAC5N,MAAM,CAACsB,IAAI,CAAC;IAC3DzE,aAAa,CAACqI,WAAW,CAAC;IAE1B7E,OAAO,CAAC4B,IAAI,CAAC;MACX0M,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9C3Q,QAAQ,GACLJ,0BAA0B,CAACW,iBAAiB,CAACP,QAAQ,CAAC,GACtD,EAAE,EAAE,GAAG,eACXV,IAAA;UAAGoR,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAI,CAAG,CAAC;MAAA,CAC/B,CACN;MACDnM,KAAK,EAAE,CAAC;MACRP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAACC;IAC/B,CAAC,CAAC;IACFjJ,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,SAAS;MAChBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,aAAU;MAC1De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACiF,MAAM,CAAC,CAAC,EACxBpR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,MAAM,EACNJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IACF/O,OAAO,CAAC4B,IAAI,CAAC;MACXC,KAAK,EAAE,aAAa;MACpBuL,WAAW,0BAAAjP,MAAA,CAA0BwB,MAAM,CAACsB,IAAI,iBAAc;MAC9De,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAAC6P,cAAc,CAC1B9J,WAAW,EACXpH,0BAA0B,CAACC,uBAAuB,CAChDsM,MAAM,EACNrK,MAAM,CAACqK,MAAM,CAAC,CAAC,CAACiF,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,EAC9BrR,QACF,CAAC,EACDJ,0BAA0B,CAACO,kBAAkB,CAC3CC,UAAU,EACV,OAAO,EACPJ,QACF,CACF,CAAC;MACH,CAAC;MACDwE,KAAK,EAAE,EAAE;MACTP,KAAK,EAAExG,cAAc,CAAC0N,MAAM,CAAC+F;IAC/B,CAAC,CAAC;IAEF,OAAO/O,OAAO;EAChB;EAEAoD,aAAaA,CACXzD,MAAqB,EACrBgF,WAAuB,EACvB5D,UAA8B,EACb;IACjB,IAAMR,KAAK,GAAG,IAAI,CAACzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;IACtC,IAAM;MAAEG;IAAyB,CAAC,GAAGJ,KAAK;IAC1C,IAAMiQ,WAAW,GAAG,CAClB;MACE3O,KAAK,KAAA1D,MAAA,CAAKwB,MAAM,CAACsB,IAAI,eAAY;MACjCoB,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBqB,WAAW,EACXlH,0BAA0B,CAAC8F,qBAAqB,CAACkN,SACnD,CAAC;MACH,CAAC;MACDlO,IAAI,EAAE,IAAI,CAACmO,eAAe,CACxB3P,UAAU,EACVtD,0BAA0B,CAAC8F,qBAAqB,CAACkN,SACnD,CAAC,GACGvV,QAAQ,GACRyD,SAAS;MACb6D,SAAS,EAAE7B;IACb,CAAC,EACD;MACEkB,KAAK,KAAA1D,MAAA,CAAKwB,MAAM,CAACsB,IAAI,gBAAa;MAClCoB,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBqB,WAAW,EACXlH,0BAA0B,CAAC8F,qBAAqB,CAACoN,UACnD,CAAC;MACH,CAAC;MACDpO,IAAI,EAAE,IAAI,CAACmO,eAAe,CACxB3P,UAAU,EACVtD,0BAA0B,CAAC8F,qBAAqB,CAACoN,UACnD,CAAC,GACGzV,QAAQ,GACRyD,SAAS;MACb6D,SAAS,EAAE7B;IACb,CAAC,EACD;MACEkB,KAAK,eAAe;MACpBQ,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBqB,WAAW,EACXlH,0BAA0B,CAAC8F,qBAAqB,CAACC,IAAI,EACrD,KAAK,EACL,IACF,CAAC;MACH,CAAC;MACDtB,QAAQ,EAAE,CAACnB;IACb,CAAC,CACF;IACD,IAAI9E,UAAU,CAACsI,YAAY,CAAC5E,MAAM,CAACyE,IAAI,CAAC,EAAE;MACxCoM,WAAW,CAAC5O,IAAI,CAAC;QACfC,KAAK,SAAA1D,MAAA,CAASwB,MAAM,CAACsB,IAAI,gBAAa;QACtCoB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBqB,WAAW,EACXlH,0BAA0B,CAAC8F,qBAAqB,CAACkN,SAAS,EAC1D,IACF,CAAC;QACH,CAAC;QACDlO,IAAI,EAAE,IAAI,CAACmO,eAAe,CACxB3P,UAAU,EACVtD,0BAA0B,CAAC8F,qBAAqB,CAACkN,SAAS,EAC1D,IACF,CAAC,GACGvV,QAAQ,GACRyD,SAAS;QACb6D,SAAS,EAAE7B;MACb,CAAC,CAAC;MACF6P,WAAW,CAAC5O,IAAI,CAAC;QACfC,KAAK,SAAA1D,MAAA,CAASwB,MAAM,CAACsB,IAAI,kBAAe;QACxCoB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBqB,WAAW,EACXlH,0BAA0B,CAAC8F,qBAAqB,CAACoN,UAAU,EAC3D,IACF,CAAC;QACH,CAAC;QACDpO,IAAI,EAAE,IAAI,CAACmO,eAAe,CACxB3P,UAAU,EACVtD,0BAA0B,CAAC8F,qBAAqB,CAACoN,UAAU,EAC3D,IACF,CAAC,GACGzV,QAAQ,GACRyD,SAAS;QACb6D,SAAS,EAAE7B;MACb,CAAC,CAAC;IACJ;IACA,OAAO6P,WAAW;EACpB;EAEAnN,qBAAqBA,CACnB1D,MAAqB,EACrBkF,WAAuB,EACN;IACjB,IAAMtE,KAAK,GAAG,IAAI,CAACzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;IACtC,IAAM;MAAEG;IAAyB,CAAC,GAAGJ,KAAK;IAC1C,IAAM8C,qBAAqB,GAAG,CAC5B;MACExB,KAAK,EAAE,aAAa;MACpByM,WAAW,eACTrR,KAAA;QAAKsR,SAAS,EAAC,6BAA6B;QAAAC,QAAA,gBAC1CrR,IAAA;UAAMoR,SAAS,EAAC,MAAM;UAAAC,QAAA,eACpBrR,IAAA,CAACnC,eAAe;YACduH,IAAI,EAAErH,QAAS;YACf0V,KAAK,EAAE;cAAEC,KAAK,EAAElQ,wBAAwB,aAAxBA,wBAAwB,cAAxBA,wBAAwB,GAAIhC;YAAU;UAAE,CACzD;QAAC,CACE,CAAC,eACPxB,IAAA;UAAMoR,SAAS,EAAC,OAAO;UAAAC,QAAA,EAAC;QAAmB,CAAM,CAAC,eAClDrR,IAAA;UAAMoR,SAAS,EAAC,UAAU;UAAAC,QAAA,EACvBjT,kBAAkB,CAACsI,aAAa,CAAC,CAAC,GAAG,QAAQ,GAAG;QAAY,CACzD,CAAC;MAAA,CACJ,CACN;MACDxB,KAAK,EAAE;IACT,CAAC,EACD;MACER,KAAK,KAAA1D,MAAA,CAAKwB,MAAM,CAACsB,IAAI,eAAY;MACjCoB,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBuB,WAAW,EACXpH,0BAA0B,CAAC8F,qBAAqB,CAACkN,SAAS,EAC1D,KAAK,EACL,IACF,CAAC;MACH;IACF,CAAC,EACD;MACE5O,KAAK,KAAA1D,MAAA,CAAKwB,MAAM,CAACsB,IAAI,gBAAa;MAClCoB,KAAK,EAAE,EAAE;MACTL,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBuB,WAAW,EACXpH,0BAA0B,CAAC8F,qBAAqB,CAACoN,UAAU,EAC3D,KAAK,EACL,IACF,CAAC;MACH;IACF,CAAC,CACF;IACD,IAAI1U,UAAU,CAACsI,YAAY,CAAC5E,MAAM,CAACyE,IAAI,CAAC,EAAE;MACxCf,qBAAqB,CAACzB,IAAI,CAAC;QACzBC,KAAK,SAAA1D,MAAA,CAASwB,MAAM,CAACsB,IAAI,gBAAa;QACtCoB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBuB,WAAW,EACXpH,0BAA0B,CAAC8F,qBAAqB,CAACkN,SAAS,EAC1D,IAAI,EACJ,IACF,CAAC;QACH;MACF,CAAC,CAAC;MACFpN,qBAAqB,CAACzB,IAAI,CAAC;QACzBC,KAAK,SAAA1D,MAAA,CAASwB,MAAM,CAACsB,IAAI,kBAAe;QACxCoB,KAAK,EAAE,EAAE;QACTL,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAI,CAAClD,QAAQ,CAACwE,UAAU,CACtBuB,WAAW,EACXpH,0BAA0B,CAAC8F,qBAAqB,CAACoN,UAAU,EAC3D,IAAI,EACJ,IACF,CAAC;QACH;MACF,CAAC,CAAC;IACJ;IACA,OAAOtN,qBAAqB;EAC9B;EAEAqN,eAAeA,CACb3P,UAA+B,EAGtB;IAAA,IAFT+P,SAAwB,GAAArS,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAAA,IAC/BsS,KAAK,GAAAtS,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAEb,IAAI,CAACsC,UAAU,EAAE;MACf,OAAO,KAAK;IACd;IACA,OAAOA,UAAU,CAAC+P,SAAS,KAAKA,SAAS,IAAI/P,UAAU,CAACgQ,KAAK,KAAKA,KAAK;EACzE;AACF;AAAC/R,eAAA,CAliEKvB,0BAA0B,gBACVnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CAD/CvB,0BAA0B,wBAGFnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CAHvDvB,0BAA0B,kBAKRnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CALjDvB,0BAA0B,2BAOCnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CAP1DvB,0BAA0B,gBASVnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CAT/CvB,0BAA0B,gBAWVnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,EAAE;AAAAjK,eAAA,CAX/CvB,0BAA0B,gBAaVnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,GAAG;AAAAjK,eAAA,CAbhDvB,0BAA0B,kBAeRnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,GAAG;AAAAjK,eAAA,CAflDvB,0BAA0B,yBAiBDnC,cAAc,CAAC0N,MAAM,CAACC,IAAI,GAAG,GAAG;AAAAjK,eAAA,CAjBzDvB,0BAA0B,2BAmBC;EAC7BgT,SAAS,EAAE,KAAK;EAChBE,UAAU,EAAE,MAAM;EAClBnN,IAAI,EAAE;AACR,CAAC;AA6gEH,eAAe/F,0BAA0B"}
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","GridRange","GridRenderer","isDeletableGridModel","isEditableGridModel","isExpandableGridModel","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","ClipboardPermissionsDeniedError","ClipboardUnavailableError","TextUtils","assertNotEmpty","assertNotNaN","assertNotNull","copyToClipboard","readFromClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","isPartitionedGridModel","jsxs","_jsxs","jsx","_jsx","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","MAX_MULTISELECT_ROWS","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","concat","getOperatorAsText","getRowOptionFormatted","command","cellValue","len","arguments","length","undefined","truncate","constructor","irisGrid","dh","_defineProperty","getNumberValueEqualsFilter","bind","getFilterValueForNumberOrChar","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelIndex","gridPoint","column","visibleIndex","model","props","columns","actions","metrics","reverse","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","name","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFreezable","getColumnHeaderParentGroup","hasExpandableRows","isColumnFrozen","isColumnSortable","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","disabled","unFreezeColumnByColumnName","freezeColumnByColumnName","order","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","GROUP_COPY","shortcutText","isMacPlatform","_model$textForColumnH","textForColumnHeader","catch","e","error","isDateType","type","GROUP_FORMAT","dateFormatActions","isNumberType","_this$numberFormatAct","numberFormatActions","getCellActions","modelColumn","grid","columnIndex","row","rowIndex","canCopy","modelRow","getModelRow","sourceCell","sourceForCell","sourceColumn","sourceRow","value","valueForCell","selectedRanges","isRowExpandable","expandingColumn","cellText","textForCell","isRowExpanded","GROUP_EXPAND_COLLAPSE","setRowExpanded","isExpandAllAvailable","expandAll","collapseAll","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","isEditable","canPasteInOriginalRange","every","range","isEditableRange","isCellInOriginalRange","containsCell","canPasteInCell","makeCell","_action","_asyncToGenerator","text","items","split","map","pasteValue","err","handleOpenNoPastePermissionModal","apply","GROUP_VIEW_CONTENTS","setState","showOverflowModal","overflowText","getValueForCell","isPartitionAwareSourceTable","selectPartitionKeyFromTable","getCellFilterActions","_this","getSelectedRanges","isFilterable","settings","rowCount","lastRow","pop","lastRowSize","_lastRow$endRow","startColumn","startRow","endColumn","endRow","snapshot","snapshotValues","Set","i","add","filterMenu","nullFilterActions","groups","high","has","emptyStringFilterActions","isBooleanType","booleanFilterActions","isCharType","numberFilterActions","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","dateFilterActions","stringFilterActions","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","eq","columnType","ofString","String","fromCharCode","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","columnHeaderHeight","gridY","columnHeaderMaxDepth","valueText","clearFilterRange","getClearFilterRange","removeColumnFilter","Array","from","keys","col","COPY","copyRanges","isDeletable","GROUP_EDIT","isDeletableRanges","deleteRanges","gridWrapper","triggerMenu","clientX","clientY","_this2","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","_loop","description","format","isSelected","getColumnIndexByName","_this3","isDecimalType","isIntegerType","_loop2","_objectSpread","TYPE_CONTEXT_CUSTOM","quickFilter","filterValues","valueDescription","newQuickFilter","toFilterText","item","_TableUtils$escapeQui","escapeQuickTextFilter","menuElement","className","children","join","slice","setQuickFilter","reduce","prev","curr","low","notEq","isNull","not","contains","valueDesc","acc","NaN","maxValue","a","b","minValue","maxFilterValue","minFilterValue","maxValueText","minValueText","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","maxDateText","minDateText","maxPreviewText","minPreviewText","valueFilter","sortActions","ascending","checkColumnSort","descending","style","color","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n type IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n type ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n type ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n type EventHandlerResult,\n type Grid,\n GridMouseHandler,\n type GridPoint,\n GridRange,\n GridRenderer,\n isDeletableGridModel,\n isEditableGridModel,\n isExpandableGridModel,\n type ModelIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n type TableColumnFormat,\n type IntegerColumnFormat,\n type SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport {\n ClipboardPermissionsDeniedError,\n ClipboardUnavailableError,\n TextUtils,\n assertNotEmpty,\n assertNotNaN,\n assertNotNull,\n copyToClipboard,\n readFromClipboard,\n} from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport type IrisGrid from '../IrisGrid';\nimport { type QuickFilter } from '../CommonTypes';\nimport { isPartitionedGridModel } from '../PartitionedGridModel';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\nconst MAX_MULTISELECT_ROWS = 1000;\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_EXPAND_COLLAPSE = ContextActions.groups.high + 55;\n\n static GROUP_GOTO = ContextActions.groups.high + 60;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static GROUP_VIEW_CONTENTS = ContextActions.groups.high + 175;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: DhType.FilterCondition | null | undefined,\n newColumnFilter: DhType.FilterCondition,\n operator?: '&&' | '||' | null\n ): DhType.FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n static getRowOptionFormatted(\n command: string,\n cellValue: string,\n len = 30\n ): string {\n return `${command} \"${GridRenderer.truncate(\n cellValue,\n len - command.length - 3\n )}\"`;\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid, dh: typeof DhType) {\n super();\n\n this.getNumberValueEqualsFilter =\n this.getNumberValueEqualsFilter.bind(this);\n this.getFilterValueForNumberOrChar =\n this.getFilterValueForNumberOrChar.bind(this);\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.dh = dh;\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n dh: typeof DhType;\n\n getHeaderActions(\n modelIndex: ModelIndex,\n gridPoint: GridPoint\n ): ResolvableContextAction[] {\n const { irisGrid } = this;\n const { column: visibleIndex } = gridPoint;\n assertNotNull(visibleIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelIndex];\n\n const actions = [] as ContextAction[];\n\n const { metrics, reverse, quickFilters, advancedFilters, searchFilter } =\n irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, column.name);\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFreezable =\n model.getColumnHeaderParentGroup(modelIndex, 0) === undefined &&\n !(isExpandableGridModel(model) && model.hasExpandableRows);\n const isColumnFrozen = model.isColumnFrozen(modelIndex);\n const isColumnSortable = model.isColumnSortable(modelIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(visibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n disabled: !isColumnFreezable,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(visibleIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelIndex) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(visibleIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelIndex, columnSort),\n disabled: !isColumnSortable,\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (reverse && modelSort.length === 1) ||\n (columnSort && reverse && modelSort.length === 2) ||\n modelSort.length === 0 ||\n !isColumnSortable,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelIndex),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (reverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n visibleIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title: reverse ? 'Clear Reverse Table' : 'Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n this.irisGrid.reverse(!reverse);\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n shortcutText: ContextActionUtils.isMacPlatform() ? '⌥Click' : 'Alt+Click',\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelIndex) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: ModelIndex,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const sourceCell = model.sourceForCell(modelColumn, modelRow);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const value = model.valueForCell(sourceColumn, sourceRow);\n const { selectedRanges } = irisGrid.state;\n\n const column = columns[sourceColumn];\n\n const actions = [] as ContextAction[];\n\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n\n if (column == null || rowIndex == null) return actions;\n\n // Expand/Collapse options\n if (isExpandableGridModel(model) && model.isRowExpandable(sourceRow)) {\n // If there are grouped columns, then it is a rollup\n // The first column will be the \"group\" column with the value that should be expanded\n const expandingColumn = 0;\n const cellValue = model.valueForCell(expandingColumn, sourceRow);\n const cellText =\n cellValue == null\n ? 'null'\n : model.textForCell(expandingColumn, sourceRow);\n\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n model.isRowExpanded(sourceRow) ? 'Collapse' : 'Expand',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 10,\n action: () => {\n model.setRowExpanded(sourceRow, !model.isRowExpanded(sourceRow));\n },\n });\n\n if (model.isExpandAllAvailable === true) {\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n 'Expand All in',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 20,\n action: () => {\n model.setRowExpanded(sourceRow, true, true);\n },\n });\n }\n }\n\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n model.isExpandAllAvailable === true\n ) {\n actions.push({\n title: 'Expand Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 30,\n action: () => {\n model.expandAll();\n },\n });\n\n actions.push({\n title: 'Collapse Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 40,\n action: () => {\n model.collapseAll();\n },\n });\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () =>\n this.irisGrid.toggleGotoRow(`${rowIndex + 1}`, `${value}`, column.name),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n shortcutText: ContextActionUtils.isMacPlatform()\n ? '⌥Click'\n : 'Alt+Click',\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n if (isEditableGridModel(model) && model.isEditable) {\n // selectedRanges is updated by GridSelectionMouseHandler in the same cycle so can't access the updated value here\n // so need to handle cases where a cell is right clicked without highlighting it first\n const canPasteInOriginalRange = selectedRanges.every(range =>\n model.isEditableRange(range)\n );\n\n // To account for how when a cell outside of a selection is right clicked, that selection gets cleared\n const isCellInOriginalRange = GridRange.containsCell(\n selectedRanges,\n columnIndex,\n rowIndex\n );\n\n const canPasteInCell = model.isEditableRange(\n GridRange.makeCell(columnIndex, rowIndex)\n );\n\n if (\n (canPasteInOriginalRange || !isCellInOriginalRange) &&\n canPasteInCell\n ) {\n actions.push({\n title: 'Paste',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 50,\n action: async () => {\n try {\n const text = await readFromClipboard();\n const items = text.split('\\n').map(row => row.split('\\t'));\n await grid.pasteValue(items);\n } catch (err) {\n if (err instanceof ClipboardUnavailableError) {\n irisGrid.handleOpenNoPastePermissionModal(\n 'For security reasons your browser does not allow access to your clipboard on click.'\n );\n } else if (err instanceof ClipboardPermissionsDeniedError) {\n irisGrid.handleOpenNoPastePermissionModal(\n 'Requested clipboard permissions have not been granted, please grant them and try again.'\n );\n } else {\n throw err;\n }\n }\n },\n });\n }\n }\n\n actions.push({\n title: 'View Cell Contents',\n group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,\n order: 10,\n action: () => {\n irisGrid.setState({\n showOverflowModal: true,\n overflowText: irisGrid.getValueForCell(\n columnIndex,\n rowIndex\n ) as string,\n });\n },\n });\n\n if (isPartitionedGridModel(model) && !model.isPartitionAwareSourceTable) {\n actions.push({\n title: 'View Constituent Table',\n group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,\n order: 40,\n action: () => {\n irisGrid.selectPartitionKeyFromTable(rowIndex);\n },\n });\n }\n\n return actions;\n }\n\n // moved out of getCellActions since snapshots are async\n async getCellFilterActions(\n modelColumn: ModelIndex,\n grid: Grid,\n gridPoint: GridPoint\n ): Promise<ContextAction[]> {\n const { dh, irisGrid } = this;\n const { row: rowIndex } = gridPoint;\n const { model } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { getSelectedRanges } = grid;\n assertNotNull(modelRow);\n const sourceCell = model.sourceForCell(modelColumn, modelRow);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const column = columns[sourceColumn];\n\n if (column == null || rowIndex == null) return [];\n if (!model.isFilterable(sourceColumn)) return [];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n let selectedRanges = [...getSelectedRanges()];\n // no selected range (i.e. right clicked a cell without highlighting it)\n // although GridSelectionMouseHandler does change selectedRanges, state isn't updated in\n // time for getSelectedRanges to show the selected cell\n if (selectedRanges.length === 0) {\n selectedRanges.push(\n new GridRange(sourceColumn, sourceRow, sourceColumn, sourceRow)\n );\n }\n\n // - this block truncates the selected ranges to MAX_MULTISELECT_ROWS rows\n // - NOT first MAX_MULTISELECT_ROWS rows after the first row\n // - NOT first MAX_MULTISELECT_ROWS unique values (prevent case where there are a small\n // amount of values, but a large amount of rows with those values)\n if (GridRange.containsCell(selectedRanges, sourceColumn, sourceRow)) {\n let rowCount = GridRange.rowCount(selectedRanges);\n while (rowCount > MAX_MULTISELECT_ROWS) {\n const lastRow = selectedRanges.pop();\n // should never occur, sanity check\n assertNotNull(lastRow, 'Selected ranges should not be empty');\n\n const lastRowSize = GridRange.rowCount([lastRow]);\n // should never occur, sanity check\n assertNotNaN(lastRowSize, 'Selected ranges should not be unbounded');\n\n // if removing the last rows makes it dip below the max, then need to\n // bring it back but truncated\n if (rowCount - lastRowSize < MAX_MULTISELECT_ROWS) {\n // nullish operator to make TS happy, but the check above should prevent this\n selectedRanges.push(\n new GridRange(\n lastRow.startColumn,\n lastRow.startRow,\n lastRow.endColumn,\n (lastRow.endRow ?? 0) - (rowCount - MAX_MULTISELECT_ROWS)\n )\n );\n break;\n }\n rowCount -= lastRowSize;\n }\n } else {\n // if the block is not in the selected ranges, meaning the user must've right-clicked\n // outside the selected ranges`\n selectedRanges = [\n new GridRange(sourceColumn, sourceRow, sourceColumn, sourceRow),\n ];\n }\n\n // this should be non empty\n // - valid selected ranges will always have a startRow and endRow\n // - if there are no selected ranges, then one with sourceColumn/Row is added\n assertNotEmpty(selectedRanges);\n\n // get the snapshot values, but ignore all null/undefined values\n const snapshot = await model.snapshot(selectedRanges);\n const snapshotValues = new Set();\n for (let i = 0; i < snapshot.length; i += 1) {\n if (snapshot[i].length === 1) {\n // if the selected range has start/end columns defined, so the snapshot is a 1D array of the row\n if (snapshot[i][0] != null) {\n snapshotValues.add(snapshot[i][0]);\n }\n } else if (snapshot[i][sourceColumn] != null) {\n // if the selected range is an entire row\n snapshotValues.add(snapshot[i][sourceColumn]);\n }\n }\n // if snapshotValues is empty here, it means all of the snapshot's values were null/undefined\n\n const filterMenu = {\n title: `Filter by Value${snapshotValues.size > 1 ? 's' : ''}`,\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n // only made of null/undefineds\n if (snapshotValues.size === 0) {\n // null gets a special menu\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (snapshotValues.size === 1 && snapshotValues.has('')) {\n // empty string gets a special menu\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.emptyStringFilterActions(\n column,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.emptyStringFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n model.textForCell(sourceColumn, sourceRow),\n quickFilters.get(sourceColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(\n column,\n model.textForCell(sourceColumn, sourceRow)\n )\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(sourceColumn);\n\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n snapshotValues as Set<number>,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n snapshotValues as Set<number>,\n quickFilters.get(sourceColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n snapshotValues as Set<Date>,\n dateFilterFormatter,\n previewFilterFormatter,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n snapshotValues as Set<Date>,\n dateFilterFormatter,\n previewFilterFormatter,\n quickFilters.get(sourceColumn)\n )\n );\n } else {\n if (quickFilters.get(sourceColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.stringFilterActions(\n column,\n snapshotValues as Set<string>,\n quickFilters.get(sourceColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, snapshotValues as Set<string>)\n );\n }\n return [filterMenu];\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n getNumberValueEqualsFilter(\n column: DhType.Column,\n value: number\n ): DhType.FilterCondition {\n const { dh } = this;\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n return columnFilter.eq(filterValue);\n }\n\n getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): DhType.FilterValue {\n const { dh } = this;\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value as number);\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions: ResolvableContextAction[] = [];\n\n if (modelColumn != null && modelRow != null) {\n const sourceCell = model.sourceForCell(modelColumn, modelRow ?? 0);\n const { column: sourceColumn, row: sourceRow } = sourceCell;\n const value = model.valueForCell(sourceColumn, sourceRow);\n const valueText = model.textForCell(sourceColumn, sourceRow);\n const column = columns[sourceColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n ...onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null) {\n const clearFilterRange = model.getClearFilterRange(modelColumn);\n if (clearFilterRange != null && clearFilterRange.length > 0) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title:\n clearFilterRange[1] - clearFilterRange[0] > 0\n ? 'Clear Group Filter'\n : 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(clearFilterRange);\n },\n disabled:\n !Array.from(quickFilters.keys()).some(\n col => col >= clearFilterRange[0] && col <= clearFilterRange[1]\n ) &&\n !Array.from(advancedFilters.keys()).some(\n col => col >= clearFilterRange[0] && col <= clearFilterRange[1]\n ),\n });\n }\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n actions.push(this.getCellFilterActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0 &&\n isDeletableGridModel(model) &&\n model.isDeletable\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n disabled: !model.isDeletableRanges(selectedRanges),\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.clientX,\n event.clientY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: DhType.Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } =\n formatOptions[i];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: DhType.Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const { dh } = this;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: DhType.Column,\n snapshotValues: Set<string>,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const values = Array.from(snapshotValues.keys());\n const filterValues = values.map(value => dh.FilterValue.ofString(value));\n const valueDescription =\n filterValues.length === 1 ? filterValues[0] : 'the selected values';\n\n let newQuickFilter:\n | {\n filter: null | DhType.FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const toFilterText = (item: string) =>\n TableUtils.escapeQuickTextFilter(item) ?? '';\n\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values.slice(0, 20).map(value => `\"${toFilterText(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${valueDescription} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(filterValue => column.filter().eq(filterValue))\n .reduce((prev, curr) => prev.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(toFilterText).join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueDescription} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(filterValue => column.filter().notEq(filterValue))\n .reduce((prev, curr) => prev.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!=${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue => column.filter().contains(filterValue))\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `~${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .or(\n filterValues\n .map(filterValue =>\n column.filter().contains(filterValue).not()\n )\n .reduce((prev, curr) => prev.and(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!~${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue =>\n column.filter().invoke('startsWith', filterValue)\n )\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `${toFilterText(value)}*`).join(' || '),\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueDescription}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(\n filterValues\n .map(filterValue =>\n column.filter().invoke('endsWith', filterValue)\n )\n .reduce((prev, curr) => prev.or(curr))\n ),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `*${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: DhType.Column,\n snapshotValues: Set<number>,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const values = Array.from(snapshotValues.keys());\n const valueDesc = values.length === 1 ? `${values}` : 'the selected values';\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const toFilterText = (item: number) =>\n TableUtils.isCharType(column.type)\n ? String.fromCharCode(item as number)\n : `${item}`;\n\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values.slice(0, 20).map(value => `\"${toFilterText(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n values\n .map(value =>\n this.getNumberValueEqualsFilter(column, value as number)\n )\n .reduce((acc, curr) => acc.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `=${toFilterText(value)}`).join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n values\n .map(value =>\n this.getNumberValueEqualsFilter(column, value as number).not()\n )\n .reduce((acc, curr) => acc.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values.map(value => `!=${toFilterText(value)}`).join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (\n !snapshotValues.has(Number.NaN) &&\n !snapshotValues.has(Number.POSITIVE_INFINITY) &&\n !snapshotValues.has(Number.NEGATIVE_INFINITY) &&\n !TableUtils.isCharType(column.type)\n ) {\n // get the min/max because these are all ge/ne filters\n const maxValue = values.reduce((a, b) => (a > b ? a : b));\n const minValue = values.reduce((a, b) => (a < b ? a : b));\n const maxFilterValue = this.getFilterValueForNumberOrChar(\n column.type,\n maxValue\n );\n const minFilterValue = this.getFilterValueForNumberOrChar(\n column.type,\n minValue\n );\n const maxValueText = `${maxFilterValue}`;\n const minValueText = `${minFilterValue}`;\n\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${maxValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${toFilterText(maxValue)}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${maxValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${toFilterText(maxValue)}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${minValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${toFilterText(minValue)}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${minValueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${toFilterText(minValue)}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n\n return actions;\n }\n\n booleanFilterActions(\n column: DhType.Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText ?? 'null'}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: DhType.Column,\n snapshotValues: Set<unknown>,\n dateFilterFormatter: DateTimeColumnFormatter,\n previewFilterFormatter: DateTimeColumnFormatter,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n\n const values = Array.from(snapshotValues.keys()) as DhType.DateWrapper[];\n const filterValues = values.map(value => dh.FilterValue.ofNumber(value));\n const valueDesc =\n filterValues.length === 1\n ? previewFilterFormatter.format(values[0])\n : 'the selected values';\n\n const maxValue = values.reduce((a, b) => (a > b ? a : b));\n const minValue = values.reduce((a, b) => (a < b ? a : b));\n const maxFilterValue = dh.FilterValue.ofNumber(maxValue);\n const minFilterValue = dh.FilterValue.ofNumber(minValue);\n const maxDateText = dateFilterFormatter.format(maxValue);\n const minDateText = dateFilterFormatter.format(minValue);\n const maxPreviewText = previewFilterFormatter.format(maxValue);\n const minPreviewText = previewFilterFormatter.format(minValue);\n\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n {TextUtils.join(\n values\n .slice(0, 20)\n .map(value => `\"${previewFilterFormatter.format(value)}\"`)\n )}\n {values.length > 1 && (\n <div className=\"iris-grid-filter-menu-subtitle\">\n ({values.length} values selected)\n </div>\n )}\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(valueFilter => column.filter().eq(valueFilter))\n .reduce((acc, curr) => acc.or(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values\n .map(value => `=${dateFilterFormatter.format(value)}`)\n .join(' || '),\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${valueDesc}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n filterValues\n .map(valueFilter => column.filter().notEq(valueFilter))\n .reduce((acc, curr) => acc.and(curr)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n values\n .map(value => `!=${dateFilterFormatter.format(value)}`)\n .join(' && '),\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${minPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${minDateText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${minPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(minFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${minDateText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${maxPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${maxDateText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${maxPreviewText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(maxFilterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${maxDateText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n emptyStringFilterActions(\n column: DhType.Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString('');\n let newQuickFilter:\n | {\n filter: null | DhType.FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">empty</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'is empty string',\n description: `Show only rows where ${column.name} is empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not empty string',\n description: `Show only rows where ${column.name} is not empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n nullFilterActions(\n column: DhType.Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: DhType.FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">null</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: DhType.Column,\n modelColumn: ModelIndex,\n columnSort: DhType.Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: DhType.Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : 'Ctrl+Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: DhType.Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\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.104.1-beta.
|
|
3
|
+
"version": "0.104.1-beta.11+e28a7415",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@deephaven/components": "^0.104.1-beta.
|
|
35
|
-
"@deephaven/console": "^0.104.1-beta.
|
|
36
|
-
"@deephaven/filters": "^0.104.1-beta.
|
|
37
|
-
"@deephaven/grid": "^0.104.1-beta.
|
|
38
|
-
"@deephaven/icons": "^0.104.1-beta.
|
|
39
|
-
"@deephaven/jsapi-components": "^0.104.1-beta.
|
|
34
|
+
"@deephaven/components": "^0.104.1-beta.11+e28a7415",
|
|
35
|
+
"@deephaven/console": "^0.104.1-beta.11+e28a7415",
|
|
36
|
+
"@deephaven/filters": "^0.104.1-beta.11+e28a7415",
|
|
37
|
+
"@deephaven/grid": "^0.104.1-beta.11+e28a7415",
|
|
38
|
+
"@deephaven/icons": "^0.104.1-beta.11+e28a7415",
|
|
39
|
+
"@deephaven/jsapi-components": "^0.104.1-beta.11+e28a7415",
|
|
40
40
|
"@deephaven/jsapi-types": "^1.0.0-dev0.37.2",
|
|
41
|
-
"@deephaven/jsapi-utils": "^0.104.1-beta.
|
|
42
|
-
"@deephaven/log": "^0.104.1-beta.
|
|
43
|
-
"@deephaven/react-hooks": "^0.104.1-beta.
|
|
44
|
-
"@deephaven/storage": "^0.104.1-beta.
|
|
45
|
-
"@deephaven/utils": "^0.104.1-beta.
|
|
41
|
+
"@deephaven/jsapi-utils": "^0.104.1-beta.11+e28a7415",
|
|
42
|
+
"@deephaven/log": "^0.104.1-beta.11+e28a7415",
|
|
43
|
+
"@deephaven/react-hooks": "^0.104.1-beta.11+e28a7415",
|
|
44
|
+
"@deephaven/storage": "^0.104.1-beta.11+e28a7415",
|
|
45
|
+
"@deephaven/utils": "^0.104.1-beta.11+e28a7415",
|
|
46
46
|
"@dnd-kit/core": "^6.1.0",
|
|
47
47
|
"@dnd-kit/sortable": "^7.0.2",
|
|
48
48
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"react-dom": ">=16.8.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@deephaven/jsapi-shim": "^0.104.1-beta.
|
|
69
|
-
"@deephaven/mocks": "^0.104.1-beta.
|
|
70
|
-
"@deephaven/test-utils": "^0.104.1-beta.
|
|
68
|
+
"@deephaven/jsapi-shim": "^0.104.1-beta.11+e28a7415",
|
|
69
|
+
"@deephaven/mocks": "^0.104.1-beta.11+e28a7415",
|
|
70
|
+
"@deephaven/test-utils": "^0.104.1-beta.11+e28a7415",
|
|
71
71
|
"deep-equal": "2.2.3"
|
|
72
72
|
},
|
|
73
73
|
"files": [
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"publishConfig": {
|
|
81
81
|
"access": "public"
|
|
82
82
|
},
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "e28a74159debfa089ad3cc91a4777abdb0b65bf2"
|
|
84
84
|
}
|