@deephaven/iris-grid 0.37.4-logout.1 → 0.37.4-logout.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/AdvancedFilterCreator.js.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  4. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  5. package/dist/ColumnHeaderGroup.js.map +1 -1
  6. package/dist/ColumnStatistics.js +1 -2
  7. package/dist/ColumnStatistics.js.map +1 -1
  8. package/dist/CrossColumnSearch.js.map +1 -1
  9. package/dist/FilterInputField.js.map +1 -1
  10. package/dist/GotoRow.js.map +1 -1
  11. package/dist/IrisGrid.css +1 -3
  12. package/dist/IrisGrid.css.map +1 -1
  13. package/dist/IrisGrid.js +10 -3
  14. package/dist/IrisGrid.js.map +1 -1
  15. package/dist/IrisGridBottomBar.js.map +1 -1
  16. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  17. package/dist/IrisGridCopyHandler.js +3 -4
  18. package/dist/IrisGridCopyHandler.js.map +1 -1
  19. package/dist/IrisGridMetricCalculator.js.map +1 -1
  20. package/dist/IrisGridModel.js +138 -0
  21. package/dist/IrisGridModel.js.map +1 -1
  22. package/dist/IrisGridModelFactory.js.map +1 -1
  23. package/dist/IrisGridModelUpdater.js.map +1 -1
  24. package/dist/IrisGridPartitionSelector.js.map +1 -1
  25. package/dist/IrisGridProxyModel.js +5 -6
  26. package/dist/IrisGridProxyModel.js.map +1 -1
  27. package/dist/IrisGridRenderer.js.map +1 -1
  28. package/dist/IrisGridTableModel.js.map +1 -1
  29. package/dist/IrisGridTableModelTemplate.js +6 -0
  30. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  31. package/dist/IrisGridTestUtils.js.map +1 -1
  32. package/dist/IrisGridTheme.module.css +1 -2
  33. package/dist/IrisGridTheme.module.css.map +1 -1
  34. package/dist/IrisGridTreeTableModel.js.map +1 -1
  35. package/dist/IrisGridUtils.js +3 -0
  36. package/dist/IrisGridUtils.js.map +1 -1
  37. package/dist/MissingKeyError.js.map +1 -1
  38. package/dist/PartitionSelectorSearch.js.map +1 -1
  39. package/dist/PendingDataBottomBar.js.map +1 -1
  40. package/dist/TableViewportUpdater.js +3 -0
  41. package/dist/TableViewportUpdater.js.map +1 -1
  42. package/dist/ToastBottomBar.js.map +1 -1
  43. package/dist/TreeTableViewportUpdater.js.map +1 -1
  44. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  45. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  46. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  47. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  48. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  49. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  50. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  51. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  52. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  53. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  54. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  55. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  56. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  57. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  58. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  59. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  60. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -2
  61. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  62. package/dist/mousehandlers/PendingMouseHandler.js +5 -0
  63. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  64. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  65. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  66. package/dist/sidebar/AdvancedSettingsType.js +3 -3
  67. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  68. package/dist/sidebar/ChartBuilder.js.map +1 -1
  69. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  70. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  71. package/dist/sidebar/InputEditor.js.map +1 -1
  72. package/dist/sidebar/OptionType.js +3 -3
  73. package/dist/sidebar/OptionType.js.map +1 -1
  74. package/dist/sidebar/RollupRows.js.map +1 -1
  75. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  76. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  77. package/dist/sidebar/TableSaver.js +4 -0
  78. package/dist/sidebar/TableSaver.js.map +1 -1
  79. package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
  80. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  81. package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
  82. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  83. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  84. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  85. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  86. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  87. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  88. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  89. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  90. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
  91. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  92. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  93. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  94. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  95. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  96. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  97. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  98. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  99. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  100. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  101. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  102. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  103. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  104. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  105. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  106. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  107. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  108. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  109. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  110. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  111. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  112. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  113. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTestUtils.js","names":["dh","Formatter","IrisGridProxyModel","IrisGridTestUtils","valueForCell","rowIndex","columnIndex","formatValue","value","undefined","makeColumn","name","type","DEFAULT_TYPE","index","Column","makeRollupTableConfig","RollupTableConfig","makeColumns","count","prefix","columns","i","push","makeUserColumnWidths","userColumnWidths","Map","set","toString","makeRow","row","Row","get","jest","fn","column","makeFilter","FilterCondition","makeSort","Sort","makeTable","size","sort","layoutHints","table","Table","copy","Promise","resolve","freeze","makeTreeTable","TreeTable","makeInputTable","keyColumns","InputTable","makeSubscription","TableViewportSubscription","makeModel","formatter","inputTable"],"sources":["../src/IrisGridTestUtils.ts"],"sourcesContent":["import { GridRangeIndex, ModelSizeMap } from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n InputTable,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableViewportSubscription,\n TreeTable,\n} from '@deephaven/jsapi-shim';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport type { LayoutHints } from '@deephaven/jsapi-shim';\nimport IrisGridProxyModel from './IrisGridProxyModel';\n\nclass IrisGridTestUtils {\n static DEFAULT_TYPE = 'java.lang.String';\n\n static valueForCell(\n rowIndex: GridRangeIndex,\n columnIndex: GridRangeIndex,\n formatValue?: boolean\n ): string {\n let value = `${rowIndex},${columnIndex}`;\n if (formatValue !== undefined && formatValue) {\n value = `(${value})`;\n }\n return value;\n }\n\n static makeColumn(\n name?: string,\n type: string = IrisGridTestUtils.DEFAULT_TYPE,\n index = 0\n ): Column {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Column({ index, name, type });\n }\n\n static makeRollupTableConfig(): RollupConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).RollupTableConfig();\n }\n\n static makeColumns(count = 5, prefix = ''): Column[] {\n const columns = [];\n for (let i = 0; i < count; i += 1) {\n columns.push(\n this.makeColumn(`${prefix}${i}`, IrisGridTestUtils.DEFAULT_TYPE, i)\n );\n }\n return columns;\n }\n\n static makeUserColumnWidths(count = 5): ModelSizeMap {\n const userColumnWidths = new Map();\n for (let i = 0; i < count; i += 1) {\n userColumnWidths.set(i.toString(), 100);\n }\n return userColumnWidths;\n }\n\n static makeRow(i: number): Row {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const row = new (dh as any).Row({ index: i, name: `${i}` });\n\n row.get = jest.fn(column =>\n IrisGridTestUtils.valueForCell(i, column.index)\n );\n\n return row;\n }\n\n static makeFilter(): FilterCondition {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).FilterCondition();\n }\n\n static makeSort(): Sort {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Sort();\n }\n\n static makeTable({\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = [],\n layoutHints = {} as LayoutHints,\n } = {}): Table {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).Table({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n table.freeze = jest.fn(() => Promise.resolve(table));\n table.layoutHints = layoutHints;\n return table;\n }\n\n static makeTreeTable(\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = []\n ): TreeTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).TreeTable({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n\n static makeInputTable(keyColumns: Column[] = []): InputTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).InputTable(keyColumns);\n }\n\n static makeSubscription(\n table = IrisGridTestUtils.makeTable()\n ): TableViewportSubscription {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).TableViewportSubscription({ table });\n }\n\n static makeModel(\n table = IrisGridTestUtils.makeTable(),\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ): IrisGridProxyModel {\n return new IrisGridProxyModel(table, formatter, inputTable);\n }\n}\n\nexport default IrisGridTestUtils;\n"],"mappings":";;;AACA,OAAOA,EAAE,MAUF,uBAAuB;AAC9B,SAASC,SAAS,QAAQ,wBAAwB;AAAC,OAE5CC,kBAAkB;AAEzB,MAAMC,iBAAiB,CAAC;EAGtB,OAAOC,YAAY,CACjBC,QAAwB,EACxBC,WAA2B,EAC3BC,WAAqB,EACb;IACR,IAAIC,KAAK,aAAMH,QAAQ,cAAIC,WAAW,CAAE;IACxC,IAAIC,WAAW,KAAKE,SAAS,IAAIF,WAAW,EAAE;MAC5CC,KAAK,cAAOA,KAAK,MAAG;IACtB;IACA,OAAOA,KAAK;EACd;EAEA,OAAOE,UAAU,CACfC,IAAa,EAGL;IAAA,IAFRC,IAAY,uEAAGT,iBAAiB,CAACU,YAAY;IAAA,IAC7CC,KAAK,uEAAG,CAAC;IAET;IACA,OAAO,IAAKd,EAAE,CAASe,MAAM,CAAC;MAAED,KAAK;MAAEH,IAAI;MAAEC;IAAK,CAAC,CAAC;EACtD;EAEA,OAAOI,qBAAqB,GAAiB;IAC3C;IACA,OAAO,IAAKhB,EAAE,CAASiB,iBAAiB,EAAE;EAC5C;EAEA,OAAOC,WAAW,GAAmC;IAAA,IAAlCC,KAAK,uEAAG,CAAC;IAAA,IAAEC,MAAM,uEAAG,EAAE;IACvC,IAAMC,OAAO,GAAG,EAAE;IAClB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,EAAEG,CAAC,IAAI,CAAC,EAAE;MACjCD,OAAO,CAACE,IAAI,CACV,IAAI,CAACb,UAAU,WAAIU,MAAM,SAAGE,CAAC,GAAInB,iBAAiB,CAACU,YAAY,EAAES,CAAC,CAAC,CACpE;IACH;IACA,OAAOD,OAAO;EAChB;EAEA,OAAOG,oBAAoB,GAA0B;IAAA,IAAzBL,KAAK,uEAAG,CAAC;IACnC,IAAMM,gBAAgB,GAAG,IAAIC,GAAG,EAAE;IAClC,KAAK,IAAIJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,EAAEG,CAAC,IAAI,CAAC,EAAE;MACjCG,gBAAgB,CAACE,GAAG,CAACL,CAAC,CAACM,QAAQ,EAAE,EAAE,GAAG,CAAC;IACzC;IACA,OAAOH,gBAAgB;EACzB;EAEA,OAAOI,OAAO,CAACP,CAAS,EAAO;IAC7B;IACA,IAAMQ,GAAG,GAAG,IAAK9B,EAAE,CAAS+B,GAAG,CAAC;MAAEjB,KAAK,EAAEQ,CAAC;MAAEX,IAAI,YAAKW,CAAC;IAAG,CAAC,CAAC;IAE3DQ,GAAG,CAACE,GAAG,GAAGC,IAAI,CAACC,EAAE,CAACC,MAAM,IACtBhC,iBAAiB,CAACC,YAAY,CAACkB,CAAC,EAAEa,MAAM,CAACrB,KAAK,CAAC,CAChD;IAED,OAAOgB,GAAG;EACZ;EAEA,OAAOM,UAAU,GAAoB;IACnC;IACA,OAAO,IAAKpC,EAAE,CAASqC,eAAe,EAAE;EAC1C;EAEA,OAAOC,QAAQ,GAAS;IACtB;IACA,OAAO,IAAKtC,EAAE,CAASuC,IAAI,EAAE;EAC/B;EAEA,OAAOC,SAAS,GAKD;IAAA,IALE;MACfnB,OAAO,GAAGlB,iBAAiB,CAACe,WAAW,EAAE;MACzCuB,IAAI,GAAG,UAAU;MACjBC,IAAI,GAAG,EAAE;MACTC,WAAW,GAAG,CAAC;IACjB,CAAC,uEAAG,CAAC,CAAC;IACJ;IACA,IAAMC,KAAK,GAAG,IAAK5C,EAAE,CAAS6C,KAAK,CAAC;MAAExB,OAAO;MAAEoB,IAAI;MAAEC;IAAK,CAAC,CAAC;IAC5DE,KAAK,CAACE,IAAI,GAAGb,IAAI,CAACC,EAAE,CAAC,MAAMa,OAAO,CAACC,OAAO,CAACJ,KAAK,CAAC,CAAC;IAClDA,KAAK,CAACK,MAAM,GAAGhB,IAAI,CAACC,EAAE,CAAC,MAAMa,OAAO,CAACC,OAAO,CAACJ,KAAK,CAAC,CAAC;IACpDA,KAAK,CAACD,WAAW,GAAGA,WAAW;IAC/B,OAAOC,KAAK;EACd;EAEA,OAAOM,aAAa,GAIP;IAAA,IAHX7B,OAAO,uEAAGlB,iBAAiB,CAACe,WAAW,EAAE;IAAA,IACzCuB,IAAI,uEAAG,UAAU;IAAA,IACjBC,IAAI,uEAAG,EAAE;IAET;IACA,IAAME,KAAK,GAAG,IAAK5C,EAAE,CAASmD,SAAS,CAAC;MAAE9B,OAAO;MAAEoB,IAAI;MAAEC;IAAK,CAAC,CAAC;IAChEE,KAAK,CAACE,IAAI,GAAGb,IAAI,CAACC,EAAE,CAAC,MAAMa,OAAO,CAACC,OAAO,CAACJ,KAAK,CAAC,CAAC;IAClD,OAAOA,KAAK;EACd;EAEA,OAAOQ,cAAc,GAAwC;IAAA,IAAvCC,UAAoB,uEAAG,EAAE;IAC7C;IACA,OAAO,IAAKrD,EAAE,CAASsD,UAAU,CAACD,UAAU,CAAC;EAC/C;EAEA,OAAOE,gBAAgB,GAEM;IAAA,IAD3BX,KAAK,uEAAGzC,iBAAiB,CAACqC,SAAS,EAAE;IAErC;IACA,OAAO,IAAKxC,EAAE,CAASwD,yBAAyB,CAAC;MAAEZ;IAAM,CAAC,CAAC;EAC7D;EAEA,OAAOa,SAAS,GAIM;IAAA,IAHpBb,KAAK,uEAAGzC,iBAAiB,CAACqC,SAAS,EAAE;IAAA,IACrCkB,SAAS,uEAAG,IAAIzD,SAAS,EAAE;IAAA,IAC3B0D,UAA6B,uEAAG,IAAI;IAEpC,OAAO,IAAIzD,kBAAkB,CAAC0C,KAAK,EAAEc,SAAS,EAAEC,UAAU,CAAC;EAC7D;AACF;AAAC,gBAhHKxD,iBAAiB,kBACC,kBAAkB;AAiH1C,eAAeA,iBAAiB"}
1
+ {"version":3,"file":"IrisGridTestUtils.js","names":["dh","Formatter","IrisGridProxyModel","IrisGridTestUtils","valueForCell","rowIndex","columnIndex","formatValue","value","concat","undefined","makeColumn","name","type","arguments","length","DEFAULT_TYPE","index","Column","makeRollupTableConfig","RollupTableConfig","makeColumns","count","prefix","columns","i","push","makeUserColumnWidths","userColumnWidths","Map","set","toString","makeRow","row","Row","get","jest","fn","column","makeFilter","FilterCondition","makeSort","Sort","makeTable","size","sort","layoutHints","table","Table","copy","Promise","resolve","freeze","makeTreeTable","TreeTable","makeInputTable","keyColumns","InputTable","makeSubscription","TableViewportSubscription","makeModel","formatter","inputTable","_defineProperty"],"sources":["../src/IrisGridTestUtils.ts"],"sourcesContent":["import { GridRangeIndex, ModelSizeMap } from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n InputTable,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableViewportSubscription,\n TreeTable,\n} from '@deephaven/jsapi-shim';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport type { LayoutHints } from '@deephaven/jsapi-shim';\nimport IrisGridProxyModel from './IrisGridProxyModel';\n\nclass IrisGridTestUtils {\n static DEFAULT_TYPE = 'java.lang.String';\n\n static valueForCell(\n rowIndex: GridRangeIndex,\n columnIndex: GridRangeIndex,\n formatValue?: boolean\n ): string {\n let value = `${rowIndex},${columnIndex}`;\n if (formatValue !== undefined && formatValue) {\n value = `(${value})`;\n }\n return value;\n }\n\n static makeColumn(\n name?: string,\n type: string = IrisGridTestUtils.DEFAULT_TYPE,\n index = 0\n ): Column {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Column({ index, name, type });\n }\n\n static makeRollupTableConfig(): RollupConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).RollupTableConfig();\n }\n\n static makeColumns(count = 5, prefix = ''): Column[] {\n const columns = [];\n for (let i = 0; i < count; i += 1) {\n columns.push(\n this.makeColumn(`${prefix}${i}`, IrisGridTestUtils.DEFAULT_TYPE, i)\n );\n }\n return columns;\n }\n\n static makeUserColumnWidths(count = 5): ModelSizeMap {\n const userColumnWidths = new Map();\n for (let i = 0; i < count; i += 1) {\n userColumnWidths.set(i.toString(), 100);\n }\n return userColumnWidths;\n }\n\n static makeRow(i: number): Row {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const row = new (dh as any).Row({ index: i, name: `${i}` });\n\n row.get = jest.fn(column =>\n IrisGridTestUtils.valueForCell(i, column.index)\n );\n\n return row;\n }\n\n static makeFilter(): FilterCondition {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).FilterCondition();\n }\n\n static makeSort(): Sort {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Sort();\n }\n\n static makeTable({\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = [],\n layoutHints = {} as LayoutHints,\n } = {}): Table {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).Table({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n table.freeze = jest.fn(() => Promise.resolve(table));\n table.layoutHints = layoutHints;\n return table;\n }\n\n static makeTreeTable(\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = []\n ): TreeTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).TreeTable({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n\n static makeInputTable(keyColumns: Column[] = []): InputTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).InputTable(keyColumns);\n }\n\n static makeSubscription(\n table = IrisGridTestUtils.makeTable()\n ): TableViewportSubscription {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).TableViewportSubscription({ table });\n }\n\n static makeModel(\n table = IrisGridTestUtils.makeTable(),\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ): IrisGridProxyModel {\n return new IrisGridProxyModel(table, formatter, inputTable);\n }\n}\n\nexport default IrisGridTestUtils;\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- /* stylelint-disable */
2
- /* stylelint-disable scss/at-import-no-partial-leading-underscore */
1
+ /* stylelint-disable */ /* stylelint-disable scss/at-import-no-partial-leading-underscore */
3
2
  :export {
4
3
  grid-bg: #211f22;
5
4
  font: 12px Fira Sans, sans-serif;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACAA;ADaA;EACE,SEaS;EFZT;EACA,OEHe;EFIf,OEHe;EFIf,WEPc;EFQd,cENe;EFOf,eATc;EAUd,wBEMS;EFLT,8BEDS;EFET,qCEXc;EFYd,uBEhBO;EFiBP,0BE2CW;EF1CX,yBECS;EFAT;EACA,YArBW;EAsBX;EACA,iBA3BgB;EA4BhB,yBExBK;EFyBL,gCELS;EFMT,cAzBa;EA0Bb;EACA;EAEA,eEXS;EFYT,qBEbS;EFcT,yBEhBS;EFiBT,yBEdS;EFeT,kBEnBS;EFoBT,wBErBS;EFsBT,yBEvBS;EFyBT,YEhCe;EFiCf,iBElCc;EFmCd,uBEzCM;EF0CN,uBE7CI;EF8CJ,mBE5CO;EF6CP,YE7CO;EF8CP;EACA,kBEjDI;EFkDJ,mBEhCS;EFmCT;EAKA,yBEjDc;EFkDd,wBErCS;EFsCT;EAKA;EAKA,4BEpDS;EFqDT,wBEvEI;EFwEJ,mBE/Dc;EFiEd,aElDS;EFmDT,8BEtEO;EFuEP,iCEXW;EFYX;EACA,iBE3DS;EF4DT,mBE9DS;EF+DT,yBEjES;EFkET,8BEtEe;EFwEf,yBE/DS;EFgET,gCE/DS;EFgET,8BEhES;EFiET,8BE9DS;EFgET,uBEvES;EFwET,6BE1ES","file":"IrisGridTheme.module.css","sourcesContent":["/* stylelint-disable */\n@import '@deephaven/components/scss/custom.scss';\n\n$selection-color: rgba($blue, 0.09);\n$selection-outline-color: $blue;\n$selection-outline-casing-color: $gray-900;\n$font-size: 12px;\n$row-height: 19px;\n$row-hover-bg: mix($gray-600, $gray-700, 50%);\n$header-bg: $content-bg;\n$header-separator-color: $gray-900;\n$header-height: 30px;\n\n:export {\n grid-bg: $gray-900;\n font: $font-size Fira Sans, sans-serif; // must be preloaded\n white: $white;\n black: $black;\n header-bg: $header-bg;\n header-color: $foreground;\n header-height: $header-height;\n header-separator-color: $header-separator-color;\n header-separator-hover-color: $gray-400;\n header-hidden-separator-hover-color: $primary;\n header-sort-bar-color: $purple;\n header-reverse-bar-color: $green-dark;\n header-bar-casing-color: $gray-900;\n header-font: 600 $font-size Fira Sans, sans-serif; // must be preloaded\n row-height: $row-height;\n row-background-colors: $gray-800 $content-bg;\n selection-color: $selection-color;\n selection-outline-color: $selection-outline-color;\n selection-outline-casing-color: $selection-outline-casing-color;\n row-hover-bg: $row-hover-bg;\n selected-row-hover-bg: rgba($blue, 0.25);\n scroll-bar-active-selection-tick-color: rgba($blue, 0.5);\n\n scroll-bar-bg: $gray-850;\n scroll-bar-hover-bg: $gray-800;\n scroll-bar-casing-color: $gray-600;\n scroll-bar-corner-color: $gray-850;\n scroll-bar-color: $gray-500;\n scroll-bar-hover-color: $gray-400;\n scroll-bar-active-color: $gray-300;\n\n text-color: $white;\n hyperlink-color: $primary;\n positive-number-color: $green;\n negative-number-color: $red;\n zero-number-color: $yellow;\n date-color: $yellow;\n pending-text-color: lighten($yellow, 10%);\n error-text-color: $danger;\n null-string-color: $gray-400;\n\n $filter-color: $primary; // local to just the following\n filter-bar-active-bg: scale-color(\n $filter-color,\n $saturation: -65%,\n $lightness: -40%\n );\n filter-bar-active-color: $filter-color;\n filter-bar-expanded-bg: $gray-800;\n filter-bar-expanded-active-bg: scale-color(\n $filter-color,\n $saturation: -75%,\n $lightness: -60%\n );\n filter-bar-expanded-active-cell-bg: scale-color(\n $filter-color,\n $saturation: -50%,\n $lightness: -40%\n );\n filter-bar-separator-color: $gray-400;\n filter-bar-error-color: $danger;\n filter-icon-color: $filter-color;\n\n scrim-color: $gray-900;\n context-menu-sort-icon-color: $purple;\n context-menu-reverse-icon-color: $green-dark;\n linker-column-hover-bg: rgba($blue, 0.09);\n tree-line-color: $gray-500;\n tree-marker-color: $gray-300;\n tree-marker-hover-color: $gray-100;\n grouped-column-divider-color: $black;\n\n floating-grid-row-color: $gray-600;\n floating-row-background-colors: $gray-700;\n floating-divider-inner-color: $gray-700;\n floating-divider-outer-color: $gray-900;\n\n overflow-button-color: $gray-300;\n overflow-button-hover-color: $gray-100;\n}\n","/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;AAaA;EACE,SCaS;EDZT;EACA,OCHe;EDIf,OCHe;EDIf,WCPc;EDQd,cCNe;EDOf,eATc;EAUd,wBCMS;EDLT,8BCDS;EDET,qCCXc;EDYd,uBChBO;EDiBP,0BC2CW;ED1CX,yBCCS;EDAT;EACA,YArBW;EAsBX;EACA,iBA3BgB;EA4BhB,yBCxBK;EDyBL,gCCLS;EDMT,cAzBa;EA0Bb;EACA;EAEA,eCXS;EDYT,qBCbS;EDcT,yBChBS;EDiBT,yBCdS;EDeT,kBCnBS;EDoBT,wBCrBS;EDsBT,yBCvBS;EDyBT,YChCe;EDiCf,iBClCc;EDmCd,uBCzCM;ED0CN,uBC7CI;ED8CJ,mBC5CO;ED6CP,YC7CO;ED8CP;EACA,kBCjDI;EDkDJ,mBChCS;EDmCT;EAKA,yBCjDc;EDkDd,wBCrCS;EDsCT;EAKA;EAKA,4BCpDS;EDqDT,wBCvEI;EDwEJ,mBC/Dc;EDiEd,aClDS;EDmDT,8BCtEO;EDuEP,iCCXW;EDYX;EACA,iBC3DS;ED4DT,mBC9DS;ED+DT,yBCjES;EDkET,8BCtEe;EDwEf,yBC/DS;EDgET,gCC/DS;EDgET,8BChES;EDiET,8BC9DS;EDgET,uBCvES;EDwET,6BC1ES","file":"IrisGridTheme.module.css","sourcesContent":["/* stylelint-disable */\n@import '@deephaven/components/scss/custom.scss';\n\n$selection-color: rgba($blue, 0.09);\n$selection-outline-color: $blue;\n$selection-outline-casing-color: $gray-900;\n$font-size: 12px;\n$row-height: 19px;\n$row-hover-bg: mix($gray-600, $gray-700, 50%);\n$header-bg: $content-bg;\n$header-separator-color: $gray-900;\n$header-height: 30px;\n\n:export {\n grid-bg: $gray-900;\n font: $font-size Fira Sans, sans-serif; // must be preloaded\n white: $white;\n black: $black;\n header-bg: $header-bg;\n header-color: $foreground;\n header-height: $header-height;\n header-separator-color: $header-separator-color;\n header-separator-hover-color: $gray-400;\n header-hidden-separator-hover-color: $primary;\n header-sort-bar-color: $purple;\n header-reverse-bar-color: $green-dark;\n header-bar-casing-color: $gray-900;\n header-font: 600 $font-size Fira Sans, sans-serif; // must be preloaded\n row-height: $row-height;\n row-background-colors: $gray-800 $content-bg;\n selection-color: $selection-color;\n selection-outline-color: $selection-outline-color;\n selection-outline-casing-color: $selection-outline-casing-color;\n row-hover-bg: $row-hover-bg;\n selected-row-hover-bg: rgba($blue, 0.25);\n scroll-bar-active-selection-tick-color: rgba($blue, 0.5);\n\n scroll-bar-bg: $gray-850;\n scroll-bar-hover-bg: $gray-800;\n scroll-bar-casing-color: $gray-600;\n scroll-bar-corner-color: $gray-850;\n scroll-bar-color: $gray-500;\n scroll-bar-hover-color: $gray-400;\n scroll-bar-active-color: $gray-300;\n\n text-color: $white;\n hyperlink-color: $primary;\n positive-number-color: $green;\n negative-number-color: $red;\n zero-number-color: $yellow;\n date-color: $yellow;\n pending-text-color: lighten($yellow, 10%);\n error-text-color: $danger;\n null-string-color: $gray-400;\n\n $filter-color: $primary; // local to just the following\n filter-bar-active-bg: scale-color(\n $filter-color,\n $saturation: -65%,\n $lightness: -40%\n );\n filter-bar-active-color: $filter-color;\n filter-bar-expanded-bg: $gray-800;\n filter-bar-expanded-active-bg: scale-color(\n $filter-color,\n $saturation: -75%,\n $lightness: -60%\n );\n filter-bar-expanded-active-cell-bg: scale-color(\n $filter-color,\n $saturation: -50%,\n $lightness: -40%\n );\n filter-bar-separator-color: $gray-400;\n filter-bar-error-color: $danger;\n filter-icon-color: $filter-color;\n\n scrim-color: $gray-900;\n context-menu-sort-icon-color: $purple;\n context-menu-reverse-icon-color: $green-dark;\n linker-column-hover-bg: rgba($blue, 0.09);\n tree-line-color: $gray-500;\n tree-marker-color: $gray-300;\n tree-marker-hover-color: $gray-100;\n grouped-column-divider-color: $black;\n\n floating-grid-row-color: $gray-600;\n floating-row-background-colors: $gray-700;\n floating-divider-inner-color: $gray-700;\n floating-divider-outer-color: $gray-900;\n\n overflow-button-color: $gray-300;\n overflow-button-hover-color: $gray-100;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","assertNotNull","IrisGridTableModelTemplate","IrisGridTreeTableModel","columns","groupedColumns","Set","length","map","c1","findIndex","c2","name","applyBufferedViewport","viewportTop","viewportBottom","table","setViewport","textForCell","x","y","column","row","hasChildren","constituentType","value","valueForCell","displayString","extractViewportRow","isExpanded","depth","snapshot","ranges","includeHeaders","formatValue","viewport","viewportData","result","push","c","viewportRange","offset","rows","i","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","data","get","hasExpandableRows","isExpandAllAvailable","expandAll","undefined","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","has","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow","updateFrozenColumns","Error"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow, ColumnName } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nexport interface UITreeRow extends UIRow {\n isExpanded: boolean;\n hasChildren: boolean;\n depth: number;\n}\nclass IrisGridTreeTableModel extends IrisGridTableModelTemplate<\n TreeTable,\n UITreeRow\n> {\n // table: TreeTable\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n this.table.setViewport(viewportTop, viewportBottom, columns);\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const column = this.columns[x];\n const row = this.row(y);\n if (row != null && column != null) {\n if (!row.hasChildren && column.constituentType != null) {\n const value = this.valueForCell(x, y);\n return this.displayString(value, column.constituentType, column.name);\n }\n }\n\n return super.textForCell(x, y);\n }\n\n extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow {\n const { isExpanded, hasChildren, depth } = row;\n return {\n ...super.extractViewportRow(row, columns),\n isExpanded,\n hasChildren,\n depth,\n };\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders?: boolean,\n formatValue?: (value: unknown, column: Column) => unknown\n ): Promise<unknown[][]> {\n assertNotNull(this.viewport);\n assertNotNull(this.viewportData);\n const { columns } = this.viewport;\n const result = [];\n\n if (includeHeaders != null && includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n\n const viewportRange = new GridRange(\n 0,\n this.viewportData?.offset,\n columns.length,\n this.viewportData.offset + this.viewportData.rows.length\n );\n\n for (let i = 0; i < ranges.length; i += 1) {\n const intersection = GridRange.intersection(viewportRange, ranges[i]);\n\n assertNotNull(intersection);\n assertNotNull(intersection.startRow);\n assertNotNull(intersection.endRow);\n\n for (let r = intersection.startRow; r <= intersection.endRow; r += 1) {\n const resultRow = [];\n const viewportRow = this.viewportData.rows[\n r - this.viewportData.offset\n ];\n assertNotNull(intersection.startColumn);\n assertNotNull(intersection.endColumn);\n for (\n let c = intersection.startColumn;\n c <= intersection.endColumn;\n c += 1\n ) {\n assertNotNull(formatValue);\n resultRow.push(\n formatValue(viewportRow.data.get(c)?.value, this.columns[c])\n );\n }\n result.push(resultRow);\n }\n }\n\n return result;\n }\n\n get groupedColumns(): Column[] {\n return this.table.groupedColumns;\n }\n\n get hasExpandableRows(): boolean {\n return true;\n }\n\n get isExpandAllAvailable(): boolean {\n return this.table.expandAll !== undefined;\n }\n\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(\n this.columns,\n this.groupedColumns\n ).has(columnIndex);\n }\n\n isColumnMovable(column: ModelIndex): boolean {\n return column >= this.groupedColumns.length;\n }\n\n isRowExpandable(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.hasChildren ?? false;\n }\n\n isRowExpanded(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(\n y: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n if (this.isExpandAllAvailable) {\n this.table.setExpanded(y, isExpanded, expandDescendants);\n } else {\n this.table.setExpanded(y, isExpanded);\n }\n }\n\n expandAll(): void {\n if (this.table.expandAll) {\n this.table.expandAll();\n }\n }\n\n collapseAll(): void {\n if (this.table.collapseAll) {\n this.table.collapseAll();\n }\n }\n\n depthForRow(y: ModelIndex): ModelIndex {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[], groupedColumns: Column[]) =>\n new Set(\n (groupedColumns?.length > 0 ? groupedColumns : columns).map(c1 =>\n columns.findIndex(c2 => c1.name === c2.name)\n )\n )\n );\n\n updateFrozenColumns(columns: ColumnName[]): void {\n if (columns.length > 0) {\n throw new Error('Cannot freeze columns on a tree table');\n }\n }\n}\n\nexport default IrisGridTreeTableModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","assertNotNull","IrisGridTableModelTemplate","IrisGridTreeTableModel","constructor","arguments","_defineProperty","columns","groupedColumns","Set","length","map","c1","findIndex","c2","name","applyBufferedViewport","viewportTop","viewportBottom","table","setViewport","textForCell","x","y","column","row","hasChildren","constituentType","value","valueForCell","displayString","extractViewportRow","isExpanded","depth","_objectSpread","snapshot","ranges","includeHeaders","formatValue","_this","_asyncToGenerator","_this$viewportData","viewport","viewportData","result","push","c","viewportRange","offset","rows","i","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","_viewportRow$data$get","data","get","hasExpandableRows","isExpandAllAvailable","expandAll","undefined","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","has","isColumnMovable","isRowExpandable","_row$hasChildren","isRowExpanded","_row$isExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow","_row$depth","updateFrozenColumns","Error"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow, ColumnName } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nexport interface UITreeRow extends UIRow {\n isExpanded: boolean;\n hasChildren: boolean;\n depth: number;\n}\nclass IrisGridTreeTableModel extends IrisGridTableModelTemplate<\n TreeTable,\n UITreeRow\n> {\n // table: TreeTable\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n this.table.setViewport(viewportTop, viewportBottom, columns);\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const column = this.columns[x];\n const row = this.row(y);\n if (row != null && column != null) {\n if (!row.hasChildren && column.constituentType != null) {\n const value = this.valueForCell(x, y);\n return this.displayString(value, column.constituentType, column.name);\n }\n }\n\n return super.textForCell(x, y);\n }\n\n extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow {\n const { isExpanded, hasChildren, depth } = row;\n return {\n ...super.extractViewportRow(row, columns),\n isExpanded,\n hasChildren,\n depth,\n };\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders?: boolean,\n formatValue?: (value: unknown, column: Column) => unknown\n ): Promise<unknown[][]> {\n assertNotNull(this.viewport);\n assertNotNull(this.viewportData);\n const { columns } = this.viewport;\n const result = [];\n\n if (includeHeaders != null && includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n\n const viewportRange = new GridRange(\n 0,\n this.viewportData?.offset,\n columns.length,\n this.viewportData.offset + this.viewportData.rows.length\n );\n\n for (let i = 0; i < ranges.length; i += 1) {\n const intersection = GridRange.intersection(viewportRange, ranges[i]);\n\n assertNotNull(intersection);\n assertNotNull(intersection.startRow);\n assertNotNull(intersection.endRow);\n\n for (let r = intersection.startRow; r <= intersection.endRow; r += 1) {\n const resultRow = [];\n const viewportRow = this.viewportData.rows[\n r - this.viewportData.offset\n ];\n assertNotNull(intersection.startColumn);\n assertNotNull(intersection.endColumn);\n for (\n let c = intersection.startColumn;\n c <= intersection.endColumn;\n c += 1\n ) {\n assertNotNull(formatValue);\n resultRow.push(\n formatValue(viewportRow.data.get(c)?.value, this.columns[c])\n );\n }\n result.push(resultRow);\n }\n }\n\n return result;\n }\n\n get groupedColumns(): Column[] {\n return this.table.groupedColumns;\n }\n\n get hasExpandableRows(): boolean {\n return true;\n }\n\n get isExpandAllAvailable(): boolean {\n return this.table.expandAll !== undefined;\n }\n\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(\n this.columns,\n this.groupedColumns\n ).has(columnIndex);\n }\n\n isColumnMovable(column: ModelIndex): boolean {\n return column >= this.groupedColumns.length;\n }\n\n isRowExpandable(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.hasChildren ?? false;\n }\n\n isRowExpanded(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(\n y: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n if (this.isExpandAllAvailable) {\n this.table.setExpanded(y, isExpanded, expandDescendants);\n } else {\n this.table.setExpanded(y, isExpanded);\n }\n }\n\n expandAll(): void {\n if (this.table.expandAll) {\n this.table.expandAll();\n }\n }\n\n collapseAll(): void {\n if (this.table.collapseAll) {\n this.table.collapseAll();\n }\n }\n\n depthForRow(y: ModelIndex): ModelIndex {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[], groupedColumns: Column[]) =>\n new Set(\n (groupedColumns?.length > 0 ? groupedColumns : columns).map(c1 =>\n columns.findIndex(c2 => c1.name === c2.name)\n )\n )\n );\n\n updateFrozenColumns(columns: ColumnName[]): void {\n if (columns.length > 0) {\n throw new Error('Cannot freeze columns on a tree table');\n }\n }\n}\n\nexport default IrisGridTreeTableModel;\n"],"mappings":";;;;;;;AAAA;AACA,OAAOA,OAAO,MAAM,aAAa;AACjC,SAASC,SAAS,QAAoB,iBAAiB;AAEvD,SAASC,aAAa,QAAQ,kBAAkB;AAAC,OAE1CC,0BAA0B;AAOjC,MAAMC,sBAAsB,SAASD,0BAA0B,CAG7D;EAAAE,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,uCAgK+BP,OAAO,CACpC,CAACQ,OAAiB,EAAEC,cAAwB,KAC1C,IAAIC,GAAG,CACL,CAAC,CAAAD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEE,MAAM,IAAG,CAAC,GAAGF,cAAc,GAAGD,OAAO,EAAEI,GAAG,CAACC,EAAE,IAC5DL,OAAO,CAACM,SAAS,CAACC,EAAE,IAAIF,EAAE,CAACG,IAAI,KAAKD,EAAE,CAACC,IAAI,CAC7C,CACF,CACJ,CAAC;EAAA;EAtKD;;EAEAC,qBAAqBA,CACnBC,WAAmB,EACnBC,cAAsB,EACtBX,OAAiB,EACX;IACN,IAAI,CAACY,KAAK,CAACC,WAAW,CAACH,WAAW,EAAEC,cAAc,EAAEX,OAAO,CAAC;EAC9D;EAEAc,WAAWA,CAACC,CAAa,EAAEC,CAAa,EAAU;IAChD,IAAMC,MAAM,GAAG,IAAI,CAACjB,OAAO,CAACe,CAAC,CAAC;IAC9B,IAAMG,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,IAAIE,GAAG,IAAI,IAAI,IAAID,MAAM,IAAI,IAAI,EAAE;MACjC,IAAI,CAACC,GAAG,CAACC,WAAW,IAAIF,MAAM,CAACG,eAAe,IAAI,IAAI,EAAE;QACtD,IAAMC,MAAK,GAAG,IAAI,CAACC,YAAY,CAACP,CAAC,EAAEC,CAAC,CAAC;QACrC,OAAO,IAAI,CAACO,aAAa,CAACF,MAAK,EAAEJ,MAAM,CAACG,eAAe,EAAEH,MAAM,CAACT,IAAI,CAAC;MACvE;IACF;IAEA,OAAO,KAAK,CAACM,WAAW,CAACC,CAAC,EAAEC,CAAC,CAAC;EAChC;EAEAQ,kBAAkBA,CAACN,GAAY,EAAElB,OAAiB,EAAa;IAC7D,IAAM;MAAEyB,UAAU;MAAEN,WAAW;MAAEO;IAAM,CAAC,GAAGR,GAAG;IAC9C,OAAAS,aAAA,CAAAA,aAAA,KACK,KAAK,CAACH,kBAAkB,CAACN,GAAG,EAAElB,OAAO,CAAC;MACzCyB,UAAU;MACVN,WAAW;MACXO;IAAK;EAET;EAEME,QAAQA,CACZC,MAAmB,EACnBC,cAAwB,EACxBC,WAAyD,EACnC;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAAA,IAAAC,kBAAA;MACtBxC,aAAa,CAACsC,KAAI,CAACG,QAAQ,CAAC;MAC5BzC,aAAa,CAACsC,KAAI,CAACI,YAAY,CAAC;MAChC,IAAM;QAAEpC;MAAQ,CAAC,GAAGgC,KAAI,CAACG,QAAQ;MACjC,IAAME,MAAM,GAAG,EAAE;MAEjB,IAAIP,cAAc,IAAI,IAAI,IAAIA,cAAc,EAAE;QAC5CO,MAAM,CAACC,IAAI,CAACtC,OAAO,CAACI,GAAG,CAACmC,CAAC,IAAIA,CAAC,CAAC/B,IAAI,CAAC,CAAC;MACvC;MAEA,IAAMgC,aAAa,GAAG,IAAI/C,SAAS,CACjC,CAAC,GAAAyC,kBAAA,GACDF,KAAI,CAACI,YAAY,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBO,MAAM,EACzBzC,OAAO,CAACG,MAAM,EACd6B,KAAI,CAACI,YAAY,CAACK,MAAM,GAAGT,KAAI,CAACI,YAAY,CAACM,IAAI,CAACvC,MACpD,CAAC;MAED,KAAK,IAAIwC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,MAAM,CAAC1B,MAAM,EAAEwC,CAAC,IAAI,CAAC,EAAE;QACzC,IAAMC,YAAY,GAAGnD,SAAS,CAACmD,YAAY,CAACJ,aAAa,EAAEX,MAAM,CAACc,CAAC,CAAC,CAAC;QAErEjD,aAAa,CAACkD,YAAY,CAAC;QAC3BlD,aAAa,CAACkD,YAAY,CAACC,QAAQ,CAAC;QACpCnD,aAAa,CAACkD,YAAY,CAACE,MAAM,CAAC;QAElC,KAAK,IAAIC,CAAC,GAAGH,YAAY,CAACC,QAAQ,EAAEE,CAAC,IAAIH,YAAY,CAACE,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;UACpE,IAAMC,SAAS,GAAG,EAAE;UACpB,IAAMC,WAAW,GAAGjB,KAAI,CAACI,YAAY,CAACM,IAAI,CACxCK,CAAC,GAAGf,KAAI,CAACI,YAAY,CAACK,MAAM,CAC7B;UACD/C,aAAa,CAACkD,YAAY,CAACM,WAAW,CAAC;UACvCxD,aAAa,CAACkD,YAAY,CAACO,SAAS,CAAC;UACrC,KACE,IAAIZ,CAAC,GAAGK,YAAY,CAACM,WAAW,EAChCX,CAAC,IAAIK,YAAY,CAACO,SAAS,EAC3BZ,CAAC,IAAI,CAAC,EACN;YAAA,IAAAa,qBAAA;YACA1D,aAAa,CAACqC,WAAW,CAAC;YAC1BiB,SAAS,CAACV,IAAI,CACZP,WAAW,EAAAqB,qBAAA,GAACH,WAAW,CAACI,IAAI,CAACC,GAAG,CAACf,CAAC,CAAC,cAAAa,qBAAA,uBAAvBA,qBAAA,CAAyB/B,KAAK,EAAEW,KAAI,CAAChC,OAAO,CAACuC,CAAC,CAAC,CAC7D,CAAC;UACH;UACAF,MAAM,CAACC,IAAI,CAACU,SAAS,CAAC;QACxB;MACF;MAEA,OAAOX,MAAM;IAAC;EAChB;EAEA,IAAIpC,cAAcA,CAAA,EAAa;IAC7B,OAAO,IAAI,CAACW,KAAK,CAACX,cAAc;EAClC;EAEA,IAAIsD,iBAAiBA,CAAA,EAAY;IAC/B,OAAO,IAAI;EACb;EAEA,IAAIC,oBAAoBA,CAAA,EAAY;IAClC,OAAO,IAAI,CAAC5C,KAAK,CAAC6C,SAAS,KAAKC,SAAS;EAC3C;EAEA,IAAIC,uBAAuBA,CAAA,EAAY;IACrC,OAAO,KAAK;EACd;EAEA,IAAIC,yBAAyBA,CAAA,EAAY;IACvC,OAAO,KAAK;EACd;EAEA,IAAIC,YAAYA,CAAA,EAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,YAAYA,CAACC,WAAuB,EAAW;IAC7C,OAAO,IAAI,CAACC,4BAA4B,CACtC,IAAI,CAAChE,OAAO,EACZ,IAAI,CAACC,cACP,CAAC,CAACgE,GAAG,CAACF,WAAW,CAAC;EACpB;EAEAG,eAAeA,CAACjD,MAAkB,EAAW;IAC3C,OAAOA,MAAM,IAAI,IAAI,CAAChB,cAAc,CAACE,MAAM;EAC7C;EAEAgE,eAAeA,CAACnD,CAAa,EAAW;IAAA,IAAAoD,gBAAA;IACtC,IAAMlD,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,QAAAoD,gBAAA,GAAOlD,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,WAAW,cAAAiD,gBAAA,cAAAA,gBAAA,GAAI,KAAK;EAClC;EAEAC,aAAaA,CAACrD,CAAa,EAAW;IAAA,IAAAsD,eAAA;IACpC,IAAMpD,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,QAAAsD,eAAA,GAAOpD,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEO,UAAU,cAAA6C,eAAA,cAAAA,eAAA,GAAI,KAAK;EACjC;EAEAC,cAAcA,CACZvD,CAAa,EACbS,UAAmB,EAEb;IAAA,IADN+C,iBAAiB,GAAA1E,SAAA,CAAAK,MAAA,QAAAL,SAAA,QAAA4D,SAAA,GAAA5D,SAAA,MAAG,KAAK;IAEzB,IAAI,IAAI,CAAC0D,oBAAoB,EAAE;MAC7B,IAAI,CAAC5C,KAAK,CAAC6D,WAAW,CAACzD,CAAC,EAAES,UAAU,EAAE+C,iBAAiB,CAAC;IAC1D,CAAC,MAAM;MACL,IAAI,CAAC5D,KAAK,CAAC6D,WAAW,CAACzD,CAAC,EAAES,UAAU,CAAC;IACvC;EACF;EAEAgC,SAASA,CAAA,EAAS;IAChB,IAAI,IAAI,CAAC7C,KAAK,CAAC6C,SAAS,EAAE;MACxB,IAAI,CAAC7C,KAAK,CAAC6C,SAAS,CAAC,CAAC;IACxB;EACF;EAEAiB,WAAWA,CAAA,EAAS;IAClB,IAAI,IAAI,CAAC9D,KAAK,CAAC8D,WAAW,EAAE;MAC1B,IAAI,CAAC9D,KAAK,CAAC8D,WAAW,CAAC,CAAC;IAC1B;EACF;EAEAC,WAAWA,CAAC3D,CAAa,EAAc;IAAA,IAAA4D,UAAA;IACrC,IAAM1D,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,OAAO,EAAA4D,UAAA,GAAC1D,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEQ,KAAK,cAAAkD,UAAA,cAAAA,UAAA,GAAI,CAAC,IAAI,CAAC;EAC9B;EAWAC,mBAAmBA,CAAC7E,OAAqB,EAAQ;IAC/C,IAAIA,OAAO,CAACG,MAAM,GAAG,CAAC,EAAE;MACtB,MAAM,IAAI2E,KAAK,CAAC,uCAAuC,CAAC;IAC1D;EACF;AACF;AAEA,eAAelF,sBAAsB"}
@@ -17,6 +17,9 @@ import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js
17
17
  import AdvancedSettings from "./sidebar/AdvancedSettings.js";
18
18
  import ColumnHeaderGroup from "./ColumnHeaderGroup.js";
19
19
  var log = Log.module('IrisGridUtils');
20
+
21
+ /** @deprecated Use `DehydratedSort` instead */
22
+
20
23
  /**
21
24
  * Checks if an index is valid for the given array
22
25
  * @param x The index to check