@deephaven/iris-grid 0.15.1-beta.4 → 0.15.2-beta.6

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.
@@ -642,8 +642,9 @@ class IrisGridRenderer extends GridRenderer {
642
642
  gridY
643
643
  } = metrics;
644
644
  var modelColumn = modelColumns.get(column);
645
- var quickFilter = modelColumn ? quickFilters.get(modelColumn) : null;
646
- var advancedFilter = modelColumn ? advancedFilters.get(modelColumn) : null;
645
+ if (modelColumn === undefined) return;
646
+ var quickFilter = quickFilters.get(modelColumn);
647
+ var advancedFilter = advancedFilters.get(modelColumn);
647
648
  var {
648
649
  filterBarCollapsedHeight,
649
650
  filterBarActiveColor,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridRenderer.ts"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","vsLinkExternal","getOrThrow","GridRenderer","GridUtils","TableUtils","assertNotNull","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","ICON_SIZE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","icons","initIcons","setIcon","name","faIcon","path","Array","isArray","icon","Path2D","scaledIcon","scaleMatrix","a","d","addPath","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelRow","modelColumn","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","get","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","visibleRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","save","setLineDash","pendingTextColor","restore","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillStyle","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","width","height","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","undefined","text","filterText","getFilterText","fontWidths","fontWidth","measureText","maxLength","substring","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawTreeMarker","rowY","treeBox","isExpanded","markerIcon","iconX","iconY","drawRowFooters","mouseX","mouseY","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","textWidth","DEFAULT_FONT_WIDTH","truncatedText","getCachedTruncatedString","truncationCharForCell","NULL_POSITION","top","gridWidth","right","buttonLeft","buttonTop","buttonWidth","buttonHeight","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n dhSortDown,\n dhSortUp,\n vsTriangleDown,\n vsTriangleRight,\n vsLinkExternal,\n IconDefinition,\n} from '@deephaven/icons';\nimport {\n BoxCoordinates,\n Coordinate,\n getOrThrow,\n GridMetrics,\n GridRangeIndex,\n GridRenderer,\n GridRenderState,\n GridThemeType,\n GridUtils,\n VisibleIndex,\n} from '@deephaven/grid';\nimport { Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils, ReverseType } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n AdvancedFilterMap,\n QuickFilterMap,\n AdvancedFilter,\n QuickFilter,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport IrisGridModel from './IrisGridModel';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst ICON_SIZE = 16;\n\nexport type IrisGridRenderState = GridRenderState & {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isSelectingColumn: boolean;\n loadingScrimProgress: number;\n reverseType: ReverseType;\n isFilterBarShown: boolean;\n advancedFilters: AdvancedFilterMap;\n quickFilters: QuickFilterMap;\n};\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nclass IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n constructor() {\n super();\n this.icons = {};\n\n this.initIcons();\n }\n\n icons: Record<string, Path2D>;\n\n initIcons(): void {\n this.setIcon(ICON_NAMES.SORT_UP, dhSortUp);\n this.setIcon(ICON_NAMES.SORT_DOWN, dhSortDown);\n this.setIcon(ICON_NAMES.CARET_DOWN, vsTriangleDown);\n this.setIcon(ICON_NAMES.CARET_RIGHT, vsTriangleRight);\n this.setIcon(ICON_NAMES.CELL_OVERFLOW, vsLinkExternal);\n }\n\n // Scales the icon to be square and match the global ICON_SIZE\n setIcon(name: string, faIcon: IconDefinition): void {\n const path = Array.isArray(faIcon.icon[4])\n ? faIcon.icon[4][0]\n : faIcon.icon[4];\n const icon = new Path2D(path);\n const scaledIcon = new Path2D();\n const scaleMatrix = {\n a: ICON_SIZE / faIcon.icon[0],\n d: ICON_SIZE / faIcon.icon[1],\n };\n scaledIcon.addPath(icon, scaleMatrix);\n this.icons[name] = scaledIcon;\n }\n\n getIcon(name: string): Path2D {\n return this.icons[name];\n }\n\n getSortIcon(sort: Sort | null): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return this.getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return this.getIcon(ICON_NAMES.SORT_DOWN);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isTextType(model.columns[modelColumn].type)) {\n if (value === null || value === '') {\n const originalFont = context.font;\n context.font = `italic ${originalFont}`;\n const displayValue = value === null ? 'null' : 'empty';\n super.drawCellContent(context, state, column, row, displayValue);\n context.font = originalFont;\n return;\n }\n }\n super.drawCellContent(context, state, column, row);\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns, columns } = model;\n const { maxY, visibleColumnWidths, visibleColumnXs } = metrics;\n if (groupedColumns.length === 0 || !theme.groupedColumnDividerColor) {\n return;\n }\n\n const lastGroupedColumn = groupedColumns[groupedColumns.length - 1];\n const modelIndex = columns.findIndex(\n c => c.name === lastGroupedColumn.name\n );\n const columnX = visibleColumnXs.get(modelIndex);\n const columnWidth = visibleColumnWidths.get(modelIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { visibleRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = visibleRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (hoverSelectColumn == null || !theme.linkerColumnHoverBackgroundColor) {\n return;\n }\n\n const { visibleColumnWidths, visibleColumnXs, maxY } = metrics;\n\n const x = visibleColumnXs.get(hoverSelectColumn);\n const columnWidth = visibleColumnWidths.get(hoverSelectColumn);\n assertNotNull(x);\n assertNotNull(columnWidth);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can just change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverseType } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n\n let color;\n if (hasReverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n hasReverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = getOrThrow(modelColumns, column);\n\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort);\n if (!icon) {\n return;\n }\n\n const { columnHeaderHeight, gridX } = metrics;\n\n const x = gridX + columnX + columnWidth - 13;\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n const gradientWidth = 12;\n const gradientX = x - 3;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n const gradient = context.createLinearGradient(\n gradientX,\n 0,\n gradientX + 5,\n 0\n );\n gradient.addColorStop(0, `${theme.headerBackgroundColor}00`);\n gradient.addColorStop(1, `${theme.headerBackgroundColor}CD`);\n\n context.fillStyle = gradient;\n context.fillRect(gradientX, 0, gradientWidth, columnHeaderHeight);\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.font;\n context.textAlign = 'left';\n\n if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(visibleColumnXs, column);\n const columnWidth = getOrThrow(visibleColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(visibleColumnWidths, column);\n const columnX = getOrThrow(visibleColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text) {\n const { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (!fontWidth) {\n fontWidth = context.measureText('8').width;\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\n }\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text) {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const columnX = visibleColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n const quickFilter = modelColumn ? quickFilters.get(modelColumn) : null;\n const advancedFilter = modelColumn\n ? advancedFilters.get(modelColumn)\n : null;\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (\n filterBarActiveBackgroundColor &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawTreeMarker(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n columnX: Coordinate,\n rowY: Coordinate,\n treeBox: BoxCoordinates,\n color: string,\n isExpanded: boolean\n ): void {\n context.save();\n const { x1, y1 } = treeBox;\n const markerIcon = isExpanded\n ? this.getIcon(ICON_NAMES.CARET_DOWN)\n : this.getIcon(ICON_NAMES.CARET_RIGHT);\n const iconX = columnX + x1 - 2;\n const iconY = rowY + y1 + 2.5;\n\n context.fillStyle = color;\n context.textAlign = 'center';\n context.translate(iconX, iconY);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n visibleRowHeights,\n visibleRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX && mouseY && mouseX >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = visibleRowHeights.get(row);\n const rowY = visibleRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n // This will shrink the size the text may take when the overflow button is rendered\n // The text will truncate to a smaller width and won't overlap the button\n getTextRenderMetrics(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): {\n width: number;\n x: Coordinate;\n y: Coordinate;\n } {\n const textMetrics = super.getTextRenderMetrics(context, state, column, row);\n\n const { mouseX, mouseY, metrics } = state;\n\n if (mouseX == null || mouseY == null) {\n return textMetrics;\n }\n\n const { column: mouseColumn, row: mouseRow } = GridUtils.getGridPointFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (column === mouseColumn && row === mouseRow) {\n const { left } = this.getCellOverflowButtonPosition(state);\n if (this.shouldRenderOverflowButton(state) && left) {\n textMetrics.width = left - metrics.gridX - textMetrics.x;\n }\n }\n return textMetrics;\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n const { context, mouseX, mouseY, metrics, model, theme } = state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n const { row, column, modelRow, modelColumn } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (\n row == null ||\n column == null ||\n modelRow == null ||\n modelColumn == null ||\n !TableUtils.isStringType(model.columns[modelColumn].type)\n ) {\n return false;\n }\n\n const text = model.textForCell(modelColumn, modelRow) ?? '';\n const { width: textWidth } = super.getTextRenderMetrics(\n context,\n state,\n column,\n row\n );\n const fontWidth =\n metrics.fontWidths.get(theme.font) ?? IrisGridRenderer.DEFAULT_FONT_WIDTH;\n\n context.save();\n context.font = theme.font;\n\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n model.truncationCharForCell(modelColumn, modelRow)\n );\n context.restore();\n\n return text !== '' && truncatedText !== text;\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, columnWidth, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n assertNotNull(left);\n assertNotNull(columnWidth);\n assertNotNull(top);\n const { width: gridWidth, verticalBarWidth } = metrics;\n const { cellHorizontalPadding } = theme;\n\n const width = ICON_SIZE + 2 * cellHorizontalPadding;\n const height = rowHeight;\n // Right edge of column or of visible grid, whichever is smaller\n const right = Math.min(\n metrics.gridX + left + columnWidth,\n gridWidth - verticalBarWidth\n );\n const buttonLeft = right - width;\n const buttonTop = metrics.gridY + top;\n\n return { left: buttonLeft, top: buttonTop, width, height };\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = this.getIcon(ICON_NAMES.CELL_OVERFLOW);\n if (buttonLeft != null && buttonTop != null) {\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\n }\n context.fill(icon);\n\n context.restore();\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
1
+ {"version":3,"sources":["../src/IrisGridRenderer.ts"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","vsLinkExternal","getOrThrow","GridRenderer","GridUtils","TableUtils","assertNotNull","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","ICON_SIZE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","icons","initIcons","setIcon","name","faIcon","path","Array","isArray","icon","Path2D","scaledIcon","scaleMatrix","a","d","addPath","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelRow","modelColumn","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","get","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","visibleRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","save","setLineDash","pendingTextColor","restore","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillStyle","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","width","height","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","undefined","text","filterText","getFilterText","fontWidths","fontWidth","measureText","maxLength","substring","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawTreeMarker","rowY","treeBox","isExpanded","markerIcon","iconX","iconY","drawRowFooters","mouseX","mouseY","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","textWidth","DEFAULT_FONT_WIDTH","truncatedText","getCachedTruncatedString","truncationCharForCell","NULL_POSITION","top","gridWidth","right","buttonLeft","buttonTop","buttonWidth","buttonHeight","overflowButtonColor","overflowButtonHoverColor"],"mappings":";;AAAA;;AACA;;AACA;AACA,SACEA,UADF,EAEEC,QAFF,EAGEC,cAHF,EAIEC,eAJF,EAKEC,cALF,QAOO,kBAPP;AAQA,SAGEC,UAHF,EAMEC,YANF,EASEC,SATF,QAWO,iBAXP;AAaA,SAASC,UAAT,QAAwC,wBAAxC;AACA,SAASC,aAAT,QAA8B,kBAA9B;AAUA,IAAMC,UAAU,GAAGC,MAAM,CAACC,MAAP,CAAc;AAC/BC,EAAAA,OAAO,EAAE,QADsB;AAE/BC,EAAAA,SAAS,EAAE,UAFoB;AAG/BC,EAAAA,UAAU,EAAE,WAHmB;AAI/BC,EAAAA,WAAW,EAAE,YAJkB;AAK/BC,EAAAA,aAAa,EAAE;AALgB,CAAd,CAAnB;AAQA,IAAMC,SAAS,GAAG,EAAlB;;AAaA;AACA;AACA;AACA,MAAMC,gBAAN,SAA+Bb,YAA/B,CAA4C;AACtB,SAAbc,aAAa,CAClBC,cADkB,EAElBC,WAFkB,EAGT;AACT,QAAMC,qBAAqB,GACzBF,cAAc,IAAI,IAAlB,IAA0BA,cAAc,CAACG,MAAf,IAAyB,IADrD;AAEA,QAAMC,kBAAkB,GACtBH,WAAW,IAAI,IAAf,IAAuBA,WAAW,CAACE,MAAZ,IAAsB,IAD/C;AAEA,WAAOD,qBAAqB,IAAIE,kBAAhC;AACD;;AAEDC,EAAAA,WAAW,GAAG;AACZ;;AADY;;AAEZ,SAAKC,KAAL,GAAa,EAAb;AAEA,SAAKC,SAAL;AACD;;AAIDA,EAAAA,SAAS,GAAS;AAChB,SAAKC,OAAL,CAAanB,UAAU,CAACG,OAAxB,EAAiCZ,QAAjC;AACA,SAAK4B,OAAL,CAAanB,UAAU,CAACI,SAAxB,EAAmCd,UAAnC;AACA,SAAK6B,OAAL,CAAanB,UAAU,CAACK,UAAxB,EAAoCb,cAApC;AACA,SAAK2B,OAAL,CAAanB,UAAU,CAACM,WAAxB,EAAqCb,eAArC;AACA,SAAK0B,OAAL,CAAanB,UAAU,CAACO,aAAxB,EAAuCb,cAAvC;AACD,GA3ByC,CA6B1C;;;AACAyB,EAAAA,OAAO,CAACC,IAAD,EAAeC,MAAf,EAA6C;AAClD,QAAMC,IAAI,GAAGC,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACI,IAAP,CAAY,CAAZ,CAAd,IACTJ,MAAM,CAACI,IAAP,CAAY,CAAZ,EAAe,CAAf,CADS,GAETJ,MAAM,CAACI,IAAP,CAAY,CAAZ,CAFJ;AAGA,QAAMA,IAAI,GAAG,IAAIC,MAAJ,CAAWJ,IAAX,CAAb;AACA,QAAMK,UAAU,GAAG,IAAID,MAAJ,EAAnB;AACA,QAAME,WAAW,GAAG;AAClBC,MAAAA,CAAC,EAAErB,SAAS,GAAGa,MAAM,CAACI,IAAP,CAAY,CAAZ,CADG;AAElBK,MAAAA,CAAC,EAAEtB,SAAS,GAAGa,MAAM,CAACI,IAAP,CAAY,CAAZ;AAFG,KAApB;AAIAE,IAAAA,UAAU,CAACI,OAAX,CAAmBN,IAAnB,EAAyBG,WAAzB;AACA,SAAKX,KAAL,CAAWG,IAAX,IAAmBO,UAAnB;AACD;;AAEDK,EAAAA,OAAO,CAACZ,IAAD,EAAuB;AAC5B,WAAO,KAAKH,KAAL,CAAWG,IAAX,CAAP;AACD;;AAEDa,EAAAA,WAAW,CAACC,IAAD,EAAmC;AAC5C,QAAI,CAACA,IAAL,EAAW;AACT,aAAO,IAAP;AACD;;AACD,QAAIA,IAAI,CAACC,SAAL,KAAmBrC,UAAU,CAACsC,aAAX,CAAyBC,SAAhD,EAA2D;AACzD,aAAO,KAAKL,OAAL,CAAahC,UAAU,CAACG,OAAxB,CAAP;AACD;;AACD,QAAI+B,IAAI,CAACC,SAAL,KAAmBrC,UAAU,CAACsC,aAAX,CAAyBE,UAAhD,EAA4D;AAC1D,aAAO,KAAKN,OAAL,CAAahC,UAAU,CAACI,SAAxB,CAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAEDmC,EAAAA,UAAU,CAACC,KAAD,EAAmC;AAC3C,UAAMD,UAAN,CAAiBC,KAAjB;AAEA,SAAKC,SAAL,CAAeD,KAAf;AACD;;AAEDE,EAAAA,QAAQ,CACNC,OADM,EAENH,KAFM,EAGA;AACN,UAAME,QAAN,CAAeC,OAAf,EAAwBH,KAAxB;AACA,SAAKI,sBAAL,CAA4BJ,KAA5B;AACD;;AAEDK,EAAAA,aAAa,CACXF,OADW,EAEXH,KAFW,EAGL;AACN,UAAMK,aAAN,CAAoBF,OAApB,EAA6BH,KAA7B;AAEA,SAAKM,qBAAL,CAA2BH,OAA3B,EAAoCH,KAApC;AAEA,SAAKO,kBAAL,CAAwBJ,OAAxB,EAAiCH,KAAjC;AACD;;AAEDQ,EAAAA,eAAe,CACbL,OADa,EAEbH,KAFa,EAGbS,MAHa,EAIbC,GAJa,EAKP;AACN,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAqBZ,KAA3B;AACA,QAAM;AAAEa,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAA8BH,OAApC;AACA,QAAMI,QAAQ,GAAG5D,UAAU,CAAC2D,SAAD,EAAYJ,GAAZ,CAA3B;AACA,QAAMM,WAAW,GAAG7D,UAAU,CAAC0D,YAAD,EAAeJ,MAAf,CAA9B;AACA,QAAMQ,KAAK,GAAGL,KAAK,CAACM,YAAN,CAAmBF,WAAnB,EAAgCD,QAAhC,CAAd;;AACA,QAAIzD,UAAU,CAAC6D,UAAX,CAAsBP,KAAK,CAACQ,OAAN,CAAcJ,WAAd,EAA2BK,IAAjD,CAAJ,EAA4D;AAC1D,UAAIJ,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAAhC,EAAoC;AAClC,YAAMK,YAAY,GAAGnB,OAAO,CAACoB,IAA7B;AACApB,QAAAA,OAAO,CAACoB,IAAR,oBAAyBD,YAAzB;AACA,YAAME,YAAY,GAAGP,KAAK,KAAK,IAAV,GAAiB,MAAjB,GAA0B,OAA/C;AACA,cAAMT,eAAN,CAAsBL,OAAtB,EAA+BH,KAA/B,EAAsCS,MAAtC,EAA8CC,GAA9C,EAAmDc,YAAnD;AACArB,QAAAA,OAAO,CAACoB,IAAR,GAAeD,YAAf;AACA;AACD;AACF;;AACD,UAAMd,eAAN,CAAsBL,OAAtB,EAA+BH,KAA/B,EAAsCS,MAAtC,EAA8CC,GAA9C;AACD;;AAEDJ,EAAAA,qBAAqB,CACnBH,OADmB,EAEnBH,KAFmB,EAGb;AACN,QAAM;AAAEW,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBa,MAAAA;AAAlB,QAA4BzB,KAAlC;AACA,QAAM;AAAE0B,MAAAA,cAAF;AAAkBN,MAAAA;AAAlB,QAA8BR,KAApC;AACA,QAAM;AAAEe,MAAAA,IAAF;AAAQC,MAAAA,mBAAR;AAA6BC,MAAAA;AAA7B,QAAiDlB,OAAvD;;AACA,QAAIe,cAAc,CAACI,MAAf,KAA0B,CAA1B,IAA+B,CAACL,KAAK,CAACM,yBAA1C,EAAqE;AACnE;AACD;;AAED,QAAMC,iBAAiB,GAAGN,cAAc,CAACA,cAAc,CAACI,MAAf,GAAwB,CAAzB,CAAxC;AACA,QAAMG,UAAU,GAAGb,OAAO,CAACc,SAAR,CACjBC,CAAC,IAAIA,CAAC,CAACvD,IAAF,KAAWoD,iBAAiB,CAACpD,IADjB,CAAnB;AAGA,QAAMwD,OAAO,GAAGP,eAAe,CAACQ,GAAhB,CAAoBJ,UAApB,CAAhB;AACA,QAAMK,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBJ,UAAxB,CAApB;;AACA,QAAIG,OAAO,IAAI,IAAX,IAAmBE,WAAW,IAAI,IAAtC,EAA4C;AAC1C;AACD;;AAED,QAAMC,CAAC,GAAGH,OAAO,GAAGE,WAAV,GAAwB,GAAlC;AAEAnC,IAAAA,OAAO,CAACqC,WAAR,GAAsBf,KAAK,CAACM,yBAA5B;AACA5B,IAAAA,OAAO,CAACsC,SAAR,GAAoB,CAApB;AACAtC,IAAAA,OAAO,CAACuC,SAAR;AACAvC,IAAAA,OAAO,CAACwC,MAAR,CAAeJ,CAAf,EAAkB,CAAlB;AACApC,IAAAA,OAAO,CAACyC,MAAR,CAAeL,CAAf,EAAkBZ,IAAlB;AACAxB,IAAAA,OAAO,CAAC0C,MAAR;AACD;;AAEDtC,EAAAA,kBAAkB,CAChBJ,OADgB,EAEhBH,KAFgB,EAGV;AACN,QAAM;AAAEW,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBa,MAAAA;AAAlB,QAA4BzB,KAAlC;AACA,QAAM;AAAE8C,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAAyBpC,OAA/B;AACA,QAAM;AAAEqC,MAAAA;AAAF,QAAsBpC,KAA5B;;AACA,QAAIoC,eAAe,IAAI,CAAvB,EAA0B;AACxB;AACD;;AAED,QAAMC,eAAe,GACnBrC,KAAK,CAACsC,QAAN,GAAiBtC,KAAK,CAACoC,eAAvB,GAAyCpC,KAAK,CAACuC,sBADjD;AAEA,QAAIC,CAAC,GAAGN,YAAY,CAACT,GAAb,CAAiBY,eAAjB,CAAR;;AACA,QAAIG,CAAC,IAAI,IAAT,EAAe;AACb;AACD;;AAEDA,IAAAA,CAAC,IAAI,GAAL;AACAjD,IAAAA,OAAO,CAACkD,IAAR;AACAlD,IAAAA,OAAO,CAACmD,WAAR,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB;AACAnD,IAAAA,OAAO,CAACqC,WAAR,GAAsBf,KAAK,CAAC8B,gBAA5B;AAEApD,IAAAA,OAAO,CAACsC,SAAR,GAAoB,CAApB;AACAtC,IAAAA,OAAO,CAACuC,SAAR;AACAvC,IAAAA,OAAO,CAACwC,MAAR,CAAe,CAAf,EAAkBS,CAAlB;AACAjD,IAAAA,OAAO,CAACyC,MAAR,CAAeG,IAAf,EAAqBK,CAArB;AACAjD,IAAAA,OAAO,CAAC0C,MAAR;AACA1C,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDC,EAAAA,oBAAoB,CAClBtD,OADkB,EAElBH,KAFkB,EAGZ;AACN,QAAM;AAAEyB,MAAAA,KAAF;AAASd,MAAAA,OAAT;AAAkB+C,MAAAA;AAAlB,QAAwC1D,KAA9C;;AACA,QAAI0D,iBAAiB,IAAI,IAArB,IAA6B,CAACjC,KAAK,CAACkC,gCAAxC,EAA0E;AACxE;AACD;;AAED,QAAM;AAAE/B,MAAAA,mBAAF;AAAuBC,MAAAA,eAAvB;AAAwCF,MAAAA;AAAxC,QAAiDhB,OAAvD;AAEA,QAAM4B,CAAC,GAAGV,eAAe,CAACQ,GAAhB,CAAoBqB,iBAApB,CAAV;AACA,QAAMpB,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBqB,iBAAxB,CAApB;AACAnG,IAAAA,aAAa,CAACgF,CAAD,CAAb;AACAhF,IAAAA,aAAa,CAAC+E,WAAD,CAAb;AAEAnC,IAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACkC,gCAA1B;AACAxD,IAAAA,OAAO,CAAC0D,QAAR,CAAiBtB,CAAjB,EAAoB,CAApB,EAAuBD,WAAvB,EAAoCX,IAApC;AACD;;AAEDmC,EAAAA,iBAAiB,CACf3D,OADe,EAEfH,KAFe,EAGT;AACN,QAAM;AAAE+D,MAAAA;AAAF,QAAwB/D,KAA9B;;AACA,QAAI,CAAC+D,iBAAL,EAAwB;AACtB,YAAMD,iBAAN,CAAwB3D,OAAxB,EAAiCH,KAAjC;AACD;AACF;;AAEDC,EAAAA,SAAS,CAACD,KAAD,EAAmC;AAC1C,QAAM;AAAEG,MAAAA,OAAF;AAAW6D,MAAAA,oBAAX;AAAiCrD,MAAAA,OAAjC;AAA0Cc,MAAAA;AAA1C,QAAoDzB,KAA1D;;AACA,QAAIgE,oBAAoB,IAAI,IAA5B,EAAkC;AAChC;AACD;;AAED,QAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA,MAAT;AAAiBC,MAAAA;AAAjB,QAA2BxD,OAAjC;AACA,QAAM;AAAEyD,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAgC5C,KAAtC;AAEAtB,IAAAA,OAAO,CAACkD,IAAR,GAT0C,CAW1C;;AACAlD,IAAAA,OAAO,CAACmE,wBAAR,GAAmC,OAAnC;AACAnE,IAAAA,OAAO,CAAC7B,MAAR,kBAAyB8F,aAAzB;;AACA,QAAIC,UAAJ,EAAgB;AACdlE,MAAAA,OAAO,CAACyD,SAAR,GAAoBS,UAApB;AACD,KAhByC,CAkB1C;;;AACAlE,IAAAA,OAAO,CAACuC,SAAR;AACAvC,IAAAA,OAAO,CAACoE,IAAR,CAAa,CAAb,EAAgBJ,KAAhB,EAAuBF,KAAvB,EAA8BC,MAAM,GAAGC,KAAvC;AACAhE,IAAAA,OAAO,CAACqE,IAAR,GArB0C,CAuB1C;;AACArE,IAAAA,OAAO,CAAC0D,QAAR,CACE,CAACO,aADH,EAEE,CAACA,aAAD,GAAiBD,KAFnB,EAGEC,aAAa,GAAG,CAAhB,GAAoBH,KAHtB,EAIE,CAACG,aAAa,GAAG,CAAhB,IAAqBF,MAAM,GAAGC,KAA9B,CAAD,IAAyCH,oBAJ3C;AAOA7D,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDiB,EAAAA,iBAAiB,CACftE,OADe,EAEfH,KAFe,EAGT;AACN,UAAMyE,iBAAN,CAAwBtE,OAAxB,EAAiCH,KAAjC;AAEA,QAAM;AAAEyB,MAAAA,KAAF;AAASd,MAAAA,OAAT;AAAkBC,MAAAA,KAAlB;AAAyB8D,MAAAA;AAAzB,QAAyC1E,KAA/C;AACA,QAAM;AAAE2E,MAAAA;AAAF,QAAyBhE,OAA/B;AAEA,SAAKiE,iBAAL,CAAuBzE,OAAvB,EAAgCH,KAAhC;;AAEA,QAAI2E,kBAAkB,IAAI,CAA1B,EAA6B;AAC3B;AACD;;AAED,QAAM;AAAEjF,MAAAA;AAAF,QAAWkB,KAAjB,CAZM,CAaN;;AACA,QAAIlB,IAAI,CAACoC,MAAL,KAAgB,CAApB,EAAuB;AACrB,UAAM+C,UAAU,GAAGH,WAAW,KAAKpH,UAAU,CAACwH,YAAX,CAAwBC,IAA3D;AAEA,UAAIC,KAAJ;;AACA,UAAIH,UAAJ,EAAgB;AACdG,QAAAA,KAAK,GAAGvD,KAAK,CAACwD,qBAAd;AACD,OAFD,MAEO;AACLD,QAAAA,KAAK,GAAGvD,KAAK,CAACyD,kBAAd;AACD;;AACD,WAAKC,aAAL,CACEhF,OADF,EAEEH,KAFF,EAGEgF,KAHF,EAIEH,UAAU,GAAGpD,KAAK,CAAC2D,sBAAT,GAAkC3D,KAAK,CAAC4D,mBAJpD;AAMD,KAfD,MAeO,IAAI3F,IAAI,CAACoC,MAAL,GAAc,CAAlB,EAAqB;AAC1B;AACA;AACA,WACE;AACA4C,MAAAA,WAAW,KAAKpH,UAAU,CAACwH,YAAX,CAAwBC,IAF1C,EAGE;AACA,aAAKI,aAAL,CACEhF,OADF,EAEEH,KAFF,EAGEyB,KAAK,CAACwD,qBAHR,EAIExD,KAAK,CAAC2D,sBAJR,EAKE,KALF;AAOD;;AACD,WAAKD,aAAL,CACEhF,OADF,EAEEH,KAFF,EAGEyB,KAAK,CAACyD,kBAHR,EAIEzD,KAAK,CAAC4D,mBAJR;AAMD;AACF;;AAEDF,EAAAA,aAAa,CACXhF,OADW,EAEXH,KAFW,EAGXgF,KAHW,EAIXM,SAJW,EAML;AAAA,QADNC,QACM,uEADK,IACL;AACN,QAAM;AAAE9D,MAAAA,KAAF;AAASd,MAAAA;AAAT,QAAqBX,KAA3B;AACA,QAAM;AAAE2E,MAAAA,kBAAF;AAAsBV,MAAAA;AAAtB,QAAgCtD,OAAtC,CAFM,CAGN;AACA;AACA;;AACA,QAAI6E,MAAM,GAAG,CAAb;;AACA,QAAI,CAACD,QAAL,EAAe;AACbC,MAAAA,MAAM,GAAGF,SAAT;AACD;;AACDnF,IAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACgE,oBAA1B;AACAtF,IAAAA,OAAO,CAAC0D,QAAR,CACE,CADF,EAEEc,kBAAkB,GAAGW,SAArB,GAAiC,CAAjC,GAAqCE,MAFvC,EAGEvB,KAHF,EAIEqB,SAAS,GAAG,CAJd;AAOAnF,IAAAA,OAAO,CAACyD,SAAR,GAAoBoB,KAApB;AACA7E,IAAAA,OAAO,CAAC0D,QAAR,CACE,CADF,EAEEc,kBAAkB,GAAGW,SAArB,GAAiC,CAAjC,GAAqCE,MAFvC,EAGEvB,KAHF,EAIEqB,SAJF;AAMD;;AAEDI,EAAAA,gBAAgB,CACdvF,OADc,EAEdH,KAFc,EAGdS,MAHc,EAId2B,OAJc,EAKdE,WALc,EAMR;AACN,UAAMoD,gBAAN,CAAuBvF,OAAvB,EAAgCH,KAAhC,EAAuCS,MAAvC,EAA+C2B,OAA/C,EAAwDE,WAAxD;AAEA,QAAM;AAAE3B,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBa,MAAAA;AAAlB,QAA4BzB,KAAlC;AACA,QAAM;AAAEa,MAAAA;AAAF,QAAmBF,OAAzB;AACA,QAAMK,WAAW,GAAG7D,UAAU,CAAC0D,YAAD,EAAeJ,MAAf,CAA9B;AAEA,QAAMf,IAAI,GAAGpC,UAAU,CAACqI,gBAAX,CAA4B/E,KAAK,CAAClB,IAAlC,EAAwCsB,WAAxC,CAAb;;AAEA,QAAI,CAACtB,IAAL,EAAW;AACT;AACD;;AAED,QAAMT,IAAI,GAAG,KAAKQ,WAAL,CAAiBC,IAAjB,CAAb;;AACA,QAAI,CAACT,IAAL,EAAW;AACT;AACD;;AAED,QAAM;AAAE0F,MAAAA,kBAAF;AAAsBiB,MAAAA;AAAtB,QAAgCjF,OAAtC;AAEA,QAAM4B,CAAC,GAAGqD,KAAK,GAAGxD,OAAR,GAAkBE,WAAlB,GAAgC,EAA1C;AACA,QAAMuD,OAAO,GACXnG,IAAI,CAACC,SAAL,KAAmBrC,UAAU,CAACsC,aAAX,CAAyBC,SAA5C,GAAwD,CAAC,CAAzD,GAA6D,CAAC,EADhE;AAEA,QAAMuD,CAAC,GAAGuB,kBAAkB,GAAG,GAArB,GAA2BkB,OAArC;AACA,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAMC,SAAS,GAAGxD,CAAC,GAAG,CAAtB;AAEApC,IAAAA,OAAO,CAACkD,IAAR;AAEAlD,IAAAA,OAAO,CAACuC,SAAR;AACAvC,IAAAA,OAAO,CAACoE,IAAR,CAAanC,OAAb,EAAsB,CAAtB,EAAyBE,WAAzB,EAAsCqC,kBAAtC;AACAxE,IAAAA,OAAO,CAACqE,IAAR;AAEA,QAAMwB,QAAQ,GAAG7F,OAAO,CAAC8F,oBAAR,CACfF,SADe,EAEf,CAFe,EAGfA,SAAS,GAAG,CAHG,EAIf,CAJe,CAAjB;AAMAC,IAAAA,QAAQ,CAACE,YAAT,CAAsB,CAAtB,YAA4BzE,KAAK,CAAC0E,qBAAlC;AACAH,IAAAA,QAAQ,CAACE,YAAT,CAAsB,CAAtB,YAA4BzE,KAAK,CAAC0E,qBAAlC;AAEAhG,IAAAA,OAAO,CAACyD,SAAR,GAAoBoC,QAApB;AACA7F,IAAAA,OAAO,CAAC0D,QAAR,CAAiBkC,SAAjB,EAA4B,CAA5B,EAA+BD,aAA/B,EAA8CnB,kBAA9C;AAEAxE,IAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACyD,kBAA1B;AACA/E,IAAAA,OAAO,CAACiG,SAAR,CAAkB7D,CAAlB,EAAqBa,CAArB;AACAjD,IAAAA,OAAO,CAACkG,IAAR,CAAapH,IAAb;AAEAkB,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDoB,EAAAA,iBAAiB,CACfzE,OADe,EAEfH,KAFe,EAGT;AACN,QAAM;AAAEsG,MAAAA,gBAAF;AAAoBC,MAAAA,YAApB;AAAkCC,MAAAA;AAAlC,QAAsDxG,KAA5D;;AAEA,QAAIsG,gBAAJ,EAAsB;AACpB,WAAKG,yBAAL,CAA+BtG,OAA/B,EAAwCH,KAAxC;AACD,KAFD,MAEO,IACJuG,YAAY,IAAIA,YAAY,CAACG,IAAb,GAAoB,CAArC,IACCF,eAAe,IAAIA,eAAe,CAACE,IAAhB,GAAuB,CAFtC,EAGL;AACA,WAAKC,0BAAL,CAAgCxG,OAAhC,EAAyCH,KAAzC;AACD;AACF;;AAEDyG,EAAAA,yBAAyB,CACvBtG,OADuB,EAEvBH,KAFuB,EAGjB;AACN,QAAM;AAAEW,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBa,MAAAA,KAAlB;AAAyB8E,MAAAA,YAAzB;AAAuCC,MAAAA;AAAvC,QAA2DxG,KAAjE;AACA,QAAM;AAAE4G,MAAAA;AAAF,QAAsBnF,KAA5B;;AAEA,QAAImF,eAAe,IAAI,CAAvB,EAA0B;AACxB;AACD;;AAED,QAAM;AACJhB,MAAAA,KADI;AAEJzB,MAAAA,KAFI;AAGJpB,MAAAA,IAHI;AAIJlC,MAAAA,YAJI;AAKJgG,MAAAA,cALI;AAMJjF,MAAAA,mBANI;AAOJC,MAAAA;AAPI,QAQFlB,OARJ;AAUA,QAAMgE,kBAAkB,GAAGR,KAAK,GAAGyC,eAAnC;AAEAzG,IAAAA,OAAO,CAACkD,IAAR;AAEAlD,IAAAA,OAAO,CAACoB,IAAR,GAAeE,KAAK,CAACF,IAArB;AACApB,IAAAA,OAAO,CAAC2G,SAAR,GAAoB,MAApB;;AAEA,QACGP,YAAY,IAAIA,YAAY,CAACG,IAAb,GAAoB,CAArC,IACCF,eAAe,IAAIA,eAAe,CAACE,IAAhB,GAAuB,CAF7C,EAGE;AACA;AACAvG,MAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACsF,sCAA1B;AACD,KAND,MAMO;AACL;AACA5G,MAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACuF,gCAA1B;AACD,KAlCK,CAoCN;;;AACA7G,IAAAA,OAAO,CAAC0D,QAAR,CAAiB+B,KAAjB,EAAwBjB,kBAAxB,EAA4C5B,IAA5C,EAAkD6D,eAAe,GAAG,CAApE,EArCM,CAuCN;;AACAzG,IAAAA,OAAO,CAACyD,SAAR,GAAoBnC,KAAK,CAACgE,oBAA1B;AAEAtF,IAAAA,OAAO,CAAC0D,QAAR,CAAiB+B,KAAjB,EAAwBjB,kBAAkB,GAAGiC,eAArB,GAAuC,CAA/D,EAAkE7D,IAAlE,EAAwE,CAAxE,EA1CM,CA4CN;;AACA,QAAMkE,EAAE,GAAGtC,kBAAX;AACAxE,IAAAA,OAAO,CAACqC,WAAR,GAAsBf,KAAK,CAACyF,uBAA5B;AACA/G,IAAAA,OAAO,CAACuC,SAAR;;AAEA,SAAK,IAAIyE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,cAAc,CAAC/E,MAAnC,EAA2CqF,CAAC,IAAI,CAAhD,EAAmD;AACjD,UAAM1G,MAAM,GAAGoG,cAAc,CAACM,CAAD,CAA7B;AACA,UAAMnG,WAAW,GAAG7D,UAAU,CAAC0D,YAAD,EAAeJ,MAAf,CAA9B;AACA,UAAM2B,OAAO,GAAGjF,UAAU,CAAC0E,eAAD,EAAkBpB,MAAlB,CAA1B;AACA,UAAM6B,WAAW,GAAGnF,UAAU,CAACyE,mBAAD,EAAsBnB,MAAtB,CAA9B;;AACA,UAAIG,KAAK,CAACwG,YAAN,CAAmBpG,WAAnB,KAAmCsB,WAAW,GAAG,CAArD,EAAwD;AACtD,YAAM+E,EAAE,GAAGzB,KAAK,IAAIxD,OAAJ,aAAIA,OAAJ,cAAIA,OAAJ,GAAe,CAAf,CAAhB;AACAjC,QAAAA,OAAO,CAACoE,IAAR,CAAa8C,EAAE,GAAG,GAAlB,EAAuBJ,EAAE,GAAG,GAA5B,EAAiC3E,WAAjC,EAA8CsE,eAAe,GAAG,CAAhE,EAFsD,CAEc;AACrE;AACF;;AACDzG,IAAAA,OAAO,CAAC0C,MAAR;;AAEA,SAAK,IAAIsE,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGN,cAAc,CAAC/E,MAAnC,EAA2CqF,EAAC,IAAI,CAAhD,EAAmD;AACjD,UAAM1G,OAAM,GAAGoG,cAAc,CAACM,EAAD,CAA7B;;AACA,UAAM7E,YAAW,GAAGnF,UAAU,CAACyE,mBAAD,EAAsBnB,OAAtB,CAA9B;;AACA,UAAM2B,QAAO,GAAGjF,UAAU,CAAC0E,eAAD,EAAkBpB,OAAlB,CAA1B;;AACA,UAAM8B,CAAC,GAAGH,QAAO,GAAGwD,KAApB;AACA,WAAK0B,wBAAL,CAA8BnH,OAA9B,EAAuCH,KAAvC,EAA8CS,OAA9C,EAAsD8B,CAAtD,EAAyDD,YAAzD;AACD;;AAEDnC,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAED8D,EAAAA,wBAAwB,CACtBnH,OADsB,EAEtBH,KAFsB,EAGtBS,MAHsB,EAItB2B,OAJsB,EAKtBE,WALsB,EAMhB;AACN,QAAIA,WAAW,IAAI,CAAnB,EAAsB;AACpB;AACD;;AAED,QAAM;AAAE3B,MAAAA,OAAF;AAAWc,MAAAA,KAAX;AAAkB8E,MAAAA,YAAlB;AAAgCC,MAAAA;AAAhC,QAAoDxG,KAA1D;AACA,QAAM;AAAEa,MAAAA,YAAF;AAAgBsD,MAAAA;AAAhB,QAA0BxD,OAAhC;AACA,QAAM;AACJiG,MAAAA,eADI;AAEJW,MAAAA,0CAFI;AAGJC,MAAAA,mBAHI;AAIJC,MAAAA,0BAJI;AAKJC,MAAAA;AALI,QAMFjG,KANJ;AAOA,QAAMkD,kBAAkB,GAAGR,KAAK,GAAGyC,eAAnC;AACA,QAAM5F,WAAW,GAAGH,YAAY,CAACwB,GAAb,CAAiB5B,MAAjB,CAApB;AACA,QAAIO,WAAW,KAAK2G,SAApB,EAA+B;AAC/B,QAAMvJ,WAAW,GAAGmI,YAAY,CAAClE,GAAb,CAAiBrB,WAAjB,CAApB;AACA,QAAM7C,cAAc,GAAGqI,eAAe,CAACnE,GAAhB,CAAoBrB,WAApB,CAAvB;;AACA,QAAI5C,WAAW,IAAI,IAAf,IAAuBD,cAAc,IAAI,IAA7C,EAAmD;AACjD;AACD;;AAED,QAAIyJ,IAAI,GAAG,IAAX;;AACA,QAAIxJ,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM;AAAEwJ,QAAAA,IAAI,EAAEC;AAAR,UAAuBzJ,WAA7B;AACAwJ,MAAAA,IAAI,GAAGC,UAAP;;AACA,UAAI,CAACD,IAAL,EAAW;AACTA,QAAAA,IAAI,GAAGtK,UAAU,CAACwK,aAAX,CAAyB1J,WAAW,CAACE,MAArC,CAAP;AACD;;AAED,UAAIsJ,IAAJ,EAAU;AACR,YAAM;AAAEG,UAAAA;AAAF,YAAiBpH,OAAvB;AACA,YAAIqH,SAAS,GAAGD,UAAU,CAAC1F,GAAX,CAAelC,OAAO,CAACoB,IAAvB,CAAhB;;AACA,YAAI,CAACyG,SAAL,EAAgB;AACdA,UAAAA,SAAS,GAAG7H,OAAO,CAAC8H,WAAR,CAAoB,GAApB,EAAyBhE,KAArC;;AACA,cAAI,CAAC+D,SAAL,EAAgB;AACdA,YAAAA,SAAS,GAAG,EAAZ;AACD;AACF;;AAED,YAAME,SAAS,GACb,CAAC5F,WAAW,GAAGmF,0BAA0B,GAAG,CAA5C,IAAiDO,SADnD;;AAEA,YAAIE,SAAS,IAAI,CAAjB,EAAoB;AAClBN,UAAAA,IAAI,GAAG,EAAP;AACD,SAFD,MAEO,IAAIA,IAAI,CAAC9F,MAAL,GAAcoG,SAAlB,EAA6B;AAClCN,UAAAA,IAAI,aAAMA,IAAI,CAACO,SAAL,CAAe,CAAf,EAAkBD,SAAS,GAAG,CAA9B,CAAN,WAAJ;AACD;AACF;AACF;;AAED/H,IAAAA,OAAO,CAACkD,IAAR;AAEA,QAAMnF,aAAa,GAAGD,gBAAgB,CAACC,aAAjB,CACpBC,cADoB,EAEpBC,WAFoB,CAAtB;;AAIA,QAAIF,aAAa,IAAIqJ,0CAArB,EAAiE;AAC/D;AACApH,MAAAA,OAAO,CAACyD,SAAR,GAAoB2D,0CAApB;AACApH,MAAAA,OAAO,CAAC0D,QAAR,CACEzB,OAAO,GAAG,CADZ,EACe;AACbuC,MAAAA,kBAAkB,GAAG,CAFvB,EAE0B;AACxBrC,MAAAA,WAAW,GAAG,CAHhB,EAGmB;AACjBsE,MAAAA,eAAe,GAAG,CAJpB,CAIsB;AAJtB;AAMD,KATD,MASO,IAAIY,mBAAJ,EAAyB;AAC9B;AACArH,MAAAA,OAAO,CAACyD,SAAR,GAAoB4D,mBAApB;AACArH,MAAAA,OAAO,CAACsC,SAAR,GAAoB,CAApB;AACAtC,MAAAA,OAAO,CAACqC,WAAR,GAAsBgF,mBAAtB,CAJ8B,CAK9B;AACA;;AACA,UAAMY,QAAQ,GAAGhG,OAAO,GAAG,CAA3B,CAP8B,CAOA;;AAC9B,UAAMiG,OAAO,GAAG1D,kBAAkB,GAAG,CAArC,CAR8B,CAQU;;AACxC,UAAM2D,SAAS,GAAGhG,WAAW,GAAG,CAAhC,CAT8B,CASK;;AACnC,UAAMiG,UAAU,GAAG3B,eAAe,GAAG,CAArC,CAV8B,CAUU;;AACxCzG,MAAAA,OAAO,CAACqI,UAAR,CAAmBJ,QAAnB,EAA6BC,OAA7B,EAAsCC,SAAtC,EAAiDC,UAAjD;AACD;;AAED,QAAIX,IAAJ,EAAU;AACR,UAAMa,KAAK,GAAGrG,OAAO,GAAGqF,0BAAxB;AACA,UAAMiB,KAAK,GAAG/D,kBAAkB,GAAGiC,eAAe,GAAG,GAAvC,GAA6C,CAA3D,CAFQ,CAEsD;;AAC9DzG,MAAAA,OAAO,CAACyD,SAAR,GAAoB8D,WAApB;AACAvH,MAAAA,OAAO,CAACwI,QAAR,CAAiBf,IAAjB,EAAuBa,KAAvB,EAA8BC,KAA9B;AACD;;AAEDvI,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDmD,EAAAA,0BAA0B,CACxBxG,OADwB,EAExBH,KAFwB,EAGlB;AACN,QAAM;AAAEW,MAAAA,OAAF;AAAWc,MAAAA;AAAX,QAAqBzB,KAA3B;AACA,QAAM;AAAE4I,MAAAA,oBAAF;AAAwBC,MAAAA;AAAxB,QAAqDpH,KAA3D;;AAEA,QAAIoH,wBAAwB,IAAI,CAAhC,EAAmC;AACjC;AACD;;AAED,QAAM;AACJjD,MAAAA,KADI;AAEJzB,MAAAA,KAFI;AAGJpB,MAAAA,IAHI;AAIJ8D,MAAAA,cAJI;AAKJjF,MAAAA,mBALI;AAMJC,MAAAA;AANI,QAOFlB,OAPJ;AAQA,QAAMgE,kBAAkB,GAAGR,KAAK,GAAG0E,wBAAnC;AAEA1I,IAAAA,OAAO,CAACkD,IAAR,GAlBM,CAoBN;;AACAlD,IAAAA,OAAO,CAACyD,SAAR,GAAoBgF,oBAApB;AACAzI,IAAAA,OAAO,CAAC0D,QAAR,CAAiB+B,KAAjB,EAAwBjB,kBAAxB,EAA4C5B,IAA5C,EAAkD8F,wBAAlD;;AAEA,SAAK,IAAI1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,cAAc,CAAC/E,MAAnC,EAA2CqF,CAAC,IAAI,CAAhD,EAAmD;AACjD,UAAM1G,MAAM,GAAGoG,cAAc,CAACM,CAAD,CAA7B;AACA,UAAM7E,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwB5B,MAAxB,CAApB;AACA,UAAM2B,OAAO,GAAGP,eAAe,CAACQ,GAAhB,CAAoB5B,MAApB,CAAhB;;AACA,UAAI2B,OAAO,IAAI,IAAX,IAAmBE,WAAW,IAAI,IAAtC,EAA4C;AAC1C,YAAMC,CAAC,GAAGH,OAAO,GAAGwD,KAApB,CAD0C,CAE1C;;AACA,aAAKkD,yBAAL,CAA+B3I,OAA/B,EAAwCH,KAAxC,EAA+CS,MAA/C,EAAuD8B,CAAvD,EAA0DD,WAA1D;AACD;AACF;;AAEDnC,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDsF,EAAAA,yBAAyB,CACvB3I,OADuB,EAEvBH,KAFuB,EAGvBS,MAHuB,EAIvB2B,OAJuB,EAKvBE,WALuB,EAMjB;AACN,QAAIA,WAAW,IAAI,CAAnB,EAAsB;AACpB;AACD;;AAED,QAAM;AAAE3B,MAAAA,OAAF;AAAWc,MAAAA,KAAX;AAAkB8E,MAAAA,YAAlB;AAAgCC,MAAAA;AAAhC,QAAoDxG,KAA1D;AACA,QAAM;AAAEa,MAAAA,YAAF;AAAgBsD,MAAAA;AAAhB,QAA0BxD,OAAhC;AACA,QAAMK,WAAW,GAAGH,YAAY,CAACwB,GAAb,CAAiB5B,MAAjB,CAApB;AAEA,QAAIO,WAAW,KAAK2G,SAApB,EAA+B;AAC/B,QAAMvJ,WAAW,GAAGmI,YAAY,CAAClE,GAAb,CAAiBrB,WAAjB,CAApB;AACA,QAAM7C,cAAc,GAAGqI,eAAe,CAACnE,GAAhB,CAAoBrB,WAApB,CAAvB;AAEA,QAAM;AACJ6H,MAAAA,wBADI;AAEJE,MAAAA,oBAFI;AAGJC,MAAAA,8BAHI;AAIJxB,MAAAA;AAJI,QAKF/F,KALJ;AAOAtB,IAAAA,OAAO,CAACkD,IAAR;AAEA,QAAMnF,aAAa,GAAGD,gBAAgB,CAACC,aAAjB,CACpBC,cADoB,EAEpBC,WAFoB,CAAtB;;AAKA,QACE4K,8BAA8B,IAC9B5K,WAAW,IAAI,IADf,IAEAD,cAAc,IAAI,IAHpB,EAIE;AACAgC,MAAAA,OAAO,CAACyD,SAAR,GAAoBoF,8BAApB;AACD,KAND,MAMO,IAAID,oBAAoB,IAAI7K,aAA5B,EAA2C;AAChDiC,MAAAA,OAAO,CAACyD,SAAR,GAAoBmF,oBAApB;AACD,KAFM,MAEA,IAAIvB,mBAAJ,EAAyB;AAC9BrH,MAAAA,OAAO,CAACyD,SAAR,GAAoB4D,mBAApB;AACD;;AAED,QAAMjF,CAAC,GAAGH,OAAO,GAAG,CAApB,CAvCM,CAuCiB;;AACvB,QAAMgB,CAAC,GAAGe,KAAK,GAAG0E,wBAAlB;AACA,QAAMP,SAAS,GAAGhG,WAAW,GAAG,CAAhC,CAzCM,CAyC6B;;AACnC,QAAMiG,UAAU,GAAGM,wBAAwB,GAAG,CAA9C,CA1CM,CA0C2C;;AACjD1I,IAAAA,OAAO,CAAC0D,QAAR,CAAiBtB,CAAjB,EAAoBa,CAApB,EAAuBkF,SAAvB,EAAkCC,UAAlC;AAEApI,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDyF,EAAAA,cAAc,CACZ9I,OADY,EAEZH,KAFY,EAGZoC,OAHY,EAIZ8G,IAJY,EAKZC,OALY,EAMZnE,KANY,EAOZoE,UAPY,EAQN;AACNjJ,IAAAA,OAAO,CAACkD,IAAR;AACA,QAAM;AAAEgE,MAAAA,EAAF;AAAMJ,MAAAA;AAAN,QAAakC,OAAnB;AACA,QAAME,UAAU,GAAGD,UAAU,GACzB,KAAK5J,OAAL,CAAahC,UAAU,CAACK,UAAxB,CADyB,GAEzB,KAAK2B,OAAL,CAAahC,UAAU,CAACM,WAAxB,CAFJ;AAGA,QAAMwL,KAAK,GAAGlH,OAAO,GAAGiF,EAAV,GAAe,CAA7B;AACA,QAAMkC,KAAK,GAAGL,IAAI,GAAGjC,EAAP,GAAY,GAA1B;AAEA9G,IAAAA,OAAO,CAACyD,SAAR,GAAoBoB,KAApB;AACA7E,IAAAA,OAAO,CAAC2G,SAAR,GAAoB,QAApB;AACA3G,IAAAA,OAAO,CAACiG,SAAR,CAAkBkD,KAAlB,EAAyBC,KAAzB;AACApJ,IAAAA,OAAO,CAACkG,IAAR,CAAagD,UAAb;AACAlJ,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAEDgG,EAAAA,cAAc,CACZrJ,OADY,EAEZH,KAFY,EAGN;AACN,QAAM;AAAEW,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkB6I,MAAAA,MAAlB;AAA0BC,MAAAA,MAA1B;AAAkCjI,MAAAA;AAAlC,QAA4CzB,KAAlD;AACA,QAAM;AACJmE,MAAAA,KADI;AAEJyB,MAAAA,KAFI;AAGJ7C,MAAAA,IAHI;AAIJjC,MAAAA,SAJI;AAKJ6I,MAAAA,iBALI;AAMJC,MAAAA,oBANI;AAOJC,MAAAA,YAPI;AAQJC,MAAAA,cARI;AASJ5F,MAAAA,MATI;AAUJ6F,MAAAA,mBAVI;AAWJC,MAAAA,gBAXI;AAYJC,MAAAA,iBAZI;AAaJnH,MAAAA,YAbI;AAcJmB,MAAAA;AAdI,QAeFtD,OAfJ,CAFM,CAkBN;;AACA,QAAImJ,cAAc,IAAI,CAAlB,IAAuBD,YAAY,CAAC/H,MAAb,KAAwB,CAAnD,EAAsD;AACpD;AACD;;AAED,QAAM;AACJoI,MAAAA,qBADI;AAEJC,MAAAA,oBAFI;AAGJC,MAAAA,2BAHI;AAIJ1C,MAAAA,WAJI;AAKJ2C,MAAAA;AALI,QAMF5I,KANJ;AAQAtB,IAAAA,OAAO,CAACiG,SAAR,CAAkBR,KAAlB,EAAyBzB,KAAzB;AAEAhE,IAAAA,OAAO,CAACuC,SAAR;AACA,QAAMH,CAAC,GAAG+H,IAAI,CAACC,GAAL,CAASxH,IAAT,EAAekB,KAAK,GAAG6F,cAAR,GAAyBE,gBAAzB,GAA4CpE,KAA3D,CAAV;AACAzF,IAAAA,OAAO,CAACyD,SAAR,GAAoBwG,2BAApB;;AACA,QAAIT,iBAAiB,GAAG,CAAxB,EAA2B;AACzBxJ,MAAAA,OAAO,CAACoE,IAAR,CAAahC,CAAb,EAAgB,CAAhB,EAAmBuH,cAAnB,EAAmCH,iBAAnC;AACD;;AACD,QAAIC,oBAAoB,GAAG,CAA3B,EAA8B;AAC5BzJ,MAAAA,OAAO,CAACoE,IAAR,CACEhC,CADF,EAEE2B,MAAM,GAAGC,KAAT,GAAiB4F,mBAAjB,GAAuCH,oBAFzC,EAGEE,cAHF,EAIEF,oBAJF;AAMD;;AACDzJ,IAAAA,OAAO,CAACkG,IAAR;AAEA,QAAMmE,QAAQ,GACZf,MAAM,IAAIC,MAAV,IAAoBD,MAAM,IAAI7D,KAA9B,IAAuC6D,MAAM,IAAI1G,IAAI,GAAG+G,cAAxD,GACIzM,SAAS,CAACoN,SAAV,CAAoBf,MAApB,EAA4B/I,OAA5B,CADJ,GAEI,IAHN;;AAIA,QACE0J,uBAAuB,IACvBG,QAAQ,KAAK,IADb,IAEAX,YAAY,CAACa,QAAb,CAAsBF,QAAtB,CAHF,EAIE;AACArK,MAAAA,OAAO,CAACyD,SAAR,GAAoByG,uBAApB;AACA,UAAMjH,CAAC,GAAGN,YAAY,CAACT,GAAb,CAAiBmI,QAAjB,CAAV;AACA,UAAMG,SAAS,GAAGV,iBAAiB,CAAC5H,GAAlB,CAAsBmI,QAAtB,CAAlB;AACAjN,MAAAA,aAAa,CAAC6F,CAAD,CAAb;AACA7F,MAAAA,aAAa,CAACoN,SAAD,CAAb;AACAxK,MAAAA,OAAO,CAAC0D,QAAR,CAAiBtB,CAAjB,EAAoBa,CAApB,EAAuB0G,cAAvB,EAAuCa,SAAvC;AACD;;AAEDxK,IAAAA,OAAO,CAACuC,SAAR;;AACA,QAAIyH,oBAAJ,EAA0B;AACxBhK,MAAAA,OAAO,CAACqC,WAAR,GAAsB2H,oBAAtB;AACD;;AACD,QAAIR,iBAAiB,GAAG,CAAxB,EAA2B;AACzBxJ,MAAAA,OAAO,CAACwC,MAAR,CAAeJ,CAAC,GAAG,GAAnB,EAAwB,GAAxB;AACApC,MAAAA,OAAO,CAACyC,MAAR,CAAeL,CAAC,GAAG,GAAnB,EAAwBoH,iBAAiB,GAAG,GAA5C;AACD;;AACD,QAAIC,oBAAoB,GAAG,CAA3B,EAA8B;AAC5B,UAAMxG,EAAC,GAAGc,MAAM,GAAGC,KAAT,GAAiB4F,mBAAjB,GAAuCH,oBAAjD;;AACAzJ,MAAAA,OAAO,CAACwC,MAAR,CAAeJ,CAAC,GAAG,GAAnB,EAAwBa,EAAC,GAAG,GAA5B;AACAjD,MAAAA,OAAO,CAACyC,MAAR,CAAeL,CAAC,GAAG,GAAnB,EAAwBa,EAAC,GAAGwG,oBAAJ,GAA2B,GAAnD;AACD;;AACDzJ,IAAAA,OAAO,CAAC0C,MAAR;AAEA1C,IAAAA,OAAO,CAACyD,SAAR,GAAoB8D,WAApB;AACAvH,IAAAA,OAAO,CAAC2G,SAAR,GAAoB,MAApB;AAEA,QAAM2B,KAAK,GAAGlG,CAAC,GAAG2H,qBAAlB;;AACA,SAAK,IAAI/C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0C,YAAY,CAAC/H,MAAjC,EAAyCqF,CAAC,IAAI,CAA9C,EAAiD;AAC/C,UAAMzG,GAAG,GAAGmJ,YAAY,CAAC1C,CAAD,CAAxB;;AACA,UAAMwD,UAAS,GAAGV,iBAAiB,CAAC5H,GAAlB,CAAsB3B,GAAtB,CAAlB;;AACA,UAAMwI,IAAI,GAAGpG,YAAY,CAACT,GAAb,CAAiB3B,GAAjB,CAAb;AACA,UAAMK,QAAQ,GAAGD,SAAS,CAACuB,GAAV,CAAc3B,GAAd,CAAjB;;AACA,UAAIwI,IAAI,IAAI,IAAR,IAAgByB,UAAS,IAAI,IAA7B,IAAqC5J,QAAQ,IAAI,IAArD,EAA2D;AACzD,YAAM2H,KAAK,GAAGQ,IAAI,GAAGyB,UAAS,GAAG,GAAjC;AACAxK,QAAAA,OAAO,CAACwI,QAAR,CAAiB/H,KAAK,CAACgK,gBAAN,CAAuB7J,QAAvB,CAAjB,EAAmD0H,KAAnD,EAA0DC,KAA1D;AACD;AACF;;AAEDvI,IAAAA,OAAO,CAACiG,SAAR,CAAkB,CAACR,KAAnB,EAA0B,CAACzB,KAA3B;AACD,GArxByC,CAuxB1C;AACA;;;AACA0G,EAAAA,oBAAoB,CAClB1K,OADkB,EAElBH,KAFkB,EAGlBS,MAHkB,EAIlBC,GAJkB,EASlB;AACA,QAAMoK,WAAW,GAAG,MAAMD,oBAAN,CAA2B1K,OAA3B,EAAoCH,KAApC,EAA2CS,MAA3C,EAAmDC,GAAnD,CAApB;AAEA,QAAM;AAAE+I,MAAAA,MAAF;AAAUC,MAAAA,MAAV;AAAkB/I,MAAAA;AAAlB,QAA8BX,KAApC;;AAEA,QAAIyJ,MAAM,IAAI,IAAV,IAAkBC,MAAM,IAAI,IAAhC,EAAsC;AACpC,aAAOoB,WAAP;AACD;;AAED,QAAM;AAAErK,MAAAA,MAAM,EAAEsK,WAAV;AAAuBrK,MAAAA,GAAG,EAAE8J;AAA5B,QAAyCnN,SAAS,CAAC2N,kBAAV,CAC7CvB,MAD6C,EAE7CC,MAF6C,EAG7C/I,OAH6C,CAA/C;;AAMA,QAAIF,MAAM,KAAKsK,WAAX,IAA0BrK,GAAG,KAAK8J,QAAtC,EAAgD;AAC9C,UAAM;AAAES,QAAAA;AAAF,UAAW,KAAKC,6BAAL,CAAmClL,KAAnC,CAAjB;;AACA,UAAI,KAAKmL,0BAAL,CAAgCnL,KAAhC,KAA0CiL,IAA9C,EAAoD;AAClDH,QAAAA,WAAW,CAAC7G,KAAZ,GAAoBgH,IAAI,GAAGtK,OAAO,CAACiF,KAAf,GAAuBkF,WAAW,CAACvI,CAAvD;AACD;AACF;;AACD,WAAOuI,WAAP;AACD;;AAEDK,EAAAA,0BAA0B,CAACnL,KAAD,EAAsC;AAAA;;AAC9D,QAAM;AAAEG,MAAAA,OAAF;AAAWsJ,MAAAA,MAAX;AAAmBC,MAAAA,MAAnB;AAA2B/I,MAAAA,OAA3B;AAAoCC,MAAAA,KAApC;AAA2Ca,MAAAA;AAA3C,QAAqDzB,KAA3D;;AACA,QAAIyJ,MAAM,IAAI,IAAV,IAAkBC,MAAM,IAAI,IAAhC,EAAsC;AACpC,aAAO,KAAP;AACD;;AAED,QAAM;AAAEhJ,MAAAA,GAAF;AAAOD,MAAAA,MAAP;AAAeM,MAAAA,QAAf;AAAyBC,MAAAA;AAAzB,QAAyC3D,SAAS,CAAC+N,iBAAV,CAC7C3B,MAD6C,EAE7CC,MAF6C,EAG7C/I,OAH6C,CAA/C;;AAMA,QACED,GAAG,IAAI,IAAP,IACAD,MAAM,IAAI,IADV,IAEAM,QAAQ,IAAI,IAFZ,IAGAC,WAAW,IAAI,IAHf,IAIA,CAAC1D,UAAU,CAAC+N,YAAX,CAAwBzK,KAAK,CAACQ,OAAN,CAAcJ,WAAd,EAA2BK,IAAnD,CALH,EAME;AACA,aAAO,KAAP;AACD;;AAED,QAAMuG,IAAI,yBAAGhH,KAAK,CAAC0K,WAAN,CAAkBtK,WAAlB,EAA+BD,QAA/B,CAAH,mEAA+C,EAAzD;AACA,QAAM;AAAEkD,MAAAA,KAAK,EAAEsH;AAAT,QAAuB,MAAMV,oBAAN,CAC3B1K,OAD2B,EAE3BH,KAF2B,EAG3BS,MAH2B,EAI3BC,GAJ2B,CAA7B;AAMA,QAAMsH,SAAS,4BACbrH,OAAO,CAACoH,UAAR,CAAmB1F,GAAnB,CAAuBZ,KAAK,CAACF,IAA7B,CADa,yEACyBtD,gBAAgB,CAACuN,kBADzD;AAGArL,IAAAA,OAAO,CAACkD,IAAR;AACAlD,IAAAA,OAAO,CAACoB,IAAR,GAAeE,KAAK,CAACF,IAArB;AAEA,QAAMkK,aAAa,GAAG,KAAKC,wBAAL,CACpBvL,OADoB,EAEpByH,IAFoB,EAGpB2D,SAHoB,EAIpBvD,SAJoB,EAKpBpH,KAAK,CAAC+K,qBAAN,CAA4B3K,WAA5B,EAAyCD,QAAzC,CALoB,CAAtB;AAOAZ,IAAAA,OAAO,CAACqD,OAAR;AAEA,WAAOoE,IAAI,KAAK,EAAT,IAAe6D,aAAa,KAAK7D,IAAxC;AACD;;AAEDsD,EAAAA,6BAA6B,OAe3B;AAAA,QAf4B;AAC5BzB,MAAAA,MAD4B;AAE5BC,MAAAA,MAF4B;AAG5B/I,MAAAA,OAH4B;AAI5Bc,MAAAA;AAJ4B,KAe5B;AACA,QAAMmK,aAAa,GAAG;AAAEX,MAAAA,IAAI,EAAE,IAAR;AAAcY,MAAAA,GAAG,EAAE,IAAnB;AAAyB5H,MAAAA,KAAK,EAAE,IAAhC;AAAsCC,MAAAA,MAAM,EAAE;AAA9C,KAAtB;;AACA,QAAIuF,MAAM,IAAI,IAAV,IAAkBC,MAAM,IAAI,IAA5B,IAAoC,CAAC/I,OAAzC,EAAkD;AAChD,aAAOiL,aAAP;AACD;;AACD,QAAM;AAAEjB,MAAAA,SAAF;AAAarI,MAAAA,WAAb;AAA0B2I,MAAAA,IAA1B;AAAgCY,MAAAA;AAAhC,QAAwCxO,SAAS,CAAC+N,iBAAV,CAC5C3B,MAD4C,EAE5CC,MAF4C,EAG5C/I,OAH4C,CAA9C;AAMApD,IAAAA,aAAa,CAAC0N,IAAD,CAAb;AACA1N,IAAAA,aAAa,CAAC+E,WAAD,CAAb;AACA/E,IAAAA,aAAa,CAACsO,GAAD,CAAb;AACA,QAAM;AAAE5H,MAAAA,KAAK,EAAE6H,SAAT;AAAoB9B,MAAAA;AAApB,QAAyCrJ,OAA/C;AACA,QAAM;AAAEuJ,MAAAA;AAAF,QAA4BzI,KAAlC;AAEA,QAAMwC,KAAK,GAAGjG,SAAS,GAAG,IAAIkM,qBAA9B;AACA,QAAMhG,MAAM,GAAGyG,SAAf,CAlBA,CAmBA;;AACA,QAAMoB,KAAK,GAAGzB,IAAI,CAACC,GAAL,CACZ5J,OAAO,CAACiF,KAAR,GAAgBqF,IAAhB,GAAuB3I,WADX,EAEZwJ,SAAS,GAAG9B,gBAFA,CAAd;AAIA,QAAMgC,UAAU,GAAGD,KAAK,GAAG9H,KAA3B;AACA,QAAMgI,SAAS,GAAGtL,OAAO,CAACwD,KAAR,GAAgB0H,GAAlC;AAEA,WAAO;AAAEZ,MAAAA,IAAI,EAAEe,UAAR;AAAoBH,MAAAA,GAAG,EAAEI,SAAzB;AAAoChI,MAAAA,KAApC;AAA2CC,MAAAA;AAA3C,KAAP;AACD;;AAED9D,EAAAA,sBAAsB,CAACJ,KAAD,EAAmC;AACvD,QAAM;AAAEG,MAAAA,OAAF;AAAWsJ,MAAAA,MAAX;AAAmBC,MAAAA,MAAnB;AAA2BjI,MAAAA;AAA3B,QAAqCzB,KAA3C;AACA,QAAIyJ,MAAM,IAAI,IAAV,IAAkBC,MAAM,IAAI,IAAhC,EAAsC;;AAEtC,QAAI,CAAC,KAAKyB,0BAAL,CAAgCnL,KAAhC,CAAL,EAA6C;AAC3C;AACD;;AAED,QAAM;AACJiL,MAAAA,IAAI,EAAEe,UADF;AAEJH,MAAAA,GAAG,EAAEI,SAFD;AAGJhI,MAAAA,KAAK,EAAEiI,WAHH;AAIJhI,MAAAA,MAAM,EAAEiI;AAJJ,QAKF,KAAKjB,6BAAL,CAAmClL,KAAnC,CALJ;AAOA,QAAM;AACJkK,MAAAA,qBADI;AAEJkC,MAAAA,mBAFI;AAGJC,MAAAA;AAHI,QAIF5K,KAJJ;AAMAtB,IAAAA,OAAO,CAACkD,IAAR;;AACA,QACEgJ,wBAAwB,IACxBL,UAAU,IAAI,IADd,IAEAE,WAAW,IAAI,IAFf,IAGAD,SAAS,IAAI,IAHb,IAIAE,YAAY,IAAI,IAJhB,IAKA1C,MAAM,IAAIuC,UALV,IAMAvC,MAAM,IAAIuC,UAAU,GAAGE,WANvB,IAOAxC,MAAM,IAAIuC,SAPV,IAQAvC,MAAM,IAAIuC,SAAS,GAAGE,YATxB,EAUE;AACAhM,MAAAA,OAAO,CAACyD,SAAR,GAAoByI,wBAApB;AACD,KAZD,MAYO,IAAID,mBAAJ,EAAyB;AAC9BjM,MAAAA,OAAO,CAACyD,SAAR,GAAoBwI,mBAApB;AACD;;AACD,QAAMnN,IAAI,GAAG,KAAKO,OAAL,CAAahC,UAAU,CAACO,aAAxB,CAAb;;AACA,QAAIiO,UAAU,IAAI,IAAd,IAAsBC,SAAS,IAAI,IAAvC,EAA6C;AAC3C9L,MAAAA,OAAO,CAACiG,SAAR,CAAkB4F,UAAU,GAAG9B,qBAA/B,EAAsD+B,SAAS,GAAG,CAAlE;AACD;;AACD9L,IAAAA,OAAO,CAACkG,IAAR,CAAapH,IAAb;AAEAkB,IAAAA,OAAO,CAACqD,OAAR;AACD;;AAl8ByC;;AAq8B5C,eAAevF,gBAAf","sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n dhSortDown,\n dhSortUp,\n vsTriangleDown,\n vsTriangleRight,\n vsLinkExternal,\n IconDefinition,\n} from '@deephaven/icons';\nimport {\n BoxCoordinates,\n Coordinate,\n getOrThrow,\n GridMetrics,\n GridRangeIndex,\n GridRenderer,\n GridRenderState,\n GridThemeType,\n GridUtils,\n VisibleIndex,\n} from '@deephaven/grid';\nimport { Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils, ReverseType } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n AdvancedFilterMap,\n QuickFilterMap,\n AdvancedFilter,\n QuickFilter,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport IrisGridModel from './IrisGridModel';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst ICON_SIZE = 16;\n\nexport type IrisGridRenderState = GridRenderState & {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isSelectingColumn: boolean;\n loadingScrimProgress: number;\n reverseType: ReverseType;\n isFilterBarShown: boolean;\n advancedFilters: AdvancedFilterMap;\n quickFilters: QuickFilterMap;\n};\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nclass IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n constructor() {\n super();\n this.icons = {};\n\n this.initIcons();\n }\n\n icons: Record<string, Path2D>;\n\n initIcons(): void {\n this.setIcon(ICON_NAMES.SORT_UP, dhSortUp);\n this.setIcon(ICON_NAMES.SORT_DOWN, dhSortDown);\n this.setIcon(ICON_NAMES.CARET_DOWN, vsTriangleDown);\n this.setIcon(ICON_NAMES.CARET_RIGHT, vsTriangleRight);\n this.setIcon(ICON_NAMES.CELL_OVERFLOW, vsLinkExternal);\n }\n\n // Scales the icon to be square and match the global ICON_SIZE\n setIcon(name: string, faIcon: IconDefinition): void {\n const path = Array.isArray(faIcon.icon[4])\n ? faIcon.icon[4][0]\n : faIcon.icon[4];\n const icon = new Path2D(path);\n const scaledIcon = new Path2D();\n const scaleMatrix = {\n a: ICON_SIZE / faIcon.icon[0],\n d: ICON_SIZE / faIcon.icon[1],\n };\n scaledIcon.addPath(icon, scaleMatrix);\n this.icons[name] = scaledIcon;\n }\n\n getIcon(name: string): Path2D {\n return this.icons[name];\n }\n\n getSortIcon(sort: Sort | null): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return this.getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return this.getIcon(ICON_NAMES.SORT_DOWN);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isTextType(model.columns[modelColumn].type)) {\n if (value === null || value === '') {\n const originalFont = context.font;\n context.font = `italic ${originalFont}`;\n const displayValue = value === null ? 'null' : 'empty';\n super.drawCellContent(context, state, column, row, displayValue);\n context.font = originalFont;\n return;\n }\n }\n super.drawCellContent(context, state, column, row);\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns, columns } = model;\n const { maxY, visibleColumnWidths, visibleColumnXs } = metrics;\n if (groupedColumns.length === 0 || !theme.groupedColumnDividerColor) {\n return;\n }\n\n const lastGroupedColumn = groupedColumns[groupedColumns.length - 1];\n const modelIndex = columns.findIndex(\n c => c.name === lastGroupedColumn.name\n );\n const columnX = visibleColumnXs.get(modelIndex);\n const columnWidth = visibleColumnWidths.get(modelIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { visibleRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = visibleRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (hoverSelectColumn == null || !theme.linkerColumnHoverBackgroundColor) {\n return;\n }\n\n const { visibleColumnWidths, visibleColumnXs, maxY } = metrics;\n\n const x = visibleColumnXs.get(hoverSelectColumn);\n const columnWidth = visibleColumnWidths.get(hoverSelectColumn);\n assertNotNull(x);\n assertNotNull(columnWidth);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can just change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverseType } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n\n let color;\n if (hasReverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n hasReverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = getOrThrow(modelColumns, column);\n\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort);\n if (!icon) {\n return;\n }\n\n const { columnHeaderHeight, gridX } = metrics;\n\n const x = gridX + columnX + columnWidth - 13;\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n const gradientWidth = 12;\n const gradientX = x - 3;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n const gradient = context.createLinearGradient(\n gradientX,\n 0,\n gradientX + 5,\n 0\n );\n gradient.addColorStop(0, `${theme.headerBackgroundColor}00`);\n gradient.addColorStop(1, `${theme.headerBackgroundColor}CD`);\n\n context.fillStyle = gradient;\n context.fillRect(gradientX, 0, gradientWidth, columnHeaderHeight);\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.font;\n context.textAlign = 'left';\n\n if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(visibleColumnXs, column);\n const columnWidth = getOrThrow(visibleColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(visibleColumnWidths, column);\n const columnX = getOrThrow(visibleColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text) {\n const { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (!fontWidth) {\n fontWidth = context.measureText('8').width;\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\n }\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text) {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const columnX = visibleColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n\n if (\n filterBarActiveBackgroundColor &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawTreeMarker(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n columnX: Coordinate,\n rowY: Coordinate,\n treeBox: BoxCoordinates,\n color: string,\n isExpanded: boolean\n ): void {\n context.save();\n const { x1, y1 } = treeBox;\n const markerIcon = isExpanded\n ? this.getIcon(ICON_NAMES.CARET_DOWN)\n : this.getIcon(ICON_NAMES.CARET_RIGHT);\n const iconX = columnX + x1 - 2;\n const iconY = rowY + y1 + 2.5;\n\n context.fillStyle = color;\n context.textAlign = 'center';\n context.translate(iconX, iconY);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n visibleRowHeights,\n visibleRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX && mouseY && mouseX >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = visibleRowHeights.get(row);\n const rowY = visibleRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n // This will shrink the size the text may take when the overflow button is rendered\n // The text will truncate to a smaller width and won't overlap the button\n getTextRenderMetrics(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): {\n width: number;\n x: Coordinate;\n y: Coordinate;\n } {\n const textMetrics = super.getTextRenderMetrics(context, state, column, row);\n\n const { mouseX, mouseY, metrics } = state;\n\n if (mouseX == null || mouseY == null) {\n return textMetrics;\n }\n\n const { column: mouseColumn, row: mouseRow } = GridUtils.getGridPointFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (column === mouseColumn && row === mouseRow) {\n const { left } = this.getCellOverflowButtonPosition(state);\n if (this.shouldRenderOverflowButton(state) && left) {\n textMetrics.width = left - metrics.gridX - textMetrics.x;\n }\n }\n return textMetrics;\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n const { context, mouseX, mouseY, metrics, model, theme } = state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n const { row, column, modelRow, modelColumn } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (\n row == null ||\n column == null ||\n modelRow == null ||\n modelColumn == null ||\n !TableUtils.isStringType(model.columns[modelColumn].type)\n ) {\n return false;\n }\n\n const text = model.textForCell(modelColumn, modelRow) ?? '';\n const { width: textWidth } = super.getTextRenderMetrics(\n context,\n state,\n column,\n row\n );\n const fontWidth =\n metrics.fontWidths.get(theme.font) ?? IrisGridRenderer.DEFAULT_FONT_WIDTH;\n\n context.save();\n context.font = theme.font;\n\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n model.truncationCharForCell(modelColumn, modelRow)\n );\n context.restore();\n\n return text !== '' && truncatedText !== text;\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, columnWidth, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n assertNotNull(left);\n assertNotNull(columnWidth);\n assertNotNull(top);\n const { width: gridWidth, verticalBarWidth } = metrics;\n const { cellHorizontalPadding } = theme;\n\n const width = ICON_SIZE + 2 * cellHorizontalPadding;\n const height = rowHeight;\n // Right edge of column or of visible grid, whichever is smaller\n const right = Math.min(\n metrics.gridX + left + columnWidth,\n gridWidth - verticalBarWidth\n );\n const buttonLeft = right - width;\n const buttonTop = metrics.gridY + top;\n\n return { left: buttonLeft, top: buttonTop, width, height };\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = this.getIcon(ICON_NAMES.CELL_OVERFLOW);\n if (buttonLeft != null && buttonTop != null) {\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\n }\n context.fill(icon);\n\n context.restore();\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
@@ -24,21 +24,24 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
24
24
  readonly none: null;
25
25
  };
26
26
  /**
27
- * Get filter condition for quick filter with existed column filter and the new filter to be applied,
28
- * returns new filter if filters are not additive.
29
- * if filters are additive, returns filter conditions combined with 'and'.
27
+ * Get filter condition for quick filter and combines with a new filter using the operator specified,
28
+ * returns new filter if no operator supplied.
30
29
  * @param columnFilter
31
30
  * @param newColumnFilter
32
- * @param additive
31
+ * @param operator
33
32
  */
34
- static getQuickFilterCondition(columnFilter: FilterCondition | null | undefined, newColumnFilter: FilterCondition, additive?: boolean): FilterCondition;
33
+ static getQuickFilterCondition(columnFilter: FilterCondition | null | undefined, newColumnFilter: FilterCondition, operator?: '&&' | '||' | null): FilterCondition;
35
34
  /**
36
- * combines filter text with '&&' if filters are additive
35
+ * combines filter text with operator if declared
37
36
  * @param filterText
38
37
  * @param newFilterText
39
- * @param additive
38
+ * @param operator
40
39
  */
41
- static getQuickFilterText(filterText: string | null | undefined, newFilterText: string, additive?: boolean): string;
40
+ static getQuickFilterText(filterText: string | null | undefined, newFilterText: string, operator?: '&&' | '||' | null): string;
41
+ /**
42
+ * Converts operator to text string,
43
+ */
44
+ static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or';
42
45
  /**
43
46
  * Gets an equality filter for the provided numeric value
44
47
  * @param column The column to make the filter for
@@ -55,11 +58,11 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
55
58
  onContextMenu(gridPoint: GridPoint, grid: Grid, event: React.MouseEvent<Element, MouseEvent>): EventHandlerResult;
56
59
  dateFormatActions(column: Column): ContextAction[];
57
60
  numberFormatActions(column: Column): ContextAction[] | null;
58
- stringFilterActions(column: Column, valueText: string | null, value?: unknown, quickFilter?: QuickFilter, additive?: boolean): ContextAction[];
59
- numberFilterActions(column: Column, valueText: string, value: unknown, quickFilter?: QuickFilter | null, additive?: boolean): ContextAction[];
60
- booleanFilterActions(column: Column, valueText: string | null, quickFilter?: QuickFilter | null, additive?: boolean): ContextAction[];
61
- dateFilterActions(column: Column, valueText: string, previewValue: unknown, value: unknown, quickFilter?: QuickFilter | null, additive?: boolean): ContextAction[];
62
- nullFilterActions(column: Column, quickFilter?: QuickFilter, additive?: boolean): ContextAction[];
61
+ stringFilterActions(column: Column, valueText: string | null, value?: unknown, quickFilter?: QuickFilter, operator?: '&&' | '||' | null): ContextAction[];
62
+ numberFilterActions(column: Column, valueText: string, value: unknown, quickFilter?: QuickFilter | null, operator?: '&&' | '||' | null): ContextAction[];
63
+ booleanFilterActions(column: Column, valueText: string | null, quickFilter?: QuickFilter | null, operator?: '&&' | '||' | null): ContextAction[];
64
+ dateFilterActions(column: Column, valueText: string, previewValue: unknown, value: unknown, quickFilter?: QuickFilter | null, operator?: '&&' | '||' | null): ContextAction[];
65
+ nullFilterActions(column: Column, quickFilter?: QuickFilter, operator?: '&&' | '||' | null): ContextAction[];
63
66
  sortByActions(column: Column, modelColumn: ModelIndex, columnSort: Sort | null): ContextAction[];
64
67
  additionalSortActions(column: Column, columnIndex: ModelIndex): ContextAction[];
65
68
  checkColumnSort(columnSort?: Sort | null, direction?: SortDirection, isAbs?: boolean): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}