@deephaven/grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CellInputField.js +41 -22
- package/dist/CellInputField.js.map +1 -1
- package/dist/CellRenderer.js +19 -27
- package/dist/CellRenderer.js.map +1 -1
- package/dist/DataBarCellRenderer.js +61 -87
- package/dist/DataBarCellRenderer.js.map +1 -1
- package/dist/Grid.js +281 -455
- package/dist/Grid.js.map +1 -1
- package/dist/GridColorUtils.js +23 -21
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.js +192 -303
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridRange.js +18 -28
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +432 -604
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridUtils.d.ts +33 -16
- package/dist/GridUtils.d.ts.map +1 -1
- package/dist/GridUtils.js +183 -213
- package/dist/GridUtils.js.map +1 -1
- package/dist/MockGridModel.js +17 -10
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.js +36 -31
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/TextCellRenderer.js +36 -57
- package/dist/TextCellRenderer.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +4 -7
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js +1 -3
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +40 -71
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +4 -10
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js +3 -7
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +54 -82
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +4 -8
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +31 -55
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +26 -46
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +2 -4
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +14 -22
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +8 -16
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +47 -75
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +9 -23
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridTokenMouseHandler.js +24 -39
- package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +31 -55
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/package.json +3 -3
package/dist/CellInputField.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
8
|
import classNames from 'classnames';
|
|
3
9
|
import { EMPTY_FUNCTION } from '@deephaven/utils';
|
|
@@ -20,31 +26,46 @@ var directionForKey = key => {
|
|
|
20
26
|
}
|
|
21
27
|
};
|
|
22
28
|
export function CellInputField(_ref) {
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
className = '',
|
|
26
|
-
disabled =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
var selectionRange = _ref.selectionRange,
|
|
30
|
+
_ref$className = _ref.className,
|
|
31
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
|
32
|
+
_ref$disabled = _ref.disabled,
|
|
33
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
34
|
+
_ref$value = _ref.value,
|
|
35
|
+
propsValue = _ref$value === void 0 ? '' : _ref$value,
|
|
36
|
+
_ref$isQuickEdit = _ref.isQuickEdit,
|
|
37
|
+
propsIsQuickEdit = _ref$isQuickEdit === void 0 ? true : _ref$isQuickEdit,
|
|
38
|
+
_ref$onChange = _ref.onChange,
|
|
39
|
+
onChange = _ref$onChange === void 0 ? EMPTY_FUNCTION : _ref$onChange,
|
|
40
|
+
_ref$onCancel = _ref.onCancel,
|
|
41
|
+
onCancel = _ref$onCancel === void 0 ? EMPTY_FUNCTION : _ref$onCancel,
|
|
42
|
+
_ref$onDone = _ref.onDone,
|
|
43
|
+
onDone = _ref$onDone === void 0 ? EMPTY_FUNCTION : _ref$onDone,
|
|
44
|
+
_ref$onContextMenu = _ref.onContextMenu,
|
|
45
|
+
onContextMenu = _ref$onContextMenu === void 0 ? EMPTY_FUNCTION : _ref$onContextMenu,
|
|
46
|
+
style = _ref.style;
|
|
35
47
|
var inputField = useRef(null);
|
|
36
48
|
// Use a ref for `isCancelled` as we need to know when it's cancelled after it's called by the event handlers as well
|
|
37
49
|
var isCancelled = useRef(false);
|
|
38
|
-
var
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
50
|
+
var _useState = useState(propsValue),
|
|
51
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
52
|
+
initialValue = _useState2[0];
|
|
53
|
+
var _useState3 = useState(false),
|
|
54
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
55
|
+
isChanged = _useState4[0],
|
|
56
|
+
setIsChanged = _useState4[1];
|
|
57
|
+
var _useState5 = useState(propsIsQuickEdit),
|
|
58
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
59
|
+
isQuickEdit = _useState6[0],
|
|
60
|
+
setIsQuickEdit = _useState6[1];
|
|
61
|
+
var _useState7 = useState(propsValue),
|
|
62
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
63
|
+
value = _useState8[0],
|
|
64
|
+
setValue = _useState8[1];
|
|
42
65
|
|
|
43
66
|
// Init field selection
|
|
44
67
|
useEffect(function selectInputField() {
|
|
45
|
-
var
|
|
46
|
-
current: field
|
|
47
|
-
} = inputField;
|
|
68
|
+
var field = inputField.current;
|
|
48
69
|
if (field == null) {
|
|
49
70
|
return;
|
|
50
71
|
}
|
|
@@ -59,9 +80,7 @@ export function CellInputField(_ref) {
|
|
|
59
80
|
onChange(newValue);
|
|
60
81
|
}, [onChange]);
|
|
61
82
|
var handleChange = useCallback(event => {
|
|
62
|
-
var
|
|
63
|
-
value: newValue
|
|
64
|
-
} = event.target;
|
|
83
|
+
var newValue = event.target.value;
|
|
65
84
|
setValue(newValue);
|
|
66
85
|
setIsChanged(true);
|
|
67
86
|
sendUpdate(newValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellInputField.js","names":["React","useCallback","useEffect","useRef","useState","classNames","EMPTY_FUNCTION","SELECTION_DIRECTION","GridUtils","jsx","_jsx","directionForKey","key","DOWN","UP","LEFT","RIGHT","undefined","CellInputField","_ref","selectionRange","className","disabled","value","propsValue","isQuickEdit","propsIsQuickEdit","onChange","onCancel","onDone","onContextMenu","style","inputField","isCancelled","initialValue","isChanged","setIsChanged","setIsQuickEdit","setValue","selectInputField","current","field","focus","setSelectionRange","length","sendUpdate","newValue","handleChange","event","target","handleCancel","handleClick","handleCommit","direction","fillRange","arguments","handleBlur","handleKeyDown","stopPropagation","preventDefault","isModifierKeyDown","altKey","concat","shiftKey","handleContextMenu","ref","onBlur","onKeyDown","onClick","autoComplete","autoCorrect","autoCapitalize","spellCheck"],"sources":["../src/CellInputField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { SELECTION_DIRECTION } from './GridRange';\nimport GridUtils from './GridUtils';\nimport './CellInputField.scss';\n\nexport type CellInputFieldProps = {\n selectionRange?: number[];\n className?: string;\n disabled?: boolean;\n isQuickEdit?: boolean;\n value?: string;\n onChange?: (value: string) => void;\n onCancel?: () => void;\n onDone?: (\n value: string,\n options: {\n direction?: SELECTION_DIRECTION | null;\n fillRange?: boolean;\n }\n ) => void;\n onContextMenu?: React.MouseEventHandler<HTMLTextAreaElement>;\n style?: React.CSSProperties;\n};\n\nconst directionForKey = (key: string): SELECTION_DIRECTION | undefined => {\n switch (key) {\n case 'ArrowDown':\n return SELECTION_DIRECTION.DOWN;\n case 'ArrowUp':\n return SELECTION_DIRECTION.UP;\n case 'ArrowLeft':\n return SELECTION_DIRECTION.LEFT;\n case 'ArrowRight':\n return SELECTION_DIRECTION.RIGHT;\n default:\n return undefined;\n }\n};\n\nexport function CellInputField({\n selectionRange,\n className = '',\n disabled = false,\n value: propsValue = '',\n isQuickEdit: propsIsQuickEdit = true,\n onChange = EMPTY_FUNCTION,\n onCancel = EMPTY_FUNCTION,\n onDone = EMPTY_FUNCTION,\n onContextMenu = EMPTY_FUNCTION,\n style,\n}: CellInputFieldProps): JSX.Element {\n const inputField = useRef<HTMLTextAreaElement>(null);\n // Use a ref for `isCancelled` as we need to know when it's cancelled after it's called by the event handlers as well\n const isCancelled = useRef<boolean>(false);\n const [initialValue] = useState(propsValue);\n const [isChanged, setIsChanged] = useState(false);\n const [isQuickEdit, setIsQuickEdit] = useState(propsIsQuickEdit);\n const [value, setValue] = useState(propsValue);\n\n // Init field selection\n useEffect(\n function selectInputField() {\n const { current: field } = inputField;\n if (field == null) {\n return;\n }\n\n field.focus();\n if (selectionRange) {\n field.setSelectionRange(selectionRange[0], selectionRange[1]);\n } else {\n field.setSelectionRange(field.value.length, field.value.length);\n }\n },\n [selectionRange]\n );\n\n const sendUpdate = useCallback(\n (newValue: string) => {\n onChange(newValue);\n },\n [onChange]\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const { value: newValue } = event.target;\n setValue(newValue);\n setIsChanged(true);\n sendUpdate(newValue);\n },\n [sendUpdate, setValue, setIsChanged]\n );\n\n const handleCancel = useCallback(() => {\n isCancelled.current = true;\n if (isChanged) {\n sendUpdate(initialValue);\n }\n\n setIsChanged(false);\n onCancel();\n }, [initialValue, isChanged, onCancel, sendUpdate]);\n\n const handleClick = useCallback(() => {\n setIsQuickEdit(false);\n }, [setIsQuickEdit]);\n\n const handleCommit = useCallback(\n (direction?: SELECTION_DIRECTION | null, fillRange = false) => {\n onDone(value, { direction, fillRange });\n },\n [onDone, value]\n );\n\n const handleBlur = useCallback(() => {\n if (isCancelled.current) {\n return;\n }\n\n handleCommit(null);\n }, [isCancelled, handleCommit]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n event.stopPropagation();\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault();\n handleCancel();\n break;\n case 'Enter':\n event.preventDefault();\n if (GridUtils.isModifierKeyDown(event)) {\n handleCommit(undefined, true);\n } else if (event.altKey) {\n const newValue = `${value}\\n`;\n setValue(newValue);\n setIsChanged(true);\n sendUpdate(newValue);\n } else {\n handleCommit(\n event.shiftKey ? SELECTION_DIRECTION.UP : SELECTION_DIRECTION.DOWN\n );\n }\n break;\n case 'Tab':\n event.preventDefault();\n handleCommit(\n event.shiftKey\n ? SELECTION_DIRECTION.LEFT\n : SELECTION_DIRECTION.RIGHT\n );\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowLeft':\n case 'ArrowRight':\n if (isQuickEdit) {\n event.preventDefault();\n handleCommit(directionForKey(event.key));\n }\n break;\n default:\n break;\n }\n },\n [\n handleCancel,\n handleCommit,\n isQuickEdit,\n setValue,\n setIsChanged,\n sendUpdate,\n value,\n ]\n );\n\n const handleContextMenu = useCallback(\n (event: React.MouseEvent<HTMLTextAreaElement, MouseEvent>) => {\n onContextMenu(event);\n },\n [onContextMenu]\n );\n\n return (\n <textarea\n ref={inputField}\n className={classNames('grid-cell-input-field', className)}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n disabled={disabled}\n style={style}\n />\n );\n}\n\nexport default CellInputField;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CellInputField.js","names":["React","useCallback","useEffect","useRef","useState","classNames","EMPTY_FUNCTION","SELECTION_DIRECTION","GridUtils","jsx","_jsx","directionForKey","key","DOWN","UP","LEFT","RIGHT","undefined","CellInputField","_ref","selectionRange","_ref$className","className","_ref$disabled","disabled","_ref$value","value","propsValue","_ref$isQuickEdit","isQuickEdit","propsIsQuickEdit","_ref$onChange","onChange","_ref$onCancel","onCancel","_ref$onDone","onDone","_ref$onContextMenu","onContextMenu","style","inputField","isCancelled","_useState","_useState2","_slicedToArray","initialValue","_useState3","_useState4","isChanged","setIsChanged","_useState5","_useState6","setIsQuickEdit","_useState7","_useState8","setValue","selectInputField","field","current","focus","setSelectionRange","length","sendUpdate","newValue","handleChange","event","target","handleCancel","handleClick","handleCommit","direction","fillRange","arguments","handleBlur","handleKeyDown","stopPropagation","preventDefault","isModifierKeyDown","altKey","concat","shiftKey","handleContextMenu","ref","onBlur","onKeyDown","onClick","autoComplete","autoCorrect","autoCapitalize","spellCheck"],"sources":["../src/CellInputField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { SELECTION_DIRECTION } from './GridRange';\nimport GridUtils from './GridUtils';\nimport './CellInputField.scss';\n\nexport type CellInputFieldProps = {\n selectionRange?: number[];\n className?: string;\n disabled?: boolean;\n isQuickEdit?: boolean;\n value?: string;\n onChange?: (value: string) => void;\n onCancel?: () => void;\n onDone?: (\n value: string,\n options: {\n direction?: SELECTION_DIRECTION | null;\n fillRange?: boolean;\n }\n ) => void;\n onContextMenu?: React.MouseEventHandler<HTMLTextAreaElement>;\n style?: React.CSSProperties;\n};\n\nconst directionForKey = (key: string): SELECTION_DIRECTION | undefined => {\n switch (key) {\n case 'ArrowDown':\n return SELECTION_DIRECTION.DOWN;\n case 'ArrowUp':\n return SELECTION_DIRECTION.UP;\n case 'ArrowLeft':\n return SELECTION_DIRECTION.LEFT;\n case 'ArrowRight':\n return SELECTION_DIRECTION.RIGHT;\n default:\n return undefined;\n }\n};\n\nexport function CellInputField({\n selectionRange,\n className = '',\n disabled = false,\n value: propsValue = '',\n isQuickEdit: propsIsQuickEdit = true,\n onChange = EMPTY_FUNCTION,\n onCancel = EMPTY_FUNCTION,\n onDone = EMPTY_FUNCTION,\n onContextMenu = EMPTY_FUNCTION,\n style,\n}: CellInputFieldProps): JSX.Element {\n const inputField = useRef<HTMLTextAreaElement>(null);\n // Use a ref for `isCancelled` as we need to know when it's cancelled after it's called by the event handlers as well\n const isCancelled = useRef<boolean>(false);\n const [initialValue] = useState(propsValue);\n const [isChanged, setIsChanged] = useState(false);\n const [isQuickEdit, setIsQuickEdit] = useState(propsIsQuickEdit);\n const [value, setValue] = useState(propsValue);\n\n // Init field selection\n useEffect(\n function selectInputField() {\n const { current: field } = inputField;\n if (field == null) {\n return;\n }\n\n field.focus();\n if (selectionRange) {\n field.setSelectionRange(selectionRange[0], selectionRange[1]);\n } else {\n field.setSelectionRange(field.value.length, field.value.length);\n }\n },\n [selectionRange]\n );\n\n const sendUpdate = useCallback(\n (newValue: string) => {\n onChange(newValue);\n },\n [onChange]\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const { value: newValue } = event.target;\n setValue(newValue);\n setIsChanged(true);\n sendUpdate(newValue);\n },\n [sendUpdate, setValue, setIsChanged]\n );\n\n const handleCancel = useCallback(() => {\n isCancelled.current = true;\n if (isChanged) {\n sendUpdate(initialValue);\n }\n\n setIsChanged(false);\n onCancel();\n }, [initialValue, isChanged, onCancel, sendUpdate]);\n\n const handleClick = useCallback(() => {\n setIsQuickEdit(false);\n }, [setIsQuickEdit]);\n\n const handleCommit = useCallback(\n (direction?: SELECTION_DIRECTION | null, fillRange = false) => {\n onDone(value, { direction, fillRange });\n },\n [onDone, value]\n );\n\n const handleBlur = useCallback(() => {\n if (isCancelled.current) {\n return;\n }\n\n handleCommit(null);\n }, [isCancelled, handleCommit]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n event.stopPropagation();\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault();\n handleCancel();\n break;\n case 'Enter':\n event.preventDefault();\n if (GridUtils.isModifierKeyDown(event)) {\n handleCommit(undefined, true);\n } else if (event.altKey) {\n const newValue = `${value}\\n`;\n setValue(newValue);\n setIsChanged(true);\n sendUpdate(newValue);\n } else {\n handleCommit(\n event.shiftKey ? SELECTION_DIRECTION.UP : SELECTION_DIRECTION.DOWN\n );\n }\n break;\n case 'Tab':\n event.preventDefault();\n handleCommit(\n event.shiftKey\n ? SELECTION_DIRECTION.LEFT\n : SELECTION_DIRECTION.RIGHT\n );\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowLeft':\n case 'ArrowRight':\n if (isQuickEdit) {\n event.preventDefault();\n handleCommit(directionForKey(event.key));\n }\n break;\n default:\n break;\n }\n },\n [\n handleCancel,\n handleCommit,\n isQuickEdit,\n setValue,\n setIsChanged,\n sendUpdate,\n value,\n ]\n );\n\n const handleContextMenu = useCallback(\n (event: React.MouseEvent<HTMLTextAreaElement, MouseEvent>) => {\n onContextMenu(event);\n },\n [onContextMenu]\n );\n\n return (\n <textarea\n ref={inputField}\n className={classNames('grid-cell-input-field', className)}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n disabled={disabled}\n style={style}\n />\n );\n}\n\nexport default CellInputField;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/CellRenderer.js
CHANGED
|
@@ -13,27 +13,21 @@ class CellRenderer {
|
|
|
13
13
|
}));
|
|
14
14
|
}
|
|
15
15
|
drawCellRowTreeMarker(context, state, row) {
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
visibleRowTreeBoxes
|
|
32
|
-
} = metrics;
|
|
33
|
-
var {
|
|
34
|
-
treeMarkerColor,
|
|
35
|
-
treeMarkerHoverColor
|
|
36
|
-
} = theme;
|
|
16
|
+
var metrics = state.metrics,
|
|
17
|
+
model = state.model,
|
|
18
|
+
mouseX = state.mouseX,
|
|
19
|
+
mouseY = state.mouseY,
|
|
20
|
+
theme = state.theme;
|
|
21
|
+
var firstColumn = metrics.firstColumn,
|
|
22
|
+
gridX = metrics.gridX,
|
|
23
|
+
gridY = metrics.gridY,
|
|
24
|
+
allColumnXs = metrics.allColumnXs,
|
|
25
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
26
|
+
allRowYs = metrics.allRowYs,
|
|
27
|
+
allRowHeights = metrics.allRowHeights,
|
|
28
|
+
visibleRowTreeBoxes = metrics.visibleRowTreeBoxes;
|
|
29
|
+
var treeMarkerColor = theme.treeMarkerColor,
|
|
30
|
+
treeMarkerHoverColor = theme.treeMarkerHoverColor;
|
|
37
31
|
var columnX = getOrThrow(allColumnXs, firstColumn);
|
|
38
32
|
var columnWidth = getOrThrow(allColumnWidths, firstColumn);
|
|
39
33
|
var rowY = getOrThrow(allRowYs, row);
|
|
@@ -46,12 +40,10 @@ class CellRenderer {
|
|
|
46
40
|
this.drawTreeMarker(context, state, columnX, rowY, treeBox, color, model.isRowExpanded(row));
|
|
47
41
|
}
|
|
48
42
|
drawTreeMarker(context, state, columnX, rowY, treeBox, color, isExpanded) {
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
y2
|
|
54
|
-
} = treeBox;
|
|
43
|
+
var x1 = treeBox.x1,
|
|
44
|
+
y1 = treeBox.y1,
|
|
45
|
+
x2 = treeBox.x2,
|
|
46
|
+
y2 = treeBox.y2;
|
|
55
47
|
var markerText = isExpanded ? '⊟' : '⊞';
|
|
56
48
|
var textX = columnX + (x1 + x2) * 0.5 + 0.5;
|
|
57
49
|
var textY = rowY + (y1 + y2) * 0.5 + 0.5;
|
package/dist/CellRenderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellRenderer.js","names":["getOrThrow","isExpandableGridModel","GridRenderer","memoizeClear","CellRenderer","constructor","_defineProperty","context","text","width","fontWidthLower","fontWidthUpper","truncationChar","truncateToWidth","max","drawCellRowTreeMarker","state","row","metrics","model","mouseX","mouseY","theme","firstColumn","gridX","gridY","allColumnXs","allColumnWidths","allRowYs","allRowHeights","visibleRowTreeBoxes","treeMarkerColor","treeMarkerHoverColor","columnX","columnWidth","rowY","rowHeight","isRowExpandable","treeBox","color","drawTreeMarker","isRowExpanded","isExpanded","x1","y1","x2","y2","markerText","textX","textY","fillStyle","textAlign","fillText"],"sources":["../src/CellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport {\n type VisibleIndex,\n type Coordinate,\n type BoxCoordinates,\n} from './GridMetrics';\nimport GridRenderer from './GridRenderer';\nimport { type GridRenderState } from './GridRendererTypes';\nimport { type GridColor } from './GridTheme';\nimport memoizeClear from './memoizeClear';\n\nexport type CellRenderType = 'text' | 'dataBar';\n\nabstract class CellRenderer {\n abstract drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void;\n\n drawCellRowTreeMarker(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n row: VisibleIndex\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n firstColumn,\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n allRowHeights,\n visibleRowTreeBoxes,\n } = metrics;\n const { treeMarkerColor, treeMarkerHoverColor } = theme;\n const columnX = getOrThrow(allColumnXs, firstColumn);\n const columnWidth = getOrThrow(allColumnWidths, firstColumn);\n const rowY = getOrThrow(allRowYs, row);\n const rowHeight = getOrThrow(allRowHeights, row);\n if (!isExpandableGridModel(model) || !model.isRowExpandable(row)) {\n return;\n }\n\n const treeBox = getOrThrow(visibleRowTreeBoxes, row);\n const color =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX + columnX &&\n mouseX <= gridX + columnX + columnWidth &&\n mouseY >= gridY + rowY &&\n mouseY <= gridY + rowY + rowHeight\n ? treeMarkerHoverColor\n : treeMarkerColor;\n\n this.drawTreeMarker(\n context,\n state,\n columnX,\n rowY,\n treeBox,\n color,\n model.isRowExpanded(row)\n );\n }\n\n drawTreeMarker(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n columnX: Coordinate,\n rowY: Coordinate,\n treeBox: BoxCoordinates,\n color: GridColor,\n isExpanded: boolean\n ): void {\n const { x1, y1, x2, y2 } = treeBox;\n const markerText = isExpanded ? '⊟' : '⊞';\n const textX = columnX + (x1 + x2) * 0.5 + 0.5;\n const textY = rowY + (y1 + y2) * 0.5 + 0.5;\n context.fillStyle = color;\n context.textAlign = 'center';\n context.fillText(markerText, textX, textY);\n }\n\n getCachedTruncatedString = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n text: string,\n width: number,\n fontWidthLower?: number,\n fontWidthUpper?: number,\n truncationChar?: string\n ): string =>\n GridRenderer.truncateToWidth(\n context,\n text,\n width,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n ),\n { max: 10000 }\n );\n}\n\nexport default CellRenderer;\n"],"mappings":";;;AAAA;AACA,SAASA,UAAU,QAAQ,kBAAkB;AAAC,SACrCC,qBAAqB;AAAA,OAMvBC,YAAY;AAAA,OAGZC,YAAY;AAInB,MAAeC,YAAY,CAAC;EAAAC,YAAA;IAAAC,eAAA,mCAyECH,YAAY,CACrC,CACEI,OAAiC,EACjCC,IAAY,EACZC,KAAa,EACbC,cAAuB,EACvBC,cAAuB,EACvBC,cAAuB,KAEvBV,YAAY,CAACW,eAAe,CAC1BN,OAAO,EACPC,IAAI,EACJC,KAAK,EACLC,cAAc,EACdC,cAAc,EACdC,cACF,CAAC,EACH;MAAEE,GAAG,EAAE;IAAM,CACf,CAAC;EAAA;EAnFDC,qBAAqBA,CACnBR,OAAiC,EACjCS,KAAsB,EACtBC,GAAiB,EACX;IACN,
|
|
1
|
+
{"version":3,"file":"CellRenderer.js","names":["getOrThrow","isExpandableGridModel","GridRenderer","memoizeClear","CellRenderer","constructor","_defineProperty","context","text","width","fontWidthLower","fontWidthUpper","truncationChar","truncateToWidth","max","drawCellRowTreeMarker","state","row","metrics","model","mouseX","mouseY","theme","firstColumn","gridX","gridY","allColumnXs","allColumnWidths","allRowYs","allRowHeights","visibleRowTreeBoxes","treeMarkerColor","treeMarkerHoverColor","columnX","columnWidth","rowY","rowHeight","isRowExpandable","treeBox","color","drawTreeMarker","isRowExpanded","isExpanded","x1","y1","x2","y2","markerText","textX","textY","fillStyle","textAlign","fillText"],"sources":["../src/CellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport {\n type VisibleIndex,\n type Coordinate,\n type BoxCoordinates,\n} from './GridMetrics';\nimport GridRenderer from './GridRenderer';\nimport { type GridRenderState } from './GridRendererTypes';\nimport { type GridColor } from './GridTheme';\nimport memoizeClear from './memoizeClear';\n\nexport type CellRenderType = 'text' | 'dataBar';\n\nabstract class CellRenderer {\n abstract drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void;\n\n drawCellRowTreeMarker(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n row: VisibleIndex\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n firstColumn,\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n allRowHeights,\n visibleRowTreeBoxes,\n } = metrics;\n const { treeMarkerColor, treeMarkerHoverColor } = theme;\n const columnX = getOrThrow(allColumnXs, firstColumn);\n const columnWidth = getOrThrow(allColumnWidths, firstColumn);\n const rowY = getOrThrow(allRowYs, row);\n const rowHeight = getOrThrow(allRowHeights, row);\n if (!isExpandableGridModel(model) || !model.isRowExpandable(row)) {\n return;\n }\n\n const treeBox = getOrThrow(visibleRowTreeBoxes, row);\n const color =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX + columnX &&\n mouseX <= gridX + columnX + columnWidth &&\n mouseY >= gridY + rowY &&\n mouseY <= gridY + rowY + rowHeight\n ? treeMarkerHoverColor\n : treeMarkerColor;\n\n this.drawTreeMarker(\n context,\n state,\n columnX,\n rowY,\n treeBox,\n color,\n model.isRowExpanded(row)\n );\n }\n\n drawTreeMarker(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n columnX: Coordinate,\n rowY: Coordinate,\n treeBox: BoxCoordinates,\n color: GridColor,\n isExpanded: boolean\n ): void {\n const { x1, y1, x2, y2 } = treeBox;\n const markerText = isExpanded ? '⊟' : '⊞';\n const textX = columnX + (x1 + x2) * 0.5 + 0.5;\n const textY = rowY + (y1 + y2) * 0.5 + 0.5;\n context.fillStyle = color;\n context.textAlign = 'center';\n context.fillText(markerText, textX, textY);\n }\n\n getCachedTruncatedString = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n text: string,\n width: number,\n fontWidthLower?: number,\n fontWidthUpper?: number,\n truncationChar?: string\n ): string =>\n GridRenderer.truncateToWidth(\n context,\n text,\n width,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n ),\n { max: 10000 }\n );\n}\n\nexport default CellRenderer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,23 +32,19 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
32
32
|
}));
|
|
33
33
|
}
|
|
34
34
|
drawCellContent(context, state, column, row) {
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
theme
|
|
39
|
-
} = state;
|
|
35
|
+
var metrics = state.metrics,
|
|
36
|
+
model = state.model,
|
|
37
|
+
theme = state.theme;
|
|
40
38
|
if (!isDataBarGridModel(model)) {
|
|
41
39
|
return;
|
|
42
40
|
}
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
fontWidthsUpper
|
|
51
|
-
} = metrics;
|
|
41
|
+
var modelColumns = metrics.modelColumns,
|
|
42
|
+
modelRows = metrics.modelRows,
|
|
43
|
+
allRowHeights = metrics.allRowHeights,
|
|
44
|
+
allRowYs = metrics.allRowYs,
|
|
45
|
+
firstColumn = metrics.firstColumn,
|
|
46
|
+
fontWidthsLower = metrics.fontWidthsLower,
|
|
47
|
+
fontWidthsUpper = metrics.fontWidthsUpper;
|
|
52
48
|
var isFirstColumn = column === firstColumn;
|
|
53
49
|
var rowHeight = getOrThrow(allRowHeights, row);
|
|
54
50
|
var modelRow = getOrThrow(modelRows, row);
|
|
@@ -56,41 +52,38 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
56
52
|
var rowY = getOrThrow(allRowYs, row);
|
|
57
53
|
var textAlign = model.textAlignForCell(modelColumn, modelRow);
|
|
58
54
|
var text = model.textForCell(modelColumn, modelRow);
|
|
59
|
-
var
|
|
60
|
-
x
|
|
61
|
-
y
|
|
62
|
-
width
|
|
63
|
-
} = GridUtils.getTextRenderMetrics(state, column, row);
|
|
55
|
+
var _GridUtils$getTextRen = GridUtils.getTextRenderMetrics(state, column, row),
|
|
56
|
+
textX = _GridUtils$getTextRen.x,
|
|
57
|
+
textY = _GridUtils$getTextRen.y,
|
|
58
|
+
textWidth = _GridUtils$getTextRen.width;
|
|
64
59
|
var fontWidthLower = fontWidthsLower.get(context.font);
|
|
65
60
|
var fontWidthUpper = fontWidthsUpper.get(context.font);
|
|
66
61
|
var truncationChar = model.truncationCharForCell(modelColumn, modelRow);
|
|
67
62
|
var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidthLower, fontWidthUpper, truncationChar);
|
|
68
|
-
var
|
|
69
|
-
columnMin,
|
|
70
|
-
columnMax,
|
|
71
|
-
axis,
|
|
72
|
-
color
|
|
73
|
-
textColor,
|
|
74
|
-
valuePlacement,
|
|
75
|
-
opacity,
|
|
76
|
-
markers,
|
|
77
|
-
direction,
|
|
78
|
-
value
|
|
79
|
-
} = model.dataBarOptionsForCell(modelColumn, modelRow, theme);
|
|
63
|
+
var _model$dataBarOptions = model.dataBarOptionsForCell(modelColumn, modelRow, theme),
|
|
64
|
+
columnMin = _model$dataBarOptions.columnMin,
|
|
65
|
+
columnMax = _model$dataBarOptions.columnMax,
|
|
66
|
+
axis = _model$dataBarOptions.axis,
|
|
67
|
+
dataBarColor = _model$dataBarOptions.color,
|
|
68
|
+
textColor = _model$dataBarOptions.textColor,
|
|
69
|
+
valuePlacement = _model$dataBarOptions.valuePlacement,
|
|
70
|
+
opacity = _model$dataBarOptions.opacity,
|
|
71
|
+
markers = _model$dataBarOptions.markers,
|
|
72
|
+
direction = _model$dataBarOptions.direction,
|
|
73
|
+
value = _model$dataBarOptions.value;
|
|
80
74
|
var hasGradient = Array.isArray(dataBarColor) && dataBarColor.length > 1;
|
|
81
75
|
if (columnMin == null || columnMax == null) {
|
|
82
76
|
return;
|
|
83
77
|
}
|
|
84
|
-
var
|
|
85
|
-
maxWidth,
|
|
86
|
-
x
|
|
87
|
-
y
|
|
88
|
-
zeroPosition,
|
|
89
|
-
leftmostPosition,
|
|
90
|
-
markerXs,
|
|
91
|
-
totalValueRange,
|
|
92
|
-
dataBarWidth
|
|
93
|
-
} = this.getDataBarRenderMetrics(context, state, column, row);
|
|
78
|
+
var _this$getDataBarRende = this.getDataBarRenderMetrics(context, state, column, row),
|
|
79
|
+
maxWidth = _this$getDataBarRende.maxWidth,
|
|
80
|
+
dataBarX = _this$getDataBarRende.x,
|
|
81
|
+
dataBarY = _this$getDataBarRende.y,
|
|
82
|
+
zeroPosition = _this$getDataBarRende.zeroPosition,
|
|
83
|
+
leftmostPosition = _this$getDataBarRende.leftmostPosition,
|
|
84
|
+
markerXs = _this$getDataBarRende.markerXs,
|
|
85
|
+
totalValueRange = _this$getDataBarRende.totalValueRange,
|
|
86
|
+
dataBarWidth = _this$getDataBarRende.dataBarWidth;
|
|
94
87
|
context.save();
|
|
95
88
|
context.textAlign = textAlign;
|
|
96
89
|
context.fillStyle = textColor;
|
|
@@ -187,28 +180,22 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
187
180
|
}
|
|
188
181
|
}
|
|
189
182
|
getDataBarRenderMetrics(context, state, column, row) {
|
|
190
|
-
var
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
theme
|
|
194
|
-
} = state;
|
|
183
|
+
var metrics = state.metrics,
|
|
184
|
+
model = state.model,
|
|
185
|
+
theme = state.theme;
|
|
195
186
|
if (!isDataBarGridModel(model)) {
|
|
196
187
|
throw new Error('Grid model is not a data bar grid model');
|
|
197
188
|
}
|
|
198
|
-
var
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
cellHorizontalPadding,
|
|
209
|
-
treeDepthIndent,
|
|
210
|
-
treeHorizontalPadding
|
|
211
|
-
} = theme;
|
|
189
|
+
var firstColumn = metrics.firstColumn,
|
|
190
|
+
allColumnXs = metrics.allColumnXs,
|
|
191
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
192
|
+
allRowYs = metrics.allRowYs,
|
|
193
|
+
modelColumns = metrics.modelColumns,
|
|
194
|
+
modelRows = metrics.modelRows,
|
|
195
|
+
visibleRows = metrics.visibleRows;
|
|
196
|
+
var cellHorizontalPadding = theme.cellHorizontalPadding,
|
|
197
|
+
treeDepthIndent = theme.treeDepthIndent,
|
|
198
|
+
treeHorizontalPadding = theme.treeHorizontalPadding;
|
|
212
199
|
var modelColumn = getOrThrow(modelColumns, column);
|
|
213
200
|
var modelRow = getOrThrow(modelRows, row);
|
|
214
201
|
var x = getOrThrow(allColumnXs, column);
|
|
@@ -220,15 +207,14 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
220
207
|
treeIndent = treeDepthIndent * (model.depthForRow(row) + 1) + treeHorizontalPadding;
|
|
221
208
|
}
|
|
222
209
|
var textAlign = model.textAlignForCell(modelColumn, modelRow);
|
|
223
|
-
var
|
|
224
|
-
columnMin,
|
|
225
|
-
columnMax,
|
|
226
|
-
axis,
|
|
227
|
-
valuePlacement,
|
|
228
|
-
markers,
|
|
229
|
-
direction,
|
|
230
|
-
value
|
|
231
|
-
} = model.dataBarOptionsForCell(modelColumn, modelRow, theme);
|
|
210
|
+
var _model$dataBarOptions2 = model.dataBarOptionsForCell(modelColumn, modelRow, theme),
|
|
211
|
+
columnMin = _model$dataBarOptions2.columnMin,
|
|
212
|
+
columnMax = _model$dataBarOptions2.columnMax,
|
|
213
|
+
axis = _model$dataBarOptions2.axis,
|
|
214
|
+
valuePlacement = _model$dataBarOptions2.valuePlacement,
|
|
215
|
+
markers = _model$dataBarOptions2.markers,
|
|
216
|
+
direction = _model$dataBarOptions2.direction,
|
|
217
|
+
value = _model$dataBarOptions2.value;
|
|
232
218
|
var longestValueWidth = this.getCachedWidestValueForColumn(context, visibleRows, modelRows, model, modelColumn);
|
|
233
219
|
var leftPadding = 2;
|
|
234
220
|
var rightPadding = valuePlacement === 'beside' && textAlign === 'right' ? 2 : 1;
|
|
@@ -267,9 +253,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
267
253
|
var zeroPosition = columnMin >= 0 ? 0 : Math.abs(columnMin) / totalValueRange * maxWidth;
|
|
268
254
|
var dataBarX = value >= 0 ? zeroPosition : zeroPosition - Math.abs(value) / totalValueRange * maxWidth;
|
|
269
255
|
var markerXs = markers.map(marker => {
|
|
270
|
-
var
|
|
271
|
-
value: markerValue
|
|
272
|
-
} = marker;
|
|
256
|
+
var markerValue = marker.value;
|
|
273
257
|
var offset = Math.abs(markerValue) / totalValueRange * maxWidth;
|
|
274
258
|
return markerValue >= 0 ? zeroPosition + offset : zeroPosition - offset;
|
|
275
259
|
});
|
|
@@ -281,9 +265,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
281
265
|
zeroPosition = columnMin >= 0 ? columnWidth : columnWidth - Math.abs(columnMin) / totalValueRange * maxWidth;
|
|
282
266
|
dataBarX = value >= 0 ? zeroPosition - value / totalValueRange * maxWidth : zeroPosition;
|
|
283
267
|
markerXs = markers.map(marker => {
|
|
284
|
-
var
|
|
285
|
-
value: markerValue
|
|
286
|
-
} = marker;
|
|
268
|
+
var markerValue = marker.value;
|
|
287
269
|
return markerValue >= 0 ? zeroPosition - Math.abs(markerValue) / totalValueRange * maxWidth : zeroPosition + Math.abs(markerValue) / totalValueRange * maxWidth;
|
|
288
270
|
});
|
|
289
271
|
}
|
|
@@ -293,18 +275,14 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
293
275
|
// Middle, LTR
|
|
294
276
|
dataBarX = value >= 0 ? zeroPosition : zeroPosition - Math.abs(value) / columnLongest * (maxWidth / 2);
|
|
295
277
|
markerXs = markers.map(marker => {
|
|
296
|
-
var
|
|
297
|
-
value: markerValue
|
|
298
|
-
} = marker;
|
|
278
|
+
var markerValue = marker.value;
|
|
299
279
|
return markerValue >= 0 ? zeroPosition + Math.abs(markerValue) / columnLongest * (maxWidth / 2) : zeroPosition - Math.abs(markerValue) / columnLongest * (maxWidth / 2);
|
|
300
280
|
});
|
|
301
281
|
} else if (direction === 'RTL') {
|
|
302
282
|
// Middle, RTL
|
|
303
283
|
dataBarX = value <= 0 ? zeroPosition : zeroPosition - Math.abs(value) / columnLongest * (maxWidth / 2);
|
|
304
284
|
markerXs = markers.map(marker => {
|
|
305
|
-
var
|
|
306
|
-
value: markerValue
|
|
307
|
-
} = marker;
|
|
285
|
+
var markerValue = marker.value;
|
|
308
286
|
return markerValue <= 0 ? zeroPosition + Math.abs(markerValue) / columnLongest * (maxWidth / 2) : zeroPosition - Math.abs(markerValue) / columnLongest * (maxWidth / 2);
|
|
309
287
|
});
|
|
310
288
|
}
|
|
@@ -314,9 +292,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
314
292
|
zeroPosition = 0;
|
|
315
293
|
dataBarX = zeroPosition;
|
|
316
294
|
markerXs = markers.map(marker => {
|
|
317
|
-
var
|
|
318
|
-
value: markerValue
|
|
319
|
-
} = marker;
|
|
295
|
+
var markerValue = marker.value;
|
|
320
296
|
return zeroPosition + Math.abs(markerValue) / columnLongest * maxWidth;
|
|
321
297
|
});
|
|
322
298
|
} else if (direction === 'RTL') {
|
|
@@ -324,9 +300,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
|
324
300
|
zeroPosition = columnWidth;
|
|
325
301
|
dataBarX = zeroPosition - Math.abs(value) / columnLongest * maxWidth;
|
|
326
302
|
markerXs = markers.map(marker => {
|
|
327
|
-
var
|
|
328
|
-
value: markerValue
|
|
329
|
-
} = marker;
|
|
303
|
+
var markerValue = marker.value;
|
|
330
304
|
return zeroPosition - Math.abs(markerValue) / columnLongest * maxWidth;
|
|
331
305
|
});
|
|
332
306
|
}
|