@deephaven/iris-grid 0.96.0 → 0.96.1-beta.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridModelUpdater.d.ts","sourceRoot":"","sources":["../src/IrisGridModelUpdater.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAKhC,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,aAAa,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAA0C,EAC1C,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,YAAmB,EACnB,YAAmB,EACnB,qBAAmC,EACnC,eAAmB,EACnB,cAA0B,EAC1B,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,EAAE,yBAAyB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAqIhD;kBA7JQ,oBAAoB;;;AAiK7B,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"IrisGridModelUpdater.d.ts","sourceRoot":"","sources":["../src/IrisGridModelUpdater.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAKhC,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,aAAa,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAA0C,EAC1C,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,YAAmB,EACnB,YAAmB,EACnB,qBAAmC,EACnC,eAAmB,EACnB,cAA0B,EAC1B,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,EAAE,yBAAyB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAuIhD;kBA/JQ,oBAAoB;;;AAmK7B,eAAe,oBAAoB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable react/require-default-props */
2
2
  /* eslint-disable no-param-reassign */
3
- import { useMemo } from 'react';
3
+ import { useEffect, useMemo } from 'react';
4
4
  import { TableUtils } from '@deephaven/jsapi-utils';
5
5
  import { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';
6
6
  import { useOnChange } from '@deephaven/react-hooks';
@@ -89,12 +89,6 @@ function IrisGridModelUpdater(_ref) {
89
89
  model.totalsConfig = totalsConfig;
90
90
  }
91
91
  }, [model, isTotalsAvailable, totalsConfig]);
92
- useOnChange(function updatePendingRowCount() {
93
- model.pendingRowCount = pendingRowCount;
94
- }, [model, pendingRowCount]);
95
- useOnChange(function updatePendingDataMap() {
96
- model.pendingDataMap = pendingDataMap;
97
- }, [model, pendingDataMap]);
98
92
  useOnChange(function updateFrozenColumns() {
99
93
  if (frozenColumns) {
100
94
  model.updateFrozenColumns(frozenColumns);
@@ -108,6 +102,14 @@ function IrisGridModelUpdater(_ref) {
108
102
  model.partitionConfig = partitionConfig;
109
103
  }
110
104
  }, [model, partitionConfig]);
105
+ // These setters are wrapped in useEffect instead of useOnChange because they emit an event
106
+ // that potentially causes side effects, violating the rule that render should be a pure function.
107
+ useEffect(function updatePendingRowCount() {
108
+ model.pendingRowCount = pendingRowCount;
109
+ }, [model, pendingRowCount]);
110
+ useEffect(function updatePendingDataMap() {
111
+ model.pendingDataMap = pendingDataMap;
112
+ }, [model, pendingDataMap]);
111
113
  return null;
112
114
  }
113
115
  IrisGridModelUpdater.displayName = 'IrisGridModelUpdater';
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridModelUpdater.js","names":["useMemo","TableUtils","EMPTY_ARRAY","EMPTY_MAP","useOnChange","IrisGridUtils","isPartitionedGridModel","isIrisGridTreeTableModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","_ref","model","top","bottom","left","right","filter","formatter","reverseType","REVERSE_TYPE","NONE","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","reverse","sort","updateFormatter","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","updatePendingRowCount","updatePendingDataMap","updateFrozenColumns","updateColumnHeaderGroups","updatePartitionConfig","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type ModelIndex, type MoveOperation } from '@deephaven/grid';\nimport {\n type Formatter,\n type ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from './IrisGridUtils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n} from './CommonTypes';\nimport type IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\nimport { isIrisGridTreeTableModel } from './IrisGridTreeTableModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverseType?: ReverseType;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n showExtraGroupColumn?: boolean;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater({\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n reverseType = TableUtils.REVERSE_TYPE.NONE,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn,\n}: IrisGridModelUpdaterProps): JSX.Element | null {\n const { isTotalsAvailable, isRollupAvailable } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n useOnChange(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useOnChange(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverseType !== TableUtils.REVERSE_TYPE.NONE) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverseType]\n );\n useOnChange(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useOnChange(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useOnChange(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useOnChange(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useOnChange(\n function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, isRollupAvailable, rollupConfig]\n );\n useOnChange(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useOnChange(\n function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, isTotalsAvailable, totalsConfig]\n );\n useOnChange(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useOnChange(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n useOnChange(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useOnChange(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useOnChange(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n\n return null;\n}\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridModelUpdater.js","names":["useEffect","useMemo","TableUtils","EMPTY_ARRAY","EMPTY_MAP","useOnChange","IrisGridUtils","isPartitionedGridModel","isIrisGridTreeTableModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","_ref","model","top","bottom","left","right","filter","formatter","reverseType","REVERSE_TYPE","NONE","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","reverse","sort","updateFormatter","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","updateFrozenColumns","updateColumnHeaderGroups","updatePartitionConfig","updatePendingRowCount","updatePendingDataMap","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type ModelIndex, type MoveOperation } from '@deephaven/grid';\nimport {\n type Formatter,\n type ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from './IrisGridUtils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n} from './CommonTypes';\nimport type IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\nimport { isIrisGridTreeTableModel } from './IrisGridTreeTableModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverseType?: ReverseType;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n showExtraGroupColumn?: boolean;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater({\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n reverseType = TableUtils.REVERSE_TYPE.NONE,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn,\n}: IrisGridModelUpdaterProps): JSX.Element | null {\n const { isTotalsAvailable, isRollupAvailable } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n useOnChange(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useOnChange(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverseType !== TableUtils.REVERSE_TYPE.NONE) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverseType]\n );\n useOnChange(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useOnChange(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useOnChange(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useOnChange(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useOnChange(\n function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, isRollupAvailable, rollupConfig]\n );\n useOnChange(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useOnChange(\n function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, isTotalsAvailable, totalsConfig]\n );\n useOnChange(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useOnChange(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useOnChange(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n // These setters are wrapped in useEffect instead of useOnChange because they emit an event\n // that potentially causes side effects, violating the rule that render should be a pure function.\n useEffect(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useEffect(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n\n return null;\n}\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.96.0",
3
+ "version": "0.96.1-beta.0+9e833931",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,18 +31,18 @@
31
31
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
32
32
  },
33
33
  "dependencies": {
34
- "@deephaven/components": "^0.96.0",
35
- "@deephaven/console": "^0.96.0",
36
- "@deephaven/filters": "^0.96.0",
37
- "@deephaven/grid": "^0.96.0",
38
- "@deephaven/icons": "^0.96.0",
39
- "@deephaven/jsapi-components": "^0.96.0",
34
+ "@deephaven/components": "^0.96.1-beta.0+9e833931",
35
+ "@deephaven/console": "^0.96.1-beta.0+9e833931",
36
+ "@deephaven/filters": "^0.96.1-beta.0+9e833931",
37
+ "@deephaven/grid": "^0.96.1-beta.0+9e833931",
38
+ "@deephaven/icons": "^0.96.1-beta.0+9e833931",
39
+ "@deephaven/jsapi-components": "^0.96.1-beta.0+9e833931",
40
40
  "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
41
- "@deephaven/jsapi-utils": "^0.96.0",
42
- "@deephaven/log": "^0.96.0",
43
- "@deephaven/react-hooks": "^0.96.0",
44
- "@deephaven/storage": "^0.96.0",
45
- "@deephaven/utils": "^0.96.0",
41
+ "@deephaven/jsapi-utils": "^0.96.1-beta.0+9e833931",
42
+ "@deephaven/log": "^0.96.1-beta.0+9e833931",
43
+ "@deephaven/react-hooks": "^0.96.1-beta.0+9e833931",
44
+ "@deephaven/storage": "^0.96.1-beta.0+9e833931",
45
+ "@deephaven/utils": "^0.96.1-beta.0+9e833931",
46
46
  "@dnd-kit/core": "^6.1.0",
47
47
  "@dnd-kit/sortable": "^7.0.2",
48
48
  "@dnd-kit/utilities": "^3.2.2",
@@ -65,9 +65,9 @@
65
65
  "react-dom": ">=16.8.0"
66
66
  },
67
67
  "devDependencies": {
68
- "@deephaven/jsapi-shim": "^0.96.0",
69
- "@deephaven/mocks": "^0.96.0",
70
- "@deephaven/test-utils": "^0.96.0",
68
+ "@deephaven/jsapi-shim": "^0.96.1-beta.0+9e833931",
69
+ "@deephaven/mocks": "^0.96.1-beta.0+9e833931",
70
+ "@deephaven/test-utils": "^0.96.1-beta.0+9e833931",
71
71
  "deep-equal": "2.2.3"
72
72
  },
73
73
  "files": [
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "5e116d87231c1c1685e31da2bd27c8eeef23f41e"
83
+ "gitHead": "9e833931f86671d1677d31bb7dbb45a13bb848bd"
84
84
  }