@deephaven/iris-grid 0.12.1-beta.5 → 0.12.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +2 -2
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +2 -3
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +5 -11
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +21 -121
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/CrossColumnSearch.js +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +1 -4
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +1 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +1 -1
- package/dist/IrisGridModelFactory.js +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +1 -2
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +1 -2
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +1 -3
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +1 -1
- package/dist/IrisGridTestUtils.js +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +1 -2
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -2
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/RollupRows.js +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +2 -2
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +1 -2
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/index.d.ts +2 -1
- package/dist/sidebar/index.js +2 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +14 -12
- package/dist/DateUtils.d.ts +0 -82
- package/dist/DateUtils.d.ts.map +0 -1
- package/dist/DateUtils.js +0 -285
- package/dist/DateUtils.js.map +0 -1
- package/dist/Formatter.d.ts +0 -65
- package/dist/Formatter.d.ts.map +0 -1
- package/dist/Formatter.js +0 -169
- package/dist/Formatter.js.map +0 -1
- package/dist/FormatterUtils.d.ts +0 -24
- package/dist/FormatterUtils.d.ts.map +0 -1
- package/dist/FormatterUtils.js +0 -42
- package/dist/FormatterUtils.js.map +0 -1
- package/dist/TableUtils.d.ts +0 -191
- package/dist/TableUtils.d.ts.map +0 -1
- package/dist/TableUtils.js +0 -1326
- package/dist/TableUtils.js.map +0 -1
- package/dist/filters/FilterOperator.d.ts +0 -3
- package/dist/filters/FilterOperator.d.ts.map +0 -1
- package/dist/filters/FilterOperator.js +0 -2
- package/dist/filters/FilterOperator.js.map +0 -1
- package/dist/filters/FilterType.d.ts +0 -3
- package/dist/filters/FilterType.d.ts.map +0 -1
- package/dist/filters/FilterType.js +0 -2
- package/dist/filters/FilterType.js.map +0 -1
- package/dist/filters/index.d.ts +0 -3
- package/dist/filters/index.d.ts.map +0 -1
- package/dist/filters/index.js +0 -3
- package/dist/filters/index.js.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.d.ts +0 -7
- package/dist/formatters/BooleanColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.js +0 -26
- package/dist/formatters/BooleanColumnFormatter.js.map +0 -1
- package/dist/formatters/CharColumnFormatter.d.ts +0 -7
- package/dist/formatters/CharColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/CharColumnFormatter.js +0 -15
- package/dist/formatters/CharColumnFormatter.js.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.d.ts +0 -40
- package/dist/formatters/DateTimeColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.js +0 -123
- package/dist/formatters/DateTimeColumnFormatter.js.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.d.ts +0 -64
- package/dist/formatters/DecimalColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.js +0 -128
- package/dist/formatters/DecimalColumnFormatter.js.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.d.ts +0 -6
- package/dist/formatters/DefaultColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.js +0 -14
- package/dist/formatters/DefaultColumnFormatter.js.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.d.ts +0 -60
- package/dist/formatters/IntegerColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.js +0 -121
- package/dist/formatters/IntegerColumnFormatter.js.map +0 -1
- package/dist/formatters/StringColumnFormatter.d.ts +0 -7
- package/dist/formatters/StringColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/StringColumnFormatter.js +0 -13
- package/dist/formatters/StringColumnFormatter.js.map +0 -1
- package/dist/formatters/TableColumnFormatter.d.ts +0 -44
- package/dist/formatters/TableColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/TableColumnFormatter.js +0 -65
- package/dist/formatters/TableColumnFormatter.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -9
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -9
- package/dist/formatters/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridUtils.js"],"names":["GridUtils","dh","Log","TableUtils","DateUtils","AdvancedSettings","AggregationUtils","AggregationOperation","log","module","IrisGridUtils","dehydrateGridState","model","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","columns","filter","to","from","length","map","name","hydrateGridState","customColumns","customColumnNames","parseCustomColumnNames","columnNames","concat","String","findIndex","dehydrateIrisGridState","irisGridState","aggregationSettings","aggregations","showOnTop","advancedSettings","advancedFilters","customColumnFormatMap","isFilterBarShown","metrics","quickFilters","conditionalFormats","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","sorts","invertSearchColumns","pendingDataMap","Map","frozenColumns","userColumnWidths","userRowHeights","dehydrateAdvancedFilters","dehydrateQuickFilters","dehydrateSort","columnIndex","width","dehydratePendingDataMap","hydrateIrisGridState","formatter","hydrateAdvancedFilters","timeZone","DEFAULTS","hydrateQuickFilters","hydrateSort","column","hydratePendingDataMap","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","partition","partitionColumn","hydrateIrisGridPanelState","getColumnByName","quickFilter","text","savedQuickFilters","importedFilters","getColumn","makeQuickFilter","error","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","hydrateAdvancedFilterOptions","makeAdvancedFilter","selectedValues","otherOptions","value","dehydrateValue","type","hydrateValue","rowIndex","data","c","columnMap","getColumnIndex","columnName","has","set","get","columnType","isDateType","dehydrateDateTime","isLongType","dehydrateLong","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","sort","isAbs","direction","index","sortDirection","reverse","Table","columnSort","abs","descending","desc","asc","item","extractTableSettings","panelState","inputFilters","applyTableSettings","table","tableSettings","getFiltersFromFilterMap","getFiltersFromInputFilters","filters","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","getInputFiltersForColumns","find","e","debug","filterMap","keys","Array","i","key","push","getHiddenColumns","entries","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","newMoves","removedColumnName","removedColumnIndex","moves","j","move","newMove","splice","removeColumnsFromSelectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","rangeSetFromRanges","ranges","rangeSets","slice","a","b","startRow","range","endRow","RangeSet","ofRange","ofRanges","isValidSnapshotRanges","rangeMap","rowMapIndex","columnMapIndex","startColumn","endColumn","matchColumnRanges","join","isValidIndex","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","add","snapshotDataToMatrix","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregationColumns","operation","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","existingColumns","FIRST","getPendingErrors","Error","changeFilterColumnNamesToIndexes","filterConfig"],"mappings":"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","sourcesContent":["import { GridUtils } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport TableUtils from './TableUtils';\nimport DateUtils from './DateUtils';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\n\nconst log = Log.module('IrisGridUtils');\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the Grid state for\n * @param {Object} gridState The state of the Grid to export\n * @returns {Object} An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(model, gridState) {\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const { columns } = model;\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n to >= 0 && to < columns.length && from >= 0 && from < columns.length\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param {IrisGridModel} model The table model to import the state for\n * @param {Object} gridState The state of the panel that was saved\n * @returns {Object} The gridState props to set on the Grid\n */\n static hydrateGridState(model, gridState, customColumns = []) {\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const { columns } = model;\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n if (\n (typeof to === 'string' || to instanceof String) &&\n (typeof from === 'string' || from instanceof String)\n ) {\n return {\n to: columnNames.findIndex(name => name === to),\n from: columnNames.findIndex(name => name === from),\n };\n }\n return { to, from };\n })\n .filter(\n ({ to, from }) =>\n to != null &&\n to >= 0 &&\n to < columnNames.length &&\n from != null &&\n from >= 0 &&\n from < columnNames.length\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the state for\n * @param {Object} irisGridState The current state of the IrisGrid\n */\n static dehydrateIrisGridState(model, irisGridState) {\n const {\n aggregationSettings = { aggregations: [], showOnTop: false },\n advancedSettings = [],\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n conditionalFormats = [],\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = new Map(),\n frozenColumns,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n\n const { columns } = model;\n return {\n advancedFilters: IrisGridUtils.dehydrateAdvancedFilters(\n columns,\n advancedFilters\n ),\n advancedSettings: [...advancedSettings],\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts, model),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.dehydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n frozenColumns,\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param {IrisGridModel} model The table model to import the state with\n * @param {Object} irisGridState The saved IrisGrid state\n */\n static hydrateIrisGridState(model, irisGridState) {\n const {\n advancedFilters,\n advancedSettings = [],\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n frozenColumns,\n } = irisGridState;\n const { columns, formatter } = model;\n return {\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: IrisGridUtils.hydrateSort(columns, sorts),\n userColumnWidths: new Map(\n userColumnWidths\n .map(([column, width]) => {\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(({ name }) => name === column), width];\n }\n return [column, width];\n })\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.hydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n frozenColumns,\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param {IrisGridModel} model The table model the state is being dehydrated with\n * @param {Object} irisGridPanelState The current IrisGridPanel state\n * @returns {Object} The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n return {\n isSelectingPartition,\n partition,\n partitionColumn: partitionColumn ? partitionColumn.name : null,\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param {IrisGridModel} model The model the state is being hydrated with\n * @param {Object} irisGridPanelState Exported IrisGridPanel state\n * @returns {Object} The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n const { columns } = model;\n return {\n isSelectingPartition,\n partition,\n partitionColumn:\n partitionColumn != null\n ? IrisGridUtils.getColumnByName(columns, partitionColumn)\n : null,\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param {AdvancedFilter[]} quickFilters The quick filters to dehydrate\n * @returns {Object} The dehydrated quick filters\n */\n static dehydrateQuickFilters(quickFilters) {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Column[]} columns The columns the filters will be applied to\n * @param {Object[]} savedQuickFilters Exported quick filters definitions\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns {QuickFilter[]} The quick filters to apply to the columns\n */\n static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param {dh.Column[]} columns The columns for the filters\n * @param {AdvancedFilter[]} advancedFilters The advanced filters to dehydrate\n * @returns {Object} The dehydrated advanced filters\n */\n static dehydrateAdvancedFilters(columns, advancedFilters) {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.dehydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Columns[]} columns The columns the filters will be applied to\n * @param {Object[]} savedAdvancedFilters Exported advanced filters definitions\n * @param {string} timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns {AdvancedFilter[]} The advanced filters to apply to the columns\n */\n static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.hydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n static dehydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static hydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data].map(([c, value]) => [\n columns[c].name,\n IrisGridUtils.dehydrateValue(value, columns[c].type),\n ]),\n },\n ]);\n }\n\n static hydratePendingDataMap(columns, pendingDataMap) {\n const columnMap = new Map();\n const getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => [\n getColumnIndex(columnName),\n IrisGridUtils.hydrateValue(\n value,\n columns[getColumnIndex(columnName)].type\n ),\n ])\n ),\n },\n ])\n );\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param {Any} value The value to dehydrate\n * @param {String} columnType The column type\n */\n static dehydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.dehydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param {Any} value The dehydrated value that needs to be hydrated\n * @param {String} columnType The type of column\n */\n static hydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.hydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.hydrateLong(value);\n }\n\n return value;\n }\n\n static dehydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static hydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static dehydrateLong(value) {\n return value != null ? `${value}` : null;\n }\n\n static hydrateLong(value) {\n return value != null ? dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param {dh.Sort[]} sorts The table sorts\n * @returns {Object} The dehydrated sorts\n */\n static dehydrateSort(sorts) {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.index,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param {dh.Column[]} columns The columns the sorts will be applied to\n * @param {Object[]} sorts Exported sort definitions\n * @returns {dh.Sort[]} The sorts to apply to the table\n */\n static hydrateSort(columns, sorts) {\n return (\n sorts\n .map(sort => {\n const { column: columnIndex, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null && item.direction !== TableUtils.sortDirection.reverse\n )\n );\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param {Object} panelState The dehydrated panel state\n * @returns {Object} A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings(panelState, inputFilters = []) {\n const { irisGridPanelState, irisGridState } = panelState;\n const { partitionColumn, partition } = irisGridPanelState;\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partition,\n partitionColumn,\n quickFilters,\n sorts,\n };\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param {dh.Table} table The table to apply the settings to\n * @param {Object} tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n static applyTableSettings(table, tableSettings, timeZone) {\n const { columns } = table;\n const quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateQuickFilters(\n columns,\n tableSettings.quickFilters,\n timeZone\n )\n );\n const advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n const inputFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n const sorts = IrisGridUtils.hydrateSort(columns, tableSettings.sorts);\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partition, partitionColumn: partitionColumnName } = tableSettings;\n if (partition && partitionColumnName) {\n const partitionColumn = IrisGridUtils.getColumnByName(\n columns,\n partitionColumnName\n );\n if (partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n filters = [partitionFilter, ...filters];\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n static getInputFiltersForColumns(columns, inputFilters = []) {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromInputFilters(columns, inputFilters = [], timeZone) {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return TableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter);\n }\n\n static getFiltersFromFilterMap(filterMap) {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param {Map} userColumnWidths Map of user column widths\n * @returns {number[]} Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths) {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n const oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(\n oldCustomColumns\n );\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n ) {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n // remove the move if it's a removed column move\n // from-=1 & to-=! if the from/to column is placed after the removed column\n if (removedColumnIndex !== move.from) {\n if (move.from > removedColumnIndex) {\n newMove.from -= 1;\n }\n if (move.to >= removedColumnIndex) {\n newMove.to -= 1;\n }\n if (newMove.from !== newMove.to) {\n moves.push(newMove);\n }\n }\n // get the next index of the removed column after the move\n if (move.from === removedColumnIndex) {\n removedColumnIndex = move.to;\n } else if (\n move.from < removedColumnIndex &&\n removedColumnIndex < move.to\n ) {\n removedColumnIndex -= 1;\n } else if (\n move.to <= removedColumnIndex &&\n removedColumnIndex < move.from\n ) {\n removedColumnIndex += 1;\n }\n }\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n ) {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns,\n left,\n right,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns,\n viewportColumns,\n alwaysFetchColumnNames\n ) {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns,\n left,\n right,\n movedColumns = [],\n hiddenColumns = [],\n alwaysFetchColumnNames = [],\n bufferPages = 0\n ) {\n if (left == null || right == null) {\n return null;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param {GridRange[]} ranges The ranges to get the range set for\n * @returns {dh.RangeSet} The rangeset for the provided ranges\n */\n static rangeSetFromRanges(ranges) {\n const rangeSets = ranges\n .slice()\n .sort((a, b) => a.startRow - b.startRow)\n .map(range => {\n const { startRow, endRow } = range;\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param {GridRange[]} ranges The ranges to validate\n * @returns {boolean} True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges) {\n if (!ranges || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param {any} value A value to check if it's a valid table index\n */\n static isValidIndex(value) {\n return Number.isInteger(value) && value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param {GridRange[]} ranges The model ranges to get columns for\n * @param {dh.Column[]} allColumns All the columns to pull from\n * @returns {dh.Column[]} The columns selected in the range\n */\n static columnsFromRanges(ranges, allColumns) {\n if (!ranges || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return allColumns;\n }\n\n const columnSet = new Set();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param {dh.TableData} data The Iris formatted table data\n * @returns {unknown[][]} A matrix of the values of the data\n */\n static snapshotDataToMatrix(data) {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param {Array} originalColumns Original model columns\n * @param {Object} config Dehydrated rollup config\n * @param {Object} aggregationSettings Aggregation settings\n * @returns {Object} Rollup config for the model\n */\n static getModelRollupConfig(originalColumns, config, aggregationSettings) {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const aggregationColumns = aggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (let i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param {Map} pendingDataMap Map of pending data\n * @returns {Map} A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param {dh.Columns[]} columns The columns to get the column from\n * @param {Number} columnIndex The column index to get\n */\n static getColumn(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param {dh.Column[]} columns The columns to get the column from\n * @param {String} columnName The column name to retrieve\n */\n static getColumnByName(columns, columnName) {\n const column = columns.find(({ name }) => name === columnName);\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n\n /**\n * Get filter configs with column names changed to indexes, exclude missing columns\n * @param {dh.Column[]} columns The columns to get column indexes from\n * @param {Object[]} filters Filter configs\n * @returns {Object[]} Updated filter configs with column names changed to indexes\n */\n static changeFilterColumnNamesToIndexes(columns, filters) {\n return filters\n .map(({ name, filter }) => {\n const index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(filterConfig => filterConfig != null);\n }\n}\n\nexport default IrisGridUtils;\n"],"file":"IrisGridUtils.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridUtils.js"],"names":["GridUtils","dh","DateUtils","TableUtils","Log","AdvancedSettings","AggregationUtils","AggregationOperation","log","module","IrisGridUtils","dehydrateGridState","model","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","columns","filter","to","from","length","map","name","hydrateGridState","customColumns","customColumnNames","parseCustomColumnNames","columnNames","concat","String","findIndex","dehydrateIrisGridState","irisGridState","aggregationSettings","aggregations","showOnTop","advancedSettings","advancedFilters","customColumnFormatMap","isFilterBarShown","metrics","quickFilters","conditionalFormats","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","sorts","invertSearchColumns","pendingDataMap","Map","frozenColumns","userColumnWidths","userRowHeights","dehydrateAdvancedFilters","dehydrateQuickFilters","dehydrateSort","columnIndex","width","dehydratePendingDataMap","hydrateIrisGridState","formatter","hydrateAdvancedFilters","timeZone","DEFAULTS","hydrateQuickFilters","hydrateSort","column","hydratePendingDataMap","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","partition","partitionColumn","hydrateIrisGridPanelState","getColumnByName","quickFilter","text","savedQuickFilters","importedFilters","getColumn","makeQuickFilter","error","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","hydrateAdvancedFilterOptions","makeAdvancedFilter","selectedValues","otherOptions","value","dehydrateValue","type","hydrateValue","rowIndex","data","c","columnMap","getColumnIndex","columnName","has","set","get","columnType","isDateType","dehydrateDateTime","isLongType","dehydrateLong","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","sort","isAbs","direction","index","sortDirection","reverse","Table","columnSort","abs","descending","desc","asc","item","extractTableSettings","panelState","inputFilters","applyTableSettings","table","tableSettings","getFiltersFromFilterMap","getFiltersFromInputFilters","filters","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","getInputFiltersForColumns","find","e","debug","filterMap","keys","Array","i","key","push","getHiddenColumns","entries","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","newMoves","removedColumnName","removedColumnIndex","moves","j","move","newMove","splice","removeColumnsFromSelectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","rangeSetFromRanges","ranges","rangeSets","slice","a","b","startRow","range","endRow","RangeSet","ofRange","ofRanges","isValidSnapshotRanges","rangeMap","rowMapIndex","columnMapIndex","startColumn","endColumn","matchColumnRanges","join","isValidIndex","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","add","snapshotDataToMatrix","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregationColumns","operation","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","existingColumns","FIRST","getPendingErrors","Error","changeFilterColumnNamesToIndexes","filterConfig"],"mappings":"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","sourcesContent":["import { GridUtils } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\n\nconst log = Log.module('IrisGridUtils');\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the Grid state for\n * @param {Object} gridState The state of the Grid to export\n * @returns {Object} An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(model, gridState) {\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const { columns } = model;\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n to >= 0 && to < columns.length && from >= 0 && from < columns.length\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param {IrisGridModel} model The table model to import the state for\n * @param {Object} gridState The state of the panel that was saved\n * @returns {Object} The gridState props to set on the Grid\n */\n static hydrateGridState(model, gridState, customColumns = []) {\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const { columns } = model;\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n if (\n (typeof to === 'string' || to instanceof String) &&\n (typeof from === 'string' || from instanceof String)\n ) {\n return {\n to: columnNames.findIndex(name => name === to),\n from: columnNames.findIndex(name => name === from),\n };\n }\n return { to, from };\n })\n .filter(\n ({ to, from }) =>\n to != null &&\n to >= 0 &&\n to < columnNames.length &&\n from != null &&\n from >= 0 &&\n from < columnNames.length\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the state for\n * @param {Object} irisGridState The current state of the IrisGrid\n */\n static dehydrateIrisGridState(model, irisGridState) {\n const {\n aggregationSettings = { aggregations: [], showOnTop: false },\n advancedSettings = [],\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n conditionalFormats = [],\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = new Map(),\n frozenColumns,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n\n const { columns } = model;\n return {\n advancedFilters: IrisGridUtils.dehydrateAdvancedFilters(\n columns,\n advancedFilters\n ),\n advancedSettings: [...advancedSettings],\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts, model),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.dehydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n frozenColumns,\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param {IrisGridModel} model The table model to import the state with\n * @param {Object} irisGridState The saved IrisGrid state\n */\n static hydrateIrisGridState(model, irisGridState) {\n const {\n advancedFilters,\n advancedSettings = [],\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n frozenColumns,\n } = irisGridState;\n const { columns, formatter } = model;\n return {\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: IrisGridUtils.hydrateSort(columns, sorts),\n userColumnWidths: new Map(\n userColumnWidths\n .map(([column, width]) => {\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(({ name }) => name === column), width];\n }\n return [column, width];\n })\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.hydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n frozenColumns,\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param {IrisGridModel} model The table model the state is being dehydrated with\n * @param {Object} irisGridPanelState The current IrisGridPanel state\n * @returns {Object} The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n return {\n isSelectingPartition,\n partition,\n partitionColumn: partitionColumn ? partitionColumn.name : null,\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param {IrisGridModel} model The model the state is being hydrated with\n * @param {Object} irisGridPanelState Exported IrisGridPanel state\n * @returns {Object} The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n const { columns } = model;\n return {\n isSelectingPartition,\n partition,\n partitionColumn:\n partitionColumn != null\n ? IrisGridUtils.getColumnByName(columns, partitionColumn)\n : null,\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param {AdvancedFilter[]} quickFilters The quick filters to dehydrate\n * @returns {Object} The dehydrated quick filters\n */\n static dehydrateQuickFilters(quickFilters) {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Column[]} columns The columns the filters will be applied to\n * @param {Object[]} savedQuickFilters Exported quick filters definitions\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns {QuickFilter[]} The quick filters to apply to the columns\n */\n static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param {dh.Column[]} columns The columns for the filters\n * @param {AdvancedFilter[]} advancedFilters The advanced filters to dehydrate\n * @returns {Object} The dehydrated advanced filters\n */\n static dehydrateAdvancedFilters(columns, advancedFilters) {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.dehydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Columns[]} columns The columns the filters will be applied to\n * @param {Object[]} savedAdvancedFilters Exported advanced filters definitions\n * @param {string} timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns {AdvancedFilter[]} The advanced filters to apply to the columns\n */\n static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.hydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n static dehydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static hydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data].map(([c, value]) => [\n columns[c].name,\n IrisGridUtils.dehydrateValue(value, columns[c].type),\n ]),\n },\n ]);\n }\n\n static hydratePendingDataMap(columns, pendingDataMap) {\n const columnMap = new Map();\n const getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => [\n getColumnIndex(columnName),\n IrisGridUtils.hydrateValue(\n value,\n columns[getColumnIndex(columnName)].type\n ),\n ])\n ),\n },\n ])\n );\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param {Any} value The value to dehydrate\n * @param {String} columnType The column type\n */\n static dehydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.dehydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param {Any} value The dehydrated value that needs to be hydrated\n * @param {String} columnType The type of column\n */\n static hydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.hydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.hydrateLong(value);\n }\n\n return value;\n }\n\n static dehydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static hydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static dehydrateLong(value) {\n return value != null ? `${value}` : null;\n }\n\n static hydrateLong(value) {\n return value != null ? dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param {dh.Sort[]} sorts The table sorts\n * @returns {Object} The dehydrated sorts\n */\n static dehydrateSort(sorts) {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.index,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param {dh.Column[]} columns The columns the sorts will be applied to\n * @param {Object[]} sorts Exported sort definitions\n * @returns {dh.Sort[]} The sorts to apply to the table\n */\n static hydrateSort(columns, sorts) {\n return (\n sorts\n .map(sort => {\n const { column: columnIndex, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null && item.direction !== TableUtils.sortDirection.reverse\n )\n );\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param {Object} panelState The dehydrated panel state\n * @returns {Object} A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings(panelState, inputFilters = []) {\n const { irisGridPanelState, irisGridState } = panelState;\n const { partitionColumn, partition } = irisGridPanelState;\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partition,\n partitionColumn,\n quickFilters,\n sorts,\n };\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param {dh.Table} table The table to apply the settings to\n * @param {Object} tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n static applyTableSettings(table, tableSettings, timeZone) {\n const { columns } = table;\n const quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateQuickFilters(\n columns,\n tableSettings.quickFilters,\n timeZone\n )\n );\n const advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n const inputFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n const sorts = IrisGridUtils.hydrateSort(columns, tableSettings.sorts);\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partition, partitionColumn: partitionColumnName } = tableSettings;\n if (partition && partitionColumnName) {\n const partitionColumn = IrisGridUtils.getColumnByName(\n columns,\n partitionColumnName\n );\n if (partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n filters = [partitionFilter, ...filters];\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n static getInputFiltersForColumns(columns, inputFilters = []) {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromInputFilters(columns, inputFilters = [], timeZone) {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return TableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter);\n }\n\n static getFiltersFromFilterMap(filterMap) {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param {Map} userColumnWidths Map of user column widths\n * @returns {number[]} Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths) {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n const oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(\n oldCustomColumns\n );\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n ) {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n // remove the move if it's a removed column move\n // from-=1 & to-=! if the from/to column is placed after the removed column\n if (removedColumnIndex !== move.from) {\n if (move.from > removedColumnIndex) {\n newMove.from -= 1;\n }\n if (move.to >= removedColumnIndex) {\n newMove.to -= 1;\n }\n if (newMove.from !== newMove.to) {\n moves.push(newMove);\n }\n }\n // get the next index of the removed column after the move\n if (move.from === removedColumnIndex) {\n removedColumnIndex = move.to;\n } else if (\n move.from < removedColumnIndex &&\n removedColumnIndex < move.to\n ) {\n removedColumnIndex -= 1;\n } else if (\n move.to <= removedColumnIndex &&\n removedColumnIndex < move.from\n ) {\n removedColumnIndex += 1;\n }\n }\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n ) {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns,\n left,\n right,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns,\n viewportColumns,\n alwaysFetchColumnNames\n ) {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns,\n left,\n right,\n movedColumns = [],\n hiddenColumns = [],\n alwaysFetchColumnNames = [],\n bufferPages = 0\n ) {\n if (left == null || right == null) {\n return null;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param {GridRange[]} ranges The ranges to get the range set for\n * @returns {dh.RangeSet} The rangeset for the provided ranges\n */\n static rangeSetFromRanges(ranges) {\n const rangeSets = ranges\n .slice()\n .sort((a, b) => a.startRow - b.startRow)\n .map(range => {\n const { startRow, endRow } = range;\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param {GridRange[]} ranges The ranges to validate\n * @returns {boolean} True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges) {\n if (!ranges || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param {any} value A value to check if it's a valid table index\n */\n static isValidIndex(value) {\n return Number.isInteger(value) && value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param {GridRange[]} ranges The model ranges to get columns for\n * @param {dh.Column[]} allColumns All the columns to pull from\n * @returns {dh.Column[]} The columns selected in the range\n */\n static columnsFromRanges(ranges, allColumns) {\n if (!ranges || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return allColumns;\n }\n\n const columnSet = new Set();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param {dh.TableData} data The Iris formatted table data\n * @returns {unknown[][]} A matrix of the values of the data\n */\n static snapshotDataToMatrix(data) {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param {Array} originalColumns Original model columns\n * @param {Object} config Dehydrated rollup config\n * @param {Object} aggregationSettings Aggregation settings\n * @returns {Object} Rollup config for the model\n */\n static getModelRollupConfig(originalColumns, config, aggregationSettings) {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const aggregationColumns = aggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (let i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param {Map} pendingDataMap Map of pending data\n * @returns {Map} A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param {dh.Columns[]} columns The columns to get the column from\n * @param {Number} columnIndex The column index to get\n */\n static getColumn(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param {dh.Column[]} columns The columns to get the column from\n * @param {String} columnName The column name to retrieve\n */\n static getColumnByName(columns, columnName) {\n const column = columns.find(({ name }) => name === columnName);\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n\n /**\n * Get filter configs with column names changed to indexes, exclude missing columns\n * @param {dh.Column[]} columns The columns to get column indexes from\n * @param {Object[]} filters Filter configs\n * @returns {Object[]} Updated filter configs with column names changed to indexes\n */\n static changeFilterColumnNamesToIndexes(columns, filters) {\n return filters\n .map(({ name, filter }) => {\n const index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(filterConfig => filterConfig != null);\n }\n}\n\nexport default IrisGridUtils;\n"],"file":"IrisGridUtils.js"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { TableColumnFormat } from '
|
|
1
|
+
import { Formatter, TableColumnFormat } from '@deephaven/jsapi-utils';
|
|
2
2
|
import { FormatContextMenuOption } from './FormatContextMenuUtils';
|
|
3
|
-
import type Formatter from '../Formatter';
|
|
4
3
|
declare class DateTimeFormatContextMenu {
|
|
5
4
|
static dateGroup: number;
|
|
6
5
|
static timeGroup: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DateTimeFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAChC,OAA+B,EAC7B,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,cAAM,yBAAyB;IAC7B,MAAM,CAAC,SAAS,SAAM;IAEtB,MAAM,CAAC,SAAS,SAAM;IAEtB,MAAM,CAAC,aAAa,SAAM;IAE1B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,iBAAiB,GAChC,uBAAuB,EAAE;CAqE7B;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
|
-
import { DateTimeColumnFormatter } from
|
|
3
|
+
import { DateTimeColumnFormatter, TableUtils } from '@deephaven/jsapi-utils';
|
|
4
4
|
import FormatContextMenuUtils from "./FormatContextMenuUtils.js";
|
|
5
|
-
import TableUtils from "../TableUtils.js";
|
|
6
5
|
|
|
7
6
|
class DateTimeFormatContextMenu {
|
|
8
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"names":["DateTimeColumnFormatter","
|
|
1
|
+
{"version":3,"sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"names":["DateTimeColumnFormatter","TableUtils","FormatContextMenuUtils","DateTimeFormatContextMenu","getOptions","formatter","selectedFormat","currentTime","Date","formatItems","group","dateGroup","formatString","timeGroup","dateTimeGroup","presetFormatOptions","map","item","format","makeFormat","TYPE_CONTEXT_PRESET","title","getFormattedString","dataType","DATETIME","makeOption","isSameFormat","defaultOption","isDefaultSelected"],"mappings":";;AAAA,SACEA,uBADF,EAIEC,UAJF,QAKO,wBALP;OAMOC,sB;;AAIP,MAAMC,yBAAN,CAAgC;AAO9B;AACF;AACA;AACA;AACA;AACA;AACmB,SAAVC,UAAU,CACfC,SADe,EAEfC,cAFe,EAGY;AAC3B,QAAMC,WAAW,GAAG,IAAIC,IAAJ,EAApB;AACA,QAAMC,WAAW,GAAG,CAClB;AACEC,MAAAA,KAAK,EAAEP,yBAAyB,CAACQ,SADnC;AAEEC,MAAAA,YAAY,EAAE;AAFhB,KADkB,EAKlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACQ,SADnC;AAEEC,MAAAA,YAAY,EAAE;AAFhB,KALkB,EAUlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACU,SADnC;AAEED,MAAAA,YAAY,EAAE;AAFhB,KAVkB,EAclB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACU,SADnC;AAEED,MAAAA,YAAY,EAAE;AAFhB,KAdkB,EAkBlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACU,SADnC;AAEED,MAAAA,YAAY,EAAE;AAFhB,KAlBkB,EAuBlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACW,aADnC;AAEEF,MAAAA,YAAY;AAFd,KAvBkB,EA2BlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACW,aADnC;AAEEF,MAAAA,YAAY;AAFd,KA3BkB,EA+BlB;AACEF,MAAAA,KAAK,EAAEP,yBAAyB,CAACW,aADnC;AAEEF,MAAAA,YAAY;AAFd,KA/BkB,CAApB;AAqCA,QAAMG,mBAAmB,GAAGN,WAAW,CAACO,GAAZ,CAAgBC,IAAI,IAAI;AAClD,UAAMC,MAAM,GAAGlB,uBAAuB,CAACmB,UAAxB,CACb,EADa,EAEbF,IAAI,CAACL,YAFQ,EAGbZ,uBAAuB,CAACoB,mBAHX,CAAf;AAKA,UAAMC,KAAK,GAAGhB,SAAS,CAACiB,kBAAV,CACZf,WADY,EAEZN,UAAU,CAACsB,QAAX,CAAoBC,QAFR,EAGZ,EAHY,EAIZN,MAJY,CAAd;AAOA,aAAOhB,sBAAsB,CAACuB,UAAvB,CACLJ,KADK,EAELH,MAFK,EAGLD,IAAI,CAACP,KAHA,EAILV,uBAAuB,CAAC0B,YAAxB,CAAqCR,MAArC,EAA6CZ,cAA7C,CAJK,CAAP;AAMD,KAnB2B,CAA5B;AAqBA,QAAMqB,aAAa,GAAGzB,sBAAsB,CAACuB,UAAvB,CACpB,SADoB,EAEpB,IAFoB,EAGpBtB,yBAAyB,CAACQ,SAHN,EAIpBT,sBAAsB,CAAC0B,iBAAvB,CAAyCtB,cAAzC,CAJoB,CAAtB;AAOA,WAAO,CAACqB,aAAD,EAAgB,GAAGZ,mBAAnB,CAAP;AACD;;AApF6B;;gBAA1BZ,yB,eACe,E;;gBADfA,yB,eAGe,E;;gBAHfA,yB,mBAKmB,E;;AAkFzB,eAAeA,yBAAf","sourcesContent":["import {\n DateTimeColumnFormatter,\n Formatter,\n TableColumnFormat,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport FormatContextMenuUtils, {\n FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DateTimeFormatContextMenu {\n static dateGroup = 10;\n\n static timeGroup = 20;\n\n static dateTimeGroup = 30;\n\n /**\n * Creates list of formatting options for DateTime context menu\n * @param formatter Formatter instance\n * @param selectedFormat Selected format object, null for no selected format\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n formatter: Formatter,\n selectedFormat: TableColumnFormat\n ): FormatContextMenuOption[] {\n const currentTime = new Date();\n const formatItems = [\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'yyyy-MM-dd',\n },\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'MM-dd-yyyy',\n },\n\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSS',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSSSSSSSS',\n },\n\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSS`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n },\n ];\n\n const presetFormatOptions = formatItems.map(item => {\n const format = DateTimeColumnFormatter.makeFormat(\n '',\n item.formatString,\n DateTimeColumnFormatter.TYPE_CONTEXT_PRESET\n );\n const title = formatter.getFormattedString(\n currentTime,\n TableUtils.dataType.DATETIME,\n '',\n format\n );\n\n return FormatContextMenuUtils.makeOption(\n title,\n format,\n item.group,\n DateTimeColumnFormatter.isSameFormat(format, selectedFormat)\n );\n });\n\n const defaultOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DateTimeFormatContextMenu.dateGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n return [defaultOption, ...presetFormatOptions];\n }\n}\n\nexport default DateTimeFormatContextMenu;\n"],"file":"DateTimeFormatContextMenu.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { DecimalColumnFormat } from '@deephaven/jsapi-utils';
|
|
1
2
|
import { FormatContextMenuOption } from './FormatContextMenuUtils';
|
|
2
|
-
import { DecimalColumnFormat } from '../formatters';
|
|
3
3
|
declare class DecimalFormatContextMenu {
|
|
4
4
|
static defaultGroup: number;
|
|
5
5
|
static presetGroup: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecimalFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"DecimalFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAA+B,EAC7B,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,cAAM,wBAAwB;IAC5B,MAAM,CAAC,YAAY,SAAM;IAEzB,MAAM,CAAC,WAAW,SAAM;IAExB,MAAM,CAAC,gBAAgB,SAAM;IAE7B,MAAM,CAAC,WAAW,SAAM;IAExB;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,mBAAmB,EACnC,oBAAoB,EAAE,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,GAChE,uBAAuB,EAAE;CAyE7B;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
|
+
import { DecimalColumnFormatter } from '@deephaven/jsapi-utils';
|
|
3
4
|
import FormatContextMenuUtils from "./FormatContextMenuUtils.js";
|
|
4
|
-
import { DecimalColumnFormatter } from "../formatters/index.js";
|
|
5
5
|
|
|
6
6
|
class DecimalFormatContextMenu {
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"names":["DecimalColumnFormatter","FormatContextMenuUtils","DecimalFormatContextMenu","getOptions","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_PERCENT","group","presetGroup","FORMAT_BASIS_POINTS","FORMAT_MILLIONS","FORMAT_ROUND","presetRoundGroup","FORMAT_ROUND_TWO_DECIMALS","FORMAT_ROUND_FOUR_DECIMALS","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid"],"mappings":";;AAAA,SAEEA,sBAFF,QAGO,wBAHP;OAIOC,sB;;AAIP,MAAMC,wBAAN,CAA+B;AAS7B;AACF;AACA;AACA;AACA;AACA;AACmB,SAAVC,UAAU,CACfC,cADe,EAEfC,oBAFe,EAGY;AAC3B,QAAMC,WAAW,GAAG,CAClB;AACEC,MAAAA,MAAM,EAAEP,sBAAsB,CAACQ,cADjC;AAEEC,MAAAA,KAAK,EAAEP,wBAAwB,CAACQ;AAFlC,KADkB,EAKlB;AACEH,MAAAA,MAAM,EAAEP,sBAAsB,CAACW,mBADjC;AAEEF,MAAAA,KAAK,EAAEP,wBAAwB,CAACQ;AAFlC,KALkB,EASlB;AACEH,MAAAA,MAAM,EAAEP,sBAAsB,CAACY,eADjC;AAEEH,MAAAA,KAAK,EAAEP,wBAAwB,CAACQ;AAFlC,KATkB,EAalB;AACEH,MAAAA,MAAM,EAAEP,sBAAsB,CAACa,YADjC;AAEEJ,MAAAA,KAAK,EAAEP,wBAAwB,CAACY;AAFlC,KAbkB,EAiBlB;AACEP,MAAAA,MAAM,EAAEP,sBAAsB,CAACe,yBADjC;AAEEN,MAAAA,KAAK,EAAEP,wBAAwB,CAACY;AAFlC,KAjBkB,EAqBlB;AACEP,MAAAA,MAAM,EAAEP,sBAAsB,CAACgB,0BADjC;AAEEP,MAAAA,KAAK,EAAEP,wBAAwB,CAACY;AAFlC,KArBkB,CAApB;AA2BA,QAAMG,mBAAmB,GAAGhB,sBAAsB,CAACiB,UAAvB,CAC1B,SAD0B,EAE1B,IAF0B,EAG1BhB,wBAAwB,CAACiB,YAHC,EAI1BlB,sBAAsB,CAACmB,iBAAvB,CAAyChB,cAAzC,CAJ0B,CAA5B;AAOA,QAAMiB,mBAAmB,GAAGf,WAAW,CAACgB,GAAZ,CAAgBC,IAAI,IAC9CtB,sBAAsB,CAACiB,UAAvB,CACEK,IAAI,CAAChB,MAAL,CAAYiB,KADd,EAEED,IAAI,CAAChB,MAFP,EAGEgB,IAAI,CAACd,KAHP,EAIET,sBAAsB,CAACyB,YAAvB,CAAoCF,IAAI,CAAChB,MAAzC,EAAiDH,cAAjD,CAJF,CAD0B,CAA5B;AASA,QAAMsB,gBAAgB,GAAGzB,sBAAsB,CAACyB,gBAAvB,CACvBtB,cADuB,CAAzB;AAIA,QAAMuB,YAAY,GAAGD,gBAAgB,GACjCtB,cADiC,GAEjCJ,sBAAsB,CAAC4B,gBAAvB,EAFJ;AAIA,QAAMC,kBAAkB,GAAG5B,sBAAsB,CAAC6B,sBAAvB,CACzBH,YADyB,EAEzBzB,wBAAwB,CAAC6B,WAFA,EAGzB/B,sBAAsB,CAACgC,qBAHE,EAIzBN,gBAJyB,EAKzBO,YAAY,IAAI;AACd,UAAIA,YAAJ,EAAkB;AAChB,YAAMC,eAAe,GAAGlC,sBAAsB,CAAC4B,gBAAvB,CACtBK,YADsB,CAAxB;;AAGA,YAAIjC,sBAAsB,CAACmC,OAAvB,CAA+BD,eAA/B,CAAJ,EAAqD;AACnD7B,UAAAA,oBAAoB,CAAC6B,eAAD,CAApB;AACD;AACF,OAPD,MAOO;AACL7B,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD;AACF,KAhBwB,CAA3B;AAmBA,WAAO,CAACY,mBAAD,EAAsB,GAAGI,mBAAzB,EAA8CQ,kBAA9C,CAAP;AACD;;AA1F4B;;gBAAzB3B,wB,kBACkB,E;;gBADlBA,wB,iBAGiB,E;;gBAHjBA,wB,sBAKsB,E;;gBALtBA,wB,iBAOiB,E;;AAsFvB,eAAeA,wBAAf","sourcesContent":["import {\n DecimalColumnFormat,\n DecimalColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport FormatContextMenuUtils, {\n FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DecimalFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static presetRoundGroup = 30;\n\n static customGroup = 40;\n\n /**\n * Creates list of formatting options for Decimal context menu\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n selectedFormat: DecimalColumnFormat,\n onCustomFormatChange: (value: DecimalColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: DecimalColumnFormatter.FORMAT_PERCENT,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_BASIS_POINTS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_MILLIONS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_TWO_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_FOUR_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DecimalFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n DecimalColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected = FormatContextMenuUtils.isCustomSelected(\n selectedFormat\n );\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : DecimalColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n DecimalFormatContextMenu.customGroup,\n DecimalColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString) {\n const newCustomFormat = DecimalColumnFormatter.makeCustomFormat(\n formatString\n );\n if (DecimalColumnFormatter.isValid(newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default DecimalFormatContextMenu;\n"],"file":"DecimalFormatContextMenu.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormatContextMenuUtils.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FormatContextMenuUtils.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC;CACjC;AAED,cAAM,sBAAsB;IAC1B;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,GAAG,OAAO;IAUpE;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,iBAAiB,GAAG,OAAO;IAOnE;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,uBAAuB;IAU1B;;;;;;;OAOG;IACH,MAAM,CAAC,sBAAsB,CAC3B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GACvC,kBAAkB;CAiBtB;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"names":["React","
|
|
1
|
+
{"version":3,"sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"names":["React","TableColumnFormatter","CustomFormatAction","FormatContextMenuUtils","isDefaultSelected","selectedFormat","TYPE_CONTEXT_CUSTOM","TYPE_CONTEXT_PRESET","includes","type","isCustomSelected","makeOption","title","format","group","isSelected","description","makeCustomFormatOption","placeholder","onChange","label","menuElement","formatString"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAEEC,oBAFF,QAGO,wBAHP;OAIOC,kB;;AAcP,MAAMC,sBAAN,CAA6B;AAC3B;AACF;AACA;AACA;AAC0B,SAAjBC,iBAAiB,CAACC,cAAD,EAA6C;AACnE,WACE,CAACA,cAAD,IACA,CAAC,CACCJ,oBAAoB,CAACK,mBADtB,EAECL,oBAAoB,CAACM,mBAFtB,EAGCC,QAHD,CAGUH,cAAc,CAACI,IAHzB,CAFH;AAOD;AAED;AACF;AACA;AACA;;;AACyB,SAAhBC,gBAAgB,CAACL,cAAD,EAA6C;AAClE,WACEA,cAAc,IACdA,cAAc,CAACI,IAAf,KAAwBR,oBAAoB,CAACK,mBAF/C;AAID;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACmB,SAAVK,UAAU,CACfC,KADe,EAEfC,MAFe,EAGfC,KAHe,EAIfC,UAJe,EAKU;AACzB,WAAO;AACLH,MAAAA,KADK;AAELI,MAAAA,WAAW,EAAEJ,KAFR;AAGLE,MAAAA,KAHK;AAILD,MAAAA,MAJK;AAKLE,MAAAA;AALK,KAAP;AAOD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC+B,SAAtBE,sBAAsB,CAC3BJ,MAD2B,EAE3BC,KAF2B,EAG3BI,WAH2B,EAI3BH,UAJ2B,EAK3BI,QAL2B,EAMP;AACpB,WAAO;AACLP,MAAAA,KAAK,EAAEC,MAAM,CAACO,KADT;AAELJ,MAAAA,WAAW,EAAEH,MAAM,CAACO,KAFf;AAGLP,MAAAA,MAHK;AAILC,MAAAA,KAJK;AAKLC,MAAAA,UALK;AAMLM,MAAAA,WAAW,eACT,oBAAC,kBAAD;AACE,QAAA,YAAY,EAAER,MAAM,CAACS,YADvB;AAEE,QAAA,KAAK,EAAET,MAAM,CAACO,KAFhB;AAGE,QAAA,WAAW,EAAEF,WAHf;AAIE,QAAA,QAAQ,EAAEC;AAJZ;AAPG,KAAP;AAeD;;AA9E0B;;AAiF7B,eAAehB,sBAAf","sourcesContent":["import React from 'react';\nimport {\n TableColumnFormat,\n TableColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport CustomFormatAction from './CustomFormatAction';\n\nexport interface FormatContextMenuOption {\n title: string;\n description: string;\n group: number;\n format: TableColumnFormat | null;\n isSelected: boolean;\n}\n\nexport interface CustomFormatOption extends FormatContextMenuOption {\n menuElement: React.ReactElement;\n}\n\nclass FormatContextMenuUtils {\n /**\n * Returns true if default option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isDefaultSelected(selectedFormat: TableColumnFormat): boolean {\n return (\n !selectedFormat ||\n ![\n TableColumnFormatter.TYPE_CONTEXT_CUSTOM,\n TableColumnFormatter.TYPE_CONTEXT_PRESET,\n ].includes(selectedFormat.type)\n );\n }\n\n /**\n * Returns true if custom format option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isCustomSelected(selectedFormat: TableColumnFormat): boolean {\n return (\n selectedFormat &&\n selectedFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n );\n }\n\n /**\n * Creates context menu option\n * @param title Context menu title\n * @param format Format object\n * @param group Context menu group\n * @param isSelected Is current option selected\n */\n static makeOption(\n title: string,\n format: TableColumnFormat | null,\n group: number,\n isSelected: boolean\n ): FormatContextMenuOption {\n return {\n title,\n description: title,\n group,\n format,\n isSelected,\n };\n }\n\n /**\n * Creates context menu option with an input element\n * @param format Format object\n * @param group Context menu group\n * @param placeholder Input element placeholder\n * @param isSelected Is current option selected\n * @param onChange Input element onChange callback\n */\n static makeCustomFormatOption(\n format: TableColumnFormat,\n group: number,\n placeholder: string,\n isSelected: boolean,\n onChange: (value: string | null) => void\n ): CustomFormatOption {\n return {\n title: format.label,\n description: format.label,\n format,\n group,\n isSelected,\n menuElement: (\n <CustomFormatAction\n formatString={format.formatString}\n title={format.label}\n placeholder={placeholder}\n onChange={onChange}\n />\n ),\n };\n }\n}\n\nexport default FormatContextMenuUtils;\n"],"file":"FormatContextMenuUtils.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { IntegerColumnFormat } from '@deephaven/jsapi-utils';
|
|
1
2
|
import { FormatContextMenuOption } from './FormatContextMenuUtils';
|
|
2
|
-
import { IntegerColumnFormat } from '../formatters';
|
|
3
3
|
declare class IntegerFormatContextMenu {
|
|
4
4
|
static defaultGroup: number;
|
|
5
5
|
static presetGroup: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"IntegerFormatContextMenu.d.ts","sourceRoot":"","sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAA+B,EAC7B,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,cAAM,wBAAwB;IAC5B,MAAM,CAAC,YAAY,SAAM;IAEzB,MAAM,CAAC,WAAW,SAAM;IAExB,MAAM,CAAC,WAAW,SAAM;IAExB;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,mBAAmB,EACnC,oBAAoB,EAAE,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,GAChE,uBAAuB,EAAE;CAqD7B;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
|
+
import { IntegerColumnFormatter } from '@deephaven/jsapi-utils';
|
|
3
4
|
import FormatContextMenuUtils from "./FormatContextMenuUtils.js";
|
|
4
|
-
import { IntegerColumnFormatter } from "../formatters/index.js";
|
|
5
5
|
|
|
6
6
|
class IntegerFormatContextMenu {
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"names":["IntegerColumnFormatter","FormatContextMenuUtils","IntegerFormatContextMenu","getOptions","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_MILLIONS","group","presetGroup","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid"],"mappings":";;AAAA,SAEEA,sBAFF,QAGO,wBAHP;OAIOC,sB;;AAIP,MAAMC,wBAAN,CAA+B;AAO7B;AACF;AACA;AACA;AACA;AACA;AACmB,SAAVC,UAAU,CACfC,cADe,EAEfC,oBAFe,EAGY;AAC3B,QAAMC,WAAW,GAAG,CAClB;AACEC,MAAAA,MAAM,EAAEP,sBAAsB,CAACQ,eADjC;AAEEC,MAAAA,KAAK,EAAEP,wBAAwB,CAACQ;AAFlC,KADkB,CAApB;AAOA,QAAMC,mBAAmB,GAAGV,sBAAsB,CAACW,UAAvB,CAC1B,SAD0B,EAE1B,IAF0B,EAG1BV,wBAAwB,CAACW,YAHC,EAI1BZ,sBAAsB,CAACa,iBAAvB,CAAyCV,cAAzC,CAJ0B,CAA5B;AAOA,QAAMW,mBAAmB,GAAGT,WAAW,CAACU,GAAZ,CAAgBC,IAAI,IAC9ChB,sBAAsB,CAACW,UAAvB,CACEK,IAAI,CAACV,MAAL,CAAYW,KADd,EAEED,IAAI,CAACV,MAFP,EAGEU,IAAI,CAACR,KAHP,EAIET,sBAAsB,CAACmB,YAAvB,CAAoCF,IAAI,CAACV,MAAzC,EAAiDH,cAAjD,CAJF,CAD0B,CAA5B;AASA,QAAMgB,gBAAgB,GAAGnB,sBAAsB,CAACmB,gBAAvB,CACvBhB,cADuB,CAAzB;AAIA,QAAMiB,YAAY,GAAGD,gBAAgB,GACjChB,cADiC,GAEjCJ,sBAAsB,CAACsB,gBAAvB,EAFJ;AAIA,QAAMC,kBAAkB,GAAGtB,sBAAsB,CAACuB,sBAAvB,CACzBH,YADyB,EAEzBnB,wBAAwB,CAACuB,WAFA,EAGzBzB,sBAAsB,CAAC0B,qBAHE,EAIzBN,gBAJyB,EAKzBO,YAAY,IAAI;AACd,UAAIA,YAAJ,EAAkB;AAChB,YAAMC,eAAe,GAAG5B,sBAAsB,CAACsB,gBAAvB,CACtBK,YADsB,CAAxB;;AAGA,YAAI3B,sBAAsB,CAAC6B,OAAvB,CAA+BD,eAA/B,CAAJ,EAAqD;AACnDvB,UAAAA,oBAAoB,CAACuB,eAAD,CAApB;AACD;AACF,OAPD,MAOO;AACLvB,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD;AACF,KAhBwB,CAA3B;AAmBA,WAAO,CAACM,mBAAD,EAAsB,GAAGI,mBAAzB,EAA8CQ,kBAA9C,CAAP;AACD;;AApE4B;;gBAAzBrB,wB,kBACkB,E;;gBADlBA,wB,iBAGiB,E;;gBAHjBA,wB,iBAKiB,E;;AAkEvB,eAAeA,wBAAf","sourcesContent":["import {\n IntegerColumnFormat,\n IntegerColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport FormatContextMenuUtils, {\n FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass IntegerFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static customGroup = 30;\n\n /**\n * Creates list of formatting options for Integer context menu\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n selectedFormat: IntegerColumnFormat,\n onCustomFormatChange: (value: IntegerColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: IntegerColumnFormatter.FORMAT_MILLIONS,\n group: IntegerFormatContextMenu.presetGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n IntegerFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n IntegerColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected = FormatContextMenuUtils.isCustomSelected(\n selectedFormat\n );\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : IntegerColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n IntegerFormatContextMenu.customGroup,\n IntegerColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString) {\n const newCustomFormat = IntegerColumnFormatter.makeCustomFormat(\n formatString\n );\n if (IntegerColumnFormatter.isValid(newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default IntegerFormatContextMenu;\n"],"file":"IntegerFormatContextMenu.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { default as Formatter } from './Formatter';
|
|
3
|
-
export * from './Formatter';
|
|
4
|
-
export { default as FormatterUtils } from './FormatterUtils';
|
|
1
|
+
export * from './sidebar';
|
|
5
2
|
export { default as IrisGrid } from './IrisGrid';
|
|
6
3
|
export { default as SHORTCUTS } from './IrisGridShortcuts';
|
|
7
4
|
export { default as IrisGridModel } from './IrisGridModel';
|
|
@@ -11,6 +8,5 @@ export { default as IrisGridTheme } from './IrisGridTheme';
|
|
|
11
8
|
export type { IrisGridThemeType } from './IrisGridTheme';
|
|
12
9
|
export { default as IrisGridTestUtils } from './IrisGridTestUtils';
|
|
13
10
|
export { default as IrisGridUtils } from './IrisGridUtils';
|
|
14
|
-
export { default as TableUtils } from './TableUtils';
|
|
15
11
|
export { default } from './IrisGrid';
|
|
16
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|