@deephaven/iris-grid 0.22.3-embed-pandas.11 → 0.23.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +0 -2
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -40
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +14 -14
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +46 -40
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +84 -526
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +2 -2
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +13 -46
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +3 -3
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +6 -53
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -3
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +13 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -2
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +2 -2
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +17 -107
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +3 -3
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.css +3 -0
- package/dist/sidebar/TableCsvExporter.css.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +12 -6
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +88 -82
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +5 -3
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +52 -132
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './IrisGridBottomBar.scss';
|
|
3
|
-
export
|
|
3
|
+
export type IrisGridBottomBarProps = {
|
|
4
4
|
animation?: string;
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
onClick?: () => void;
|
|
@@ -11,6 +11,6 @@ export declare type IrisGridBottomBarProps = {
|
|
|
11
11
|
isShown: boolean;
|
|
12
12
|
className?: string;
|
|
13
13
|
};
|
|
14
|
-
export declare
|
|
14
|
+
export declare function IrisGridBottomBar({ animation, children, className, isShown, onClick, onEntering, onEntered, onExiting, onExited, }: IrisGridBottomBarProps): JSX.Element;
|
|
15
15
|
export default IrisGridBottomBar;
|
|
16
16
|
//# sourceMappingURL=IrisGridBottomBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridBottomBar.d.ts","sourceRoot":"","sources":["../src/IrisGridBottomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,0BAA0B,CAAC;AAElC,
|
|
1
|
+
{"version":3,"file":"IrisGridBottomBar.d.ts","sourceRoot":"","sources":["../src/IrisGridBottomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,0BAA0B,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,SAA2C,EAC3C,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAuBtC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -3,7 +3,7 @@ import classNames from 'classnames';
|
|
|
3
3
|
import { CSSTransition } from 'react-transition-group';
|
|
4
4
|
import { ThemeExport } from '@deephaven/components';
|
|
5
5
|
import "./IrisGridBottomBar.css";
|
|
6
|
-
export
|
|
6
|
+
export function IrisGridBottomBar(_ref) {
|
|
7
7
|
var {
|
|
8
8
|
animation = 'iris-grid-bottom-bar-slide-up',
|
|
9
9
|
children,
|
|
@@ -31,6 +31,6 @@ export var IrisGridBottomBar = _ref => {
|
|
|
31
31
|
onClick: onClick,
|
|
32
32
|
onKeyPress: onClick
|
|
33
33
|
}, children));
|
|
34
|
-
}
|
|
34
|
+
}
|
|
35
35
|
export default IrisGridBottomBar;
|
|
36
36
|
//# sourceMappingURL=IrisGridBottomBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridBottomBar.js","names":["React","classNames","CSSTransition","ThemeExport","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","transitionMs"],"sources":["../src/IrisGridBottomBar.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport './IrisGridBottomBar.scss';\n\nexport type IrisGridBottomBarProps = {\n animation?: string;\n children: React.ReactNode;\n onClick?: () => void;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n isShown: boolean;\n className?: string;\n};\n\nexport
|
|
1
|
+
{"version":3,"file":"IrisGridBottomBar.js","names":["React","classNames","CSSTransition","ThemeExport","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","transitionMs"],"sources":["../src/IrisGridBottomBar.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport './IrisGridBottomBar.scss';\n\nexport type IrisGridBottomBarProps = {\n animation?: string;\n children: React.ReactNode;\n onClick?: () => void;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n isShown: boolean;\n className?: string;\n};\n\nexport function IrisGridBottomBar({\n animation = 'iris-grid-bottom-bar-slide-up',\n children,\n className,\n isShown,\n onClick,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: IrisGridBottomBarProps): JSX.Element {\n return (\n <CSSTransition\n in={isShown}\n timeout={ThemeExport.transitionMs}\n classNames={animation}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n mountOnEnter\n unmountOnExit\n >\n <div\n className={classNames('iris-grid-bottom-bar', className)}\n role=\"presentation\"\n onClick={onClick}\n onKeyPress={onClick}\n >\n {children}\n </div>\n </CSSTransition>\n );\n}\n\nexport default IrisGridBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,WAAW,QAAQ,uBAAuB;AAAC;AAepD,OAAO,SAASC,iBAAiB,OAUO;EAAA,IAVN;IAChCC,SAAS,GAAG,+BAA+B;IAC3CC,QAAQ;IACRC,SAAS;IACTC,OAAO;IACPC,OAAO;IACPC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC;EACsB,CAAC;EACvB,oBACE,oBAAC,aAAa;IACZ,EAAE,EAAEL,OAAQ;IACZ,OAAO,EAAEL,WAAW,CAACW,YAAa;IAClC,UAAU,EAAET,SAAU;IACtB,UAAU,EAAEK,UAAW;IACvB,SAAS,EAAEC,SAAU;IACrB,SAAS,EAAEC,SAAU;IACrB,QAAQ,EAAEC,QAAS;IACnB,YAAY;IACZ,aAAa;EAAA,gBAEb;IACE,SAAS,EAAEZ,UAAU,CAAC,sBAAsB,EAAEM,SAAS,CAAE;IACzD,IAAI,EAAC,cAAc;IACnB,OAAO,EAAEE,OAAQ;IACjB,UAAU,EAAEA;EAAQ,GAEnBH,QAAQ,CACL,CACQ;AAEpB;AAEA,eAAeF,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAW3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAW3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8J5D"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { Editor } from '@deephaven/console';
|
|
3
|
-
import { Button,
|
|
4
|
-
import {
|
|
3
|
+
import { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';
|
|
4
|
+
import { vsJson, vsListOrdered } from '@deephaven/icons';
|
|
5
5
|
import "./IrisGridCellOverflowModal.css";
|
|
6
6
|
export default function IrisGridCellOverflowModal(_ref) {
|
|
7
|
+
var _editorRef$current$ge, _editorRef$current2;
|
|
7
8
|
var {
|
|
8
9
|
text,
|
|
9
10
|
isOpen,
|
|
@@ -15,30 +16,29 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
15
16
|
var [isFormatted, setIsFormatted] = useState(false);
|
|
16
17
|
var [canFormat, setCanFormat] = useState(false);
|
|
17
18
|
var editorRef = useRef();
|
|
18
|
-
var copiedTimeout = useRef(null);
|
|
19
|
-
var [copied, setCopied] = useState(false); // Update format button on open
|
|
20
19
|
|
|
20
|
+
// Update format button on open
|
|
21
21
|
useEffect(function enableFormatButtonWhenOpen() {
|
|
22
22
|
if (!isOpen) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
25
|
try {
|
|
27
26
|
JSON.parse(text);
|
|
28
27
|
setCanFormat(true);
|
|
29
28
|
} catch (_unused) {
|
|
30
29
|
setCanFormat(false);
|
|
31
30
|
}
|
|
32
|
-
|
|
33
31
|
setIsFormatted(false);
|
|
34
|
-
}, [isOpen, text]);
|
|
32
|
+
}, [isOpen, text]);
|
|
35
33
|
|
|
34
|
+
// Re-layout editor on height change
|
|
36
35
|
useEffect(function updateLayoutOnHeightChange() {
|
|
37
36
|
if (editorRef.current) {
|
|
38
37
|
editorRef.current.layout();
|
|
39
38
|
}
|
|
40
|
-
}, [height]);
|
|
39
|
+
}, [height]);
|
|
41
40
|
|
|
41
|
+
// Update editor options on line number toggle
|
|
42
42
|
useEffect(function toggleShowLineNumber() {
|
|
43
43
|
if (editorRef.current) {
|
|
44
44
|
editorRef.current.updateOptions({
|
|
@@ -46,37 +46,15 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
}, [showLineNumbers]);
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
if (copiedTimeout.current) clearTimeout(copiedTimeout.current);
|
|
51
|
-
copiedTimeout.current = setTimeout(() => {
|
|
52
|
-
setCopied(false);
|
|
53
|
-
}, 1000);
|
|
54
|
-
return () => {
|
|
55
|
-
if (copiedTimeout.current) clearTimeout(copiedTimeout.current);
|
|
56
|
-
};
|
|
57
|
-
}, [copied]);
|
|
58
|
-
|
|
59
|
-
function copyContents() {
|
|
60
|
-
var _editorRef$current$ge, _editorRef$current;
|
|
61
|
-
|
|
62
|
-
ContextActionUtils.copyToClipboard((_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text).then(() => {
|
|
63
|
-
setCopied(true);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
49
|
function toggleLineNumbers() {
|
|
68
50
|
setShowLineNumbers(!showLineNumbers);
|
|
69
51
|
}
|
|
70
|
-
|
|
71
52
|
function formatAsJSON() {
|
|
72
|
-
var _editorRef$
|
|
73
|
-
|
|
74
|
-
var model = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getModel();
|
|
75
|
-
|
|
53
|
+
var _editorRef$current;
|
|
54
|
+
var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();
|
|
76
55
|
if (!canFormat || !model) {
|
|
77
56
|
return;
|
|
78
57
|
}
|
|
79
|
-
|
|
80
58
|
if (!isFormatted) {
|
|
81
59
|
model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));
|
|
82
60
|
setIsFormatted(true);
|
|
@@ -84,29 +62,22 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
84
62
|
model.setValue(text);
|
|
85
63
|
setIsFormatted(false);
|
|
86
64
|
}
|
|
87
|
-
|
|
88
65
|
autoSetLineNumbers();
|
|
89
66
|
}
|
|
90
|
-
|
|
91
67
|
function autoSetLineNumbers() {
|
|
92
68
|
var _editor$getModel$getL, _editor$getModel;
|
|
93
|
-
|
|
94
69
|
var editor = editorRef.current;
|
|
95
|
-
|
|
96
70
|
if (!editor) {
|
|
97
71
|
return;
|
|
98
72
|
}
|
|
99
|
-
|
|
100
73
|
setShowLineNumbers(((_editor$getModel$getL = (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.getLineCount()) !== null && _editor$getModel$getL !== void 0 ? _editor$getModel$getL : 0) > 1);
|
|
101
74
|
}
|
|
102
|
-
|
|
103
75
|
function handleToggle() {
|
|
104
76
|
if (isOpened) {
|
|
105
77
|
editorRef.current = undefined;
|
|
106
78
|
onClose();
|
|
107
79
|
}
|
|
108
80
|
}
|
|
109
|
-
|
|
110
81
|
function onEditorInitialized(editor) {
|
|
111
82
|
editorRef.current = editor;
|
|
112
83
|
editor.onDidContentSizeChange(_ref2 => {
|
|
@@ -117,11 +88,9 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
117
88
|
});
|
|
118
89
|
autoSetLineNumbers();
|
|
119
90
|
}
|
|
120
|
-
|
|
121
91
|
if (!isOpen && !isOpened) {
|
|
122
92
|
return null;
|
|
123
93
|
}
|
|
124
|
-
|
|
125
94
|
return /*#__PURE__*/React.createElement(Modal, {
|
|
126
95
|
isOpen: isOpen,
|
|
127
96
|
centered: true,
|
|
@@ -137,11 +106,10 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
137
106
|
toggle: onClose
|
|
138
107
|
}, /*#__PURE__*/React.createElement("h5", {
|
|
139
108
|
className: "overflow-modal-title"
|
|
140
|
-
}, "Cell Contents"), /*#__PURE__*/React.createElement(
|
|
109
|
+
}, "Cell Contents"), /*#__PURE__*/React.createElement(CopyButton, {
|
|
141
110
|
kind: "inline",
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
onClick: copyContents
|
|
111
|
+
tooltip: "Copy cell contents",
|
|
112
|
+
copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text
|
|
145
113
|
}), /*#__PURE__*/React.createElement(Button, {
|
|
146
114
|
kind: "inline",
|
|
147
115
|
active: showLineNumbers,
|
|
@@ -173,7 +141,6 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
173
141
|
lineNumbers: showLineNumbers ? 'on' : 'off',
|
|
174
142
|
overviewRulerLanes: 0,
|
|
175
143
|
renderLineHighlight: 'none',
|
|
176
|
-
|
|
177
144
|
/*
|
|
178
145
|
The entire string may be 1 giant line
|
|
179
146
|
Monaco by default seeds find w/ that line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCellOverflowModal.js","names":["React","useEffect","useRef","useState","Editor","Button","ContextActionUtils","Modal","ModalBody","ModalHeader","vsCopy","vsJson","vsListOrdered","vsPassFilled","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","copiedTimeout","copied","setCopied","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","clearTimeout","setTimeout","copyContents","copyToClipboard","getValue","then","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"sources":["../src/IrisGridCellOverflowModal.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport * as monaco from 'monaco-editor';\nimport {\n Button,\n ContextActionUtils,\n Modal,\n ModalBody,\n ModalHeader,\n} from '@deephaven/components';\nimport { vsCopy, vsJson, vsListOrdered, vsPassFilled } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n const copiedTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [copied, setCopied] = useState(false);\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n useEffect(() => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n copiedTimeout.current = setTimeout(() => {\n setCopied(false);\n }, 1000);\n return () => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n };\n }, [copied]);\n\n function copyContents() {\n ContextActionUtils.copyToClipboard(\n editorRef.current?.getValue() ?? text\n ).then(() => {\n setCopied(true);\n });\n }\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <Button\n kind=\"inline\"\n icon={copied ? vsPassFilled : vsCopy}\n tooltip={copied ? 'Copied contents' : 'Copy contents'}\n onClick={copyContents}\n />\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AACA,SAASC,MAAT,QAAuB,oBAAvB;AAEA,SACEC,MADF,EAEEC,kBAFF,EAGEC,KAHF,EAIEC,SAJF,EAKEC,WALF,QAMO,uBANP;AAOA,SAASC,MAAT,EAAiBC,MAAjB,EAAyBC,aAAzB,EAAwCC,YAAxC,QAA4D,kBAA5D;;AASA,eAAe,SAASC,yBAAT,OAI+C;EAAA,IAJZ;IAChDC,IADgD;IAEhDC,MAFgD;IAGhDC;EAHgD,CAIY;EAC5D,IAAM,CAACC,QAAD,EAAWC,WAAX,IAA0BhB,QAAQ,CAAC,KAAD,CAAxC;EACA,IAAM,CAACiB,MAAD,EAASC,SAAT,IAAsBlB,QAAQ,CAAC,CAAD,CAApC;EACA,IAAM,CAACmB,eAAD,EAAkBC,kBAAlB,IAAwCpB,QAAQ,CAAC,KAAD,CAAtD;EACA,IAAM,CAACqB,WAAD,EAAcC,cAAd,IAAgCtB,QAAQ,CAAC,KAAD,CAA9C;EACA,IAAM,CAACuB,SAAD,EAAYC,YAAZ,IAA4BxB,QAAQ,CAAC,KAAD,CAA1C;EACA,IAAMyB,SAAS,GAAG1B,MAAM,EAAxB;EAEA,IAAM2B,aAAa,GAAG3B,MAAM,CAAuC,IAAvC,CAA5B;EACA,IAAM,CAAC4B,MAAD,EAASC,SAAT,IAAsB5B,QAAQ,CAAC,KAAD,CAApC,CAT4D,CAW5D;;EACAF,SAAS,CACP,SAAS+B,0BAAT,GAAsC;IACpC,IAAI,CAAChB,MAAL,EAAa;MACX;IACD;;IAED,IAAI;MACFiB,IAAI,CAACC,KAAL,CAAWnB,IAAX;MACAY,YAAY,CAAC,IAAD,CAAZ;IACD,CAHD,CAGE,gBAAM;MACNA,YAAY,CAAC,KAAD,CAAZ;IACD;;IACDF,cAAc,CAAC,KAAD,CAAd;EACD,CAbM,EAcP,CAACT,MAAD,EAASD,IAAT,CAdO,CAAT,CAZ4D,CA6B5D;;EACAd,SAAS,CACP,SAASkC,0BAAT,GAAsC;IACpC,IAAIP,SAAS,CAACQ,OAAd,EAAuB;MACrBR,SAAS,CAACQ,OAAV,CAAkBC,MAAlB;IACD;EACF,CALM,EAMP,CAACjB,MAAD,CANO,CAAT,CA9B4D,CAuC5D;;EACAnB,SAAS,CACP,SAASqC,oBAAT,GAAgC;IAC9B,IAAIV,SAAS,CAACQ,OAAd,EAAuB;MACrBR,SAAS,CAACQ,OAAV,CAAkBG,aAAlB,CAAgC;QAC9BC,WAAW,EAAElB,eAAe,GAAG,IAAH,GAAU;MADR,CAAhC;IAGD;EACF,CAPM,EAQP,CAACA,eAAD,CARO,CAAT;EAWArB,SAAS,CAAC,MAAM;IACd,IAAI4B,aAAa,CAACO,OAAlB,EAA2BK,YAAY,CAACZ,aAAa,CAACO,OAAf,CAAZ;IAC3BP,aAAa,CAACO,OAAd,GAAwBM,UAAU,CAAC,MAAM;MACvCX,SAAS,CAAC,KAAD,CAAT;IACD,CAFiC,EAE/B,IAF+B,CAAlC;IAGA,OAAO,MAAM;MACX,IAAIF,aAAa,CAACO,OAAlB,EAA2BK,YAAY,CAACZ,aAAa,CAACO,OAAf,CAAZ;IAC5B,CAFD;EAGD,CARQ,EAQN,CAACN,MAAD,CARM,CAAT;;EAUA,SAASa,YAAT,GAAwB;IAAA;;IACtBrC,kBAAkB,CAACsC,eAAnB,gDACEhB,SAAS,CAACQ,OADZ,uDACE,mBAAmBS,QAAnB,EADF,yEACmC9B,IADnC,EAEE+B,IAFF,CAEO,MAAM;MACXf,SAAS,CAAC,IAAD,CAAT;IACD,CAJD;EAKD;;EAED,SAASgB,iBAAT,GAA6B;IAC3BxB,kBAAkB,CAAC,CAACD,eAAF,CAAlB;EACD;;EAED,SAAS0B,YAAT,GAAwB;IAAA;;IACtB,IAAMC,KAAK,0BAAGrB,SAAS,CAACQ,OAAb,wDAAG,oBAAmBc,QAAnB,EAAd;;IACA,IAAI,CAACxB,SAAD,IAAc,CAACuB,KAAnB,EAA0B;MACxB;IACD;;IAED,IAAI,CAACzB,WAAL,EAAkB;MAChByB,KAAK,CAACE,QAAN,CAAelB,IAAI,CAACmB,SAAL,CAAenB,IAAI,CAACC,KAAL,CAAWnB,IAAX,CAAf,EAAiCsC,SAAjC,EAA4C,CAA5C,CAAf;MACA5B,cAAc,CAAC,IAAD,CAAd;IACD,CAHD,MAGO;MACLwB,KAAK,CAACE,QAAN,CAAepC,IAAf;MACAU,cAAc,CAAC,KAAD,CAAd;IACD;;IACD6B,kBAAkB;EACnB;;EAED,SAASA,kBAAT,GAA8B;IAAA;;IAC5B,IAAMC,MAAM,GAAG3B,SAAS,CAACQ,OAAzB;;IACA,IAAI,CAACmB,MAAL,EAAa;MACX;IACD;;IAEDhC,kBAAkB,CAAC,8CAACgC,MAAM,CAACL,QAAP,EAAD,qDAAC,iBAAmBM,YAAnB,EAAD,yEAAsC,CAAtC,IAA2C,CAA5C,CAAlB;EACD;;EAED,SAASC,YAAT,GAAwB;IACtB,IAAIvC,QAAJ,EAAc;MACZU,SAAS,CAACQ,OAAV,GAAoBiB,SAApB;MACApC,OAAO;IACR;EACF;;EAED,SAASyC,mBAAT,CAA6BH,MAA7B,EAA0E;IACxE3B,SAAS,CAACQ,OAAV,GAAoBmB,MAApB;IACAA,MAAM,CAACI,sBAAP,CAA8B;MAAA,IAAC;QAAEC;MAAF,CAAD;MAAA,OAC5BvC,SAAS,CAACuC,aAAD,CADmB;IAAA,CAA9B;IAGAN,kBAAkB;EACnB;;EAED,IAAI,CAACtC,MAAD,IAAW,CAACE,QAAhB,EAA0B;IACxB,OAAO,IAAP;EACD;;EAED,oBACE,oBAAC,KAAD;IACE,MAAM,EAAEF,MADV;IAEE,QAAQ,MAFV;IAGE,QAAQ,MAHV;IAIE,MAAM,EAAEyC,YAJV;IAKE,QAAQ,EAAE,MAAMtC,WAAW,CAAC,IAAD,CAL7B;IAME,QAAQ,EAAE,MAAM;MACdA,WAAW,CAAC,KAAD,CAAX;MACAE,SAAS,CAAC,CAAD,CAAT;IACD,CATH;IAUE,SAAS,EAAC;EAVZ,gBAYE,oBAAC,WAAD;IAAa,MAAM,EAAEJ;EAArB,gBACE;IAAI,SAAS,EAAC;EAAd,mBADF,eAEE,oBAAC,MAAD;IACE,IAAI,EAAC,QADP;IAEE,IAAI,EAAEa,MAAM,GAAGjB,YAAH,GAAkBH,MAFhC;IAGE,OAAO,EAAEoB,MAAM,GAAG,iBAAH,GAAuB,eAHxC;IAIE,OAAO,EAAEa;EAJX,EAFF,eAQE,oBAAC,MAAD;IACE,IAAI,EAAC,QADP;IAEE,MAAM,EAAErB,eAFV;IAGE,IAAI,EAAEV,aAHR;IAIE,OAAO,EAAC,qBAJV;IAKE,OAAO,EAAEmC;EALX,EARF,EAeGrB,SAAS,iBACR,oBAAC,MAAD;IACE,IAAI,EAAC,QADP;IAEE,IAAI,EAAEf,MAFR;IAGE,MAAM,EAAEa,WAHV;IAIE,OAAO,EAAC,gBAJV;IAKE,OAAO,EAAEwB;EALX,EAhBJ,CAZF,eAqCE,oBAAC,SAAD;IAAW,KAAK,EAAE;MAAE5B;IAAF;EAAlB,gBACE,oBAAC,MAAD;IACE,mBAAmB,EAAEsC,mBADvB;IAEE,QAAQ,EAAE;MACRG,KAAK,EAAE9C,IADC;MAER+C,QAAQ,EAAE,IAFF;MAGRC,QAAQ,EAAE,IAHF;MAIR;MACAC,QAAQ,EAAEtC,SAAS,GAAG,YAAH,GAAkB,WAL7B;MAMRuC,OAAO,EAAEvC,SAND;MAORwC,OAAO,EAAE;QAAEC,MAAM,EAAE;MAAV,CAPD;MAQR3B,WAAW,EAAElB,eAAe,GAAG,IAAH,GAAU,KAR9B;MASR8C,kBAAkB,EAAE,CATZ;MAURC,mBAAmB,EAAE,MAVb;;MAWR;AACZ;AACA;AACA;AACA;MACYC,IAAI,EAAE;QAAEC,6BAA6B,EAAE;MAAjC;IAhBE;EAFZ,EADF,CArCF,CADF;AA+DD"}
|
|
1
|
+
{"version":3,"file":"IrisGridCellOverflowModal.js","names":["React","useEffect","useRef","useState","Editor","Button","CopyButton","Modal","ModalBody","ModalHeader","vsJson","vsListOrdered","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","getValue","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"sources":["../src/IrisGridCellOverflowModal.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport * as monaco from 'monaco-editor';\nimport {\n Button,\n CopyButton,\n Modal,\n ModalBody,\n ModalHeader,\n} from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <CopyButton\n kind=\"inline\"\n tooltip=\"Copy cell contents\"\n copy={editorRef.current?.getValue() ?? text}\n />\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ import { GridRange, ModelSizeMap, MoveOperation } from '@deephaven/grid';
|
|
|
3
3
|
import { CancelablePromise } from '@deephaven/utils';
|
|
4
4
|
import './IrisGridCopyHandler.scss';
|
|
5
5
|
import IrisGridModel from './IrisGridModel';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
6
|
+
type Values<T> = T[keyof T];
|
|
7
|
+
type ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;
|
|
8
|
+
export type CopyOperation = {
|
|
9
9
|
ranges: GridRange[];
|
|
10
10
|
includeHeaders: boolean;
|
|
11
11
|
formatValues?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAIlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,KAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAyDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAgEtB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
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
|
-
|
|
3
2
|
import React, { Component } from 'react';
|
|
4
3
|
import classNames from 'classnames';
|
|
5
4
|
import { CSSTransition } from 'react-transition-group';
|
|
6
|
-
import { Button,
|
|
5
|
+
import { Button, LoadingSpinner, ThemeExport } from '@deephaven/components';
|
|
7
6
|
import { GridRange, GridUtils } from '@deephaven/grid';
|
|
8
|
-
import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
|
|
7
|
+
import { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';
|
|
9
8
|
import Log from '@deephaven/log';
|
|
10
9
|
import IrisGridUtils from "./IrisGridUtils.js";
|
|
11
10
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
12
11
|
import "./IrisGridCopyHandler.css";
|
|
13
12
|
var log = Log.module('IrisGridCopyHandler');
|
|
14
|
-
|
|
15
13
|
/**
|
|
16
14
|
* Component for handling copying of data from the Iris Grid.
|
|
17
15
|
* - Prompts if necessary (large amount of rows copied)
|
|
@@ -21,53 +19,40 @@ class IrisGridCopyHandler extends Component {
|
|
|
21
19
|
/**
|
|
22
20
|
* Different states for the current copy operation
|
|
23
21
|
*/
|
|
22
|
+
|
|
24
23
|
static getStatusMessageText(copyState, rowCount) {
|
|
25
24
|
switch (copyState) {
|
|
26
25
|
case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:
|
|
27
26
|
return "Are you sure you want to copy ".concat(rowCount.toLocaleString(), " rows to your clipboard?");
|
|
28
|
-
|
|
29
27
|
case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:
|
|
30
28
|
return "Fetched ".concat(rowCount.toLocaleString(), " rows!");
|
|
31
|
-
|
|
32
29
|
case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:
|
|
33
30
|
return 'Unable to copy data.';
|
|
34
|
-
|
|
35
31
|
case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:
|
|
36
32
|
return "Fetching ".concat(rowCount.toLocaleString(), " rows for clipboard...");
|
|
37
|
-
|
|
38
33
|
case IrisGridCopyHandler.COPY_STATES.DONE:
|
|
39
34
|
return 'Copied to Clipboard!';
|
|
40
|
-
|
|
41
35
|
default:
|
|
42
36
|
return '';
|
|
43
37
|
}
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
static getCopyButtonText(buttonState) {
|
|
47
40
|
switch (buttonState) {
|
|
48
41
|
case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:
|
|
49
42
|
return 'Fetching';
|
|
50
|
-
|
|
51
43
|
case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:
|
|
52
44
|
return 'Click to Copy';
|
|
53
|
-
|
|
54
45
|
case IrisGridCopyHandler.BUTTON_STATES.RETRY:
|
|
55
46
|
return 'Retry';
|
|
56
|
-
|
|
57
47
|
default:
|
|
58
48
|
return 'Copy';
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
|
-
|
|
62
51
|
constructor(props) {
|
|
63
52
|
super(props);
|
|
64
|
-
|
|
65
53
|
_defineProperty(this, "textData", void 0);
|
|
66
|
-
|
|
67
54
|
_defineProperty(this, "hideTimer", void 0);
|
|
68
|
-
|
|
69
55
|
_defineProperty(this, "fetchPromise", void 0);
|
|
70
|
-
|
|
71
56
|
this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
|
|
72
57
|
this.handleCancelClick = this.handleCancelClick.bind(this);
|
|
73
58
|
this.handleCopyClick = this.handleCopyClick.bind(this);
|
|
@@ -80,38 +65,31 @@ class IrisGridCopyHandler extends Component {
|
|
|
80
65
|
rowCount: 0
|
|
81
66
|
};
|
|
82
67
|
}
|
|
83
|
-
|
|
84
68
|
componentDidMount() {
|
|
85
69
|
var {
|
|
86
70
|
copyOperation
|
|
87
71
|
} = this.props;
|
|
88
|
-
|
|
89
72
|
if (copyOperation != null) {
|
|
90
73
|
this.startCopy();
|
|
91
74
|
}
|
|
92
75
|
}
|
|
93
|
-
|
|
94
76
|
componentDidUpdate(prevProps) {
|
|
95
77
|
var {
|
|
96
78
|
copyOperation
|
|
97
79
|
} = this.props;
|
|
98
|
-
|
|
99
80
|
if (prevProps.copyOperation !== copyOperation) {
|
|
100
81
|
this.startCopy();
|
|
101
82
|
}
|
|
102
83
|
}
|
|
103
|
-
|
|
104
84
|
componentWillUnmount() {
|
|
105
85
|
this.stopCopy();
|
|
106
86
|
}
|
|
107
|
-
|
|
108
87
|
startCopy() {
|
|
109
88
|
log.debug2('startCopy');
|
|
110
89
|
this.stopCopy();
|
|
111
90
|
var {
|
|
112
91
|
copyOperation
|
|
113
92
|
} = this.props;
|
|
114
|
-
|
|
115
93
|
if (copyOperation == null) {
|
|
116
94
|
log.debug2('No copy operation set, cancelling out');
|
|
117
95
|
this.setState({
|
|
@@ -119,12 +97,10 @@ class IrisGridCopyHandler extends Component {
|
|
|
119
97
|
});
|
|
120
98
|
return;
|
|
121
99
|
}
|
|
122
|
-
|
|
123
100
|
var {
|
|
124
101
|
ranges,
|
|
125
102
|
error
|
|
126
103
|
} = copyOperation;
|
|
127
|
-
|
|
128
104
|
if (error != null) {
|
|
129
105
|
log.debug('Showing copy error', error);
|
|
130
106
|
this.setState({
|
|
@@ -135,14 +111,12 @@ class IrisGridCopyHandler extends Component {
|
|
|
135
111
|
this.startHideTimer();
|
|
136
112
|
return;
|
|
137
113
|
}
|
|
138
|
-
|
|
139
114
|
var rowCount = GridRange.rowCount(ranges);
|
|
140
115
|
this.setState({
|
|
141
116
|
rowCount,
|
|
142
117
|
isShown: true,
|
|
143
118
|
error: undefined
|
|
144
119
|
});
|
|
145
|
-
|
|
146
120
|
if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {
|
|
147
121
|
this.setState({
|
|
148
122
|
buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,
|
|
@@ -152,26 +126,22 @@ class IrisGridCopyHandler extends Component {
|
|
|
152
126
|
this.startFetch();
|
|
153
127
|
}
|
|
154
128
|
}
|
|
155
|
-
|
|
156
129
|
stopCopy() {
|
|
157
130
|
this.textData = undefined;
|
|
158
131
|
this.stopFetch();
|
|
159
132
|
this.stopHideTimer();
|
|
160
133
|
}
|
|
161
|
-
|
|
162
134
|
handleBackgroundClick() {
|
|
163
135
|
log.debug2('handleBackgroundClick');
|
|
164
136
|
var {
|
|
165
137
|
copyState
|
|
166
138
|
} = this.state;
|
|
167
|
-
|
|
168
139
|
if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {
|
|
169
140
|
this.setState({
|
|
170
141
|
isShown: false
|
|
171
142
|
});
|
|
172
143
|
}
|
|
173
144
|
}
|
|
174
|
-
|
|
175
145
|
handleCancelClick() {
|
|
176
146
|
log.debug2('handleCancelClick');
|
|
177
147
|
this.stopFetch();
|
|
@@ -179,17 +149,14 @@ class IrisGridCopyHandler extends Component {
|
|
|
179
149
|
isShown: false
|
|
180
150
|
});
|
|
181
151
|
}
|
|
182
|
-
|
|
183
152
|
handleCopyClick() {
|
|
184
153
|
log.debug2('handleCopyClick');
|
|
185
|
-
|
|
186
154
|
if (this.textData != null) {
|
|
187
155
|
this.copyText(this.textData);
|
|
188
156
|
} else {
|
|
189
157
|
this.startFetch();
|
|
190
158
|
}
|
|
191
159
|
}
|
|
192
|
-
|
|
193
160
|
handleHideTimeout() {
|
|
194
161
|
log.debug2('handleHideTimeout');
|
|
195
162
|
this.stopHideTimer();
|
|
@@ -197,11 +164,10 @@ class IrisGridCopyHandler extends Component {
|
|
|
197
164
|
isShown: false
|
|
198
165
|
});
|
|
199
166
|
}
|
|
200
|
-
|
|
201
167
|
copyText(text) {
|
|
202
168
|
log.debug2('copyText', text);
|
|
203
169
|
this.textData = text;
|
|
204
|
-
|
|
170
|
+
copyToClipboard(text).then(() => {
|
|
205
171
|
this.setState({
|
|
206
172
|
copyState: IrisGridCopyHandler.COPY_STATES.DONE
|
|
207
173
|
});
|
|
@@ -214,7 +180,6 @@ class IrisGridCopyHandler extends Component {
|
|
|
214
180
|
});
|
|
215
181
|
});
|
|
216
182
|
}
|
|
217
|
-
|
|
218
183
|
startFetch() {
|
|
219
184
|
this.stopFetch();
|
|
220
185
|
this.setState({
|
|
@@ -235,13 +200,12 @@ class IrisGridCopyHandler extends Component {
|
|
|
235
200
|
log.debug('startFetch', ranges);
|
|
236
201
|
var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);
|
|
237
202
|
var modelRanges = GridUtils.getModelRanges(ranges, movedColumns);
|
|
238
|
-
|
|
239
203
|
if (hiddenColumns.length > 0) {
|
|
240
204
|
var subtractRanges = hiddenColumns.map(GridRange.makeColumn);
|
|
241
205
|
modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);
|
|
242
|
-
}
|
|
243
|
-
|
|
206
|
+
}
|
|
244
207
|
|
|
208
|
+
// Remove the hidden columns from the snapshot
|
|
245
209
|
var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
|
|
246
210
|
this.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));
|
|
247
211
|
this.fetchPromise.then(text => {
|
|
@@ -260,7 +224,6 @@ class IrisGridCopyHandler extends Component {
|
|
|
260
224
|
}
|
|
261
225
|
});
|
|
262
226
|
}
|
|
263
|
-
|
|
264
227
|
stopFetch() {
|
|
265
228
|
if (this.fetchPromise) {
|
|
266
229
|
log.debug2('stopFetch');
|
|
@@ -268,19 +231,16 @@ class IrisGridCopyHandler extends Component {
|
|
|
268
231
|
this.fetchPromise = undefined;
|
|
269
232
|
}
|
|
270
233
|
}
|
|
271
|
-
|
|
272
234
|
startHideTimer() {
|
|
273
235
|
this.stopHideTimer();
|
|
274
236
|
this.hideTimer = setTimeout(this.handleHideTimeout, IrisGridCopyHandler.HIDE_TIMEOUT);
|
|
275
237
|
}
|
|
276
|
-
|
|
277
238
|
stopHideTimer() {
|
|
278
239
|
if (this.hideTimer != null) {
|
|
279
240
|
clearTimeout(this.hideTimer);
|
|
280
241
|
this.hideTimer = undefined;
|
|
281
242
|
}
|
|
282
243
|
}
|
|
283
|
-
|
|
284
244
|
render() {
|
|
285
245
|
var {
|
|
286
246
|
onEntering,
|
|
@@ -335,13 +295,9 @@ class IrisGridCopyHandler extends Component {
|
|
|
335
295
|
disabled: isFetching
|
|
336
296
|
}, isFetching && /*#__PURE__*/React.createElement(LoadingSpinner, null), copyButtonText))));
|
|
337
297
|
}
|
|
338
|
-
|
|
339
298
|
}
|
|
340
|
-
|
|
341
299
|
_defineProperty(IrisGridCopyHandler, "NO_PROMPT_THRESHOLD", 10000);
|
|
342
|
-
|
|
343
300
|
_defineProperty(IrisGridCopyHandler, "HIDE_TIMEOUT", 3000);
|
|
344
|
-
|
|
345
301
|
_defineProperty(IrisGridCopyHandler, "COPY_STATES", {
|
|
346
302
|
// No copy operation in progress
|
|
347
303
|
IDLE: 'IDLE',
|
|
@@ -356,14 +312,12 @@ _defineProperty(IrisGridCopyHandler, "COPY_STATES", {
|
|
|
356
312
|
// The copy operation is completed and successfully copied to the clipboard
|
|
357
313
|
DONE: 'DONE'
|
|
358
314
|
});
|
|
359
|
-
|
|
360
315
|
_defineProperty(IrisGridCopyHandler, "BUTTON_STATES", {
|
|
361
316
|
COPY: 'COPY',
|
|
362
317
|
FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',
|
|
363
318
|
CLICK_TO_COPY: 'CLICK_TO_COPY',
|
|
364
319
|
RETRY: 'RETRY'
|
|
365
320
|
});
|
|
366
|
-
|
|
367
321
|
_defineProperty(IrisGridCopyHandler, "defaultProps", {
|
|
368
322
|
copyOperation: null,
|
|
369
323
|
onEntering: () => undefined,
|
|
@@ -371,6 +325,5 @@ _defineProperty(IrisGridCopyHandler, "defaultProps", {
|
|
|
371
325
|
onExiting: () => undefined,
|
|
372
326
|
onExited: () => undefined
|
|
373
327
|
});
|
|
374
|
-
|
|
375
328
|
export default IrisGridCopyHandler;
|
|
376
329
|
//# sourceMappingURL=IrisGridCopyHandler.js.map
|