@deephaven/iris-grid 0.32.1-beta.1 → 0.32.1-beta.3

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/GotoRow.d.ts CHANGED
@@ -2,9 +2,7 @@ import { ChangeEvent, ReactElement } from 'react';
2
2
  import { TypeValue as FilterTypeValue } from '@deephaven/filters';
3
3
  import './GotoRow.scss';
4
4
  import IrisGridModel from './IrisGridModel';
5
- import IrisGridProxyModel from './IrisGridProxyModel';
6
5
  import { ColumnName } from './CommonTypes';
7
- export declare function isIrisGridProxyModel(model: IrisGridModel): model is IrisGridProxyModel;
8
6
  interface GotoRowProps {
9
7
  gotoRow: string;
10
8
  gotoRowError: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GotoRow.d.ts","sourceRoot":"","sources":["../src/GotoRow.tsx"],"names":[],"mappings":"AAEA,OAAc,EACZ,WAAW,EAEX,YAAY,EAIb,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,GACnB,KAAK,IAAI,kBAAkB,CAE7B;AAID,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,sBAAsB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACvE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,2BAA2B,EAAE,UAAU,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACvE,gCAAgC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACpE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,iBAAS,OAAO,CAAC,EACf,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,sBAAsB,EACtB,OAAO,EACP,2BAA2B,EAC3B,SAAS,EACT,oCAAoC,EACpC,gCAAgC,EAChC,kBAAkB,EAClB,iBAAiB,GAClB,EAAE,YAAY,GAAG,YAAY,CAqS7B;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"GotoRow.d.ts","sourceRoot":"","sources":["../src/GotoRow.tsx"],"names":[],"mappings":"AAEA,OAAc,EACZ,WAAW,EAEX,YAAY,EAIb,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAU3C,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,sBAAsB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACvE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,2BAA2B,EAAE,UAAU,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACvE,gCAAgC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACpE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,iBAAS,OAAO,CAAC,EACf,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,sBAAsB,EACtB,OAAO,EACP,2BAA2B,EAC3B,SAAS,EACT,oCAAoC,EACpC,gCAAgC,EAChC,kBAAkB,EAClB,iBAAiB,GAClB,EAAE,YAAY,GAAG,YAAY,CAqS7B;AAED,eAAe,OAAO,CAAC"}
package/dist/GotoRow.js CHANGED
@@ -7,7 +7,7 @@ import { TableUtils } from '@deephaven/jsapi-utils';
7
7
  import classNames from 'classnames';
8
8
  import "./GotoRow.css";
9
9
  import IrisGridBottomBar from "./IrisGridBottomBar.js";
10
- export function isIrisGridProxyModel(model) {
10
+ function isIrisGridProxyModel(model) {
11
11
  return model.model !== undefined;
12
12
  }
13
13
  var DEFAULT_FORMAT_STRING = '###,##0';
@@ -1 +1 @@
1
- {"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","res","rowCount","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeyDown","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","select","renderValueInput","dataType","DECIMAL","INT","target","toLowerCase","test","DATETIME","STRING","event","eq","contains","eqIgnoreCase","BOOLEAN","dh","i18n","NumberFormat","format","marginRight","isSeekRowAvailable","columnName","map","column","name"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nexport function isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const res = 'Row number';\n\n const { rowCount } = model;\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n >\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n EqIgnoreCase\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeyDown}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeyDown}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to row</div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder={res}\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","res","rowCount","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeyDown","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","select","renderValueInput","dataType","DECIMAL","INT","target","toLowerCase","test","DATETIME","STRING","event","eq","contains","eqIgnoreCase","BOOLEAN","dh","i18n","NumberFormat","format","marginRight","isSeekRowAvailable","columnName","map","column","name"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const res = 'Row number';\n\n const { rowCount } = model;\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n >\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n EqIgnoreCase\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeyDown}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeyDown}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to row</div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder={res}\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Column } from '@deephaven/jsapi-shim';
2
2
  import AggregationOperation from './AggregationOperation';
3
+ export declare const SELECTABLE_OPTIONS: AggregationOperation[];
3
4
  /**
4
5
  * Check if an operation requires a rollup/table grouping
5
6
  * @param type The operation to check
@@ -1 +1 @@
1
- {"version":3,"file":"AggregationUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,SAAU,oBAAoB,KAAG,OAM9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kBACZ,oBAAoB,cACvB,MAAM,KACjB,OA0BF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,SAAS,MAAM,EAAE,iBACX,oBAAoB,KAClC,MAAM,EAAkE,CAAC;AAE5E,eAAO,MAAM,uBAAuB,YACzB,SAAS,MAAM,EAAE,iBACX,oBAAoB,YACzB,SAAS,MAAM,EAAE,UACnB,OAAO,KACd,MAAM,EAGwD,CAAC;;;;;;AAElE,wBAIE"}
1
+ {"version":3,"file":"AggregationUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,kBAAkB,wBAc9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,SAAU,oBAAoB,KAAG,OAM9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kBACZ,oBAAoB,cACvB,MAAM,KACjB,OA0BF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,SAAS,MAAM,EAAE,iBACX,oBAAoB,KAClC,MAAM,EAAkE,CAAC;AAE5E,eAAO,MAAM,uBAAuB,YACzB,SAAS,MAAM,EAAE,iBACX,oBAAoB,YACzB,SAAS,MAAM,EAAE,UACnB,OAAO,KACd,MAAM,EAGwD,CAAC;;;;;;AAElE,wBAIE"}
@@ -1,5 +1,7 @@
1
1
  import { TableUtils } from '@deephaven/jsapi-utils';
2
2
  import AggregationOperation from "./AggregationOperation.js";
3
+ export var SELECTABLE_OPTIONS = [AggregationOperation.SUM, AggregationOperation.ABS_SUM, AggregationOperation.MIN, AggregationOperation.MAX, AggregationOperation.VAR, AggregationOperation.AVG, AggregationOperation.STD, AggregationOperation.FIRST, AggregationOperation.LAST, AggregationOperation.COUNT_DISTINCT, AggregationOperation.DISTINCT, AggregationOperation.COUNT, AggregationOperation.UNIQUE];
4
+
3
5
  /**
4
6
  * Check if an operation requires a rollup/table grouping
5
7
  * @param type The operation to check
@@ -1 +1 @@
1
- {"version":3,"file":"AggregationUtils.js","names":["TableUtils","AggregationOperation","isRollupOperation","type","isValidOperation","operationType","columnType","COUNT","FIRST","LAST","COUNT_DISTINCT","DISTINCT","UNIQUE","MIN","MAX","isNumberType","isDateType","isTextType","SUM","ABS_SUM","VAR","AVG","STD","SKIP","filterValidColumns","columns","filter","c","getOperationColumnNames","selected","invert","map","name","includes"],"sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"sourcesContent":["import type { Column } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport AggregationOperation from './AggregationOperation';\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport const isRollupOperation = (type: AggregationOperation): boolean => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport const isValidOperation = (\n operationType: AggregationOperation,\n columnType: string\n): boolean => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isDateType(columnType) ||\n TableUtils.isTextType(columnType)\n );\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport const filterValidColumns = (\n columns: readonly Column[],\n operationType: AggregationOperation\n): Column[] => columns.filter(c => isValidOperation(operationType, c.type));\n\nexport const getOperationColumnNames = (\n columns: readonly Column[],\n operationType: AggregationOperation,\n selected: readonly string[],\n invert: boolean\n): string[] =>\n filterValidColumns(columns, operationType)\n .map(({ name }) => name)\n .filter(name => (selected.includes(name) ? !invert : invert));\n\nexport default {\n isRollupOperation,\n filterValidColumns,\n getOperationColumnNames,\n};\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,wBAAwB;AAAC,OAC7CC,oBAAoB;AAE3B;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,iBAAiB,GAAIC,IAA0B,IAAc;EACxE,QAAQA,IAAI;IACV;IACA;MACE,OAAO,KAAK;EAAC;AAEnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,gBAAgB,GAAG,CAC9BC,aAAmC,EACnCC,UAAkB,KACN;EACZ,QAAQD,aAAa;IACnB,KAAKJ,oBAAoB,CAACM,KAAK;IAC/B,KAAKN,oBAAoB,CAACO,KAAK;IAC/B,KAAKP,oBAAoB,CAACQ,IAAI;IAC9B,KAAKR,oBAAoB,CAACS,cAAc;IACxC,KAAKT,oBAAoB,CAACU,QAAQ;IAClC,KAAKV,oBAAoB,CAACW,MAAM;MAC9B,OAAO,IAAI;IACb,KAAKX,oBAAoB,CAACY,GAAG;IAC7B,KAAKZ,oBAAoB,CAACa,GAAG;MAC3B,OACEd,UAAU,CAACe,YAAY,CAACT,UAAU,CAAC,IACnCN,UAAU,CAACgB,UAAU,CAACV,UAAU,CAAC,IACjCN,UAAU,CAACiB,UAAU,CAACX,UAAU,CAAC;IAErC,KAAKL,oBAAoB,CAACiB,GAAG;IAC7B,KAAKjB,oBAAoB,CAACkB,OAAO;IACjC,KAAKlB,oBAAoB,CAACmB,GAAG;IAC7B,KAAKnB,oBAAoB,CAACoB,GAAG;IAC7B,KAAKpB,oBAAoB,CAACqB,GAAG;MAC3B,OAAOtB,UAAU,CAACe,YAAY,CAACT,UAAU,CAAC;IAC5C,KAAKL,oBAAoB,CAACsB,IAAI;MAC5B,OAAO,KAAK;IACd;EAAA;AAEJ,CAAC;;AAED,OAAO,IAAMC,kBAAkB,GAAG,CAChCC,OAA0B,EAC1BpB,aAAmC,KACtBoB,OAAO,CAACC,MAAM,CAACC,CAAC,IAAIvB,gBAAgB,CAACC,aAAa,EAAEsB,CAAC,CAACxB,IAAI,CAAC,CAAC;AAE3E,OAAO,IAAMyB,uBAAuB,GAAG,CACrCH,OAA0B,EAC1BpB,aAAmC,EACnCwB,QAA2B,EAC3BC,MAAe,KAEfN,kBAAkB,CAACC,OAAO,EAAEpB,aAAa,CAAC,CACvC0B,GAAG,CAAC;EAAA,IAAC;IAAEC;EAAK,CAAC;EAAA,OAAKA,IAAI;AAAA,EAAC,CACvBN,MAAM,CAACM,IAAI,IAAKH,QAAQ,CAACI,QAAQ,CAACD,IAAI,CAAC,GAAG,CAACF,MAAM,GAAGA,MAAO,CAAC;AAEjE,eAAe;EACb5B,iBAAiB;EACjBsB,kBAAkB;EAClBI;AACF,CAAC"}
1
+ {"version":3,"file":"AggregationUtils.js","names":["TableUtils","AggregationOperation","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","isRollupOperation","type","isValidOperation","operationType","columnType","isNumberType","isDateType","isTextType","SKIP","filterValidColumns","columns","filter","c","getOperationColumnNames","selected","invert","map","name","includes"],"sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"sourcesContent":["import type { Column } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport AggregationOperation from './AggregationOperation';\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport const isRollupOperation = (type: AggregationOperation): boolean => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport const isValidOperation = (\n operationType: AggregationOperation,\n columnType: string\n): boolean => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isDateType(columnType) ||\n TableUtils.isTextType(columnType)\n );\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport const filterValidColumns = (\n columns: readonly Column[],\n operationType: AggregationOperation\n): Column[] => columns.filter(c => isValidOperation(operationType, c.type));\n\nexport const getOperationColumnNames = (\n columns: readonly Column[],\n operationType: AggregationOperation,\n selected: readonly string[],\n invert: boolean\n): string[] =>\n filterValidColumns(columns, operationType)\n .map(({ name }) => name)\n .filter(name => (selected.includes(name) ? !invert : invert));\n\nexport default {\n isRollupOperation,\n filterValidColumns,\n getOperationColumnNames,\n};\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,wBAAwB;AAAC,OAC7CC,oBAAoB;AAE3B,OAAO,IAAMC,kBAAkB,GAAG,CAChCD,oBAAoB,CAACE,GAAG,EACxBF,oBAAoB,CAACG,OAAO,EAC5BH,oBAAoB,CAACI,GAAG,EACxBJ,oBAAoB,CAACK,GAAG,EACxBL,oBAAoB,CAACM,GAAG,EACxBN,oBAAoB,CAACO,GAAG,EACxBP,oBAAoB,CAACQ,GAAG,EACxBR,oBAAoB,CAACS,KAAK,EAC1BT,oBAAoB,CAACU,IAAI,EACzBV,oBAAoB,CAACW,cAAc,EACnCX,oBAAoB,CAACY,QAAQ,EAC7BZ,oBAAoB,CAACa,KAAK,EAC1Bb,oBAAoB,CAACc,MAAM,CAC5B;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,iBAAiB,GAAIC,IAA0B,IAAc;EACxE,QAAQA,IAAI;IACV;IACA;MACE,OAAO,KAAK;EAAC;AAEnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,gBAAgB,GAAG,CAC9BC,aAAmC,EACnCC,UAAkB,KACN;EACZ,QAAQD,aAAa;IACnB,KAAKlB,oBAAoB,CAACa,KAAK;IAC/B,KAAKb,oBAAoB,CAACS,KAAK;IAC/B,KAAKT,oBAAoB,CAACU,IAAI;IAC9B,KAAKV,oBAAoB,CAACW,cAAc;IACxC,KAAKX,oBAAoB,CAACY,QAAQ;IAClC,KAAKZ,oBAAoB,CAACc,MAAM;MAC9B,OAAO,IAAI;IACb,KAAKd,oBAAoB,CAACI,GAAG;IAC7B,KAAKJ,oBAAoB,CAACK,GAAG;MAC3B,OACEN,UAAU,CAACqB,YAAY,CAACD,UAAU,CAAC,IACnCpB,UAAU,CAACsB,UAAU,CAACF,UAAU,CAAC,IACjCpB,UAAU,CAACuB,UAAU,CAACH,UAAU,CAAC;IAErC,KAAKnB,oBAAoB,CAACE,GAAG;IAC7B,KAAKF,oBAAoB,CAACG,OAAO;IACjC,KAAKH,oBAAoB,CAACM,GAAG;IAC7B,KAAKN,oBAAoB,CAACO,GAAG;IAC7B,KAAKP,oBAAoB,CAACQ,GAAG;MAC3B,OAAOT,UAAU,CAACqB,YAAY,CAACD,UAAU,CAAC;IAC5C,KAAKnB,oBAAoB,CAACuB,IAAI;MAC5B,OAAO,KAAK;IACd;EAAA;AAEJ,CAAC;;AAED,OAAO,IAAMC,kBAAkB,GAAG,CAChCC,OAA0B,EAC1BP,aAAmC,KACtBO,OAAO,CAACC,MAAM,CAACC,CAAC,IAAIV,gBAAgB,CAACC,aAAa,EAAES,CAAC,CAACX,IAAI,CAAC,CAAC;AAE3E,OAAO,IAAMY,uBAAuB,GAAG,CACrCH,OAA0B,EAC1BP,aAAmC,EACnCW,QAA2B,EAC3BC,MAAe,KAEfN,kBAAkB,CAACC,OAAO,EAAEP,aAAa,CAAC,CACvCa,GAAG,CAAC;EAAA,IAAC;IAAEC;EAAK,CAAC;EAAA,OAAKA,IAAI;AAAA,EAAC,CACvBN,MAAM,CAACM,IAAI,IAAKH,QAAQ,CAACI,QAAQ,CAACD,IAAI,CAAC,GAAG,CAACF,MAAM,GAAGA,MAAO,CAAC;AAEjE,eAAe;EACbf,iBAAiB;EACjBS,kBAAkB;EAClBI;AACF,CAAC"}
@@ -16,7 +16,6 @@ export type AggregationsProps = {
16
16
  onChange: (settings: AggregationSettings) => void;
17
17
  onEdit: (aggregation: Aggregation) => void;
18
18
  };
19
- export declare const SELECTABLE_OPTIONS: AggregationOperation[];
20
19
  declare function Aggregations({ isRollup, settings, onChange, onEdit, }: AggregationsProps): JSX.Element;
21
20
  export default Aggregations;
22
21
  //# sourceMappingURL=Aggregations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregations.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"names":[],"mappings":";AA4BA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,OAAO,qBAAqB,CAAC;AAI7B,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,kBAAkB,wBAc9B,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAuPjC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"Aggregations.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"names":[],"mappings":";AA4BA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,OAAO,qBAAqB,CAAC;AAI7B,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAuPjC;AAED,eAAe,YAAY,CAAC"}
@@ -10,11 +10,9 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
10
  import { dhNewCircleLargeFilled, vsTrash, vsEdit, dhWarningFilled } from '@deephaven/icons';
11
11
  import Log from '@deephaven/log';
12
12
  import { DraggableItemList, DragUtils, Option, Select, RadioItem, RadioGroup, Button } from '@deephaven/components';
13
- import AggregationOperation from "./AggregationOperation.js";
14
- import AggregationUtils from "./AggregationUtils.js";
13
+ import AggregationUtils, { SELECTABLE_OPTIONS } from "./AggregationUtils.js";
15
14
  import "./Aggregations.css";
16
15
  var log = Log.module('Aggregations');
17
- export var SELECTABLE_OPTIONS = [AggregationOperation.SUM, AggregationOperation.ABS_SUM, AggregationOperation.MIN, AggregationOperation.MAX, AggregationOperation.VAR, AggregationOperation.AVG, AggregationOperation.STD, AggregationOperation.FIRST, AggregationOperation.LAST, AggregationOperation.COUNT_DISTINCT, AggregationOperation.DISTINCT, AggregationOperation.COUNT, AggregationOperation.UNIQUE];
18
16
  function Aggregations(_ref) {
19
17
  var {
20
18
  isRollup,
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","RadioItem","RadioGroup","Button","AggregationOperation","AggregationUtils","log","module","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","Aggregations","isRollup","settings","onChange","onEdit","aggregations","showOnTop","options","filter","option","some","aggregation","operation","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","length","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","event","target","value","setDefaultOperation","includes","renderAggregation","item","isClone","selectedCount","text","badgeText","undefined","className","isEditable","renderBadge","renderHandle","isOptionsShown","isAggregationsShown","map"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n RadioItem,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (settings: AggregationSettings) => void;\n onEdit: (aggregation: Aggregation) => void;\n};\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\nfunction Aggregations({\n isRollup,\n settings,\n onChange,\n onEdit,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option)\n ),\n [aggregations]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n changedSettings => {\n onChange({ ...settings, ...changedSettings });\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n newAggregations => {\n changeSettings({ aggregations: newAggregations });\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations([\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ]);\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n changeAggregations(\n aggregations.filter((aggregation, index) => index !== itemIndex)\n );\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n changeShowOnTop(event.target.value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div className=\"form-inline\">\n <label>Placement:&nbsp;</label>\n <RadioGroup\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <RadioItem value=\"true\">Top</RadioItem>\n <RadioItem value=\"false\">Bottom</RadioItem>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","RadioItem","RadioGroup","Button","AggregationUtils","SELECTABLE_OPTIONS","log","module","Aggregations","isRollup","settings","onChange","onEdit","aggregations","showOnTop","options","filter","option","some","aggregation","operation","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","length","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","event","target","value","setDefaultOperation","includes","renderAggregation","item","isClone","selectedCount","text","badgeText","undefined","className","isEditable","renderBadge","renderHandle","isOptionsShown","isAggregationsShown","map"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n RadioItem,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils, { SELECTABLE_OPTIONS } from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (settings: AggregationSettings) => void;\n onEdit: (aggregation: Aggregation) => void;\n};\n\nfunction Aggregations({\n isRollup,\n settings,\n onChange,\n onEdit,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option)\n ),\n [aggregations]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n changedSettings => {\n onChange({ ...settings, ...changedSettings });\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n newAggregations => {\n changeSettings({ aggregations: newAggregations });\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations([\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ]);\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n changeAggregations(\n aggregations.filter((aggregation, index) => index !== itemIndex)\n );\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n changeShowOnTop(event.target.value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div className=\"form-inline\">\n <label>Placement:&nbsp;</label>\n <RadioGroup\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <RadioItem value=\"true\">Top</RadioItem>\n <RadioItem value=\"false\">Bottom</RadioItem>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\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.32.1-beta.1+362928f",
3
+ "version": "0.32.1-beta.3+76b3bd5",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -23,17 +23,17 @@
23
23
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
24
24
  },
25
25
  "dependencies": {
26
- "@deephaven/components": "^0.32.1-beta.1+362928f",
27
- "@deephaven/console": "^0.32.1-beta.1+362928f",
28
- "@deephaven/filters": "^0.32.1-beta.1+362928f",
29
- "@deephaven/grid": "^0.32.1-beta.1+362928f",
30
- "@deephaven/icons": "^0.32.1-beta.1+362928f",
31
- "@deephaven/jsapi-shim": "^0.32.1-beta.1+362928f",
32
- "@deephaven/jsapi-utils": "^0.32.1-beta.1+362928f",
33
- "@deephaven/log": "^0.32.1-beta.1+362928f",
34
- "@deephaven/react-hooks": "^0.32.1-beta.1+362928f",
35
- "@deephaven/storage": "^0.32.1-beta.1+362928f",
36
- "@deephaven/utils": "^0.32.1-beta.1+362928f",
26
+ "@deephaven/components": "^0.32.1-beta.3+76b3bd5",
27
+ "@deephaven/console": "^0.32.1-beta.3+76b3bd5",
28
+ "@deephaven/filters": "^0.32.1-beta.3+76b3bd5",
29
+ "@deephaven/grid": "^0.32.1-beta.3+76b3bd5",
30
+ "@deephaven/icons": "^0.32.1-beta.3+76b3bd5",
31
+ "@deephaven/jsapi-shim": "^0.32.1-beta.3+76b3bd5",
32
+ "@deephaven/jsapi-utils": "^0.32.1-beta.3+76b3bd5",
33
+ "@deephaven/log": "^0.32.1-beta.3+76b3bd5",
34
+ "@deephaven/react-hooks": "^0.32.1-beta.3+76b3bd5",
35
+ "@deephaven/storage": "^0.32.1-beta.3+76b3bd5",
36
+ "@deephaven/utils": "^0.32.1-beta.3+76b3bd5",
37
37
  "@dnd-kit/core": "^6.0.5",
38
38
  "@dnd-kit/sortable": "^7.0.0",
39
39
  "@dnd-kit/utilities": "^3.2.0",
@@ -57,8 +57,8 @@
57
57
  "react-dom": "^17.x"
58
58
  },
59
59
  "devDependencies": {
60
- "@deephaven/mocks": "^0.32.1-beta.1+362928f",
61
- "@deephaven/tsconfig": "^0.32.1-beta.1+362928f"
60
+ "@deephaven/mocks": "^0.32.1-beta.3+76b3bd5",
61
+ "@deephaven/tsconfig": "^0.32.1-beta.3+76b3bd5"
62
62
  },
63
63
  "files": [
64
64
  "dist"
@@ -69,5 +69,5 @@
69
69
  "publishConfig": {
70
70
  "access": "public"
71
71
  },
72
- "gitHead": "362928fbf9e5e1fdfcdb84748c38ed9d09acf599"
72
+ "gitHead": "76b3bd51059638d5b864fabe8b4121b6a3554f17"
73
73
  }