@deephaven/iris-grid 0.6.1-fixed-deps.2 → 0.6.3-alpha.5
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/ColumnStatistics.css +5 -0
- package/dist/ColumnStatistics.css.map +1 -1
- package/dist/ColumnStatistics.d.ts +1 -0
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +26 -9
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/IrisGrid.css +2 -0
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +1 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -14
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +1 -1
- package/dist/IrisGridModel.d.ts +5 -0
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +9 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +4 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +26 -7
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTheme.module.css +2 -0
- package/dist/IrisGridTheme.module.css.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.js +1 -1
- package/dist/ToastBottomBar.js +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/memoizeClear.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +6 -2
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +8 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +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.d.ts +1 -1
- package/dist/sidebar/InputEditor.js +2 -2
- package/dist/sidebar/InputEditor.js.map +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/TableSaver.js +1 -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 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PendingDataBottomBar.tsx"],"names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","current","setTimeout","clearTimeout","undefined","pendingRowCount","commitIcon"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,OAA3B,EAAoCC,MAApC,EAA4CC,QAA5C,QAA4D,OAA5D;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,EAAiBC,SAAjB,QAAkC,kBAAlC;AACA,SAASC,MAAT,EAAiBC,cAAjB,QAAuC,uBAAvC;AACA,SAASC,WAAT,QAA4B,wBAA5B;OACOC,iB;;AAGP,IAAMC,YAAY,GAAG,IAArB;AAEA,IAAMC,qBAAqB,GAAG,CAA9B;AAiBA,OAAO,IAAMC,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/PendingDataBottomBar.tsx"],"names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","current","setTimeout","clearTimeout","undefined","pendingRowCount","commitIcon"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string;\n pendingDataErrors: Map<number, Error[]>;\n pendingDataMap: Map<number, { data: Map<number, { value: unknown }> }>;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport const PendingDataBottomBar = ({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element => {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(() => {\n if (prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n }, [errorMessage, isSaving, prevIsSaving]);\n\n useEffect(() => {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n }, [pendingDataMap]);\n\n useEffect(\n () => () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined,\n []\n );\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {!errorMessage && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n};\n\nexport default PendingDataBottomBar;\n"],"file":"PendingDataBottomBar.js"}
|
package/dist/TableUtils.js
CHANGED
package/dist/ToastBottomBar.js
CHANGED
|
@@ -3,7 +3,7 @@ import { usePrevious } from '@deephaven/react-hooks';
|
|
|
3
3
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
4
4
|
import "./PendingDataBottomBar.css";
|
|
5
5
|
var HIDE_TIMEOUT = 3000;
|
|
6
|
-
export var ToastBottomBar =
|
|
6
|
+
export var ToastBottomBar = _ref => {
|
|
7
7
|
var {
|
|
8
8
|
children = null,
|
|
9
9
|
onEntering,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ToastBottomBar.tsx"],"names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","ToastBottomBar","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,EAAwCC,MAAxC,EAAgDC,QAAhD,QAAgE,OAAhE;AACA,SAASC,WAAT,QAA4B,wBAA5B;OACOC,iB;;AAGP,IAAMC,YAAY,GAAG,IAArB;AAUA,OAAO,IAAMC,cAAc,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/ToastBottomBar.tsx"],"names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","ToastBottomBar","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,EAAwCC,MAAxC,EAAgDC,QAAhD,QAAgE,OAAhE;AACA,SAASC,WAAT,QAA4B,wBAA5B;OACOC,iB;;AAGP,IAAMC,YAAY,GAAG,IAArB;AAUA,OAAO,IAAMC,cAAc,GAAG,QAMU;AAAA,MANT;AAC7BC,IAAAA,QAAQ,GAAG,IADkB;AAE7BC,IAAAA,UAF6B;AAG7BC,IAAAA,SAH6B;AAI7BC,IAAAA,SAJ6B;AAK7BC,IAAAA;AAL6B,GAMS;AACtC,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBX,QAAQ,CAAC,KAAD,CAAtC;AACA,MAAMY,OAAO,GAAGb,MAAM,EAAtB;AACA,MAAMc,YAAY,GAAGZ,WAAW,CAACI,QAAD,CAAhC;AAEA,MAAMS,UAAU,GAAGjB,WAAW,CAAC,MAAM;AACnCc,IAAAA,UAAU,CAAC,IAAD,CAAV;;AACA,QAAIC,OAAO,CAACG,OAAZ,EAAqB;AACnBC,MAAAA,YAAY,CAACJ,OAAO,CAACG,OAAT,CAAZ;AACD;;AACDH,IAAAA,OAAO,CAACG,OAAR,GAAkBE,UAAU,CAAC,MAAM;AACjCN,MAAAA,UAAU,CAAC,KAAD,CAAV;AACD,KAF2B,EAEzBR,YAFyB,CAA5B;AAGD,GAR6B,EAQ3B,CAACQ,UAAD,EAAaC,OAAb,CAR2B,CAA9B;AAUAd,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIe,YAAY,KAAKR,QAAjB,IAA6BA,QAAQ,IAAI,IAA7C,EAAmD;AACjDS,MAAAA,UAAU;AACX;AACF,GAJQ,EAIN,CAACT,QAAD,EAAWQ,YAAX,EAAyBF,UAAzB,EAAqCG,UAArC,CAJM,CAAT;AAMAhB,EAAAA,SAAS,CACP,MAAM,MAAOc,OAAO,CAACG,OAAR,GAAkBC,YAAY,CAACJ,OAAO,CAACG,OAAT,CAA9B,GAAkDG,SADxD,EAEP,EAFO,CAAT;AAKA,sBACE,oBAAC,iBAAD;AACE,IAAA,SAAS,EAAC,kBADZ;AAEE,IAAA,OAAO,EAAER,OAFX;AAGE,IAAA,UAAU,EAAEJ,UAHd;AAIE,IAAA,SAAS,EAAEC,SAJb;AAKE,IAAA,SAAS,EAAEC,SALb;AAME,IAAA,QAAQ,EAAEC;AANZ,KAQGJ,QARH,CADF;AAYD,CA5CM;AA8CP,eAAeD,cAAf","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport const ToastBottomBar = ({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element => {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n};\n\nexport default ToastBottomBar;\n"],"file":"ToastBottomBar.js"}
|
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) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
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"}
|
|
@@ -56,8 +56,12 @@ class IrisGridColumnTooltipMouseHandler extends GridMouseHandler {
|
|
|
56
56
|
var newTooltip = null;
|
|
57
57
|
|
|
58
58
|
if (column !== null && row === null) {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
/**
|
|
60
|
+
* one would expect at y == theme.columnHeaderHeight, row == null
|
|
61
|
+
* however, gridY also == theme.columnHeaderHeight, so row still has a value
|
|
62
|
+
* so this tooltip won't actually show until row is null at columnHeaderHeight - 1
|
|
63
|
+
*/
|
|
64
|
+
if (y >= 0 && y <= theme.columnHeaderHeight) {
|
|
61
65
|
newTooltip = column;
|
|
62
66
|
}
|
|
63
67
|
}
|
|
@@ -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","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,UAAIF,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAIG,KAAK,CAACG,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":[],"mappings":";AA4BA;;GAEG;AACH;IACE,0BAAoD;IAEpD,kCAA4D;IAE5D,4BAAsD;IAEtD,0BAAoD;IAEpD,0BAAqD;IAErD,4BAAuD;IAEvD;;;;MAIE;IAEF;;;;;;;OAOG;IACH,mFAFW,OAAO,OAWjB;IAED;;;;;OAKG;IACH,gFAFW,OAAO,UAMjB;IAED;;;;OAIG;IACH,mEAqBC;IAED,uEAIC;IAED,2BASC;IANC,iEAGC;IAED,cAAwB;IAG1B,6BAEC;
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":[],"mappings":";AA4BA;;GAEG;AACH;IACE,0BAAoD;IAEpD,kCAA4D;IAE5D,4BAAsD;IAEtD,0BAAoD;IAEpD,0BAAqD;IAErD,4BAAuD;IAEvD;;;;MAIE;IAEF;;;;;;;OAOG;IACH,mFAFW,OAAO,OAWjB;IAED;;;;;OAKG;IACH,gFAFW,OAAO,UAMjB;IAED;;;;OAIG;IACH,mEAqBC;IAED,uEAIC;IAED,2BASC;IANC,iEAGC;IAED,cAAwB;IAG1B,6BAEC;IA4YD;;;;;;;QA8BC;IAED,+CA8CC;IAED;;;;;;;;;;;;SA+IC;IAED;;;;;;;;;;;;SAmKC;IAED;;;;;;;;;;;;SA4EC;IAED;;;;;;;;;;;;SAgJC;IAED;;;;;;;;;;;;SAwDC;IAED;;;;;;;;;;;;;;SA6FC;IAED;;;;;;;;;;SA0EC;IAED,4EAKC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
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; }
|
|
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
|
|
|
@@ -289,6 +289,13 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
291
|
});
|
|
292
|
+
actions.push({
|
|
293
|
+
title: 'Copy Column Name',
|
|
294
|
+
group: IrisGridContextMenuHandler.GROUP_COPY,
|
|
295
|
+
action: () => {
|
|
296
|
+
ContextActionUtils.copyToClipboard(model.textForColumnHeader(modelColumn)).catch(e => log.error('Unable to copy header', e));
|
|
297
|
+
}
|
|
298
|
+
});
|
|
292
299
|
|
|
293
300
|
if (TableUtils.isDateType(column.type)) {
|
|
294
301
|
actions.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","dh","Log","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","TableUtils","TableColumnFormatter","DateTimeColumnFormatter","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","onContextMenu","gridPoint","grid","event","y","columnIndex","row","rowIndex","modelColumn","getModelColumn","modelRow","getModelRow","model","props","columns","valueForCell","valueText","textForCell","actions","metrics","isFilterBarShown","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","columnHeaderHeight","gridY","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","settings","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","table","push","isFilterable","title","group","GROUP_FILTER","order","action","removeColumnFilter","disabled","has","userColumnWidths","isColumnHidden","values","some","columnWidth","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","GROUP_COPY","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","name","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","error","TYPE_CONTEXT_CUSTOM","quickFilter","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":";;;;;;AAAA;AACA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,QAAzB,EAAmCC,OAAnC,EAA4CC,QAA5C,QAA4D,kBAA5D;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,SACEC,cADF,EAEEC,kBAFF,EAGEC,gBAHF,QAIO,uBAJP;AAKA,SAASC,gBAAT,QAAiC,iBAAjC;AACA,OAAOC,EAAP,MAAe,uBAAf;AACA,OAAOC,GAAP,MAAgB,gBAAhB;SAEEC,yB,EACAC,wB,EACAC,wB;;OAGKC,U;SACEC,oB,EAAsBC,uB;OACxBC,S;AAEP,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAJ,CAAW,4BAAX,CAAZ;AAEA,IAAMC,sBAAsB,GAAG,GAA/B;AACA,IAAMC,wBAAwB,GAAG,+BAAjC;AAEA;AACA;AACA;;AACA,MAAMC,0BAAN,SAAyCd,gBAAzC,CAA0D;AAmBxD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACgC,SAAvBe,uBAAuB,CAC5BC,YAD4B,EAE5BC,eAF4B,EAI5B;AAAA,QADAC,QACA,uEADW,KACX;;AACA,QAAI,CAACA,QAAD,IAAa,CAACF,YAAlB,EAAgC;AAC9B,aAAOC,eAAP;AACD;;AACD,WAAOD,YAAY,CAACG,GAAb,CAAiBF,eAAjB,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AAC2B,SAAlBG,kBAAkB,CAACC,UAAD,EAAaC,aAAb,EAA8C;AAAA,QAAlBJ,QAAkB,uEAAP,KAAO;AACrE,WAAOA,QAAQ,IAAIG,UAAZ,aACAA,UADA,iBACiBC,aADjB,IAEHA,aAFJ;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACmC,SAA1BC,0BAA0B,CAACC,MAAD,EAASC,KAAT,EAAgB;AAC/C,QAAMT,YAAY,GAAGQ,MAAM,CAACE,MAAP,EAArB;;AACA,QAAID,KAAK,KAAKE,MAAM,CAACC,iBAArB,EAAwC;AACtC,aAAO3B,EAAE,CAAC4B,eAAH,CAAmBC,MAAnB,CAA0B,OAA1B,EAAmCd,YAAnC,EAAiDG,GAAjD,CACLH,YAAY,CAACe,WAAb,CAAyB9B,EAAE,CAAC+B,WAAH,CAAeC,QAAf,CAAwB,CAAxB,CAAzB,CADK,CAAP;AAGD;;AACD,QAAIR,KAAK,KAAKE,MAAM,CAACO,iBAArB,EAAwC;AACtC,aAAOjC,EAAE,CAAC4B,eAAH,CAAmBC,MAAnB,CAA0B,OAA1B,EAAmCd,YAAnC,EAAiDG,GAAjD,CACLH,YAAY,CAACmB,QAAb,CAAsBlC,EAAE,CAAC+B,WAAH,CAAeC,QAAf,CAAwB,CAAxB,CAAtB,CADK,CAAP;AAGD;;AACD,QAAIN,MAAM,CAACS,KAAP,CAAaX,KAAb,CAAJ,EAAyB;AACvB,aAAOxB,EAAE,CAAC4B,eAAH,CAAmBC,MAAnB,CAA0B,OAA1B,EAAmCd,YAAnC,CAAP;AACD;;AAED,QAAMqB,WAAW,GAAGvB,0BAA0B,CAACwB,6BAA3B,CAClBd,MAAM,CAACe,IADW,EAElBd,KAFkB,CAApB;AAIA,WAAOT,YAAY,CAACwB,EAAb,CAAgBH,WAAhB,CAAP;AACD;;AAEmC,SAA7BC,6BAA6B,CAACG,UAAD,EAAahB,KAAb,EAAoB;AACtD,WAAOnB,UAAU,CAACoC,UAAX,CAAsBD,UAAtB,IACHxC,EAAE,CAAC+B,WAAH,CAAeW,QAAf,CAAwBC,MAAM,CAACC,YAAP,CAAoBpB,KAApB,CAAxB,CADG,GAEHxB,EAAE,CAAC+B,WAAH,CAAeC,QAAf,CAAwBR,KAAxB,CAFJ;AAGD;;AAEDqB,EAAAA,WAAW,CAACC,QAAD,EAAW;AACpB;AAEA,SAAKC,2BAAL,GAAmCpD,QAAQ,CACzCmD,QAAQ,CAACE,qBADgC,EAEzCrC,sBAFyC,CAA3C;AAKA,SAAKmC,QAAL,GAAgBA,QAAhB;AACD;;AAEDG,EAAAA,oBAAoB,GAAG;AACrB,SAAKF,2BAAL,CAAiCG,KAAjC;AACD;;AAEDC,EAAAA,aAAa,CAACC,SAAD,EAAYC,IAAZ,EAAkBC,KAAlB,EAAyB;AACpC,QAAM;AAAER,MAAAA;AAAF,QAAe,IAArB;AACA,QAAM;AAAES,MAAAA,CAAF;AAAKhC,MAAAA,MAAM,EAAEiC,WAAb;AAA0BC,MAAAA,GAAG,EAAEC;AAA/B,QAA4CN,SAAlD;AACA,QAAMO,WAAW,GAAGb,QAAQ,CAACc,cAAT,CAAwBJ,WAAxB,CAApB;AACA,QAAMK,QAAQ,GAAGf,QAAQ,CAACgB,WAAT,CAAqBJ,QAArB,CAAjB;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAYjB,QAAQ,CAACkB,KAA3B;AACA,QAAM;AAAEC,MAAAA;AAAF,QAAcF,KAApB;AACA,QAAMvC,KAAK,GAAGuC,KAAK,CAACG,YAAN,CAAmBP,WAAnB,EAAgCE,QAAhC,CAAd;AACA,QAAMM,SAAS,GAAGJ,KAAK,CAACK,WAAN,CAAkBT,WAAlB,EAA+BE,QAA/B,CAAlB;AACA,QAAMtC,MAAM,GAAG0C,OAAO,CAACN,WAAD,CAAtB;AAEA,QAAMU,OAAO,GAAG,EAAhB;AAEA,QAAM;AACJC,MAAAA,OADI;AAEJC,MAAAA,gBAFI;AAGJC,MAAAA,WAHI;AAIJC,MAAAA,YAJI;AAKJC,MAAAA,eALI;AAMJC,MAAAA;AANI,QAOF7B,QAAQ,CAAC8B,KAPb;AAQA,QAAMC,KAAK,GAAG/B,QAAQ,CAACgC,QAAT,EAAd;AACA,QAAM;AAAEC,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAAgCV,OAAtC;AACA,QAAM;AACJW,MAAAA,eADI;AAEJC,MAAAA,oBAFI;AAGJC,MAAAA,wBAHI;AAIJC,MAAAA;AAJI,QAKFP,KALJ;AAMA,QAAM;AAAE1B,MAAAA,aAAF;AAAiBkC,MAAAA;AAAjB,QAA8BvC,QAAQ,CAACkB,KAA7C;AAEA,QAAMsB,SAAS,GAAGvB,KAAK,CAACwB,IAAxB;AACA,QAAMC,UAAU,GAAGnF,UAAU,CAACoF,gBAAX,CAA4BH,SAA5B,EAAuC3B,WAAvC,CAAnB;AACA,QAAM+B,UAAU,GAAGlB,WAAW,KAAKnE,UAAU,CAACsF,YAAX,CAAwBC,IAA3D;AACA,QAAMC,mBAAmB,GAAG,IAAItF,uBAAJ,CAA4B;AACtDuF,MAAAA,QAAQ,EAAET,QAAQ,CAACS,QADmC;AAEtDC,MAAAA,YAAY,EAAE,KAFwC;AAGtDC,MAAAA,cAAc,EAAE,IAHsC;AAItDC,MAAAA,2BAA2B,EAAErF;AAJyB,KAA5B,CAA5B;AAMA,QAAMsF,sBAAsB,GAAG,IAAI3F,uBAAJ,CAA4B;AACzDuF,MAAAA,QAAQ,EAAET,QAAQ,CAACS,QADsC;AAEzDC,MAAAA,YAAY,EAAEV,QAAQ,CAACU,YAFkC;AAGzDC,MAAAA,cAAc,EAAEX,QAAQ,CAACW,cAHgC;AAIzDC,MAAAA,2BAA2B,EAAErF;AAJ4B,KAA5B,CAA/B;;AAOA,QAAIW,MAAM,IAAI,IAAd,EAAoB;AAClB,UAAM;AAAE4E,QAAAA;AAAF,UAAYpC,KAAlB;AACAM,MAAAA,OAAO,CAAC+B,IAAR,CACEjD,aAAa,CAAC;AACZgD,QAAAA,KADY;AAEZpC,QAAAA,KAFY;AAGZvC,QAAAA,KAHY;AAIZ2C,QAAAA,SAJY;AAKZ5C,QAAAA,MALY;AAMZmC,QAAAA,QANY;AAOZF,QAAAA,WAPY;AAQZK,QAAAA,QARY;AASZF,QAAAA;AATY,OAAD,CADf;AAaD;;AAED,QAAIpC,MAAM,IAAI,IAAV,IAAkBwC,KAAK,CAACsC,YAAN,CAAmB1C,WAAnB,CAAtB,EAAuD;AACrDU,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KAAK,EAAE,qBADI;AAEXC,QAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YAFvB;AAGXC,QAAAA,KAAK,EAAE,EAHI;AAIXC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAc6D,kBAAd,CAAiChD,WAAjC;AACD,SANU;AAOXiD,QAAAA,QAAQ,EAAE,EACRnC,YAAY,CAACoC,GAAb,CAAiBlD,WAAjB,KAAiCe,eAAe,CAACmC,GAAhB,CAAoBlD,WAApB,CADzB;AAPC,OAAb;AAWD;;AAED,QAAIY,gBAAgB,GAAGhB,CAAC,IAAIyB,KAAR,GAAgBzB,CAAC,IAAIwB,kBAAzC,EAA6D;AAC3D;AACA,UAAIxD,MAAM,IAAI,IAAd,EAAoB;AAClB,YAAM;AAAEuF,UAAAA;AAAF,YAAuBxC,OAA7B;AACA,YAAMyC,cAAc,GAAG,CAAC,GAAGD,gBAAgB,CAACE,MAAjB,EAAJ,EAA+BC,IAA/B,CACrBC,WAAW,IAAIA,WAAW,KAAK,CADV,CAAvB;AAGA7C,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,aADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAACsG,kBAFvB;AAGXT,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAcsE,wBAAd,CAAuC5D,WAAvC;AACD;AALU,SAAb;AAOAa,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,kBADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAACsG,kBAFvB;AAGXT,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAcuE,cAAd;AACD,WALU;AAMXT,UAAAA,QAAQ,EAAE,CAACG;AANA,SAAb;AAQA1C,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,eADI;AAEXgB,UAAAA,IAAI,EAAE9H,QAFK;AAGX+H,UAAAA,SAAS,EAAErC,oBAHA;AAIXsC,UAAAA,QAAQ,EAAEhH,SAAS,CAACiH,KAAV,CAAgBC,mBAJf;AAKXnB,UAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YALvB;AAMXC,UAAAA,KAAK,EAAE,EANI;AAOXC,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAc6E,eAAd,CAA8BnE,WAA9B;AACD;AATU,SAAb;AAWAa,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,kBADI;AAEXgB,UAAAA,IAAI,EAAE5C,eAAe,CAACkD,GAAhB,CAAoBjE,WAApB,IAAmCpE,cAAnC,GAAoDG,QAF/C;AAGX6H,UAAAA,SAAS,EAAEtC,eAHA;AAIXsB,UAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YAJvB;AAKXC,UAAAA,KAAK,EAAE,EALI;AAMXC,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAc+E,wBAAd,CAAuCrE,WAAvC;AACD;AARU,SAAb;AAUAa,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,qBADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YAFvB;AAGXC,UAAAA,KAAK,EAAE,EAHI;AAIX;AACAe,UAAAA,QAAQ,EAAEhH,SAAS,CAACiH,KAAV,CAAgBK,aALf;AAMXpB,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAciF,eAAd;AACD,WARU;AASXnB,UAAAA,QAAQ,EAAE,EACRnC,YAAY,CAACuD,IAAb,GAAoB,CAApB,IACAtD,eAAe,CAACsD,IAAhB,GAAuB,CADvB,IAEArD,YAAY,KAAK,IAHT;AATC,SAAb;AAeAN,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,SADI;AAEXgB,UAAAA,IAAI,EAAE9H,QAFK;AAGX+H,UAAAA,SAAS,EAAEpC,wBAHA;AAIXoB,UAAAA,KAAK,EAAE1F,0BAA0B,CAACoH,UAJvB;AAKXxB,UAAAA,KAAK,EAAE,EALI;AAMXpC,UAAAA,OAAO,EAAE,KAAK6D,aAAL,CAAmB3G,MAAnB,EAA2BoC,WAA3B,EAAwC6B,UAAxC;AANE,SAAb;AAQAnB,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,qBADI;;AAEX;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACUM,UAAAA,QAAQ,EACLpB,UAAU,IAAIF,SAAS,CAAC6C,MAAV,KAAqB,CAApC,IACCzC,UAAU,IAAIJ,SAAS,CAAC6C,MAAV,KAAqB,CADpC,IAEC3C,UAAU,IAAIE,UAAd,IAA4BJ,SAAS,CAAC6C,MAAV,KAAqB,CAFlD,IAGA7C,SAAS,CAAC6C,MAAV,KAAqB,CAdZ;AAeX5B,UAAAA,KAAK,EAAE1F,0BAA0B,CAACoH,UAfvB;AAgBXxB,UAAAA,KAAK,EAAE,EAhBI;AAiBXpC,UAAAA,OAAO,EAAE,KAAK+D,qBAAL,CAA2B7G,MAA3B,EAAmCoC,WAAnC;AAjBE,SAAb;AAmBAU,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,qBADI;AAEXM,UAAAA,QAAQ,EACN;AACAtB,UAAAA,SAAS,CAAC6C,MAAV,KAAqB,CAArB,IAA2BzC,UAAU,IAAIJ,SAAS,CAAC6C,MAAV,KAAqB,CAJrD;AAKX5B,UAAAA,KAAK,EAAE1F,0BAA0B,CAACoH,UALvB;AAMXvB,UAAAA,MAAM,EAAE,MAAM;AACZ,iBAAK5D,QAAL,CAAcuF,UAAd,CACE7E,WADF,EAEE3C,0BAA0B,CAACyH,qBAA3B,CAAiDC,IAFnD;AAID,WAXU;AAYX9B,UAAAA,KAAK,EAAE;AAZI,SAAb;AAcApC,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EACH9B,WAAW,KAAKnE,UAAU,CAACsF,YAAX,CAAwBC,IAAxC,GACI,eADJ,GAEI,qBAJK;AAKX0B,UAAAA,IAAI,EAAE9H,QALK;AAMX+H,UAAAA,SAAS,EAAEnC,2BANA;AAOXmB,UAAAA,KAAK,EAAE1F,0BAA0B,CAACoH,UAPvB;AAQXxB,UAAAA,KAAK,EAAE,EARI;AASXG,UAAAA,QAAQ,EAAE,CAAC7C,KAAK,CAACyE,YATN;AAUX;AACAhB,UAAAA,QAAQ,EAAEhH,SAAS,CAACiH,KAAV,CAAgBgB,OAXf;AAYX/B,UAAAA,MAAM,EAAE,MAAM;AACZ,gBAAIlC,WAAW,KAAKnE,UAAU,CAACsF,YAAX,CAAwBC,IAA5C,EAAkD;AAChD,mBAAK9C,QAAL,CAAc4F,OAAd,CAAsBrI,UAAU,CAACsF,YAAX,CAAwBgD,SAA9C;AACD,aAFD,MAEO;AACL,mBAAK7F,QAAL,CAAc4F,OAAd,CAAsBrI,UAAU,CAACsF,YAAX,CAAwBC,IAA9C;AACD;AACF;AAlBU,SAAb;;AAqBA,YAAIvF,UAAU,CAACuI,UAAX,CAAsBrH,MAAM,CAACe,IAA7B,CAAJ,EAAwC;AACtC+B,UAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,YAAAA,KAAK,EAAE,kBADI;AAEXC,YAAAA,KAAK,EAAE1F,0BAA0B,CAACgI,YAFvB;AAGXxE,YAAAA,OAAO,EAAE,KAAKyE,iBAAL,CAAuBvH,MAAvB;AAHE,WAAb;AAKD,SAND,MAMO,IAAIlB,UAAU,CAAC0I,YAAX,CAAwBxH,MAAM,CAACe,IAA/B,CAAJ,EAA0C;AAC/C+B,UAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,YAAAA,KAAK,EAAE,eADI;AAEXC,YAAAA,KAAK,EAAE1F,0BAA0B,CAACgI,YAFvB;AAGXxE,YAAAA,OAAO,EAAE,KAAK2E,mBAAL,CAAyBzH,MAAzB;AAHE,WAAb;AAKD;AACF;AACF,KAtID,MAsIO;AACL;AACA,UAAIA,MAAM,IAAI,IAAV,IAAkBmC,QAAQ,IAAI,IAAlC,EAAwC;AACtC,YAAIK,KAAK,CAACsC,YAAN,CAAmB1C,WAAnB,CAAJ,EAAqC;AACnC;AACA,cAAMsF,UAAU,GAAG;AACjB3C,YAAAA,KAAK,EAAE,iBADU;AAEjBgB,YAAAA,IAAI,EAAE9H,QAFW;AAGjB+H,YAAAA,SAAS,EAAEtC,eAHM;AAIjBsB,YAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YAJjB;AAKjBC,YAAAA,KAAK,EAAE,EALU;AAMjBpC,YAAAA,OAAO,EAAE;AANQ,WAAnB;AASA,cAAM6E,aAAa,GAAG;AACpB5C,YAAAA,KAAK,EAAE,qBADa;AAEpBgB,YAAAA,IAAI,EAAE9H,QAFc;AAGpB+H,YAAAA,SAAS,EAAEtC,eAHS;AAIpBsB,YAAAA,KAAK,EAAE1F,0BAA0B,CAAC2F,YAJd;AAKpBC,YAAAA,KAAK,EAAE,EALa;AAMpBpC,YAAAA,OAAO,EAAE,IANW;AAOpBuC,YAAAA,QAAQ,EAAE,CAACnC,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB;AAPS,WAAtB;;AAUA,cAAInC,KAAK,IAAI,IAAb,EAAmB;AACjB;AACA,gBACEnB,UAAU,CAAC0I,YAAX,CAAwBxH,MAAM,CAACe,IAA/B,KACAjC,UAAU,CAACoC,UAAX,CAAsBlB,MAAM,CAACe,IAA7B,CAFF,EAGE;AACA;AACA;AACA,kBAAM6G,eAAe,GAAG9I,UAAU,CAACoC,UAAX,CAAsBlB,MAAM,CAACe,IAA7B,IACpBK,MAAM,CAACC,YAAP,CAAoBpB,KAApB,CADoB,aAEjBA,KAFiB,CAAxB;AAGAyH,cAAAA,UAAU,CAAC5E,OAAX,GAAqB,KAAK+E,mBAAL,CACnB7H,MADmB,EAEnB4H,eAFmB,EAGnB3H,KAHmB,CAArB;AAKA0H,cAAAA,aAAa,CAAC7E,OAAd,GAAwB,KAAK+E,mBAAL,CACtB7H,MADsB,EAEtB4H,eAFsB,EAGtB3H,KAHsB,EAItBiD,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB,CAJsB,EAKtB,IALsB,CAAxB;AAOD,aArBD,MAqBO,IAAItD,UAAU,CAACgJ,aAAX,CAAyB9H,MAAM,CAACe,IAAhC,CAAJ,EAA2C;AAChD2G,cAAAA,UAAU,CAAC5E,OAAX,GAAqB,KAAKiF,oBAAL,CAA0B/H,MAA1B,EAAkC4C,SAAlC,CAArB;AACA+E,cAAAA,aAAa,CAAC7E,OAAd,GAAwB,KAAKiF,oBAAL,CACtB/H,MADsB,EAEtB4C,SAFsB,EAGtBM,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB,CAHsB,EAItB,IAJsB,CAAxB;AAMD,aARM,MAQA,IAAItD,UAAU,CAACuI,UAAX,CAAsBrH,MAAM,CAACe,IAA7B,CAAJ,EAAwC;AAC7C,kBAAMiH,aAAa,GAAG1D,mBAAmB,CAAC2D,MAApB,CAA2BhI,KAA3B,CAAtB;AACA,kBAAMiI,YAAY,GAAGvD,sBAAsB,CAACsD,MAAvB,CAA8BhI,KAA9B,CAArB;AACAyH,cAAAA,UAAU,CAAC5E,OAAX,GAAqB,KAAKqF,iBAAL,CACnBnI,MADmB,EAEnBgI,aAFmB,EAGnBE,YAHmB,EAInBjI,KAJmB,CAArB;AAMA0H,cAAAA,aAAa,CAAC7E,OAAd,GAAwB,KAAKqF,iBAAL,CACtBnI,MADsB,EAEtBgI,aAFsB,EAGtBE,YAHsB,EAItBjI,KAJsB,EAKtBiD,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB,CALsB,EAMtB,IANsB,CAAxB;AAQD,aAjBM,MAiBA;AACLsF,cAAAA,UAAU,CAAC5E,OAAX,GAAqB,KAAKsF,mBAAL,CACnBpI,MADmB,EAEnB4C,SAFmB,EAGnB3C,KAHmB,CAArB;AAKA0H,cAAAA,aAAa,CAAC7E,OAAd,GAAwB,KAAKsF,mBAAL,CACtBpI,MADsB,EAEtB4C,SAFsB,EAGtB3C,KAHsB,EAItBiD,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB,CAJsB,EAKtB,IALsB,CAAxB;AAOD;AACF,WA9DD,MA8DO;AACLsF,YAAAA,UAAU,CAAC5E,OAAX,GAAqB,KAAKuF,iBAAL,CAAuBrI,MAAvB,CAArB;AACA2H,YAAAA,aAAa,CAAC7E,OAAd,GAAwB,KAAKuF,iBAAL,CACtBrI,MADsB,EAEtBkD,YAAY,CAACmD,GAAb,CAAiBjE,WAAjB,CAFsB,EAGtB,IAHsB,CAAxB;AAKD;;AAED,cAAIsF,UAAU,CAAC5E,OAAX,IAAsB,IAAtB,IAA8B4E,UAAU,CAAC5E,OAAX,CAAmB8D,MAAnB,GAA4B,CAA9D,EAAiE;AAC/D9D,YAAAA,OAAO,CAAC+B,IAAR,CAAa6C,UAAb;AACD;;AACD,cACEC,aAAa,CAAC7E,OAAd,IAAyB,IAAzB,IACA6E,aAAa,CAAC7E,OAAd,CAAsB8D,MAAtB,GAA+B,CAFjC,EAGE;AACA9D,YAAAA,OAAO,CAAC+B,IAAR,CAAa8C,aAAb;AACD;AACF;;AAED7E,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,WADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAACgJ,UAFvB;AAGXpD,UAAAA,KAAK,EAAE,EAHI;AAIXC,UAAAA,MAAM,EAAE,MAAM;AACZ5D,YAAAA,QAAQ,CAACgH,QAAT,CAAkBtG,WAAlB,EAA+BE,QAA/B;AACD;AANU,SAAb;AASAW,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,uBADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAACgJ,UAFvB;AAGXpD,UAAAA,KAAK,EAAE,EAHI;AAIXC,UAAAA,MAAM,EAAE,MAAM;AACZ5D,YAAAA,QAAQ,CAACgH,QAAT,CAAkBtG,WAAlB,EAA+BE,QAA/B,EAAyC,IAAzC;AACD;AANU,SAAb;AAQD,OA3HI,CA6HL;;;AACA,UAAM;AAAEqG,QAAAA;AAAF,UAAqB1G,IAAI,CAACuB,KAAhC;;AACA,UAAImF,cAAc,CAAC5B,MAAf,GAAwB,CAA5B,EAA+B;AAC7B9D,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,gBADI;AAEXkB,UAAAA,QAAQ,EAAE1H,gBAAgB,CAACkK,IAFhB;AAGXzD,UAAAA,KAAK,EAAE1F,0BAA0B,CAACgJ,UAHvB;AAIXpD,UAAAA,KAAK,EAAE,EAJI;AAKXC,UAAAA,MAAM,EAAE,MAAM;AACZ5D,YAAAA,QAAQ,CAACmH,UAAT,CAAoBF,cAApB;AACD;AAPU,SAAb;AAUA1F,QAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,UAAAA,KAAK,EAAE,2BADI;AAEXC,UAAAA,KAAK,EAAE1F,0BAA0B,CAACgJ,UAFvB;AAGXpD,UAAAA,KAAK,EAAE,EAHI;AAIXC,UAAAA,MAAM,EAAE,MAAM;AACZ5D,YAAAA,QAAQ,CAACmH,UAAT,CAAoBF,cAApB,EAAoC,IAApC;AACD;AANU,SAAb;;AASA,YAAIhG,KAAK,CAACmG,UAAV,EAAsB;AACpB7F,UAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,YAAAA,KAAK,EAAE,sBADI;AAEXC,YAAAA,KAAK,EAAE1F,0BAA0B,CAACsJ,UAFvB;AAGX1D,YAAAA,KAAK,EAAE,EAHI;AAIXC,YAAAA,MAAM,EAAE,MAAM;AACZ,mBAAK5D,QAAL,CAAcsH,YAAd,CAA2BL,cAA3B;AACD;AANU,WAAb;AAQD;AACF;AACF;;AAED,QAAI1F,OAAO,CAAC8D,MAAR,KAAmB,CAAvB,EAA0B;AACxB,aAAO,KAAP;AACD;;AAEDvI,IAAAA,cAAc,CAACyK,WAAf,CACEvH,QAAQ,CAACwH,WADX,EAEEhH,KAAK,CAACiH,KAFR,EAGEjH,KAAK,CAACkH,KAHR,EAIEnG,OAJF;AAMA,WAAO,IAAP;AACD;;AAEDyE,EAAAA,iBAAiB,CAACvH,MAAD,EAAS;AAAA;;AACxB,QAAM;AAAEwC,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAM;AAAEyG,MAAAA;AAAF,QAAgB1G,KAAtB;AACA,QAAM2G,cAAc,GAAGD,SAAS,CAACE,eAAV,CAA0BpJ,MAAM,CAACe,IAAjC,EAAuCf,MAAM,CAACqJ,IAA9C,CAAvB;AACA,QAAMC,aAAa,GAAG3K,yBAAyB,CAAC4K,UAA1B,CACpBL,SADoB,EAEpBC,cAFoB,CAAtB;AAKA,QAAMrG,OAAO,GAAG,EAAhB;;AATwB,+BAWf0G,CAXe;AAYtB,UAAM;AAAEC,QAAAA,WAAF;AAAexB,QAAAA,MAAf;AAAuBjD,QAAAA,KAAvB;AAA8B0E,QAAAA,UAA9B;AAA0C3E,QAAAA;AAA1C,UAAoDuE,aAAa,CACrEE,CADqE,CAAvE;AAGA1G,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KADW;AAEX0E,QAAAA,WAFW;AAGX1D,QAAAA,IAAI,EAAE2D,UAAU,GAAGxL,OAAH,GAAa,IAHlB;AAIX8G,QAAAA,KAJW;AAKXE,QAAAA,KAAK,EAAEsE,CALI;AAMXrE,QAAAA,MAAM,EAAE,MAAM;AACZ,UAAA,KAAI,CAAC5D,QAAL,CAAcE,qBAAd,CACEe,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CADF,EAEEpB,MAFF;AAID;AAXU,OAAb;AAfsB;;AAWxB,SAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,aAAa,CAAC1C,MAAlC,EAA0C4C,CAAC,IAAI,CAA/C,EAAkD;AAAA,YAAzCA,CAAyC;AAiBjD;;AACD,WAAO1G,OAAP;AACD;;AAED2E,EAAAA,mBAAmB,CAACzH,MAAD,EAAS;AAAA;;AAC1B,QAAM;AAAEwC,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAM;AAAEyG,MAAAA;AAAF,QAAgB1G,KAAtB;AACA,QAAM2G,cAAc,GAAGD,SAAS,CAACE,eAAV,CAA0BpJ,MAAM,CAACe,IAAjC,EAAuCf,MAAM,CAACqJ,IAA9C,CAAvB;AACA,QAAIC,aAAJ;AAEA,QAAMrH,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;;AACA,QAAIvK,UAAU,CAAC8K,aAAX,CAAyB5J,MAAM,CAACe,IAAhC,CAAJ,EAA2C;AACzCuI,MAAAA,aAAa,GAAG1K,wBAAwB,CAAC2K,UAAzB,CACdJ,cADc,EAEdlB,MAAM,IAAI;AACR,aAAKzG,2BAAL,CAAiCS,WAAjC,EAA8CgG,MAA9C;AACD,OAJa,CAAhB;AAMD,KAPD,MAOO,IAAInJ,UAAU,CAAC+K,aAAX,CAAyB7J,MAAM,CAACe,IAAhC,CAAJ,EAA2C;AAChDuI,MAAAA,aAAa,GAAGzK,wBAAwB,CAAC0K,UAAzB,CACdJ,cADc,EAEdlB,MAAM,IAAI;AACR,aAAKzG,2BAAL,CAAiCS,WAAjC,EAA8CgG,MAA9C;AACD,OAJa,CAAhB;AAMD,KAPM,MAOA;AACL/I,MAAAA,GAAG,CAAC4K,KAAJ,CAAU,4CAAV;AACA,aAAO,IAAP;AACD;;AAED,QAAMhH,OAAO,GAAG,EAAhB;;AA1B0B,iCA4BjB0G,CA5BiB;AA6BxB,UAAM;AAAEvB,QAAAA,MAAF;AAAUyB,QAAAA;AAAV,UAAyBJ,aAAa,CAACE,CAAD,CAA5C;AACA1G,MAAAA,OAAO,CAAC+B,IAAR,iCACKyE,aAAa,CAACE,CAAD,CADlB;AAEEzD,QAAAA,IAAI,EAAE2D,UAAU,GAAGxL,OAAH,GAAa,IAF/B;AAGEgH,QAAAA,KAAK,EAAEsE,CAHT;AAIErE,QAAAA,MAAM,EAAE,MAAM;AACZ,cACE8C,MAAM,IACNA,MAAM,CAAClH,IAAP,KAAgBhC,oBAAoB,CAACgL,mBAFvC,EAGE;AACA;AACD;;AACD,UAAA,MAAI,CAACxI,QAAL,CAAcE,qBAAd,CAAoCQ,WAApC,EAAiDgG,MAAjD;AACD;AAZH;AA9BwB;;AA4B1B,SAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,aAAa,CAAC1C,MAAlC,EAA0C4C,CAAC,IAAI,CAA/C,EAAkD;AAAA,aAAzCA,CAAyC;AAgBjD;;AACD,WAAO1G,OAAP;AACD;;AAEDsF,EAAAA,mBAAmB,CACjBpI,MADiB,EAEjB4C,SAFiB,EAGjB3C,KAHiB,EAMjB;AAAA,QAFA+J,WAEA,uEAFc,EAEd;AAAA,QADAtK,QACA,uEADW,KACX;AACA,QAAMmB,WAAW,GAAGpC,EAAE,CAAC+B,WAAH,CAAeW,QAAf,CAAwBlB,KAAxB,CAApB;AACA,QAAM;AAAEC,MAAAA,MAAF;AAAU+J,MAAAA,IAAI,EAAEpK;AAAhB,QAA+BmK,WAArC;AACA,QAAMlH,OAAO,GAAG,EAAhB;AACA,QAAM;AAAEN,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAMR,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;AAEAvG,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXqF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,eACStH,SADT,OAFS;AAMXsC,MAAAA,KAAK,EAAE;AANI,KAAb;AASApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,iBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,iBAA4CpJ,KAA5C,sBAFA;AAGXkF,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBc,EAAhB,CAAmBH,WAAnB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,qBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,qBAAgDzG,SAAhD,sBAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBkK,KAAhB,CAAsBvJ,WAAtB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,iBADM;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,uBAAkDzG,SAAlD,CAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBmK,QAAhB,CAAyBxJ,WAAzB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,uBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,+BAA0DpJ,KAA1D,CAFA;AAGXkF,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBmK,QAAhB,CAAyBxJ,WAAzB,EAAsCyJ,GAAtC,EAFF,EAGE5K,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,kBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,0BAAqDzG,SAArD,CAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBI,MAAhB,CAAuB,YAAvB,EAAqCO,WAArC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,YAEK+C,SAFL,QAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,gBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,wBAAmDzG,SAAnD,CAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEyK,WADF,EAEEhK,MAAM,CAACE,MAAP,GAAgBI,MAAhB,CAAuB,UAAvB,EAAmCO,WAAnC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBA,WAAOpC,OAAP;AACD;;AAED+E,EAAAA,mBAAmB,CACjB7H,MADiB,EAEjB4C,SAFiB,EAGjB3C,KAHiB,EAMjB;AAAA,QAFA+J,WAEA,uEAFc,EAEd;AAAA,QADAtK,QACA,uEADW,KACX;AACA,QAAMmB,WAAW,GAAGvB,0BAA0B,CAACwB,6BAA3B,CAClBd,MAAM,CAACe,IADW,EAElBd,KAFkB,CAApB;AAIA,QAAM;AAAEC,MAAAA,MAAF;AAAU+J,MAAAA,IAAI,EAAEpK;AAAhB,QAA+BmK,WAArC;AACA,QAAMlH,OAAO,GAAG,EAAhB;AACA,QAAMyH,QAAQ,GACZtK,KAAK,KAAKE,MAAM,CAACC,iBAAjB,IACAH,KAAK,KAAKE,MAAM,CAACO,iBADjB,IAEA,CAACP,MAAM,CAACS,KAAP,CAAaX,KAAb,CAHH;AAIA,QAAM;AAAEuC,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAMR,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;AAEAvG,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXqF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,SACGxK,QAAQ,GAAG,OAAH,GAAa,EADxB,QACkCkD,SADlC,OAFS;AAMXsC,MAAAA,KAAK,EAAE;AANI,KAAb;AAQApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,aADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,iBAA4CzG,SAA5C,CAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,YAAMqF,WAAW,GAAGlL,0BAA0B,CAACS,0BAA3B,CAClBC,MADkB,EAElBC,KAFkB,CAApB;AAIA,aAAKsB,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEsK,WAFF,EAGE9K,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OArBU;AAsBXwF,MAAAA,KAAK,EAAE;AAtBI,KAAb;AAwBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,iBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,qBAAgDzG,SAAhD,CAFA;AAGXuC,MAAAA,MAAM,EAAE,MAAM;AACZ,YAAMqF,WAAW,GAAGlL,0BAA0B,CAACS,0BAA3B,CAClBC,MADkB,EAElBC,KAFkB,EAGlBqK,GAHkB,EAApB;AAIA,aAAK/I,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEsK,WAFF,EAGE9K,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OArBU;AAsBXwF,MAAAA,KAAK,EAAE;AAtBI,KAAb,EA9CA,CAuEA;AACA;AACA;;AACA,QAAIqF,QAAQ,IAAI,CAACzL,UAAU,CAACoC,UAAX,CAAsBlB,MAAM,CAACe,IAA7B,CAAjB,EAAqD;AACnD+B,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KAAK,EAAE,cADI;AAEX0E,QAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,8BAAyDzG,SAAzD,CAFA;AAGXuC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBK,WAAhB,CAA4BM,WAA5B,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,SAjBU;AAkBXwF,QAAAA,KAAK,EAAE;AAlBI,OAAb;AAoBApC,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KAAK,EAAE,0BADI;AAEX0E,QAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,0CAAqEzG,SAArE,CAFA;AAGXuC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBuK,oBAAhB,CAAqC5J,WAArC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,SAjBU;AAkBXwF,QAAAA,KAAK,EAAE;AAlBI,OAAb;AAoBApC,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KAAK,EAAE,WADI;AAEX0E,QAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,2BAAsDzG,SAAtD,CAFA;AAGXuC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBS,QAAhB,CAAyBE,WAAzB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,SAjBU;AAkBXwF,QAAAA,KAAK,EAAE;AAlBI,OAAb;AAoBApC,MAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,QAAAA,KAAK,EAAE,uBADI;AAEX0E,QAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,uCAAkEzG,SAAlE,CAFA;AAGXuC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBwK,iBAAhB,CAAkC7J,WAAlC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,SAjBU;AAkBXwF,QAAAA,KAAK,EAAE;AAlBI,OAAb;AAoBD;;AACD,WAAOpC,OAAP;AACD;;AAEDiF,EAAAA,oBAAoB,CAAC/H,MAAD,EAAS4C,SAAT,EAAwD;AAAA,QAApCoH,WAAoC,uEAAtB,EAAsB;AAAA,QAAlBtK,QAAkB,uEAAP,KAAO;AAC1E,QAAMoD,OAAO,GAAG,EAAhB;AACA,QAAM;AAAE5C,MAAAA,MAAF;AAAU+J,MAAAA,IAAI,EAAEpK;AAAhB,QAA+BmK,WAArC;AACA,QAAM;AAAExH,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAMR,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;AAEAvG,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXqF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,SACGxK,QAAQ,GAAG,MAAH,GAAY,EADvB,QACiCkD,SADjC,OAFS;AAMXsC,MAAAA,KAAK,EAAE;AANI,KAAb;AAQApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,MADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,aAFA;AAGXlE,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgByK,MAAhB,EAFF,EAGEjL,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,EAEE,MAFF,EAGEH,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,OADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,cAFA;AAGXlE,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgB0K,OAAhB,EAFF,EAGElL,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,EAEE,OAFF,EAGEH,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,MADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,aAFA;AAGXlE,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEyK,WADF,EAEEhK,MAAM,CAACE,MAAP,GAAgB2K,MAAhB,EAFF,EAGEnL,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,EAEE,MAFF,EAGEH,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAqBA,WAAOpC,OAAP;AACD;;AAEDqF,EAAAA,iBAAiB,CACfnI,MADe,EAEf4C,SAFe,EAGfsF,YAHe,EAIfjI,KAJe,EAOf;AAAA,QAFA+J,WAEA,uEAFc,EAEd;AAAA,QADAtK,QACA,uEADW,KACX;AACA,QAAMmB,WAAW,GAAGpC,EAAE,CAAC+B,WAAH,CAAeC,QAAf,CAAwBR,KAAxB,CAApB;AACA,QAAM;AAAEC,MAAAA,MAAF;AAAU+J,MAAAA,IAAI,EAAEpK;AAAhB,QAA+BmK,WAArC;AACA,QAAM;AAAExH,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAMR,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;AAEA,QAAMvG,OAAO,GAAG,EAAhB;AAEAA,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXqF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,SACGxK,QAAQ,GAAG,OAAH,GAAa,EADxB,QACkCwI,YADlC,OAFS;AAMXhD,MAAAA,KAAK,EAAE;AANI,KAAb;AAQApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,SADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,iBAA4CnB,YAA5C,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBc,EAAhB,CAAmBH,WAAnB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,aADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,qBAAgDnB,YAAhD,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBkK,KAAhB,CAAsBvJ,WAAtB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,gBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,wBAAmDnB,YAAnD,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBS,QAAhB,CAAyBE,WAAzB,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,yBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,oCAA+DnB,YAA/D,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBwK,iBAAhB,CAAkC7J,WAAlC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,eADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,8BAAyDnB,YAAzD,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBK,WAAhB,CAA4BM,WAA5B,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,aAEM+C,SAFN,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,wBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,mCAA8DnB,YAA9D,CAFA;AAGX/C,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgBuK,oBAAhB,CAAqC5J,WAArC,CAFF,EAGEnB,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,cAEO+C,SAFP,GAGElD,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBA,WAAOpC,OAAP;AACD;;AAEDuF,EAAAA,iBAAiB,CAACrI,MAAD,EAA6C;AAAA,QAApCgK,WAAoC,uEAAtB,EAAsB;AAAA,QAAlBtK,QAAkB,uEAAP,KAAO;AAC5D,QAAM;AAAEQ,MAAAA,MAAF;AAAU+J,MAAAA,IAAI,EAAEpK;AAAhB,QAA+BmK,WAArC;AACA,QAAMlH,OAAO,GAAG,EAAhB;AACA,QAAM;AAAEN,MAAAA;AAAF,QAAY,KAAKjB,QAAL,CAAckB,KAAhC;AACA,QAAMR,WAAW,GAAGO,KAAK,CAACmH,oBAAN,CAA2B3J,MAAM,CAACqJ,IAAlC,CAApB;AAEAvG,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXqF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,SACGxK,QAAQ,GAAG,OAAH,GAAa,EADxB,aAFS;AAMXwF,MAAAA,KAAK,EAAE;AANI,KAAb;AAQApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,aADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,aAFA;AAGXlE,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgB2K,MAAhB,EAFF,EAGEnL,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,EAEE,MAFF,EAGEH,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAoBApC,IAAAA,OAAO,CAAC+B,IAAR,CAAa;AACXE,MAAAA,KAAK,EAAE,iBADI;AAEX0E,MAAAA,WAAW,iCAA0BzJ,MAAM,CAACqJ,IAAjC,iBAFA;AAGXlE,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAc4I,cAAd,CACElI,WADF,EAEE3C,0BAA0B,CAACC,uBAA3B,CACEW,MADF,EAEEF,MAAM,CAACE,MAAP,GAAgB2K,MAAhB,GAAyBP,GAAzB,EAFF,EAGE5K,QAHF,CAFF,EAOEJ,0BAA0B,CAACM,kBAA3B,CACEC,UADF,EAEE,OAFF,EAGEH,QAHF,CAPF;AAaD,OAjBU;AAkBXwF,MAAAA,KAAK,EAAE;AAlBI,KAAb;AAqBA,WAAOpC,OAAP;AACD;;AAED6D,EAAAA,aAAa,CAAC3G,MAAD,EAASoC,WAAT,EAAsB6B,UAAtB,EAAkC;AAC7C,QAAMX,KAAK,GAAG,KAAK/B,QAAL,CAAcgC,QAAd,EAAd;AACA,QAAM;AAAEK,MAAAA;AAAF,QAA+BN,KAArC;AACA,QAAMwH,WAAW,GAAG,CAClB;AACE/F,MAAAA,KAAK,YAAK/E,MAAM,CAACqJ,IAAZ,eADP;AAEEnE,MAAAA,KAAK,EAAE,EAFT;AAGEC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAcuF,UAAd,CACE1E,WADF,EAEE9C,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAFnD;AAID,OARH;AASEhF,MAAAA,IAAI,EAAE,KAAKiF,eAAL,CACJ/G,UADI,EAEJ3E,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAF7C,IAIF9M,QAJE,GAKF,IAdN;AAeE+H,MAAAA,SAAS,EAAEpC;AAfb,KADkB,EAkBlB;AACEmB,MAAAA,KAAK,YAAK/E,MAAM,CAACqJ,IAAZ,gBADP;AAEEnE,MAAAA,KAAK,EAAE,EAFT;AAGEC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAcuF,UAAd,CACE1E,WADF,EAEE9C,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAFnD;AAID,OARH;AASElF,MAAAA,IAAI,EAAE,KAAKiF,eAAL,CACJ/G,UADI,EAEJ3E,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAF7C,IAIFhN,QAJE,GAKF,IAdN;AAeE+H,MAAAA,SAAS,EAAEpC;AAfb,KAlBkB,EAmClB;AACEmB,MAAAA,KAAK,eADP;AAEEG,MAAAA,KAAK,EAAE,EAFT;AAGEC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAcuF,UAAd,CACE1E,WADF,EAEE9C,0BAA0B,CAACyH,qBAA3B,CAAiDC,IAFnD,EAGE,KAHF,EAIE,IAJF;AAMD,OAVH;AAWE3B,MAAAA,QAAQ,EAAE,CAACpB;AAXb,KAnCkB,CAApB;;AAiDA,QAAInF,UAAU,CAAC0I,YAAX,CAAwBxH,MAAM,CAACe,IAA/B,CAAJ,EAA0C;AACxC+J,MAAAA,WAAW,CAACjG,IAAZ,CAAiB;AACfE,QAAAA,KAAK,gBAAS/E,MAAM,CAACqJ,IAAhB,gBADU;AAEfnE,QAAAA,KAAK,EAAE,EAFQ;AAGfC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAcuF,UAAd,CACE1E,WADF,EAEE9C,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAFnD,EAGE,IAHF;AAKD,SATc;AAUfhF,QAAAA,IAAI,EAAE,KAAKiF,eAAL,CACJ/G,UADI,EAEJ3E,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAF7C,EAGJ,IAHI,IAKF9M,QALE,GAMF,IAhBW;AAiBf+H,QAAAA,SAAS,EAAEpC;AAjBI,OAAjB;AAmBAkH,MAAAA,WAAW,CAACjG,IAAZ,CAAiB;AACfE,QAAAA,KAAK,gBAAS/E,MAAM,CAACqJ,IAAhB,kBADU;AAEfnE,QAAAA,KAAK,EAAE,EAFQ;AAGfC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAcuF,UAAd,CACE1E,WADF,EAEE9C,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAFnD,EAGE,IAHF;AAKD,SATc;AAUflF,QAAAA,IAAI,EAAE,KAAKiF,eAAL,CACJ/G,UADI,EAEJ3E,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAF7C,EAGJ,IAHI,IAKFhN,QALE,GAMF,IAhBW;AAiBf+H,QAAAA,SAAS,EAAEpC;AAjBI,OAAjB;AAmBD;;AACD,WAAOkH,WAAP;AACD;;AAEDjE,EAAAA,qBAAqB,CAAC7G,MAAD,EAASiC,WAAT,EAAsB;AACzC,QAAMqB,KAAK,GAAG,KAAK/B,QAAL,CAAcgC,QAAd,EAAd;AACA,QAAM;AAAEK,MAAAA;AAAF,QAA+BN,KAArC;AACA,QAAMuD,qBAAqB,GAAG,CAC5B;AACE9B,MAAAA,KAAK,EAAE,aADT;AAEEmF,MAAAA,WAAW,eACT;AAAK,QAAA,SAAS,EAAC;AAAf,sBACE;AAAM,QAAA,SAAS,EAAC;AAAhB,sBACE,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEjM,QADR;AAEE,QAAA,KAAK,EAAE;AAAEiN,UAAAA,KAAK,EAAEtH;AAAT;AAFT,QADF,CADF,eAOE;AAAM,QAAA,SAAS,EAAC;AAAhB,+BAPF,eAQE;AAAM,QAAA,SAAS,EAAC;AAAhB,SACGtF,kBAAkB,CAAC6M,aAAnB,KAAqC,QAArC,GAAgD,QADnD,CARF,CAHJ;AAgBEjG,MAAAA,KAAK,EAAE;AAhBT,KAD4B,EAmB5B;AACEH,MAAAA,KAAK,YAAK/E,MAAM,CAACqJ,IAAZ,eADP;AAEEnE,MAAAA,KAAK,EAAE,EAFT;AAGEC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAcuF,UAAd,CACE7E,WADF,EAEE3C,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAFnD,EAGE,KAHF,EAIE,IAJF;AAMD;AAVH,KAnB4B,EA+B5B;AACEhG,MAAAA,KAAK,YAAK/E,MAAM,CAACqJ,IAAZ,gBADP;AAEEnE,MAAAA,KAAK,EAAE,EAFT;AAGEC,MAAAA,MAAM,EAAE,MAAM;AACZ,aAAK5D,QAAL,CAAcuF,UAAd,CACE7E,WADF,EAEE3C,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAFnD,EAGE,KAHF,EAIE,IAJF;AAMD;AAVH,KA/B4B,CAA9B;;AA4CA,QAAInM,UAAU,CAAC0I,YAAX,CAAwBxH,MAAM,CAACe,IAA/B,CAAJ,EAA0C;AACxC8F,MAAAA,qBAAqB,CAAChC,IAAtB,CAA2B;AACzBE,QAAAA,KAAK,gBAAS/E,MAAM,CAACqJ,IAAhB,gBADoB;AAEzBnE,QAAAA,KAAK,EAAE,EAFkB;AAGzBC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAcuF,UAAd,CACE7E,WADF,EAEE3C,0BAA0B,CAACyH,qBAA3B,CAAiDgE,SAFnD,EAGE,IAHF,EAIE,IAJF;AAMD;AAVwB,OAA3B;AAYAlE,MAAAA,qBAAqB,CAAChC,IAAtB,CAA2B;AACzBE,QAAAA,KAAK,gBAAS/E,MAAM,CAACqJ,IAAhB,kBADoB;AAEzBnE,QAAAA,KAAK,EAAE,EAFkB;AAGzBC,QAAAA,MAAM,EAAE,MAAM;AACZ,eAAK5D,QAAL,CAAcuF,UAAd,CACE7E,WADF,EAEE3C,0BAA0B,CAACyH,qBAA3B,CAAiDkE,UAFnD,EAGE,IAHF,EAIE,IAJF;AAMD;AAVwB,OAA3B;AAYD;;AACD,WAAOpE,qBAAP;AACD;;AAEDmE,EAAAA,eAAe,CAAC/G,UAAD,EAA8C;AAAA,QAAjCmH,SAAiC,uEAArB,IAAqB;AAAA,QAAfC,KAAe,uEAAP,KAAO;;AAC3D,QAAI,CAACpH,UAAL,EAAiB;AACf,aAAO,KAAP;AACD;;AACD,WAAOA,UAAU,CAACmH,SAAX,KAAyBA,SAAzB,IAAsCnH,UAAU,CAACoH,KAAX,KAAqBA,KAAlE;AACD;;AApzCuD;;gBAApD/L,0B,gBACgBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,E;;gBAD7CjM,0B,wBAGwBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,E;;gBAHrDjM,0B,kBAKkBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,E;;gBAL/CjM,0B,gBAOgBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,E;;gBAP7CjM,0B,gBASgBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,G;;gBAT7CjM,0B,kBAWkBjB,cAAc,CAACiN,MAAf,CAAsBC,IAAtB,GAA6B,G;;gBAX/CjM,0B,2BAa2B;AAC7ByL,EAAAA,SAAS,EAAE,KADkB;AAE7BE,EAAAA,UAAU,EAAE,MAFiB;AAG7BjE,EAAAA,IAAI,EAAE;AAHuB,C;;AA0yCjC,eAAe1H,0BAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { GridMouseHandler } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport TableUtils from '../TableUtils';\nimport { TableColumnFormatter, DateTimeColumnFormatter } from '../formatters';\nimport SHORTCUTS from '../IrisGridShortcuts';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n };\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param {FilterCondition} columnFilter\n * @param {FilterCondition} newColumnFilter\n * @param {boolean} additive\n */\n static getQuickFilterCondition(\n columnFilter,\n newColumnFilter,\n additive = false\n ) {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param {String} filterText\n * @param {String} newFilterText\n * @param {boolean} additive\n */\n static getQuickFilterText(filterText, newFilterText, additive = false) {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param {dh.Column} column The column to make the filter for\n * @param {Number} value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(column, value) {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(columnType, value) {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value))\n : dh.FilterValue.ofNumber(value);\n }\n\n constructor(irisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount() {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n onContextMenu(gridPoint, grid, event) {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const value = model.valueForCell(modelColumn, modelRow);\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [];\n\n const {\n metrics,\n isFilterBarShown,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { columnHeaderHeight, gridY } = metrics;\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n const { onContextMenu, settings } = irisGrid.props;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings.timeZone,\n showTimeZone: settings.showTimeZone,\n showTSeparator: settings.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column != null) {\n const { table } = model;\n actions.push(\n onContextMenu({\n table,\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (column != null && model.isFilterable(modelColumn)) {\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex);\n },\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter !== null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column),\n });\n }\n }\n } else {\n // grid data area context menu options\n if (column != null && rowIndex != null) {\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: null,\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: null,\n disabled: !quickFilters.get(modelColumn),\n };\n\n if (value != null) {\n // Chars get treated like numbers in terms of which filters are available\n if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value)\n : `${value}`;\n filterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value);\n const previewValue = previewFilterFormatter.format(value);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (\n andFilterMenu.actions != null &&\n andFilterMenu.actions.length > 0\n ) {\n actions.push(andFilterMenu);\n }\n }\n\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n\n if (model.isEditable) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : null,\n group,\n order: i,\n action: () => {\n this.irisGrid.handleFormatSelection(\n model.getColumnIndexByName(column.name),\n format\n );\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : null,\n order: i,\n action: () => {\n if (\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofString(value);\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(column, valueText, quickFilter = {}, additive = false) {\n const actions = [];\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column,\n valueText,\n previewValue,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofNumber(value);\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(column, quickFilter = {}, additive = false) {\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(column, modelColumn, columnSort) {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(column, columnIndex) {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(columnSort, direction = null, isAbs = false) {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","dh","Log","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","TableUtils","TableColumnFormatter","DateTimeColumnFormatter","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","onContextMenu","gridPoint","grid","event","y","columnIndex","row","rowIndex","modelColumn","getModelColumn","modelRow","getModelRow","model","props","columns","valueForCell","valueText","textForCell","actions","metrics","isFilterBarShown","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","columnHeaderHeight","gridY","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","settings","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","table","push","isFilterable","title","group","GROUP_FILTER","order","action","removeColumnFilter","disabled","has","userColumnWidths","isColumnHidden","values","some","columnWidth","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","name","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { GridMouseHandler } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport TableUtils from '../TableUtils';\nimport { TableColumnFormatter, DateTimeColumnFormatter } from '../formatters';\nimport SHORTCUTS from '../IrisGridShortcuts';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n };\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param {FilterCondition} columnFilter\n * @param {FilterCondition} newColumnFilter\n * @param {boolean} additive\n */\n static getQuickFilterCondition(\n columnFilter,\n newColumnFilter,\n additive = false\n ) {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param {String} filterText\n * @param {String} newFilterText\n * @param {boolean} additive\n */\n static getQuickFilterText(filterText, newFilterText, additive = false) {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param {dh.Column} column The column to make the filter for\n * @param {Number} value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(column, value) {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(columnType, value) {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value))\n : dh.FilterValue.ofNumber(value);\n }\n\n constructor(irisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount() {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n onContextMenu(gridPoint, grid, event) {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const value = model.valueForCell(modelColumn, modelRow);\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [];\n\n const {\n metrics,\n isFilterBarShown,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { columnHeaderHeight, gridY } = metrics;\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n const { onContextMenu, settings } = irisGrid.props;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings.timeZone,\n showTimeZone: settings.showTimeZone,\n showTSeparator: settings.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column != null) {\n const { table } = model;\n actions.push(\n onContextMenu({\n table,\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (column != null && model.isFilterable(modelColumn)) {\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex);\n },\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter !== null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn)\n ).catch(e => log.error('Unable to copy header', e));\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column),\n });\n }\n }\n } else {\n // grid data area context menu options\n if (column != null && rowIndex != null) {\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: null,\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: null,\n disabled: !quickFilters.get(modelColumn),\n };\n\n if (value != null) {\n // Chars get treated like numbers in terms of which filters are available\n if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value)\n : `${value}`;\n filterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value);\n const previewValue = previewFilterFormatter.format(value);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (\n andFilterMenu.actions != null &&\n andFilterMenu.actions.length > 0\n ) {\n actions.push(andFilterMenu);\n }\n }\n\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n\n if (model.isEditable) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : null,\n group,\n order: i,\n action: () => {\n this.irisGrid.handleFormatSelection(\n model.getColumnIndexByName(column.name),\n format\n );\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : null,\n order: i,\n action: () => {\n if (\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofString(value);\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(column, valueText, quickFilter = {}, additive = false) {\n const actions = [];\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column,\n valueText,\n previewValue,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofNumber(value);\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(column, quickFilter = {}, additive = false) {\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(column, modelColumn, columnSort) {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : null,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(column, columnIndex) {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(columnSort, direction = null, isAbs = false) {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|
|
@@ -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 =
|
|
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(
|
|
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) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
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(
|
|
274
|
+
this.setState(_ref => {
|
|
275
275
|
var {
|
|
276
276
|
hasRequestFailed
|
|
277
277
|
} = _ref;
|