@deephaven/iris-grid 0.59.1-beta.0 → 0.59.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/EmptyIrisGridModel.d.ts +62 -0
  2. package/dist/EmptyIrisGridModel.d.ts.map +1 -0
  3. package/dist/EmptyIrisGridModel.js +168 -0
  4. package/dist/EmptyIrisGridModel.js.map +1 -0
  5. package/dist/IrisGrid.d.ts +17 -14
  6. package/dist/IrisGrid.d.ts.map +1 -1
  7. package/dist/IrisGrid.js +151 -146
  8. package/dist/IrisGrid.js.map +1 -1
  9. package/dist/IrisGridModel.d.ts +5 -4
  10. package/dist/IrisGridModel.d.ts.map +1 -1
  11. package/dist/IrisGridModel.js +2 -1
  12. package/dist/IrisGridModel.js.map +1 -1
  13. package/dist/IrisGridModelFactory.d.ts +2 -2
  14. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  15. package/dist/IrisGridModelFactory.js +1 -1
  16. package/dist/IrisGridModelFactory.js.map +1 -1
  17. package/dist/IrisGridModelUpdater.d.ts +3 -1
  18. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  19. package/dist/IrisGridModelUpdater.js +8 -1
  20. package/dist/IrisGridModelUpdater.js.map +1 -1
  21. package/dist/IrisGridPartitionSelector.css +14 -36
  22. package/dist/IrisGridPartitionSelector.css.map +1 -1
  23. package/dist/IrisGridPartitionSelector.d.ts +39 -38
  24. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  25. package/dist/IrisGridPartitionSelector.js +253 -227
  26. package/dist/IrisGridPartitionSelector.js.map +1 -1
  27. package/dist/IrisGridPartitionedTableModel.d.ts +25 -0
  28. package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -0
  29. package/dist/IrisGridPartitionedTableModel.js +74 -0
  30. package/dist/IrisGridPartitionedTableModel.js.map +1 -0
  31. package/dist/IrisGridProxyModel.d.ts +18 -4
  32. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  33. package/dist/IrisGridProxyModel.js +84 -5
  34. package/dist/IrisGridProxyModel.js.map +1 -1
  35. package/dist/IrisGridTableModel.d.ts +14 -4
  36. package/dist/IrisGridTableModel.d.ts.map +1 -1
  37. package/dist/IrisGridTableModel.js +96 -21
  38. package/dist/IrisGridTableModel.js.map +1 -1
  39. package/dist/IrisGridTableModelTemplate.d.ts +7 -7
  40. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  41. package/dist/IrisGridTableModelTemplate.js +1 -1
  42. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  43. package/dist/IrisGridTreeTableModel.js +2 -4
  44. package/dist/IrisGridTreeTableModel.js.map +1 -1
  45. package/dist/IrisGridUtils.d.ts +7 -7
  46. package/dist/IrisGridUtils.d.ts.map +1 -1
  47. package/dist/IrisGridUtils.js +33 -34
  48. package/dist/IrisGridUtils.js.map +1 -1
  49. package/dist/MissingPartitionError.d.ts +6 -0
  50. package/dist/MissingPartitionError.d.ts.map +1 -0
  51. package/dist/MissingPartitionError.js +14 -0
  52. package/dist/MissingPartitionError.js.map +1 -0
  53. package/dist/PartitionedGridModel.d.ts +38 -0
  54. package/dist/PartitionedGridModel.d.ts.map +1 -0
  55. package/dist/PartitionedGridModel.js +15 -0
  56. package/dist/PartitionedGridModel.js.map +1 -0
  57. package/dist/index.d.ts +3 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -1
  60. package/dist/index.js.map +1 -1
  61. package/package.json +16 -15
  62. package/dist/PartitionSelectorSearch.css +0 -23
  63. package/dist/PartitionSelectorSearch.css.map +0 -1
  64. package/dist/PartitionSelectorSearch.d.ts +0 -78
  65. package/dist/PartitionSelectorSearch.d.ts.map +0 -1
  66. package/dist/PartitionSelectorSearch.js +0 -343
  67. package/dist/PartitionSelectorSearch.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","partitionFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","_ref4","_theme$rowFooterWidth","defaultTheme","rowFooterWidth","_objectSpread","autoSelectRow","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","state","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","className","input","gotoValue","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partitions","partitionColumns","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref5","getCachedTheme","context","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","makeQuickFilter","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref6","findIndex","_ref7","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref8","setQuickFilter","_ref9","setFilterMap","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref10","filterList","find","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref11","_","_ref12","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref13","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","_this","_asyncToGenerator","add","valuesTable","resolved","close","slice","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partition","partitionColumn","isCharType","partitionText","displayString","partitionFilter","makeQuickFilterFromComponent","copyCell","String","e","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","isCanceled","onError","showAllColumns","_this$grid9","entries","columnWidth","toggleSort","addToExisting","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid10","sortColumn","_this$grid11","direction","none","isAbs","reverse","_this$grid12","isReversible","focusIndex","isTextType","_this$grid13","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this2","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this2$grid","newPendingSavePromise","then","_this3","selectColumn","onColumnSelected","selectData","_this4","groupedColumns","dataMap","_loop","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","_this$grid17","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid18","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref14","setGridFocus","defocusInput","_this$grid19","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref15","newOptions","pop","_ref16","event","customEvent","detail","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid23","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid24","_this$grid25","join","aggregation","_ref17","_rollupConfig$columns","_rollupConfig$columns2","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref18","newAggregations","inputString","_arguments","_this5","_this5$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this5$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid29","render","_rollupConfig$columns3","_rollupConfig$columns4","_this6","_this$grid31","_this$grid31$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid30","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","visibleColumns","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this6$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","table","getFormattedString","stringName","onFetchAll","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","transitionMidMs","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n dh as DhType,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n Action,\n AdvancedFilterMap,\n AdvancedFilterOptions,\n ColumnName,\n InputFilter,\n OperationMap,\n OptionItem,\n PendingDataErrorMap,\n PendingDataMap,\n QuickFilterMap,\n ReadonlyAdvancedFilterMap,\n ReadonlyAggregationMap,\n ReadonlyOperationMap,\n ReadonlyQuickFilterMap,\n UITotalsTableConfig,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n partitions: (string | null)[];\n partitionColumns: Column[];\n sorts: readonly Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n partitions: (string | null)[];\n partitionColumns: Column[];\n partitionTable: Table | null;\n partitionFilters: readonly FilterCondition[];\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: [],\n partitionColumns: [],\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n canToggleSearch: true,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n partitions,\n partitionColumns,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n keyHandlers,\n mouseHandlers,\n\n partitions,\n partitionColumns,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { partitionColumns, model } = this.props;\n const columns = partitionColumns.length\n ? partitionColumns\n : model.columns.filter(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n columns.length\n ) {\n this.loadPartitionsTable(columns);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n renderer: IrisGridRenderer;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyOperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n partitionFilters: readonly FilterCondition[],\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: Partial<GridThemeType> | null,\n theme: Partial<GridThemeType> | null,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => {\n const defaultTheme = createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ??\n contextTheme?.rowFooterWidth ??\n defaultTheme.rowFooterWidth\n : 0;\n\n return {\n ...defaultTheme,\n ...contextTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n\n return this.getCachedTheme(\n this.context,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', true);\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumns: Column[]): Promise<void> {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumns),\n resolved => resolved.close()\n );\n\n const columns = partitionTable.columns.slice(0, partitionColumns.length);\n const sorts = columns.map(column => column.sort().desc());\n partitionTable.applySort(sorts);\n partitionTable.setViewport(0, 0, columns);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const values = columns.map(column => row.get(column));\n\n this.updatePartition(values, partitionColumns);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumns }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(\n partitions: (string | null)[],\n partitionColumns: Column[]\n ): void {\n const partitionFilters = [];\n\n for (let i = 0; i < partitionColumns.length; i += 1) {\n const partition = partitions[i];\n const partitionColumn = partitionColumns[i];\n\n if (\n partition !== null &&\n !(TableUtils.isCharType(partitionColumn.type) && partition === '')\n ) {\n const { model } = this.props;\n\n const partitionText = TableUtils.isCharType(partitionColumn.type)\n ? model.displayString(\n partition,\n partitionColumn.type,\n partitionColumn.name\n )\n : partition;\n const partitionFilter = this.tableUtils.makeQuickFilterFromComponent(\n partitionColumn,\n partitionText\n );\n if (partitionFilter !== null) {\n partitionFilters.push(partitionFilter);\n }\n }\n }\n\n this.setState({\n partitions,\n partitionFilters,\n });\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitions: (string | null)[]): void {\n const { partitionColumns } = this.state;\n if (partitionColumns.length === 0) {\n return;\n }\n this.updatePartition(partitions, partitionColumns);\n }\n\n handlePartitionFetchAll(): void {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone(): void {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverseType: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n log.error('request failed:', customEvent.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${customEvent.detail}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: readonly ColumnGroup[]): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.initState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings: AggregationSettings): void {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n });\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partitions,\n partitionFilters,\n partitionTable,\n partitionColumns,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingSpinnerShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable &&\n partitionColumns.length &&\n partitions.length && (\n <IrisGridPartitionSelector\n dh={model.dh}\n table={partitionTable}\n getFormattedString={(\n value: unknown,\n type: string,\n stringName: string\n ) => model.displayString(value, type, stringName)}\n columns={partitionColumns}\n partitions={partitions}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,IAEVC,SAAS,QAIJ,OAAO;AACd,OAAOC,OAAO,MAAM,UAAU;AAC9B,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,cAAc,EACdC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,MAAM,EACNC,WAAW,EACXC,OAAO,EAIPC,MAAM,EACNC,kBAAkB,QAEb,uBAAuB;AAC9B,SACEC,IAAI,EAGJC,SAAS,EAGTC,SAAS,EAOTC,mBAAmB,EAEnBC,qBAAqB,QAChB,iBAAiB;AACxB,SACEC,KAAK,EACLC,cAAc,EACdC,aAAa,EACbC,oBAAoB,EACpBC,OAAO,EACPC,eAAe,EACfC,MAAM,EACNC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACjBC,gBAAgB,EAChBC,OAAO,QACF,kBAAkB;AAYzB,SACEC,SAAS,EACTC,SAAS,EACTC,cAAc,EACdC,UAAU,QAQL,wBAAwB;AAC/B,SACEC,aAAa,EACbC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,YAAY,EACZC,eAAe,EACfC,UAAU,QACL,kBAAkB;AACzB,SACEC,IAAI,IAAIC,UAAU,QAEb,oBAAoB;AAC3B,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,KAAK,MAAM,cAAc;AAAC,SAG/BC,gBAAgB;AAAA,OAEXC,oBAAoB;AAAA,OACpBC,mBAAmB;AAAA,OACnBC,gBAAgB;AAAA,SAErBC,qBAAqB,EACrBC,cAAc,EACdC,iBAAiB;AAAA,SAGjBC,gCAAgC,EAChCC,gCAAgC,EAChCC,iCAAiC,EACjCC,0BAA0B,EAC1BC,4BAA4B,EAC5BC,8BAA8B,EAC9BC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,yBAAyB,EACzBC,mBAAmB;AAAA,OAEdC,cAAc;AAAA,OACdC,wBAAwB;AAAA,OACxBC,oBAAoB;AAAA,OACpBC,gBAAgB;AAAA,SACdC,0BAA0B;AAAA,OAC5BC,gBAAgB;AAAA;AAAA,OAEhBC,qBAAqB;AAAA,SAE1BC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,YAAY,EACZC,mBAAmB,EACnBC,UAAU,EACVC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,yBAAyB,EACzBC,0BAA0B;AAAA,OAErBC,aAAa;AAAA,OACbC,iBAAiB;AAAA,OACjBC,aAAa;AAAA,OACbC,yBAAyB;AAAA,OACzBC,qBAAqB;AAAA,OACrBC,oBAAoB;AAAA,OACpBC,oBAAoB;AAAA,OAGpBC,SAAS;AAAA,OACTC,yBAAyB;AAAA,OAEzBC,uBAAuB;AAAA,OACvBC,yBAAyB;AAAA,OACzBC,OAAO;AAAA,OAMPC,oBAAoB;AAAA,SAoBlBC,oBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE7B,IAAMC,GAAG,GAAGtG,GAAG,CAACuG,MAAM,CAAC,UAAU,CAAC;AAElC,IAAMC,wBAAwB,GAAG,GAAG;AAEpC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,IAAMC,iBAAiB,GAAG,GAAG;AAE7B,IAAMC,+BAA+B,GAAG,GAAG;AAE3C,IAAMC,4BAA4B,GAAGC,MAAM,CAACC,MAAM,CAAC;EACjDC,YAAY,EAAE1E,WAAW;EACzB2E,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,IAAMC,wBAAwB,sCAAsC;AAEpE,SAASC,aAAaA,CAAAC,IAAA,EAoBV;EAAA,IApBW;IACrBC,eAAe;IACfC,mBAAmB;IACnBC,aAAa;IACbC,YAAY;IACZC,WAAW;IACXC,YAAY;IACZC,YAAY;IACZC,qBAAqB;IACrBC;EAWF,CAAC,GAAAT,IAAA;EACC,OACEC,eAAe,CAACS,IAAI,KAAK,CAAC,IAC1BR,mBAAmB,CAACN,YAAY,CAACe,MAAM,KAAK,CAAC,IAC7CR,aAAa,CAACQ,MAAM,KAAK,CAAC,IAC1BP,YAAY,CAACM,IAAI,KAAK,CAAC,IACvBL,WAAW,KAAKtF,UAAU,CAAC6F,YAAY,CAACC,IAAI,IAC5CP,YAAY,IAAI,IAAI,IACpBC,YAAY,IAAI,IAAI,IACpBC,qBAAqB,CAACG,MAAM,KAAK,CAAC,IAClCF,KAAK,CAACE,MAAM,KAAK,CAAC;AAEtB;AA0MA,OAAO,MAAMG,QAAQ,SAASvI,SAAS,CAA+B;EA8EpEwI,WAAWA,CAACC,KAAoB,EAAE;IAAA,IAAAC,kBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,eAAA;IAChC,KAAK,CAACJ,KAAK,CAAC;IAACK,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,uCAogBgB7I,OAAO,CACnC8I,MAAkB,IAAK,IAAI,CAACC,wBAAwB,CAACC,IAAI,CAAC,IAAI,EAAEF,MAAM,CAAC,EACxE;MAAEG,GAAG,EAAE;IAAI,CACb,CAAC;IAAAJ,eAAA,6CAEoC7I,OAAO,CAC1C,CACEkJ,KAAoB,EACpBJ,MAAc,EACdK,qBAAwD,EACxDC,aAAwC,EACxCC,SAAoB,kBAEpB7C,IAAA,CAAC3B,qBAAqB;MACpBqE,KAAK,EAAEA,KAAM;MACbJ,MAAM,EAAEA,MAAO;MACfQ,cAAc,EAAE,IAAI,CAACC,0BAA2B;MAChDC,YAAY,EAAE,IAAI,CAACC,8BAA+B;MAClDC,MAAM,EAAE,IAAI,CAACC,wBAAyB;MACtCC,OAAO,EAAET,qBAAsB;MAC/BC,aAAa,EAAEA,aAAc;MAC7BC,SAAS,EAAEA,SAAU;MACrBQ,UAAU,EAAE,IAAI,CAACA;IAAW,CAC7B,CACF,EACD;MAAEZ,GAAG,EAAE;IAAG,CACZ,CAAC;IAAAJ,eAAA,+BAEsB7I,OAAO,CAC5B,CACE8J,uBAAgC,EAChCC,wBAAiC,EACjCC,wBAAiC,EACjCC,iBAA0B,EAC1BC,iBAA0B,EAC1BC,yBAAkC,EAClCC,iBAA0B,EAC1BC,qBAA6B,EAC7BC,qBAA6B,EAC7BC,mBAA2B,EAC3BC,gBAAyB,EACzBC,aAAsB,EACtBC,cAAuB,EACvBC,eAAwB,EACxBC,WAAoB,EACpBC,mBAA4B,KACF;MAC1B,IAAMC,WAAyB,GAAG,EAAE;MACpC,IAAIhB,uBAAuB,EAAE;QAC3BgB,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAAC8F,aAAa;UAC9BC,KAAK,EAAE,eAAe;UACtBC,IAAI,EAAE5J;QACR,CAAC,CAAC;MACJ;MACAuJ,WAAW,CAACC,IAAI,CAAC;QACfC,IAAI,EAAE7F,UAAU,CAACiG,2BAA2B;QAC5CF,KAAK,EAAE,kBAAkB;QACzBC,IAAI,EAAE9J;MACR,CAAC,CAAC;MACF,IAAI2I,wBAAwB,EAAE;QAC5Bc,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACkG,sBAAsB;UACvCH,KAAK,EAAE,wBAAwB;UAC/BC,IAAI,EAAExJ;QACR,CAAC,CAAC;MACJ;MACA,IAAIoI,wBAAwB,EAAE;QAC5Be,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACmG,qBAAqB;UACtCJ,KAAK,EAAE,gBAAgB;UACvBC,IAAI,EAAElJ;QACR,CAAC,CAAC;MACJ;MACA,IAAIgI,iBAAiB,EAAE;QACrBa,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACoG,WAAW;UAC5BL,KAAK,EAAE,aAAa;UACpBC,IAAI,EAAE3J;QACR,CAAC,CAAC;MACJ;MACA,IAAI0I,iBAAiB,EAAE;QACrBY,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACqG,YAAY;UAC7BN,KAAK,EAAE,mBAAmB;UAC1BC,IAAI,EAAEjJ;QACR,CAAC,CAAC;MACJ;MACA,IAAIiI,yBAAyB,EAAE;QAC7BW,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACsG,eAAe;UAChCP,KAAK,EAAE,wBAAwB;UAC/BC,IAAI,EAAEpJ;QACR,CAAC,CAAC;MACJ;MACA,IAAIqI,iBAAiB,IAAIM,cAAc,EAAE;QACvCI,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACuG,cAAc;UAC/BR,KAAK,EAAE,cAAc;UACrBC,IAAI,EAAEzJ;QACR,CAAC,CAAC;MACJ;MACA,IAAImJ,mBAAmB,EAAE;QACvBC,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACwG,iBAAiB;UAClCT,KAAK,EAAE,mBAAmB;UAC1BC,IAAI,EAAEhJ;QACR,CAAC,CAAC;MACJ;MACA2I,WAAW,CAACC,IAAI,CAAC;QACfC,IAAI,EAAE7F,UAAU,CAACyG,aAAa;QAC9BV,KAAK,EAAE,eAAe;QACtBW,QAAQ,EAAExB,qBAAqB,CAACyB,QAAQ,CAACC,cAAc,CAAC,CAAC;QACzDZ,IAAI,EAAEvJ,QAAQ;QACdoK,IAAI,EAAExB,gBAAgB;QACtByB,QAAQ,EAAE5B,qBAAqB,CAAC6B;MAClC,CAAC,CAAC;MACF,IAAIvB,eAAe,EAAE;QACnBG,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAE7F,UAAU,CAACgH,UAAU;UAC3BjB,KAAK,EAAE,YAAY;UACnBW,QAAQ,EAAEvB,qBAAqB,CAACwB,QAAQ,CAACC,cAAc,CAAC,CAAC;UACzDZ,IAAI,EAAEnJ,QAAQ;UACdgK,IAAI,EAAEvB,aAAa;UACnBwB,QAAQ,EAAE3B,qBAAqB,CAAC4B;QAClC,CAAC,CAAC;MACJ;MACApB,WAAW,CAACC,IAAI,CAAC;QACfC,IAAI,EAAE7F,UAAU,CAACiH,IAAI;QACrBlB,KAAK,EAAE,OAAO;QACdW,QAAQ,EAAEtB,mBAAmB,CAACuB,QAAQ,CAACC,cAAc,CAAC,CAAC;QACvDZ,IAAI,EAAErJ,OAAO;QACbkK,IAAI,EAAEpB,WAAW;QACjBqB,QAAQ,EAAE1B,mBAAmB,CAAC2B;MAChC,CAAC,CAAC;MAEF,OAAOhF,MAAM,CAACC,MAAM,CAAC2D,WAAW,CAAC;IACnC,CAAC,EACD;MAAE7B,GAAG,EAAE;IAAE,CACX,CAAC;IAAAJ,eAAA,iCAEwB7I,OAAO,CAC9B,CACEqM,gBAA0C,EAC1CC,gBAA8B,KAE9B7G,aAAa,CAAC8G,gBAAgB,CAC5B,IAAIC,GAAG,CAAC,CAAC,GAAGH,gBAAgB,CAACI,mBAAmB,EAAE,GAAGH,gBAAgB,CAAC,CACxE,CAAC,EACH;MAAErD,GAAG,EAAE;IAAE,CACX,CAAC;IAAAJ,eAAA,4BAEmB7I,OAAO,CACzB,CACE0M,OAA0B,EAC1BtF,YAAoC,KACT;MAC3B,IAAMuF,cAAc,GAAG,CAAC,CAA2C;MACnEvF,YAAY,CAACwF,OAAO,CAACC,KAAA,IAAqC;QAAA,IAApC;UAAEC,SAAS;UAAEC,QAAQ;UAAEC;QAAO,CAAC,GAAAH,KAAA;QACnDF,cAAc,CAACG,SAAS,CAAC,GAAG9H,gBAAgB,CAACiI,uBAAuB,CAClEP,OAAO,EACPI,SAAS,EACTC,QAAQ,EACRC,MACF,CAAC;MACH,CAAC,CAAC;MACF,OAAOL,cAAc;IACvB,CACF,CAAC;IAAA9D,eAAA,0BAEiB7I,OAAO,CACvB,CACE0M,OAA0B,EAC1BtF,YAAoC,KACX;MACzB,IAAM8F,YAA0B,GAAG,CAAC,CAAC;MACrC9F,YAAY,CACT+F,MAAM,CACJC,CAAc,IAAK,CAACpI,gBAAgB,CAACqI,iBAAiB,CAACD,CAAC,CAACN,SAAS,CACrE,CAAC,CACAF,OAAO,CAACU,KAAA,IAAqC;QAAA,IAApC;UAAER,SAAS;UAAEC,QAAQ;UAAEC;QAAO,CAAC,GAAAM,KAAA;QACvCtI,gBAAgB,CAACiI,uBAAuB,CACtCP,OAAO,EACPI,SAAS,EACTC,QAAQ,EACRC,MACF,CAAC,CAACJ,OAAO,CAACW,IAAI,IAAI;UAAA,IAAAC,kBAAA;UAChB,IAAMC,aAAa,GAAG,CAAC,KAAAD,kBAAA,GAAIN,YAAY,CAACK,IAAI,CAAC,cAAAC,kBAAA,cAAAA,kBAAA,GAAI,EAAE,CAAC,EAAEV,SAAS,CAAC;UAChEI,YAAY,CAACK,IAAI,CAAC,GAAGrG,MAAM,CAACC,MAAM,CAACsG,aAAa,CAAC;QACnD,CAAC,CAAC;MACJ,CAAC,CAAC;MACJ,OAAOP,YAAY;IACrB,CACF,CAAC;IAAArE,eAAA,4BAEmB7I,OAAO,CACxBoH,YAAoC,IACnCA,YAAY,CACTsG,GAAG,CAAEN,CAAc,IAAKA,CAAC,CAACN,SAAS,CAAC,CACpCK,MAAM,CACJQ,CAAuB,IAAK,CAAC3I,gBAAgB,CAACqI,iBAAiB,CAACM,CAAC,CACpE,CACN,CAAC;IAAA9E,eAAA,iCAEwB7I,OAAO,CAC9B,CACE4N,EAAU,EACVlB,OAA0B,EAC1BmB,KAAuC,KACpCxK,gBAAgB,CAACuK,EAAE,EAAElB,OAAO,EAAEmB,KAAK,CAC1C,CAAC;IAAAhF,eAAA,wCAU+B7I,OAAO,CACrC,CACE4N,EAAU,EACVlB,OAA0B,EAC1BoB,UAA4C,EAC5CC,OAA+B,EAC/BC,SAAkB,KACC;MACnBrH,GAAG,CAACsH,KAAK,CACP,+BAA+B,EAC/BH,UAAU,EACVC,OAAO,EACPC,SACF,CAAC;MACD,IAAID,OAAO,KAAKG,SAAS,IAAIF,SAAS,KAAKE,SAAS,EAAE;QACpD,IAAML,KAAK,GAAG,CAAC,GAAGC,UAAU,CAAC;QAC7BD,KAAK,CAACG,SAAS,CAAC,GAAGD,OAAO;QAC1B,OAAO,IAAI,CAACI,sBAAsB,CAACP,EAAE,EAAElB,OAAO,EAAEmB,KAAK,CAAC;MACxD;MAEA,OAAO,IAAI,CAACM,sBAAsB,CAACP,EAAE,EAAElB,OAAO,EAAEoB,UAAU,CAAC;IAC7D,CACF,CAAC;IAAAjF,eAAA,+BAEsB7I,OAAO,CAC5B,CACEoO,eAAkC,EAClCC,MAAkC,EAClC3G,mBAAwC,KAExCjC,aAAa,CAAC6I,oBAAoB,CAChCF,eAAe,EACfC,MAAM,EACN3G,mBACF,CACJ,CAAC;IAAAmB,eAAA,+BAEsB7I,OAAO,CAC5B,CACE0M,OAA0B,EAC1B2B,MAAkC,EAClC3G,mBAAwC,KACT;MAAA,IAAA6G,qBAAA,EAAAC,eAAA;MAC/B,IAAI,EAAAD,qBAAA,GAACF,MAAM,aAANA,MAAM,wBAAAG,eAAA,GAANH,MAAM,CAAE3B,OAAO,cAAA8B,eAAA,uBAAfA,eAAA,CAAiBrG,MAAM,cAAAoG,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC,EAAE;QACtC;QACA,OAAO,IAAI;MACb;;MAEA;MACA,IAAMnH,YAAY,GAAGM,mBAAmB,CAACN,YAAY,CAAC+F,MAAM,CAC1DsB,GAAG,IAAIA,GAAG,CAAC1B,QAAQ,CAAC5E,MAAM,GAAG,CAAC,IAAIsG,GAAG,CAACzB,MACxC,CAAC;MACD,IAAI5F,YAAY,CAACe,MAAM,KAAK,CAAC,EAAE;QAC7B;QACA,OAAO,IAAI;MACb;MAEA,IAAM+E,YAAY,GAAG,IAAI,CAACwB,eAAe,CAAChC,OAAO,EAAEtF,YAAY,CAAC;MAChE,IAAMuH,cAAc,GAAG,IAAI,CAACC,iBAAiB,CAACxH,YAAY,CAAC;MAE3D,OAAO;QACL8F,YAAY;QACZyB,cAAc;QACdtH,SAAS,EAAEK,mBAAmB,CAACL,SAAS;QACxCwH,gBAAgB,EAAExI,oBAAoB,CAACyI;MACzC,CAAC;IACH,CACF,CAAC;IAAAjG,eAAA,iCAEwB7I,OAAO,CAC9B,CACE+O,iBAAiC,EACjCvE,gBAAyB,EACzBwE,iBAA0B,EAC1BC,oBAAmC,EACnCrH,YAAoC,EACpCH,eAA0C,EAC1CQ,KAAsB,EACtBJ,WAAwB,EACxBC,YAAwC,EACxCoH,WAAoB,MAChB;MACJH,iBAAiB;MACjBvE,gBAAgB;MAChBwE,iBAAiB;MACjBC,oBAAoB;MACpBrH,YAAY;MACZH,eAAe;MACfQ,KAAK;MACLJ,WAAW;MACXC,YAAY;MACZoH;IACF,CAAC,CAAC,EACF;MAAEjG,GAAG,EAAE;IAAE,CACX,CAAC;IAAAJ,eAAA,0BAEiB7I,OAAO,CACvB,CACEmP,aAAyC,EACzCvH,YAAoC,EACpCH,eAA0C,EAC1C2H,gBAA4C,EAC5CrH,YAAyC,KACtC,CACH,IAAIoH,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,CAAC,EACxB,IAAIC,gBAAgB,aAAhBA,gBAAgB,cAAhBA,gBAAgB,GAAI,EAAE,CAAC,EAC3B,GAAG3J,aAAa,CAAC4J,uBAAuB,CAACzH,YAAY,CAAC,EACtD,GAAGnC,aAAa,CAAC4J,uBAAuB,CAAC5H,eAAe,CAAC,EACzD,IAAIM,YAAY,KAAKmG,SAAS,GAAG,CAACnG,YAAY,CAAC,GAAG,EAAE,CAAC,CACtD,EACD;MAAEkB,GAAG,EAAE;IAAE,CACX,CAAC;IAAAJ,eAAA,yBAEgB7I,OAAO,CACtB,CACEsP,YAA2C,EAC3CC,KAAoC,EACpCC,UAAmB,EACnBC,gBAAwB,KACO;MAAA,IAAAC,KAAA,EAAAC,qBAAA;MAC/B,IAAMC,YAAY,GAAGjL,0BAA0B,CAAC,CAAC;;MAEjD;MACA,IAAMkL,cAAc,GAClBJ,gBAAgB,GAAG,CAAC,IAAAC,KAAA,IAAAC,qBAAA,GAChBJ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,cAAc,cAAAF,qBAAA,cAAAA,qBAAA,GACrBL,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEO,cAAc,cAAAH,KAAA,cAAAA,KAAA,GAC5BE,YAAY,CAACC,cAAc,GAC3B,CAAC;MAEP,OAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKF,YAAY,GACZN,YAAY,GACZC,KAAK;QACRQ,aAAa,EAAE,CAACP,UAAU;QAC1BK;MAAc;IAElB,CAAC,EACD;MAAE5G,GAAG,EAAE;IAAE,CACX,CAAC;IAAAJ,eAAA,gCAqbuB7I,OAAO,CAC7B,CACEgQ,kBAAyC,EACzCtD,OAA0B,EAC1BuD,YAAsC,EACtCC,uBAA+B,EAC/BC,wBAAgC,EAChCC,aAAgC,KACN;MAC1B,IAAMC,eAA6B,GAAG,EAAE;MAExC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,uBAAuB,EAAEI,CAAC,IAAI,CAAC,EAAE;QACnDD,eAAe,CAACtF,IAAI,CAClB2B,OAAO,CAACxL,SAAS,CAACqP,aAAa,CAACD,CAAC,EAAEL,YAAY,CAAC,CAAC,CAAC1C,IACpD,CAAC;MACH;MAEA,KAAK,IAAI+C,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGH,wBAAwB,EAAEG,EAAC,IAAI,CAAC,EAAE;QACpDD,eAAe,CAACtF,IAAI,CAClB2B,OAAO,CAACxL,SAAS,CAACqP,aAAa,CAAC7D,OAAO,CAACvE,MAAM,GAAG,CAAC,GAAGmI,EAAC,EAAEL,YAAY,CAAC,CAAC,CACnE1C,IACL,CAAC;MACH;MAEA,IAAI6C,aAAa,EAAE;QACjB,KAAK,IAAIE,GAAC,GAAGF,aAAa,CAAC,CAAC,CAAC,EAAEE,GAAC,IAAIF,aAAa,CAAC,CAAC,CAAC,EAAEE,GAAC,IAAI,CAAC,EAAE;UAC5DD,eAAe,CAACtF,IAAI,CAClB2B,OAAO,CAACxL,SAAS,CAACqP,aAAa,CAACD,GAAC,EAAEL,YAAY,CAAC,CAAC,CAAC1C,IACpD,CAAC;QACH;MACF;MAEA,IAAMiD,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC,GAAGT,kBAAkB,EAAE,GAAGK,eAAe,CAAC,CAAC;MAEtE,OAAOnJ,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGqJ,SAAS,CAAC,CAAC;IACtC,CACF,CAAC;IAAA3H,eAAA,6BAqhBoB1F,QAAQ,CAC3B,CACEuN,WAAmB,EACnBC,qBAA4C,EAC5CjE,OAA0B,EAC1BkE,mBAA4B,KACnB;MACT,IAAM;QAAE1H;MAAM,CAAC,GAAG,IAAI,CAACV,KAAK;MAC5B,IAAMT,YAAY,GAAGrC,iBAAiB,CAACmL,kBAAkB,CACvD3H,KAAK,CAAC0E,EAAE,EACR8C,WAAW,EACXC,qBAAqB,EACrBjE,OAAO,EACPkE,mBACF,CAAC;MACD,IAAI,CAACE,QAAQ,CAAC;QAAE/I;MAAa,CAAC,CAAC;IACjC,CAAC,EACDjB,mBACF,CAAC;IAAA+B,eAAA,8CAsqBqC1F,QAAQ,CAC3C4N,wBAAgD,IAAW;MAC1D,IAAI,CAACD,QAAQ,CAAC;QAAEC;MAAyB,CAAC,CAAC;IAC7C,CAAC,EACD/J,+BACF,CAAC;IAAA6B,eAAA,uCAid8B3F,QAAQ,CACrC,CACE8N,qBAA6B,EAC7BC,0BAAyC,KACtC;MACH,IAAM;QAAEC;MAAoB,CAAC,GAAG,IAAI,CAACC,KAAK;MAC1C,IACED,mBAAmB,KAAK7L,gBAAgB,CAAC+L,eAAe,CAACC,WAAW,EACpE;QACA,IAAI,CAACP,QAAQ,CAAC;UACZE,qBAAqB;UACrBC;QACF,CAAC,CAAC;MACJ;IACF,CAAC,EACDpK,wBACF,CAAC;IAAAgC,eAAA,mCAsH0B7I,OAAO,CAC/BsR,0BAAyC,IAAgB;MACxD,IAAIA,0BAA0B,IAAI,IAAI,EAAE;QACtC,OAAO,IAAI;MACb;MAEA,IAAMC,YAA2B,GAAAzB,aAAA,CAAAA,aAAA;QAC/B0B,QAAQ,EAAE;MAAU,GACjBF,0BAA0B;QAC7BG,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE,MAAM;QACjBC,SAAS,EAAE;UACTC,IAAI,EAAE;YACJC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO;UAC5B;QACF;MACF,CAAC;MAED,oBACEtL,IAAA;QAAKuL,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvBxL,IAAA,CAAC3F,OAAO;UAEN+I,OAAO,EAAE8H,aAAc;UACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,EAC5B;QAED,GALOG,IAAI,CAACC,GAAG,CAAC,CAKP;MAAC,CACP,CAAC;IAEV,CACF,CAAC;IAAAvJ,eAAA,+BAEsB7I,OAAO,CAC3BqS,sBAAqC,IAAgB;MACpD,IAAIA,sBAAsB,IAAI,IAAI,EAAE;QAClC,OAAO,IAAI;MACb;MAEA,IAAM;QAAEC;MAA0B,CAAC,GAAG,IAAI,CAACnB,KAAK;MAEhD,IAAMI,YAA2B,GAAAzB,aAAA,CAAAA,aAAA;QAC/B0B,QAAQ,EAAE;MAAU,GACjBa,sBAAsB;QACzBZ,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE;MACb,CAAC;MAED,oBACEnL,IAAA;QAAKuL,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvBxL,IAAA,CAAC3F,OAAO;UAEN+I,OAAO,EAAE8H,aAAc;UACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,eAE3BtL,KAAA;YAAKqL,KAAK,EAAE;cAAEQ,SAAS,EAAE;YAAO,CAAE;YAAAP,QAAA,GAAC,WACxB,EAACM,yBAAyB,EAAC,MACpC,eAAA9L,IAAA,SAAK,CAAC,EACLzF,kBAAkB,CAACyR,aAAa,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,EAAC,sCAEtD;UAAA,CAAK;QAAC,GATDL,IAAI,CAACC,GAAG,CAAC,CAUP;MAAC,CACP,CAAC;IAEV,CACF,CAAC;IAAAvJ,eAAA,8BAEqB7I,OAAO,CAC1ByS,qBAAoC,IAAgB;MACnD,IAAIA,qBAAqB,IAAI,IAAI,EAAE;QACjC,OAAO,IAAI;MACb;MAEA,IAAM;QAAEC;MAAsB,CAAC,GAAG,IAAI,CAACvB,KAAK;MAE5C,IAAMI,YAA2B,GAAAzB,aAAA,CAAAA,aAAA;QAC/B0B,QAAQ,EAAE;MAAU,GACjBiB,qBAAqB;QACxBhB,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE;MACb,CAAC;MAED,oBACEnL,IAAA;QAAKuL,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvBxL,IAAA,CAAC3F,OAAO;UAAC+I,OAAO,EAAE8H,aAAc;UAACO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,eAC1DtL,KAAA;YAAKiM,SAAS,EAAC,oBAAoB;YAAAX,QAAA,GAChCU,qBAAqB,EAAC,0BACvB,eAAAlM,IAAA,SAAK,CAAC,uCAER;UAAA,CAAK;QAAC,CACC;MAAC,CACP,CAAC;IAEV,CACF,CAAC;IAAAqC,eAAA,iCAoKyB+J,KAAa,IAAW;MAChD,IAAI,CAAC9B,QAAQ,CAAC;QAAE+B,SAAS,EAAED;MAAM,CAAC,CAAC;MACnC,IAAI,CAACE,gBAAgB,CAACF,KAAK,CAAC;IAC9B,CAAC;IAAA/J,eAAA,2BAEkB1F,QAAQ,CAAEyP,KAAa,IAAW;MACnD,IAAI,CAACG,OAAO,CAACH,KAAK,CAAC;IACrB,CAAC,EAAE7L,iBAAiB,CAAC;IA53GnB,IAAI,CAACwC,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACP,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACS,8BAA8B,GACjC,IAAI,CAACA,8BAA8B,CAACT,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACW,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACX,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACD,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACC,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACgK,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAChK,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACiK,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACjK,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACkK,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAClK,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACmK,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACnK,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACoK,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACpK,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACqK,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACrK,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACsK,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACtK,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACuK,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACvK,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACwK,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACxK,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACyK,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACzK,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC0K,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAC1K,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC2K,eAAe,GAAG,IAAI,CAACA,eAAe,CAAC3K,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAAC4K,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC5K,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC6K,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC7K,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAAC8K,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAC9K,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC+K,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC/K,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACgL,UAAU,GAAG,IAAI,CAACA,UAAU,CAAChL,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACiL,eAAe,GAAG,IAAI,CAACA,eAAe,CAACjL,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACkL,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAClL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACmL,cAAc,GAAG,IAAI,CAACA,cAAc,CAACnL,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACoL,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACpL,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACqL,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACrL,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACsL,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACtL,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACuL,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACvL,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACwL,YAAY,GAAG,IAAI,CAACA,YAAY,CAACxL,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACkJ,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAClJ,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACyL,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACzL,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC0L,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC1L,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC2L,6BAA6B,GAChC,IAAI,CAACA,6BAA6B,CAAC3L,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAAC4L,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAC5L,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC6L,8BAA8B,GACjC,IAAI,CAACA,8BAA8B,CAAC7L,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAAC8L,iCAAiC,GACpC,IAAI,CAACA,iCAAiC,CAAC9L,IAAI,CAAC,IAAI,CAAC;IACnD,IAAI,CAAC+L,mCAAmC,GACtC,IAAI,CAACA,mCAAmC,CAAC/L,IAAI,CAAC,IAAI,CAAC;IACrD,IAAI,CAACgM,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAChM,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACiM,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACjM,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACkM,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAClM,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACmM,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACnM,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACoM,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACpM,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACqM,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAACrM,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACsM,oCAAoC,GACvC,IAAI,CAACA,oCAAoC,CAACtM,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACuM,cAAc,GAAG,IAAI,CAACA,cAAc,CAACvM,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACwM,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACxM,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACyM,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACzM,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAAC0M,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAC1M,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC2M,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAAC3M,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC4M,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAAC5M,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAAC6M,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC7M,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC8M,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAAC9M,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAAC+M,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC/M,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACgN,6BAA6B,GAChC,IAAI,CAACA,6BAA6B,CAAChN,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACiN,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAACjN,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACkN,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAAClN,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACmN,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACnN,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACoN,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACpN,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACqN,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACrN,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACsN,qCAAqC,GACxC,IAAI,CAACA,qCAAqC,CAACtN,IAAI,CAAC,IAAI,CAAC;IACvD,IAAI,CAACuN,wCAAwC,GAC3C,IAAI,CAACA,wCAAwC,CAACvN,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACwN,oCAAoC,GACvC,IAAI,CAACA,oCAAoC,CAACxN,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACyN,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACzN,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC0N,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAC1N,IAAI,CAAC,IAAI,CAAC;IAExE,IAAI,CAAC2N,IAAI,GAAG,IAAI;IAChB,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,OAAO,GAAG,IAAIjU,OAAO,CAAC,CAAC;IAC5B,IAAI,CAACkU,mBAAmB,GAAGpU,WAAW;IACtC,IAAI,CAACqU,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,wBAAwB,GAAG,KAAK;;IAErC;IACA,IAAI,CAACC,QAAQ,GAAG,IAAIxS,gBAAgB,CAAC,CAAC;IACtC,IAAI,CAACyS,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,cAAc,gBAAGtX,KAAK,CAACuX,SAAS,CAAC,CAAC;IACvC,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,cAAc,gBAAGzX,KAAK,CAACuX,SAAS,CAAC,CAAC;IAEvC,IAAI,CAACG,UAAU,gBAAG1X,KAAK,CAACuX,SAAS,CAAC,CAAC;IAEnC,IAAI,CAACI,SAAS,GAAG,KAAK;IAEtB,IAAI,CAACpN,qBAAqB,GAAG;MAC3B6B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAACwL,eAAe,CAAC,CAAC;MACpC5L,QAAQ,EAAE9F,SAAS,CAAC2R,KAAK,CAACC;IAC5B,CAAC;IAED,IAAI,CAACtN,qBAAqB,GAAG;MAC3B4B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAAC2L,eAAe,CAAC,CAAC;MACpC/L,QAAQ,EAAE9F,SAAS,CAAC2R,KAAK,CAACG;IAC5B,CAAC;IAED,IAAI,CAACvN,mBAAmB,GAAG;MACzB2B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAAC6L,aAAa,CAAC,CAAC;MAClCjM,QAAQ,EAAE9F,SAAS,CAAC2R,KAAK,CAACK;IAC5B,CAAC;IAED,IAAI,CAACC,aAAa,GAAG;MACnB/L,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAM;UAAEhD;QAAM,CAAC,GAAG,IAAI,CAACV,KAAK;QAC5B,IACErH,mBAAmB,CAAC+H,KAAK,CAAC,IAC1BA,KAAK,CAACsG,UAAU,IAChBtG,KAAK,CAACgP,cAAc,CAAChQ,IAAI,GAAG,CAAC,EAC7B;UACA,IAAI,CAACiQ,cAAc,CAAC,CAAC,CAACC,KAAK,CAACzR,GAAG,CAAC0R,KAAK,CAAC;QACxC;MACF,CAAC;MACDvM,QAAQ,EAAE9F,SAAS,CAACsS,WAAW,CAACC;IAClC,CAAC;IACD,IAAI,CAACC,YAAY,GAAG;MAClBtM,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAM;UAAEhD;QAAM,CAAC,GAAG,IAAI,CAACV,KAAK;QAC5B,IACErH,mBAAmB,CAAC+H,KAAK,CAAC,IAC1BA,KAAK,CAACsG,UAAU,IAChBtG,KAAK,CAACgP,cAAc,CAAChQ,IAAI,GAAG,CAAC,IAC7BgB,KAAK,CAACuP,iBAAiB,CAACvQ,IAAI,KAAK,CAAC,EAClC;UACA,IAAI,CAACwQ,aAAa,CAAC,CAAC,CAACN,KAAK,CAACzR,GAAG,CAAC0R,KAAK,CAAC;QACvC;MACF,CAAC;MACDvM,QAAQ,EAAE9F,SAAS,CAACsS,WAAW,CAACK;IAClC,CAAC;IACD,IAAI,CAACC,cAAc,GAAG,CACpB,IAAI,CAACvO,qBAAqB,EAC1B,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,mBAAmB,EACxB,IAAI,CAAC0N,aAAa,EAClB,IAAI,CAACO,YAAY,CAClB;IAED,IAAM;MACJ9Q,mBAAmB,EAAnBA,oBAAmB;MACnBmR,kBAAkB;MAClBC,qBAAqB;MACrBtO,gBAAgB,EAAhBA,iBAAgB;MAChBuO,oBAAoB;MACpB7P,KAAK,EAALA,MAAK;MACL+G,YAAY,EAAE+I,gBAAgB;MAC9BC,SAAS,EAAEC,aAAa;MACxBC,UAAU;MACVC,gBAAgB;MAChBtR,YAAY,EAAZA,aAAY;MACZwE,gBAAgB,EAAhBA,iBAAgB;MAChB+M,cAAc;MACd5O,aAAa,EAAbA,cAAa;MACbiG,WAAW,EAAXA,YAAW;MACXC,qBAAqB,EAArBA,sBAAqB;MACrBC,mBAAmB,EAAnBA,oBAAmB;MACnBnJ,eAAe,EAAfA,gBAAe;MACfG,YAAY,EAAZA,aAAY;MACZI,qBAAqB;MACrBkQ,cAAc;MACdoB,OAAO;MACPC,aAAa;MACbC;IACF,CAAC,GAAGhR,KAAK;IAET,IAAM;MAAEoF,EAAE,EAAFA;IAAG,CAAC,GAAG1E,MAAK;IACpB,IAAMuQ,WAAyB,GAAG,CAChC,IAAI9V,iBAAiB,CAAC,IAAI,CAAC,EAC3B,IAAIF,qBAAqB,CAAC,IAAI,CAAC,CAChC;IACD,IAAMiW,aAAiC,GAAG,CACxC,IAAI9V,gCAAgC,CAAC,IAAI,CAAC,EAC1C,IAAIO,2BAA2B,CAAC,IAAI,CAAC,EACrC,IAAIE,yBAAyB,CAAC,IAAI,CAAC,EACnC,IAAIR,gCAAgC,CAAC,IAAI,CAAC,EAC1C,IAAIC,iCAAiC,CAAC,IAAI,CAAC,EAC3C,IAAIM,wBAAwB,CAAC,IAAI,CAAC,EAClC,IAAIF,0BAA0B,CAAC,IAAI,CAAC,EACpC,IAAIH,0BAA0B,CAAC,IAAI,EAAE6J,GAAE,CAAC,EACxC,IAAI3J,8BAA8B,CAAC,IAAI,CAAC,EACxC,IAAIK,mBAAmB,CAAC,IAAI,CAAC,CAC9B;IACD,IAAIgV,OAAO,EAAE;MACXG,WAAW,CAAC1O,IAAI,CAAC,IAAIrH,cAAc,CAAC,IAAI,CAAC,CAAC;MAC1CgW,aAAa,CAAC3O,IAAI,CAAC,IAAI/G,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC5D;IACA,IAAMiM,aAAY,GAChB+I,gBAAgB,CAAC7Q,MAAM,GAAG,CAAC,GACvB6Q,gBAAgB,GAChB9P,MAAK,CAACyQ,mBAAmB;IAC/B,IAAMV,SAAS,GACbC,aAAa,CAAC/Q,MAAM,GAAG,CAAC,GAAG+Q,aAAa,GAAGhQ,MAAK,CAAC0Q,gBAAgB;IAEnE,IAAMvN,iBAAgB,GAAG,IAAI7H,wBAAwB,CAAC;MACpD8H,gBAAgB,EAAE,IAAIE,GAAG,CAACF,iBAAgB,CAAC;MAC3C+M,cAAc,EAAE,IAAI7M,GAAG,CAAC6M,cAAc,CAAC;MACvCpJ,YAAY,EAAZA,aAAY;MACZxD,mBAAmB,EAAE,IAAID,GAAG,CAC1BtD,MAAK,aAALA,MAAK,wBAAAT,kBAAA,GAALS,MAAK,CAAE2Q,WAAW,cAAApR,kBAAA,wBAAAC,qBAAA,GAAlBD,kBAAA,CAAoBqR,aAAa,cAAApR,qBAAA,uBAAjCA,qBAAA,CAAmCgF,GAAG,CAACH,IAAI,IAAI,CAC7CrE,MAAK,CAAC6Q,oBAAoB,CAACxM,IAAI,CAAC,EAChC,CAAC,CACF,CACH;IACF,CAAC,CAAC;IACF,IAAMyM,aAAa,GAAGrJ,sBAAqB,aAArBA,sBAAqB,cAArBA,sBAAqB,GAAI,EAAE;IACjD,IAAM5I,aAAY,GAAGrC,iBAAiB,CAACmL,kBAAkB,CACvDjD,GAAE,EACF8C,YAAW,EACXsJ,aAAa,EACb9Q,MAAK,CAACwD,OAAO,EACbkE,oBACF,CAAC;IAED,IAAI,CAAC/G,UAAU,GAAG,IAAItH,UAAU,CAACqL,GAAE,CAAC;IAEpC,IAAI,CAACuD,KAAK,GAAG;MACX3G,gBAAgB,EAAhBA,iBAAgB;MAChBuO,oBAAoB;MACpBkB,sBAAsB,EAAE,IAAI;MAC5B5N,gBAAgB,EAAhBA,iBAAgB;MAChB6N,OAAO,EAAEhM,SAAS;MAClBuL,WAAW;MACXC,aAAa;MAEbP,UAAU;MACVC,gBAAgB;MAChBe,cAAc,EAAE,IAAI;MACpB/K,gBAAgB,EAAE,EAAE;MACpB;MACA;MACAxH,YAAY,EAAEA,aAAY,GAAG,IAAI4E,GAAG,CAAC5E,aAAY,CAAC,GAAG,IAAI4E,GAAG,CAAC,CAAC;MAC9D/E,eAAe,EAAE,IAAI+E,GAAG,CAAC/E,gBAAe,CAAC;MACzC2S,mBAAmB,EAAE,IAAI;MACzBC,mBAAmB,EAAE,IAAI;MACzBpS,KAAK,EAAE,EAAE;MACTJ,WAAW,EAAEtF,UAAU,CAAC6F,YAAY,CAACC,IAAI;MACzCV,aAAa,EAAE,EAAE;MACjBK,qBAAqB;MAErB;MACAsS,cAAc,EAAE,EAAE;MAElB;MACAC,aAAa,EAAE,IAAI;MAEnB;MACAC,WAAW,EAAE,IAAI;MACjBvL,oBAAoB,EAAE,IAAI;MAC1BwL,mBAAmB,EAAE,KAAK;MAE1BxK,YAAY,EAAZA,aAAY;MACZgJ,SAAS;MAETyB,kBAAkB,EAAE,IAAI;MAExBrR,SAAS,EAAE,IAAIhH,SAAS,CAACuL,GAAE,CAAC;MAC5BsB,WAAW,EAAE,KAAK;MAClB4J,qBAAqB,EAAE,IAAItM,GAAG,CAACsM,qBAAqB,CAAC;MAErDD,kBAAkB;MAClB8B,0BAA0B,EAAE,IAAI;MAChC5J,wBAAwB,EAAE7C,SAAS;MAEnC;MACAa,iBAAiB,EAAE,IAAI;MAEvB6L,kBAAkB,EAAE,KAAK;MACzBC,OAAO,EAAE,KAAK;MACd3J,mBAAmB,EAAE,EAAE;MACvBF,qBAAqB,EAAE,CAAC;MACxBC,0BAA0B,EAAE,CAAC;MAE7BxG,aAAa,EAAbA,cAAa;MACb1C,YAAY,EAAZA,aAAY;MACZ2I,WAAW,EAAXA,YAAW;MACXC,qBAAqB,EAAEqJ,aAAa;MACpCpJ,mBAAmB,EAAnBA,oBAAmB;MAEnB9I,YAAY,EAAZA,aAAY;MACZgT,qBAAqB,EAAE,EAAE;MACzBpT,mBAAmB,EAAnBA,oBAAmB;MACnBqT,mBAAmB,EAAE,IAAI;MAEzBC,WAAW,EAAE,EAAE;MAEfC,eAAe,EAAE,CAAC;MAClB/C,cAAc,EAAEA,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,IAAI1L,GAAG,CAAC,CAAC;MAC3CiM,iBAAiB,EAAE,IAAIjM,GAAG,CAAC,CAAC;MAC5B0O,kBAAkB,EAAE,IAAI;MACxBC,gBAAgB,EAAE,IAAI;MAEtBC,YAAY,EAAE,IAAI;MAClB7B,aAAa;MACb8B,iBAAiB,EAAE,KAAK;MACxBC,YAAY,EAAE,EAAE;MAChBhK,0BAA0B,EAAE,IAAI;MAChCe,sBAAsB,EAAE,IAAI;MAC5BC,yBAAyB,EAAE,QAAQ;MACnCG,qBAAqB,EAAE,IAAI;MAC3BC,qBAAqB,EAAE,EAAE;MACzB6I,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE,EAAE;MACXC,YAAY,EAAE,EAAE;MAChBC,cAAc,EAAE,EAAE;MAElBC,2BAA2B,GAAAhT,qBAAA,IAAAC,eAAA,GAAEM,MAAK,CAACwD,OAAO,CAAC,CAAC,CAAC,cAAA9D,eAAA,uBAAhBA,eAAA,CAAkB2E,IAAI,cAAA5E,qBAAA,cAAAA,qBAAA,GAAI,EAAE;MACzDiT,uBAAuB,EAAE3Y,UAAU,CAAC4Y,YAAY;MAChDhJ,SAAS,EAAE,EAAE;MACb2G,kBAAkB,EAAEA,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAItQ,MAAK,CAAC4S;IAClD,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAE3C,gBAAgB;MAAElQ;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC9C,IAAMkE,OAAO,GAAG0M,gBAAgB,CAACjR,MAAM,GACnCiR,gBAAgB,GAChBlQ,KAAK,CAACwD,OAAO,CAACS,MAAM,CAAC6O,CAAC,IAAIA,CAAC,CAACC,iBAAiB,CAAC;IAClD,IACE/S,KAAK,CAACgT,gBAAgB,IACtBhT,KAAK,CAACiT,sBAAsB,IAC5BzP,OAAO,CAACvE,MAAM,EACd;MACA,IAAI,CAACiU,mBAAmB,CAAC1P,OAAO,CAAC;IACnC,CAAC,MAAM;MACL,IAAI,CAAC2P,SAAS,CAAC,CAAC;IAClB;IACA,IAAI,CAACC,cAAc,CAACpT,KAAK,CAAC;EAC5B;EAEAqT,kBAAkBA,CAACC,SAAwB,EAAEC,SAAwB,EAAQ;IAC3E,IAAM;MACJC,YAAY;MACZ1N,iBAAiB;MACjB2N,QAAQ;MACRzT,KAAK;MACLiG,aAAa;MACblH;IACF,CAAC,GAAG,IAAI,CAACO,KAAK;IAEd,IAAIU,KAAK,KAAKsT,SAAS,CAACtT,KAAK,EAAE;MAC7B,IAAI,CAAC0T,aAAa,CAACJ,SAAS,CAACtT,KAAK,CAAC;MACnC,IAAI,CAACoT,cAAc,CAACpT,KAAK,CAAC;IAC5B;IAEA,IAAM2T,mBAAmB,GACvBH,YAAY,KAAKF,SAAS,CAACE,YAAY,GACnCA,YAAY,CAACvP,MAAM,CACjB2P,WAAW,IAAI,CAACN,SAAS,CAACE,YAAY,CAACK,QAAQ,CAACD,WAAW,CAC7D,CAAC,GACD,EAAE;IACR,IAAID,mBAAmB,CAAC1U,MAAM,GAAG,CAAC,EAAE;MAAA,IAAA6U,qBAAA;MAClC,IAAM;QAAEC;MAAiB,CAAC,GAAG,IAAI,CAACzU,KAAK;MACvC,IAAM0U,sBAAsB,IAAAF,qBAAA,GAC1BC,gBAAgB,CAACE,GAAG,CAClBrX,oBAAoB,CAACsX,wCACvB,CAAC,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MACZ,IAAIE,sBAAsB,EAAE;QAC1B,IAAI,CAACG,mBAAmB,CAAC,CAAC;QAC1B,IAAI,CAACC,qBAAqB,CAAC,CAAC;MAC9B;MACA,IAAI,CAACC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;MACvC,IAAI,CAACC,iBAAiB,CAACX,mBAAmB,EAAEK,sBAAsB,CAAC;IACrE;IAEA,IAAIlO,iBAAiB,KAAKwN,SAAS,CAACxN,iBAAiB,EAAE;MACrD,IAAI,CAACyO,oBAAoB,CAAC,CAAC;IAC7B;IACA,IAAId,QAAQ,KAAKH,SAAS,CAACG,QAAQ,EAAE;MACnC,IAAI,CAACe,uBAAuB,CAACf,QAAQ,CAAC;IACxC;IACA,IAAIxN,aAAa,KAAKqN,SAAS,CAACrN,aAAa,EAAE;MAC7C,IAAI,CAACoO,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;IACzC;IACA,IAAItV,KAAK,KAAKuU,SAAS,CAACvU,KAAK,EAAE;MAC7B,IAAI,CAAC0V,WAAW,CAAC1V,KAAK,CAAC;IACzB;IACA,IAAM;MAAE2V,qBAAqB;MAAEC;IAAuB,CAAC,GAAG,IAAI;IAC9D,IAAID,qBAAqB,IAAI,IAAI,IAAIC,sBAAsB,IAAI,IAAI,EAAE;MACnEC,MAAM,CAACC,qBAAqB,CAAC,MAAM;QACjC,IAAM3L,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;QACtB,IAAM4L,WAAW,GAAG5L,GAAG,GAAGwL,qBAAqB;QAC/C,IAAMK,SAAS,GAAGJ,sBAAsB,GAAGD,qBAAqB;QAChE,IAAM3O,oBAAoB,GAAGiP,IAAI,CAACC,GAAG,CAACH,WAAW,GAAGC,SAAS,EAAE,CAAC,CAAC;QACjE,IAAIJ,sBAAsB,GAAGzL,GAAG,EAAE;UAChC,IAAI,CAACwL,qBAAqB,GAAG1P,SAAS;UACtC,IAAI,CAAC2P,sBAAsB,GAAG3P,SAAS;QACzC;QAEA,IAAI,CAAC4C,QAAQ,CAACK,KAAK,IAAI;UACrB,IAAIA,KAAK,CAAClC,oBAAoB,IAAI,IAAI,EAAE;YACtCtI,GAAG,CAACyX,MAAM,CAAC,kDAAkD,CAAC;YAC9D,OAAO,IAAI;UACb;UAEA,OAAO;YAAEnP;UAAqB,CAAC;QACjC,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEA,IAAM;MAAE+L;IAAY,CAAC,GAAG,IAAI,CAAC7J,KAAK;IAClC,IAAI6J,WAAW,KAAKyB,SAAS,CAACzB,WAAW,EAAE;MACzC,IAAMqD,aAAa,GAAIC,MAAkB,IACvCA,MAAM,CAACtT,IAAI,KAAK7F,UAAU,CAACoZ,gBAAgB;MAC7C,IACE,CAACvD,WAAW,CAACwD,IAAI,CAACH,aAAa,CAAC,IAChC5B,SAAS,CAACzB,WAAW,CAACwD,IAAI,CAACH,aAAa,CAAC,EACzC;QACA,IAAI,CAACI,uBAAuB,CAAC,CAAC;MAChC;IACF;IAEA,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEzV;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAI,CAACoU,aAAa,CAAC1T,KAAK,CAAC;IACzB,IAAI,CAAC2N,OAAO,CAAC+H,MAAM,CAAC,CAAC;IACrB,IAAI,CAACC,kBAAkB,CAACD,MAAM,CAAC,CAAC;IAEhC,IAAI,IAAI,CAACE,YAAY,EAAE;MACrBC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;IACjC;IACA,IAAI,CAACE,4BAA4B,CAACJ,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,CAACK,cAAc,KAAK/Q,SAAS,EAAE;MACrCgR,oBAAoB,CAAC,IAAI,CAACD,cAAc,CAAC;IAC3C;EACF;;EAiCA;;EAqCA,IAAIE,WAAWA,CAAA,EAA0B;IAAA,IAAAC,qBAAA,EAAAC,UAAA;IACvC,QAAAD,qBAAA,IAAAC,UAAA,GAAO,IAAI,CAAC1I,IAAI,cAAA0I,UAAA,uBAATA,UAAA,CAAWC,aAAa,CAACC,OAAO,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACjD;;EAsNA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EA8IEI,eAAeA,CACbC,WAA2B,EAC3BC,QAAwB,EAEN;IAAA,IADlBC,QAAQ,GAAAC,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAEhB,IAAM;MAAE1W;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAEoF;IAAG,CAAC,GAAG1E,KAAK;IACpB,IAAM2W,WAAW,GAAG,IAAI,CAACC,cAAc,CAACL,WAAW,CAAC;IACpD,IAAMM,QAAQ,GAAG,IAAI,CAACC,WAAW,CAACN,QAAQ,CAAC;IAC3C,IAAIC,QAAQ,IAAIE,WAAW,IAAI,IAAI,IAAIE,QAAQ,IAAI,IAAI,EAAE;MACvD,IAAME,MAAK,GAAG/W,KAAK,CAACgX,YAAY,CAACL,WAAW,EAAEE,QAAQ,CAAC;MACvD,IAAIxd,UAAU,CAAC4d,UAAU,CAACjX,KAAK,CAACwD,OAAO,CAACmT,WAAW,CAAC,CAAC7U,IAAI,CAAC,EAAE;QAC1D;QACA,IAAM;UAAE3B;QAAU,CAAC,GAAGH,KAAK;QAC3B,OAAO0E,EAAE,CAACwS,IAAI,CAACC,cAAc,CAACC,MAAM,CAClChZ,wBAAwB,EACxB2Y,MAAK,EACLrS,EAAE,CAACwS,IAAI,CAACG,QAAQ,CAACC,WAAW,CAACnX,SAAS,CAACoX,QAAQ,CACjD,CAAC;MACH;MACA,OAAOR,MAAK;IACd;IACA,IAAIN,QAAQ,EAAE;MACZ,OAAO,IAAI;IACb;IACA,IAAIE,WAAW,IAAI,IAAI,IAAIE,QAAQ,IAAI,IAAI,EAAE;MAC3C,OAAO7W,KAAK,CAACwX,WAAW,CAACb,WAAW,EAAEE,QAAQ,CAAC;IACjD;IACA,OAAO,EAAE;EACX;EAEAD,cAAcA,CAACL,WAA2B,EAAiC;IACzE,IAAM;MAAEvF;IAAQ,CAAC,GAAG,IAAI,CAAC/I,KAAK;IAC9B3O,aAAa,CAAC0X,OAAO,CAAC;IACtB,IAAM;MAAEyG;IAAa,CAAC,GAAGzG,OAAO;IAChC,IAAIyG,YAAY,IAAI,IAAI,EAAE;MACxB,OAAO,IAAI;IACb;IAEA,OAAOlB,WAAW,IAAI,IAAI,GAAGkB,YAAY,CAACxD,GAAG,CAACsC,WAAW,CAAC,GAAG,IAAI;EACnE;EAEAO,WAAWA,CAACN,QAAwB,EAAiC;IACnE,IAAM;MAAExF;IAAQ,CAAC,GAAG,IAAI,CAAC/I,KAAK;IAC9B3O,aAAa,CAAC0X,OAAO,CAAC;IACtB,IAAM;MAAE0G;IAAU,CAAC,GAAG1G,OAAO;IAC7B,IAAI0G,SAAS,IAAI,IAAI,EAAE;MACrB,OAAO,IAAI;IACb;IAEA,OAAOlB,QAAQ,IAAI,IAAI,GAAGkB,SAAS,CAACzD,GAAG,CAACuC,QAAQ,CAAC,GAAG,IAAI;EAC1D;EAEAmB,QAAQA,CAAA,EAA+B;IAAA,IAAAC,KAAA;IACrC,IAAM;MAAE5X,KAAK;MAAEqG;IAAM,CAAC,GAAG,IAAI,CAAC/G,KAAK;IAEnC,OAAO,IAAI,CAACuY,cAAc,CACxB,IAAI,CAACC,OAAO,EACZzR,KAAK,GAAAuR,KAAA,GACJ3f,mBAAmB,CAAC+H,KAAK,CAAC,IAAIA,KAAK,CAACsG,UAAU,cAAAsR,KAAA,cAAAA,KAAA,GAAK,KAAK,EACzD5X,KAAK,CAAC+X,mBAAmB,GAAG/X,KAAK,CAACgY,sBACpC,CAAC;EACH;EAEAC,gBAAgBA,CAACC,UAAsB,EAAgB;IACrD,IAAM;MAAEnR;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IACnC,OAAOjQ,SAAS,CAACmgB,eAAe,CAACD,UAAU,EAAEnR,YAAY,CAAC;EAC5D;EAEAqR,eAAeA,CACbxY,MAAc,EACdyY,IAAY,EACZd,QAAgB,EACQ;IACxB,IAAI;MACF,OAAO,IAAI,CAAC5W,UAAU,CAACyX,eAAe,CAACxY,MAAM,EAAEyY,IAAI,EAAEd,QAAQ,CAAC;IAChE,CAAC,CAAC,OAAOe,GAAG,EAAE;MACZ7a,GAAG,CAAC0R,KAAK,CAAC,6BAA6B,EAAEmJ,GAAG,CAAC;IAC/C;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEhE,iBAAiBA,CACfd,YAA2B,EAErB;IAAA,IADN+E,eAAe,GAAA7B,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAEvB,IAAM;MAAE1W;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAEf,eAAe;MAAEG;IAAa,CAAC,GAAG,IAAI,CAACuJ,KAAK;IACpD,IAAMuQ,kBAAkB,GAAGD,eAAe,GACtC,IAAIjV,GAAG,CAAC,CAAC,GACT,IAAIA,GAAG,CAAC/E,eAAe,CAAC;IAC5B,IAAMka,eAAe,GAAGF,eAAe,GAAG,IAAIjV,GAAG,CAAC,CAAC,GAAG,IAAIA,GAAG,CAAC5E,YAAY,CAAC;IAE3E,IAAIga,SAAS,GAAGH,eAAe,IAAIha,eAAe,CAACS,IAAI,GAAG,CAAC;IAC3DwU,YAAY,CAAC9P,OAAO,CAACiV,KAAA,IAA2B;MAAA,IAA1B;QAAEtU,IAAI;QAAEvC,IAAI;QAAEiV;MAAM,CAAC,GAAA4B,KAAA;MACzC,IAAMT,UAAU,GAAGlY,KAAK,CAACwD,OAAO,CAACoV,SAAS,CACxCC,KAAA;QAAA,IAAC;UAAExU,IAAI,EAAEyU,UAAU;UAAEhX,IAAI,EAAEiX;QAAW,CAAC,GAAAF,KAAA;QAAA,OACrCC,UAAU,KAAKzU,IAAI,IAAI0U,UAAU,KAAKjX,IAAI;MAAA,CAC9C,CAAC;MACD,IAAIoW,UAAU,IAAI,CAAC,EAAE;QACnBQ,SAAS,GAAGF,kBAAkB,CAACQ,MAAM,CAACd,UAAU,CAAC,IAAIQ,SAAS;QAC9DA,SAAS,GACP,IAAI,CAACO,gBAAgB,CAACf,UAAU,EAAEnB,KAAK,EAAE0B,eAAe,CAAC,IACzDC,SAAS;MACb,CAAC,MAAM;QACLjb,GAAG,CAAC0R,KAAK,CAAC,uCAAuC,EAAE9K,IAAI,EAAEvC,IAAI,EAAEiV,KAAK,CAAC;MACvE;IACF,CAAC,CAAC;IACF,IAAI2B,SAAS,EAAE;MACb,IAAI,CAAC9Q,QAAQ,CAAC;QACZlJ,YAAY,EAAE+Z,eAAe;QAC7Bla,eAAe,EAAEia;MACnB,CAAC,CAAC;IACJ;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACES,gBAAgBA,CACdf,UAAsB,EACtBnB,KAAoB,EACpBrY,YAA4B,EACnB;IACT,IAAM;MAAEsB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAEa;IAAU,CAAC,GAAGH,KAAK;IAC3B,IAAMJ,MAAM,GAAGI,KAAK,CAACwD,OAAO,CAAC0U,UAAU,CAAC;IAExC,IAAInB,KAAK,IAAI,IAAI,IAAI,GAAAmC,MAAA,CAAGnC,KAAK,EAAGoC,IAAI,CAAC,CAAC,CAACla,MAAM,GAAG,CAAC,EAAE;MACjD,IAAMma,WAAW,GAAG1a,YAAY,CAACuV,GAAG,CAACiE,UAAU,CAAC;MAChD,IAAIkB,WAAW,IAAI,IAAI,EAAE;QACvB,IAAM;UAAEf;QAAK,CAAC,GAAGe,WAAW;QAC5B,IAAIf,IAAI,KAAKtB,KAAK,EAAE;UAClBtZ,GAAG,CAACyX,MAAM,CAAC,oCAAoC,CAAC;UAChD,OAAO,KAAK;QACd;MACF;MACAxW,YAAY,CAAC2a,GAAG,CAACnB,UAAU,EAAE;QAC3BG,IAAI,EAAEtB,KAAK;QACX9S,MAAM,EAAE,IAAI,CAACmU,eAAe,CAACxY,MAAM,EAAEmX,KAAK,EAAE5W,SAAS,CAACoX,QAAQ;MAChE,CAAC,CAAC;MACF,OAAO,IAAI;IACb;IACA,OAAO7Y,YAAY,CAACsa,MAAM,CAACd,UAAU,CAAC;EACxC;EAEAoB,oBAAoBA,CAAC/a,eAA0C,EAAQ;IACrE,IAAI,CAACqJ,QAAQ,CAAC;MAAErJ;IAAgB,CAAC,CAAC;EACpC;EAEAgb,iBAAiBA,CACfrB,UAAsB,EACtBjU,MAA8B,EAC9BvD,OAA8B,EACxB;IACNjD,GAAG,CAACsH,KAAK,CAAC,yBAAyB,EAAEmT,UAAU,EAAEjU,MAAM,CAAC;IAExD,IAAI,CAACoQ,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;IAEvC,IAAI,CAACzM,QAAQ,CAAC4R,KAAA,IAAyB;MAAA,IAAxB;QAAEjb;MAAgB,CAAC,GAAAib,KAAA;MAChC,IAAMhB,kBAAkB,GAAG,IAAIlV,GAAG,CAAC/E,eAAe,CAAC;MACnD,IAAI0F,MAAM,IAAI,IAAI,EAAE;QAClBuU,kBAAkB,CAACQ,MAAM,CAACd,UAAU,CAAC;MACvC,CAAC,MAAM;QACLM,kBAAkB,CAACa,GAAG,CAACnB,UAAU,EAAE;UACjCjU,MAAM;UACNvD;QACF,CAAC,CAAC;MACJ;MACA,OAAO;QAAEnC,eAAe,EAAEia;MAAmB,CAAC;IAChD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEiB,cAAcA,CACZvB,UAAsB,EACtBjU,MAA8B,EAC9BoU,IAAY,EACN;IACN5a,GAAG,CAACsH,KAAK,CAAC,sBAAsB,EAAEmT,UAAU,EAAEjU,MAAM,EAAEoU,IAAI,CAAC;IAE3D,IAAI,CAAChE,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;IAEvC,IAAI,CAACzM,QAAQ,CAAC8R,KAAA,IAAsB;MAAA,IAArB;QAAEhb;MAAa,CAAC,GAAAgb,KAAA;MAC7B,IAAMjB,eAAe,GAAG,IAAInV,GAAG,CAAC5E,YAAY,CAAC;MAC7C+Z,eAAe,CAACY,GAAG,CAACnB,UAAU,EAAE;QAAEjU,MAAM;QAAEoU;MAAK,CAAC,CAAC;MACjD,OAAO;QAAE3Z,YAAY,EAAE+Z;MAAgB,CAAC;IAC1C,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACEkB,YAAYA,CAACC,SAAoB,EAAQ;IAAA,IAAAC,sBAAA;IACvCpc,GAAG,CAACsH,KAAK,CAAC,cAAc,EAAE6U,SAAS,CAAC;IAEpC,IAAM;MAAE7F;IAAiB,CAAC,GAAG,IAAI,CAACzU,KAAK;IACvC,IAAMwa,gCAAgC,IAAAD,sBAAA,GACpC9F,gBAAgB,CAACE,GAAG,CAClBrX,oBAAoB,CAACmd,8BACvB,CAAC,cAAAF,sBAAA,cAAAA,sBAAA,GAAI,KAAK;IACZ,IAAIC,gCAAgC,EAAE;MACpC,IAAI,CAACE,eAAe,CAAC,CAAC;IACxB;IAEA,IAAM;MAAEha;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5Bsa,SAAS,CAAClW,OAAO,CAAC,CAAAuW,MAAA,EAA6BnB,UAAU,KAAK;MAAA,IAA3C;QAAEC,UAAU;QAAEmB;MAAW,CAAC,GAAAD,MAAA;MAC3C,IAAMra,MAAM,GAAGI,KAAK,CAACwD,OAAO,CAAC2W,IAAI,CAC/BrH,CAAC,IAAIA,CAAC,CAACzO,IAAI,KAAKyU,UAAU,IAAIhG,CAAC,CAAChR,IAAI,KAAKiX,UAC3C,CAAC;MACD,IAAInZ,MAAM,IAAI,IAAI,EAAE;QAClB;MACF;MACA,IAAM2W,WAAW,GAAGvW,KAAK,CAAC6Q,oBAAoB,CAACjR,MAAM,CAACyE,IAAI,CAAC;MAC3D/K,aAAa,CAACid,WAAW,CAAC;MAC1B,IAAM6D,YAAY,GAAG7d,aAAa,CAAC8d,sBAAsB,CACvDtB,UAAU,EACVmB,UACF,CAAC;MACD,IAAIE,YAAY,CAACnb,MAAM,KAAK,CAAC,EAAE;QAC7B,IAAI,CAACqb,iBAAiB,CAAC/D,WAAW,CAAC;MACrC,CAAC,MAAM;QACL,IAAM;UAAEpW;QAAU,CAAC,GAAGH,KAAK;QAC3B,IAAI,CAACyZ,cAAc,CACjBlD,WAAW,EACX,IAAI,CAAC6B,eAAe,CAACxY,MAAM,EAAEwa,YAAY,EAAEja,SAAS,CAACoX,QAAQ,CAAC,KAAA2B,MAAA,CAC3DkB,YAAY,CACjB,CAAC;MACH;IACF,CAAC,CAAC;EACJ;EAEAG,kBAAkBA,CAACC,UAAyC,EAAQ;IAClE,IAAI,CAACnG,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;IAEvC,IAAMoG,UAA4B,GAAGC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GAC1DA,UAAU,GACV,CAACA,UAAU,EAAEA,UAAU,CAAC;IAE5B,IAAI,CAAC5S,QAAQ,CACXgT,MAAA,IAA+D;MAAA,IAA9D;QAAErc,eAAe;QAAEG;MAAqC,CAAC,GAAAkc,MAAA;MACxD,IAAMpC,kBAAqC,GAAGja,eAAe,GACzD,IAAI+E,GAAG,CAAC/E,eAAe,CAAC,GACxB,IAAI+E,GAAG,CAAC,CAAC;MACb,IAAMmV,eAA+B,GAAG/Z,YAAY,GAChD,IAAI4E,GAAG,CAAC5E,YAAY,CAAC,GACrB,IAAI4E,GAAG,CAAC,CAAC;MACbkV,kBAAkB,CAAC9U,OAAO,CAAC,CAACmX,CAAC,EAAEjb,MAAM,KAAK;QACxC,IAAIA,MAAM,IAAI6a,UAAU,CAAC,CAAC,CAAC,IAAI7a,MAAM,IAAI6a,UAAU,CAAC,CAAC,CAAC,EAAE;UACtDjC,kBAAkB,CAACQ,MAAM,CAACpZ,MAAM,CAAC;QACnC;MACF,CAAC,CAAC;MACF6Y,eAAe,CAAC/U,OAAO,CAAC,CAACmX,CAAC,EAAEjb,MAAM,KAAK;QACrC,IAAIA,MAAM,IAAI6a,UAAU,CAAC,CAAC,CAAC,IAAI7a,MAAM,IAAI6a,UAAU,CAAC,CAAC,CAAC,EAAE;UACtDhC,eAAe,CAACO,MAAM,CAACpZ,MAAM,CAAC;QAChC;MACF,CAAC,CAAC;MAEF,OAAO;QACLlB,YAAY,EAAE+Z,eAAe;QAC7Bla,eAAe,EAAEia;MACnB,CAAC;IACH,CACF,CAAC;EACH;EAEA8B,iBAAiBA,CAAC3D,WAAuB,EAAQ;IAC/C,IAAI,CAACtC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAE7C,IAAI,CAACzM,QAAQ,CAACkT,MAAA,IAAsB;MAAA,IAArB;QAAEpc;MAAa,CAAC,GAAAoc,MAAA;MAC7B,IAAMrC,eAAe,GAAG,IAAInV,GAAG,CAAC5E,YAAY,CAAC;MAC7C+Z,eAAe,CAACO,MAAM,CAACrC,WAAW,CAAC;MAEnC,OAAO;QAAEjY,YAAY,EAAE+Z;MAAgB,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEAuB,eAAeA,CAAA,EAAS;IACtBvc,GAAG,CAACsH,KAAK,CAAC,sBAAsB,CAAC;IAEjC,IAAM;MAAExG,eAAe;MAAEG,YAAY;MAAEG;IAAa,CAAC,GAAG,IAAI,CAACoJ,KAAK;IAClE,IACEvJ,YAAY,CAACM,IAAI,KAAK,CAAC,IACvBT,eAAe,CAACS,IAAI,KAAK,CAAC,IAC1BH,YAAY,KAAK,IAAI,EACrB;MACA;IACF;;IAEA;IACA,IAAI,CAACsV,mBAAmB,CAAC,CAAC;IAE1B,IAAI,CAACE,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC;IAC9C,IAAI,CAACzM,QAAQ,CAAC;MACZlJ,YAAY,EAAE,IAAI4E,GAAG,CAAC,CAAC;MACvB/E,eAAe,EAAE,IAAI+E,GAAG,CAAC,CAAC;MAC1BkE,WAAW,EAAE,EAAE;MACf3I,YAAY,EAAEmG;IAChB,CAAC,CAAC;EACJ;EAEAoP,qBAAqBA,CAAA,EAAS;IAC5B3W,GAAG,CAACsH,KAAK,CAAC,8BAA8B,CAAC;IAEzC,IAAI,CAAC6C,QAAQ,CAAC;MACZJ,WAAW,EAAE,EAAE;MACf3I,YAAY,EAAEmG;IAChB,CAAC,CAAC;EACJ;EAEAmP,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,IAAI,CAAC9F,cAAc,CAACgI,OAAO,IAAI,IAAI,EAAE;MACvC,IAAI,CAAChI,cAAc,CAACgI,OAAO,CAAC0E,QAAQ,CAAC,EAAE,CAAC;IAC1C;EACF;;EAEA;AACF;AACA;EACEC,cAAcA,CAAA,EAAS;IACrBvd,GAAG,CAACsH,KAAK,CAAC,oBAAoB,CAAC;IAE/B,IAAM;MAAE/E;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAEf,eAAe;MAAEG;IAAa,CAAC,GAAG,IAAI,CAACuJ,KAAK;IACpD,IAAM;MAAEzE,OAAO;MAAErD;IAAU,CAAC,GAAGH,KAAK;IAEpC,IAAMwY,kBAAkB,GAAG,IAAIlV,GAAG,CAAC,CAAC;IACpC,IAAMmV,eAAe,GAAG,IAAInV,GAAG,CAAC,CAAC;IAEjC/E,eAAe,CAACmF,OAAO,CAAC,CAACqT,KAAK,EAAEkE,GAAG,KAAK;MACtC,IAAM;QAAEva;MAAQ,CAAC,GAAGqW,KAAK;MACzB,IAAMnX,MAAM,GAAG4D,OAAO,CAACyX,GAAG,CAAC;MAC3B,IAAMhX,MAAM,GAAG,IAAI,CAACtD,UAAU,CAACua,kBAAkB,CAC/Ctb,MAAM,EACNc,OAAO,EACPP,SAAS,CAACoX,QACZ,CAAC;MACDiB,kBAAkB,CAACa,GAAG,CAAC4B,GAAG,EAAE;QAC1Bva,OAAO;QACPuD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFvF,YAAY,CAACgF,OAAO,CAAC,CAACqT,KAAK,EAAEkE,GAAG,KAAK;MACnC,IAAM;QAAE5C;MAAK,CAAC,GAAGtB,KAAK;MACtB,IAAMnX,MAAM,GAAG4D,OAAO,CAACyX,GAAG,CAAC;MAC3BxC,eAAe,CAACY,GAAG,CAAC4B,GAAG,EAAE;QACvB5C,IAAI;QACJpU,MAAM,EAAE,IAAI,CAACmU,eAAe,CAACxY,MAAM,EAAEyY,IAAI,EAAElY,SAAS,CAACoX,QAAQ;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAClD,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAChD,IAAI,CAACzM,QAAQ,CAAC;MACZlJ,YAAY,EAAE+Z,eAAe;MAC7Bla,eAAe,EAAEia;IACnB,CAAC,CAAC;EACJ;EAEA2C,UAAUA,CAAAC,MAAA,EAGwD;IAAA,IAHvD;MACT1c,YAAY;MACZH;IACuD,CAAC,GAAA6c,MAAA;IACxD,IAAI,CAACxT,QAAQ,CAAC;MACZlJ,YAAY;MACZH;IACF,CAAC,CAAC;EACJ;EAEAiW,uBAAuBA,CAACf,QAAmB,EAA4B;IAAA,IAAA4H,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IAAA,IAA1BC,WAAW,GAAA9E,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IAC7D,IAAM9I,mBAAmB,GAAGxU,cAAc,CAACqiB,gBAAgB,CAAChI,QAAQ,CAAC;IACrE,IAAMiI,wBAAwB,GAC5BtiB,cAAc,CAACuiB,2BAA2B,CAAClI,QAAQ,CAAC;IAEtD,IAAMmI,2BAA2B,IAAAP,qBAAA,GAC/B5H,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEmI,2BAA2B,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAC7C,IAAMQ,2BAA2B,IAAAP,qBAAA,GAC/B7H,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoI,2BAA2B,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAC7C,IAAMvN,wBAAwB,IAAAwN,qBAAA,GAC5B9H,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE1F,wBAAwB,cAAAwN,qBAAA,cAAAA,qBAAA,GAAI,KAAK;IAE7C,IAAMO,qBAAqB,GAAG,CAAC5kB,SAAS,CACtC,IAAI,CAAC0W,mBAAmB,EACxBA,mBACF,CAAC;IACD,IAAMmO,uBAAuB,GAAG,CAAC7kB,SAAS,CACxC,IAAI,CAACwkB,wBAAwB,EAC7BA,wBACF,CAAC;IACD,IAAMM,0BAA0B,GAAG,CAAC9kB,SAAS,CAC3C,IAAI,CAAC2W,oBAAoB,EACzB4F,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEmI,2BACZ,CAAC;IACD,IAAMK,0BAA0B,GAAG,CAAC/kB,SAAS,CAC3C,IAAI,CAAC4W,oBAAoB,EACzB+N,2BACF,CAAC;IACD,IAAMK,wBAAwB,GAC5B,IAAI,CAACnO,wBAAwB,KAAKA,wBAAwB;IAC5D,IACE+N,qBAAqB,IACrBC,uBAAuB,IACvBC,0BAA0B,IAC1BC,0BAA0B,IAC1BC,wBAAwB,EACxB;MACA,IAAI,CAACtO,mBAAmB,GAAGA,mBAAmB;MAC9C,IAAI,CAAC8N,wBAAwB,GAAGA,wBAAwB;MACxD,IAAI,CAAC7N,oBAAoB,GAAG+N,2BAA2B;MACvD,IAAI,CAAC9N,oBAAoB,GAAG+N,2BAA2B;MACvD,IAAI,CAAC9N,wBAAwB,GAAGA,wBAAwB;MACxD,IAAI,CAACoO,eAAe,CAAC,CAAC,CAAC,EAAEX,WAAW,CAAC;MAErC,IAAIO,uBAAuB,IAAIP,WAAW,EAAE;QAC1C,IAAI,CAACR,cAAc,CAAC,CAAC;MACvB;IACF;EACF;EAwCAmB,eAAeA,CACbC,cAA2E,EAErE;IAAA,IAAAC,qBAAA;IAAA,IADNb,WAAW,GAAA9E,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IAElB,IAAM;MAAE9G;IAAsB,CAAC,GAAG,IAAI,CAAC3H,KAAK;IAC5C,IAAM;MAAEjI;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAMgd,MAAM,GAAA1V,aAAA;MACVgJ;IAAqB,GAClBwM,cAAc,CAClB;IACD,IAAMG,mBAAmB,GAAG,CAC1B,KAAAF,qBAAA,GAAI,IAAI,CAACzO,mBAAmB,cAAAyO,qBAAA,cAAAA,qBAAA,GAAI,EAAE,CAAC,EACnC,GAAGC,MAAM,CAAC1M,qBAAqB,CAAC4M,MAAM,CAAC,CAAC,CACzC;IACD,IAAMrc,SAAS,GAAG,IAAIhH,SAAS,CAC7B6G,KAAK,CAAC0E,EAAE,EACR6X,mBAAmB,EACnB,IAAI,CAACb,wBAAwB,EAC7B,IAAI,CAAC7N,oBAAoB,EACzB,IAAI,CAACC,oBAAoB,EACzB,IAAI,CAACC,wBACP,CAAC;IAEDtQ,GAAG,CAACsH,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC6I,mBAAmB,EAAE2O,mBAAmB,CAAC;IAE3E,IAAI,CAAC3U,QAAQ,CAAAhB,aAAA,CAAAA,aAAA,KAAM0V,MAAM;MAAEnc;IAAS,IAAI,MAAM;MAC5C,IAAIqb,WAAW,IAAI,IAAI,CAAC/N,IAAI,EAAE;QAC5B,IAAI,CAACA,IAAI,CAAC+N,WAAW,CAAC,CAAC;MACzB;IACF,CAAC,CAAC;EACJ;EAEAiB,aAAaA,CAAA,EAAS;IACpB,IAAM;MAAEhJ;IAAS,CAAC,GAAG,IAAI,CAACnU,KAAK;IAC/B,IAAI,CAACkV,uBAAuB,CAACf,QAAQ,CAAC;EACxC;EAEAN,SAASA,CAAA,EAAS;IAChB,IAAM;MACJuJ,uBAAuB;MACvBlJ,YAAY;MACZzU,KAAK;MACLiB,KAAK;MACLrB,WAAW;MACXF,aAAa;MACb+I,WAAW;MACXC,qBAAqB;MACrBC;IACF,CAAC,GAAG,IAAI,CAACpI,KAAK;IAEd,IAAMwR,aAAa,GAAGrJ,qBAAqB,aAArBA,qBAAqB,cAArBA,qBAAqB,GAAI,EAAE;IACjD,IAAM5I,YAAY,GAAGrC,iBAAiB,CAACmL,kBAAkB,CACvD3H,KAAK,CAAC0E,EAAE,EACR8C,WAAW,EACXsJ,aAAa,EACb9Q,KAAK,CAACwD,OAAO,EACbkE,mBACF,CAAC;IAED,IAAIgV,uBAAuB,EAAE;MAC3B;MACA;MACA,IAAMC,sBAAsB,GAAGnJ,YAAY,CAACvP,MAAM,CAChD2P,WAAW,IAAIA,WAAW,CAACmD,KAAK,IAAI,IACtC,CAAC;MACD,IAAI,CAACzC,iBAAiB,CAACqI,sBAAsB,CAAC;IAChD;IAEA,IAAI,CAAC/U,QAAQ,CAAC;MACZ7I,KAAK;MACLJ,WAAW;MACXF,aAAa;MACbkT,OAAO,EAAE,IAAI;MACb9S;IACF,CAAC,CAAC;IACF,IAAI,CAAC4d,aAAa,CAAC,CAAC;EACtB;EAEMvJ,mBAAmBA,CAAChD,gBAA0B,EAAiB;IAAA,IAAA0M,KAAA;IAAA,OAAAC,iBAAA;MACnE,IAAM;QAAE7c;MAAM,CAAC,GAAG4c,KAAI,CAACtd,KAAK;MAC5Bsd,KAAI,CAAChV,QAAQ,CAAC;QAAEiI,oBAAoB,EAAE;MAAK,CAAC,CAAC;MAE7C,IAAI;QACF,IAAMoB,cAAc,SAAS2L,KAAI,CAACjP,OAAO,CAACmP,GAAG,CAC3C9c,KAAK,CAAC+c,WAAW,CAAC7M,gBAAgB,CAAC,EACnC8M,QAAQ,IAAIA,QAAQ,CAACC,KAAK,CAAC,CAC7B,CAAC;QAED,IAAMzZ,OAAO,GAAGyN,cAAc,CAACzN,OAAO,CAAC0Z,KAAK,CAAC,CAAC,EAAEhN,gBAAgB,CAACjR,MAAM,CAAC;QACxE,IAAMF,KAAK,GAAGyE,OAAO,CAACgB,GAAG,CAAC5E,MAAM,IAAIA,MAAM,CAACud,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QACzDnM,cAAc,CAACoM,SAAS,CAACte,KAAK,CAAC;QAC/BkS,cAAc,CAACqM,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE9Z,OAAO,CAAC;QAEzC,IAAM+Z,KAAI,SAASX,KAAI,CAACjP,OAAO,CAACmP,GAAG,CAAC7L,cAAc,CAACuM,eAAe,CAAC,CAAC,CAAC;QACrE,IAAID,KAAI,CAACE,IAAI,CAACxe,MAAM,GAAG,CAAC,EAAE;UACxB,IAAMye,GAAG,GAAGH,KAAI,CAACE,IAAI,CAAC,CAAC,CAAC;UACxB,IAAMjB,MAAM,GAAGhZ,OAAO,CAACgB,GAAG,CAAC5E,MAAM,IAAI8d,GAAG,CAACzJ,GAAG,CAACrU,MAAM,CAAC,CAAC;UAErDgd,KAAI,CAACe,eAAe,CAACnB,MAAM,EAAEtM,gBAAgB,CAAC;UAE9C0M,KAAI,CAAChV,QAAQ,CAAC;YAAEiI,oBAAoB,EAAE;UAAK,CAAC,CAAC;QAC/C,CAAC,MAAM;UACLpS,GAAG,CAACmgB,IAAI,CAAC,iDAAiD,CAAC;UAC3DhB,KAAI,CAAChV,QAAQ,CAAC;YAAEiI,oBAAoB,EAAE;UAAM,CAAC,CAAC;UAC9C+M,KAAI,CAAChQ,uBAAuB,CAAC,CAAC;QAChC;QACAgQ,KAAI,CAAChV,QAAQ,CAAC;UAAEqJ,cAAc;UAAEf;QAAiB,CAAC,EAAE,MAAM;UACxD0M,KAAI,CAACzJ,SAAS,CAAC,CAAC;QAClB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOhE,KAAK,EAAE;QACdyN,KAAI,CAACiB,oBAAoB,CAAC1O,KAAK,CAAC;MAClC;IAAC;EACH;EAEAwO,eAAeA,CACb1N,UAA6B,EAC7BC,gBAA0B,EACpB;IACN,IAAMhK,gBAAgB,GAAG,EAAE;IAE3B,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8I,gBAAgB,CAACjR,MAAM,EAAEmI,CAAC,IAAI,CAAC,EAAE;MACnD,IAAM0W,SAAS,GAAG7N,UAAU,CAAC7I,CAAC,CAAC;MAC/B,IAAM2W,eAAe,GAAG7N,gBAAgB,CAAC9I,CAAC,CAAC;MAE3C,IACE0W,SAAS,KAAK,IAAI,IAClB,EAAEzkB,UAAU,CAAC2kB,UAAU,CAACD,eAAe,CAACjc,IAAI,CAAC,IAAIgc,SAAS,KAAK,EAAE,CAAC,EAClE;QACA,IAAM;UAAE9d,KAAK,EAALA;QAAM,CAAC,GAAG,IAAI,CAACV,KAAK;QAE5B,IAAM2e,aAAa,GAAG5kB,UAAU,CAAC2kB,UAAU,CAACD,eAAe,CAACjc,IAAI,CAAC,GAC7D9B,OAAK,CAACke,aAAa,CACjBJ,SAAS,EACTC,eAAe,CAACjc,IAAI,EACpBic,eAAe,CAAC1Z,IAClB,CAAC,GACDyZ,SAAS;QACb,IAAMK,eAAe,GAAG,IAAI,CAACxd,UAAU,CAACyd,4BAA4B,CAClEL,eAAe,EACfE,aACF,CAAC;QACD,IAAIE,eAAe,KAAK,IAAI,EAAE;UAC5BjY,gBAAgB,CAACrE,IAAI,CAACsc,eAAe,CAAC;QACxC;MACF;IACF;IAEA,IAAI,CAACvW,QAAQ,CAAC;MACZqI,UAAU;MACV/J;IACF,CAAC,CAAC;EACJ;EAEAmY,QAAQA,CACN9H,WAA2B,EAC3BC,QAAwB,EAElB;IAAA,IADNC,QAAQ,GAAAC,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAEhB,IAAM;MAAEtG;IAAQ,CAAC,GAAG,IAAI,CAAC9Q,KAAK;IAC9B,IAAI8Q,OAAO,EAAE;MACX,IAAM2G,OAAK,GAAGuH,MAAM,CAClB,IAAI,CAAChI,eAAe,CAACC,WAAW,EAAEC,QAAQ,EAAEC,QAAQ,CACtD,CAAC;MACDld,eAAe,CAACwd,OAAK,CAAC,CAAC7H,KAAK,CAACqP,CAAC,IAAI9gB,GAAG,CAAC0R,KAAK,CAAC,qBAAqB,EAAEoP,CAAC,CAAC,CAAC;IACxE,CAAC,MAAM;MACL9gB,GAAG,CAAC0R,KAAK,CAAC,yDAAyD,CAAC;IACtE;EACF;EAEAqP,gBAAgBA,CAACjI,WAA2B,EAAyB;IAAA,IAAvBkI,WAAW,GAAA/H,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,CAAC;IAC3D,IAAIH,WAAW,KAAK,IAAI,EAAE;MACxB;IACF;IACA,IAAM;MAAEnG;IAAQ,CAAC,GAAG,IAAI,CAAC9Q,KAAK;IAC9B,IAAM;MAAEyH;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IAEnC,IAAImI,OAAO,EAAE;MACX,IAAMiB,aAAa,GAAG;QACpBkF,WAAW;QACXkI,WAAW;QACX1X;MACF,CAAC;MACD,IAAI,CAACa,QAAQ,CAAC;QAAEyJ;MAAc,CAAC,CAAC;IAClC,CAAC,MAAM;MACL5T,GAAG,CAAC0R,KAAK,CAAC,8DAA8D,CAAC;IAC3E;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEuP,UAAUA,CACRC,MAA4B,EAItB;IAAA,IAHNC,cAAc,GAAAlI,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAAA,IACtBmI,YAAY,GAAAnI,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IAAA,IACnBvH,KAAc,GAAAuH,SAAA,CAAAzX,MAAA,OAAAyX,SAAA,MAAA1R,SAAA;IAEd,IAAM;MAAEhF,KAAK;MAAEoQ;IAAQ,CAAC,GAAG,IAAI,CAAC9Q,KAAK;IACrC,IAAM;MAAE6D,gBAAgB;MAAE4D;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IACrD,IAAM7E,gBAAgB,GAAGD,gBAAgB,CAAC2b,mBAAmB,CAAC,CAAC;IAE/D,IAAI1O,OAAO,EAAE;MACX,IAAMiB,aAAa,GAAG;QACpBsN,MAAM,EAAE5mB,SAAS,CAACgnB,aAAa,CAC7BJ,MAAM,EACN3e,KAAK,CAACgf,WAAW,EACjBhf,KAAK,CAACif,QACR,CAAC;QACDL,cAAc;QACdC,YAAY;QACZ9X,YAAY;QACZ3D,gBAAgB;QAChB+L;MACF,CAAC;MAED,IAAI,CAACvH,QAAQ,CAAC;QAAEyJ;MAAc,CAAC,CAAC;IAClC,CAAC,MAAM;MACL5T,GAAG,CAAC0R,KAAK,CAAC,wDAAwD,CAAC;IACrE;EACF;EAEAkF,YAAYA,CAAC/C,WAAmB,EAA6B;IAAA,IAA3B4N,WAAW,GAAAxI,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IACnD,IAAI,CAAC9O,QAAQ,CAAC;MAAE0J;IAAY,CAAC,CAAC;IAE9B,IAAMjL,KAAK,GAAG,IAAI,CAACsR,QAAQ,CAAC,CAAC;IAE7B,IAAIuH,WAAW,IAAI,IAAI,CAACzR,IAAI,EAAE;MAC5B,IAAI,CAACA,IAAI,CAAC0R,mBAAmB,CAAC,CAAC;MAC/B,IAAI,CAAC1R,IAAI,CAAC2R,YAAY,CAAC;QAAEC,GAAG,EAAE;MAAE,CAAC,EAAE,IAAI,CAAC;IAC1C;IAEA,IAAI,IAAI,CAAC3K,qBAAqB,IAAI,IAAI,EAAE;MAAA,IAAA4K,qBAAA,EAAAC,iBAAA;MACtC,IAAM;QAAEC,sBAAsB;QAAEC;MAAuB,CAAC,GAAGpZ,KAAK;MAChE/M,aAAa,CAACkmB,sBAAsB,CAAC;MACrClmB,aAAa,CAACmmB,sBAAsB,CAAC;MACrC,IAAMC,MAAM,IAAAJ,qBAAA,IAAAC,iBAAA,GAAG,IAAI,CAACtJ,WAAW,cAAAsJ,iBAAA,uBAAhBA,iBAAA,CAAkBI,qBAAqB,CAAC,CAAC,CAACD,MAAM,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;MACpE,IAAMM,mBAAmB,GAAG5K,IAAI,CAACjV,GAAG,CAClCyf,sBAAsB,EACtBxK,IAAI,CAACC,GAAG,CAACyK,MAAM,GAAG,CAAC,EAAED,sBAAsB,CAC7C,CAAC;MACD,IAAI,CAAC/K,qBAAqB,GAAGzL,IAAI,CAACC,GAAG,CAAC,CAAC;MACvC,IAAI,CAACyL,sBAAsB,GACzB,IAAI,CAACD,qBAAqB,GAAGkL,mBAAmB;MAClD,IAAI,CAAChY,QAAQ,CAAC;QACZ7B,oBAAoB,EAAE;MACxB,CAAC,CAAC;MACF,IAAI,CAAC6P,YAAY,GAAGiK,UAAU,CAAC,MAAM;QACnC,IAAI,CAACjY,QAAQ,CAAC;UACZ2J,mBAAmB,EAAE;QACvB,CAAC,CAAC;MACJ,CAAC,EAAEnS,QAAQ,CAAC0gB,mBAAmB,CAAC;IAClC;EACF;EAEAC,WAAWA,CAAA,EAAS;IAClB,IAAI,CAACrL,qBAAqB,GAAG1P,SAAS;IACtC,IAAI,CAAC2P,sBAAsB,GAAG3P,SAAS;IACvC,IAAI,CAAC4C,QAAQ,CAAC;MACZ0J,WAAW,EAAE,IAAI;MACjBvL,oBAAoB,EAAE,IAAI;MAC1BwL,mBAAmB,EAAE;IACvB,CAAC,CAAC;IAEF,IAAI,IAAI,CAACqE,YAAY,IAAI,IAAI,EAAE;MAC7BC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;MAC/B,IAAI,CAACA,YAAY,GAAG5Q,SAAS;IAC/B;EACF;;EAEA;AACF;AACA;EACEgb,QAAQA,CAAA,EAAS;IACf,IAAI,IAAI,CAACtS,gBAAgB,EAAE;MACzBjQ,GAAG,CAACsH,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC2I,gBAAgB,CAAC;MAC/D,IAAM;QACJnP,eAAe;QACfC,mBAAmB;QACnBC,aAAa;QACbC,YAAY;QACZC,WAAW;QACXC,YAAY;QACZC,YAAY;QACZC,qBAAqB;QACrBC;MACF,CAAC,GAAG,IAAI,CAAC2O,gBAAgB;MAEzB,IAAI,CAACA,gBAAgB,GAAG,IAAI;MAC5B,IAAI,CAAC9F,QAAQ,CAAC;QACZrJ,eAAe;QACfC,mBAAmB;QACnBC,aAAa;QACbC,YAAY;QACZC,WAAW;QACXC,YAAY;QACZC,YAAY;QACZC,qBAAqB;QACrBC;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLtB,GAAG,CAACsH,KAAK,CAAC,+CAA+C,CAAC;MAC1D,IAAI,CAAC6C,QAAQ,CAAC;QACZrJ,eAAe,EAAE,IAAI+E,GAAG,CAAC,CAAC;QAC1B9E,mBAAmB,EAAET,4BAA4B;QACjDU,aAAa,EAAE,EAAE;QACjBC,YAAY,EAAE,IAAI4E,GAAG,CAAC,CAAC;QACvB3E,WAAW,EAAEtF,UAAU,CAAC6F,YAAY,CAACC,IAAI;QACzCP,YAAY,EAAEoG,SAAS;QACvBlG,qBAAqB,EAAE,EAAE;QACzBC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF;;EAEA;AACF;AACA;AACA;EACEkhB,WAAWA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACvS,gBAAgB,IAAI,IAAI,IAAI,CAACrP,aAAa,CAAC,IAAI,CAAC4J,KAAK,CAAC;EACpE;EAEAmL,cAAcA,CAACpT,KAAoB,EAAQ;IACzCA,KAAK,CAACkgB,gBAAgB,CAACzjB,aAAa,CAAC0jB,KAAK,CAACC,OAAO,EAAE,IAAI,CAAC9U,YAAY,CAAC;IACtEtL,KAAK,CAACkgB,gBAAgB,CACpBzjB,aAAa,CAAC0jB,KAAK,CAACE,cAAc,EAClC,IAAI,CAACnV,mBACP,CAAC;IACDlL,KAAK,CAACkgB,gBAAgB,CACpBzjB,aAAa,CAAC0jB,KAAK,CAACG,eAAe,EACnC,IAAI,CAACvU,0BACP,CAAC;IACD/L,KAAK,CAACkgB,gBAAgB,CACpBzjB,aAAa,CAAC0jB,KAAK,CAACI,oBAAoB,EACxC,IAAI,CAACtU,wBACP,CAAC;EACH;EAEAyH,aAAaA,CAAC1T,KAAoB,EAAQ;IACxCA,KAAK,CAACwgB,mBAAmB,CAAC/jB,aAAa,CAAC0jB,KAAK,CAACC,OAAO,EAAE,IAAI,CAAC9U,YAAY,CAAC;IACzEtL,KAAK,CAACwgB,mBAAmB,CACvB/jB,aAAa,CAAC0jB,KAAK,CAACE,cAAc,EAClC,IAAI,CAACnV,mBACP,CAAC;IACDlL,KAAK,CAACwgB,mBAAmB,CACvB/jB,aAAa,CAAC0jB,KAAK,CAACG,eAAe,EACnC,IAAI,CAACvU,0BACP,CAAC;IACD/L,KAAK,CAACwgB,mBAAmB,CACvB/jB,aAAa,CAAC0jB,KAAK,CAACI,oBAAoB,EACxC,IAAI,CAACtU,wBACP,CAAC;EACH;EAEAwU,KAAKA,CAAA,EAAS;IAAA,IAAAC,WAAA;IACZ,CAAAA,WAAA,OAAI,CAACjT,IAAI,cAAAiT,WAAA,uBAATA,WAAA,CAAWD,KAAK,CAAC,CAAC;EACpB;EAEAE,cAAcA,CAAC/gB,MAAoB,EAAQ;IACzC,IAAM;MAAEmH;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IACnC,IAAM;MAAEjI;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAE0f;IAAY,CAAC,GAAGhf,KAAK;IAC7B,IAAM2W,WAAW,GAAG3e,SAAS,CAACqP,aAAa,CAACzH,MAAM,EAAEmH,YAAY,CAAC;IAEjE,IACEnH,MAAM,IAAI,IAAI,IACdA,MAAM,GAAG,CAAC,IACVof,WAAW,IAAIpf,MAAM,IACrB,CAACI,KAAK,CAAC4gB,YAAY,CAACjK,WAAW,CAAC,EAChC;MACA,IAAI,CAAC/O,QAAQ,CAAC;QAAEmJ,sBAAsB,EAAE;MAAK,CAAC,CAAC;MAC/C;IACF;IAEA,IAAM;MAAE5N,gBAAgB;MAAE6N;IAAQ,CAAC,GAAG,IAAI,CAAC/I,KAAK;IAChD3O,aAAa,CAAC0X,OAAO,CAAC;IACtB,IAAM;MAAE6P,IAAI;MAAEC,YAAY;MAAEC;IAAS,CAAC,GAAG/P,OAAO;IAChD,IAAIpR,MAAM,GAAGihB,IAAI,EAAE;MAAA,IAAAG,WAAA;MACjB,CAAAA,WAAA,OAAI,CAACvT,IAAI,cAAAuT,WAAA,uBAATA,WAAA,CAAW5B,YAAY,CAAC;QAAEyB,IAAI,EAAEjhB;MAAO,CAAC,EAAE,IAAI,CAAC;IACjD,CAAC,MAAM,IAAIkhB,YAAY,GAAGlhB,MAAM,EAAE;MAAA,IAAAqhB,WAAA,EAAAC,WAAA;MAChC,IAAMC,WAAW,IAAAF,WAAA,GAAG,IAAI,CAACxT,IAAI,cAAAwT,WAAA,uBAATA,WAAA,CAAWG,cAAc,CAAC,CAAC;MAC/C9nB,aAAa,CAAC6nB,WAAW,CAAC;MAC1B,IAAME,OAAO,GAAGle,gBAAgB,CAACme,WAAW,CAC1CH,WAAW,EACXvhB,MAAM,EACNuD,gBAAgB,CAACoe,eAAe,CAACJ,WAAW,CAC9C,CAAC;MACD,CAAAD,WAAA,OAAI,CAACzT,IAAI,cAAAyT,WAAA,uBAATA,WAAA,CAAW9B,YAAY,CACrB;QAAEyB,IAAI,EAAE7L,IAAI,CAACC,GAAG,CAACoM,OAAO,EAAEN,QAAQ,CAAC;QAAES,UAAU,EAAE;MAAE,CAAC,EACpD,IACF,CAAC;IACH;IACA,IAAI,CAACC,0BAA0B,GAAG7hB,MAAM;IACxC,IAAI,CAACgI,QAAQ,CAAC;MAAEmJ,sBAAsB,EAAEnR,MAAM;MAAE0B,gBAAgB,EAAE;IAAK,CAAC,CAAC;EAC3E;EAEAogB,wBAAwBA,CAACC,kBAAgC,EAAQ;IAAA,IAAAC,WAAA;IAC/D,IAAM;MAAEze,gBAAgB;MAAE4D;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IACrD9E,gBAAgB,CAAC0e,cAAc,CAC7B7pB,SAAS,CAACqP,aAAa,CAACsa,kBAAkB,EAAE5a,YAAY,CAAC,EACzD,CACF,CAAC;IAED,CAAA6a,WAAA,OAAI,CAACnU,IAAI,cAAAmU,WAAA,uBAATA,WAAA,CAAWpG,WAAW,CAAC,CAAC;EAC1B;EAEAsG,wBAAwBA,CAAChJ,UAAsB,EAAQ;IACrD,IAAM;MAAEzI,aAAa;MAAEtJ;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IAClD,IAAM;MAAEjI;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B7B,GAAG,CAACyX,MAAM,CAAC,iBAAiB,EAAE4D,UAAU,CAAC;IAEzC,IAAMiJ,gBAAgB,GACpB1R,aAAa,IAAI,IAAI,GACjB,IAAI9I,GAAG,CAACvH,KAAK,CAACqQ,aAAa,CAAC,GAC5B,IAAI9I,GAAG,CAAC8I,aAAa,CAAC;IAE5B0R,gBAAgB,CAACjF,GAAG,CAAChE,UAAU,CAAC;IAEhC,IAAMZ,UAAU,GAAGlY,KAAK,CAAC6Q,oBAAoB,CAACiI,UAAU,CAAC;IACzDxf,aAAa,CAAC4e,UAAU,CAAC;IACzB,IAAM8J,YAAY,GAAGhqB,SAAS,CAACmgB,eAAe,CAACD,UAAU,EAAEnR,YAAY,CAAC;IACxE,IAAMkb,eAAe,GAAGjqB,SAAS,CAACkqB,QAAQ,CACxCF,YAAY,EACZD,gBAAgB,CAAC/iB,IAAI,GAAG,CAAC,EACzB+H,YACF,CAAC;IAED,IAAI,CAACa,QAAQ,CAAC;MACZyI,aAAa,EAAE,CAAC,GAAG0R,gBAAgB,CAAC;MACpChb,YAAY,EAAEkb;IAChB,CAAC,CAAC;EACJ;EAEAE,0BAA0BA,CAACrJ,UAAsB,EAAQ;IACvD,IAAM;MAAEzI,aAAa;MAAEtJ;IAAa,CAAC,GAAG,IAAI,CAACkB,KAAK;IAClD,IAAM;MAAEjI;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B7B,GAAG,CAACyX,MAAM,CAAC,mBAAmB,EAAE4D,UAAU,CAAC;IAE3C,IAAMiJ,gBAAgB,GACpB1R,aAAa,IAAI,IAAI,GACjB,IAAI9I,GAAG,CAACvH,KAAK,CAACqQ,aAAa,CAAC,GAC5B,IAAI9I,GAAG,CAAC8I,aAAa,CAAC;IAE5B0R,gBAAgB,CAAC/I,MAAM,CAACF,UAAU,CAAC;IAEnC,IAAMZ,UAAU,GAAGlY,KAAK,CAAC6Q,oBAAoB,CAACiI,UAAU,CAAC;IACzDxf,aAAa,CAAC4e,UAAU,CAAC;IACzB,IAAM8J,YAAY,GAAGhqB,SAAS,CAACmgB,eAAe,CAACD,UAAU,EAAEnR,YAAY,CAAC;;IAExE;IACA,IAAMkb,eAAe,GAAGjqB,SAAS,CAACkqB,QAAQ,CACxCF,YAAY,EACZD,gBAAgB,CAAC/iB,IAAI,GAAGgB,KAAK,CAACoiB,YAAY,CAACnjB,MAAM,EACjD8H,YACF,CAAC;IAED,IAAI,CAACa,QAAQ,CAAC;MACZyI,aAAa,EAAE,CAAC,GAAG0R,gBAAgB,CAAC;MACpChb,YAAY,EAAEkb;IAChB,CAAC,CAAC;EACJ;EAEAnV,6BAA6BA,CAC3BuV,YAAmC,EACnCC,SAAkB,EACZ;IAAA,IAAAC,WAAA;IACN,IAAM;MAAEpf,gBAAgB;MAAE6N;IAAQ,CAAC,GAAG,IAAI,CAAC/I,KAAK;IAChD3O,aAAa,CAAC0X,OAAO,CAAC;IACtB,IAAIsR,SAAS,EAAE;MACbD,YAAY,CAAC3e,OAAO,CAACwU,UAAU,IAAI;QACjC,IAAMsK,YAAY,GAChBrf,gBAAgB,CAACI,mBAAmB,CAAC0Q,GAAG,CAACiE,UAAU,CAAC;QACtD,IAAMuK,eAAe,GAAG5oB,UAAU,CAChCmX,OAAO,CAAC0R,sBAAsB,EAC9BxK,UACF,CAAC;QAED,IAAIsK,YAAY,KAAKC,eAAe,EAAE;UACpCtf,gBAAgB,CAAC0e,cAAc,CAAC3J,UAAU,EAAEuK,eAAe,CAAC;QAC9D,CAAC,MAAM;UACLtf,gBAAgB,CAACwf,gBAAgB,CAACzK,UAAU,CAAC;QAC/C;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLmK,YAAY,CAAC3e,OAAO,CAACwU,UAAU,IAAI;QACjC/U,gBAAgB,CAAC0e,cAAc,CAAC3J,UAAU,EAAE,CAAC,CAAC;MAChD,CAAC,CAAC;IACJ;IACA,CAAAqK,WAAA,OAAI,CAAC9U,IAAI,cAAA8U,WAAA,uBAATA,WAAA,CAAW/G,WAAW,CAAC,CAAC;EAC1B;EAEAzO,2BAA2BA,CAAA,EAAS;IAAA,IAAA6V,qBAAA,EAAAC,mBAAA;IAClC,IAAM;MAAE1f,gBAAgB;MAAE6N;IAAQ,CAAC,GAAG,IAAI,CAAC/I,KAAK;IAChD,IAAM;MAAEjI;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5BhG,aAAa,CAAC0X,OAAO,CAAC;IACtB,KAAK,IAAI5J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4J,OAAO,CAACgO,WAAW,EAAE5X,CAAC,IAAI,CAAC,EAAE;MAC/CjE,gBAAgB,CAACwf,gBAAgB,CAACvb,CAAC,CAAC;IACtC;IACA,IAAI,CAACgE,yBAAyB,CAACpL,KAAK,CAACyQ,mBAAmB,CAAC;IACzD,IAAI,CAACpF,yBAAyB,CAACrL,KAAK,CAAC4S,yBAAyB,CAAC;IAC/D,IAAI,CAAChL,QAAQ,CAAC;MACZyI,aAAa,GAAAuS,qBAAA,IAAAC,mBAAA,GAAE7iB,KAAK,CAAC2Q,WAAW,cAAAkS,mBAAA,uBAAjBA,mBAAA,CAAmBxS,aAAa,cAAAuS,qBAAA,cAAAA,qBAAA,GAAI;IACrD,CAAC,CAAC;EACJ;EAEA5V,uBAAuBA,CACrBxF,WAAmB,EACnBC,qBAA4C,EAC5CC,mBAA4B,EACtB;IACN,IAAM;MAAE1H;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAI,CAAC+U,YAAY,CAAC,cAAc,CAAC;IAEjC,IAAI,CAACsB,kBAAkB,CACrBnO,WAAW,EACXC,qBAAqB,EACrBzH,KAAK,CAACwD,OAAO,EACbkE,mBACF,CAAC;IAED,IAAI,CAACE,QAAQ,CAAC;MACZJ,WAAW;MACXC,qBAAqB;MACrBC;IACF,CAAC,CAAC;EACJ;EAsBA0C,mBAAmBA,CAAA,EAAS;IAAA,IAAA0Y,WAAA;IAC1B,CAAAA,WAAA,OAAI,CAACrV,IAAI,cAAAqV,WAAA,uBAATA,WAAA,CAAWC,YAAY,CAAC,CAAC;IAEzB,IAAI,IAAI,CAAC3U,WAAW,EAAE;MACpB,IAAI,CAAC2H,cAAc,GAAGlB,qBAAqB,CAAC,IAAI,CAACzK,mBAAmB,CAAC;IACvE;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B5M,GAAG,CAACyX,MAAM,CAAC,sBAAsB,CAAC;IAElC,IAAI,CAAC9G,WAAW,GAAG,IAAI;IAEvB,IAAI,CAAC2H,cAAc,GAAGlB,qBAAqB,CAAC,IAAI,CAACzK,mBAAmB,CAAC;EACvE;EAEAE,kBAAkBA,CAAA,EAAS;IACzB7M,GAAG,CAACyX,MAAM,CAAC,oBAAoB,CAAC;IAEhC,IAAI,CAAC9G,WAAW,GAAG,KAAK;EAC1B;EAEAzB,qBAAqBA,CAACsD,UAA6B,EAAQ;IACzD,IAAM;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACjI,KAAK;IACvC,IAAIiI,gBAAgB,CAACjR,MAAM,KAAK,CAAC,EAAE;MACjC;IACF;IACA,IAAI,CAAC0e,eAAe,CAAC1N,UAAU,EAAEC,gBAAgB,CAAC;EACpD;EAEAtD,uBAAuBA,CAAA,EAAS;IAC9B,IAAI,CAAChF,QAAQ,CAAC;MACZ1B,gBAAgB,EAAE,EAAE;MACpB2J,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ;EAEAhD,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAACjF,QAAQ,CAAC;MAAEiI,oBAAoB,EAAE;IAAM,CAAC,CAAC;EAChD;EAEAgO,oBAAoBA,CAAC1O,KAAc,EAAQ;IACzC,IAAIxV,YAAY,CAACqpB,UAAU,CAAC7T,KAAK,CAAC,EAAE;MAClC;IACF;IAEA1R,GAAG,CAAC0R,KAAK,CAACA,KAAK,CAAC;IAEhB,IAAM;MAAE8T;IAAQ,CAAC,GAAG,IAAI,CAAC3jB,KAAK;IAC9B2jB,OAAO,CAAC9T,KAAK,CAAC;EAChB;EAEA+T,cAAcA,CAAA,EAAS;IAAA,IAAAC,WAAA;IACrB,IAAM;MAAEhgB;IAAiB,CAAC,GAAG,IAAI,CAAC8E,KAAK;IACvC,IAAM7E,gBAAgB,GAAGD,gBAAgB,CAAC2b,mBAAmB,CAAC,CAAC;IAC/D,IAAMsE,OAAO,GAAG,CAAC,GAAGhgB,gBAAgB,CAACggB,OAAO,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAIhc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgc,OAAO,CAACnkB,MAAM,EAAEmI,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAM,CAAC8Q,UAAU,EAAEmL,WAAW,CAAC,GAAGD,OAAO,CAAChc,CAAC,CAAC;MAC5C,IAAIic,WAAW,KAAK,CAAC,EAAE;QACrBlgB,gBAAgB,CAACwf,gBAAgB,CAACzK,UAAU,CAAC;MAC/C;IACF;IACA,CAAAiL,WAAA,OAAI,CAAC1V,IAAI,cAAA0V,WAAA,uBAATA,WAAA,CAAW3H,WAAW,CAAC,CAAC;EAC1B;EAEA8H,UAAUA,CAAC/M,WAAyB,EAAEgN,aAAsB,EAAQ;IAClE9lB,GAAG,CAACmgB,IAAI,CAAC,0BAA0B,EAAErH,WAAW,CAAC;IAEjD,IAAM;MAAEvW;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAMqX,WAAW,GAAG,IAAI,CAACC,cAAc,CAACL,WAAW,CAAC;IACpDjd,aAAa,CAACqd,WAAW,CAAC;IAC1B,IAAI3W,KAAK,CAACwjB,gBAAgB,CAACjN,WAAW,CAAC,EAAE;MACvC,IAAM;QAAExX,KAAK,EAAE0kB;MAAa,CAAC,GAAG,IAAI,CAACxb,KAAK;MAC1C,IAAMlJ,KAAK,GAAG1F,UAAU,CAACqqB,mBAAmB,CAC1CD,YAAY,EACZzjB,KAAK,CAACwD,OAAO,EACbmT,WAAW,EACX4M,aACF,CAAC;MAED,IAAI,CAAC9O,WAAW,CAAC1V,KAAK,CAAC;IACzB,CAAC,MAAM;MACLtB,GAAG,CAACsH,KAAK,CAAC,8BAA8B,EAAE/E,KAAK,CAACwD,OAAO,CAAC+S,WAAW,CAAC,CAAC;IACvE;EACF;EAEA9B,WAAWA,CAAC1V,KAAsB,EAAQ;IAAA,IAAA4kB,YAAA;IACxC,IAAI,CAACtP,YAAY,CAAC,YAAY,CAAC;IAC/B,IAAI,CAACzM,QAAQ,CAAC;MAAE7I;IAAM,CAAC,CAAC;IACxB,CAAA4kB,YAAA,OAAI,CAAClW,IAAI,cAAAkW,YAAA,uBAATA,YAAA,CAAWnI,WAAW,CAAC,CAAC;EAC1B;EAEAoI,UAAUA,CACRjN,WAAuB,EAIjB;IAAA,IAAAkN,YAAA;IAAA,IAHNC,SAAwB,GAAApN,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAGrd,UAAU,CAAC6G,aAAa,CAAC6jB,IAAI;IAAA,IACxDC,KAAK,GAAAtN,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAAA,IACb6M,aAAa,GAAA7M,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAErBpd,aAAa,CAACqd,WAAW,CAAC;IAC1B,IAAM;MAAE3W;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAMP,KAAK,GAAG1F,UAAU,CAACuqB,UAAU,CACjC5jB,KAAK,CAACmd,IAAI,EACVnd,KAAK,CAACwD,OAAO,EACbmT,WAAW,EACXmN,SAAS,EACTE,KAAK,EACLT,aACF,CAAC;IACD,IAAI,CAAClP,YAAY,CAAC,YAAY,CAAC;IAC/B,IAAI,CAACzM,QAAQ,CAAC;MAAE7I;IAAM,CAAC,CAAC;IACxB,CAAA8kB,YAAA,OAAI,CAACpW,IAAI,cAAAoW,YAAA,uBAATA,YAAA,CAAWrI,WAAW,CAAC,CAAC;EAC1B;EAEAyI,OAAOA,CAACtlB,WAAwB,EAAQ;IAAA,IAAAulB,YAAA;IACtC,IAAI,CAAC7P,YAAY,CAAC,cAAc,CAAC;IACjC,IAAI,CAACzM,QAAQ,CAAC;MAAEjJ;IAAY,CAAC,CAAC;IAC9B,CAAAulB,YAAA,OAAI,CAACzW,IAAI,cAAAyW,YAAA,uBAATA,YAAA,CAAW1I,WAAW,CAAC,CAAC;EAC1B;EAEA2I,YAAYA,CAAA,EAAY;IACtB,IAAM;MAAEnkB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,OAAOU,KAAK,CAACmkB,YAAY;EAC3B;EAEA3V,eAAeA,CAAA,EAAqD;IAAA,IAApD4V,UAAU,GAAA1N,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI,CAAC+K,0BAA0B;IAC1D,IAAI;MAAEngB;IAAiB,CAAC,GAAG,IAAI,CAAC2G,KAAK;IACrC3G,gBAAgB,GAAG,CAACA,gBAAgB;IACpC,IAAI,CAACsG,QAAQ,CAAC;MAAEtG;IAAiB,CAAC,CAAC;IAEnC,IAAIA,gBAAgB,EAAE;MACpB,IAAI8iB,UAAU,IAAI,IAAI,EAAE;QACtB,IAAI,CAACzD,cAAc,CAACyD,UAAU,CAAC;MACjC,CAAC,MAAM;QACL,IAAI7N,WAAW,GAAG,CAAC;QACnB,IAAM;UAAEvW,KAAK,EAALA;QAAM,CAAC,GAAG,IAAI,CAACV,KAAK;QAC5B,IAAM;UAAE0f;QAAY,CAAC,GAAGhf,OAAK;QAC7B,KAAK,IAAIoH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4X,WAAW,EAAE5X,CAAC,IAAI,CAAC,EAAE;UACvC,IAAMuP,WAAW,GAAG,IAAI,CAACC,cAAc,CAACxP,CAAC,CAAC;UAC1C,IAAIuP,WAAW,IAAI,IAAI,EAAE;YACvB,IAAM/W,OAAM,GAAGI,OAAK,CAACwD,OAAO,CAACmT,WAAW,CAAC;YACzC,IAAI/W,OAAM,IAAI,IAAI,IAAIvG,UAAU,CAACgrB,UAAU,CAACzkB,OAAM,CAACkC,IAAI,CAAC,EAAE;cACxDyU,WAAW,GAAGnP,CAAC;cACf;YACF;UACF;QACF;QACA,IAAI,CAACuZ,cAAc,CAACpK,WAAW,CAAC;MAClC;IACF,CAAC,MAAM;MAAA,IAAA+N,YAAA;MACL,CAAAA,YAAA,OAAI,CAAC7W,IAAI,cAAA6W,YAAA,uBAATA,YAAA,CAAW7D,KAAK,CAAC,CAAC;IACpB;EACF;EAEA8D,sBAAsBA,CAAA,EAAY;IAAA,IAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA;IAChC,IAAM;MAAE1kB,KAAK;MAAEyB;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IAC7C,IAAM;MAAEoF;IAAG,CAAC,GAAG1E,KAAK;IACpB,IAAM2kB,iBAAiB,GAAG3kB,KAAK,aAALA,KAAK,wBAAAwkB,mBAAA,GAALxkB,KAAK,CAAE2Q,WAAW,cAAA6T,mBAAA,uBAAlBA,mBAAA,CAAoBG,iBAAiB;IAE/D,IAAIA,iBAAiB,OAAAF,qBAAA,GAAK/f,EAAE,CAACkgB,iBAAiB,cAAAH,qBAAA,uBAApBA,qBAAA,CAAsBI,mBAAmB,GAAE;MACnE,OAAO,KAAK;IACd;IACA,IAAIF,iBAAiB,OAAAD,sBAAA,GAAKhgB,EAAE,CAACkgB,iBAAiB,cAAAF,sBAAA,uBAApBA,sBAAA,CAAsBI,mBAAmB,GAAE;MACnE,OAAO,IAAI;IACb;IAEA,OAAOrjB,eAAe;EACxB;EAEAkN,eAAeA,CAAA,EAAS;IACtB,IAAM;MAAEpN;IAAc,CAAC,GAAG,IAAI,CAAC0G,KAAK;IACpC,IAAI,CAAC,IAAI,CAACsc,sBAAsB,CAAC,CAAC,EAAE;MAClC;IACF;IAEA,IAAMjI,MAAM,GAAG,CAAC/a,aAAa;IAC7B,IAAI,CAACqG,QAAQ,CACX;MACErG,aAAa,EAAE+a;IACjB,CAAC,EACD,MAAM;MAAA,IAAAyI,oBAAA;MACJ,IAAIzI,MAAM,KAAAyI,oBAAA,GAAI,IAAI,CAAC7W,cAAc,cAAA6W,oBAAA,eAAnBA,oBAAA,CAAqB1O,OAAO,EAAE;QAAA,IAAA2O,qBAAA;QAC1C,CAAAA,qBAAA,OAAI,CAAC9W,cAAc,cAAA8W,qBAAA,uBAAnBA,qBAAA,CAAqB3O,OAAO,CAACoK,KAAK,CAAC,CAAC;MACtC,CAAC,MAAM;QAAA,IAAAwE,YAAA;QACL,CAAAA,YAAA,OAAI,CAACxX,IAAI,cAAAwX,YAAA,uBAATA,YAAA,CAAWxE,KAAK,CAAC,CAAC;MACpB;IACF,CACF,CAAC;EACH;EAEA5R,aAAaA,CAAA,EAA8C;IAAA,IAAAqW,YAAA,EAAAC,YAAA;IAAA,IAA7CzH,GAAG,GAAAhH,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,EAAE;IAAA,IAAEK,KAAK,GAAAL,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,EAAE;IAAA,IAAEoC,UAAU,GAAApC,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,EAAE;IACjD,IAAM;MAAErE;IAAY,CAAC,GAAG,IAAI,CAACpK,KAAK;IAClC,IAAIyV,GAAG,IAAI3G,KAAK,EAAE;MAAA,IAAAqO,qBAAA;MAChB;MACA,IAAI,CAACxd,QAAQ,CAAC;QACZyK,WAAW,EAAE,IAAI;QACjB1I,SAAS,EAAEoN,KAAK;QAChBtE,2BAA2B,EAAEqG,UAAU;QACvCvG,YAAY,EAAE,EAAE;QAChBC,cAAc,EAAE;MAClB,CAAC,CAAC;MACF,IAAI,CAACnG,cAAc,CAACqR,GAAG,CAAC;MACxB,CAAA0H,qBAAA,OAAI,CAAC9W,UAAU,CAAC+H,OAAO,cAAA+O,qBAAA,uBAAvBA,qBAAA,CAAyB3E,KAAK,CAAC,CAAC;MAChC;IACF;IAEA,IAAM4E,SAAS,IAAAH,YAAA,GAAG,IAAI,CAACzX,IAAI,cAAAyX,YAAA,uBAATA,YAAA,CAAWjd,KAAK,CAACod,SAAS;IAC5C,IAAMC,YAAY,IAAAH,YAAA,GAAG,IAAI,CAAC1X,IAAI,cAAA0X,YAAA,uBAATA,YAAA,CAAWld,KAAK,CAACqd,YAAY;IAElD,IAAID,SAAS,IAAI,IAAI,IAAIC,YAAY,IAAI,IAAI,EAAE;MAC7C;MACA,IAAI,CAAC1d,QAAQ,CAAC;QACZyK,WAAW,EAAE,CAACA,WAAW;QACzBC,OAAO,EAAE,EAAE;QACX3I,SAAS,EAAE,EAAE;QACb4I,YAAY,EAAE,EAAE;QAChBC,cAAc,EAAE;MAClB,CAAC,CAAC;MACF;IACF;IACA;IACA,IAAM;MAAExS;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAE+E,IAAI;MAAEvC;IAAK,CAAC,GAAG9B,KAAK,CAACwD,OAAO,CAAC8hB,YAAY,CAAC;IAElD,IAAMC,SAAS,GAAGvlB,KAAK,CAACgX,YAAY,CAACsO,YAAY,EAAED,SAAS,CAAC;IAC7D,IAAMhN,IAAI,GAAG9b,aAAa,CAACipB,kBAAkB,CAACD,SAAS,EAAEzjB,IAAI,CAAC;IAC9D,IAAI,CAAC8F,QAAQ,CAAC;MACZyK,WAAW,EAAE,CAACA,WAAW;MACzBC,OAAO,KAAA4G,MAAA,CAAKmM,SAAS,GAAG,CAAC,CAAE;MAC3B1b,SAAS,EAAE0O,IAAI;MACf5F,2BAA2B,EAAEpO,IAAI;MACjCkO,YAAY,EAAE,EAAE;MAChBC,cAAc,EAAE;IAClB,CAAC,CAAC;EACJ;EAEMhD,aAAaA,CAAA,EAAkB;IAAA,IAAAiW,MAAA;IAAA,OAAA5I,iBAAA;MAAA,IAAA6I,SAAA,EAAAC,qBAAA;MACnC,IAAM;QAAE3lB;MAAM,CAAC,GAAGylB,MAAI,CAACnmB,KAAK;MAC5B,IAAI,CAACrH,mBAAmB,CAAC+H,KAAK,CAAC,IAAI,CAACA,KAAK,CAACsG,UAAU,EAAE;QACpD,MAAM,IAAIsf,KAAK,CAAC,oCAAoC,CAAC;MACvD;MAEA,IAAM;QAAE5T;MAAmB,CAAC,GAAGyT,MAAI,CAACxd,KAAK;MACzC,IAAI+J,kBAAkB,IAAI,IAAI,EAAE;QAC9B,MAAM,IAAI4T,KAAK,CAAC,0BAA0B,CAAC;MAC7C;MAEA,IAAMC,0BAA0B,IAAAH,SAAA,GAC9BI,QAAQ,cAAAJ,SAAA,wBAAAC,qBAAA,GAARD,SAAA,CAAUK,aAAa,cAAAJ,qBAAA,uBAAvBA,qBAAA,CAAyBK,SAAS,CAACC,QAAQ,CAAC,uBAAuB,CAAC;MACtE,IAAIJ,0BAA0B,IAAI,IAAI,IAAIA,0BAA0B,EAAE;QAAA,IAAAK,WAAA;QACpE,IACEJ,QAAQ,CAACC,aAAa,IAAI,IAAI,IAC9BD,QAAQ,CAACC,aAAa,CAACC,SAAS,CAACC,QAAQ,CAAC,OAAO,CAAC,EAClD;UACA,MAAM,IAAIrsB,eAAe,CAAC,0BAA0B,CAAC;QACvD;;QAEA;QACA,CAAAssB,WAAA,GAAAT,MAAI,CAAChY,IAAI,cAAAyY,WAAA,uBAATA,WAAA,CAAWzF,KAAK,CAAC,CAAC;MACpB;MAEA,IAAM0F,qBAAqB,GAAGV,MAAI,CAAC9X,OAAO,CACvCmP,GAAG,CAAC9c,KAAK,CAACwP,aAAa,CAAC,CAAC,CAAC,CAC1B4W,IAAI,CAAC,MAAM;QACVX,MAAI,CAAC7d,QAAQ,CAAC;UAAEqK,gBAAgB,EAAE,IAAI;UAAED,kBAAkB,EAAE;QAAK,CAAC,CAAC;MACrE,CAAC,CAAC,CACD9C,KAAK,CAACoJ,GAAG,IAAI;QACZ,IAAI,CAAC3e,YAAY,CAACqpB,UAAU,CAAC1K,GAAG,CAAC,EAAE;UACjCmN,MAAI,CAAC7d,QAAQ,CAAC;YAAEqK,gBAAgB,EAAEqG,GAAG;YAAEtG,kBAAkB,EAAE;UAAK,CAAC,CAAC;QACpE;MACF,CAAC,CAAC;MACJyT,MAAI,CAAC7d,QAAQ,CAAC;QAAEoK,kBAAkB,EAAEmU;MAAsB,CAAC,CAAC;MAC5D,OAAOA,qBAAqB;IAAC;EAC/B;EAEMlX,cAAcA,CAAA,EAAkB;IAAA,IAAAoX,MAAA;IAAA,OAAAxJ,iBAAA;MACpC,IAAM;QAAE7K;MAAmB,CAAC,GAAGqU,MAAI,CAACpe,KAAK;MACzC,IAAI+J,kBAAkB,IAAI,IAAI,EAAE;QAC9B,MAAM,IAAI4T,KAAK,CAAC,kCAAkC,CAAC;MACrD;MAEAS,MAAI,CAACze,QAAQ,CAAC;QACZoK,kBAAkB,EAAE,IAAI;QACxBC,gBAAgB,EAAE,IAAI;QACtBjD,cAAc,EAAE,IAAI1L,GAAG,CAAC,CAAC;QACzBiM,iBAAiB,EAAE,IAAIjM,GAAG,CAAC;MAC7B,CAAC,CAAC;IAAC;EACL;;EAEA;AACF;AACA;AACA;EACEgjB,YAAYA,CAAC1mB,MAAc,EAAQ;IACjC,IAAM;MAAE2mB;IAAiB,CAAC,GAAG,IAAI,CAACjnB,KAAK;IACvCinB,gBAAgB,CAAC3mB,MAAM,CAAC;EAC1B;;EAEA;AACF;AACA;EACE4mB,UAAUA,CAACjQ,WAAuB,EAAEC,QAAoB,EAAQ;IAAA,IAAAiQ,MAAA;IAC9D,IAAM;MAAEzmB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAEkE,OAAO;MAAEkjB;IAAe,CAAC,GAAG1mB,KAAK;IACzC,IAAM2mB,OAAmB,GAAG,CAAC,CAAC;IAAC,IAAAC,KAAA,YAAAA,MAAA,EACa;MAC1C,IAAMhnB,MAAM,GAAG4D,OAAO,CAAC4D,CAAC,CAAC;MACzB,IAAM;QAAE/C,IAAI;QAAEvC;MAAK,CAAC,GAAGlC,MAAM;MAC7B,IAAMmX,KAAK,GAAG/W,KAAK,CAACgX,YAAY,CAAC5P,CAAC,EAAEoP,QAAQ,CAAC;MAC7C,IAAM6B,IAAI,GAAGrY,KAAK,CAACwX,WAAW,CAACpQ,CAAC,EAAEoP,QAAQ,CAAC;MAC3C,IAAMwL,YAAY,GAAGyE,MAAI,CAACxO,gBAAgB,CAAC7Q,CAAC,CAAC;MAC7C,IAAMyf,YAAY,GAChB3uB,qBAAqB,CAAC8H,KAAK,CAAC,IAAIA,KAAK,CAAC8mB,eAAe,CAACtQ,QAAQ,CAAC;MACjE,IAAMuQ,SAAS,GAAGL,cAAc,CAACvM,IAAI,CAACrH,CAAC,IAAIA,CAAC,CAACzO,IAAI,KAAKA,IAAI,CAAC,IAAI,IAAI;MACnEsiB,OAAO,CAACtiB,IAAI,CAAC,GAAG;QACd0S,KAAK;QACLsB,IAAI;QACJvW,IAAI;QACJilB,SAAS;QACTF,YAAY;QACZ7E;MACF,CAAC;IACH,CAAC;IAjBD,KAAK,IAAI5a,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG5D,OAAO,CAACvE,MAAM,EAAEmI,CAAC,IAAI,CAAC;MAAAwf,KAAA;IAAA;IAkB1C,IAAM;MAAEI;IAAe,CAAC,GAAG,IAAI,CAAC1nB,KAAK;IACrC0nB,cAAc,CAACxQ,QAAQ,EAAEmQ,OAAO,CAAC;EACnC;EAEAtmB,0BAA0BA,CACxBT,MAAc,EACdqE,MAA8B,EAC9BvD,OAA8B,EACxB;IACN,IAAM;MAAEV;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM2nB,KAAK,GAAGjnB,KAAK,CAAC6Q,oBAAoB,CAACjR,MAAM,CAACyE,IAAI,CAAC;IACrD/K,aAAa,CAAC2tB,KAAK,CAAC;IACpB,IAAI,CAAC1N,iBAAiB,CAAC0N,KAAK,EAAEhjB,MAAM,EAAEvD,OAAO,CAAC;EAChD;EAEAH,8BAA8BA,CAC5BX,MAAc,EACdkkB,SAAwB,EAElB;IAAA,IAAAoD,YAAA;IAAA,IADN3D,aAAa,GAAA7M,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,KAAK;IAErB,IAAM;MAAE1W;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAMiX,WAAW,GAAGvW,KAAK,CAAC6Q,oBAAoB,CAACjR,MAAM,CAACyE,IAAI,CAAC;IAC3D/K,aAAa,CAACid,WAAW,CAAC;IAC1B,IAAMuC,UAAU,GAAG9Y,KAAK,CAACwD,OAAO,CAAC+S,WAAW,CAAC,CAAClS,IAAI;IAClD,IAAM8iB,OAAO,GAAG9tB,UAAU,CAAC+tB,gBAAgB,CAACpnB,KAAK,CAACmd,IAAI,EAAErE,UAAU,CAAC;IACnE,IAAIuO,OAAO,GAAG,IAAI;IAElB,IAAIF,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACrD,SAAS,KAAKA,SAAS,EAAE;MACtD,IAAIA,SAAS,KAAKzqB,UAAU,CAAC6G,aAAa,CAAConB,UAAU,EAAE;QACrDD,OAAO,GAAGznB,MAAM,CAACud,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;MAChC,CAAC,MAAM;QACLiK,OAAO,GAAGznB,MAAM,CAACud,IAAI,CAAC,CAAC,CAACoK,GAAG,CAAC,CAAC;MAC/B;IACF;IAEA,IAAMxoB,KAAK,GAAG1F,UAAU,CAACmuB,gBAAgB,CACvCxnB,KAAK,CAACmd,IAAI,EACVrE,UAAU,EACVuO,OAAO,EACP9D,aACF,CAAC;IACD9lB,GAAG,CAACmgB,IAAI,CAAC,qBAAqB,EAAE7e,KAAK,CAAC;IAEtC,IAAI,CAACsV,YAAY,CAAC,YAAY,CAAC;IAC/B,IAAI,CAACzM,QAAQ,CAAC;MAAE7I;IAAM,CAAC,CAAC;IAExB,CAAAmoB,YAAA,OAAI,CAACzZ,IAAI,cAAAyZ,YAAA,uBAATA,YAAA,CAAW1L,WAAW,CAAC,CAAC;EAC1B;EAEA/a,wBAAwBA,CAAA,EAAS;IAAA,IAAAgnB,YAAA;IAC/B,CAAAA,YAAA,OAAI,CAACha,IAAI,cAAAga,YAAA,uBAATA,YAAA,CAAWhH,KAAK,CAAC,CAAC;EACpB;EAEA5gB,wBAAwBA,CAACD,MAAsB,EAAQ;IACrD,IAAI,CAACgI,QAAQ,CAAC;MAAEsJ,mBAAmB,EAAEtR;IAAO,CAAC,CAAC;EAChD;EAEAkK,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAAClC,QAAQ,CAAC;MAAEyK,WAAW,EAAE;IAAK,CAAC,CAAC;EACtC;EAEAtI,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAACnC,QAAQ,CAAC;MAAEyK,WAAW,EAAE;IAAM,CAAC,CAAC;EACvC;EAEArI,wBAAwBA,CAACuM,WAAmB,EAAQ;IAAA,IAAAmR,oBAAA;IAClD,IAAM;MAAE3W,sBAAsB;MAAEzP;IAAiB,CAAC,GAAG,IAAI,CAAC2G,KAAK;IAC/D,IACE3G,gBAAgB,IAChByP,sBAAsB,KAAKwF,WAAW,IACtC,EAAAmR,oBAAA,OAAI,CAACrZ,cAAc,cAAAqZ,oBAAA,uBAAnBA,oBAAA,CAAqBrR,OAAO,MAAK,IAAI,EACrC;MAAA,IAAAsR,qBAAA;MACA,CAAAA,qBAAA,OAAI,CAACtZ,cAAc,cAAAsZ,qBAAA,uBAAnBA,qBAAA,CAAqBtR,OAAO,CAACoK,KAAK,CAAC,CAAC;MACpC,IAAI,CAAC7Y,QAAQ,CAAC;QAAEsJ,mBAAmB,EAAE;MAAK,CAAC,CAAC;IAC9C,CAAC,MAAM;MACL,IAAI,CAACtJ,QAAQ,CAAC;QACZmJ,sBAAsB,EAAE,IAAI;QAC5BG,mBAAmB,EAAE;MACvB,CAAC,CAAC;IACJ;EACF;EAEArG,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACmV,QAAQ,CAAC,CAAC;EACjB;;EAEA;EACAzV,iBAAiBA,CAAA,EAAS;IACxB;EAAA;EAGFC,iBAAiBA,CAACiJ,QAA8B,EAAQ;IACtD,IAAM;MAAEzT,KAAK;MAAE4nB;IAAc,CAAC,GAAG,IAAI,CAACtoB,KAAK;IAC3CsoB,aAAa,CAACnU,QAAQ,EAAEzT,KAAK,CAAC;EAChC;EAEAyK,eAAeA,CAAC0E,KAAa,EAAQ;IACnC1R,GAAG,CAACoqB,IAAI,CAAC,YAAY,EAAE1Y,KAAK,CAAC;IAC7B,IAAI,CAACvH,QAAQ,CAAC;MACZsK,YAAY,eAAE5U,IAAA;QAAKmM,SAAS,EAAC,eAAe;QAAAX,QAAA,KAAAoQ,MAAA,CAAK/J,KAAK;MAAA,CAAQ;IAChE,CAAC,CAAC;EACJ;EAEAzE,qBAAqBA,CAACqM,KAAa,EAAQ;IACzC,IAAI,CAAC1C,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;IAEvC,IAAI,CAACzM,QAAQ,CAACkgB,MAAA,IAA8C;MAAA,IAA7C;QAAE/W,sBAAsB;QAAErS;MAAa,CAAC,GAAAopB,MAAA;MACrD,IAAMrP,eAAe,GAAG,IAAInV,GAAG,CAAC5E,YAAY,CAAC;MAC7C,IAAIqS,sBAAsB,IAAI,IAAI,EAAE;QAClC,IAAMmH,UAAU,GAAG,IAAI,CAACtB,cAAc,CAAC7F,sBAAsB,CAAC;QAC9DzX,aAAa,CAAC4e,UAAU,CAAC;QACzB,IAAI,CAACe,gBAAgB,CAACf,UAAU,EAAEnB,KAAK,EAAE0B,eAAe,CAAC;MAC3D;MACA,OAAO;QAAE/Z,YAAY,EAAE+Z;MAAgB,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEA9N,mBAAmBA,CAAA,EAAiD;IAAA,IAAhDod,YAAY,GAAArR,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IAAA,IAAEsR,YAAY,GAAAtR,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IAC1D,IAAIqR,YAAY,EAAE;MAAA,IAAAE,YAAA;MAChB,CAAAA,YAAA,OAAI,CAACxa,IAAI,cAAAwa,YAAA,uBAATA,YAAA,CAAWxH,KAAK,CAAC,CAAC;IACpB;IACA,IAAIuH,YAAY,EAAE;MAChB,IAAI,CAACpgB,QAAQ,CAAC;QAAEmJ,sBAAsB,EAAE;MAAK,CAAC,CAAC;IACjD;EACF;EAEAnG,kBAAkBA,CAACsd,QAAiB,EAAQ;IAC1C,IAAM;MAAEnX;IAAuB,CAAC,GAAG,IAAI,CAAC9I,KAAK;IAC7C3O,aAAa,CAACyX,sBAAsB,CAAC;IACrC,IAAImX,QAAQ,EAAE;MACZ,IAAI,CAACvH,cAAc,CAAC5P,sBAAsB,GAAG,CAAC,CAAC;IACjD,CAAC,MAAM;MACL,IAAI,CAAC4P,cAAc,CAAC5P,sBAAsB,GAAG,CAAC,CAAC;IACjD;EACF;EAEAvF,qBAAqBA,CACnB0M,UAAsB,EACtBiQ,cAAwC,EAClC;IACN,IAAM;MAAEnoB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAMM,MAAM,GAAGI,KAAK,CAACwD,OAAO,CAAC0U,UAAU,CAAC;IACxC,IAAM;MAAEtI,qBAAqB,EAAEwY;IAA0B,CAAC,GAAG,IAAI,CAACngB,KAAK;IACvE,IAAM2H,qBAAqB,GAAG,IAAItM,GAAG,CAAC8kB,yBAAyB,CAAC;IAEhE,IAAID,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAME,cAAc,GAAGhvB,UAAU,CAACivB,iBAAiB,CAAC1oB,MAAM,CAACkC,IAAI,CAAC;MAChExI,aAAa,CAAC+uB,cAAc,CAAC;MAC7B,IAAME,oBAAoB,GAAGpvB,SAAS,CAACqvB,wBAAwB,CAC7DH,cAAc,EACdzoB,MAAM,CAACyE,IAAI,EACX8jB,cACF,CAAC;MAEDvY,qBAAqB,CAACyJ,GAAG,CAACzZ,MAAM,CAACyE,IAAI,EAAEkkB,oBAAoB,CAAC;IAC9D,CAAC,MAAM;MACL3Y,qBAAqB,CAACoJ,MAAM,CAACpZ,MAAM,CAACyE,IAAI,CAAC;IAC3C;IAEA,IAAI,CAAC8X,eAAe,CAAC;MAAEvM;IAAsB,CAAC,CAAC;EACjD;EAEA9E,UAAUA,CAACyT,CAAsC,EAAQ;IACvDA,CAAC,CAACkK,eAAe,CAAC,CAAC;IACnB,IAAI,CAAC7gB,QAAQ,CAAC;MAAE5B,WAAW,EAAE;IAAK,CAAC,CAAC;EACtC;EAEA+E,eAAeA,CAAA,EAAS;IACtB,IAAI,CAACnD,QAAQ,CAAC;MAAE5B,WAAW,EAAE,KAAK;MAAE8L,WAAW,EAAE;IAAG,CAAC,CAAC;EACxD;EAEA7G,cAAcA,CAAA,EAAS;IACrB,IAAI,CAACrD,QAAQ,CAAC8gB,MAAA,IAAqB;MAAA,IAApB;QAAE5W;MAAY,CAAC,GAAA4W,MAAA;MAC5B,IAAMC,UAAU,GAAG,CAAC,GAAG7W,WAAW,CAAC;MACnC6W,UAAU,CAACC,GAAG,CAAC,CAAC;MAChB,OAAO;QAAE9W,WAAW,EAAE6W;MAAW,CAAC;IACpC,CAAC,CAAC;EACJ;EAEA3d,gBAAgBA,CAACoK,MAAkB,EAAQ;IACzC,IAAI,CAACxN,QAAQ,CAACihB,MAAA;MAAA,IAAC;QAAE/W;MAAY,CAAC,GAAA+W,MAAA;MAAA,OAAM;QAClC/W,WAAW,EAAE,CAAC,GAAGA,WAAW,EAAEsD,MAAM;MACtC,CAAC;IAAA,CAAC,CAAC;EACL;EAEAlK,mBAAmBA,CAAC4d,KAAY,EAAQ;IACtC,IAAMC,WAAW,GAAGD,KAAoB;IACxCrrB,GAAG,CAAC0R,KAAK,CAAC,iBAAiB,EAAE4Z,WAAW,CAACC,MAAM,CAAC;IAChD,IAAI,CAACjJ,WAAW,CAAC,CAAC;IAClB,IAAI,IAAI,CAACE,WAAW,CAAC,CAAC,EAAE;MACtB,IAAI,CAAC5L,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC;MAClD,IAAI,CAAC2L,QAAQ,CAAC,CAAC;IACjB,CAAC,MAAM;MACLviB,GAAG,CAAC0R,KAAK,CAAC,qCAAqC,CAAC;MAChD,IAAM;QAAE8T;MAAQ,CAAC,GAAG,IAAI,CAAC3jB,KAAK;MAC9B2jB,OAAO,CAAC,IAAI2C,KAAK,4BAAA1M,MAAA,CAA4B6P,WAAW,CAACC,MAAM,CAAE,CAAC,CAAC;IACrE;EACF;EAEA1d,YAAYA,CAAA,EAAS;IAAA,IAAA2d,YAAA;IACnBxrB,GAAG,CAACyX,MAAM,CAAC,uBAAuB,CAAC;IAEnC,IAAM;MACJ3W,eAAe;MACfC,mBAAmB;MACnBC,aAAa;MACbC,YAAY;MACZC,WAAW;MACXC,YAAY;MACZC,YAAY;MACZC,qBAAqB;MACrBC;IACF,CAAC,GAAG,IAAI,CAACkJ,KAAK;IAEd,IAAM9C,MAAM,GAAG;MACb5G,eAAe;MACfC,mBAAmB;MACnBC,aAAa;MACbC,YAAY;MACZC,WAAW;MACXC,YAAY;MACZC,YAAY;MACZC,qBAAqB;MACrBC;IACF,CAAC;IAED,IAAI,CAACV,aAAa,CAAC8G,MAAM,CAAC,EAAE;MAC1B,IAAI,CAACuI,gBAAgB,GAAGvI,MAAM;IAChC,CAAC,MAAM;MACL,IAAI,CAACuI,gBAAgB,GAAG,IAAI;IAC9B;IAEA,CAAAub,YAAA,OAAI,CAACxb,IAAI,cAAAwb,YAAA,uBAATA,YAAA,CAAWzN,WAAW,CAAC,CAAC;IACxB,IAAI,CAACuE,WAAW,CAAC,CAAC;EACpB;EAEAxU,iBAAiBA,CAACyF,OAAqB,EAAQ;IAAA,IAAAkY,gBAAA,EAAAC,YAAA;IAC7C,IAAM;MAAEnpB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAE8pB,eAAe,GAAG;IAAE,CAAC,IAAAF,gBAAA,IAAAC,YAAA,GAAG,IAAI,CAAC1b,IAAI,cAAA0b,YAAA,uBAATA,YAAA,CAAWlhB,KAAK,cAAAihB,gBAAA,cAAAA,gBAAA,GAAI,CAAC,CAAC;IACtD,IAAInX,eAAe,GAAG,CAAC;IACvB,IAAI9Z,mBAAmB,CAAC+H,KAAK,CAAC,IAAIA,KAAK,CAACsG,UAAU,EAAE;MAClDhN,aAAa,CAAC0X,OAAO,CAAC;MACtB,IAAM;QAAEqY;MAAe,CAAC,GAAGrY,OAAO;;MAElC;MACA;MACA,IAAMsY,iBAAiB,GAAGtpB,KAAK,CAACif,QAAQ,GAAGjf,KAAK,CAACgY,sBAAsB;MACvE,IAAIoR,eAAe,KAAKE,iBAAiB,GAAG,CAAC,EAAE;QAC7C;QACAvX,eAAe,GAAG/R,KAAK,CAAC+R,eAAe,GAAG,CAAC;MAC7C,CAAC,MAAM,IAAIqX,eAAe,KAAKE,iBAAiB,GAAG,CAAC,EAAE;QACpD;QACAvX,eAAe,GAAG/R,KAAK,CAAC+R,eAAe;MACzC,CAAC,MAAM;QACL;QACAA,eAAe,GAAGiD,IAAI,CAACjV,GAAG,CACxB,CAAC,EACDspB,cAAc,IACXrpB,KAAK,CAACif,QAAQ,GAAGjf,KAAK,CAAC+R,eAAe,CAAC,GACxC/R,KAAK,CAAC+X,mBAAmB,GACzB/X,KAAK,CAACgY,sBAAsB,GAC5B,CACJ,CAAC;MACH;IACF;IAEA,IAAI,CAACpQ,QAAQ,CAAC;MAAEoJ,OAAO;MAAEe;IAAgB,CAAC,CAAC;EAC7C;EAEA5G,sBAAsBA,CAACiG,cAAqC,EAAQ;IAAA,IAAAmY,YAAA;IAClEjwB,aAAa,CAAC8X,cAAc,CAAC;IAC7B,IAAM;MAAEoY;IAAmB,CAAC,GAAG,IAAI,CAAClqB,KAAK;IACzC,IAAM;MAAE+R;IAAc,CAAC,GAAG,IAAI,CAACpJ,KAAK;IACpC,IAAI,CAACL,QAAQ,CAAC;MAAEwJ;IAAe,CAAC,CAAC;IACjC,IAAIC,aAAa,IAAI,IAAI,EAAE;MACzB,IAAI,CAACzJ,QAAQ,CAAC;QAAEyJ,aAAa,EAAE;MAAK,CAAC,CAAC;IACxC;IACA,IAAI,EAAAkY,YAAA,OAAI,CAAC9b,IAAI,cAAA8b,YAAA,uBAATA,YAAA,CAAWthB,KAAK,CAACod,SAAS,KAAI,IAAI,EAAE;MACtC,IAAI,CAACzd,QAAQ,CAAC;QAAE0K,OAAO,KAAA4G,MAAA,CAAK,IAAI,CAACzL,IAAI,CAACxF,KAAK,CAACod,SAAS,GAAG,CAAC;MAAG,CAAC,CAAC;IAChE;IACAmE,kBAAkB,CAACpY,cAAc,CAAC;EACpC;EAEAhG,yBAAyBA,CACvBrE,YAAsC,EACtC0iB,eAA4B,EACtB;IACN,IAAI,CAAC7hB,QAAQ,CAAC;MAAEb;IAAa,CAAC,EAAE0iB,eAAe,CAAC;EAClD;EAEApe,yBAAyBA,CAACiF,kBAA0C,EAAQ;IAC1E,IAAM;MAAEtQ;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAI,CAACsI,QAAQ,CACX;MACE0I,kBAAkB,EAAE/T,aAAa,CAACmtB,uBAAuB,CACvD1pB,KAAK,EACLsQ,kBACF,CAAC,CAACqZ;IACJ,CAAC,EACD;MAAA,IAAAC,YAAA;MAAA,QAAAA,YAAA,GAAM,IAAI,CAACnc,IAAI,cAAAmc,YAAA,uBAATA,YAAA,CAAWpO,WAAW,CAAC,CAAC;IAAA,CAChC,CAAC;EACH;EAEAxS,gBAAgBA,CAAC6gB,OAAgB,EAAQ;IACvC;IACA,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,CAACC,UAAU,CAAC,CAAC;IACtB;IAEA,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;EAEAle,8BAA8BA,CAC5BgE,kBAAoD,EAC9C;IACNlS,GAAG,CAACsH,KAAK,CAAC,6BAA6B,EAAE4K,kBAAkB,CAAC;IAC5D,IAAI,CAAC/H,QAAQ,CAAC;MAAE+H;IAAmB,CAAC,CAAC;EACvC;EAEAlE,6BAA6BA,CAAA,EAAS;IACpChO,GAAG,CAACsH,KAAK,CAAC,+BAA+B,CAAC;IAC1C,IAAM;MAAE+M,WAAW;MAAEnC;IAAmB,CAAC,GAAG,IAAI,CAAC1H,KAAK;IACtD,IAAI,CAACL,QAAQ,CAAC;MACZkK,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEhQ,IAAI,EAAE7F,UAAU,CAAC8tB,2BAA2B;QAC5C/nB,KAAK;MACP,CAAC,CACF;MACDyP,0BAA0B,EAAE9B,kBAAkB,CAAC1Q,MAAM;MACrD;MACA4I,wBAAwB,EAAE7C;IAC5B,CAAC,CAAC;EACJ;EAEA0G,2BAA2BA,CAACub,KAAa,EAAQ;IAC/CxpB,GAAG,CAACsH,KAAK,CAAC,yBAAyB,EAAEkiB,KAAK,CAAC;IAC3C,IAAM;MAAEnV,WAAW;MAAEnC;IAAmB,CAAC,GAAG,IAAI,CAAC1H,KAAK;IACtD,IAAI,CAACL,QAAQ,CAAC;MACZkK,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEhQ,IAAI,EAAE7F,UAAU,CAAC8tB,2BAA2B;QAC5C/nB,KAAK;MACP,CAAC,CACF;MACDyP,0BAA0B,EAAEwV,KAAK;MACjC;MACApf,wBAAwB,EAAAjB,aAAA,KAAO+I,kBAAkB,CAACsX,KAAK,CAAC;IAC1D,CAAC,CAAC;EACJ;;EAEA;;EAQArb,iCAAiCA,CAACzG,MAA6B,EAAQ;IACrE1H,GAAG,CAACsH,KAAK,CAAC,iCAAiC,EAAEI,MAAM,CAAC;IACpD,IAAI,CAACyC,QAAQ,CACXK,KAAK,IAAI;MACP,IAAIA,KAAK,CAACwJ,0BAA0B,KAAK,IAAI,EAAE;QAC7ChU,GAAG,CAACsH,KAAK,CAAC,sBAAsB,CAAC;QACjC,OAAO,IAAI;MACb;MACA,IAAM4K,kBAAkB,GAAG,CAAC,GAAG1H,KAAK,CAAC0H,kBAAkB,CAAC;MACxDA,kBAAkB,CAAC1H,KAAK,CAACwJ,0BAA0B,CAAC,GAAGtM,MAAM;MAC7D,OAAO;QAAEwK;MAAmB,CAAC;IAC/B,CAAC,EACD,MAAM;MACJ,IAAI,CAAC1E,cAAc,CAAC,CAAC;IACvB,CACF,CAAC;EACH;EAEAY,mCAAmCA,CAAA,EAAS;IAC1C,IAAI,CAACZ,cAAc,CAAC,CAAC;IACrB;IACA;IACA,IAAI,CAACrD,QAAQ,CAAC;MAAE6J,0BAA0B,EAAE;IAAK,CAAC,CAAC;EACrD;EAEA3F,yBAAyBA,CAACrN,aAAgC,EAAQ;IAChEhB,GAAG,CAACmgB,IAAI,+BAA+Bnf,aAAa,CAAC;IAErD,IAAM;MAAEuB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MACJyH,YAAY;MACZhI,KAAK;MACLL,YAAY;MACZH,eAAe;MACfO;IACF,CAAC,GAAG,IAAI,CAACmJ,KAAK;IAEd,IAAM;MAAEzE;IAAQ,CAAC,GAAGxD,KAAK;IACzB,IAAMgqB,gBAAgB,GAAGhqB,KAAK,CAACvB,aAAa,CAAC+F,GAAG,CAC9CylB,YAAY,OAAA/Q,MAAA,CAAO+Q,YAAY,CACjC,CAAC;IAED,IAAMC,kBAAkB,GAAG3tB,aAAa,CAAC4tB,2BAA2B,CAClEH,gBAAgB,EAChBvrB,aACF,CAAC;IACD,IAAIyrB,kBAAkB,CAACjrB,MAAM,GAAG,CAAC,EAAE;MACjC,IAAMmrB,QAAQ,GAAG7tB,aAAa,CAAC8tB,oBAAoB,CACjDtrB,KAAK,EACLmrB,kBACF,CAAC;MACD,IAAMzR,eAAe,GAAGlc,aAAa,CAAC+tB,sBAAsB,CAC1D9mB,OAAO,EACP9E,YAAY,EACZwrB,kBACF,CAAC;MACD,IAAM1R,kBAAkB,GAAGjc,aAAa,CAAC+tB,sBAAsB,CAC7D9mB,OAAO,EACPjF,eAAe,EACf2rB,kBACF,CAAC;MACD,IAAMjI,eAAe,GAAG1lB,aAAa,CAACguB,4BAA4B,CAChE/mB,OAAO,EACPuD,YAAY,EACZmjB,kBACF,CAAC;MACD,IAAMM,wBAAwB,GAC5BjuB,aAAa,CAACkuB,sCAAsC,CAClD3rB,qBAAqB,EACrBorB,kBACF,CAAC;MACH,IAAIE,QAAQ,CAACnrB,MAAM,KAAKF,KAAK,CAACE,MAAM,EAAE;QACpCxB,GAAG,CAACsH,KAAK,CAAC,+CAA+C,CAAC;QAC1D,IAAI,CAAC6C,QAAQ,CAAC;UAAE7I,KAAK,EAAEqrB;QAAS,CAAC,CAAC;MACpC;MACA,IACE3R,eAAe,CAACzZ,IAAI,KAAKN,YAAY,CAACM,IAAI,IAC1CwZ,kBAAkB,CAACxZ,IAAI,KAAKT,eAAe,CAACS,IAAI,EAChD;QACAvB,GAAG,CAACsH,KAAK,kDAAkD,CAAC;QAC5D,IAAI,CAAC6C,QAAQ,CAAC;UACZlJ,YAAY,EAAE+Z,eAAe;UAC7Bla,eAAe,EAAEia;QACnB,CAAC,CAAC;MACJ;MACA,IAAI,CAACthB,SAAS,CAAC6P,YAAY,EAAEkb,eAAe,CAAC,EAAE;QAC7CxkB,GAAG,CAACsH,KAAK,oDAEPkd,eACF,CAAC;QACD,IAAI,CAACra,QAAQ,CAAC;UAAEb,YAAY,EAAEkb;QAAgB,CAAC,CAAC;MAClD;MACA,IAAI,CAAC/qB,SAAS,CAAC4H,qBAAqB,EAAE0rB,wBAAwB,CAAC,EAAE;QAC/D/sB,GAAG,CAACsH,KAAK,6DAEPkd,eACF,CAAC;QACD,IAAI,CAACra,QAAQ,CAAC;UAAE9I,qBAAqB,EAAE0rB;QAAyB,CAAC,CAAC;MACpE;IACF;IAEA,IAAI,CAAC5iB,QAAQ,CAAC;MAAEnJ;IAAc,CAAC,CAAC;IAChC,IAAIA,aAAa,CAACQ,MAAM,GAAG,CAAC,EAAE;MAC5B;MACA;MACA,IAAI,CAACoV,YAAY,CAAC,4BAA4B,CAAC;IACjD;EACF;EAEAtI,0BAA0BA,CAAA,EAAS;IACjCtO,GAAG,CAACsH,KAAK,CAAC,wBAAwB,CAAC;IACnC,IAAM;MAAE4M;IAAQ,CAAC,GAAG,IAAI,CAAC1J,KAAK;IAC9B,IAAI0J,OAAO,EAAE;MAAA,IAAA+Y,YAAA;MACX,IAAI,CAAC3K,WAAW,CAAC,CAAC;MAClB,CAAA2K,YAAA,OAAI,CAACjd,IAAI,cAAAid,YAAA,uBAATA,YAAA,CAAWlP,WAAW,CAAC,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACrI,SAAS,CAAC,CAAC;IAClB;EACF;EAEAjH,0BAA0BA,CAAA,EAAkB;IAC1C,OAAO,IAAI,CAACsD,aAAa,CAAC,CAAC;EAC7B;EAEArD,2BAA2BA,CAAA,EAAkB;IAC3C,OAAO,IAAI,CAAC8C,cAAc,CAAC,CAAC;EAC9B;EAEAhD,wBAAwBA,CAAA,EAAS;IAAA,IAAA0e,YAAA;IAC/BltB,GAAG,CAACsH,KAAK,CAAC,sBAAsB,CAAC;IACjC,IAAM;MAAE/E;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAE0P,cAAc;MAAEO;IAAkB,CAAC,GAAGvP,KAAK;IACnD,IAAI,CAAC4H,QAAQ,CAAC;MACZoH,cAAc;MACdO,iBAAiB;MACjB0C,gBAAgB,EAAE;IACpB,CAAC,CAAC;IACF,CAAA0Y,YAAA,OAAI,CAACld,IAAI,cAAAkd,YAAA,uBAATA,YAAA,CAAWnP,WAAW,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;AACA;EACEtR,wBAAwBA,CAAC1L,mBAAwC,EAAQ;IACvEf,GAAG,CAACsH,KAAK,CAAC,0BAA0B,EAAEvG,mBAAmB,CAAC;IAE1D,IAAI,CAAC6V,YAAY,gBAAA6E,MAAA,CACA1a,mBAAmB,CAACN,YAAY,CAC5CsG,GAAG,CAACN,CAAC,IAAIA,CAAC,CAACN,SAAS,CAAC,CACrBgnB,IAAI,CAAC,IAAI,CAAC,QACf,CAAC;IACD,IAAI,CAAChjB,QAAQ,CAAC;MAAEpJ;IAAoB,CAAC,CAAC;EACxC;;EAEA;AACF;AACA;AACA;EACEyL,uBAAuBA,CAAC4gB,WAAwB,EAAQ;IACtDptB,GAAG,CAACsH,KAAK,CAAC,yBAAyB,EAAE8lB,WAAW,CAAC;IAEjD,IAAI,CAACxW,YAAY,gBAAA6E,MAAA,CAAgB2R,WAAW,CAACjnB,SAAS,QAAK,CAAC;IAE5D,IAAI,CAACgE,QAAQ,CAACkjB,MAAA;MAAA,IAAC;QAAEtsB;MAAoB,CAAC,GAAAssB,MAAA;MAAA,OAAM;QAC1CjZ,mBAAmB,EAAEgZ,WAAW;QAChCrsB,mBAAmB,EAAAoI,aAAA,CAAAA,aAAA,KACdpI,mBAAmB;UACtBN,YAAY,EAAEM,mBAAmB,CAACN,YAAY,CAACsG,GAAG,CAACN,CAAC,IAClDA,CAAC,CAACN,SAAS,KAAKinB,WAAW,CAACjnB,SAAS,GAAGinB,WAAW,GAAG3mB,CACxD;QAAC;MAEL,CAAC;IAAA,CAAC,CAAC;EACL;;EAEA;AACF;AACA;AACA;EACEiG,qBAAqBA,CAAC0gB,WAAwB,EAAQ;IACpDptB,GAAG,CAACsH,KAAK,CAAC,uBAAuB,EAAE8lB,WAAW,CAAC;IAE/C,IAAM;MAAE/Y;IAAY,CAAC,GAAG,IAAI,CAAC7J,KAAK;IAElC,IAAI,CAACL,QAAQ,CAAC;MACZkK,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEhQ,IAAI,EAAE7F,UAAU,CAACoZ,gBAAgB;QACjCrT,KAAK,qBAAAkX,MAAA,CAAqB2R,WAAW,CAACjnB,SAAS;MACjD,CAAC,CACF;MACDiO,mBAAmB,EAAEgZ;IACvB,CAAC,CAAC;EACJ;EAEA5d,kBAAkBA,CAACrO,YAA4B,EAAQ;IAAA,IAAAmsB,qBAAA,EAAAC,sBAAA;IACrDvtB,GAAG,CAACmgB,IAAI,CAAC,eAAe,EAAEhf,YAAY,CAAC;IAEvC,IAAI,CAACqsB,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC/H,cAAc,CAAC,CAAC;IACrB,IAAI,CAAClJ,eAAe,CAAC,CAAC;IAEtB,IAAI,CAAC3F,YAAY,wBAAA6E,MAAA,EAAA6R,qBAAA,GACQnsB,YAAY,aAAZA,YAAY,wBAAAosB,sBAAA,GAAZpsB,YAAY,CAAE4E,OAAO,cAAAwnB,sBAAA,uBAArBA,sBAAA,CAAuBJ,IAAI,CAAC,IAAI,CAAC,cAAAG,qBAAA,cAAAA,qBAAA,GAAI,EAAE,QAChE,CAAC;;IAED;IACA;IACA;IACA,IAAI,CAACnjB,QAAQ,CAAC;MACZhJ,YAAY;MACZmI,YAAY,EAAE,EAAE;MAChBsJ,aAAa,EAAE,EAAE;MACjBtR,KAAK,EAAE,EAAE;MACTJ,WAAW,EAAEtF,UAAU,CAAC6F,YAAY,CAACC,IAAI;MACzCL,qBAAqB,EAAE;IACzB,CAAC,CAAC;EACJ;EAEAkN,2BAA2BA,CAACkf,WAAkC,EAAQ;IACpEztB,GAAG,CAACsH,KAAK,CAAC,uBAAuB,EAAEmmB,WAAW,CAAC;IAE/C,IAAI,CAACD,kBAAkB,CAAC,CAAC;IAEzB,IAAI,CAAC/H,cAAc,CAAC,CAAC;IACrB,IAAI,CAAClJ,eAAe,CAAC,CAAC;IAEtB,IAAI,CAAC3F,YAAY,iCAAA6E,MAAA,CAEbgS,WAAW,CAACjsB,MAAM,GAAG,CAAC,GAAGisB,WAAW,CAACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAExD,CAAC;IAED,IAAI,CAAChjB,QAAQ,CAAC;MACZ9I,qBAAqB,EAAEosB,WAAW;MAClCnkB,YAAY,EAAE,EAAE;MAChBhI,KAAK,EAAE,EAAE;MACTJ,WAAW,EAAEtF,UAAU,CAAC6F,YAAY,CAACC;IACvC,CAAC,CAAC;EACJ;EAEAoN,wBAAwBA,CAAA,EAAS;IAC/B,IAAM;MAAE/K;IAAe,CAAC,GAAG,IAAI,CAAClC,KAAK;IACrC,IAAIkC,cAAc,EAAE;MAClB,IAAI,CAACoG,QAAQ,CAAC;QACZ8J,kBAAkB,EAAE,IAAI;QACxB5J,qBAAqB,EAAE,CAAC;QACxBC,0BAA0B,EAAE,IAAI;QAChCC,mBAAmB,EAAE7L,gBAAgB,CAAC+L,eAAe,CAACijB;MACxD,CAAC,CAAC;IACJ,CAAC,MAAM;MACL1tB,GAAG,CAAC0R,KAAK,CACP,iFACF,CAAC;IACH;EACF;EAEA7C,mBAAmBA,CACjB8e,QAAgB,EAChBC,WAAkB,EAClBC,iBAA4C,EAC5CC,cAAoC,EACpCC,WAAiC,EACjCC,oBAA6B,EAC7BC,oBAA6B,EACvB;IACN,IAAM;MAAElqB;IAAe,CAAC,GAAG,IAAI,CAAClC,KAAK;IACrC,IAAIkC,cAAc,EAAE;MAClB/D,GAAG,CAACmgB,IAAI,CACN,yBAAyB,EACzBwN,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,cAAc,EACdC,WAAW,EACXC,oBAAoB,EACpBC,oBACF,CAAC;MACD,IAAI,CAAC9jB,QAAQ,CAAC,MAAM;QAClB,IAAI,IAAI,CAACqG,UAAU,EAAE;UACnB,IAAI,CAACA,UAAU,CAAC0d,aAAa,CAC3BP,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,cAAc,EACdC,WAAW,EACXC,oBAAoB,EACpBC,oBACF,CAAC;QACH;QACA,OAAO;UACL1jB,mBAAmB,EAAE7L,gBAAgB,CAAC+L,eAAe,CAACC;QACxD,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,MAAM;MACL1K,GAAG,CAAC0R,KAAK,CACP,4EACF,CAAC;IACH;EACF;;EAEA;AACF;AACA;EACEoG,uBAAuBA,CAAA,EAAS;IAC9B9X,GAAG,CAACsH,KAAK,CAAC,yBAAyB,CAAC;IAEpC,IAAI,CAAC6C,QAAQ,CAACgkB,MAAA,IAA6B;MAAA,IAA5B;QAAEptB;MAAoB,CAAC,GAAAotB,MAAA;MACpC,IAAM;QAAE1tB;MAAa,CAAC,GAAGM,mBAAmB;MAC5C,IAAMqtB,eAAe,GAAG3tB,YAAY,CAAC+F,MAAM,CACzCC,CAAC,IAAIA,CAAC,CAACL,QAAQ,CAAC5E,MAAM,GAAG,CAAC,IAAIiF,CAAC,CAACJ,MAClC,CAAC;MACD,IAAI+nB,eAAe,CAAC5sB,MAAM,KAAKf,YAAY,CAACe,MAAM,EAAE;QAClD,OAAO;UACL4S,mBAAmB,EAAE,IAAI;UACzBrT,mBAAmB,EAAAoI,aAAA,CAAAA,aAAA,KACdpI,mBAAmB;YACtBN,YAAY,EAAE2tB;UAAe;QAEjC,CAAC;MACH;MACA,OAAO;QAAEha,mBAAmB,EAAE,IAAI;QAAErT;MAAoB,CAAC;IAC3D,CAAC,CAAC;EACJ;EAEMqL,OAAOA,CAACiiB,WAAmB,EAAsC;IAAA,IAAAC,UAAA,GAAArV,SAAA;MAAAsV,MAAA;IAAA,OAAAnP,iBAAA;MAAA,IAAAoP,WAAA;MAAA,IAApCC,WAAW,GAAAH,UAAA,CAAA9sB,MAAA,QAAA8sB,UAAA,QAAA/mB,SAAA,GAAA+mB,UAAA,MAAG,KAAK;MACpD,IAAM;QACJtZ,2BAA2B,EAAE0Z,kBAAkB;QAC/CzZ;MACF,CAAC,GAAGsZ,MAAI,CAAC/jB,KAAK;MACd,IAAM;QAAEjI;MAAM,CAAC,GAAGgsB,MAAI,CAAC1sB,KAAK;MAC5B,IAAM;QAAEoF;MAAG,CAAC,GAAG1E,KAAK;MACpB,IAAI,CAACA,KAAK,CAACosB,kBAAkB,EAAE;QAC7B;MACF;MAEA,IAAIN,WAAW,KAAK,EAAE,EAAE;QACtB;MACF;MACA,IAAMO,cAAc,GAAG9vB,aAAa,CAAC+vB,eAAe,CAClDtsB,KAAK,CAACwD,OAAO,EACb2oB,kBACF,CAAC;MAED,IAAIE,cAAc,KAAKrnB,SAAS,EAAE;QAChC;MACF;MAEA,IAAIunB,aAAa,IAAAN,WAAA,GAAGD,MAAI,CAACve,IAAI,cAAAwe,WAAA,uBAATA,WAAA,CAAWhkB,KAAK,CAACod,SAAS;MAE9C,IAAIkH,aAAa,IAAI,IAAI,EAAE;QACzBA,aAAa,GAAG,CAAC;MACnB;MAEA,IAAMC,UAAU,GACd9Z,uBAAuB,KAAK3Y,UAAU,CAACksB,QAAQ,IAC/CvT,uBAAuB,KAAK3Y,UAAU,CAAC0yB,kBAAkB;MAC3D,IAAMC,YAAY,GAChBha,uBAAuB,KAAK3Y,UAAU,CAAC4Y,YAAY,IACnDD,uBAAuB,KAAK3Y,UAAU,CAAC0yB,kBAAkB;MAE3D,IAAI;QAAA,IAAAE,YAAA;QACF,IAAM;UAAExsB;QAAU,CAAC,GAAGH,KAAK;QAC3B,IAAM4sB,cAAc,GAAGvzB,UAAU,CAACivB,iBAAiB,CAAC+D,cAAc,CAACvqB,IAAI,CAAC;QAExE,IAAI0U,QAAQ;QAEZ,QAAQoW,cAAc;UACpB,KAAKvzB,UAAU,CAACwzB,QAAQ,CAACC,IAAI;UAC7B,KAAKzzB,UAAU,CAACwzB,QAAQ,CAACE,MAAM;YAAE;cAC/BvW,QAAQ,SAASxW,KAAK,CAAC6J,OAAO,CAC5B0iB,aAAa,EACbF,cAAc,EACd3nB,EAAE,CAACsoB,SAAS,CAACD,MAAM,EACnBjB,WAAW,EACXY,YAAY,EACZF,UAAU,EACVN,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACD;YACF;UACA,KAAK7yB,UAAU,CAACwzB,QAAQ,CAACI,QAAQ;YAAE;cACjC,IAAM,CAACC,SAAS,CAAC,GAAGh0B,SAAS,CAACi0B,cAAc,CAC1CzoB,EAAE,EACFonB,WAAW,EACX3rB,SAAS,CAACoX,QACZ,CAAC;cACDf,QAAQ,SAASxW,KAAK,CAAC6J,OAAO,CAC5B0iB,aAAa,EACbF,cAAc,EACd3nB,EAAE,CAACsoB,SAAS,CAACC,QAAQ,EACrBC,SAAS,EACTloB,SAAS,EACTA,SAAS,EACTknB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACD;YACF;UACA,KAAK7yB,UAAU,CAACwzB,QAAQ,CAACO,OAAO;UAChC,KAAK/zB,UAAU,CAACwzB,QAAQ,CAACQ,GAAG;YAAE;cAC5B,IACE,CAACh0B,UAAU,CAACi0B,gBAAgB,CAACjB,cAAc,CAACvqB,IAAI,CAAC,IACjD,CAACzI,UAAU,CAACk0B,gBAAgB,CAAClB,cAAc,CAACvqB,IAAI,CAAC,EACjD;gBACA,IAAI0rB,UAAU,GAAGC,QAAQ,CAAC3B,WAAW,EAAE,EAAE,CAAC;gBAC1C,IAAIA,WAAW,KAAK,WAAW,EAAE;kBAC/B0B,UAAU,GAAGE,MAAM,CAACC,iBAAiB;gBACvC,CAAC,MAAM,IAAI7B,WAAW,KAAK,UAAU,EAAE;kBACrC0B,UAAU,GAAGE,MAAM,CAACE,iBAAiB;gBACvC;gBAEApX,QAAQ,SAASxW,KAAK,CAAC6J,OAAO,CAC5B0iB,aAAa,EACbF,cAAc,EACd3nB,EAAE,CAACsoB,SAAS,CAACa,MAAM,EACnBL,UAAU,EACVxoB,SAAS,EACTA,SAAS,EACTknB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACH,CAAC,MAAM;gBACL1V,QAAQ,SAASxW,KAAK,CAAC6J,OAAO,CAC5B0iB,aAAa,EACbF,cAAc,EACd3nB,EAAE,CAACsoB,SAAS,CAACD,MAAM,EACnBjB,WAAW,EACX9mB,SAAS,EACTA,SAAS,EACTknB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACH;cACA;YACF;UACA;YAAS;cACP1V,QAAQ,SAASxW,KAAK,CAAC6J,OAAO,CAC5B0iB,aAAa,EACbF,cAAc,EACd3nB,EAAE,CAACsoB,SAAS,CAACD,MAAM,EACnBf,MAAI,CAACrrB,UAAU,CAACmtB,SAAS,CACvBzB,cAAc,CAACvqB,IAAI,EACnBgqB,WAAW,EACX3rB,SAAS,CAACoX,QACZ,CAAC,EACDvS,SAAS,EACTA,SAAS,EACTknB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;YACH;QACF;QAEA,CAAAS,YAAA,GAAAX,MAAI,CAACve,IAAI,cAAAkf,YAAA,uBAATA,YAAA,CAAWoB,WAAW,CAACvX,QAAQ,CAAC;QAChCwV,MAAI,CAACpkB,QAAQ,CAAC;UAAE4K,cAAc,EAAE;QAAG,CAAC,CAAC;MACvC,CAAC,CAAC,OAAO+L,CAAU,EAAE;QACnByN,MAAI,CAACpkB,QAAQ,CAAC;UAAE4K,cAAc,EAAE;QAAgB,CAAC,CAAC;MACpD;IAAC;EACH;EAEAhG,yBAAyBA,CAAA,EAAS;IAAA,IAAAwhB,gBAAA;IAChC,CAAAA,gBAAA,OAAI,CAAC/f,UAAU,cAAA+f,gBAAA,uBAAfA,gBAAA,CAAiBC,cAAc,CAAC,CAAC;IACjC,IAAI,CAACrmB,QAAQ,CAAC;MAAE8J,kBAAkB,EAAE;IAAM,CAAC,CAAC;EAC9C;EAoBAhF,uBAAuBA,CAAA,EAAS;IAC9B,IAAI,CAAC9E,QAAQ,CAAC;MACZ8J,kBAAkB,EAAE,KAAK;MACzB5J,qBAAqB,EAAE,GAAG;MAC1BE,mBAAmB,EAAE7L,gBAAgB,CAAC+L,eAAe,CAACgmB;IACxD,CAAC,CAAC;EACJ;EAEAzhB,sBAAsBA,CAAA,EAAS;IAC7B,IAAI,CAAC7E,QAAQ,CAAC;MACZ8J,kBAAkB,EAAE,KAAK;MACzB5J,qBAAqB,EAAE,CAAC;MACxBE,mBAAmB,EAAE7L,gBAAgB,CAAC+L,eAAe,CAACimB;IACxD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACEC,YAAYA,CAACzP,MAA4B,EAAQ;IAC/C,IAAM;MAAE3e;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAI,CAACqO,OAAO,CAACmP,GAAG,CAAC9c,KAAK,CAACgZ,MAAM,CAAC2F,MAAM,CAAC,CAAC,CAACzP,KAAK,CAACqP,CAAC,IAAI;MAChD,IAAI,CAAC5kB,YAAY,CAACqpB,UAAU,CAACzE,CAAC,CAAC,EAAE;QAC/B9gB,GAAG,CAAC0R,KAAK,CAAC,yBAAyB,EAAEwP,MAAM,EAAEJ,CAAC,CAAC;MACjD;IACF,CAAC,CAAC;EACJ;EAEAhK,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,IAAI,CAAC9G,IAAI,IAAI,IAAI,EAAE;MACrB;IACF;IACA,IAAM;MAAE3H;IAAkB,CAAC,GAAG,IAAI,CAACxG,KAAK;IACxC,IAAIwG,iBAAiB,EAAE;MACrB,IAAM;QAAEuoB;MAAoB,CAAC,GAAG,IAAI,CAAC/uB,KAAK;MAC1C,IAAI,CAACmO,IAAI,CAAC7F,QAAQ,CAAC;QAAE0mB,MAAM,EAAED;MAAoB,CAAC,CAAC;IACrD,CAAC,MAAM;MACL,IAAI,CAAC5gB,IAAI,CAAC7F,QAAQ,CAAC;QAAE0mB,MAAM,EAAE;MAAK,CAAC,CAAC;MACpC,IAAI,CAAC1mB,QAAQ,CAAC;QAAE/B,iBAAiB,EAAE;MAAK,CAAC,CAAC;IAC5C;EACF;EAEAolB,kBAAkBA,CAAA,EAA2B;IAAA,IAA1BzP,WAAW,GAAA9E,SAAA,CAAAzX,MAAA,QAAAyX,SAAA,QAAA1R,SAAA,GAAA0R,SAAA,MAAG,IAAI;IACnC,IAAI,CAAC,IAAI,CAACjJ,IAAI,EAAE;MACd;IACF;IAEA,IAAI,CAACA,IAAI,CAAC0R,mBAAmB,CAAC,CAAC;IAC/B,IAAI,CAAC1R,IAAI,CAAC2R,YAAY,CACpB;MAAEyB,IAAI,EAAE,CAAC;MAAExB,GAAG,EAAE,CAAC;MAAEkP,SAAS,EAAE,CAAC;MAAE/M,UAAU,EAAE;IAAE,CAAC,EAChDhG,WACF,CAAC;EACH;EAEAhG,eAAeA,CAAA,EAAS;IACtB,IAAI,CAAC,IAAI,CAAC/H,IAAI,EAAE;MACd;IACF;IACA,IAAM;MAAExF,KAAK,EAAEumB;IAAc,CAAC,GAAG,IAAI;IACrC,IAAM;MAAEvmB,KAAK,EAAEwmB;IAAU,CAAC,GAAG,IAAI,CAAChhB,IAAI;IACtC,IAAM;MAAEihB;IAAc,CAAC,GAAG,IAAI,CAACpvB,KAAK;IAEpCovB,aAAa,CAACF,aAAa,EAAEC,SAAS,CAAC;EACzC;EAEAvhB,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAACtF,QAAQ,CAAC;MACZuK,iBAAiB,EAAE;IACrB,CAAC,CAAC;EACJ;EAEAhF,qBAAqBA,CAAA,EAAY;IAAA,IAAAwhB,kBAAA;IAC/B,IAAM;MAAE3d,OAAO;MAAEQ;IAAmB,CAAC,GAAG,IAAI,CAACvJ,KAAK;IAClD3O,aAAa,CAAC0X,OAAO,CAAC;IACtB1X,aAAa,CAACkY,kBAAkB,CAAC;IACjC,IAAMod,QAAQ,IAAAD,kBAAA,GAAG,IAAI,CAAC1Y,WAAW,cAAA0Y,kBAAA,uBAAhBA,kBAAA,CAAkBhP,qBAAqB,CAAC,CAAC;IAC1D,IAAMkP,YAAY,GAAG,EAAE;IACvBv1B,aAAa,CAACs1B,QAAQ,CAAC;IACvB,IAAM;MACJE,kBAAkB;MAClBC,WAAW;MACXC,eAAe;MACfC,KAAK;MACLC;IACF,CAAC,GAAGle,OAAO;IACX,IAAMme,OAAO,GAAGJ,WAAW,CAAC9a,GAAG,CAACzC,kBAAkB,CAAC;IACnD,IAAM6R,WAAW,GAAG2L,eAAe,CAAC/a,GAAG,CAACzC,kBAAkB,CAAC;IAE3DlY,aAAa,CAAC61B,OAAO,CAAC;IACtB71B,aAAa,CAAC+pB,WAAW,CAAC;IAE1B,IAAMxC,IAAI,GACR+N,QAAQ,CAAC/N,IAAI,GACb3mB,KAAK,CAACi1B,OAAO,GAAG9L,WAAW,GAAG,CAAC,EAAEwL,YAAY,EAAEI,KAAK,GAAGJ,YAAY,CAAC;IAEtE,OAAO;MACLxP,GAAG,EAAEuP,QAAQ,CAACvP,GAAG,GAAG,CAAC6P,oBAAoB,GAAG,CAAC,IAAIJ,kBAAkB;MACnEjO,IAAI,EACF+N,QAAQ,CAAC/N,IAAI,GACb3mB,KAAK,CAACi1B,OAAO,GAAG9L,WAAW,GAAG,CAAC,EAAEwL,YAAY,EAAEI,KAAK,GAAGJ,YAAY,CAAC;MACtEO,MAAM,EAAER,QAAQ,CAACvP,GAAG,GAAG6P,oBAAoB,GAAGJ,kBAAkB;MAChEO,KAAK,EACHT,QAAQ,CAAC/N,IAAI,GACb3mB,KAAK,CAACi1B,OAAO,GAAG9L,WAAW,GAAG,CAAC,EAAEwL,YAAY,EAAEI,KAAK,GAAGJ,YAAY,CAAC,GACpE,CAAC;MACHI,KAAK,EAAE,CAAC;MACRvP,MAAM,EAAEoP,kBAAkB;MAC1BQ,CAAC,EAAEzO,IAAI;MACP0O,CAAC,EAAEX,QAAQ,CAACvP,GAAG;MACfmQ,MAAM,EAAEA,CAAA,KAAM;QACZ,MAAM,IAAI5J,KAAK,CAAC,iBAAiB,CAAC;MACpC;IACF,CAAC;EACH;EA0GAxZ,oCAAoCA,CAAA,EAAS;IAC3C,IAAM;MAAEkG,OAAO,EAAEmd;IAAU,CAAC,GAAG,IAAI,CAACxnB,KAAK;IACzC,IAAI,CAACoE,cAAc,CAACojB,SAAS,CAAC;EAChC;EAEApjB,cAAcA,CAACojB,SAAiB,EAAQ;IACtC,IAAM;MAAEzvB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM;MAAE2f;IAAS,CAAC,GAAGjf,KAAK;IAC1B,IAAI,CAAC4H,QAAQ,CAAC;MAAE0K,OAAO,EAAEmd;IAAU,CAAC,CAAC;IACrC,IAAIA,SAAS,KAAK,EAAE,EAAE;MACpB,IAAI,CAAC7nB,QAAQ,CAAC;QAAE2K,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD;IACF;IACA,IAAMkd,MAAM,GAAGjC,QAAQ,CAACgC,SAAS,EAAE,EAAE,CAAC;IACtC,IAAIC,MAAM,GAAGzQ,QAAQ,IAAIyQ,MAAM,GAAG,CAACzQ,QAAQ,EAAE;MAC3C,IAAI,CAACrX,QAAQ,CAAC;QAAE2K,YAAY,EAAE;MAAoB,CAAC,CAAC;IACtD,CAAC,MAAM,IAAImd,MAAM,KAAK,CAAC,EAAE;MAAA,IAAAC,YAAA;MACvB,IAAI,CAAC/nB,QAAQ,CAAC;QAAE2K,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD,CAAAmd,YAAA,OAAI,CAACliB,IAAI,cAAAkiB,YAAA,uBAATA,YAAA,CAAW5B,WAAW,CAAC,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAI2B,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAE,YAAA;MACrB,IAAI,CAAChoB,QAAQ,CAAC;QAAE2K,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD,CAAAod,YAAA,OAAI,CAACniB,IAAI,cAAAmiB,YAAA,uBAATA,YAAA,CAAW7B,WAAW,CAAC2B,MAAM,GAAGzQ,QAAQ,CAAC;IAC3C,CAAC,MAAM;MAAA,IAAA4Q,YAAA;MACL,CAAAA,YAAA,OAAI,CAACpiB,IAAI,cAAAoiB,YAAA,uBAATA,YAAA,CAAW9B,WAAW,CAAC2B,MAAM,GAAG,CAAC,CAAC;MAClC,IAAI,CAAC9nB,QAAQ,CAAC;QAAE2K,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;IACzD;EACF;EAEApF,qCAAqCA,CACnC0b,KAAoC,EAC9B;IACN,IAAM2G,SAAS,GAAG3G,KAAK,CAACgH,MAAM,CAAC/Y,KAAK;IACpC,IAAI,CAAC1K,cAAc,CAACojB,SAAS,CAAC;EAChC;EAEAM,gBAAgBA,CACd/N,YAA0B,EAC1BhR,OAAoB,EACpBhR,KAAoB,EACT;IACX,IAAM;MACJ8uB,kBAAkB;MAClBI,oBAAoB;MACpBH,WAAW;MACXC,eAAe;MACfC;IACF,CAAC,GAAGje,OAAO;IACX,IAAMme,OAAO,GAAGJ,WAAW,CAAC9a,GAAG,CAAC+N,YAAY,CAAC;IAC7C,IAAMqB,WAAW,GAAG2L,eAAe,CAAC/a,GAAG,CAAC+N,YAAY,CAAC;IAErD,IAAImN,OAAO,IAAI,IAAI,IAAI9L,WAAW,IAAI,IAAI,EAAE;MAC1C,OAAO,IAAI;IACb;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAM2M,WAAW,GAAGhb,IAAI,CAACjV,GAAG,CAAC,CAAC,EAAEovB,OAAO,CAAC;IACxC,IAAIc,YAAY,GAAG5M,WAAW;IAC9B,IAAI8L,OAAO,GAAG9L,WAAW,GAAG4L,KAAK,EAAE;MACjC;MACAgB,YAAY,GAAGhB,KAAK,GAAGE,OAAO;IAChC,CAAC,MAAM,IAAIA,OAAO,GAAG,CAAC,EAAE;MACtB;MACAc,YAAY,GAAG5M,WAAW,GAAGrO,IAAI,CAACkb,GAAG,CAACf,OAAO,CAAC;IAChD;IAEA,IAAM9mB,YAA2B,GAAG;MAClCC,QAAQ,EAAE,UAAU;MACpB+W,GAAG,EAAE,CAAC6P,oBAAoB,GAAG,CAAC,IAAIJ,kBAAkB;MACpDjO,IAAI,EAAEmP,WAAW;MACjBf,KAAK,EAAEgB,YAAY;MACnBvQ,MAAM,EAAEoP,kBAAkB;MAC1BvmB,aAAa,EAAE;IACjB,CAAC;;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAM4nB,gBAAiC,GAAG;MACxCC,WAAW,EAAE,CAAC;MACdC,YAAY,EAAEvB,kBAAkB;MAChCnP,qBAAqB,EAAE,IAAI,CAACxS;IAC9B,CAAC;IAED,IAAM3E,aAA4B,GAAG;MACnCC,SAAS,EAAE,QAAQ;MACnBC,SAAS,EAAE;QACTC,IAAI,EAAE;UACJC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK;QAC5B;MACF;IACF,CAAC;IAED,IAAM+N,WAAW,GAAG,IAAI,CAACC,cAAc,CAACoL,YAAY,CAAC;IACrD,IAAIrL,WAAW,IAAI,IAAI,EAAE,OAAO,IAAI;IAEpC,IAAM/W,MAAM,GAAGI,KAAK,CAACwD,OAAO,CAACmT,WAAW,CAAC;IACzC,IAAI/W,MAAM,IAAI,IAAI,EAAE,OAAO,IAAI;IAE/B,oBACEtC,IAAA;MAAKuL,KAAK,EAAER,YAAa;MAAAS,QAAA,eACvBxL,IAAA,CAAC3F,OAAO;QAEN24B,OAAO,EAAE,GAAI;QACbC,WAAW;QACX7vB,OAAO,EAAE8H,aAAc;QACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;QAC3BwnB,eAAe,EAAEL,gBAAiB;QAClCM,QAAQ,EAAEA,CAAA,KAAM;UACd,IAAI,CAAC7oB,QAAQ,CAAC;YAAE4J,kBAAkB,EAAE;UAAK,CAAC,CAAC;QAC7C,CAAE;QAAA1I,QAAA,eAEFxL,IAAA,CAAC5B,gBAAgB;UACfsE,KAAK,EAAEA,KAAM;UACbJ,MAAM,EAAEA,MAAO;UACf8wB,YAAY,EAAEA,CAAA,KAAM;YAAA,IAAAC,aAAA;YAClB,CAAAA,aAAA,OAAI,CAAC9G,OAAO,cAAA8G,aAAA,uBAAZA,aAAA,CAAcrU,MAAM,CAAC,CAAC;UACxB;QAAE,CACH;MAAC,GAhBG1c,MAAM,CAACyE,IAiBL;IAAC,CACP,CAAC;EAEV;EAEAgJ,wCAAwCA,CAACyL,UAAsB,EAAQ;IAAA,IAAA8X,YAAA;IACrE,IAAM;MAAE5wB;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAC5B,IAAM+lB,SAAS,IAAAuL,YAAA,GAAG,IAAI,CAACnjB,IAAI,cAAAmjB,YAAA,uBAATA,YAAA,CAAW3oB,KAAK,CAACod,SAAS;IAE5C,IAAIA,SAAS,IAAI,IAAI,EAAE;MACrB,IAAM4B,MAAK,GAAGjnB,KAAK,CAAC6Q,oBAAoB,CAACiI,UAAU,CAAC;MACpD,IAAMlZ,QAAM,GAAGrD,aAAa,CAAC+vB,eAAe,CAACtsB,KAAK,CAACwD,OAAO,EAAEsV,UAAU,CAAC;MACvE,IAAImO,MAAK,IAAI,IAAI,IAAIrnB,QAAM,IAAI,IAAI,EAAE;QACnC;MACF;MACA,IAAMmX,OAAK,GAAG/W,KAAK,CAACgX,YAAY,CAACiQ,MAAK,EAAE5B,SAAS,CAAC;MAClD,IAAMhN,IAAI,GAAG9b,aAAa,CAACipB,kBAAkB,CAACzO,OAAK,EAAEnX,QAAM,CAACkC,IAAI,CAAC;MACjE,IAAI,CAAC8F,QAAQ,CAAC;QACZ6K,2BAA2B,EAAEqG,UAAU;QACvCnP,SAAS,EAAE0O,IAAI;QACf7F,cAAc,EAAE;MAClB,CAAC,CAAC;IACJ;IACA,IAAI,CAAC5K,QAAQ,CAAC;MACZ6K,2BAA2B,EAAEqG,UAAU;MACvCtG,cAAc,EAAE;IAClB,CAAC,CAAC;EACJ;EAEAlF,oCAAoCA,CAACyJ,KAAsB,EAAQ;IACjE,IAAI,CAACnP,QAAQ,CAAC;MAAE8K,uBAAuB,EAAEqE,KAAK;MAAEvE,cAAc,EAAE;IAAG,CAAC,CAAC;EACvE;EAWAhF,wBAAwBA,CAAC0e,WAAqB,EAAQ;IACpD,IAAM;MAAEviB;IAAU,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAChC,IAAI,CAAC4B,OAAO,CAACF,SAAS,EAAEuiB,WAAW,CAAC;EACtC;EAEA2E,MAAMA,CAAA,EAAwB;IAAA,IAAAC,sBAAA;MAAAC,sBAAA;MAAAC,MAAA;MAAAC,YAAA;MAAAC,qBAAA;MAAAC,YAAA;IAC5B,IAAM;MACJroB,QAAQ;MACR7C,aAAa;MACbmrB,iBAAiB;MACjBtrB,iBAAiB;MACjBurB,eAAe;MACfC,cAAc;MACdtxB,KAAK;MACLqE,IAAI;MACJktB,uBAAuB;MACvBzqB,kBAAkB;MAClBiN,gBAAgB;MAChByd,wBAAwB;MACxBhwB,cAAc;MACdomB;IACF,CAAC,GAAG,IAAI,CAACtoB,KAAK;IACd,IAAM;MACJ6D,gBAAgB;MAChB6N,OAAO;MACP1P,gBAAgB;MAChBuO,oBAAoB;MACpB7J,WAAW;MACX2L,OAAO;MACPN,aAAa;MACbN,sBAAsB;MACtBO,WAAW;MACXvL,oBAAoB;MACpBwL,mBAAmB;MACnBhB,WAAW;MACXC,aAAa;MACbgB,kBAAkB;MAClBL,mBAAmB;MACnBD,mBAAmB;MACnBrL,iBAAiB;MACjBnH,YAAY;MACZH,eAAe;MACf0R,UAAU;MACV/J,gBAAgB;MAChB+K,cAAc;MACdf,gBAAgB;MAChBrR,YAAY;MACZC,qBAAqB;MAErBiI,YAAY;MACZgJ,SAAS;MAET5P,SAAS;MACTwP,kBAAkB;MAClB9H,wBAAwB;MACxB4J,0BAA0B;MAE1B1S,KAAK;MACLJ,WAAW;MACXF,aAAa;MAEb2S,cAAc;MACdM,kBAAkB;MAClB1J,mBAAmB;MACnBF,qBAAqB;MACrBC,0BAA0B;MAE1BxG,aAAa;MACbiG,WAAW;MACXC,qBAAqB;MACrBC,mBAAmB;MAEnBlJ,mBAAmB;MACnBqT,mBAAmB;MACnBjT,YAAY;MACZkT,WAAW;MACXE,kBAAkB;MAClBC,gBAAgB;MAChBF,eAAe;MACfxC,iBAAiB;MACjBP,cAAc;MACdkD,YAAY;MACZ7B,aAAa;MACbC,kBAAkB;MAClB6B,iBAAiB;MACjBC,YAAY;MACZhK,0BAA0B;MAC1Be,sBAAsB;MACtBI,qBAAqB;MACrB8I,WAAW;MACXC,OAAO;MACPC,YAAY;MACZC,cAAc;MACdC,2BAA2B;MAC3B9I,SAAS;MACT+I;IACF,CAAC,GAAG,IAAI,CAACzK,KAAK;IACd,IAAI,CAAC0J,OAAO,EAAE;MACZ,OAAO,IAAI;IACb;IAEA,IAAMtL,KAAK,GAAG,IAAI,CAACsR,QAAQ,CAAC,CAAC;IAE7B,IAAM1T,MAAM,GAAG,IAAI,CAACwtB,eAAe,CACjCxrB,aAAa,EACbvH,YAAY,EACZH,eAAe,EACf2H,gBAAgB,EAChBrH,YACF,CAAC;IAED,IAAMuE,gBAAgB,GAAGD,gBAAgB,CAAC2b,mBAAmB,CAAC,CAAC;IAC/D,IAAM4S,aAAa,GAAG,IAAI,CAACC,sBAAsB,CAC/C9rB,iBAAiB,EACjBvE,gBAAgB,EAChBwE,iBAAiB,EACjBC,oBAAoB,EACpBrH,YAAY,EACZH,eAAe,EACfQ,KAAK,EACLJ,WAAW,EACXC,YAAY,EACZoH,WACF,CAAC;IACD,IAAMqZ,GAAG,GAAGrO,OAAO,GAAGA,OAAO,CAACqO,GAAG,GAAG,CAAC;IACrC,IAAM+P,MAAM,GAAGpe,OAAO,GAAGA,OAAO,CAACqY,cAAc,GAAG,CAAC;IACnD,IAAIxI,IAAI,GAAG,IAAI;IACf,IAAIwO,KAAK,GAAG,IAAI;IAChB,IAAIkC,uBAAuB,EAAE;MAC3B1Q,IAAI,GAAG7P,OAAO,GAAGA,OAAO,CAAC6P,IAAI,GAAG,CAAC;MACjCwO,KAAK,GAAGre,OAAO,GAAGA,OAAO,CAACqe,KAAK,GAAG,CAAC;IACrC;IACA,IAAM/M,SAAS,GACbtR,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACie,KAAK,GAAG,CAAC,IAAIje,OAAO,CAAC0O,MAAM,GAAG,CAAC;IAC5D,IAAMkS,QAAQ,GAAG,EAAAd,sBAAA,GAAClyB,YAAY,aAAZA,YAAY,wBAAAmyB,sBAAA,GAAZnyB,YAAY,CAAE4E,OAAO,cAAAutB,sBAAA,uBAArBA,sBAAA,CAAuB9xB,MAAM,cAAA6xB,sBAAA,cAAAA,sBAAA,GAAI,CAAC,IAAI,CAAC;IAEzD,IAAIe,UAAU,GAAG,IAAI;IAErB,IAAMC,UAAU,GAAG9gB,OAAO,GACtBgE,IAAI,CAACC,GAAG,CACND,IAAI,CAACjV,GAAG,CAACX,QAAQ,CAAC2yB,WAAW,EAAE/c,IAAI,CAACgd,KAAK,CAAChhB,OAAO,CAACiO,QAAQ,GAAG,GAAG,CAAC,CAAC,EAClE7f,QAAQ,CAAC6yB,WACX,CAAC,GACD7yB,QAAQ,CAAC6yB,WAAW;IAExB,IAAI3wB,gBAAgB,IAAIyP,sBAAsB,IAAI,IAAI,IAAIC,OAAO,IAAI,IAAI,EAAE;MACzE,IAAM;QAAEkhB,KAAK;QAAEC,KAAK;QAAEpD,WAAW;QAAEC,eAAe;QAAEC;MAAM,CAAC,GAAGje,OAAO;MACrE,IAAMme,OAAO,GAAGJ,WAAW,CAAC9a,GAAG,CAAClD,sBAAsB,CAAC;MACvD,IAAMsS,WAAW,GAAG2L,eAAe,CAAC/a,GAAG,CAAClD,sBAAsB,CAAC;MAC/D,IAAIoe,OAAO,IAAI,IAAI,IAAI9L,WAAW,IAAI,IAAI,EAAE;QAAA,IAAA+O,qBAAA,EAAAC,sBAAA,EAAAC,YAAA;QAC1C,IAAMhD,CAAC,GAAG4C,KAAK,GAAG/C,OAAO;QACzB,IAAMI,CAAC,GAAG4C,KAAK,KAAAC,qBAAA,GAAI/rB,KAAK,CAACksB,eAAe,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;QAC9C,IAAMI,UAAU,GAAGnP,WAAW,GAAG,CAAC,CAAC,CAAC;QACpC,IAAMoP,WAAW,GAAG,EAAAJ,sBAAA,GAAChsB,KAAK,CAACksB,eAAe,cAAAF,sBAAA,cAAAA,sBAAA,GAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAMxpB,KAAK,GAAG;UACZwW,GAAG,EAAEkQ,CAAC;UACN1O,IAAI,EAAEyO,CAAC;UACPoD,QAAQ,EAAE1d,IAAI,CAACC,GAAG,CAACud,UAAU,EAAEvD,KAAK,GAAGK,CAAC,CAAC;UAAE;UAC3C5P,MAAM,EAAE+S;QACV,CAAC;QACD,IAAI1b,OAAK,GAAG,EAAE;QACd,IAAI4b,OAAO,GAAG,IAAI;QAClB,IAAMhc,WAAW,GAAG,IAAI,CAACC,cAAc,CAAC7F,sBAAsB,CAAC;QAC/DzX,aAAa,CAACqd,WAAW,CAAC;QAC1B,IAAMyC,WAAW,GAAG1a,YAAY,CAACuV,GAAG,CAAC0C,WAAW,CAAC;QACjD,IAAMic,cAAc,GAAGr0B,eAAe,CAAC0V,GAAG,CAAC0C,WAAW,CAAC;QACvD,IAAIyC,WAAW,IAAI,IAAI,EAAE;UACvBrC,OAAK,GAAGqC,WAAW,CAACf,IAAI;UACxBsa,OAAO,GAAGvZ,WAAW,CAACnV,MAAM,IAAI,IAAI;QACtC;QACA,IAAM4uB,aAAa,GACjBn0B,YAAY,CAACM,IAAI,KAAK,CAAC,IAAIT,eAAe,CAACS,IAAI,KAAK,CAAC;QACvD6yB,UAAU,gBACRv0B,IAAA,CAAChD,gBAAgB;UACfyO,GAAG,EAAE,IAAI,CAACsF,cAAe;UACzBxF,KAAK,EAAEA,KAAM;UACbY,SAAS,EAAE1S,UAAU,CAAC;YACpBoY,KAAK,EAAE,CAACwjB,OAAO;YACfG,MAAM,EAAE/b,OAAK,KAAK,EAAE,IAAI6b,cAAc,IAAI,IAAI;YAC9C,sBAAsB,EAAEC;UAC1B,CAAC,CAAE;UACHE,mBAAmB,EAAEH,cAAc,IAAI,IAAK;UAC5CI,0BAA0B,EAAEA,CAAA,KAAM;YAChC,IAAI,CAACprB,QAAQ,CAAC;cAAEsJ,mBAAmB,EAAEH;YAAuB,CAAC,CAAC;UAChE,CAAE;UAEFhO,QAAQ,EAAE,IAAI,CAAC2H,qBAAsB;UACrClK,MAAM,EAAE,IAAI,CAACmK,mBAAoB;UACjCsoB,KAAK,EAAE,IAAI,CAACroB,kBAAmB;UAC/BsoB,aAAa,GAAAZ,YAAA,GAAE,IAAI,CAAC7kB,IAAI,cAAA6kB,YAAA,uBAATA,YAAA,CAAWa,iBAAkB;UAC5CrB,UAAU,EAAEA,UAAW;UACvB/a,KAAK,EAAEA;QAAM,GANRhG,sBAON,CACF;MACH;IACF;IAEA,IAAIqiB,cAAc,GAAG,IAAI;IACzB,IAAI9hB,WAAW,IAAI,IAAI,EAAE;MACvB,IAAM+hB,aAAa,gBACjB71B,KAAA;QAAKiM,SAAS,EAAC,0BAA0B;QAAAX,QAAA,gBACvCxL,IAAA;UACEmM,SAAS,EAAE1S,UAAU,CAAC,8BAA8B,EAAE;YACpDu8B,IAAI,EAAE/hB;UACR,CAAC,CAAE;UAAAzI,QAAA,EAEFwI;QAAW,CACT,CAAC,eACN9T,KAAA;UACEsE,IAAI,EAAC,QAAQ;UACbyxB,OAAO,EAAE,IAAI,CAAC1oB,YAAa;UAC3BpB,SAAS,EAAE1S,UAAU,CAAC,sBAAsB,EAAE;YAC5Cu8B,IAAI,EAAE/hB;UACR,CAAC,CAAE;UAAAzI,QAAA,gBAEHxL,IAAA,CAAClG,eAAe;YAAC6K,IAAI,EAAE1J,OAAQ;YAACi7B,SAAS,EAAC;UAAQ,CAAE,CAAC,UAEvD;QAAA,CAAQ,CAAC;MAAA,CACN,CACN;MACD,IAAMrB,MAAK,GAAGnhB,OAAO,GAAGA,OAAO,CAACmhB,KAAK,GAAG,CAAC;MACzCiB,cAAc,gBACZ91B,IAAA;QAAKmM,SAAS,EAAC,mBAAmB;QAACZ,KAAK,EAAE;UAAEwW,GAAG,EAAE8S;QAAM,CAAE;QAAArpB,QAAA,EACtDuqB;MAAa,CACX,CACN;IACH;IAEA,IAAII,aAA8B,GAAG,IAAI;IACzC,IAAIjiB,kBAAkB,IAAI,IAAI,IAAIR,OAAO,EAAE;MAAA,IAAA0iB,cAAA;MACzCD,aAAa,GAAG,IAAI,CAAC1D,gBAAgB,CAACve,kBAAkB,EAAER,OAAO,EAAEhR,KAAK,CAAC;MACzE;MACA,CAAA0zB,cAAA,OAAI,CAAC7J,OAAO,cAAA6J,cAAA,uBAAZA,cAAA,CAAcpX,MAAM,CAAC,CAAC;IACxB;IAEA,IAAMqX,SAAS,GAAG,EAAE;IACpB,IAAI3iB,OAAO,IAAI1P,gBAAgB,EAAE;MAC/B,IAAM;QAAE4wB,KAAK,EAALA,MAAK;QAAEC,KAAK,EAALA,OAAK;QAAEyB,cAAc;QAAE7E,WAAW,EAAXA,YAAW;QAAEC,eAAe,EAAfA;MAAgB,CAAC,GAClEhe,OAAO;MACT,IAAM;QAAEuhB;MAAgB,CAAC,GAAGlsB,KAAK;MAAC,IAAAwtB,MAAA,YAAAA,OAAA,EAEiB;QACjD,IAAMtd,WAAW,GAAGqd,cAAc,CAACxsB,CAAC,CAAC;QAErC,IAAM+nB,OAAO,GAAGJ,YAAW,CAAC9a,GAAG,CAACsC,WAAW,CAAC;QAC5C,IAAM8M,WAAW,GAAG2L,gBAAe,CAAC/a,GAAG,CAACsC,WAAW,CAAC;QACpD,IAAMI,WAAW,GAAGqa,MAAI,CAACpa,cAAc,CAACL,WAAW,CAAC;QACpD,IAAII,WAAW,IAAI,IAAI,EAAE;UACvB,IAAMiK,YAAY,GAAG5gB,KAAK,CAAC4gB,YAAY,CAACjK,WAAW,CAAC;UACpD,IACEiK,YAAY,IACZuO,OAAO,IAAI,IAAI,IACf9L,WAAW,IAAI,IAAI,IACnBA,WAAW,GAAG,CAAC,EACf;YACA,IAAMiM,EAAC,GAAG4C,MAAK,GAAG/C,OAAO,GAAG9L,WAAW,GAAG,EAAE;YAC5C,IAAMkM,EAAC,GAAG4C,OAAK,IAAII,eAAe,aAAfA,eAAe,cAAfA,eAAe,GAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAM1pB,MAAoB,GAAG;cAC3BP,QAAQ,EAAE,UAAU;cACpB+W,GAAG,EAAEkQ,EAAC;cACN1O,IAAI,EAAEyO;YACR,CAAC;YACD,IAAMsD,eAAc,GAAGr0B,eAAe,CAAC0V,GAAG,CAAC0C,WAAW,CAAC;YACvD,IAAMmd,WAAW,GAAGlB,eAAc,IAAI,IAAI;YAC1C,IAAMmB,eAAe,GACnBxd,WAAW,KAAKpF,mBAAmB,IACnCoF,WAAW,KAAKxF,sBAAsB,IACtC+iB,WAAW;YACb,IAAME,OAAO,gBACX12B,IAAA;cACEmM,SAAS,EAAE1S,UAAU,CAAC,kCAAkC,EAAE;gBACxDk9B,MAAM,EAAE,CAACF;cACX,CAAC,CAAE;cAEHlrB,KAAK,EAAEA,MAAM;cAAAC,QAAA,EAEZirB,eAAe,iBACdz2B,IAAA,CAAC1F,MAAM;gBACLs8B,IAAI,EAAC,OAAO;gBACZzqB,SAAS,EAAE1S,UAAU,CACnB,sCAAsC,EACtC;kBACE,YAAY,EAAE+8B;gBAChB,CACF,CAAE;gBACFP,OAAO,EAAEA,CAAA,KAAM;kBACbvC,MAAI,CAACppB,QAAQ,CAAC;oBAAEsJ,mBAAmB,EAAEqF;kBAAY,CAAC,CAAC;gBACrD,CAAE;gBACF2c,aAAa,EAAEpK,KAAK,IAAI;kBAAA,IAAAqL,WAAA;kBACtB,CAAAA,WAAA,GAAAnD,MAAI,CAACvjB,IAAI,cAAA0mB,WAAA,uBAATA,WAAA,CAAWhB,iBAAiB,CAACrK,KAAK,CAAC;gBACrC,CAAE;gBACFsL,YAAY,EAAEA,CAAA,KAAM;kBAClBpD,MAAI,CAACppB,QAAQ,CAAC;oBAAEuJ,mBAAmB,EAAEoF;kBAAY,CAAC,CAAC;gBACrD,CAAE;gBACF8d,YAAY,EAAEA,CAAA,KAAM;kBAClBrD,MAAI,CAACppB,QAAQ,CAAC;oBAAEuJ,mBAAmB,EAAE;kBAAK,CAAC,CAAC;gBAC9C,CAAE;gBAAArI,QAAA,eAEFtL,KAAA;kBAAKiM,SAAS,EAAC,WAAW;kBAAAX,QAAA,gBACxBxL,IAAA,CAAClG,eAAe;oBACd6K,IAAI,EAAE7J,cAAe;oBACrBqR,SAAS,EAAC;kBAAc,CACzB,CAAC,eACFnM,IAAA,CAAClG,eAAe;oBACd6K,IAAI,EAAEvJ,QAAS;oBACf+Q,SAAS,EAAC;kBAAc,CACzB,CAAC;gBAAA,CACC;cAAC,CACA;YACT,GApCI8M,WAqCF,CACN;YACDod,SAAS,CAAC9xB,IAAI,CAACmyB,OAAO,CAAC;UACzB;QACF;MACF,CAAC;MA1ED,KAAK,IAAI5sB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwsB,cAAc,CAAC30B,MAAM,EAAEmI,CAAC,IAAI,CAAC;QAAAysB,MAAA;MAAA;IA2EnD;IACA,IAAMS,mBAAmB,GAAG,EAAE;IAC9B,IAAItjB,OAAO,EAAE;MACX,IAAM;QACJkhB,KAAK,EAALA,OAAK;QACL0B,cAAc,EAAdA,eAAc;QACd7E,WAAW,EAAXA,aAAW;QACXC,eAAe,EAAfA,iBAAe;QACfF;MACF,CAAC,GAAG9d,OAAO;MAAC,IAAAujB,MAAA,YAAAA,OAAA,EACuC;QACjD,IAAMhe,WAAW,GAAGqd,eAAc,CAACxsB,GAAC,CAAC;QACrC,IAAM+nB,OAAO,GAAGJ,aAAW,CAAC9a,GAAG,CAACsC,WAAW,CAAC;QAC5C,IAAM8M,WAAW,GAAG2L,iBAAe,CAAC/a,GAAG,CAACsC,WAAW,CAAC;QACpD,IAAI4Y,OAAO,IAAI,IAAI,IAAI9L,WAAW,IAAI,IAAI,IAAIA,WAAW,GAAG,CAAC,EAAE;UAC7D,IAAMmR,aAAa,GAAGtC,OAAK,GAAG/C,OAAO;UACrC,IAAMsF,UAAU,GAAGvC,OAAK,GAAG/C,OAAO,GAAG9L,WAAW,GAAG,EAAE;UACrD,IAAMxa,OAAoB,GAAGvH,gBAAgB,GACzC;YACEgH,QAAQ,EAAE,UAAU;YACpB+W,GAAG,EAAEyP,kBAAkB;YACvBjO,IAAI,EAAE4T,UAAU;YAChBxF,KAAK,EAAE,EAAE;YACTvP,MAAM,EAAErZ,KAAK,CAACksB;UAChB,CAAC,GACD;YACEjqB,QAAQ,EAAE,UAAU;YACpB+W,GAAG,EAAE,CAAC;YACNwB,IAAI,EAAE2T,aAAa;YACnBvF,KAAK,EAAE5L,WAAW;YAClB3D,MAAM,EAAEoP;UACV,CAAC;UACL,IAAMnY,YAAW,GAAGqa,MAAI,CAACpa,cAAc,CAACL,WAAW,CAAC;UACpD,IAAII,YAAW,IAAI,IAAI,EAAE;YACvB,IAAM/W,QAAM,GAAGI,KAAK,CAACwD,OAAO,CAACmT,YAAW,CAAC;YACzC,IAAI/W,QAAM,IAAI,IAAI,EAAE;cAClB;cACAnC,GAAG,CAACoqB,IAAI,mCAAA3O,MAAA,CAC4BvC,YAAW,kCAAAuC,MAAA,CAA+BlZ,KAAK,CAACwD,OAAO,CAACvE,MAAM,CAClG,CAAC;cACD;cAAA;YAEF;YACA,IAAM2zB,gBAAc,GAAGr0B,eAAe,CAAC0V,GAAG,CAAC0C,YAAW,CAAC;YACvD,IAAM;cAAEjW,OAAO,EAAET;YAAsB,CAAC,GAAG2yB,gBAAc,IAAI,CAAC,CAAC;YAC/D,IAAMzV,IAAI,GAAG9jB,UAAU,CAAC+tB,gBAAgB,CAACpnB,KAAK,CAACmd,IAAI,EAAEvd,QAAM,CAACyE,IAAI,CAAC;YACjE,IAAMnE,aAAa,GAAGid,IAAI,GAAGA,IAAI,CAAC2G,SAAS,GAAG,IAAI;YAClD,IAAMkQ,OAAO,gBACX12B,IAAA;cAEEmM,SAAS,EAAC,gCAAgC;cAC1CZ,KAAK,EAAEA,OAAM;cAAAC,QAAA,eAEbxL,IAAA,CAAC7F,MAAM;gBACLgS,SAAS,EAAC,6BAA6B;gBACvCirB,SAAS,EAAE1D,MAAI,CAAC2D,4BAA4B,CAACpe,WAAW,CAAE;gBAC1Dka,QAAQ,EAAEA,CAAA,KAAM;kBACdO,MAAI,CAAChnB,wBAAwB,CAACuM,WAAW,CAAC;gBAC5C,CAAE;gBACFqe,OAAO,EAAE1jB,mBAAmB,KAAKqF,WAAY;gBAC7Cga,WAAW;gBACXsE,WAAW;gBACXn0B,OAAO,EAAE;kBACPo0B,aAAa,EAAE;gBACjB,CAAE;gBAAAhsB,QAAA,EAEDkoB,MAAI,CAAC+D,kCAAkC,CACtC/0B,KAAK,EACLJ,QAAM,EACNK,qBAAqB,EACrBC,aAAa,EACbC,SACF;cAAC,CACK;YAAC,GAxBJoW,WAyBF,CACN;YACD+d,mBAAmB,CAACzyB,IAAI,CAACmyB,OAAO,CAAC;UACnC;QACF;MACF,CAAC;MArED,KAAK,IAAI5sB,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGwsB,eAAc,CAAC30B,MAAM,EAAEmI,GAAC,IAAI,CAAC;QAAA,IAAA4tB,IAAA,GAAAT,MAAA;QAAA,IAAAS,IAAA,iBA+BzC;MAAS;IAuCnB;IAEA,IAAMpzB,WAAW,GAAG,IAAI,CAACqzB,oBAAoB,CAC3CrN,aAAa,KAAK5iB,SAAS,IAAIhF,KAAK,CAACY,uBAAuB,EAC5DZ,KAAK,CAACa,wBAAwB,EAC9Bb,KAAK,CAACc,wBAAwB,EAC9Bd,KAAK,CAACe,iBAAiB,EACvBf,KAAK,CAACgB,iBAAiB,IAAI4wB,QAAQ,EACnC5xB,KAAK,CAACiB,yBAAyB,EAC/BjB,KAAK,CAACkB,iBAAiB,EACvB,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,mBAAmB,EACxBC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACd,IAAI,CAAC+iB,sBAAsB,CAAC,CAAC,EAC7BlS,WAAW,EACX0B,gBAAgB,CAAC/U,IAAI,GAAG,CAC1B,CAAC;IAED,IAAM4R,aAAa,GAAG,IAAI,CAACskB,sBAAsB,CAC/C/xB,gBAAgB,EAChBC,gBACF,CAAC;IAED,IAAM+xB,gBAAgB,GAAGrjB,WAAW,CAACtN,GAAG,CAAC4Q,MAAM,IAAI;MACjD,QAAQA,MAAM,CAACtT,IAAI;QACjB,KAAK7F,UAAU,CAAC8F,aAAa;UAC3B,oBACEzE,IAAA,CAACvB,YAAY;YACXiE,KAAK,EAAEA,KAAM;YACb+C,QAAQ,EAAE,IAAI,CAACwH,iBAAkB;YACjC6qB,QAAQ,EAAE,IAAI,CAAC5qB;UAAkB,GAC5BvO,UAAU,CAAC8F,aACjB,CAAC;QAEN,KAAK9F,UAAU,CAACiG,2BAA2B;UACzC,oBACE5E,IAAA,CAACjB,yBAAyB;YACxB2D,KAAK,EAAEA,KAAM;YACb+G,YAAY,EAAEA,YAAa;YAC3B6J,aAAa,EAAEA,aAAc;YAC7BN,kBAAkB,EAAEA,kBAAmB;YACvC+kB,yBAAyB,EAAE,IAAI,CAACvoB,6BAA8B;YAC9DwoB,OAAO,EAAE,IAAI,CAACvoB,2BAA4B;YAC1CwoB,qBAAqB,EAAE,IAAI,CAACnqB,yBAA0B;YACtDoqB,0BAA0B,EAAE,IAAI,CAACnqB;UAA0B,GACtDpP,UAAU,CAACiG,2BACjB,CAAC;QAEN,KAAKjG,UAAU,CAACkG,sBAAsB;UACpC,oBACE7E,IAAA,CAACP,yBAAyB;YACxB4H,KAAK,EAAEgL,kBAAmB;YAC1B5M,QAAQ,EAAE,IAAI,CAAC4I,8BAA+B;YAC9C8pB,QAAQ,EAAE,IAAI,CAAChqB,6BAA8B;YAC7CiqB,QAAQ,EAAE,IAAI,CAAChqB;UAA4B,CAC5C,CAAC;QAEN,KAAKzP,UAAU,CAAC8tB,2BAA2B;UACzCzwB,aAAa,CAAC0G,KAAK,CAACwD,OAAO,CAAC;UAC5BlK,aAAa,CAAC,IAAI,CAACq8B,mCAAmC,CAAC;UACvD,oBACEr4B,IAAA,CAACN,uBAAuB;YACtB0H,EAAE,EAAE1E,KAAK,CAAC0E,EAAG;YACblB,OAAO,EAAExD,KAAK,CAACwD,OAAQ;YACvBoyB,IAAI,EAAE/tB,wBAAyB;YAC/BguB,QAAQ,EAAE,IAAI,CAACF,mCAAoC;YACnDG,MAAM,EAAE,IAAI,CAAClqB,iCAAkC;YAC/CmqB,QAAQ,EAAE,IAAI,CAAClqB;UAAoC,CACpD,CAAC;QAEN,KAAK5P,UAAU,CAACmG,qBAAqB;UACnC,oBACE9E,IAAA,CAACtB,mBAAmB;YAClBgE,KAAK,EAAEA,KAAM;YACbvB,aAAa,EAAEA,aAAc;YAC7Bq3B,MAAM,EAAE,IAAI,CAAChqB,yBAA0B;YACvCiqB,QAAQ,EAAE,IAAI,CAAC9qB;UAAe,GACzBhP,UAAU,CAACmG,qBACjB,CAAC;QAEN,KAAKnG,UAAU,CAACoG,WAAW;UACzB,oBACE/E,IAAA,CAACpB,UAAU;YACT8D,KAAK,EAAEA,KAAM;YACb+C,QAAQ,EAAE,IAAI,CAACkK,kBAAmB;YAClC9H,MAAM,EAAEvG;UAAa,GAChB3C,UAAU,CAACoG,WACjB,CAAC;QAEN,KAAKpG,UAAU,CAACqG,YAAY;UAC1B,oBACEhF,IAAA,CAAC1B,YAAY;YACX6X,QAAQ,EAAEjV,mBAAoB;YAC9BozB,QAAQ,EAAEA,QAAS;YACnB7uB,QAAQ,EAAE,IAAI,CAACmH,wBAAyB;YACxC8rB,MAAM,EAAE,IAAI,CAAC7rB;UAAsB,CACpC,CAAC;QAEN,KAAKlO,UAAU,CAACoZ,gBAAgB;UAC9B,OACExD,mBAAmB,iBACjBvU,IAAA,CAACzB,eAAe;YACdgvB,WAAW,EAAEhZ,mBAAoB;YACjCrO,OAAO,EAAExD,KAAK,CAACkF,eAAgB;YAC/BnC,QAAQ,EAAE,IAAI,CAACkH;UAAwB,CACxC,CACF;QAEL,KAAKhO,UAAU,CAACuG,cAAc;UAC5B,oBACElF,IAAA,CAACnB,gBAAgB;YACf6D,KAAK,EAAEA,KAAM;YACbqE,IAAI,EAAEA,IAAK;YACXjB,gBAAgB,EAAEA,gBAAiB;YACnC2D,YAAY,EAAEA,YAAa;YAC3BkvB,aAAa,EAAEvkB,kBAAmB;YAClC1J,mBAAmB,EAAEA,mBAAoB;YACzCF,qBAAqB,EAAEA,qBAAsB;YAC7CC,0BAA0B,EACxBA,0BAA0B,aAA1BA,0BAA0B,cAA1BA,0BAA0B,GAAI/C,SAC/B;YACDkxB,UAAU,EAAE,IAAI,CAAC5pB,mBAAoB;YACrC6pB,eAAe,EAAE,IAAI,CAAC5pB,wBAAyB;YAC/CwpB,QAAQ,EAAE,IAAI,CAACvpB,yBAA0B;YACzC4E,cAAc,EAAEA;UAAe,GAC1BnV,UAAU,CAACuG,cACjB,CAAC;QAEN,KAAKvG,UAAU,CAACsG,eAAe;UAC7B,oBACEjF,IAAA,CAACX,qBAAqB;YACpBqD,KAAK,EAAEA,KAAM;YACblB,qBAAqB,EAAEA,qBAAsB;YAC7CiE,QAAQ,EAAE,IAAI,CAACiJ;UAA4B,CAC5C,CAAC;QAEN,KAAK/P,UAAU,CAACwG,iBAAiB;UAC/B,oBACEnF,IAAA,CAACT,oBAAoB;YACnBu5B,KAAK,EAAEriB,gBAAiB;YACxBhR,QAAQ,EAAEyuB;UAAyB,CACpC,CAAC;QAGN;UACE,MAAM5L,KAAK,2BAAA1M,MAAA,CAA2B9D,MAAM,CAACtT,IAAI,CAAE,CAAC;MACxD;IACF,CAAC,CAAC;IAEF,oBACEtE,KAAA;MAAKiM,SAAS,EAAC,WAAW;MAAC4sB,IAAI,EAAC,cAAc;MAAAvtB,QAAA,gBAC5CtL,KAAA;QAAKiM,SAAS,EAAC,kBAAkB;QAAAX,QAAA,GAC9BA,QAAQ,IAAI,IAAI,iBAAIxL,IAAA;UAAKmM,SAAS,EAAC,eAAe;UAAAX,QAAA,EAAEA;QAAQ,CAAM,CAAC,eACpExL,IAAA,CAACtG,aAAa;UACZs/B,EAAE,EAAEzmB,oBAAqB;UACzBygB,OAAO,EAAE54B,WAAW,CAAC6+B,gBAAiB;UACtCx/B,UAAU,EAAC,0BAA0B;UACrCy/B,OAAO,EAAE,IAAI,CAACnsB,oBAAqB;UACnCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;UACnCmsB,MAAM,EAAE,IAAI,CAACpsB,oBAAqB;UAClComB,QAAQ,EAAE,IAAI,CAACnmB,kBAAmB;UAClCosB,YAAY;UACZC,aAAa;UAAA7tB,QAAA,eAEbxL,IAAA;YAAKmM,SAAS,EAAC,0EAA0E;YAAAX,QAAA,EACtFmI,cAAc,IACbf,gBAAgB,CAACjR,MAAM,IACvBgR,UAAU,CAAChR,MAAM,iBACf3B,IAAA,CAACZ,yBAAyB;cACxBgI,EAAE,EAAE1E,KAAK,CAAC0E,EAAG;cACbkyB,KAAK,EAAE3lB,cAAe;cACtB4lB,kBAAkB,EAAEA,CAClB9f,KAAc,EACdjV,IAAY,EACZg1B,UAAkB,KACf92B,KAAK,CAACke,aAAa,CAACnH,KAAK,EAAEjV,IAAI,EAAEg1B,UAAU,CAAE;cAClDtzB,OAAO,EAAE0M,gBAAiB;cAC1BD,UAAU,EAAEA,UAAW;cACvBlN,QAAQ,EAAE,IAAI,CAAC4J,qBAAsB;cACrCoqB,UAAU,EAAE,IAAI,CAACnqB,uBAAwB;cACzCpM,MAAM,EAAE,IAAI,CAACqM;YAAoB,CAClC;UACF,CACA;QAAC,CACO,CAAC,eAChBvP,IAAA,CAACtG,aAAa;UACZs/B,EAAE,EAAE/0B,aAAc;UAClB+uB,OAAO,EAAE54B,WAAW,CAAC6+B,gBAAiB;UACtCx/B,UAAU,EAAC,0BAA0B;UACrCy/B,OAAO,EAAE,IAAI,CAACnsB,oBAAqB;UACnCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;UACnCmsB,MAAM,EAAE,IAAI,CAACpsB,oBAAqB;UAClComB,QAAQ,EAAE,IAAI,CAACnmB,kBAAmB;UAClCosB,YAAY;UACZC,aAAa;UAAA7tB,QAAA,eAEbxL,IAAA;YAAKmM,SAAS,EAAC,eAAe;YAAAX,QAAA,eAC5BxL,IAAA,CAACd,iBAAiB;cAChBua,KAAK,EAAEvP,WAAY;cACnBwvB,eAAe,EAAEvvB,qBAAsB;cACvCwvB,eAAe,EAAEvvB,mBAAoB;cACrC3E,QAAQ,EAAE,IAAI,CAACiK,uBAAwB;cACvCxJ,OAAO,EAAExD,KAAK,CAACwD,OAAQ;cACvBuF,GAAG,EAAE,IAAI,CAACmF;YAAe,CAC1B;UAAC,CACC;QAAC,CACO,CAAC,eAChB1Q,KAAA,CAAC1F,IAAI;UACHiR,GAAG,EAAE0E,IAAI,IAAI;YACX,IAAI,CAACA,IAAI,GAAGA,IAAI;UAClB,CAAE;UACFypB,cAAc,EAAE,CAACj/B,mBAAmB,CAAC+H,KAAK,CAAC,IAAI,CAACA,KAAK,CAACsG,UAAW;UACjE+qB,eAAe,EAAEA,eAAgB;UACjCC,cAAc,EAAEA,cAAe;UAC/BnuB,gBAAgB,EAAEA,gBAAiB;UACnCnD,KAAK,EAAEA,KAAM;UACbuQ,WAAW,EAAEA,WAAY;UACzBC,aAAa,EAAEA,aAAc;UAC7BzJ,YAAY,EAAEA,YAAa;UAC3BgJ,SAAS,EAAEA,SAAU;UACrBkT,OAAO,EAAE,IAAI,CAACxY,eAAgB;UAC9B0sB,aAAa,EAAE,IAAI,CAAC5rB,iBAAkB;UACtCie,kBAAkB,EAAE,IAAI,CAACre,sBAAuB;UAChDoqB,qBAAqB,EAAE,IAAI,CAACnqB,yBAA0B;UACtD4C,QAAQ,EAAE,IAAI,CAACA,QAAS;UACxB0jB,aAAa,EAAEA,aAAc;UAC7BrrB,KAAK,EAAEA,KAAM;UAAAyC,QAAA,gBAEbxL,IAAA,CAACL,yBAAyB;YACxBm6B,MAAM,EAAEjlB,iBAAkB;YAC1BkG,IAAI,EAAEjG,YAAa;YACnBilB,OAAO,EAAE,IAAI,CAACnqB;UAAoB,CACnC,CAAC,EACDoV,SAAS,iBACRhlB,IAAA,CAAC/B,oBAAoB;YACnByE,KAAK,EAAEA,KAAM;YACbyX,YAAY,EAAEzX,KAAK,CAACwD,OAAQ;YAC5B6b,GAAG,EAAEA,GAAI;YACT+P,MAAM,EAAEA,MAAO;YACfvO,IAAI,EAAEA,IAAK;YACXwO,KAAK,EAAEA,KAAM;YACbprB,MAAM,EAAEA,MAAO;YACf9D,SAAS,EAAEA,SAAU;YACrBpB,KAAK,EAAEA,KAAM;YACbJ,WAAW,EAAEA,WAAY;YACzBoI,YAAY,EAAEA,YAAa;YAC3BtI,aAAa,EAAEA,aAAc;YAC7BmS,aAAa,EAAEA,aAAc;YAC7B9J,kBAAkB,EAAE,IAAI,CAACwwB,qBAAqB,CAC5CxwB,kBAAkB,EAClB9G,KAAK,CAACwD,OAAO,EACbuD,YAAY,EACZ/G,KAAK,CAACgH,uBAAuB,EAC7BhH,KAAK,CAACiH,wBAAwB,GAAAgqB,YAAA,GAC9B,IAAI,CAACxjB,IAAI,cAAAwjB,YAAA,wBAAAC,qBAAA,GAATD,YAAA,CAAWhpB,KAAK,CAACsvB,cAAc,cAAArG,qBAAA,uBAA/BA,qBAAA,CAAiCsG,KACnC,CAAE;YACFC,aAAa,EAAE,IAAI,CAACC,6BAA6B,CAC/C13B,KAAK,CAAC0E,EAAE,EACR1E,KAAK,CAACwD,OAAO,EACbmM,kBAAkB,EAClB9H,wBAAwB;YACxB;YACA,EAAAspB,YAAA,GAAArf,WAAW,CAACA,WAAW,CAAC7S,MAAM,GAAG,CAAC,CAAC,cAAAkyB,YAAA,uBAAnCA,YAAA,CAAqCrvB,IAAI,MACvC7F,UAAU,CAAC8tB,2BAA2B,GACpCtY,0BAA0B,aAA1BA,0BAA0B,cAA1BA,0BAA0B,GAAIzM,SAAS,GACvCA,SACN,CAAE;YACFpG,YAAY,EAAE,IAAI,CAACwG,oBAAoB,CACrCpF,KAAK,CAACkF,eAAe,EACrBtG,YAAY,EACZJ,mBACF,CAAE;YACFm5B,YAAY,EAAE,IAAI,CAACC,oBAAoB,CACrC53B,KAAK,CAACwD,OAAO,EACb5E,YAAY,EACZJ,mBACF,CAAE;YACFM,qBAAqB,EAAEA,qBAAsB;YAC7CiT,eAAe,EAAEA,eAAgB;YACjC/C,cAAc,EAAEA,cAAe;YAC/BqB,aAAa,EAAEA,aAAc;YAC7BC,kBAAkB,EAAEA;UAAmB,CACxC,CACF,EACA,CAACtK,WAAW,iBACX1I,IAAA;YAAKmM,SAAS,EAAC,sBAAsB;YAAAX,QAAA,eACnCxL,IAAA,CAAC1F,MAAM;cACLs8B,IAAI,EAAC,OAAO;cACZ,gDAAAhb,MAAA,CAA8C7U,IAAI,CAAG;cACrDkvB,OAAO,EAAE,IAAI,CAACzoB,UAAW;cACzB7I,IAAI,eAAE3E,IAAA,CAAClG,eAAe;gBAAC6K,IAAI,EAAEtJ,MAAO;gBAAC66B,SAAS,EAAC;cAAM,CAAE,CAAE;cACzD3J,OAAO,EAAC;YAAe,CACxB;UAAC,CACC,CACN,EACAgI,UAAU,EACVuB,cAAc,EACdO,SAAS,EACTF,aAAa,EACba,mBAAmB,EACnBlsB,0BAA0B,IACzB,IAAI,CAACyvB,wBAAwB,CAACzvB,0BAA0B,CAAC,EAC1De,sBAAsB,IACrB,IAAI,CAAC2uB,oBAAoB,CAAC3uB,sBAAsB,CAAC,EAClDI,qBAAqB,IACpB,IAAI,CAACwuB,mBAAmB,CAACxuB,qBAAqB,CAAC;QAAA,CAC7C,CAAC,eACPjM,IAAA,CAACJ,OAAO;UACN6L,GAAG,EAAE,IAAI,CAACuF,UAAW;UACrBtO,KAAK,EAAEA,KAAM;UACb40B,OAAO,EAAEviB,WAAY;UACrBC,OAAO,EAAEA,OAAQ;UACjBC,YAAY,EAAEA,YAAa;UAC3BC,cAAc,EAAEA,cAAe;UAC/BwlB,eAAe,EAAE,IAAI,CAAC5rB,oCAAqC;UAC3D6rB,sBAAsB,EAAE,IAAI,CAAC7qB,qCAAsC;UACnEiqB,OAAO,EAAE,IAAI,CAACttB,mBAAoB;UAClCmuB,UAAU,EAAE,IAAI,CAAC7tB,oBAAqB;UACtCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;UACnC6tB,SAAS,EAAEA,CAAA,KAAM;YACf,IAAI,CAAC9tB,oBAAoB,CAAC,CAAC;YAC3B,IAAI,CAACoW,KAAK,CAAC,CAAC;UACd,CAAE;UACFgQ,QAAQ,EAAE,IAAI,CAACnmB,kBAAmB;UAClCmI,2BAA2B,EAAEA,2BAA4B;UACzD9I,SAAS,EAAEA,SAAU;UACrByuB,eAAe,EAAE1lB,uBAAwB;UACzC2lB,oCAAoC,EAClC,IAAI,CAAChrB,wCACN;UACDirB,gCAAgC,EAC9B,IAAI,CAAChrB,oCACN;UACDirB,kBAAkB,EAAE,IAAI,CAAChrB,sBAAuB;UAChDirB,iBAAiB,EAAE,IAAI,CAAChrB;QAAyB,CAClD,CAAC,eAEFlQ,IAAA,CAAClD,oBAAoB;UACnB+U,KAAK,EAAE8C,gBAAiB;UACxBwmB,QAAQ,EAAEzmB,kBAAkB,IAAI,IAAK;UACrC0mB,WAAW,aAAAxf,MAAA,CAAa,IAAI,CAAC5J,YAAY,CAAC1M,QAAQ,CAACC,cAAc,CAAC,CAAC,MAAI;UACvE81B,cAAc,cAAAzf,MAAA,CAAc,IAAI,CAACnK,aAAa,CAACnM,QAAQ,CAACC,cAAc,CAAC,CAAC,MAAI;UAC5E0M,iBAAiB,EAAEA,iBAAkB;UACrCP,cAAc,EAAEA,cAAe;UAC/BkpB,UAAU,EAAE,IAAI,CAAC7tB,oBAAqB;UACtCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;UACnC6tB,SAAS,EAAE,IAAI,CAAC9tB,oBAAqB;UACrComB,QAAQ,EAAE,IAAI,CAACnmB,kBAAmB;UAClCwrB,MAAM,EAAE,IAAI,CAAC5pB,0BAA2B;UACxC0sB,SAAS,EAAE,IAAI,CAACzsB;QAA4B,CAC7C,CAAC,eACF7O,IAAA,CAACjC,cAAc;UAAAyN,QAAA,EAAEoJ;QAAY,CAAiB,CAAC,eAC/C5U,IAAA,CAACjD,mBAAmB;UAClB2F,KAAK,EAAEA,KAAM;UACbqR,aAAa,EAAEA,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIrM,SAAU;UAC1CkzB,UAAU,EAAE,IAAI,CAAC7tB,oBAAqB;UACtCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;UACnC6tB,SAAS,EAAE,IAAI,CAAC9tB,oBAAqB;UACrComB,QAAQ,EAAE,IAAI,CAACnmB;QAAmB,CACnC,CAAC,eACFhN,IAAA,CAAClB,UAAU;UACTsI,EAAE,EAAE1E,KAAK,CAAC0E,EAAG;UACbqE,GAAG,EAAEkF,UAAU,IAAI;YACjB,IAAI,CAACA,UAAU,GAAGA,UAAU;UAC9B,CAAE;UACFmjB,iBAAiB,EAAEA,iBAAkB;UACrCyH,mBAAmB,EAAE,IAAI,CAACnsB,uBAAwB;UAClDosB,kBAAkB,EAAE,IAAI,CAACrsB,sBAAuB;UAChDssB,wBAAwB,EAAE,IAAI,CAACjjB,4BAA6B;UAC5DmgB,aAAa,EACXjuB,mBAAmB,KACnB7L,gBAAgB,CAAC+L,eAAe,CAACC,WAClC;UACDhI,SAAS,EAAEA;QAAU,CACtB,CAAC;MAAA,CACC,CAAC,eACN7C,IAAA,CAACtG,aAAa;QACZs/B,EAAE,EAAEtwB,WAAY;QAChBsqB,OAAO,EAAE54B,WAAW,CAACshC,eAAgB;QACrCjiC,UAAU,EAAC,YAAY;QACvBmhC,UAAU,EAAE,IAAI,CAAC7tB,oBAAqB;QACtCqqB,SAAS,EAAE,IAAI,CAACpqB,kBAAmB;QACnC6tB,SAAS,EAAE,IAAI,CAAC9tB,oBAAqB;QACrComB,QAAQ,EAAE,IAAI,CAACnmB,kBAAmB;QAClCosB,YAAY;QACZC,aAAa;QAAA7tB,QAAA,eAEbxL,IAAA;UAAKmM,SAAS,EAAC,eAAe;UAAAX,QAAA,eAC5BtL,KAAA,CAAClG,KAAK;YAAAwR,QAAA,gBACJxL,IAAA,CAAC9F,IAAI;cAACwK,KAAK,EAAC,eAAe;cAACq1B,OAAO,EAAE,IAAI,CAACtsB,eAAgB;cAAAjC,QAAA,eACxDxL,IAAA,CAAC/F,IAAI;gBACHm+B,QAAQ,EAAEtuB,CAAC,IAAI,IAAI,CAAC4D,gBAAgB,CAACpJ,WAAW,CAACwF,CAAC,CAAC,CAAE;gBACrDgvB,KAAK,EAAEx0B;cAAY,CACpB;YAAC,CACE,CAAC,EACNuzB,gBAAgB,CAAC3wB,GAAG,CAAC,CAAC4Q,MAAM,EAAEhO,CAAC,kBAC9B9J,IAAA,CAAC9F,IAAI;cACHwK,KAAK,EAAE8P,WAAW,CAAC1K,CAAC,CAAC,CAACpF,KAAM;cAC5Bi3B,MAAM,EAAE,IAAI,CAAChuB,cAAe;cAC5BosB,OAAO,EAAE,IAAI,CAACtsB,eAAgB;cAAAjC,QAAA,EAG7BsM;YAAM,GAFFtD,WAAW,CAAC1K,CAAC,CAAC,CAACtF,IAGhB,CACP,CAAC;UAAA,CACG;QAAC,CACL;MAAC,CACO,CAAC,eAChBxE,IAAA,CAACjG,cAAc;QAAC6hC,OAAO,EAAE,IAAI,CAACxpB;MAAe,CAAE,CAAC;IAAA,CAC7C,CAAC;EAEV;AACF;AAAC/P,eAAA,CA1vIYP,QAAQ,iBACEhC,oBAAoB;AAAAuC,eAAA,CAD9BP,QAAQ,iBAGE,GAAG;AAAAO,eAAA,CAHbP,QAAQ,iBAKE,GAAG;AAAAO,eAAA,CALbP,QAAQ,yBAOU,GAAG;AAAAO,eAAA,CAPrBP,QAAQ,kBASG;EACpB0J,QAAQ,EAAE,IAAI;EACdvK,eAAe,EAAE9E,SAAS;EAC1Bsa,gBAAgB,EAAEta,SAAS;EAC3BqN,kBAAkB,EAAEtN,WAAW;EAC/BmW,kBAAkB,EAAEnW,WAAW;EAC/BoW,qBAAqB,EAAEnW,SAAS;EAChC6H,gBAAgB,EAAE,KAAK;EACvBob,uBAAuB,EAAE,KAAK;EAC9B3V,YAAY,EAAEvN,WAAW;EACzBuW,SAAS,EAAEvW,WAAW;EACtBga,YAAY,EAAEha,WAAW;EACzByM,aAAa,EAAEzM,WAAW;EAC1BouB,aAAa,EAAE5iB,SAAS;EACxBuhB,gBAAgB,EAAEA,CAAA,KAAYvhB,SAAS;EACvCgiB,cAAc,EAAEA,CAAA,KAAYhiB,SAAS;EACrCie,OAAO,EAAEA,CAAA,KAAYje,SAAS;EAC9B0pB,aAAa,EAAEA,CAAA,KAAY1pB,SAAS;EACpCwsB,wBAAwB,EAAEA,CAAA,KAAYxsB,SAAS;EAC/CiL,UAAU,EAAE,EAAE;EACdC,gBAAgB,EAAE,EAAE;EACpBxR,YAAY,EAAEjF,SAAS;EACvBqF,qBAAqB,EAAEtF,WAAW;EAClCuF,KAAK,EAAEvF,WAAW;EAClBmF,WAAW,EAAEtF,UAAU,CAAC6F,YAAY,CAACC,IAAI;EACzCV,aAAa,EAAEjF,WAAW;EAC1BgF,mBAAmB,EAAET,4BAA4B;EACjDa,YAAY,EAAEoG,SAAS;EACvB5B,gBAAgB,EAAE3J,SAAS;EAC3B0W,cAAc,EAAE1W,SAAS;EACzB+vB,kBAAkB,EAAEA,CAAA,KAAYxkB,SAAS;EACzCc,iBAAiB,EAAE,KAAK;EACxB+J,oBAAoB,EAAE,KAAK;EAC3BwhB,eAAe,EAAE,KAAK;EACtBC,cAAc,EAAE,KAAK;EACrB6H,wBAAwB,EAAE,IAAI;EAC9B9K,mBAAmB,EAAE,IAAI;EACzB+K,sBAAsB,EAAE,IAAI;EAC5BC,UAAU,EAAE,IAAI;EAChBh1B,IAAI,EAAE,OAAO;EACbktB,uBAAuB,EAAE,IAAI;EAC7BhwB,aAAa,EAAE,KAAK;EACpBiG,WAAW,EAAE,EAAE;EACfC,qBAAqB,EAAE,IAAI;EAC3BC,mBAAmB,EAAE,IAAI;EACzBwrB,aAAa,EAAEA,CAAA,KAA0C15B,WAAW;EACpEwV,cAAc,EAAEvV,SAAS;EACzB23B,iBAAiB,EAAE90B,0BAA0B,CAACg9B,gBAAgB;EAC9D7lB,QAAQ,EAAE;IACR8D,QAAQ,EAAE,kBAAkB;IAC5BgiB,qBAAqB,EAAErgC,SAAS,CAACsgC,gBAAgB;IACjDC,YAAY,EAAE,KAAK;IACnBC,cAAc,EAAE,IAAI;IACpB3rB,wBAAwB,EAAE,KAAK;IAC/B5N,SAAS,EAAE3G,WAAW;IACtBqU,oBAAoB,EAAE5W,SAAS,CAAC0iC,KAAK,CAAC;MACpCC,mBAAmB,EAAE3iC,SAAS,CAAC4iC;IACjC,CAAC,CAAC;IACF/rB,oBAAoB,EAAE7W,SAAS,CAAC0iC,KAAK,CAAC;MACpCC,mBAAmB,EAAE3iC,SAAS,CAAC4iC;IACjC,CAAC;EACH,CAAC;EACDzpB,OAAO,EAAE,IAAI;EACb5O,cAAc,EAAE,IAAI;EACpB6O,aAAa,EAAE,IAAI;EACnBhK,KAAK,EAAE,IAAI;EACX5E,eAAe,EAAE;AACnB,CAAC;AAgrIH,eAAerC,QAAQ"}
1
+ {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","isMissingPartitionError","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","_ref4","_theme$rowFooterWidth","defaultTheme","rowFooterWidth","_objectSpread","autoSelectRow","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","state","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","className","input","gotoValue","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref5","getCachedTheme","context","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","makeQuickFilter","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref6","findIndex","_ref7","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref8","setQuickFilter","_ref9","setFilterMap","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref10","filterList","find","c","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref11","_","_ref12","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref13","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","applyInputFiltersOnInit","inputFiltersWithValues","_this","_asyncToGenerator","getInitialPartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","sort","desc","applySort","setViewport","Promise","resolve","reject","addEventListener","Table","EVENT_UPDATED","event","detail","data","rows","row","newPartition","e","copyCell","String","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","onError","showAllColumns","_this$grid9","entries","columnWidth","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid10","sortColumn","_this$grid11","direction","none","isAbs","reverse","_this$grid12","isReversible","focusIndex","isTextType","_this$grid13","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this3","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","_this5","groupedColumns","dataMap","_loop","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","_this$grid17","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid18","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref14","setGridFocus","defocusInput","_this$grid19","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref15","newOptions","pop","_ref16","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid23","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid24","_this$grid25","join","aggregation","_ref17","_rollupConfig$columns","_rollupConfig$columns2","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref18","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid29","render","_rollupConfig$columns3","_rollupConfig$columns4","_this7","_this$grid31","_this$grid31$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid30","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","visibleColumns","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","transitionMidMs","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n dh as DhType,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n ViewportData,\n} from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport {\n isPartitionedGridModel,\n PartitionConfig,\n PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n Action,\n AdvancedFilterMap,\n AdvancedFilterOptions,\n ColumnName,\n InputFilter,\n OperationMap,\n OptionItem,\n PendingDataErrorMap,\n PendingDataMap,\n QuickFilterMap,\n ReadonlyAdvancedFilterMap,\n ReadonlyAggregationMap,\n ReadonlyOperationMap,\n ReadonlyQuickFilterMap,\n UITotalsTableConfig,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\nimport { isMissingPartitionError } from './MissingPartitionError';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n canToggleSearch: true,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n keyHandlers,\n mouseHandlers,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n renderer: IrisGridRenderer;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyOperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: Partial<GridThemeType> | null,\n theme: Partial<GridThemeType> | null,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => {\n const defaultTheme = createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ??\n contextTheme?.rowFooterWidth ??\n defaultTheme.rowFooterWidth\n : 0;\n\n return {\n ...defaultTheme,\n ...contextTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n\n return this.getCachedTheme(\n this.context,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', true);\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(model: PartitionedGridModel): Promise<void> {\n try {\n const partitionConfig = await this.getInitialPartitionConfig(model);\n this.setState(\n { isSelectingPartition: true, partitionConfig },\n this.loadTableState\n );\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Gets the initial partition config for the currently set model.\n * Sorts the key table and gets the first key.\n * If the table is ticking, it will wait for the first tick.\n */\n async getInitialPartitionConfig(\n model: PartitionedGridModel\n ): Promise<PartitionConfig> {\n const { partitionConfig } = this.state;\n if (partitionConfig !== undefined) {\n // User already has a partition selected, just use that\n return partitionConfig;\n }\n\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n return new Promise((resolve, reject) => {\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: CustomEvent<ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // Table is empty, wait for the next updated event\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n keyTable.close();\n resolve(newPartition);\n } catch (e) {\n keyTable.close();\n reject(e);\n }\n }\n );\n });\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n this.setState({ partitionConfig });\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverseType: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', true);\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${error}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: readonly ColumnGroup[]): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.loadTableState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings: AggregationSettings): void {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n });\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingSpinnerShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {isPartitionedGridModel(model) &&\n model.isPartitionRequired &&\n partitionConfig && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}