@deephaven/iris-grid 0.6.1 → 0.6.3-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +67 -18
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridRenderer.js +4 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +2 -1
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +1 -1
- package/dist/IrisGridUtils.js +32 -32
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PendingDataBottomBar.js +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableUtils.js +1 -1
- package/dist/ToastBottomBar.js +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/memoizeClear.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/InputEditor.js +1 -1
- package/dist/sidebar/RollupRows.js +10 -10
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +5 -5
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +4 -4
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -12
|
@@ -3,7 +3,7 @@ import classNames from 'classnames';
|
|
|
3
3
|
import { CSSTransition } from 'react-transition-group';
|
|
4
4
|
import { ThemeExport } from '@deephaven/components';
|
|
5
5
|
import "./IrisGridBottomBar.css";
|
|
6
|
-
export var IrisGridBottomBar =
|
|
6
|
+
export var IrisGridBottomBar = _ref => {
|
|
7
7
|
var {
|
|
8
8
|
animation = 'iris-grid-bottom-bar-slide-up',
|
|
9
9
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridModelUpdater.jsx"],"names":["React","useEffect","useMemo","PropTypes","dh","APIPropTypes","Formatter","IrisGridModel","IrisGridUtils","TableUtils","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","memo","model","modelColumns","top","bottom","left","right","filter","formatter","reverseType","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","columns","getModelViewportColumns","sortsForModel","REVERSE_TYPE","NONE","push","Table","reverse","sort","isCustomColumnsAvailable","setViewport","isRollupAvailable","isSelectDistinctAvailable","isTotalsAvailable","displayName","propTypes","instanceOf","isRequired","arrayOf","Column","number","FilterCondition","Sort","oneOf","Object","values","string","shape","RollupConfig","Map","defaultProps"],"mappings":"AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,OAA3B,QAA0C,OAA1C;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,EAAP,IAAaD,SAAS,IAAIE,YAA1B,QAA8C,uBAA9C;OACOC,S;OACAC,a;OACAC,a;OACAC,U;AAEP,IAAMC,mBAAmB,GAAG,CAA5B;AAEA;AACA;AACA;;AACA,IAAMC,oBAAoB,gBAAGX,KAAK,CAACY,IAAN,CAC3B,
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridModelUpdater.jsx"],"names":["React","useEffect","useMemo","PropTypes","dh","APIPropTypes","Formatter","IrisGridModel","IrisGridUtils","TableUtils","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","memo","model","modelColumns","top","bottom","left","right","filter","formatter","reverseType","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","columns","getModelViewportColumns","sortsForModel","REVERSE_TYPE","NONE","push","Table","reverse","sort","isCustomColumnsAvailable","setViewport","isRollupAvailable","isSelectDistinctAvailable","isTotalsAvailable","displayName","propTypes","instanceOf","isRequired","arrayOf","Column","number","FilterCondition","Sort","oneOf","Object","values","string","shape","RollupConfig","Map","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Formatter from './Formatter';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridUtils from './IrisGridUtils';\nimport TableUtils from './TableUtils';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\n/**\n * React component to keep IrisGridModel in sync\n */\nconst IrisGridModelUpdater = React.memo(\n ({\n model,\n modelColumns,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n reverseType,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig,\n totalsConfig,\n selectDistinctColumns,\n pendingRowCount,\n pendingDataMap,\n }) => {\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n\n useEffect(() => {\n model.filter = filter;\n }, [model, filter]);\n useEffect(() => {\n const sortsForModel = [...sorts];\n if (reverseType !== TableUtils.REVERSE_TYPE.NONE) {\n sortsForModel.push(dh.Table.reverse());\n }\n model.sort = sortsForModel;\n }, [model, sorts, reverseType]);\n useEffect(() => {\n model.formatter = formatter;\n }, [model, formatter]);\n useEffect(() => {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n }, [model, customColumns]);\n useEffect(() => {\n model.setViewport(top, bottom, columns);\n }, [model, top, bottom, columns]);\n useEffect(() => {\n if (model.isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n }, [model, model.isRollupAvailable, rollupConfig]);\n useEffect(() => {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n }, [model, selectDistinctColumns]);\n useEffect(() => {\n if (model.isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n }, [model, model.isTotalsAvailable, totalsConfig]);\n useEffect(() => {\n model.pendingRowCount = pendingRowCount;\n }, [model, pendingRowCount]);\n useEffect(() => {\n model.pendingDataMap = pendingDataMap;\n }, [model, pendingDataMap]);\n\n return null;\n }\n);\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nIrisGridModelUpdater.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n modelColumns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n top: PropTypes.number.isRequired,\n bottom: PropTypes.number.isRequired,\n left: PropTypes.number,\n right: PropTypes.number,\n filter: PropTypes.arrayOf(APIPropTypes.FilterCondition).isRequired,\n sorts: PropTypes.arrayOf(APIPropTypes.Sort).isRequired,\n reverseType: PropTypes.oneOf(Object.values(TableUtils.REVERSE_TYPE)),\n customColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n movedColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n hiddenColumns: PropTypes.arrayOf(PropTypes.number).isRequired,\n alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n rollupConfig: APIPropTypes.RollupConfig,\n totalsConfig: PropTypes.shape({}),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n pendingRowCount: PropTypes.number,\n pendingDataMap: PropTypes.instanceOf(Map),\n};\n\nIrisGridModelUpdater.defaultProps = {\n left: null,\n right: null,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: null,\n totalsConfig: null,\n selectDistinctColumns: [],\n pendingRowCount: 0,\n pendingDataMap: new Map(),\n};\n\nexport default IrisGridModelUpdater;\n"],"file":"IrisGridModelUpdater.js"}
|
package/dist/IrisGridRenderer.js
CHANGED
|
@@ -602,7 +602,10 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
602
602
|
|
|
603
603
|
drawTreeMarker(context, state, columnX, rowY, treeBox, color, isExpanded) {
|
|
604
604
|
context.save();
|
|
605
|
-
var
|
|
605
|
+
var {
|
|
606
|
+
x1,
|
|
607
|
+
y1
|
|
608
|
+
} = treeBox;
|
|
606
609
|
var markerIcon = isExpanded ? this.getIcon(ICON_NAMES.CARET_DOWN) : this.getIcon(ICON_NAMES.CARET_RIGHT);
|
|
607
610
|
var iconX = columnX + x1 - 2;
|
|
608
611
|
var iconY = rowY + y1 + 2.5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","ICON_SCALE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","Path2D","icon","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGridLines","context","drawGroupedColumnLine","drawPendingRowLine","metrics","model","theme","groupedColumns","columns","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","drawHeaderBar","headerReverseBarColor","headerSortBarColor","reverseHeaderBarHeight","sortHeaderBarHeight","color","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","column","modelColumns","modelColumn","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","scale","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarSeparatorColor","y1","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","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","modelRows","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","row","modelRow","textForRowFooter"],"mappings":"AAAA;;AACA;;AACA;AACA,SACEA,UADF,EAEEC,QAFF,EAGEC,cAHF,EAIEC,eAJF,QAKO,kBALP;AAMA,SAASC,YAAT,EAAuBC,SAAvB,QAAwC,iBAAxC;OACOC,U;AAEP,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;AAJkB,CAAd,CAAnB;AAOA,IAAMC,UAAU,GAAG,IAAnB;AAEA;AACA;AACA;;AACA,MAAMC,gBAAN,SAA+BX,YAA/B,CAA4C;AACtB,SAAbY,aAAa,CAACC,cAAD,EAAiBC,WAAjB,EAA8B;AAChD,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;AAEA,SAAKC,SAAL;AACD;;AAEDA,EAAAA,SAAS,GAAG;AACV,SAAKC,KAAL,GAAa,EAAb;AAEA,SAAKC,OAAL,CAAalB,UAAU,CAACG,OAAxB,EAAiCT,QAAjC;AACA,SAAKwB,OAAL,CAAalB,UAAU,CAACI,SAAxB,EAAmCX,UAAnC;AACA,SAAKyB,OAAL,CAAalB,UAAU,CAACK,UAAxB,EAAoCV,cAApC;AACA,SAAKuB,OAAL,CAAalB,UAAU,CAACM,WAAxB,EAAqCV,eAArC;AACD;;AAEDsB,EAAAA,OAAO,CAACC,IAAD,EAAOC,MAAP,EAAe;AACpB,SAAKH,KAAL,CAAWE,IAAX,IAAmB,IAAIE,MAAJ,CAAWD,MAAM,CAACE,IAAP,CAAY,CAAZ,CAAX,CAAnB;AACD;;AAEDC,EAAAA,OAAO,CAACJ,IAAD,EAAO;AACZ,WAAO,KAAKF,KAAL,CAAWE,IAAX,CAAP;AACD;;AAEDK,EAAAA,WAAW,CAACC,IAAD,EAAO;AAChB,QAAI,CAACA,IAAL,EAAW;AACT,aAAO,IAAP;AACD;;AACD,QAAIA,IAAI,CAACC,SAAL,KAAmB3B,UAAU,CAAC4B,aAAX,CAAyBC,SAAhD,EAA2D;AACzD,aAAO,IAAIP,MAAJ,CAAW,KAAKE,OAAL,CAAavB,UAAU,CAACG,OAAxB,CAAX,CAAP;AACD;;AACD,QAAIsB,IAAI,CAACC,SAAL,KAAmB3B,UAAU,CAAC4B,aAAX,CAAyBE,UAAhD,EAA4D;AAC1D,aAAO,IAAIR,MAAJ,CAAW,KAAKE,OAAL,CAAavB,UAAU,CAACI,SAAxB,CAAX,CAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAED0B,EAAAA,UAAU,CAACC,KAAD,EAAQ;AAChB,UAAMD,UAAN,CAAiBC,KAAjB;AAEA,SAAKC,SAAL,CAAeD,KAAf;AACD;;AAEDE,EAAAA,aAAa,CAACC,OAAD,EAAUH,KAAV,EAAiB;AAC5B,UAAME,aAAN,CAAoBC,OAApB,EAA6BH,KAA7B;AAEA,SAAKI,qBAAL,CAA2BD,OAA3B,EAAoCH,KAApC;AAEA,SAAKK,kBAAL,CAAwBF,OAAxB,EAAiCH,KAAjC;AACD;;AAEDI,EAAAA,qBAAqB,CAACD,OAAD,EAAUH,KAAV,EAAiB;AACpC,QAAM;AAAEM,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBC,MAAAA;AAAlB,QAA4BR,KAAlC;AACA,QAAM;AAAES,MAAAA,cAAF;AAAkBC,MAAAA;AAAlB,QAA8BH,KAApC;AACA,QAAM;AAAEI,MAAAA,IAAF;AAAQC,MAAAA,mBAAR;AAA6BC,MAAAA;AAA7B,QAAiDP,OAAvD;;AACA,QAAIG,cAAc,CAACK,MAAf,KAA0B,CAA1B,IAA+B,CAACN,KAAK,CAACO,yBAA1C,EAAqE;AACnE;AACD;;AAED,QAAMC,iBAAiB,GAAGP,cAAc,CAACA,cAAc,CAACK,MAAf,GAAwB,CAAzB,CAAxC;AACA,QAAMG,UAAU,GAAGP,OAAO,CAACQ,SAAR,CACjBC,CAAC,IAAIA,CAAC,CAAC/B,IAAF,KAAW4B,iBAAiB,CAAC5B,IADjB,CAAnB;AAGA,QAAMgC,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;AAEAnB,IAAAA,OAAO,CAACqB,WAAR,GAAsBhB,KAAK,CAACO,yBAA5B;AACAZ,IAAAA,OAAO,CAACsB,SAAR,GAAoB,CAApB;AACAtB,IAAAA,OAAO,CAACuB,SAAR;AACAvB,IAAAA,OAAO,CAACwB,MAAR,CAAeJ,CAAf,EAAkB,CAAlB;AACApB,IAAAA,OAAO,CAACyB,MAAR,CAAeL,CAAf,EAAkBZ,IAAlB;AACAR,IAAAA,OAAO,CAAC0B,MAAR;AACD;;AAEDxB,EAAAA,kBAAkB,CAACF,OAAD,EAAUH,KAAV,EAAiB;AACjC,QAAM;AAAEM,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBC,MAAAA;AAAlB,QAA4BR,KAAlC;AACA,QAAM;AAAE8B,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAAyBzB,OAA/B;AACA,QAAM;AAAE0B,MAAAA;AAAF,QAAsBzB,KAA5B;;AACA,QAAIyB,eAAe,IAAI,CAAvB,EAA0B;AACxB;AACD;;AAED,QAAMC,eAAe,GACnB1B,KAAK,CAAC2B,QAAN,GAAiB3B,KAAK,CAACyB,eAAvB,GAAyCzB,KAAK,CAAC4B,sBADjD;AAEA,QAAIC,CAAC,GAAGN,YAAY,CAACT,GAAb,CAAiBY,eAAjB,CAAR;;AACA,QAAIG,CAAC,IAAI,IAAT,EAAe;AACb;AACD;;AAEDA,IAAAA,CAAC,IAAI,GAAL;AACAjC,IAAAA,OAAO,CAACkC,IAAR;AACAlC,IAAAA,OAAO,CAACmC,WAAR,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB;AACAnC,IAAAA,OAAO,CAACqB,WAAR,GAAsBhB,KAAK,CAAC+B,gBAA5B;AACApC,IAAAA,OAAO,CAACsB,SAAR,GAAoB,CAApB;AACAtB,IAAAA,OAAO,CAACuB,SAAR;AACAvB,IAAAA,OAAO,CAACwB,MAAR,CAAe,CAAf,EAAkBS,CAAlB;AACAjC,IAAAA,OAAO,CAACyB,MAAR,CAAeG,IAAf,EAAqBK,CAArB;AACAjC,IAAAA,OAAO,CAAC0B,MAAR;AACA1B,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDC,EAAAA,oBAAoB,CAACtC,OAAD,EAAUH,KAAV,EAAiB;AACnC,QAAM;AAAEQ,MAAAA,KAAF;AAASF,MAAAA,OAAT;AAAkBoC,MAAAA;AAAlB,QAAwC1C,KAA9C;;AACA,QAAI0C,iBAAiB,IAAI,IAArB,IAA6B,CAAClC,KAAK,CAACmC,gCAAxC,EAA0E;AACxE;AACD;;AAED,QAAM;AAAE/B,MAAAA,mBAAF;AAAuBC,MAAAA,eAAvB;AAAwCF,MAAAA;AAAxC,QAAiDL,OAAvD;AAEA,QAAMiB,CAAC,GAAGV,eAAe,CAACQ,GAAhB,CAAoBqB,iBAApB,CAAV;AACA,QAAMpB,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBqB,iBAAxB,CAApB;AAEAvC,IAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAACmC,gCAA1B;AACAxC,IAAAA,OAAO,CAAC0C,QAAR,CAAiBtB,CAAjB,EAAoB,CAApB,EAAuBD,WAAvB,EAAoCX,IAApC;AACD;;AAEDmC,EAAAA,iBAAiB,CAAC3C,OAAD,EAAUH,KAAV,EAAiB;AAChC,QAAM;AAAE+C,MAAAA;AAAF,QAAwB/C,KAA9B;;AACA,QAAI,CAAC+C,iBAAL,EAAwB;AACtB,YAAMD,iBAAN,CAAwB3C,OAAxB,EAAiCH,KAAjC;AACD;AACF;;AAEDC,EAAAA,SAAS,CAACD,KAAD,EAAQ;AACf,QAAM;AAAEG,MAAAA,OAAF;AAAW6C,MAAAA,oBAAX;AAAiC1C,MAAAA,OAAjC;AAA0CE,MAAAA;AAA1C,QAAoDR,KAA1D;;AACA,QAAIgD,oBAAoB,IAAI,IAA5B,EAAkC;AAChC;AACD;;AAED,QAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA,MAAT;AAAiBC,MAAAA;AAAjB,QAA2B7C,OAAjC;AACA,QAAM;AAAE8C,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAgC7C,KAAtC;AAEAL,IAAAA,OAAO,CAACkC,IAAR,GATe,CAWf;;AACAlC,IAAAA,OAAO,CAACmD,wBAAR,GAAmC,OAAnC;AACAnD,IAAAA,OAAO,CAACrB,MAAR,kBAAyBsE,aAAzB;AACAjD,IAAAA,OAAO,CAACyC,SAAR,GAAoBS,UAApB,CAde,CAgBf;;AACAlD,IAAAA,OAAO,CAACuB,SAAR;AACAvB,IAAAA,OAAO,CAACoD,IAAR,CAAa,CAAb,EAAgBJ,KAAhB,EAAuBF,KAAvB,EAA8BC,MAAM,GAAGC,KAAvC;AACAhD,IAAAA,OAAO,CAACqD,IAAR,GAnBe,CAqBf;;AACArD,IAAAA,OAAO,CAAC0C,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;AAOA7C,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDiB,EAAAA,iBAAiB,CAACtD,OAAD,EAAUH,KAAV,EAAiB;AAChC,UAAMyD,iBAAN,CAAwBtD,OAAxB,EAAiCH,KAAjC;AAEA,QAAM;AAAEQ,MAAAA,KAAF;AAASF,MAAAA,OAAT;AAAkBC,MAAAA,KAAlB;AAAyBmD,MAAAA;AAAzB,QAAyC1D,KAA/C;AACA,QAAM;AAAE2D,MAAAA;AAAF,QAAyBrD,OAA/B;AAEA,SAAKsD,iBAAL,CAAuBzD,OAAvB,EAAgCH,KAAhC;;AAEA,QAAI2D,kBAAkB,IAAI,CAA1B,EAA6B;AAC3B;AACD;;AAED,QAAM;AAAEjE,MAAAA;AAAF,QAAWa,KAAjB,CAZgC,CAahC;;AACA,QAAIb,IAAI,CAACoB,MAAL,KAAgB,CAApB,EAAuB;AACrB,UAAM+C,UAAU,GAAGH,WAAW,KAAK1F,UAAU,CAAC8F,YAAX,CAAwBC,IAA3D;AACA,WAAKC,aAAL,CACE7D,OADF,EAEEH,KAFF,EAGE6D,UAAU,GAAGrD,KAAK,CAACyD,qBAAT,GAAiCzD,KAAK,CAAC0D,kBAHnD,EAIEL,UAAU,GAAGrD,KAAK,CAAC2D,sBAAT,GAAkC3D,KAAK,CAAC4D,mBAJpD;AAMD,KARD,MAQO,IAAI1E,IAAI,CAACoB,MAAL,GAAc,CAAlB,EAAqB;AAC1B;AACA;AACA,WACE;AACA4C,MAAAA,WAAW,KAAK1F,UAAU,CAAC8F,YAAX,CAAwBC,IAF1C,EAGE;AACA,aAAKC,aAAL,CACE7D,OADF,EAEEH,KAFF,EAGEQ,KAAK,CAACyD,qBAHR,EAIEzD,KAAK,CAAC2D,sBAJR,EAKE,KALF;AAOD;;AACD,WAAKH,aAAL,CACE7D,OADF,EAEEH,KAFF,EAGEQ,KAAK,CAAC0D,kBAHR,EAIE1D,KAAK,CAAC4D,mBAJR;AAMD;AACF;;AAEDJ,EAAAA,aAAa,CAAC7D,OAAD,EAAUH,KAAV,EAAiBqE,KAAjB,EAAwBC,SAAxB,EAAoD;AAAA,QAAjBC,QAAiB,uEAAN,IAAM;AAC/D,QAAM;AAAE/D,MAAAA,KAAF;AAASF,MAAAA;AAAT,QAAqBN,KAA3B;AACA,QAAM;AAAE2D,MAAAA,kBAAF;AAAsBV,MAAAA;AAAtB,QAAgC3C,OAAtC,CAF+D,CAG/D;AACA;AACA;;AACA,QAAIkE,MAAM,GAAG,CAAb;;AACA,QAAI,CAACD,QAAL,EAAe;AACbC,MAAAA,MAAM,GAAGF,SAAT;AACD;;AACDnE,IAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAACiE,oBAA1B;AACAtE,IAAAA,OAAO,CAAC0C,QAAR,CACE,CADF,EAEEc,kBAAkB,GAAGW,SAArB,GAAiC,CAAjC,GAAqCE,MAFvC,EAGEvB,KAHF,EAIEqB,SAAS,GAAG,CAJd;AAMAnE,IAAAA,OAAO,CAACyC,SAAR,GAAoByB,KAApB;AACAlE,IAAAA,OAAO,CAAC0C,QAAR,CACE,CADF,EAEEc,kBAAkB,GAAGW,SAArB,GAAiC,CAAjC,GAAqCE,MAFvC,EAGEvB,KAHF,EAIEqB,SAJF;AAMD;;AAEDI,EAAAA,gBAAgB,CAACvE,OAAD,EAAUH,KAAV,EAAiB2E,MAAjB,EAAyBvD,OAAzB,EAAkCE,WAAlC,EAA+C;AAC7D,UAAMoD,gBAAN,CAAuBvE,OAAvB,EAAgCH,KAAhC,EAAuC2E,MAAvC,EAA+CvD,OAA/C,EAAwDE,WAAxD;AAEA,QAAM;AAAEhB,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBC,MAAAA;AAAlB,QAA4BR,KAAlC;AACA,QAAM;AAAE4E,MAAAA;AAAF,QAAmBtE,OAAzB;AACA,QAAMuE,WAAW,GAAGD,YAAY,CAACvD,GAAb,CAAiBsD,MAAjB,CAApB;AACA,QAAMjF,IAAI,GAAG1B,UAAU,CAAC8G,gBAAX,CAA4BvE,KAAK,CAACb,IAAlC,EAAwCmF,WAAxC,CAAb;AACA,QAAMtF,IAAI,GAAG,KAAKE,WAAL,CAAiBC,IAAjB,CAAb;;AACA,QAAI,CAACH,IAAL,EAAW;AACT;AACD;;AAED,QAAM;AAAEoE,MAAAA,kBAAF;AAAsBoB,MAAAA;AAAtB,QAAgCzE,OAAtC;AAEA,QAAMiB,CAAC,GAAGwD,KAAK,GAAG3D,OAAR,GAAkBE,WAAlB,GAAgC,EAA1C;AACA,QAAM0D,OAAO,GACXtF,IAAI,CAACC,SAAL,KAAmB3B,UAAU,CAAC4B,aAAX,CAAyBC,SAA5C,GAAwD,CAAC,CAAzD,GAA6D,CAAC,EADhE;AAEA,QAAMuC,CAAC,GAAGuB,kBAAkB,GAAG,GAArB,GAA2BqB,OAArC;AACA,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAMC,SAAS,GAAG3D,CAAC,GAAG,CAAtB;AAEApB,IAAAA,OAAO,CAACkC,IAAR;AAEAlC,IAAAA,OAAO,CAACuB,SAAR;AACAvB,IAAAA,OAAO,CAACoD,IAAR,CAAanC,OAAb,EAAsB,CAAtB,EAAyBE,WAAzB,EAAsCqC,kBAAtC;AACAxD,IAAAA,OAAO,CAACqD,IAAR;AAEA,QAAM2B,QAAQ,GAAGhF,OAAO,CAACiF,oBAAR,CACfF,SADe,EAEf,CAFe,EAGfA,SAAS,GAAG,CAHG,EAIf,CAJe,CAAjB;AAMAC,IAAAA,QAAQ,CAACE,YAAT,CAAsB,CAAtB,YAA4B7E,KAAK,CAAC8E,qBAAlC;AACAH,IAAAA,QAAQ,CAACE,YAAT,CAAsB,CAAtB,YAA4B7E,KAAK,CAAC8E,qBAAlC;AAEAnF,IAAAA,OAAO,CAACyC,SAAR,GAAoBuC,QAApB;AACAhF,IAAAA,OAAO,CAAC0C,QAAR,CAAiBqC,SAAjB,EAA4B,CAA5B,EAA+BD,aAA/B,EAA8CtB,kBAA9C;AAEAxD,IAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAAC0D,kBAA1B;AACA/D,IAAAA,OAAO,CAACoF,SAAR,CAAkBhE,CAAlB,EAAqBa,CAArB;AACAjC,IAAAA,OAAO,CAACqF,KAAR,CAAchH,UAAd,EAA0BA,UAA1B;AACA2B,IAAAA,OAAO,CAACsF,IAAR,CAAalG,IAAb;AAEAY,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDoB,EAAAA,iBAAiB,CAACzD,OAAD,EAAUH,KAAV,EAAiB;AAChC,QAAM;AAAE0F,MAAAA,gBAAF;AAAoBC,MAAAA,YAApB;AAAkCC,MAAAA;AAAlC,QAAsD5F,KAA5D;;AAEA,QAAI0F,gBAAJ,EAAsB;AACpB,WAAKG,yBAAL,CAA+B1F,OAA/B,EAAwCH,KAAxC;AACD,KAFD,MAEO,IACJ2F,YAAY,IAAIA,YAAY,CAACG,IAAb,GAAoB,CAArC,IACCF,eAAe,IAAIA,eAAe,CAACE,IAAhB,GAAuB,CAFtC,EAGL;AACA,WAAKC,0BAAL,CAAgC5F,OAAhC,EAAyCH,KAAzC;AACD;AACF;;AAED6F,EAAAA,yBAAyB,CAAC1F,OAAD,EAAUH,KAAV,EAAiB;AACxC,QAAM;AAAEM,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBC,MAAAA,KAAlB;AAAyBmF,MAAAA,YAAzB;AAAuCC,MAAAA;AAAvC,QAA2D5F,KAAjE;AACA,QAAM;AAAEgG,MAAAA;AAAF,QAAsBxF,KAA5B;;AAEA,QAAIwF,eAAe,IAAI,CAAvB,EAA0B;AACxB;AACD;;AAED,QAAM;AACJjB,MAAAA,KADI;AAEJ5B,MAAAA,KAFI;AAGJpB,MAAAA,IAHI;AAIJ6C,MAAAA,YAJI;AAKJqB,MAAAA,cALI;AAMJrF,MAAAA,mBANI;AAOJC,MAAAA;AAPI,QAQFP,OARJ;AAUA,QAAMqD,kBAAkB,GAAGR,KAAK,GAAG6C,eAAnC;AAEA7F,IAAAA,OAAO,CAACkC,IAAR;AAEAlC,IAAAA,OAAO,CAAC+F,IAAR,GAAe1F,KAAK,CAAC0F,IAArB;AACA/F,IAAAA,OAAO,CAACgG,SAAR,GAAoB,MAApB;;AAEA,QACGR,YAAY,IAAIA,YAAY,CAACG,IAAb,GAAoB,CAArC,IACCF,eAAe,IAAIA,eAAe,CAACE,IAAhB,GAAuB,CAF7C,EAGE;AACA;AACA3F,MAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAAC4F,sCAA1B;AACD,KAND,MAMO;AACL;AACAjG,MAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAAC6F,gCAA1B;AACD,KAlCuC,CAoCxC;;;AACAlG,IAAAA,OAAO,CAAC0C,QAAR,CAAiBkC,KAAjB,EAAwBpB,kBAAxB,EAA4C5B,IAA5C,EAAkDiE,eAAe,GAAG,CAApE,EArCwC,CAuCxC;;AACA7F,IAAAA,OAAO,CAACyC,SAAR,GAAoBpC,KAAK,CAACiE,oBAA1B;AACAtE,IAAAA,OAAO,CAAC0C,QAAR,CAAiBkC,KAAjB,EAAwBpB,kBAAkB,GAAGqC,eAArB,GAAuC,CAA/D,EAAkEjE,IAAlE,EAAwE,CAAxE,EAzCwC,CA2CxC;;AACA,QAAIvB,KAAK,CAAC8F,uBAAV,EAAmC;AACjC,UAAMC,EAAE,GAAG5C,kBAAX;AACAxD,MAAAA,OAAO,CAACqB,WAAR,GAAsBhB,KAAK,CAAC8F,uBAA5B;AACAnG,MAAAA,OAAO,CAACuB,SAAR;;AAEA,WAAK,IAAI8E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,cAAc,CAACnF,MAAnC,EAA2C0F,CAAC,IAAI,CAAhD,EAAmD;AACjD,YAAM7B,MAAM,GAAGsB,cAAc,CAACO,CAAD,CAA7B;AACA,YAAM3B,WAAW,GAAGD,YAAY,CAACvD,GAAb,CAAiBsD,MAAjB,CAApB;AACA,YAAMvD,OAAO,GAAGP,eAAe,CAACQ,GAAhB,CAAoBsD,MAApB,CAAhB;AACA,YAAMrD,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBsD,MAAxB,CAApB;;AACA,YAAIpE,KAAK,CAACkG,YAAN,CAAmB5B,WAAnB,KAAmCvD,WAAW,GAAG,CAArD,EAAwD;AACtD,cAAMoF,EAAE,GAAG3B,KAAK,GAAG3D,OAAnB;AACAjB,UAAAA,OAAO,CAACoD,IAAR,CAAamD,EAAE,GAAG,GAAlB,EAAuBH,EAAE,GAAG,GAA5B,EAAiCjF,WAAjC,EAA8C0E,eAAe,GAAG,CAAhE,EAFsD,CAEc;AACrE;AACF;;AACD7F,MAAAA,OAAO,CAAC0B,MAAR;AACD;;AAED,SAAK,IAAI2E,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGP,cAAc,CAACnF,MAAnC,EAA2C0F,EAAC,IAAI,CAAhD,EAAmD;AACjD,UAAM7B,OAAM,GAAGsB,cAAc,CAACO,EAAD,CAA7B;;AACA,UAAMlF,YAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBsD,OAAxB,CAApB;;AACA,UAAMpD,CAAC,GAAGV,eAAe,CAACQ,GAAhB,CAAoBsD,OAApB,IAA8BI,KAAxC;AACA,WAAK4B,wBAAL,CAA8BxG,OAA9B,EAAuCH,KAAvC,EAA8C2E,OAA9C,EAAsDpD,CAAtD,EAAyDD,YAAzD;AACD;;AAEDnB,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDmE,EAAAA,wBAAwB,CAACxG,OAAD,EAAUH,KAAV,EAAiB2E,MAAjB,EAAyBvD,OAAzB,EAAkCE,WAAlC,EAA+C;AACrE,QAAIA,WAAW,IAAI,CAAnB,EAAsB;AACpB;AACD;;AAED,QAAM;AAAEhB,MAAAA,OAAF;AAAWE,MAAAA,KAAX;AAAkBmF,MAAAA,YAAlB;AAAgCC,MAAAA;AAAhC,QAAoD5F,KAA1D;AACA,QAAM;AAAE4E,MAAAA,YAAF;AAAgBzB,MAAAA;AAAhB,QAA0B7C,OAAhC;AACA,QAAM;AACJ0F,MAAAA,eADI;AAEJY,MAAAA,0CAFI;AAGJC,MAAAA,mBAHI;AAIJC,MAAAA,0BAJI;AAKJC,MAAAA;AALI,QAMFvG,KANJ;AAOA,QAAMmD,kBAAkB,GAAGR,KAAK,GAAG6C,eAAnC;AACA,QAAMnB,WAAW,GAAGD,YAAY,CAACvD,GAAb,CAAiBsD,MAAjB,CAApB;AACA,QAAM/F,WAAW,GAAG+G,YAAY,CAACtE,GAAb,CAAiBwD,WAAjB,CAApB;AACA,QAAMlG,cAAc,GAAGiH,eAAe,CAACvE,GAAhB,CAAoBwD,WAApB,CAAvB;;AACA,QAAIjG,WAAW,IAAI,IAAf,IAAuBD,cAAc,IAAI,IAA7C,EAAmD;AACjD;AACD;;AAED,QAAIqI,IAAI,GAAG,IAAX;;AACA,QAAIpI,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM;AAAEoI,QAAAA,IAAI,EAAEC;AAAR,UAAuBrI,WAA7B;AACAoI,MAAAA,IAAI,GAAGC,UAAP;;AACA,UAAI,CAACD,IAAL,EAAW;AACTA,QAAAA,IAAI,GAAGhJ,UAAU,CAACkJ,aAAX,CAAyBtI,WAAW,CAACE,MAArC,CAAP;AACD;;AAED,UAAIkI,IAAJ,EAAU;AACR,YAAM;AAAEG,UAAAA;AAAF,YAAiB7G,OAAvB;AACA,YAAI8G,SAAS,GAAGD,UAAU,CAAC9F,GAAX,CAAelB,OAAO,CAAC+F,IAAvB,CAAhB;;AACA,YAAI,CAACkB,SAAL,EAAgB;AACdA,UAAAA,SAAS,GAAGjH,OAAO,CAACkH,WAAR,CAAoB,GAApB,CAAZ;;AACA,cAAI,CAACD,SAAL,EAAgB;AACdA,YAAAA,SAAS,GAAG,EAAZ;AACD;AACF;;AAED,YAAME,SAAS,GACb,CAAChG,WAAW,GAAGwF,0BAA0B,GAAG,CAA5C,IAAiDM,SADnD;;AAEA,YAAIE,SAAS,IAAI,CAAjB,EAAoB;AAClBN,UAAAA,IAAI,GAAG,EAAP;AACD,SAFD,MAEO,IAAIA,IAAI,CAAClG,MAAL,GAAcwG,SAAlB,EAA6B;AAClCN,UAAAA,IAAI,aAAMA,IAAI,CAACO,SAAL,CAAe,CAAf,EAAkBD,SAAS,GAAG,CAA9B,CAAN,WAAJ;AACD;AACF;AACF;;AAEDnH,IAAAA,OAAO,CAACkC,IAAR;AAEA,QAAM3D,aAAa,GAAGD,gBAAgB,CAACC,aAAjB,CACpBC,cADoB,EAEpBC,WAFoB,CAAtB;;AAIA,QAAIF,aAAJ,EAAmB;AACjB;AACAyB,MAAAA,OAAO,CAACyC,SAAR,GAAoBgE,0CAApB;AACAzG,MAAAA,OAAO,CAAC0C,QAAR,CACEzB,OAAO,GAAG,CADZ,EACe;AACbuC,MAAAA,kBAAkB,GAAG,CAFvB,EAE0B;AACxBrC,MAAAA,WAAW,GAAG,CAHhB,EAGmB;AACjB0E,MAAAA,eAAe,GAAG,CAJpB,CAIsB;AAJtB;AAMD,KATD,MASO;AACL;AACA7F,MAAAA,OAAO,CAACyC,SAAR,GAAoBiE,mBAApB;AACA1G,MAAAA,OAAO,CAACsB,SAAR,GAAoB,CAApB;AACAtB,MAAAA,OAAO,CAACqB,WAAR,GAAsBqF,mBAAtB,CAJK,CAKL;AACA;;AACA,UAAMW,QAAQ,GAAGpG,OAAO,GAAG,CAA3B,CAPK,CAOyB;;AAC9B,UAAMqG,OAAO,GAAG9D,kBAAkB,GAAG,CAArC,CARK,CAQmC;;AACxC,UAAM+D,SAAS,GAAGpG,WAAW,GAAG,CAAhC,CATK,CAS8B;;AACnC,UAAMqG,UAAU,GAAG3B,eAAe,GAAG,CAArC,CAVK,CAUmC;;AACxC7F,MAAAA,OAAO,CAACyH,UAAR,CAAmBJ,QAAnB,EAA6BC,OAA7B,EAAsCC,SAAtC,EAAiDC,UAAjD;AACD;;AAED,QAAIX,IAAJ,EAAU;AACR,UAAMa,KAAK,GAAGzG,OAAO,GAAG0F,0BAAxB;AACA,UAAMgB,KAAK,GAAGnE,kBAAkB,GAAGqC,eAAe,GAAG,GAAvC,GAA6C,CAA3D,CAFQ,CAEsD;;AAC9D7F,MAAAA,OAAO,CAACyC,SAAR,GAAoBmE,WAApB;AACA5G,MAAAA,OAAO,CAAC4H,QAAR,CAAiBf,IAAjB,EAAuBa,KAAvB,EAA8BC,KAA9B;AACD;;AAED3H,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDuD,EAAAA,0BAA0B,CAAC5F,OAAD,EAAUH,KAAV,EAAiB;AACzC,QAAM;AAAEM,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAqBR,KAA3B;AACA,QAAM;AAAEgI,MAAAA,oBAAF;AAAwBC,MAAAA;AAAxB,QAAqDzH,KAA3D;;AAEA,QAAIyH,wBAAwB,IAAI,CAAhC,EAAmC;AACjC;AACD;;AAED,QAAM;AACJlD,MAAAA,KADI;AAEJ5B,MAAAA,KAFI;AAGJpB,MAAAA,IAHI;AAIJkE,MAAAA,cAJI;AAKJrF,MAAAA,mBALI;AAMJC,MAAAA;AANI,QAOFP,OAPJ;AAQA,QAAMqD,kBAAkB,GAAGR,KAAK,GAAG8E,wBAAnC;AAEA9H,IAAAA,OAAO,CAACkC,IAAR,GAlByC,CAoBzC;;AACAlC,IAAAA,OAAO,CAACyC,SAAR,GAAoBoF,oBAApB;AACA7H,IAAAA,OAAO,CAAC0C,QAAR,CAAiBkC,KAAjB,EAAwBpB,kBAAxB,EAA4C5B,IAA5C,EAAkDkG,wBAAlD;;AAEA,SAAK,IAAIzB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,cAAc,CAACnF,MAAnC,EAA2C0F,CAAC,IAAI,CAAhD,EAAmD;AACjD,UAAM7B,MAAM,GAAGsB,cAAc,CAACO,CAAD,CAA7B;AACA,UAAMlF,WAAW,GAAGV,mBAAmB,CAACS,GAApB,CAAwBsD,MAAxB,CAApB;AACA,UAAMpD,CAAC,GAAGV,eAAe,CAACQ,GAAhB,CAAoBsD,MAApB,IAA8BI,KAAxC,CAHiD,CAIjD;;AACA,WAAKmD,yBAAL,CAA+B/H,OAA/B,EAAwCH,KAAxC,EAA+C2E,MAA/C,EAAuDpD,CAAvD,EAA0DD,WAA1D;AACD;;AAEDnB,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAED0F,EAAAA,yBAAyB,CAAC/H,OAAD,EAAUH,KAAV,EAAiB2E,MAAjB,EAAyBvD,OAAzB,EAAkCE,WAAlC,EAA+C;AACtE,QAAIA,WAAW,IAAI,CAAnB,EAAsB;AACpB;AACD;;AAED,QAAM;AAAEhB,MAAAA,OAAF;AAAWE,MAAAA,KAAX;AAAkBmF,MAAAA,YAAlB;AAAgCC,MAAAA;AAAhC,QAAoD5F,KAA1D;AACA,QAAM;AAAE4E,MAAAA,YAAF;AAAgBzB,MAAAA;AAAhB,QAA0B7C,OAAhC;AACA,QAAMuE,WAAW,GAAGD,YAAY,CAACvD,GAAb,CAAiBsD,MAAjB,CAApB;AAEA,QAAM/F,WAAW,GAAG+G,YAAY,CAACtE,GAAb,CAAiBwD,WAAjB,CAApB;AACA,QAAMlG,cAAc,GAAGiH,eAAe,CAACvE,GAAhB,CAAoBwD,WAApB,CAAvB;AAEA,QAAM;AACJoD,MAAAA,wBADI;AAEJE,MAAAA,oBAFI;AAGJC,MAAAA,8BAHI;AAIJvB,MAAAA;AAJI,QAKFrG,KALJ;AAOAL,IAAAA,OAAO,CAACkC,IAAR;AAEA,QAAM3D,aAAa,GAAGD,gBAAgB,CAACC,aAAjB,CACpBC,cADoB,EAEpBC,WAFoB,CAAtB;;AAIA,QAAIA,WAAW,IAAI,IAAf,IAAuBD,cAAc,IAAI,IAA7C,EAAmD;AACjDwB,MAAAA,OAAO,CAACyC,SAAR,GAAoBwF,8BAApB;AACD,KAFD,MAEO,IAAI1J,aAAJ,EAAmB;AACxByB,MAAAA,OAAO,CAACyC,SAAR,GAAoBuF,oBAApB;AACD,KAFM,MAEA;AACLhI,MAAAA,OAAO,CAACyC,SAAR,GAAoBiE,mBAApB;AACD;;AAED,QAAMtF,CAAC,GAAGH,OAAO,GAAG,CAApB,CAjCsE,CAiC/C;;AACvB,QAAMgB,CAAC,GAAGe,KAAK,GAAG8E,wBAAlB;AACA,QAAMP,SAAS,GAAGpG,WAAW,GAAG,CAAhC,CAnCsE,CAmCnC;;AACnC,QAAMqG,UAAU,GAAGM,wBAAwB,GAAG,CAA9C,CApCsE,CAoCrB;;AACjD9H,IAAAA,OAAO,CAAC0C,QAAR,CAAiBtB,CAAjB,EAAoBa,CAApB,EAAuBsF,SAAvB,EAAkCC,UAAlC;AAEAxH,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAED6F,EAAAA,cAAc,CAAClI,OAAD,EAAUH,KAAV,EAAiBoB,OAAjB,EAA0BkH,IAA1B,EAAgCC,OAAhC,EAAyClE,KAAzC,EAAgDmE,UAAhD,EAA4D;AACxErI,IAAAA,OAAO,CAACkC,IAAR;AACA,QAAM,CAACqE,EAAD,EAAKH,EAAL,IAAWgC,OAAjB;AACA,QAAME,UAAU,GAAGD,UAAU,GACzB,KAAKhJ,OAAL,CAAavB,UAAU,CAACK,UAAxB,CADyB,GAEzB,KAAKkB,OAAL,CAAavB,UAAU,CAACM,WAAxB,CAFJ;AAGA,QAAMmK,KAAK,GAAGtH,OAAO,GAAGsF,EAAV,GAAe,CAA7B;AACA,QAAMiC,KAAK,GAAGL,IAAI,GAAG/B,EAAP,GAAY,GAA1B;AAEApG,IAAAA,OAAO,CAACyC,SAAR,GAAoByB,KAApB;AACAlE,IAAAA,OAAO,CAACgG,SAAR,GAAoB,QAApB;AACAhG,IAAAA,OAAO,CAACoF,SAAR,CAAkBmD,KAAlB,EAAyBC,KAAzB;AACAxI,IAAAA,OAAO,CAACqF,KAAR,CAAchH,UAAd,EAA0BA,UAA1B;AACA2B,IAAAA,OAAO,CAACsF,IAAR,CAAagD,UAAb;AACAtI,IAAAA,OAAO,CAACqC,OAAR;AACD;;AAEDoG,EAAAA,cAAc,CAACzI,OAAD,EAAUH,KAAV,EAAiB;AAC7B,QAAM;AAAEM,MAAAA,OAAF;AAAWC,MAAAA,KAAX;AAAkBsI,MAAAA,MAAlB;AAA0BC,MAAAA,MAA1B;AAAkCtI,MAAAA;AAAlC,QAA4CR,KAAlD;AACA,QAAM;AACJmD,MAAAA,KADI;AAEJ4B,MAAAA,KAFI;AAGJhD,MAAAA,IAHI;AAIJgH,MAAAA,SAJI;AAKJC,MAAAA,iBALI;AAMJC,MAAAA,oBANI;AAOJC,MAAAA,YAPI;AAQJC,MAAAA,cARI;AASJjG,MAAAA,MATI;AAUJkG,MAAAA,mBAVI;AAWJC,MAAAA,gBAXI;AAYJC,MAAAA,iBAZI;AAaJxH,MAAAA,YAbI;AAcJmB,MAAAA;AAdI,QAeF3C,OAfJ,CAF6B,CAkB7B;;AACA,QAAI6I,cAAc,IAAI,CAAlB,IAAuBD,YAAY,CAACpI,MAAb,KAAwB,CAAnD,EAAsD;AACpD;AACD;;AAED,QAAM;AACJyI,MAAAA,qBADI;AAEJC,MAAAA,oBAFI;AAGJC,MAAAA,2BAHI;AAIJ1C,MAAAA,WAJI;AAKJ2C,MAAAA;AALI,QAMFlJ,KANJ;AAQAL,IAAAA,OAAO,CAACoF,SAAR,CAAkBR,KAAlB,EAAyB5B,KAAzB;AAEAhD,IAAAA,OAAO,CAACuB,SAAR;AACA,QAAMH,CAAC,GAAGoI,IAAI,CAACC,GAAL,CAAS7H,IAAT,EAAekB,KAAK,GAAGkG,cAAR,GAAyBE,gBAAzB,GAA4CtE,KAA3D,CAAV;AACA5E,IAAAA,OAAO,CAACyC,SAAR,GAAoB6G,2BAApB;;AACA,QAAIT,iBAAiB,GAAG,CAAxB,EAA2B;AACzB7I,MAAAA,OAAO,CAACoD,IAAR,CAAahC,CAAb,EAAgB,CAAhB,EAAmB4H,cAAnB,EAAmCH,iBAAnC;AACD;;AACD,QAAIC,oBAAoB,GAAG,CAA3B,EAA8B;AAC5B9I,MAAAA,OAAO,CAACoD,IAAR,CACEhC,CADF,EAEE2B,MAAM,GAAGC,KAAT,GAAiBiG,mBAAjB,GAAuCH,oBAFzC,EAGEE,cAHF,EAIEF,oBAJF;AAMD;;AACD9I,IAAAA,OAAO,CAACsF,IAAR;AAEA,QAAMoE,QAAQ,GACZhB,MAAM,IAAI9D,KAAV,IAAmB8D,MAAM,IAAI9G,IAAI,GAAGoH,cAApC,GACIpL,SAAS,CAAC+L,SAAV,CAAoBhB,MAApB,EAA4BxI,OAA5B,CADJ,GAEI,IAHN;;AAIA,QAAIuJ,QAAQ,KAAK,IAAb,IAAqBX,YAAY,CAACa,QAAb,CAAsBF,QAAtB,CAAzB,EAA0D;AACxD1J,MAAAA,OAAO,CAACyC,SAAR,GAAoB8G,uBAApB;AACA,UAAMtH,CAAC,GAAGN,YAAY,CAACT,GAAb,CAAiBwI,QAAjB,CAAV;AACA,UAAMG,SAAS,GAAGV,iBAAiB,CAACjI,GAAlB,CAAsBwI,QAAtB,CAAlB;AACA1J,MAAAA,OAAO,CAAC0C,QAAR,CAAiBtB,CAAjB,EAAoBa,CAApB,EAAuB+G,cAAvB,EAAuCa,SAAvC;AACD;;AAED7J,IAAAA,OAAO,CAACuB,SAAR;AACAvB,IAAAA,OAAO,CAACqB,WAAR,GAAsBgI,oBAAtB;;AACA,QAAIR,iBAAiB,GAAG,CAAxB,EAA2B;AACzB7I,MAAAA,OAAO,CAACwB,MAAR,CAAeJ,CAAC,GAAG,GAAnB,EAAwB,GAAxB;AACApB,MAAAA,OAAO,CAACyB,MAAR,CAAeL,CAAC,GAAG,GAAnB,EAAwByH,iBAAiB,GAAG,GAA5C;AACD;;AACD,QAAIC,oBAAoB,GAAG,CAA3B,EAA8B;AAC5B,UAAM7G,EAAC,GAAGc,MAAM,GAAGC,KAAT,GAAiBiG,mBAAjB,GAAuCH,oBAAjD;;AACA9I,MAAAA,OAAO,CAACwB,MAAR,CAAeJ,CAAC,GAAG,GAAnB,EAAwBa,EAAC,GAAG,GAA5B;AACAjC,MAAAA,OAAO,CAACyB,MAAR,CAAeL,CAAC,GAAG,GAAnB,EAAwBa,EAAC,GAAG6G,oBAAJ,GAA2B,GAAnD;AACD;;AACD9I,IAAAA,OAAO,CAAC0B,MAAR;AAEA1B,IAAAA,OAAO,CAACyC,SAAR,GAAoBmE,WAApB;AACA5G,IAAAA,OAAO,CAACgG,SAAR,GAAoB,MAApB;AAEA,QAAM0B,KAAK,GAAGtG,CAAC,GAAGgI,qBAAlB;;AACA,SAAK,IAAI/C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0C,YAAY,CAACpI,MAAjC,EAAyC0F,CAAC,IAAI,CAA9C,EAAiD;AAC/C,UAAMyD,GAAG,GAAGf,YAAY,CAAC1C,CAAD,CAAxB;;AACA,UAAMwD,UAAS,GAAGV,iBAAiB,CAACjI,GAAlB,CAAsB4I,GAAtB,CAAlB;;AACA,UAAM3B,IAAI,GAAGxG,YAAY,CAACT,GAAb,CAAiB4I,GAAjB,CAAb;AACA,UAAMC,QAAQ,GAAGnB,SAAS,CAAC1H,GAAV,CAAc4I,GAAd,CAAjB;AACA,UAAMnC,KAAK,GAAGQ,IAAI,GAAG0B,UAAS,GAAG,GAAjC;AACA7J,MAAAA,OAAO,CAAC4H,QAAR,CAAiBxH,KAAK,CAAC4J,gBAAN,CAAuBD,QAAvB,CAAjB,EAAmDrC,KAAnD,EAA0DC,KAA1D;AACD;;AAED3H,IAAAA,OAAO,CAACoF,SAAR,CAAkB,CAACR,KAAnB,EAA0B,CAAC5B,KAA3B;AACD;;AAloByC;;AAqoB5C,eAAe1E,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} from '@deephaven/icons';\nimport { GridRenderer, GridUtils } from '@deephaven/grid';\nimport TableUtils from './TableUtils';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n});\n\nconst ICON_SCALE = 0.03;\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(advancedFilter, quickFilter) {\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\n this.initIcons();\n }\n\n initIcons() {\n this.icons = {};\n\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 }\n\n setIcon(name, faIcon) {\n this.icons[name] = new Path2D(faIcon.icon[4]);\n }\n\n getIcon(name) {\n return this.icons[name];\n }\n\n getSortIcon(sort) {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_UP));\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_DOWN));\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGridLines(context, state) {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawGroupedColumnLine(context, state) {\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(context, state) {\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 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(context, state) {\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\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(context, state) {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state) {\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 context.fillStyle = scrimColor;\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(context, state) {\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 this.drawHeaderBar(\n context,\n state,\n hasReverse ? theme.headerReverseBarColor : theme.headerSortBarColor,\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(context, state, color, barHeight, interior = true) {\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 context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(context, state, column, columnX, columnWidth) {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = modelColumns.get(column);\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\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.scale(ICON_SCALE, ICON_SCALE);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(context, state) {\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(context, state) {\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 context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n if (theme.filterBarSeparatorColor) {\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 = modelColumns.get(column);\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + columnX;\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\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(context, state, column, columnX, columnWidth) {\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 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');\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) {\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 {\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(context, state) {\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 x = visibleColumnXs.get(column) + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(context, state, column, columnX, columnWidth) {\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 = 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 if (quickFilter == null && advancedFilter == null) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else {\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(context, state, columnX, rowY, treeBox, color, isExpanded) {\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.scale(ICON_SCALE, ICON_SCALE);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(context, state) {\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 >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (mouseRow !== null && floatingRows.includes(mouseRow)) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n context.strokeStyle = floatingGridRowColor;\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 const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n\n context.translate(-gridX, -gridY);\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","ICON_SCALE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","Path2D","icon","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGridLines","context","drawGroupedColumnLine","drawPendingRowLine","metrics","model","theme","groupedColumns","columns","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","drawHeaderBar","headerReverseBarColor","headerSortBarColor","reverseHeaderBarHeight","sortHeaderBarHeight","color","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","column","modelColumns","modelColumn","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","scale","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarSeparatorColor","y1","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","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","modelRows","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","row","modelRow","textForRowFooter"],"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} from '@deephaven/icons';\nimport { GridRenderer, GridUtils } from '@deephaven/grid';\nimport TableUtils from './TableUtils';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n});\n\nconst ICON_SCALE = 0.03;\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(advancedFilter, quickFilter) {\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\n this.initIcons();\n }\n\n initIcons() {\n this.icons = {};\n\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 }\n\n setIcon(name, faIcon) {\n this.icons[name] = new Path2D(faIcon.icon[4]);\n }\n\n getIcon(name) {\n return this.icons[name];\n }\n\n getSortIcon(sort) {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_UP));\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_DOWN));\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGridLines(context, state) {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawGroupedColumnLine(context, state) {\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(context, state) {\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 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(context, state) {\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\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(context, state) {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state) {\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 context.fillStyle = scrimColor;\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(context, state) {\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 this.drawHeaderBar(\n context,\n state,\n hasReverse ? theme.headerReverseBarColor : theme.headerSortBarColor,\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(context, state, color, barHeight, interior = true) {\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 context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(context, state, column, columnX, columnWidth) {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = modelColumns.get(column);\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\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.scale(ICON_SCALE, ICON_SCALE);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(context, state) {\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(context, state) {\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 context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n if (theme.filterBarSeparatorColor) {\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 = modelColumns.get(column);\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + columnX;\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\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(context, state, column, columnX, columnWidth) {\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 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');\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) {\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 {\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(context, state) {\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 x = visibleColumnXs.get(column) + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(context, state, column, columnX, columnWidth) {\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 = 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 if (quickFilter == null && advancedFilter == null) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else {\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(context, state, columnX, rowY, treeBox, color, isExpanded) {\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.scale(ICON_SCALE, ICON_SCALE);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(context, state) {\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 >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (mouseRow !== null && floatingRows.includes(mouseRow)) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n context.strokeStyle = floatingGridRowColor;\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 const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n\n context.translate(-gridX, -gridY);\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAqBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,oCAHW,SAAS,oBA6CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;
|
|
1
|
+
{"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAqBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,oCAHW,SAAS,oBA6CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IA+pBD;;OAEG;IACH,sBAYC;IA3zBC,yBAA8B;IAC9B,gBAA4B;IAE5B,kBAAwB;IACxB,WAAkB;IAClB;;;;aAAoB;IACpB;;;aAAwB;IACxB,2BAA6B;IAC7B,yBAA2B;IAC3B,0BAA6B;IAE7B,iBAAuB;IACvB,6EAA8B;IAC9B,YAAkB;IAClB,oCAAyB;IAKzB,iCAAkC;IAClC,2BAA2B;IAwE7B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAkCD,yCAEC;IAkBD,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAiFD,wEAqDG;IAyBH,iBAeC;IAED;;;;;OAKG;IACH,aAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAUvB;IAED;;;;;OAKG;IACH,cAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CASvB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED,iCAEC;IAUD,kCAQC;IAED,sCAwCC;IAUD,sEAIG;IAEH;;;OAGG;IACH;;;MAcC;IAED;;MAYC;IAED,0BASC;IAiGD,uCAgBC;IA8CD,iFAaC;IAiLD,oEAEE;IAEF,2GASE;IAEF,kHAUE;IAEF,uEASG;IAEH,6GAkBE;IAoBF,6BAEC;IAqBD,sCAWC;IAED,mCAEC;IAED,oCAEC;IAED;;OAEG;IACH,qBAFa,SAAS,CASrB;IAED;;OAEG;IACH,uBAFa,SAAS,CASrB;IA2TG,gDAAqC;CAmH1C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -701,6 +701,7 @@ class IrisGridTableModel extends IrisGridModel {
|
|
|
701
701
|
|
|
702
702
|
log.debug2('copyTotalsData', dataMap);
|
|
703
703
|
this.totalsDataMap = dataMap;
|
|
704
|
+
this.formattedStringData = [];
|
|
704
705
|
}
|
|
705
706
|
/**
|
|
706
707
|
* Use this as the canonical column index since things like layoutHints could have
|