@deephaven/iris-grid 0.16.1-beta.0 → 0.16.1-vite.20
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/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/aggregations/index.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +1 -1
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +1 -1
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +1 -1
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +1 -1
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +1 -1
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridProxyModel.ts"],"names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","isEditableGridModel","isExpandableGridModel","IrisGridTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","log","module","makeModel","table","formatter","inputTable","isTreeTable","IrisGridProxyModel","constructor","model","textForCell","truncationCharForCell","textAlignForCell","colorForCell","backgroundColorForCell","textForColumnHeader","colorForColumnHeader","textForRowHeader","textForRowFooter","isRowMovable","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","Error","depthForRow","getColumnHeaderGroup","getColumnHeaderParentGroup","formatForCell","valueForCell","displayString","isEditableRange","isFilterable","top","bottom","columns","setViewport","snapshot","textSnapshot","valuesTable","editValueForCell","setValueForCell","Promise","resolve","setValueForRanges","setValues","isValidForCell","delete","commitPending","handleModelEvent","bind","originalModel","modelPromise","rollup","selectDistinct","close","cancel","event","debug2","detail","type","dispatchEvent","setModel","debug","oldModel","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","Object","keys","i","length","addEventListener","removeEventListener","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","isColumnFrozen","x","hasExpandableRows","isExportAvailable","isColumnStatisticsAvailable","isValuesTableAvailable","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isFormatColumnsAvailable","isChartBuilderAvailable","isRollupAvailable","isTotalsAvailable","isReversible","movedColumns","movedRows","layoutHints","frontColumns","backColumns","frozenColumns","columnHeaderMaxDepth","updateFrozenColumns","originalColumns","groupedColumns","description","filter","sort","customColumns","formatColumns","rollupConfig","columnNames","map","name","find","column","undefined","totalsConfig","isFilterRequired","isEditable","export","columnStatistics","pendingDataMap","pendingRowCount","count","pendingDataErrors","getColumnIndexByName"],"mappings":";;AAAA;AACA,OAAOA,SAAP,MAAsB,YAAtB;AACA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,wBAAtC;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAEEC,oBAFF,EAGEC,YAHF,QAIO,kBAJP;AAiBA,SAEEC,mBAFF,EAGEC,qBAHF,QAMO,iBANP;OAOOC,kB;OACAC,sB;OACAC,a;SAOEC,4B;AAET,IAAMC,GAAG,GAAGT,GAAG,CAACU,MAAJ,CAAW,oBAAX,CAAZ;;AAEA,SAASC,SAAT,CACEC,KADF,EAEEC,SAFF,EAGEC,UAHF,EAIiB;AACf,MAAIf,UAAU,CAACgB,WAAX,CAAuBH,KAAvB,CAAJ,EAAmC;AACjC,WAAO,IAAIN,sBAAJ,CAA2BM,KAA3B,EAAkCC,SAAlC,CAAP;AACD;;AACD,SAAO,IAAIR,kBAAJ,CAAuBO,KAAvB,EAA8BC,SAA9B,EAAyCC,UAAzC,CAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,MAAME,kBAAN,SAAiCT,aAAjC,CAA+C;AAC7C;AACF;AACA;AACA;AACA;AAYEU,EAAAA,WAAW,CACTL,KADS,EAIT;AAAA;;AAAA,QAFAC,SAEA,uEAFY,IAAIf,SAAJ,EAEZ;AAAA,QADAgB,UACA,uEADgC,IAChC;AACA,WADA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,yCAuJ0C;AAAA,aAC1C,KAAI,CAACI,KAAL,CAAWC,WAAX,CAAuB,YAAvB,CAD0C;AAAA,KAvJ1C;;AAAA,mDA0J8D;AAAA,aAC9D,KAAI,CAACD,KAAL,CAAWE,qBAAX,CAAiC,YAAjC,CAD8D;AAAA,KA1J9D;;AAAA,8CA6JoD;AAAA,aACpD,KAAI,CAACF,KAAL,CAAWG,gBAAX,CAA4B,YAA5B,CADoD;AAAA,KA7JpD;;AAAA,0CAgK4C;AAAA,aAC5C,KAAI,CAACH,KAAL,CAAWI,YAAX,CAAwB,YAAxB,CAD4C;AAAA,KAhK5C;;AAAA,oDAmKgE;AAAA,aAChE,KAAI,CAACJ,KAAL,CAAWK,sBAAX,CAAkC,YAAlC,CADgE;AAAA,KAnKhE;;AAAA,iDAsK0D;AAAA,aAC1D,KAAI,CAACL,KAAL,CAAWM,mBAAX,CAA+B,YAA/B,CAD0D;AAAA,KAtK1D;;AAAA,kDAyK4D;AAAA,aAC5D,KAAI,CAACN,KAAL,CAAWO,oBAAX,CAAgC,YAAhC,CAD4D;AAAA,KAzK5D;;AAAA,8CA4KoD;AAAA,aACpD,KAAI,CAACP,KAAL,CAAWQ,gBAAX,CAA4B,YAA5B,CADoD;AAAA,KA5KpD;;AAAA,8CA+KoD;AAAA,aACpD,KAAI,CAACR,KAAL,CAAWS,gBAAX,CAA4B,YAA5B,CADoD;AAAA,KA/KpD;;AAAA,0CAkL4C;AAAA,aAC5C,KAAI,CAACT,KAAL,CAAWU,YAAX,CAAwB,YAAxB,CAD4C;AAAA,KAlL5C;;AAAA,6CAqLkD;AAAA,aAClD,KAAI,CAACV,KAAL,CAAWW,eAAX,CAA2B,YAA3B,CADkD;AAAA,KArLlD;;AAAA,6CAmM2D,YAAa;AACxE,UAAIzB,qBAAqB,CAAC,KAAI,CAACc,KAAN,CAAzB,EAAuC;AACrC,eAAO,KAAI,CAACA,KAAL,CAAWY,eAAX,CAA2B,YAA3B,CAAP;AACD;;AACD,aAAO,KAAP;AACD,KAxMC;;AAAA,2CA0MuD,YAAa;AACpE,UAAI1B,qBAAqB,CAAC,KAAI,CAACc,KAAN,CAAzB,EAAuC;AACrC,eAAO,KAAI,CAACA,KAAL,CAAWa,aAAX,CAAyB,YAAzB,CAAP;AACD;;AACD,aAAO,KAAP;AACD,KA/MC;;AAAA,4CAiNyD,YAAa;AACtE,UAAI3B,qBAAqB,CAAC,KAAI,CAACc,KAAN,CAAzB,EAAuC;AACrC,eAAO,KAAI,CAACA,KAAL,CAAWc,cAAX,CAA0B,YAA1B,CAAP;AACD;;AACD,YAAMC,KAAK,CAAC,8DAAD,CAAX;AACD,KAtNC;;AAAA,yCAwNmD,YAAa;AAChE,UAAI7B,qBAAqB,CAAC,KAAI,CAACc,KAAN,CAAzB,EAAuC;AACrC,eAAO,KAAI,CAACA,KAAL,CAAWgB,WAAX,CAAuB,YAAvB,CAAP;AACD;;AACD,aAAO,CAAP,CAJgE,CAKhE;AACD,KA9NC;;AAAA,kDA+S4D;AAAA,aAC5D,KAAI,CAAChB,KAAL,CAAWiB,oBAAX,CAAgC,YAAhC,CAD4D;AAAA,KA/S5D;;AAAA,wDAkTwE;AAAA,aAErE,KAAI,CAACjB,KAAL,CAAWkB,0BAAX,CAAsC,YAAtC,CAFqE;AAAA,KAlTxE;;AAAA,2CA0U8C;AAAA,aAC9C,KAAI,CAAClB,KAAL,CAAWmB,aAAX,CAAyB,YAAzB,CAD8C;AAAA,KA1U9C;;AAAA,0CA6U4C;AAAA,aAC5C,KAAI,CAACnB,KAAL,CAAWoB,YAAX,CAAwB,YAAxB,CAD4C;AAAA,KA7U5C;;AAAA,2CAgW8C;AAAA,aAC9C,KAAI,CAACpB,KAAL,CAAWqB,aAAX,CAAyB,YAAzB,CAD8C;AAAA,KAhW9C;;AAAA,6CAyduD,YAAa;AACpE,UAAIpC,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,QAAA,KAAI,CAACA,KAAL,CAAWsB,eAAX,CAA2B,YAA3B;AACD;;AACD,aAAO,KAAP;AACD,KA9dC;;AAAA,0CAgeiD;AAAA,aACjD,KAAI,CAACtB,KAAL,CAAWuB,YAAX,CAAwB,YAAxB,CADiD;AAAA,KAhejD;;AAAA,yCAmeY,CAACC,GAAD,EAAcC,MAAd,EAA8BC,OAA9B,KACZ,KAAK1B,KAAL,CAAW2B,WAAX,CAAuBH,GAAvB,EAA4BC,MAA5B,EAAoCC,OAApC,CApeA;;AAAA,sCAseoC;AAAA,aACpC,KAAI,CAAC1B,KAAL,CAAW4B,QAAX,CAAoB,YAApB,CADoC;AAAA,KAtepC;;AAAA,0CAyeiD;AAAA,aACjD,KAAI,CAAC5B,KAAL,CAAW6B,YAAX,CAAwB,YAAxB,CADiD;AAAA,KAzejD;;AAAA,yCAmf+C;AAAA,aAC/C,KAAI,CAAC7B,KAAL,CAAW8B,WAAX,CAAuB,YAAvB,CAD+C;AAAA,KAnf/C;;AAAA,8CA6fyD,YAAa;AACtE,UAAI7C,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,QAAA,KAAI,CAACA,KAAL,CAAW+B,gBAAX,CAA4B,YAA5B;AACD;;AACD,aAAO,EAAP;AACD,KAlgBC;;AAAA,6CAogBuD,YAAa;AACpE,UAAI9C,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,QAAA,KAAI,CAACA,KAAL,CAAWgC,eAAX,CAA2B,YAA3B;AACD;;AACD,aAAOC,OAAO,CAACC,OAAR,EAAP;AACD,KAzgBC;;AAAA,+CA2gB2D,YAAa;AACxE,UAAIjD,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,QAAA,KAAI,CAACA,KAAL,CAAWmC,iBAAX,CAA6B,YAA7B;AACD;;AACD,aAAOF,OAAO,CAACC,OAAR,EAAP;AACD,KAhhBC;;AAAA,uCAkhB0C,YAAa;AACvD,UAAIjD,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,eAAO,KAAI,CAACA,KAAL,CAAWoC,SAAX,CAAqB,YAArB,CAAP;AACD;;AACD,aAAOH,OAAO,CAACC,OAAR,EAAP;AACD,KAvhBC;;AAAA,4CAyhBqD,YAAa;AAClE,UAAIjD,mBAAmB,CAAC,KAAI,CAACe,KAAN,CAAvB,EAAqC;AACnC,eAAO,KAAI,CAACA,KAAL,CAAWqC,cAAX,CAA0B,YAA1B,CAAP;AACD;;AACD,aAAO,KAAP;AACD,KA9hBC;;AAAA,oCAgiBqC;AAAA,aACrC,KAAI,CAACrC,KAAL,CAAWsC,MAAX,CAAkB,YAAlB,CADqC;AAAA,KAhiBrC;;AAAA,2CAujBmD;AAAA,aACnD,KAAI,CAACtC,KAAL,CAAWuC,aAAX,CAAyB,YAAzB,CADmD;AAAA,KAvjBnD;;AAGA,SAAKC,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBC,IAAtB,CAA2B,IAA3B,CAAxB;AAEA,QAAMzC,KAAK,GAAGP,SAAS,CAACC,KAAD,EAAQC,SAAR,EAAmBC,UAAnB,CAAvB;AACA,SAAK8C,aAAL,GAAqB1C,KAArB;AACA,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAK2C,YAAL,GAAoB,IAApB;AACA,SAAKC,MAAL,GAAc,IAAd;AACA,SAAKC,cAAL,GAAsB,EAAtB;AACD;;AAEDC,EAAAA,KAAK,GAAS;AACZ,SAAKJ,aAAL,CAAmBI,KAAnB;;AACA,QAAI,KAAK9C,KAAL,KAAe,KAAK0C,aAAxB,EAAuC;AACrC,WAAK1C,KAAL,CAAW8C,KAAX;AACD;;AACD,QAAI,KAAKH,YAAL,IAAqB,IAAzB,EAA+B;AAC7B,WAAKA,YAAL,CAAkBI,MAAlB;AACD;AACF;;AAEDP,EAAAA,gBAAgB,CAACQ,KAAD,EAA2B;AACzCzD,IAAAA,GAAG,CAAC0D,MAAJ,CAAW,kBAAX,EAA+BD,KAA/B;AAEA,QAAM;AAAEE,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAmBH,KAAzB;AACA,SAAKI,aAAL,CAAmB,IAAIrE,oBAAJ,CAAyBoE,IAAzB,EAA+B;AAAED,MAAAA;AAAF,KAA/B,CAAnB;AACD;;AAEDG,EAAAA,QAAQ,CAACrD,KAAD,EAA6B;AACnCT,IAAAA,GAAG,CAAC+D,KAAJ,CAAU,UAAV,EAAsBtD,KAAtB;AAEA,QAAMuD,QAAQ,GAAG,KAAKvD,KAAtB;;AAEA,QAAIuD,QAAQ,KAAK,KAAKb,aAAtB,EAAqC;AACnCa,MAAAA,QAAQ,CAACT,KAAT;AACD;;AAED,SAAK9C,KAAL,GAAaA,KAAb;;AAEA,QAAI,KAAKwD,aAAL,GAAqB,CAAzB,EAA4B;AAC1B,WAAKC,YAAL,CAAkBzD,KAAlB;AACD;;AAED,SAAKoD,aAAL,CACE,IAAIrE,oBAAJ,CAAyBM,aAAa,CAACqE,KAAd,CAAoBC,eAA7C,EAA8D;AAC5DT,MAAAA,MAAM,EAAElD,KAAK,CAAC0B;AAD8C,KAA9D,CADF;;AAMA,QAAIpC,4BAA4B,CAACU,KAAD,CAAhC,EAAyC;AACvC,WAAKoD,aAAL,CACE,IAAIrE,oBAAJ,CAAyBM,aAAa,CAACqE,KAAd,CAAoBE,aAA7C,EAA4D;AAC1DV,QAAAA,MAAM,EAAElD,KAAK,CAACN;AAD4C,OAA5D,CADF;AAKD;AACF;;AAEDmE,EAAAA,YAAY,CAAClB,YAAD,EAA6C;AACvDpD,IAAAA,GAAG,CAAC0D,MAAJ,CAAW,cAAX;;AAEA,QAAI,KAAKN,YAAT,EAAuB;AACrB,WAAKA,YAAL,CAAkBI,MAAlB;AACD;;AAED,QAAI,KAAKS,aAAL,GAAqB,CAAzB,EAA4B;AAC1B,WAAKM,eAAL,CAAqB,KAAK9D,KAA1B;AACD;;AAED,SAAK2C,YAAL,GAAoB3D,YAAY,CAAC+E,cAAb,CAClBpB,YADkB,EAEjB3C,KAAD,IAA0BA,KAAK,CAAC8C,KAAN,EAFR,CAApB;AAIA,SAAKH,YAAL,CACGqB,IADH,CACQhE,KAAK,IAAI;AACb,WAAK2C,YAAL,GAAoB,IAApB;AACA,WAAKU,QAAL,CAAcrD,KAAd;AACD,KAJH,EAKGiE,KALH,CAKUC,GAAD,IAAkB;AACvB,UAAIlF,YAAY,CAACmF,UAAb,CAAwBD,GAAxB,CAAJ,EAAkC;AAChC3E,QAAAA,GAAG,CAAC0D,MAAJ,CAAW,wBAAX;AACA;AACD;;AAED1D,MAAAA,GAAG,CAAC6E,KAAJ,CAAU,0BAAV,EAAsCF,GAAtC;AACA,WAAKvB,YAAL,GAAoB,IAApB;AAEA,WAAKS,aAAL,CACE,IAAIrE,oBAAJ,CAAyBM,aAAa,CAACqE,KAAd,CAAoBW,cAA7C,EAA6D;AAC3DnB,QAAAA,MAAM,EAAEgB;AADmD,OAA7D,CADF;AAKD,KAnBH;AAoBD;;AAEDI,EAAAA,cAAc,GAAS;AACrB,UAAMA,cAAN;AAEA,SAAKb,YAAL,CAAkB,KAAKzD,KAAvB;AACD;;AAEDuE,EAAAA,aAAa,GAAS;AACpB,UAAMA,aAAN;AAEA,SAAKT,eAAL,CAAqB,KAAK9D,KAA1B;AACD;;AAEDyD,EAAAA,YAAY,CAACzD,KAAD,EAA6B;AACvC,QAAMwE,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYrF,aAAa,CAACqE,KAA1B,CAAf;;AACA,SAAK,IAAIiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,MAAM,CAACI,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC;AACA;AACA3E,MAAAA,KAAK,CAAC6E,gBAAN,CAAuBL,MAAM,CAACG,CAAD,CAA7B,EAAkC,KAAKnC,gBAAvC;AACD;AACF;;AAEDsB,EAAAA,eAAe,CAAC9D,KAAD,EAA6B;AAC1C,QAAMwE,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYrF,aAAa,CAACqE,KAA1B,CAAf;;AACA,SAAK,IAAIiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,MAAM,CAACI,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC;AACA;AACA3E,MAAAA,KAAK,CAAC8E,mBAAN,CAA0BN,MAAM,CAACG,CAAD,CAAhC,EAAqC,KAAKnC,gBAA1C;AACD;AACF;;AAEW,MAARuC,QAAQ,GAAW;AACrB,WAAO,KAAK/E,KAAL,CAAW+E,QAAlB;AACD;;AAEc,MAAXC,WAAW,GAAW;AACxB,WAAO,KAAKhF,KAAL,CAAWgF,WAAlB;AACD;;AAEsB,MAAnBC,mBAAmB,GAAW;AAChC,WAAO,KAAKjF,KAAL,CAAWiF,mBAAlB;AACD;;AAEyB,MAAtBC,sBAAsB,GAAW;AACnC,WAAO,KAAKlF,KAAL,CAAWkF,sBAAlB;AACD;;AAE0B,MAAvBC,uBAAuB,GAAW;AACpC,WAAO,KAAKnF,KAAL,CAAWmF,uBAAlB;AACD;;AAE2B,MAAxBC,wBAAwB,GAAW;AACrC,WAAO,KAAKpF,KAAL,CAAWoF,wBAAlB;AACD;;AAmCDC,EAAAA,cAAc,CAACC,CAAD,EAAyB;AACrC,WAAO,KAAKtF,KAAL,CAAWqF,cAAX,CAA0BC,CAA1B,CAAP;AACD;;AAEoB,MAAjBC,iBAAiB,GAAY;AAC/B,QAAIrG,qBAAqB,CAAC,KAAKc,KAAN,CAAzB,EAAuC;AACrC,aAAO,KAAKA,KAAL,CAAWuF,iBAAlB;AACD;;AACD,WAAO,KAAP;AACD;;AA+BoB,MAAjBC,iBAAiB,GAAY;AAC/B,WAAO,KAAKxF,KAAL,CAAWwF,iBAAlB;AACD;;AAE8B,MAA3BC,2BAA2B,GAAY;AACzC,WAAO,KAAKzF,KAAL,CAAWyF,2BAAlB;AACD;;AAEyB,MAAtBC,sBAAsB,GAAY;AACpC,WAAO,KAAK1F,KAAL,CAAW0F,sBAAlB;AACD;;AAE2B,MAAxBC,wBAAwB,GAAY;AACtC,WACE,KAAK3F,KAAL,CAAW2F,wBAAX,IACA;AACA,MAAE,KAAKC,yBAAL,IAAkC,KAAKC,qBAAL,CAA2BjB,MAA3B,GAAoC,CAAxE,CAHF;AAKD;;AAE2B,MAAxBkB,wBAAwB,GAAY;AACtC,WAAO,KAAK9F,KAAL,CAAW8F,wBAAlB;AACD;;AAE0B,MAAvBC,uBAAuB,GAAY;AACrC,WAAO,KAAK/F,KAAL,CAAW+F,uBAAlB;AACD;;AAEoB,MAAjBC,iBAAiB,GAAY;AAC/B,WACE,CAAC,KAAKtD,aAAL,CAAmBsD,iBAAnB,IAAwC,KAAKpD,MAAL,IAAe,IAAxD,KACA,KAAKC,cAAL,CAAoB+B,MAApB,KAA+B,CAFjC;AAID;;AAE4B,MAAzBgB,yBAAyB,GAAY;AACvC,WACE,CAAC,KAAKlD,aAAL,CAAmBkD,yBAAnB,IACC,KAAK/C,cAAL,CAAoB+B,MAApB,GAA6B,CAD/B,KAEA,KAAKhC,MAAL,IAAe,IAHjB;AAKD;;AAEoB,MAAjBqD,iBAAiB,GAAY;AAC/B,WAAO,KAAKjG,KAAL,CAAWiG,iBAAlB;AACD;;AAEe,MAAZC,YAAY,GAAY;AAC1B,WAAO,KAAKlG,KAAL,CAAWkG,YAAlB;AACD;;AAEU,MAAPxE,OAAO,GAAa;AACtB,WAAO,KAAK1B,KAAL,CAAW0B,OAAlB;AACD;;AAEe,MAAZyE,YAAY,GAAoB;AAClC,WAAO,KAAKnG,KAAL,CAAWmG,YAAlB;AACD;;AAEY,MAATC,SAAS,GAAoB;AAC/B,WAAO,KAAKpG,KAAL,CAAWoG,SAAlB;AACD;;AAEc,MAAXC,WAAW,GAAuB;AACpC,WAAO,KAAKrG,KAAL,CAAWqG,WAAlB;AACD;;AAEe,MAAZC,YAAY,GAAiB;AAC/B,WAAO,KAAKtG,KAAL,CAAWsG,YAAlB;AACD;;AAEc,MAAXC,WAAW,GAAiB;AAC9B,WAAO,KAAKvG,KAAL,CAAWuG,WAAlB;AACD;;AAEgB,MAAbC,aAAa,GAAiB;AAChC,WAAO,KAAKxG,KAAL,CAAWwG,aAAlB;AACD;;AASuB,MAApBC,oBAAoB,GAAW;AACjC,WAAO,KAAKzG,KAAL,CAAWyG,oBAAlB;AACD;;AAEDC,EAAAA,mBAAmB,CAAChF,OAAD,EAA8B;AAC/C,WAAO,KAAK1B,KAAL,CAAW0G,mBAAX,CAA+BhF,OAA/B,CAAP;AACD;;AAEkB,MAAfiF,eAAe,GAAa;AAC9B,WAAO,KAAKjE,aAAL,CAAmBhB,OAA1B;AACD;;AAEiB,MAAdkF,cAAc,GAAa;AAC7B,WAAO,KAAK5G,KAAL,CAAW4G,cAAlB;AACD;;AAEc,MAAXC,WAAW,GAAW;AACxB,WAAO,KAAK7G,KAAL,CAAW6G,WAAlB;AACD;;AAQS,MAANC,MAAM,GAAsB;AAC9B,WAAO,KAAK9G,KAAL,CAAW8G,MAAlB;AACD;;AAES,MAANA,MAAM,CAACA,MAAD,EAA4B;AACpC,SAAK9G,KAAL,CAAW8G,MAAX,GAAoBA,MAApB;AACD;;AAEY,MAATnH,SAAS,GAAc;AACzB,WAAO,KAAKK,KAAL,CAAWL,SAAlB;AACD;;AAEY,MAATA,SAAS,CAACA,SAAD,EAAuB;AAClC,SAAKK,KAAL,CAAWL,SAAX,GAAuBA,SAAvB;AACD;;AAKO,MAAJoH,IAAI,GAAW;AACjB,WAAO,KAAK/G,KAAL,CAAW+G,IAAlB;AACD;;AAEO,MAAJA,IAAI,CAACA,IAAD,EAAe;AACrB,SAAK/G,KAAL,CAAW+G,IAAX,GAAkBA,IAAlB;AACD;;AAEgB,MAAbC,aAAa,GAAiB;AAChC,WAAO,KAAKhH,KAAL,CAAWgH,aAAlB;AACD;;AAEgB,MAAbA,aAAa,CAACA,aAAD,EAA8B;AAC7C,SAAKhH,KAAL,CAAWgH,aAAX,GAA2BA,aAA3B;AACD;;AAEgB,MAAbC,aAAa,GAAmB;AAClC,WAAO,KAAKjH,KAAL,CAAWiH,aAAlB;AACD;;AAEgB,MAAbA,aAAa,CAACA,aAAD,EAAgC;AAC/C,SAAKjH,KAAL,CAAWiH,aAAX,GAA2BA,aAA3B;AACD;;AAEe,MAAZC,YAAY,GAAwB;AACtC,WAAO,KAAKtE,MAAZ;AACD;;AAEe,MAAZsE,YAAY,CAACA,YAAD,EAAoC;AAClD3H,IAAAA,GAAG,CAAC+D,KAAJ,CAAU,kBAAV,EAA8B4D,YAA9B;;AAEA,QAAI,CAAC,KAAKlB,iBAAV,EAA6B;AAC3B,YAAM,IAAIjF,KAAJ,CAAU,+BAAV,CAAN;AACD,KALiD,CAOlD;AACA;;;AACA,QAAIpC,SAAS,CAACuI,YAAD,EAAe,KAAKtE,MAApB,CAAb,EAA0C;AACxC;AACD;;AAED,SAAKA,MAAL,GAAcsE,YAAd;AAEA,QAAIvE,YAAY,GAAGV,OAAO,CAACC,OAAR,CAAgB,KAAKQ,aAArB,CAAnB;;AAEA,QACEpD,4BAA4B,CAAC,KAAKoD,aAAN,CAA5B,IACAwE,YAAY,IAAI,IAFlB,EAGE;AACAvE,MAAAA,YAAY,GAAG,KAAKD,aAAL,CAAmBhD,KAAnB,CACZkD,MADY,CACLsE,YADK,EAEZlD,IAFY,CAEPtE,KAAK,IAAID,SAAS,CAACC,KAAD,EAAQ,KAAKC,SAAb,CAFX,CAAf;AAGD;;AACD,SAAKkE,YAAL,CAAkBlB,YAAlB;AACD;;AAEwB,MAArBkD,qBAAqB,GAAiB;AACxC,WAAO,KAAKhD,cAAZ;AACD;;AAEwB,MAArBgD,qBAAqB,CAACsB,WAAD,EAAwB;AAC/C5H,IAAAA,GAAG,CAAC+D,KAAJ,CAAU,2BAAV,EAAuC6D,WAAvC;;AAEA,QAAI,CAAC,KAAKvB,yBAAV,EAAqC;AACnC,YAAM,IAAI7E,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAED,QACEoG,WAAW,KAAK,KAAKtB,qBAArB,IACCsB,WAAW,CAACvC,MAAZ,KAAuB,CAAvB,IAA4B,KAAKiB,qBAAL,CAA2BjB,MAA3B,KAAsC,CAFrE,EAGE;AACArF,MAAAA,GAAG,CAAC+D,KAAJ,CAAU,mCAAV,EAA+C6D,WAA/C;AACA;AACD;;AAED,SAAKtE,cAAL,GAAsBsE,WAAtB;AAEA,QAAMtB,qBAAqB,GAAGsB,WAAW,CACtCC,GAD2B,CACvBC,IAAI,IAAI,KAAKV,eAAL,CAAqBW,IAArB,CAA0BC,MAAM,IAAIA,MAAM,CAACF,IAAP,KAAgBA,IAApD,CADe,EAE3BP,MAF2B,CAEpBS,MAAM,IAAIA,MAAM,IAAI,IAFA,CAA9B;AAIA,QAAI5E,YAAY,GAAGV,OAAO,CAACC,OAAR,CAAgB,KAAKQ,aAArB,CAAnB;;AAEA,QACEpD,4BAA4B,CAAC,KAAKoD,aAAN,CAA5B,IACAmD,qBAAqB,CAACjB,MAAtB,GAA+B,CAFjC,EAGE;AACAjC,MAAAA,YAAY,GAAG,KAAKD,aAAL,CAAmBhD,KAAnB,CACZmD,cADY,CACGgD,qBADH,EAEZ7B,IAFY,CAEPtE,KAAK,IAAID,SAAS,CAACC,KAAD,EAAQ,KAAKC,SAAb,CAFX,CAAf;AAGD;;AACD,SAAKkE,YAAL,CAAkBlB,YAAlB;AACD;;AAEQ,MAALjD,KAAK,GAAkC;AACzC,QAAIJ,4BAA4B,CAAC,KAAKU,KAAN,CAAhC,EAA8C;AAC5C,aAAO,KAAKA,KAAL,CAAWN,KAAlB;AACD;;AAED,WAAO8H,SAAP;AACD;;AAEe,MAAZC,YAAY,GAA+B;AAC7C,WAAO,KAAKzH,KAAL,CAAWyH,YAAlB;AACD;;AAEe,MAAZA,YAAY,CAACA,YAAD,EAA2C;AACzD,SAAKzH,KAAL,CAAWyH,YAAX,GAA0BA,YAA1B;AACD;;AAEmB,MAAhBC,gBAAgB,GAAY;AAC9B,WAAO,KAAK1H,KAAL,CAAW0H,gBAAlB;AACD;;AAEa,MAAVC,UAAU,GAAY;AACxB,WAAO1I,mBAAmB,CAAC,KAAKe,KAAN,CAAnB,IAAmC,KAAKA,KAAL,CAAW2H,UAArD;AACD;;AAqBDC,EAAAA,MAAM,GAAmB;AACvB,QAAI/I,UAAU,CAACgB,WAAX,CAAuB,KAAKG,KAA5B,CAAJ,EAAwC;AACtC,YAAM,IAAIe,KAAJ,CAAU,oCAAV,CAAN;AACD;;AACD,WAAQ,KAAKf,KAAN,CAAmC4H,MAAnC,EAAP;AACD;;AAKDC,EAAAA,gBAAgB,CAACN,MAAD,EAA4C;AAC1D,QAAI1I,UAAU,CAACgB,WAAX,CAAuB,KAAKG,KAA5B,CAAJ,EAAwC;AACtC,YAAM,IAAIe,KAAJ,CAAU,8CAAV,CAAN;AACD;;AACD,WAAQ,KAAKf,KAAN,CAAmC6H,gBAAnC,CAAoDN,MAApD,CAAP;AACD;;AAwCiB,MAAdO,cAAc,GAA0B;AAC1C,WAAO,KAAK9H,KAAL,CAAW8H,cAAlB;AACD;;AAEiB,MAAdA,cAAc,CAACV,GAAD,EAA6B;AAC7C,SAAKpH,KAAL,CAAW8H,cAAX,GAA4BV,GAA5B;AACD;;AAEkB,MAAfW,eAAe,GAAW;AAC5B,WAAO,KAAK/H,KAAL,CAAW+H,eAAlB;AACD;;AAEkB,MAAfA,eAAe,CAACC,KAAD,EAAgB;AACjC,SAAKhI,KAAL,CAAW+H,eAAX,GAA6BC,KAA7B;AACD;;AAEoB,MAAjBC,iBAAiB,GAAyB;AAC5C,WAAO,KAAKjI,KAAL,CAAWiI,iBAAlB;AACD;;AAKDC,EAAAA,oBAAoB,CAACb,IAAD,EAAuC;AACzD,WAAO,KAAKrH,KAAL,CAAWkI,oBAAX,CAAgCb,IAAhC,CAAP;AACD;;AAjlB4C;;AAolB/C,eAAevH,kBAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport deepEqual from 'deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n FilterCondition,\n InputTable,\n LayoutHints,\n RollupConfig,\n Sort,\n Table,\n TreeTable,\n} from '@deephaven/jsapi-shim';\nimport {\n EditableGridModel,\n isEditableGridModel,\n isExpandableGridModel,\n ModelIndex,\n MoveOperation,\n} from '@deephaven/grid';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport {\n ColumnName,\n UITotalsTableConfig,\n PendingDataMap,\n UIRow,\n} from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n table: Table | TreeTable,\n formatter?: Formatter,\n inputTable?: InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(table, formatter);\n }\n return new IrisGridTableModel(table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n */\nclass IrisGridProxyModel extends IrisGridModel {\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n originalModel: IrisGridModel;\n\n model: IrisGridModel;\n\n modelPromise: CancelablePromise<IrisGridModel> | null;\n\n rollup: RollupConfig | null;\n\n selectDistinct: ColumnName[];\n\n constructor(\n table: Table | TreeTable,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super();\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(table, formatter, inputTable);\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.selectDistinct = [];\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get rowCount(): number {\n return this.model.rowCount;\n }\n\n get columnCount(): number {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount(): number {\n return this.model.floatingTopRowCount;\n }\n\n get floatingBottomRowCount(): number {\n return this.model.floatingBottomRowCount;\n }\n\n get floatingLeftColumnCount(): number {\n return this.model.floatingLeftColumnCount;\n }\n\n get floatingRightColumnCount(): number {\n return this.model.floatingRightColumnCount;\n }\n\n textForCell: IrisGridModel['textForCell'] = (...args) =>\n this.model.textForCell(...args);\n\n truncationCharForCell: IrisGridModel['truncationCharForCell'] = (...args) =>\n this.model.truncationCharForCell(...args);\n\n textAlignForCell: IrisGridModel['textAlignForCell'] = (...args) =>\n this.model.textAlignForCell(...args);\n\n colorForCell: IrisGridModel['colorForCell'] = (...args) =>\n this.model.colorForCell(...args);\n\n backgroundColorForCell: IrisGridModel['backgroundColorForCell'] = (...args) =>\n this.model.backgroundColorForCell(...args);\n\n textForColumnHeader: IrisGridModel['textForColumnHeader'] = (...args) =>\n this.model.textForColumnHeader(...args);\n\n colorForColumnHeader: IrisGridModel['colorForColumnHeader'] = (...args) =>\n this.model.colorForColumnHeader(...args);\n\n textForRowHeader: IrisGridModel['textForRowHeader'] = (...args) =>\n this.model.textForRowHeader(...args);\n\n textForRowFooter: IrisGridModel['textForRowFooter'] = (...args) =>\n this.model.textForRowFooter(...args);\n\n isRowMovable: IrisGridModel['isRowMovable'] = (...args) =>\n this.model.isRowMovable(...args);\n\n isColumnMovable: IrisGridModel['isColumnMovable'] = (...args) =>\n this.model.isColumnMovable(...args);\n\n isColumnFrozen(x: ModelIndex): boolean {\n return this.model.isColumnFrozen(x);\n }\n\n get hasExpandableRows(): boolean {\n if (isExpandableGridModel(this.model)) {\n return this.model.hasExpandableRows;\n }\n return false;\n }\n\n isRowExpandable: IrisGridTreeTableModel['isRowExpandable'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.isRowExpandable(...args);\n }\n return false;\n };\n\n isRowExpanded: IrisGridTreeTableModel['isRowExpanded'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.isRowExpanded(...args);\n }\n return false;\n };\n\n setRowExpanded: IrisGridTreeTableModel['setRowExpanded'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.setRowExpanded(...args);\n }\n throw Error('Function setRowExpanded does not exist on IrisGridTableModel');\n };\n\n depthForRow: IrisGridTreeTableModel['depthForRow'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.depthForRow(...args);\n }\n return 0;\n // throw Error('Function depthForRow does not exist on IrisGridTableModel');\n };\n\n get isExportAvailable(): boolean {\n return this.model.isExportAvailable;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.model.isColumnStatisticsAvailable;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.model.isValuesTableAvailable;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.model.isFormatColumnsAvailable;\n }\n\n get isChartBuilderAvailable(): boolean {\n return this.model.isChartBuilderAvailable;\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get isTotalsAvailable(): boolean {\n return this.model.isTotalsAvailable;\n }\n\n get isReversible(): boolean {\n return this.model.isReversible;\n }\n\n get columns(): Column[] {\n return this.model.columns;\n }\n\n get movedColumns(): MoveOperation[] {\n return this.model.movedColumns;\n }\n\n get movedRows(): MoveOperation[] {\n return this.model.movedRows;\n }\n\n get layoutHints(): LayoutHints | null {\n return this.model.layoutHints;\n }\n\n get frontColumns(): ColumnName[] {\n return this.model.frontColumns;\n }\n\n get backColumns(): ColumnName[] {\n return this.model.backColumns;\n }\n\n get frozenColumns(): ColumnName[] {\n return this.model.frozenColumns;\n }\n\n getColumnHeaderGroup: IrisGridModel['getColumnHeaderGroup'] = (...args) =>\n this.model.getColumnHeaderGroup(...args);\n\n getColumnHeaderParentGroup: IrisGridModel['getColumnHeaderParentGroup'] = (\n ...args\n ) => this.model.getColumnHeaderParentGroup(...args);\n\n get columnHeaderMaxDepth(): number {\n return this.model.columnHeaderMaxDepth;\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n return this.model.updateFrozenColumns(columns);\n }\n\n get originalColumns(): Column[] {\n return this.originalModel.columns;\n }\n\n get groupedColumns(): Column[] {\n return this.model.groupedColumns;\n }\n\n get description(): string {\n return this.model.description;\n }\n\n formatForCell: IrisGridModel['formatForCell'] = (...args) =>\n this.model.formatForCell(...args);\n\n valueForCell: IrisGridModel['valueForCell'] = (...args) =>\n this.model.valueForCell(...args);\n\n get filter(): FilterCondition[] {\n return this.model.filter;\n }\n\n set filter(filter: FilterCondition[]) {\n this.model.filter = filter;\n }\n\n get formatter(): Formatter {\n return this.model.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.model.formatter = formatter;\n }\n\n displayString: IrisGridModel['displayString'] = (...args) =>\n this.model.displayString(...args);\n\n get sort(): Sort[] {\n return this.model.sort;\n }\n\n set sort(sort: Sort[]) {\n this.model.sort = sort;\n }\n\n get customColumns(): ColumnName[] {\n return this.model.customColumns;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n this.model.customColumns = customColumns;\n }\n\n get formatColumns(): CustomColumn[] {\n return this.model.formatColumns;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n this.model.formatColumns = formatColumns;\n }\n\n get rollupConfig(): RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get table(): Table | TreeTable | undefined {\n if (isIrisGridTableModelTemplate(this.model)) {\n return this.model.table;\n }\n\n return undefined;\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return this.model.totalsConfig;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n this.model.totalsConfig = totalsConfig;\n }\n\n get isFilterRequired(): boolean {\n return this.model.isFilterRequired;\n }\n\n get isEditable(): boolean {\n return isEditableGridModel(this.model) && this.model.isEditable;\n }\n\n isEditableRange: IrisGridTableModel['isEditableRange'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.isEditableRange(...args);\n }\n return false;\n };\n\n isFilterable: IrisGridTableModel['isFilterable'] = (...args) =>\n this.model.isFilterable(...args);\n\n setViewport = (top: number, bottom: number, columns: Column[]): void =>\n this.model.setViewport(top, bottom, columns);\n\n snapshot: IrisGridModel['snapshot'] = (...args) =>\n this.model.snapshot(...args);\n\n textSnapshot: IrisGridTableModel['textSnapshot'] = (...args) =>\n this.model.textSnapshot(...args);\n\n export(): Promise<Table> {\n if (TableUtils.isTreeTable(this.model)) {\n throw new Error(\"TreeTable has no 'export' property\");\n }\n return (this.model as IrisGridTableModel).export();\n }\n\n valuesTable: IrisGridTableModel['valuesTable'] = (...args) =>\n this.model.valuesTable(...args);\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n if (TableUtils.isTreeTable(this.model)) {\n throw new Error(\"TreeTable has no 'columnStatistics' function\");\n }\n return (this.model as IrisGridTableModel).columnStatistics(column);\n }\n\n editValueForCell: IrisGridTableModel['editValueForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.editValueForCell(...args);\n }\n return '';\n };\n\n setValueForCell: IrisGridTableModel['setValueForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.setValueForCell(...args);\n }\n return Promise.resolve();\n };\n\n setValueForRanges: IrisGridTableModel['setValueForRanges'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.setValueForRanges(...args);\n }\n return Promise.resolve();\n };\n\n setValues: EditableGridModel['setValues'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n return this.model.setValues(...args);\n }\n return Promise.resolve();\n };\n\n isValidForCell: IrisGridTableModel['isValidForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n return this.model.isValidForCell(...args);\n }\n return false;\n };\n\n delete: IrisGridTableModel['delete'] = (...args) =>\n this.model.delete(...args);\n\n get pendingDataMap(): PendingDataMap<UIRow> {\n return this.model.pendingDataMap;\n }\n\n set pendingDataMap(map: PendingDataMap<UIRow>) {\n this.model.pendingDataMap = map;\n }\n\n get pendingRowCount(): number {\n return this.model.pendingRowCount;\n }\n\n set pendingRowCount(count: number) {\n this.model.pendingRowCount = count;\n }\n\n get pendingDataErrors(): Map<number, Error[]> {\n return this.model.pendingDataErrors;\n }\n\n commitPending: IrisGridTableModel['commitPending'] = (...args) =>\n this.model.commitPending(...args);\n\n getColumnIndexByName(name: ColumnName): number | undefined {\n return this.model.getColumnIndexByName(name);\n }\n}\n\nexport default IrisGridProxyModel;\n"],"file":"IrisGridProxyModel.js"}
|
|
1
|
+
{"version":3,"file":"IrisGridProxyModel.js","names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","isEditableGridModel","isExpandableGridModel","IrisGridTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","log","module","makeModel","table","formatter","inputTable","isTreeTable","IrisGridProxyModel","constructor","model","textForCell","truncationCharForCell","textAlignForCell","colorForCell","backgroundColorForCell","textForColumnHeader","colorForColumnHeader","textForRowHeader","textForRowFooter","isRowMovable","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","Error","depthForRow","getColumnHeaderGroup","getColumnHeaderParentGroup","formatForCell","valueForCell","displayString","isEditableRange","isFilterable","top","bottom","columns","setViewport","snapshot","textSnapshot","valuesTable","editValueForCell","setValueForCell","Promise","resolve","setValueForRanges","setValues","isValidForCell","delete","commitPending","handleModelEvent","bind","originalModel","modelPromise","rollup","selectDistinct","close","cancel","event","debug2","detail","type","dispatchEvent","setModel","debug","oldModel","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","Object","keys","i","length","addEventListener","removeEventListener","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","isColumnFrozen","x","hasExpandableRows","isExportAvailable","isColumnStatisticsAvailable","isValuesTableAvailable","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isFormatColumnsAvailable","isChartBuilderAvailable","isRollupAvailable","isTotalsAvailable","isReversible","movedColumns","movedRows","layoutHints","frontColumns","backColumns","frozenColumns","columnHeaderMaxDepth","updateFrozenColumns","originalColumns","groupedColumns","description","filter","sort","customColumns","formatColumns","rollupConfig","columnNames","map","name","find","column","undefined","totalsConfig","isFilterRequired","isEditable","export","columnStatistics","pendingDataMap","pendingRowCount","count","pendingDataErrors","getColumnIndexByName"],"sources":["../src/IrisGridProxyModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport deepEqual from 'deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n FilterCondition,\n InputTable,\n LayoutHints,\n RollupConfig,\n Sort,\n Table,\n TreeTable,\n} from '@deephaven/jsapi-shim';\nimport {\n EditableGridModel,\n isEditableGridModel,\n isExpandableGridModel,\n ModelIndex,\n MoveOperation,\n} from '@deephaven/grid';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport {\n ColumnName,\n UITotalsTableConfig,\n PendingDataMap,\n UIRow,\n} from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n table: Table | TreeTable,\n formatter?: Formatter,\n inputTable?: InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(table, formatter);\n }\n return new IrisGridTableModel(table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n */\nclass IrisGridProxyModel extends IrisGridModel {\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n originalModel: IrisGridModel;\n\n model: IrisGridModel;\n\n modelPromise: CancelablePromise<IrisGridModel> | null;\n\n rollup: RollupConfig | null;\n\n selectDistinct: ColumnName[];\n\n constructor(\n table: Table | TreeTable,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super();\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(table, formatter, inputTable);\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.selectDistinct = [];\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get rowCount(): number {\n return this.model.rowCount;\n }\n\n get columnCount(): number {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount(): number {\n return this.model.floatingTopRowCount;\n }\n\n get floatingBottomRowCount(): number {\n return this.model.floatingBottomRowCount;\n }\n\n get floatingLeftColumnCount(): number {\n return this.model.floatingLeftColumnCount;\n }\n\n get floatingRightColumnCount(): number {\n return this.model.floatingRightColumnCount;\n }\n\n textForCell: IrisGridModel['textForCell'] = (...args) =>\n this.model.textForCell(...args);\n\n truncationCharForCell: IrisGridModel['truncationCharForCell'] = (...args) =>\n this.model.truncationCharForCell(...args);\n\n textAlignForCell: IrisGridModel['textAlignForCell'] = (...args) =>\n this.model.textAlignForCell(...args);\n\n colorForCell: IrisGridModel['colorForCell'] = (...args) =>\n this.model.colorForCell(...args);\n\n backgroundColorForCell: IrisGridModel['backgroundColorForCell'] = (...args) =>\n this.model.backgroundColorForCell(...args);\n\n textForColumnHeader: IrisGridModel['textForColumnHeader'] = (...args) =>\n this.model.textForColumnHeader(...args);\n\n colorForColumnHeader: IrisGridModel['colorForColumnHeader'] = (...args) =>\n this.model.colorForColumnHeader(...args);\n\n textForRowHeader: IrisGridModel['textForRowHeader'] = (...args) =>\n this.model.textForRowHeader(...args);\n\n textForRowFooter: IrisGridModel['textForRowFooter'] = (...args) =>\n this.model.textForRowFooter(...args);\n\n isRowMovable: IrisGridModel['isRowMovable'] = (...args) =>\n this.model.isRowMovable(...args);\n\n isColumnMovable: IrisGridModel['isColumnMovable'] = (...args) =>\n this.model.isColumnMovable(...args);\n\n isColumnFrozen(x: ModelIndex): boolean {\n return this.model.isColumnFrozen(x);\n }\n\n get hasExpandableRows(): boolean {\n if (isExpandableGridModel(this.model)) {\n return this.model.hasExpandableRows;\n }\n return false;\n }\n\n isRowExpandable: IrisGridTreeTableModel['isRowExpandable'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.isRowExpandable(...args);\n }\n return false;\n };\n\n isRowExpanded: IrisGridTreeTableModel['isRowExpanded'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.isRowExpanded(...args);\n }\n return false;\n };\n\n setRowExpanded: IrisGridTreeTableModel['setRowExpanded'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.setRowExpanded(...args);\n }\n throw Error('Function setRowExpanded does not exist on IrisGridTableModel');\n };\n\n depthForRow: IrisGridTreeTableModel['depthForRow'] = (...args) => {\n if (isExpandableGridModel(this.model)) {\n return this.model.depthForRow(...args);\n }\n return 0;\n // throw Error('Function depthForRow does not exist on IrisGridTableModel');\n };\n\n get isExportAvailable(): boolean {\n return this.model.isExportAvailable;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.model.isColumnStatisticsAvailable;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.model.isValuesTableAvailable;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.model.isFormatColumnsAvailable;\n }\n\n get isChartBuilderAvailable(): boolean {\n return this.model.isChartBuilderAvailable;\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get isTotalsAvailable(): boolean {\n return this.model.isTotalsAvailable;\n }\n\n get isReversible(): boolean {\n return this.model.isReversible;\n }\n\n get columns(): Column[] {\n return this.model.columns;\n }\n\n get movedColumns(): MoveOperation[] {\n return this.model.movedColumns;\n }\n\n get movedRows(): MoveOperation[] {\n return this.model.movedRows;\n }\n\n get layoutHints(): LayoutHints | null {\n return this.model.layoutHints;\n }\n\n get frontColumns(): ColumnName[] {\n return this.model.frontColumns;\n }\n\n get backColumns(): ColumnName[] {\n return this.model.backColumns;\n }\n\n get frozenColumns(): ColumnName[] {\n return this.model.frozenColumns;\n }\n\n getColumnHeaderGroup: IrisGridModel['getColumnHeaderGroup'] = (...args) =>\n this.model.getColumnHeaderGroup(...args);\n\n getColumnHeaderParentGroup: IrisGridModel['getColumnHeaderParentGroup'] = (\n ...args\n ) => this.model.getColumnHeaderParentGroup(...args);\n\n get columnHeaderMaxDepth(): number {\n return this.model.columnHeaderMaxDepth;\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n return this.model.updateFrozenColumns(columns);\n }\n\n get originalColumns(): Column[] {\n return this.originalModel.columns;\n }\n\n get groupedColumns(): Column[] {\n return this.model.groupedColumns;\n }\n\n get description(): string {\n return this.model.description;\n }\n\n formatForCell: IrisGridModel['formatForCell'] = (...args) =>\n this.model.formatForCell(...args);\n\n valueForCell: IrisGridModel['valueForCell'] = (...args) =>\n this.model.valueForCell(...args);\n\n get filter(): FilterCondition[] {\n return this.model.filter;\n }\n\n set filter(filter: FilterCondition[]) {\n this.model.filter = filter;\n }\n\n get formatter(): Formatter {\n return this.model.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.model.formatter = formatter;\n }\n\n displayString: IrisGridModel['displayString'] = (...args) =>\n this.model.displayString(...args);\n\n get sort(): Sort[] {\n return this.model.sort;\n }\n\n set sort(sort: Sort[]) {\n this.model.sort = sort;\n }\n\n get customColumns(): ColumnName[] {\n return this.model.customColumns;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n this.model.customColumns = customColumns;\n }\n\n get formatColumns(): CustomColumn[] {\n return this.model.formatColumns;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n this.model.formatColumns = formatColumns;\n }\n\n get rollupConfig(): RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get table(): Table | TreeTable | undefined {\n if (isIrisGridTableModelTemplate(this.model)) {\n return this.model.table;\n }\n\n return undefined;\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return this.model.totalsConfig;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n this.model.totalsConfig = totalsConfig;\n }\n\n get isFilterRequired(): boolean {\n return this.model.isFilterRequired;\n }\n\n get isEditable(): boolean {\n return isEditableGridModel(this.model) && this.model.isEditable;\n }\n\n isEditableRange: IrisGridTableModel['isEditableRange'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.isEditableRange(...args);\n }\n return false;\n };\n\n isFilterable: IrisGridTableModel['isFilterable'] = (...args) =>\n this.model.isFilterable(...args);\n\n setViewport = (top: number, bottom: number, columns: Column[]): void =>\n this.model.setViewport(top, bottom, columns);\n\n snapshot: IrisGridModel['snapshot'] = (...args) =>\n this.model.snapshot(...args);\n\n textSnapshot: IrisGridTableModel['textSnapshot'] = (...args) =>\n this.model.textSnapshot(...args);\n\n export(): Promise<Table> {\n if (TableUtils.isTreeTable(this.model)) {\n throw new Error(\"TreeTable has no 'export' property\");\n }\n return (this.model as IrisGridTableModel).export();\n }\n\n valuesTable: IrisGridTableModel['valuesTable'] = (...args) =>\n this.model.valuesTable(...args);\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n if (TableUtils.isTreeTable(this.model)) {\n throw new Error(\"TreeTable has no 'columnStatistics' function\");\n }\n return (this.model as IrisGridTableModel).columnStatistics(column);\n }\n\n editValueForCell: IrisGridTableModel['editValueForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.editValueForCell(...args);\n }\n return '';\n };\n\n setValueForCell: IrisGridTableModel['setValueForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.setValueForCell(...args);\n }\n return Promise.resolve();\n };\n\n setValueForRanges: IrisGridTableModel['setValueForRanges'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n this.model.setValueForRanges(...args);\n }\n return Promise.resolve();\n };\n\n setValues: EditableGridModel['setValues'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n return this.model.setValues(...args);\n }\n return Promise.resolve();\n };\n\n isValidForCell: IrisGridTableModel['isValidForCell'] = (...args) => {\n if (isEditableGridModel(this.model)) {\n return this.model.isValidForCell(...args);\n }\n return false;\n };\n\n delete: IrisGridTableModel['delete'] = (...args) =>\n this.model.delete(...args);\n\n get pendingDataMap(): PendingDataMap<UIRow> {\n return this.model.pendingDataMap;\n }\n\n set pendingDataMap(map: PendingDataMap<UIRow>) {\n this.model.pendingDataMap = map;\n }\n\n get pendingRowCount(): number {\n return this.model.pendingRowCount;\n }\n\n set pendingRowCount(count: number) {\n this.model.pendingRowCount = count;\n }\n\n get pendingDataErrors(): Map<number, Error[]> {\n return this.model.pendingDataErrors;\n }\n\n commitPending: IrisGridTableModel['commitPending'] = (...args) =>\n this.model.commitPending(...args);\n\n getColumnIndexByName(name: ColumnName): number | undefined {\n return this.model.getColumnIndexByName(name);\n }\n}\n\nexport default IrisGridProxyModel;\n"],"mappings":"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"}
|
|
@@ -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","get","undefined","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","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","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","drawColumnHeaderAtIndex","index","gridX","fontWidths","headerHorizontalPadding","getSortForColumn","text","textForColumnHeader","fontWidth","DEFAULT_FONT_WIDTH","textWidth","textRight","defaultX","Math","min","yOffset","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","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","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","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 BoundedAxisRange,\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 isMenuShown: boolean;\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 = modelColumns.get(column);\n if (modelColumn === undefined) {\n return;\n }\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, model } = 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 model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : 30) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n visibleColumnWidths,\n visibleColumnXs,\n gridX,\n columnHeaderHeight,\n fontWidths,\n } = metrics;\n\n const { headerHorizontalPadding } = theme;\n const columnWidth = getOrThrow(visibleColumnWidths, index, 0);\n const columnX = getOrThrow(visibleColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\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 text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const fontWidth =\n fontWidths.get(context.font) || GridRenderer.DEFAULT_FONT_WIDTH;\n const textWidth = text.length * fontWidth;\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding;\n const defaultX =\n gridX + columnX + columnWidth - headerHorizontalPadding - 1;\n\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\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"}
|
|
1
|
+
{"version":3,"file":"IrisGridRenderer.js","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","get","undefined","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","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","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","drawColumnHeaderAtIndex","index","gridX","fontWidths","headerHorizontalPadding","getSortForColumn","text","textForColumnHeader","fontWidth","DEFAULT_FONT_WIDTH","textWidth","textRight","defaultX","Math","min","yOffset","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","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","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","truncatedText","getCachedTruncatedString","truncationCharForCell","NULL_POSITION","top","gridWidth","right","buttonLeft","buttonTop","buttonWidth","buttonHeight","overflowButtonColor","overflowButtonHoverColor"],"sources":["../src/IrisGridRenderer.ts"],"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 BoundedAxisRange,\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 isMenuShown: boolean;\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 = modelColumns.get(column);\n if (modelColumn === undefined) {\n return;\n }\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, model } = 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 model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : 30) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n visibleColumnWidths,\n visibleColumnXs,\n gridX,\n columnHeaderHeight,\n fontWidths,\n } = metrics;\n\n const { headerHorizontalPadding } = theme;\n const columnWidth = getOrThrow(visibleColumnWidths, index, 0);\n const columnX = getOrThrow(visibleColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\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 text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const fontWidth =\n fontWidths.get(context.font) || GridRenderer.DEFAULT_FONT_WIDTH;\n const textWidth = text.length * fontWidth;\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding;\n const defaultX =\n gridX + columnX + columnWidth - headerHorizontalPadding - 1;\n\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"IrisGridShortcuts.js","names":["ShortcutRegistry","MODIFIER","KEY","TABLE","TOGGLE_QUICK_FILTER","createAndAdd","id","name","shortcut","CTRL","F","macShortcut","CMD","CLEAR_ALL_FILTERS","E","CLEAR_FILTERS","SHIFT","REVERSE","I","TOGGLE_SEARCH","GOTO_ROW","G","INPUT_TABLE","COMMIT","S","DISCARD","ALT","OPTION","IRIS_GRID_SHORTCUTS"],"sources":["../src/IrisGridShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, MODIFIER, KEY } from '@deephaven/components';\n\nconst TABLE = {\n TOGGLE_QUICK_FILTER: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_QUICK_FILTER',\n name: 'Toggle Quick Filter',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n }),\n CLEAR_ALL_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_ALL_FILTERS',\n name: 'Clear All Table Filters',\n shortcut: [MODIFIER.CTRL, KEY.E],\n macShortcut: [MODIFIER.CMD, KEY.E],\n }),\n CLEAR_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_FILTERS',\n name: 'Clear Active Table Filters',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.E],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.E],\n }),\n REVERSE: ShortcutRegistry.createAndAdd({\n id: 'TABLE.REVERSE',\n name: 'Reverse',\n shortcut: [MODIFIER.CTRL, KEY.I],\n macShortcut: [MODIFIER.CMD, KEY.I],\n }),\n TOGGLE_SEARCH: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_SEARCH',\n name: 'Toggle Search',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.F],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.F],\n }),\n GOTO_ROW: ShortcutRegistry.createAndAdd({\n id: 'TABLE.GOTO_ROW',\n name: 'GOTO_ROW',\n shortcut: [MODIFIER.CTRL, KEY.G],\n macShortcut: [MODIFIER.CMD, KEY.G],\n }),\n};\n\nconst INPUT_TABLE = {\n COMMIT: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.COMMIT',\n name: 'Commit',\n shortcut: [MODIFIER.CTRL, KEY.S],\n macShortcut: [MODIFIER.CMD, KEY.S],\n }),\n DISCARD: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.DISCARD',\n name: 'Discard',\n shortcut: [MODIFIER.CTRL, MODIFIER.ALT, KEY.S],\n macShortcut: [MODIFIER.CMD, MODIFIER.OPTION, KEY.S],\n }),\n};\n\nconst IRIS_GRID_SHORTCUTS = {\n TABLE,\n INPUT_TABLE,\n};\n\nexport default IRIS_GRID_SHORTCUTS;\n"],"mappings":"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"}
|