@deephaven/iris-grid 0.6.3-beta.9 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Formatter.d.ts +7 -14
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +6 -6
- package/dist/Formatter.js.map +1 -1
- package/dist/FormatterUtils.d.ts +8 -0
- package/dist/FormatterUtils.d.ts.map +1 -1
- package/dist/FormatterUtils.js +15 -0
- package/dist/FormatterUtils.js.map +1 -1
- package/dist/IrisGrid.d.ts +8 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +39 -71
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridRenderer.js +1 -4
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +3 -7
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +1 -1
- package/dist/IrisGridUtils.js +32 -32
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PendingDataBottomBar.js +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableUtils.d.ts.map +1 -1
- package/dist/TableUtils.js +3 -1
- package/dist/TableUtils.js.map +1 -1
- package/dist/ToastBottomBar.js +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/formatters/DateTimeColumnFormatter.d.ts +8 -7
- package/dist/formatters/DateTimeColumnFormatter.d.ts.map +1 -1
- package/dist/formatters/DateTimeColumnFormatter.js +1 -2
- package/dist/formatters/DateTimeColumnFormatter.js.map +1 -1
- package/dist/formatters/DecimalColumnFormatter.d.ts +55 -59
- package/dist/formatters/DecimalColumnFormatter.d.ts.map +1 -1
- package/dist/formatters/DecimalColumnFormatter.js +66 -27
- package/dist/formatters/DecimalColumnFormatter.js.map +1 -1
- package/dist/formatters/IntegerColumnFormatter.d.ts +50 -29
- package/dist/formatters/IntegerColumnFormatter.d.ts.map +1 -1
- package/dist/formatters/IntegerColumnFormatter.js +60 -19
- package/dist/formatters/IntegerColumnFormatter.js.map +1 -1
- package/dist/formatters/index.d.ts +7 -7
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +3 -3
- package/dist/formatters/index.js.map +1 -1
- package/dist/memoizeClear.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +12 -4
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/InputEditor.js +1 -1
- package/dist/sidebar/RollupRows.js +10 -10
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +5 -5
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +10 -3
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -0
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +20 -1
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +4 -4
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -13
package/dist/memoizeClear.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridColumnTooltipMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js"],"names":[],"mappings":";AAGA;;GAEG;AACH;IACE,2BAIC;IADC,cAAwB;IAG1B,6BAKC;IAED,0BAMC;
|
|
1
|
+
{"version":3,"file":"IrisGridColumnTooltipMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js"],"names":[],"mappings":";AAGA;;GAEG;AACH;IACE,2BAIC;IADC,cAAwB;IAG1B,6BAKC;IAED,0BAMC;CA0CF"}
|
|
@@ -43,10 +43,6 @@ class IrisGridColumnTooltipMouseHandler extends GridMouseHandler {
|
|
|
43
43
|
return false;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
onWheel() {
|
|
47
|
-
this.destroyColumnTooltip();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
46
|
onMove(gridPoint) {
|
|
51
47
|
var {
|
|
52
48
|
y,
|
|
@@ -79,6 +75,18 @@ class IrisGridColumnTooltipMouseHandler extends GridMouseHandler {
|
|
|
79
75
|
return false;
|
|
80
76
|
}
|
|
81
77
|
|
|
78
|
+
onLeave(gridPoint) {
|
|
79
|
+
var {
|
|
80
|
+
y
|
|
81
|
+
} = gridPoint;
|
|
82
|
+
|
|
83
|
+
if (y < 0) {
|
|
84
|
+
this.destroyColumnTooltip();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
82
90
|
}
|
|
83
91
|
|
|
84
92
|
export default IrisGridColumnTooltipMouseHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js"],"names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","destroyColumnTooltip","shownColumnTooltip","state","setState","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","
|
|
1
|
+
{"version":3,"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js"],"names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","destroyColumnTooltip","shownColumnTooltip","state","setState","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","onMove","gridPoint","y","column","row","theme","getTheme","newTooltip","columnHeaderHeight","onLeave"],"mappings":"AAAA;AACA,SAASA,gBAAT,QAAiC,iBAAjC;AAEA;AACA;AACA;;AACA,MAAMC,iCAAN,SAAgDD,gBAAhD,CAAiE;AAC/DE,EAAAA,WAAW,CAACC,QAAD,EAAW;AACpB;AAEA,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEC,MAAAA;AAAF,QAAyB,KAAKF,QAAL,CAAcG,KAA7C;;AACA,QAAID,kBAAkB,IAAI,IAA1B,EAAgC;AAC9B,WAAKF,QAAL,CAAcI,QAAd,CAAuB;AAAEF,QAAAA,kBAAkB,EAAE;AAAtB,OAAvB;AACD;AACF;;AAEDG,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAKN,QAAzB;;AACA,QAAIM,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAACC,SAAR;AACAD,MAAAA,OAAO,CAACE,IAAR;AACD;AACF;;AAEDC,EAAAA,MAAM,GAAG;AACP,SAAKJ,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDK,EAAAA,aAAa,GAAG;AACd,SAAKL,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDM,EAAAA,MAAM,CAACC,SAAD,EAAY;AAChB,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA,MAAL;AAAaC,MAAAA;AAAb,QAAqBH,SAA3B;AACA,QAAM;AAAEV,MAAAA;AAAF,QAAyB,KAAKF,QAAL,CAAcG,KAA7C;AACA,QAAMa,KAAK,GAAG,KAAKhB,QAAL,CAAciB,QAAd,EAAd;AACA,QAAIC,UAAU,GAAG,IAAjB;;AACA,QAAIJ,MAAM,KAAK,IAAX,IAAmBC,GAAG,KAAK,IAA/B,EAAqC;AACnC;AACN;AACA;AACA;AACA;AACM,UAAIF,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAIG,KAAK,CAACG,kBAAzB,EAA6C;AAC3CD,QAAAA,UAAU,GAAGJ,MAAb;AACD;AACF;;AAED,QAAII,UAAU,KAAKhB,kBAAnB,EAAuC;AACrC,WAAKF,QAAL,CAAcI,QAAd,CAAuB;AAAEF,QAAAA,kBAAkB,EAAEgB;AAAtB,OAAvB;AACD;;AAED,WAAO,KAAP;AACD;;AAEDE,EAAAA,OAAO,CAACR,SAAD,EAAY;AACjB,QAAM;AAAEC,MAAAA;AAAF,QAAQD,SAAd;;AACA,QAAIC,CAAC,GAAG,CAAR,EAAW;AACT,WAAKZ,oBAAL;AACD;;AACD,WAAO,KAAP;AACD;;AA7D8D;;AAgEjE,eAAeH,iCAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { GridMouseHandler } from '@deephaven/grid';\n\n/**\n * Detects mouse hover over column headers and displays the appropriate tooltip\n */\nclass IrisGridColumnTooltipMouseHandler extends GridMouseHandler {\n constructor(irisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n destroyColumnTooltip() {\n const { shownColumnTooltip } = this.irisGrid.state;\n if (shownColumnTooltip != null) {\n this.irisGrid.setState({ shownColumnTooltip: null });\n }\n }\n\n hideColumnTooltip() {\n const { tooltip } = this.irisGrid;\n if (tooltip) {\n tooltip.stopTimer();\n tooltip.hide();\n }\n }\n\n onDown() {\n this.hideColumnTooltip();\n return false;\n }\n\n onContextMenu() {\n this.hideColumnTooltip();\n return false;\n }\n\n onMove(gridPoint) {\n const { y, column, row } = gridPoint;\n const { shownColumnTooltip } = this.irisGrid.state;\n const theme = this.irisGrid.getTheme();\n let newTooltip = null;\n if (column !== null && row === null) {\n /**\n * one would expect at y == theme.columnHeaderHeight, row == null\n * however, gridY also == theme.columnHeaderHeight, so row still has a value\n * so this tooltip won't actually show until row is null at columnHeaderHeight - 1\n */\n if (y >= 0 && y <= theme.columnHeaderHeight) {\n newTooltip = column;\n }\n }\n\n if (newTooltip !== shownColumnTooltip) {\n this.irisGrid.setState({ shownColumnTooltip: newTooltip });\n }\n\n return false;\n }\n\n onLeave(gridPoint) {\n const { y } = gridPoint;\n if (y < 0) {\n this.destroyColumnTooltip();\n }\n return false;\n }\n}\n\nexport default IrisGridColumnTooltipMouseHandler;\n"],"file":"IrisGridColumnTooltipMouseHandler.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -2,13 +2,13 @@ import React from 'react';
|
|
|
2
2
|
import { Menu } from '@deephaven/components';
|
|
3
3
|
import AdvancedSettingsType from "./AdvancedSettingsType.js";
|
|
4
4
|
|
|
5
|
-
var AdvancedSettingsMenu = _ref => {
|
|
5
|
+
var AdvancedSettingsMenu = (_ref) => {
|
|
6
6
|
var {
|
|
7
7
|
items,
|
|
8
8
|
onChange: _onChange = () => undefined
|
|
9
9
|
} = _ref;
|
|
10
10
|
return /*#__PURE__*/React.createElement(Menu, {
|
|
11
|
-
items: Array.from(items.entries()).map(_ref2 => {
|
|
11
|
+
items: Array.from(items.entries()).map((_ref2) => {
|
|
12
12
|
var [key, isOn] = _ref2;
|
|
13
13
|
return {
|
|
14
14
|
title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
4
4
|
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
6
|
|
|
@@ -271,7 +271,7 @@ class CustomColumnBuilder extends Component {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
resetRequestFailed() {
|
|
274
|
-
this.setState(_ref => {
|
|
274
|
+
this.setState((_ref) => {
|
|
275
275
|
var {
|
|
276
276
|
hasRequestFailed
|
|
277
277
|
} = _ref;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sidebar/CustomColumnBuilder.jsx"],"names":["React","Component","classNames","PropTypes","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsIssues","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","container","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","event","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","querySelector","nextFocusIndex","onSave","forEach","renderInputs","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsIssues } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nclass CustomColumnBuilder extends Component {\n static makeCustomColumnInputEventKey() {\n return shortid.generate();\n }\n\n static createCustomColumnInput() {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n };\n this.container = null;\n }\n\n componentDidMount() {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount() {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n }\n\n getInput = memoize((inputs, key) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs, key) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage() {\n this.setState({ errorMessage: null });\n }\n\n startListening() {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening() {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns) {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick() {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(eventKey, type, value) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput };\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated() {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState({ isCustomColumnApplying: false });\n }\n\n handleRequestFailed(event) {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {event.detail.errorMessage}\n <br />\n Table configuration: {JSON.stringify(event.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result) {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex, shiftKey) {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n this.container\n .querySelectorAll(`.btn-drag-handle`) // eslint-disable-next-line no-unexpected-multiline\n [focusEditorIndex].focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n // focus on add another column button\n this.container.querySelector('.btn-add-column').focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n this.container\n .querySelectorAll('.custom-column-input') // eslint-disable-next-line no-unexpected-multiline\n [nextFocusIndex].focus();\n }\n }\n\n handleSaveClick() {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed() {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs() {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n render() {\n const { onCancel } = this.props;\n const { inputs, errorMessage, isCustomColumnApplying } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-primary btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isCustomColumnApplying &&\n (inputs.length > 1 ? 'Save Columns' : 'Save Column')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nCustomColumnBuilder.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n customColumns: PropTypes.arrayOf(PropTypes.string),\n onSave: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nCustomColumnBuilder.defaultProps = {\n customColumns: [],\n onSave: () => {},\n onCancel: () => {},\n};\n\nexport default CustomColumnBuilder;\n"],"file":"CustomColumnBuilder.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/sidebar/CustomColumnBuilder.jsx"],"names":["React","Component","classNames","PropTypes","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsIssues","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","container","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","event","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","querySelector","nextFocusIndex","onSave","forEach","renderInputs","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsIssues } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nclass CustomColumnBuilder extends Component {\n static makeCustomColumnInputEventKey() {\n return shortid.generate();\n }\n\n static createCustomColumnInput() {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n };\n this.container = null;\n }\n\n componentDidMount() {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount() {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n }\n\n getInput = memoize((inputs, key) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs, key) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage() {\n this.setState({ errorMessage: null });\n }\n\n startListening() {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening() {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns) {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick() {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(eventKey, type, value) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput };\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated() {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState({ isCustomColumnApplying: false });\n }\n\n handleRequestFailed(event) {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {event.detail.errorMessage}\n <br />\n Table configuration: {JSON.stringify(event.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result) {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex, shiftKey) {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n this.container\n .querySelectorAll(`.btn-drag-handle`) // eslint-disable-next-line no-unexpected-multiline\n [focusEditorIndex].focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n // focus on add another column button\n this.container.querySelector('.btn-add-column').focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n this.container\n .querySelectorAll('.custom-column-input') // eslint-disable-next-line no-unexpected-multiline\n [nextFocusIndex].focus();\n }\n }\n\n handleSaveClick() {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed() {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs() {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n render() {\n const { onCancel } = this.props;\n const { inputs, errorMessage, isCustomColumnApplying } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-primary btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isCustomColumnApplying &&\n (inputs.length > 1 ? 'Save Columns' : 'Save Column')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nCustomColumnBuilder.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n customColumns: PropTypes.arrayOf(PropTypes.string),\n onSave: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nCustomColumnBuilder.defaultProps = {\n customColumns: [],\n onSave: () => {},\n onCancel: () => {},\n};\n\nexport default CustomColumnBuilder;\n"],"file":"CustomColumnBuilder.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -146,7 +146,7 @@ class RollupRows extends Component {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
handleSortAscending() {
|
|
149
|
-
this.setState(_ref2 => {
|
|
149
|
+
this.setState((_ref2) => {
|
|
150
150
|
var {
|
|
151
151
|
sort
|
|
152
152
|
} = _ref2;
|
|
@@ -157,7 +157,7 @@ class RollupRows extends Component {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
handleSortDescending() {
|
|
160
|
-
this.setState(_ref3 => {
|
|
160
|
+
this.setState((_ref3) => {
|
|
161
161
|
var {
|
|
162
162
|
sort
|
|
163
163
|
} = _ref3;
|
|
@@ -226,7 +226,7 @@ class RollupRows extends Component {
|
|
|
226
226
|
|
|
227
227
|
|
|
228
228
|
if (destination.droppableId === UNGROUPED_LIST_ID) {
|
|
229
|
-
this.setState(_ref4 => {
|
|
229
|
+
this.setState((_ref4) => {
|
|
230
230
|
var {
|
|
231
231
|
groupedSelectedRanges,
|
|
232
232
|
columns
|
|
@@ -253,7 +253,7 @@ class RollupRows extends Component {
|
|
|
253
253
|
destinationIndex += 1;
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
this.setState(_ref5 => {
|
|
256
|
+
this.setState((_ref5) => {
|
|
257
257
|
var {
|
|
258
258
|
columns,
|
|
259
259
|
ungroupedSelectedRanges,
|
|
@@ -277,7 +277,7 @@ class RollupRows extends Component {
|
|
|
277
277
|
|
|
278
278
|
handleUngroupedSelect(itemIndex) {
|
|
279
279
|
log.debug('handleUngroupedSelect');
|
|
280
|
-
this.setState(_ref6 => {
|
|
280
|
+
this.setState((_ref6) => {
|
|
281
281
|
var {
|
|
282
282
|
columns
|
|
283
283
|
} = _ref6;
|
|
@@ -291,7 +291,7 @@ class RollupRows extends Component {
|
|
|
291
291
|
|
|
292
292
|
handleUngroupedSelectionChange(ungroupedSelectedRanges) {
|
|
293
293
|
log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);
|
|
294
|
-
this.setState(_ref7 => {
|
|
294
|
+
this.setState((_ref7) => {
|
|
295
295
|
var {
|
|
296
296
|
ungroupedSelectedRanges: stateUngroupedSelectedRanges
|
|
297
297
|
} = _ref7;
|
|
@@ -309,7 +309,7 @@ class RollupRows extends Component {
|
|
|
309
309
|
|
|
310
310
|
handleGroupedSelectionChange(groupedSelectedRanges) {
|
|
311
311
|
log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);
|
|
312
|
-
this.setState(_ref8 => {
|
|
312
|
+
this.setState((_ref8) => {
|
|
313
313
|
var {
|
|
314
314
|
groupedSelectedRanges: stateGroupedSelectedRanges
|
|
315
315
|
} = _ref8;
|
|
@@ -326,7 +326,7 @@ class RollupRows extends Component {
|
|
|
326
326
|
}
|
|
327
327
|
|
|
328
328
|
handleDeleteClicked(index) {
|
|
329
|
-
this.setState(_ref9 => {
|
|
329
|
+
this.setState((_ref9) => {
|
|
330
330
|
var {
|
|
331
331
|
columns
|
|
332
332
|
} = _ref9;
|
|
@@ -339,7 +339,7 @@ class RollupRows extends Component {
|
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
handleShowConstituentsChange() {
|
|
342
|
-
this.setState(_ref10 => {
|
|
342
|
+
this.setState((_ref10) => {
|
|
343
343
|
var {
|
|
344
344
|
showConstituents
|
|
345
345
|
} = _ref10;
|
|
@@ -350,7 +350,7 @@ class RollupRows extends Component {
|
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
handleShowNonAggregatedColumnsChange() {
|
|
353
|
-
this.setState(_ref11 => {
|
|
353
|
+
this.setState((_ref11) => {
|
|
354
354
|
var {
|
|
355
355
|
showNonAggregatedColumns
|
|
356
356
|
} = _ref11;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sidebar/RollupRows.jsx"],"names":["React","Component","classNames","PropTypes","FontAwesomeIcon","DragDropContext","Droppable","ButtonOld","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","vsTrash","dhSortAlphaDown","dhSortAlphaUp","memoize","debounce","Log","IrisGridModel","TableUtils","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","columns","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","search","bind","handleDeleteClicked","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","ungroupedList","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","ungroupedSelectedRanges","groupedSelectedRanges","searchFilter","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","cancel","event","target","value","setState","resetSelection","DESCENDING","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","current","scrollToItem","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze","propTypes","instanceOf","isRequired","func","shape","arrayOf","string","bool","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport {\n ButtonOld,\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './RollupRows.scss';\nimport IrisGridModel from '../IrisGridModel';\nimport TableUtils from '../TableUtils';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nclass RollupRows extends Component {\n static SORT = Object.freeze({\n ASCENDING: 'ASCENDING',\n DESCENDING: 'DESCENDING',\n });\n\n static renderColumn({ item, isClone, selectedCount }) {\n const text = item && item.name;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings,\n newGroupings,\n index = currentGroupings.length\n ) {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column) {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props) {\n super(props);\n\n this.search = debounce(this.search.bind(this), DEBOUNCE_SEARCH);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount() {\n this.search.cancel();\n }\n\n handleSearchChange(event) {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING,\n }));\n }\n\n handleSortDescending() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING,\n }));\n }\n\n resetSelection() {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search(searchFilter) {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }\n\n handleDragStart(e) {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e) {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex) {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges) {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges) {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index) {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange() {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange() {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig() {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange() {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n });\n }\n\n getCachedUngroupedColumns = memoize((columns, groupedColumns) =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n !groupedColumns.find(name => name === column.name)\n )\n );\n\n getCachedSortedColumns = memoize((columns, sort) =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns() {\n const { model } = this.props;\n const { columns, searchFilter } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(\n originalColumns,\n columns,\n searchFilter\n );\n }\n\n getSortedUngroupedColumns() {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({ item, itemIndex, isClone, selectedCount }) {\n const indent = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!isClone && (\n <ButtonOld\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </ButtonOld>\n )}\n </>\n );\n }\n\n render() {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex=\"0\"\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable isDragDisabled droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : null\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <ButtonOld\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </ButtonOld>\n <ButtonOld\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </ButtonOld>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nRollupRows.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onChange: PropTypes.func,\n config: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n }),\n};\n\nRollupRows.defaultProps = {\n config: null,\n onChange: () => {},\n};\n\nexport default RollupRows;\n"],"file":"RollupRows.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/sidebar/RollupRows.jsx"],"names":["React","Component","classNames","PropTypes","FontAwesomeIcon","DragDropContext","Droppable","ButtonOld","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","vsTrash","dhSortAlphaDown","dhSortAlphaUp","memoize","debounce","Log","IrisGridModel","TableUtils","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","columns","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","search","bind","handleDeleteClicked","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","ungroupedList","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","ungroupedSelectedRanges","groupedSelectedRanges","searchFilter","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","cancel","event","target","value","setState","resetSelection","DESCENDING","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","current","scrollToItem","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze","propTypes","instanceOf","isRequired","func","shape","arrayOf","string","bool","defaultProps"],"mappings":";;;;AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,qBAA3C;AACA,SACEC,SADF,EAEEC,QAFF,EAGEC,iBAHF,EAIEC,SAJF,EAKEC,WALF,EAMEC,OANF,QAOO,uBAPP;AAQA,SAASC,OAAT,EAAkBC,eAAlB,EAAmCC,aAAnC,QAAwD,kBAAxD;AACA,OAAOC,OAAP,MAAoB,UAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;;OAEOC,a;OACAC,U;AAEP,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAJ,CAAW,YAAX,CAAZ;AACA,IAAMC,eAAe,GAAG,GAAxB;AACA,IAAMC,eAAe,GAAG,qBAAxB;AACA,IAAMC,iBAAiB,GAAG,uBAA1B;;AAEA,MAAMC,UAAN,SAAyBzB,SAAzB,CAAmC;AAMd,SAAZ0B,YAAY,OAAmC;AAAA,QAAlC;AAAEC,MAAAA,IAAF;AAAQC,MAAAA,OAAR;AAAiBC,MAAAA;AAAjB,KAAkC;AACpD,QAAMC,IAAI,GAAGH,IAAI,IAAIA,IAAI,CAACI,IAA1B;AACA,QAAMC,SAAS,GAAGJ,OAAO,aAAMC,aAAN,IAAwB,IAAjD;AACA,QAAMI,SAAS,GAAGL,OAAO,GAAG,sBAAH,GAA4B,EAArD;AACA,WAAOpB,iBAAiB,CAAC0B,cAAlB,CAAiC;AAAEJ,MAAAA,IAAF;AAAQE,MAAAA,SAAR;AAAmBC,MAAAA;AAAnB,KAAjC,CAAP;AACD;;AAEkB,SAAZE,YAAY,CACjBC,gBADiB,EAEjBC,YAFiB,EAIjB;AAAA,QADAC,KACA,uEADQF,gBAAgB,CAACG,MACzB;;AACA,QAAIF,YAAY,IAAI,IAAhB,IAAwBA,YAAY,CAACE,MAAb,KAAwB,CAApD,EAAuD;AACrD,aAAOH,gBAAP;AACD;;AAED,QAAII,WAAW,GAAGF,KAAlB;AACA,QAAMG,SAAS,GAAGL,gBAAgB,CAACM,MAAjB,CAAwB,CAACC,QAAD,EAAWC,CAAX,KAAiB;AACzD,UAAIP,YAAY,CAACQ,QAAb,CAAsBF,QAAtB,CAAJ,EAAqC;AACnC,YAAIC,CAAC,GAAGJ,WAAR,EAAqB;AACnBA,UAAAA,WAAW,IAAI,CAAf;AACD;;AACD,eAAO,KAAP;AACD;;AACD,aAAO,IAAP;AACD,KARiB,CAAlB;AASAC,IAAAA,SAAS,CAACK,MAAV,CAAiBN,WAAjB,EAA8B,CAA9B,EAAiC,GAAGH,YAApC;AACA,WAAOI,SAAP;AACD;;AAEiB,SAAXM,WAAW,CAACC,MAAD,EAAS;AACzB,WAAO,CAAC7B,UAAU,CAAC8B,aAAX,CAAyBD,MAAM,CAACE,IAAhC,CAAR;AACD;;AAEDC,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,uDAsRSrC,OAAO,CAAC,CAACsC,OAAD,EAAUC,cAAV,KAClCD,OAAO,CAACX,MAAR,CACEM,MAAM,IACJvB,UAAU,CAACsB,WAAX,CAAuBC,MAAvB,KACA,CAACM,cAAc,CAACC,IAAf,CAAoBxB,IAAI,IAAIA,IAAI,KAAKiB,MAAM,CAACjB,IAA5C,CAHL,CADiC,CAtRhB;;AAAA,oDA8RMhB,OAAO,CAAC,CAACsC,OAAD,EAAUG,IAAV,KAC/BA,IAAI,IAAI,IAAR,GACI,CAAC,GAAGH,OAAJ,CADJ,GAEIlC,UAAU,CAACsC,WAAX,CAAuBJ,OAAvB,EAAgCG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC,SAAzD,CAH0B,CA9Rb;;AAGjB,SAAKC,MAAL,GAAc5C,QAAQ,CAAC,KAAK4C,MAAL,CAAYC,IAAZ,CAAiB,IAAjB,CAAD,EAAyBvC,eAAzB,CAAtB;AAEA,SAAKwC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKE,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBF,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BH,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKI,8BAAL,GAAsC,KAAKA,8BAAL,CAAoCJ,IAApC,CACpC,IADoC,CAAtC;AAGA,SAAKK,eAAL,GAAuB,KAAKA,eAAL,CAAqBL,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKM,aAAL,GAAqB,KAAKA,aAAL,CAAmBN,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKO,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCP,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKQ,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCR,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKS,oCAAL,GAA4C,KAAKA,oCAAL,CAA0CT,IAA1C,CAC1C,IAD0C,CAA5C;AAGA,SAAKU,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBV,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKW,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BX,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKY,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBZ,IAAvB,CAA4B,IAA5B,CAAzB;AAEA,SAAKa,aAAL,gBAAqB3E,KAAK,CAAC4E,SAAN,EAArB;AACA,SAAKC,WAAL,gBAAmB7E,KAAK,CAAC4E,SAAN,EAAnB;AAEA,QAAM;AAAEE,MAAAA;AAAF,QAAazB,KAAnB;AACA,QAAM;AACJC,MAAAA,OAAO,EAAPA,QAAO,GAAG,EADN;AAEJyB,MAAAA,gBAAgB,GAAG,IAFf;AAGJC,MAAAA,wBAAwB,GAAG;AAHvB,QAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;AAMA,SAAKG,KAAL,GAAa;AACXC,MAAAA,uBAAuB,EAAE,EADd;AAEX5B,MAAAA,OAAO,EAAPA,QAFW;AAGX6B,MAAAA,qBAAqB,EAAE,EAHZ;AAIXC,MAAAA,YAAY,EAAE,EAJH;AAKXL,MAAAA,gBALW;AAMXC,MAAAA,wBANW;AAOXK,MAAAA,UAAU,EAAE,IAPD;AAQX5B,MAAAA,IAAI,EAAE;AARK,KAAb;AAUD;;AAED6B,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEV,MAAAA;AAAF,QAAa,KAAKzB,KAAxB;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,QAA0D,KAAKC,KAArE;;AACA,QAAIH,MAAM,KAAKS,SAAS,CAACT,MAAzB,EAAiC;AAC/B,WAAKW,gBAAL;AACD,KAFD,MAEO,IACLnC,OAAO,KAAKkC,SAAS,CAAClC,OAAtB,IACAyB,gBAAgB,KAAKS,SAAS,CAACT,gBAD/B,IAEAC,wBAAwB,KAAKQ,SAAS,CAACR,wBAHlC,EAIL;AACA,UACEF,MAAM,IAAI,IAAV,IACAxB,OAAO,KAAKwB,MAAM,CAACxB,OADnB,IAEAyB,gBAAgB,KAAKD,MAAM,CAACC,gBAF5B,IAGAC,wBAAwB,KAAKF,MAAM,CAACE,wBAJtC,EAKE;AACA,aAAKU,UAAL;AACD;AACF;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAK9B,MAAL,CAAY+B,MAAZ;AACD;;AAED5B,EAAAA,kBAAkB,CAAC6B,KAAD,EAAQ;AACxB,QAAMT,YAAY,GAAGS,KAAK,CAACC,MAAN,CAAaC,KAAlC;AACA,SAAKC,QAAL,CAAc;AAAEZ,MAAAA;AAAF,KAAd;;AACA,QAAI,CAACA,YAAL,EAAmB;AACjB,WAAKvB,MAAL,CAAY+B,MAAZ;AACA,WAAKK,cAAL;AACA;AACD;;AACD,SAAKpC,MAAL,CAAYuB,YAAZ;AACD;;AAEDZ,EAAAA,mBAAmB,GAAG;AACpB,SAAKwB,QAAL,CAAc;AAAA,UAAC;AAAEvC,QAAAA;AAAF,OAAD;AAAA,aAAe;AAC3BA,QAAAA,IAAI,EACFA,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC,SAAzB,GAAqC,IAArC,GAA4ClC,UAAU,CAACiC,IAAX,CAAgBC;AAFnC,OAAf;AAAA,KAAd;AAID;;AAEDa,EAAAA,oBAAoB,GAAG;AACrB,SAAKuB,QAAL,CAAc;AAAA,UAAC;AAAEvC,QAAAA;AAAF,OAAD;AAAA,aAAe;AAC3BA,QAAAA,IAAI,EACFA,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBuC,UAAzB,GAAsC,IAAtC,GAA6CxE,UAAU,CAACiC,IAAX,CAAgBuC;AAFpC,OAAf;AAAA,KAAd;AAID;;AAEDD,EAAAA,cAAc,GAAG;AACf,SAAKD,QAAL,CAAc;AAAEd,MAAAA,uBAAuB,EAAE,EAA3B;AAA+BC,MAAAA,qBAAqB,EAAE;AAAtD,KAAd;AACD;;AAEDtB,EAAAA,MAAM,CAACuB,YAAD,EAAe;AACnB,QAAM9B,OAAO,GAAG,KAAK6C,yBAAL,EAAhB;AACA,QAAMC,cAAc,GAAG,EAAvB;AACA,QAAIC,UAAU,GAAG,IAAjB;;AACA,SAAK,IAAIxD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,OAAO,CAACd,MAA5B,EAAoCK,CAAC,IAAI,CAAzC,EAA4C;AAC1C,UAAMI,MAAM,GAAGK,OAAO,CAACT,CAAD,CAAtB;;AACA,UAAII,MAAM,CAACjB,IAAP,CAAYsE,WAAZ,GAA0BxD,QAA1B,CAAmCsC,YAAY,CAACkB,WAAb,EAAnC,CAAJ,EAAoE;AAClE,YAAID,UAAU,IAAI,IAAlB,EAAwB;AACtBA,UAAAA,UAAU,GAAGxD,CAAb;AACD;;AACDuD,QAAAA,cAAc,CAACG,IAAf,CAAoB,CAAC1D,CAAD,EAAIA,CAAJ,CAApB;AACD;AACF;;AACD,SAAKmD,QAAL,CAAc;AAAEd,MAAAA,uBAAuB,EAAEkB;AAA3B,KAAd;;AAEA,QAAIA,cAAc,CAAC5D,MAAf,GAAwB,CAAxB,IAA6B,KAAKmC,aAAL,CAAmB6B,OAApD,EAA6D;AAC3D,WAAK7B,aAAL,CAAmB6B,OAAnB,CAA2BC,YAA3B,CAAwCJ,UAAxC;AACD;AACF;;AAEDlC,EAAAA,eAAe,CAACuC,CAAD,EAAI;AACjBrF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,iBAAV,EAA6BD,CAA7B;AAEAE,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,0BAAvC;AAEA,SAAKf,QAAL,CAAc;AAAEX,MAAAA,UAAU,EAAEqB,CAAC,CAACM;AAAhB,KAAd;AACD;;AAED5C,EAAAA,aAAa,CAACsC,CAAD,EAAI;AACfrF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,eAAV,EAA2BD,CAA3B;AAEAE,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,0BAA1C;AAEA,SAAKjB,QAAL,CAAc;AAAEX,MAAAA,UAAU,EAAE;AAAd,KAAd;AAEA,QAAM;AAAE6B,MAAAA,WAAF;AAAeF,MAAAA;AAAf,QAA0BN,CAAhC;;AACA,QAAIQ,WAAW,IAAI,IAAf,IAAuBF,MAAM,IAAI,IAArC,EAA2C;AACzC;AACD,KAVc,CAYf;AACA;;;AACA,QAAIE,WAAW,CAACC,WAAZ,KAA4B1F,iBAAhC,EAAmD;AACjD,WAAKuE,QAAL,CAAc,WAAwC;AAAA,YAAvC;AAAEb,UAAAA,qBAAF;AAAyB7B,UAAAA;AAAzB,SAAuC;AACpD,YAAM8D,UAAU,GAAG,CAAC,GAAG9D,OAAJ,CAAnB;AACA5C,QAAAA,SAAS,CAAC2G,OAAV,CAAkBD,UAAlB,EAA8BjC,qBAA9B,EAAqD,EAArD,EAAyD,CAAzD;AACA,eAAO;AACL7B,UAAAA,OAAO,EAAE8D,UADJ;AAELlC,UAAAA,uBAAuB,EAAE,EAFpB;AAGLC,UAAAA,qBAAqB,EAAE;AAHlB,SAAP;AAKD,OARD;AASA;AACD,KAzBc,CA2Bf;;;AACA,QAAMmC,UAAU,GAAGN,MAAM,CAACG,WAAP,KAAuB3F,eAA1C;AACA,QAAI+F,gBAAgB,GAAGL,WAAW,CAAC3E,KAAnC;;AACA,QAAI+E,UAAU,IAAIN,MAAM,CAACzE,KAAP,GAAe2E,WAAW,CAAC3E,KAA7C,EAAoD;AAClD;AACA;AACA;AACAgF,MAAAA,gBAAgB,IAAI,CAApB;AACD;;AACD,SAAKvB,QAAL,CACE,WAAiE;AAAA,UAAhE;AAAE1C,QAAAA,OAAF;AAAW4B,QAAAA,uBAAX;AAAoCC,QAAAA;AAApC,OAAgE;AAC/D,UAAMiC,UAAU,GAAG,CAAC,GAAG9D,OAAJ,CAAnB;AACA,UAAMkE,WAAW,GAAGF,UAAU,GAC1BF,UAD0B,GAE1B,KAAKjB,yBAAL,GAAiCsB,GAAjC,CAAqCC,CAAC,IAAIA,CAAC,CAAC1F,IAA5C,CAFJ;AAGA,UAAM2F,YAAY,GAAGL,UAAU,GAC3BnC,qBAD2B,GAE3BD,uBAFJ;AAGA,UAAM0C,YAAY,GAAGlH,SAAS,CAAC2G,OAAV,CACnBG,WADmB,EAEnBG,YAFmB,EAGnBP,UAHmB,EAInBG,gBAJmB,CAArB,CAR+D,CAe/D;;AACA,UAAM9E,WAAW,GAAG6E,UAAU,GAC1B5G,SAAS,CAACmH,sBAAV,CACEN,gBADF,EAEEpC,qBAFF,CAD0B,GAK1BoC,gBALJ;AAMA,UAAMO,iBAAiB,GAAG,CACxB,CAACrF,WAAD,EAAcA,WAAW,GAAGmF,YAAY,CAACpF,MAA3B,GAAoC,CAAlD,CADwB,CAA1B;AAGA,aAAO;AACLc,QAAAA,OAAO,EAAE8D,UADJ;AAELlC,QAAAA,uBAAuB,EAAE,EAFpB;AAGLC,QAAAA,qBAAqB,EAAE2C;AAHlB,OAAP;AAKD,KA/BH;AAiCA,SAAK7B,cAAL;AACD;;AAEDhC,EAAAA,qBAAqB,CAAC8D,SAAD,EAAY;AAC/B1G,IAAAA,GAAG,CAACsF,KAAJ,CAAU,uBAAV;AAEA,SAAKX,QAAL,CAAc;AAAA,UAAC;AAAE1C,QAAAA;AAAF,OAAD;AAAA,aAAkB;AAC9BA,QAAAA,OAAO,EAAE5B,UAAU,CAACU,YAAX,CAAwBkB,OAAxB,EAAiC,CACxC,KAAK6C,yBAAL,GAAiC4B,SAAjC,EAA4C/F,IADJ,CAAjC,CADqB;AAI9BkD,QAAAA,uBAAuB,EAAE,EAJK;AAK9BC,QAAAA,qBAAqB,EAAE;AALO,OAAlB;AAAA,KAAd;AAOD;;AAEDjB,EAAAA,8BAA8B,CAACgB,uBAAD,EAA0B;AACtD7D,IAAAA,GAAG,CAAC2G,MAAJ,CAAW,gCAAX,EAA6C9C,uBAA7C;AACA,SAAKc,QAAL,CACE,WAA+D;AAAA,UAA9D;AAAEd,QAAAA,uBAAuB,EAAE+C;AAA3B,OAA8D;;AAC7D,UAAI/C,uBAAuB,KAAK+C,4BAAhC,EAA8D;AAC5D,eAAO,IAAP;AACD;;AAED,aAAO;AAAE/C,QAAAA,uBAAF;AAA2BC,QAAAA,qBAAqB,EAAE;AAAlD,OAAP;AACD,KAPH;AASD;;AAEDd,EAAAA,4BAA4B,CAACc,qBAAD,EAAwB;AAClD9D,IAAAA,GAAG,CAAC2G,MAAJ,CAAW,6BAAX,EAA0C7C,qBAA1C;AACA,SAAKa,QAAL,CAAc,WAA2D;AAAA,UAA1D;AAAEb,QAAAA,qBAAqB,EAAE+C;AAAzB,OAA0D;;AACvE,UAAI/C,qBAAqB,KAAK+C,0BAA9B,EAA0D;AACxD,eAAO,IAAP;AACD;;AAED,aAAO;AAAE/C,QAAAA,qBAAF;AAAyBD,QAAAA,uBAAuB,EAAE;AAAlD,OAAP;AACD,KAND;AAOD;;AAEDnB,EAAAA,mBAAmB,CAACxB,KAAD,EAAQ;AACzB,SAAKyD,QAAL,CAAc,WAAiB;AAAA,UAAhB;AAAE1C,QAAAA;AAAF,OAAgB;AAC7B,UAAM8D,UAAU,GAAG9D,OAAO,CAAC6E,KAAR,EAAnB;AACAf,MAAAA,UAAU,CAACrE,MAAX,CAAkBR,KAAlB,EAAyB,CAAzB;AACA,aAAO;AAAEe,QAAAA,OAAO,EAAE8D;AAAX,OAAP;AACD,KAJD;AAKD;;AAED9C,EAAAA,4BAA4B,GAAG;AAC7B,SAAK0B,QAAL,CAAc;AAAA,UAAC;AAAEjB,QAAAA;AAAF,OAAD;AAAA,aAA2B;AACvCA,QAAAA,gBAAgB,EAAE,CAACA;AADoB,OAA3B;AAAA,KAAd;AAGD;;AAEDR,EAAAA,oCAAoC,GAAG;AACrC,SAAKyB,QAAL,CAAc;AAAA,UAAC;AAAEhB,QAAAA;AAAF,OAAD;AAAA,aAAmC;AAC/CA,QAAAA,wBAAwB,EAAE,CAACA;AADoB,OAAnC;AAAA,KAAd;AAGD;;AAEDS,EAAAA,gBAAgB,GAAG;AACjB,QAAM;AAAEX,MAAAA;AAAF,QAAa,KAAKzB,KAAxB;AACA,QAAM;AACJC,MAAAA,OAAO,GAAG,EADN;AAEJyB,MAAAA,gBAAgB,GAAG,IAFf;AAGJC,MAAAA,wBAAwB,GAAG;AAHvB,QAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;AAKA,SAAKkB,QAAL,CAAc;AAAE1C,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,KAAd;AACD;;AAEDU,EAAAA,UAAU,GAAG;AACX,QAAM;AAAE0C,MAAAA;AAAF,QAAe,KAAK/E,KAA1B;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,QAA0D,KAAKC,KAArE;AACAmD,IAAAA,QAAQ,CAAC;AACP9E,MAAAA,OADO;AAEPyB,MAAAA,gBAFO;AAGPC,MAAAA;AAHO,KAAD,CAAR;AAKD;;AAgBDqD,EAAAA,mBAAmB,GAAG;AACpB,QAAM;AAAEC,MAAAA;AAAF,QAAY,KAAKjF,KAAvB;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAW8B,MAAAA;AAAX,QAA4B,KAAKH,KAAvC;AACA,QAAM;AAAEsD,MAAAA;AAAF,QAAsBD,KAA5B;AAEA,WAAO,KAAKE,yBAAL,CACLD,eADK,EAELjF,OAFK,EAGL8B,YAHK,CAAP;AAKD;;AAEDe,EAAAA,yBAAyB,GAAG;AAC1B,QAAM;AAAE1C,MAAAA;AAAF,QAAW,KAAKwB,KAAtB;AACA,QAAM3B,OAAO,GAAG,KAAK+E,mBAAL,EAAhB;AACA,WAAO,KAAKI,sBAAL,CAA4BnF,OAA5B,EAAqCG,IAArC,CAAP;AACD;;AAEDiB,EAAAA,iBAAiB,SAA8C;AAAA,QAA7C;AAAE9C,MAAAA,IAAF;AAAQmG,MAAAA,SAAR;AAAmBlG,MAAAA,OAAnB;AAA4BC,MAAAA;AAA5B,KAA6C;AAC7D,QAAM4G,MAAM,GAAG7G,OAAO,GAAG,EAAH,GAAQ,eAAe8G,MAAf,CAAsBZ,SAAtB,CAA9B;AACA,QAAMhG,IAAI,aAAM2G,MAAN,SAAe9G,IAAf,CAAV;AACA,QAAMK,SAAS,GAAGJ,OAAO,aAAMC,aAAN,IAAwB,IAAjD;AACA,QAAMI,SAAS,GAAGL,OAAO,GAAG,sBAAH,GAA4B,EAArD;AACA,wBACE,0CACGpB,iBAAiB,CAAC0B,cAAlB,CAAiC;AAAEJ,MAAAA,IAAF;AAAQE,MAAAA,SAAR;AAAmBC,MAAAA;AAAnB,KAAjC,CADH,EAEG,CAACL,OAAD,iBACC,oBAAC,SAAD;AACE,MAAA,SAAS,EAAC,4DADZ;AAEE,MAAA,OAAO,EAAE,MAAM,KAAKkC,mBAAL,CAAyBgE,SAAzB;AAFjB,oBAIE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAElH;AAAvB,MAJF,CAHJ,CADF;AAaD;;AAED+H,EAAAA,MAAM,GAAG;AACP,QAAM;AACJtF,MAAAA,OADI;AAEJ+B,MAAAA,UAFI;AAGJD,MAAAA,YAHI;AAIJD,MAAAA,qBAJI;AAKJD,MAAAA,uBALI;AAMJH,MAAAA,gBANI;AAOJC,MAAAA,wBAPI;AAQJvB,MAAAA;AARI,QASF,KAAKwB,KATT;AAWA,QAAM4D,gBAAgB,GAAG,KAAK1C,yBAAL,EAAzB;AACA,QAAI2C,eAAe,GAAGxF,OAAO,CAACd,MAAR,GAAiB/B,iBAAiB,CAACsI,kBAAzD;;AACA,QAAI,CAAA1D,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAE8B,WAAZ,MAA4B1F,iBAAhC,EAAmD;AACjDqH,MAAAA,eAAe,IAAIrI,iBAAiB,CAACsI,kBAArC;AACD;;AACD,QAAMC,oBAAoB,GACxBH,gBAAgB,CAACrG,MAAjB,GAA0B/B,iBAAiB,CAACsI,kBAA5C,GAAiE,EADnE;AAEA,QAAME,oBAAoB,GAAGC,IAAI,CAACC,GAAL,CAC3B,IAAI1I,iBAAiB,CAACsI,kBADK,EAE3BC,oBAF2B,CAA7B;AAKA,wBACE;AACE,MAAA,IAAI,EAAC,MADP;AAEE,MAAA,SAAS,EAAE9I,UAAU,CAAC,aAAD,EAAgB;AACnC,uBAAemF,UAAU,IAAI;AADM,OAAhB,CAFvB;AAKE,MAAA,QAAQ,EAAC;AALX,oBAOE,oBAAC,eAAD;AACE,MAAA,SAAS,EAAE,KAAKjB,aADlB;AAEE,MAAA,WAAW,EAAE,KAAKD;AAFpB,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,kBADF,EAEGb,OAAO,CAACd,MAAR,KAAmB,CAAnB,iBACC,oBAAC,SAAD;AAAW,MAAA,cAAc,MAAzB;AAA0B,MAAA,WAAW,EAAC;AAAtC,OACG,CAAC4G,QAAD,EAAWC,QAAX,kBACC;AACE,MAAA,SAAS,EAAEnJ,UAAU,CAAC,aAAD,EAAgB,YAAhB,EAA8B;AACjD,iCAAyBmJ,QAAQ,CAACC,oBADe;AAEjD,4BAAoBD,QAAQ,CAACE,cAFoB;AAGjD,uBAAeF,QAAQ,CAACG;AAHyB,OAA9B,CADvB;AAME,MAAA,GAAG,EAAEJ,QAAQ,CAACK,QANhB,CAOE;;AAPF,OAQML,QAAQ,CAACM,cARf,oFAFJ,CAHJ,EAqBGpG,OAAO,CAACd,MAAR,GAAiB,CAAjB,iBACC,oBAAC,iBAAD;AACE,MAAA,qBAAqB,EAAC,mCADxB;AAEE,MAAA,eAAe,EAAEhB,eAFnB;AAGE,MAAA,WAAW,EAAEA,eAHf;AAIE,MAAA,SAAS,EAAE8B,OAAO,CAACd,MAJrB;AAKE,MAAA,KAAK,EAAEc,OALT;AAME,MAAA,MAAM,EAAE,CANV;AAOE,MAAA,iBAAiB,EAAE,KAAKe,4BAP1B;AAQE,MAAA,GAAG,EAAE,KAAKQ,WARZ;AASE,MAAA,UAAU,EAAE,KAAKH,iBATnB;AAUE,MAAA,cAAc,EAAES,qBAVlB;AAWE,MAAA,KAAK,EAAE;AAAEwE,QAAAA,MAAM,EAAEb;AAAV,OAXT;AAYE,MAAA,aAAa;AAZf,MAtBJ,CAJF,eA0CE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oCADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,WAAD;AACE,MAAA,SAAS,EAAC,OADZ;AAEE,MAAA,KAAK,EAAE1D,YAFT;AAGE,MAAA,UAAU,EACRA,YAAY,GAAGF,uBAAuB,CAAC1C,MAA3B,GAAoC,IAJpD;AAME,MAAA,WAAW,EAAC,gBANd;AAOE,MAAA,QAAQ,EAAE,KAAKwB;AAPjB,MADF,eAUE,oBAAC,SAAD;AACE,MAAA,SAAS,EAAE9D,UAAU,CAAC,wBAAD,EAA2B;AAC9C0J,QAAAA,MAAM,EAAEnG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC;AADa,OAA3B,CADvB;AAIE,MAAA,OAAO,EAAE,KAAKY;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,yBAPF,CAVF,eAmBE,oBAAC,SAAD;AACE,MAAA,SAAS,EAAEZ,UAAU,CAAC,wBAAD,EAA2B;AAC9C0J,QAAAA,MAAM,EAAEnG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBuC;AADa,OAA3B,CADvB;AAIE,MAAA,OAAO,EAAE,KAAKzB;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,0BAPF,CAnBF,CAFF,eA+BE,oBAAC,iBAAD;AACE,MAAA,SAAS,EAAC,mCADZ;AAEE,MAAA,eAAe,EAAEU,iBAFnB;AAGE,MAAA,WAAW,EAAEA,iBAHf;AAIE,MAAA,SAAS,EAAEoH,gBAAgB,CAACrG,MAJ9B;AAKE,MAAA,KAAK,EAAEqG,gBALT;AAME,MAAA,UAAU,EAAEnH,UAAU,CAACC,YANzB;AAOE,MAAA,MAAM,EAAE,CAPV;AAQE,MAAA,QAAQ,EAAE,KAAKsC,qBARjB;AASE,MAAA,iBAAiB,EAAE,KAAKC,8BAT1B;AAUE,MAAA,GAAG,EAAE,KAAKS,aAVZ;AAWE,MAAA,cAAc,EAAEO,uBAXlB;AAYE,MAAA,KAAK,EAAE;AACL2E,QAAAA,SAAS,EAAEb,oBADN;AAELc,QAAAA,SAAS,EAAEb;AAFN,OAZT;AAgBE,MAAA,cAAc,EAAE,CAAA5D,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAE8B,WAAZ,MAA4B3F,eAhB9C;AAiBE,MAAA,aAAa;AAjBf,MA/BF,eAkDE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,eADF,eAEE,oBAAC,QAAD;AACE,MAAA,OAAO,EAAEuD,gBADX;AAEE,MAAA,QAAQ,EAAE,KAAKT;AAFjB,sBAFF,eAQE,oBAAC,QAAD;AACE,MAAA,OAAO,EAAEU,wBADX;AAEE,MAAA,QAAQ,EAAE,KAAKT;AAFjB,gCARF,CAlDF,CA1CF,CAPF,CADF;AAuHD;;AAjgBgC;;gBAA7B7C,U,UACUqI,MAAM,CAACC,MAAP,CAAc;AAC1BpG,EAAAA,SAAS,EAAE,WADe;AAE1BsC,EAAAA,UAAU,EAAE;AAFc,CAAd,C;;AAmgBhBxE,UAAU,CAACuI,SAAX,GAAuB;AACrB3B,EAAAA,KAAK,EAAEnI,SAAS,CAAC+J,UAAV,CAAqB/I,aAArB,EAAoCgJ,UADtB;AAErB/B,EAAAA,QAAQ,EAAEjI,SAAS,CAACiK,IAFC;AAGrBtF,EAAAA,MAAM,EAAE3E,SAAS,CAACkK,KAAV,CAAgB;AACtB/G,IAAAA,OAAO,EAAEnD,SAAS,CAACmK,OAAV,CAAkBnK,SAAS,CAACoK,MAA5B,CADa;AAEtBxF,IAAAA,gBAAgB,EAAE5E,SAAS,CAACqK,IAFN;AAGtBxF,IAAAA,wBAAwB,EAAE7E,SAAS,CAACqK;AAHd,GAAhB;AAHa,CAAvB;AAUA9I,UAAU,CAAC+I,YAAX,GAA0B;AACxB3F,EAAAA,MAAM,EAAE,IADgB;AAExBsD,EAAAA,QAAQ,EAAE,MAAM,CAAE;AAFM,CAA1B;AAKA,eAAe1G,UAAf","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport {\n ButtonOld,\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './RollupRows.scss';\nimport IrisGridModel from '../IrisGridModel';\nimport TableUtils from '../TableUtils';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nclass RollupRows extends Component {\n static SORT = Object.freeze({\n ASCENDING: 'ASCENDING',\n DESCENDING: 'DESCENDING',\n });\n\n static renderColumn({ item, isClone, selectedCount }) {\n const text = item && item.name;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings,\n newGroupings,\n index = currentGroupings.length\n ) {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column) {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props) {\n super(props);\n\n this.search = debounce(this.search.bind(this), DEBOUNCE_SEARCH);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount() {\n this.search.cancel();\n }\n\n handleSearchChange(event) {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING,\n }));\n }\n\n handleSortDescending() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING,\n }));\n }\n\n resetSelection() {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search(searchFilter) {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }\n\n handleDragStart(e) {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e) {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex) {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges) {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges) {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index) {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange() {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange() {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig() {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange() {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n });\n }\n\n getCachedUngroupedColumns = memoize((columns, groupedColumns) =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n !groupedColumns.find(name => name === column.name)\n )\n );\n\n getCachedSortedColumns = memoize((columns, sort) =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns() {\n const { model } = this.props;\n const { columns, searchFilter } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(\n originalColumns,\n columns,\n searchFilter\n );\n }\n\n getSortedUngroupedColumns() {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({ item, itemIndex, isClone, selectedCount }) {\n const indent = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!isClone && (\n <ButtonOld\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </ButtonOld>\n )}\n </>\n );\n }\n\n render() {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex=\"0\"\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable isDragDisabled droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : null\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <ButtonOld\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </ButtonOld>\n <ButtonOld\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </ButtonOld>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nRollupRows.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onChange: PropTypes.func,\n config: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n }),\n};\n\nRollupRows.defaultProps = {\n config: null,\n onChange: () => {},\n};\n\nexport default RollupRows;\n"],"file":"RollupRows.js"}
|
|
@@ -43,7 +43,7 @@ class SelectDistinctBuilder extends Component {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
handleAddColumnClick() {
|
|
46
|
-
this.setState(_ref => {
|
|
46
|
+
this.setState((_ref) => {
|
|
47
47
|
var {
|
|
48
48
|
inputs: prevInputs
|
|
49
49
|
} = _ref;
|
|
@@ -54,7 +54,7 @@ class SelectDistinctBuilder extends Component {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
handleDeleteColumn(index) {
|
|
57
|
-
this.setState(_ref2 => {
|
|
57
|
+
this.setState((_ref2) => {
|
|
58
58
|
var {
|
|
59
59
|
inputs
|
|
60
60
|
} = _ref2;
|
|
@@ -69,7 +69,7 @@ class SelectDistinctBuilder extends Component {
|
|
|
69
69
|
var {
|
|
70
70
|
value
|
|
71
71
|
} = event.target;
|
|
72
|
-
this.setState(_ref3 => {
|
|
72
|
+
this.setState((_ref3) => {
|
|
73
73
|
var {
|
|
74
74
|
inputs: prevInputs
|
|
75
75
|
} = _ref3;
|
|
@@ -87,12 +87,12 @@ class SelectDistinctBuilder extends Component {
|
|
|
87
87
|
inputs
|
|
88
88
|
} = this.state;
|
|
89
89
|
return inputs.map((value, index) => {
|
|
90
|
-
var options = columns.filter(_ref4 => {
|
|
90
|
+
var options = columns.filter((_ref4) => {
|
|
91
91
|
var {
|
|
92
92
|
name
|
|
93
93
|
} = _ref4;
|
|
94
94
|
return name === value || !inputs.includes(name);
|
|
95
|
-
}).map(_ref5 => {
|
|
95
|
+
}).map((_ref5) => {
|
|
96
96
|
var {
|
|
97
97
|
name
|
|
98
98
|
} = _ref5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sidebar/SelectDistinctBuilder.jsx"],"names":["React","Component","PropTypes","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Tooltip","Log","IrisGridModel","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,sBAAT,EAAiCC,OAAjC,QAAgD,kBAAhD;AACA,SAASC,OAAT,QAAwB,uBAAxB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,a;;AAIP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,uBAAX,CAAZ;;AAEA,MAAMC,qBAAN,SAAoCX,SAApC,CAA8C;AAC5CY,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BC,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBD,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKE,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BF,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,QAAM;AAAEG,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAmC,KAAKN,KAA9C;AAEA,SAAKO,KAAL,GAAa;AACXC,MAAAA,MAAM,EACJF,qBAAqB,CAACG,MAAtB,GAA+B,CAA/B,GAAmC,CAAC,GAAGH,qBAAJ,CAAnC,GAAgE,CAAC,EAAD,CAFvD;AAGXI,MAAAA,OAAO,EAAEL,KAAK,CAACM;AAHJ,KAAb;AAKD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEN,MAAAA;AAAF,QAAa,KAAKD,KAAxB;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAe,KAAKf,KAA1B;;AACA,QAAIc,SAAS,CAACN,MAAV,KAAqBA,MAAzB,EAAiC;AAC/B,UAAMQ,cAAc,GAAGR,MAAM,CAACS,MAAP,CAAcC,GAAG,IAAIA,GAAG,KAAK,EAA7B,CAAvB;;AACA,UACE,CAAC7B,SAAS,CACRyB,SAAS,CAACN,MAAV,CAAiBS,MAAjB,CAAwBC,GAAG,IAAIA,GAAG,KAAK,EAAvC,CADQ,EAERF,cAFQ,CADZ,EAKE;AACAD,QAAAA,QAAQ,CAACC,cAAD,CAAR;AACD;AACF;AACF;;AAEDf,EAAAA,oBAAoB,GAAG;AACrB,SAAKkB,QAAL,CAAc;AAAA,UAAC;AAAEX,QAAAA,MAAM,EAAEY;AAAV,OAAD;AAAA,aAA6B;AACzCZ,QAAAA,MAAM,EAAE,CAAC,GAAGY,UAAJ,EAAgB,EAAhB;AADiC,OAA7B;AAAA,KAAd;AAGD;;AAEDjB,EAAAA,kBAAkB,CAACkB,KAAD,EAAQ;AACxB,SAAKF,QAAL,CAAc;AAAA,UAAC;AAAEX,QAAAA;AAAF,OAAD;AAAA,aAAiB;AAC7BA,QAAAA,MAAM,EACJA,MAAM,CAACC,MAAP,KAAkB,CAAlB,IAAuBY,KAAK,KAAK,CAAjC,GACI,CAAC,EAAD,CADJ,GAEIb,MAAM,CAACS,MAAP,CAAc,CAACK,KAAD,EAAQC,UAAR,KAAuBF,KAAK,KAAKE,UAA/C;AAJuB,OAAjB;AAAA,KAAd;AAMD;;AAEDnB,EAAAA,qBAAqB,CAACiB,KAAD,EAAQG,KAAR,EAAe;AAClC5B,IAAAA,GAAG,CAAC6B,KAAJ,CAAU,uBAAV,EAAmCJ,KAAnC,EAA0CG,KAA1C;AACA,QAAM;AAAEE,MAAAA;AAAF,QAAYF,KAAK,CAACG,MAAxB;AACA,SAAKR,QAAL,CAAc,
|
|
1
|
+
{"version":3,"sources":["../../src/sidebar/SelectDistinctBuilder.jsx"],"names":["React","Component","PropTypes","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Tooltip","Log","IrisGridModel","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,sBAAT,EAAiCC,OAAjC,QAAgD,kBAAhD;AACA,SAASC,OAAT,QAAwB,uBAAxB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,a;;AAIP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,uBAAX,CAAZ;;AAEA,MAAMC,qBAAN,SAAoCX,SAApC,CAA8C;AAC5CY,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BC,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBD,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKE,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BF,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,QAAM;AAAEG,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAmC,KAAKN,KAA9C;AAEA,SAAKO,KAAL,GAAa;AACXC,MAAAA,MAAM,EACJF,qBAAqB,CAACG,MAAtB,GAA+B,CAA/B,GAAmC,CAAC,GAAGH,qBAAJ,CAAnC,GAAgE,CAAC,EAAD,CAFvD;AAGXI,MAAAA,OAAO,EAAEL,KAAK,CAACM;AAHJ,KAAb;AAKD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEN,MAAAA;AAAF,QAAa,KAAKD,KAAxB;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAe,KAAKf,KAA1B;;AACA,QAAIc,SAAS,CAACN,MAAV,KAAqBA,MAAzB,EAAiC;AAC/B,UAAMQ,cAAc,GAAGR,MAAM,CAACS,MAAP,CAAcC,GAAG,IAAIA,GAAG,KAAK,EAA7B,CAAvB;;AACA,UACE,CAAC7B,SAAS,CACRyB,SAAS,CAACN,MAAV,CAAiBS,MAAjB,CAAwBC,GAAG,IAAIA,GAAG,KAAK,EAAvC,CADQ,EAERF,cAFQ,CADZ,EAKE;AACAD,QAAAA,QAAQ,CAACC,cAAD,CAAR;AACD;AACF;AACF;;AAEDf,EAAAA,oBAAoB,GAAG;AACrB,SAAKkB,QAAL,CAAc;AAAA,UAAC;AAAEX,QAAAA,MAAM,EAAEY;AAAV,OAAD;AAAA,aAA6B;AACzCZ,QAAAA,MAAM,EAAE,CAAC,GAAGY,UAAJ,EAAgB,EAAhB;AADiC,OAA7B;AAAA,KAAd;AAGD;;AAEDjB,EAAAA,kBAAkB,CAACkB,KAAD,EAAQ;AACxB,SAAKF,QAAL,CAAc;AAAA,UAAC;AAAEX,QAAAA;AAAF,OAAD;AAAA,aAAiB;AAC7BA,QAAAA,MAAM,EACJA,MAAM,CAACC,MAAP,KAAkB,CAAlB,IAAuBY,KAAK,KAAK,CAAjC,GACI,CAAC,EAAD,CADJ,GAEIb,MAAM,CAACS,MAAP,CAAc,CAACK,KAAD,EAAQC,UAAR,KAAuBF,KAAK,KAAKE,UAA/C;AAJuB,OAAjB;AAAA,KAAd;AAMD;;AAEDnB,EAAAA,qBAAqB,CAACiB,KAAD,EAAQG,KAAR,EAAe;AAClC5B,IAAAA,GAAG,CAAC6B,KAAJ,CAAU,uBAAV,EAAmCJ,KAAnC,EAA0CG,KAA1C;AACA,QAAM;AAAEE,MAAAA;AAAF,QAAYF,KAAK,CAACG,MAAxB;AACA,SAAKR,QAAL,CAAc,WAA4B;AAAA,UAA3B;AAAEX,QAAAA,MAAM,EAAEY;AAAV,OAA2B;AACxC,UAAMZ,MAAM,GAAG,CAAC,GAAGY,UAAJ,CAAf;AACAZ,MAAAA,MAAM,CAACa,KAAD,CAAN,GAAgBK,KAAhB;AACA,aAAO;AAAElB,QAAAA;AAAF,OAAP;AACD,KAJD;AAKD;;AAEDoB,EAAAA,YAAY,GAAG;AACb,QAAM;AAAElB,MAAAA,OAAF;AAAWF,MAAAA;AAAX,QAAsB,KAAKD,KAAjC;AAEA,WAAOC,MAAM,CAACqB,GAAP,CAAW,CAACH,KAAD,EAAQL,KAAR,KAAkB;AAClC,UAAMS,OAAO,GAAGpB,OAAO,CACpBO,MADa,CACN;AAAA,YAAC;AAAEc,UAAAA;AAAF,SAAD;AAAA,eAAcA,IAAI,KAAKL,KAAT,IAAkB,CAAClB,MAAM,CAACwB,QAAP,CAAgBD,IAAhB,CAAjC;AAAA,OADM,EAEbF,GAFa,CAET;AAAA,YAAC;AAAEE,UAAAA;AAAF,SAAD;AAAA,4BACH;AAAQ,UAAA,KAAK,EAAEA,IAAf;AAAqB,UAAA,GAAG,EAAEA;AAA1B,WACGA,IADH,CADG;AAAA,OAFS,CAAhB;AAOA;AAAA;AACE;AACA;AAAK,UAAA,SAAS,EAAC,uBAAf;AAAuC,UAAA,GAAG,EAAEV;AAA5C,wBACE;AACE,UAAA,SAAS,EAAC,gCADZ;AAEE,UAAA,KAAK,EAAEK,KAFT;AAGE,UAAA,QAAQ,EAAEF,KAAK,IAAI,KAAKpB,qBAAL,CAA2BiB,KAA3B,EAAkCG,KAAlC;AAHrB,wBAKE;AAAQ,UAAA,KAAK,EAAC;AAAd,6BALF,EAMGM,OANH,CADF,EAUG,CAACtB,MAAM,CAACC,MAAP,GAAgB,CAAhB,IAAqBiB,KAAK,KAAK,EAAhC,kBACC;AACE,UAAA,IAAI,EAAC,QADP;AAEE,UAAA,SAAS,EAAC,sCAFZ;AAGE,UAAA,OAAO,EAAE,MAAM;AACb,iBAAKvB,kBAAL,CAAwBkB,KAAxB;AACD;AALH,wBAOE,oBAAC,OAAD,wBAPF,eAQE,oBAAC,eAAD;AAAiB,UAAA,IAAI,EAAE7B,OAAvB;AAAgC,UAAA,SAAS,EAAC;AAA1C,UARF,CAXJ;AAFF;AA0BD,KAlCM,CAAP;AAmCD;;AAEDyC,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEvB,MAAAA,OAAF;AAAWF,MAAAA;AAAX,QAAsB,KAAKD,KAAjC;AACA,QAAM2B,gBAAgB,GAAG1B,MAAM,CAACC,MAAP,IAAiBC,OAAO,CAACD,MAAlD;AACA,wBACE;AACE,MAAA,IAAI,EAAC,cADP;AAEE,MAAA,SAAS,EAAC;AAFZ,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oCAJF,EAMG,KAAKmB,YAAL,EANH,eAQE,+BARF,eAUE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,6BAFZ;AAGE,MAAA,OAAO,EAAE,KAAK3B,oBAHhB;AAIE,MAAA,QAAQ,EAAEiC;AAJZ,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE3C;AAAvB,MANF,0BADF,CAVF,eAsBE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,uEAC+D,GAD/D,eAEE;AAAM,MAAA,SAAS,EAAC;AAAhB,oCAFF,kGADF,CAtBF,CADF;AAmCD;;AAxI2C;;AA2I9CO,qBAAqB,CAACqC,SAAtB,GAAkC;AAChC9B,EAAAA,KAAK,EAAEjB,SAAS,CAACgD,UAAV,CAAqBzC,aAArB,EAAoC0C,UADX;AAEhC/B,EAAAA,qBAAqB,EAAElB,SAAS,CAACkD,OAAV,CAAkBlD,SAAS,CAACmD,MAA5B,CAFS;AAGhCxB,EAAAA,QAAQ,EAAE3B,SAAS,CAACoD;AAHY,CAAlC;AAMA1C,qBAAqB,CAAC2C,YAAtB,GAAqC;AACnCnC,EAAAA,qBAAqB,EAAE,EADY;AAEnCS,EAAAA,QAAQ,EAAE,MAAM,CAAE;AAFiB,CAArC;AAKA,eAAejB,qBAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\n\nconst log = Log.module('SelectDistinctBuilder');\n\nclass SelectDistinctBuilder extends Component {\n constructor(props) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick() {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index) {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(index, event) {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs() {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n >\n <Tooltip>Delete column</Tooltip>\n <FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />\n </button>\n )}\n </div>\n );\n });\n }\n\n render() {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Additional Column\n </button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Modifies a table to show unique value from a column, same as{' '}\n <span className=\"inline-code-snippet\">\n selectDistinct("Column")\n </span>\n . Filters will be reset and the resulting table will contain only\n the selected columns above.\n </div>\n </div>\n </div>\n );\n }\n}\n\nSelectDistinctBuilder.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func,\n};\n\nSelectDistinctBuilder.defaultProps = {\n selectDistinctColumns: [],\n onChange: () => {},\n};\n\nexport default SelectDistinctBuilder;\n"],"file":"SelectDistinctBuilder.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":[],"mappings":";AAaA;IACE,oCAAkD;IAElD;;;;;MAKE;IAEF;;;;MAIE;IAEF;;;MAGE;IAEF,qCAAmC;IAEnC,4BAKC;IAED,wBAyBC;IAwDD,4BA2BC;IAED,8CAEC;IAED,wDAEC;IAED,sDAEC;IA7FD,2BAgDC;IAED,2BAEC;IA2CD,+BAkCC;
|
|
1
|
+
{"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":[],"mappings":";AAaA;IACE,oCAAkD;IAElD;;;;;MAKE;IAEF;;;;MAIE;IAEF;;;MAGE;IAEF,qCAAmC;IAEnC,4BAKC;IAED,wBAyBC;IAwDD,4BA2BC;IAED,8CAEC;IAED,wDAEC;IAED,sDAEC;IA7FD,2BAgDC;IAED,2BAEC;IA2CD,+BAkCC;CA8LF;;;;;;;;;;;;;;;QAgBkB,0CAAQ"}
|