@deephaven/grid 0.11.10-beta.0 → 0.11.10-beta.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellInputField.d.ts","sourceRoot":"","sources":["../src/CellInputField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,uBAAuB,CAAC;AAE/B,oBAAY,mBAAmB,GAAG;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;QACvC,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KACE,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,MAAM,KACV,mBAAmB,GAAG,SAaxB,CAAC;AAEF,eAAO,MAAM,cAAc;mJAWxB,mBAAmB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"CellInputField.d.ts","sourceRoot":"","sources":["../src/CellInputField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,uBAAuB,CAAC;AAE/B,oBAAY,mBAAmB,GAAG;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;QACvC,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KACE,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,MAAM,KACV,mBAAmB,GAAG,SAaxB,CAAC;AAEF,eAAO,MAAM,cAAc;mJAWxB,mBAAmB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CA0JnC,CAAC;AA4BF,eAAe,cAAc,CAAC"}
|
package/dist/CellInputField.js
CHANGED
|
@@ -43,7 +43,7 @@ export var CellInputField = _ref => {
|
|
|
43
43
|
var [isQuickEdit, setIsQuickEdit] = useState(propsIsQuickEdit);
|
|
44
44
|
var [value, setValue] = useState(propsValue); // Init field selection
|
|
45
45
|
|
|
46
|
-
useEffect(()
|
|
46
|
+
useEffect(function selectInputField() {
|
|
47
47
|
var {
|
|
48
48
|
current: field
|
|
49
49
|
} = inputField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CellInputField.tsx"],"names":["React","useCallback","useEffect","useRef","useState","PropTypes","classNames","SELECTION_DIRECTION","GridUtils","directionForKey","key","DOWN","UP","LEFT","RIGHT","undefined","CellInputField","selectionRange","className","disabled","value","propsValue","isQuickEdit","propsIsQuickEdit","onChange","onCancel","onDone","onContextMenu","style","inputField","isCancelled","initialValue","isChanged","setIsChanged","setIsQuickEdit","setValue","current","field","focus","setSelectionRange","length","sendUpdate","newValue","handleChange","event","target","handleCancel","handleClick","handleCommit","direction","fillRange","handleBlur","handleKeyDown","stopPropagation","preventDefault","isModifierKeyDown","altKey","shiftKey","handleContextMenu","propTypes","arrayOf","number","string","bool","func","shape","defaultProps"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\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\nexport const directionForKey = (\n key: string\n): 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 const CellInputField = ({\n selectionRange = undefined,\n className = '',\n disabled = false,\n value: propsValue = '',\n isQuickEdit: propsIsQuickEdit = true,\n onChange = () => undefined,\n onCancel = () => undefined,\n onDone = () => undefined,\n onContextMenu = () => undefined,\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 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 }, [selectionRange]);\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\nCellInputField.propTypes = {\n selectionRange: PropTypes.arrayOf(PropTypes.number),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n isQuickEdit: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func,\n onCancel: PropTypes.func,\n onDone: PropTypes.func,\n onContextMenu: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nCellInputField.defaultProps = {\n selectionRange: null,\n className: '',\n disabled: false,\n value: '',\n isQuickEdit: true,\n onChange: () => undefined,\n onCancel: () => undefined,\n onDone: () => undefined,\n onContextMenu: () => undefined,\n style: {},\n};\n\nexport default CellInputField;\n"],"file":"CellInputField.js"}
|
|
1
|
+
{"version":3,"sources":["../src/CellInputField.tsx"],"names":["React","useCallback","useEffect","useRef","useState","PropTypes","classNames","SELECTION_DIRECTION","GridUtils","directionForKey","key","DOWN","UP","LEFT","RIGHT","undefined","CellInputField","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","handleBlur","handleKeyDown","stopPropagation","preventDefault","isModifierKeyDown","altKey","shiftKey","handleContextMenu","propTypes","arrayOf","number","string","bool","func","shape","defaultProps"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\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\nexport const directionForKey = (\n key: string\n): 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 const CellInputField = ({\n selectionRange = undefined,\n className = '',\n disabled = false,\n value: propsValue = '',\n isQuickEdit: propsIsQuickEdit = true,\n onChange = () => undefined,\n onCancel = () => undefined,\n onDone = () => undefined,\n onContextMenu = () => undefined,\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\nCellInputField.propTypes = {\n selectionRange: PropTypes.arrayOf(PropTypes.number),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n isQuickEdit: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func,\n onCancel: PropTypes.func,\n onDone: PropTypes.func,\n onContextMenu: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nCellInputField.defaultProps = {\n selectionRange: null,\n className: '',\n disabled: false,\n value: '',\n isQuickEdit: true,\n onChange: () => undefined,\n onCancel: () => undefined,\n onDone: () => undefined,\n onContextMenu: () => undefined,\n style: {},\n};\n\nexport default CellInputField;\n"],"file":"CellInputField.js"}
|
|
@@ -62,7 +62,7 @@ class GridSelectionMouseHandler extends GridMouseHandler {
|
|
|
62
62
|
|
|
63
63
|
if ((column !== null || !autoSelectColumn) && (row !== null || !autoSelectRow)) {
|
|
64
64
|
grid.focus();
|
|
65
|
-
grid.moveCursorToPosition(column, row, isShiftKey,
|
|
65
|
+
grid.moveCursorToPosition(column, row, isShiftKey, false, isShiftKey && isModifierKey);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
this.startPoint = gridPoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridSelectionMouseHandler.ts"],"names":["GridMouseHandler","GridUtils","DEFAULT_INTERVAL_MS","GridSelectionMouseHandler","onDown","gridPoint","grid","event","x","y","column","row","metrics","Error","gridX","gridY","maxX","maxY","gridMouseX","gridMouseY","isModifierKey","isModifierKeyDown","isShiftKey","shiftKey","trimSelectedRanges","clearSelectedRanges","theme","getTheme","autoSelectRow","autoSelectColumn","focus","moveCursorToPosition","startPoint","hasExtendedFloating","dragBounds","getScrollDragBounds","onDrag","undefined","stopTimer","startRow","startColumn","left","lastLeft","top","lastTop","columnWidth","rowHeight","deltaX","deltaY","x1","x2","y1","y2","startTimer","Math","ceil","floor","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnCount","rowCount","bottom","right","topVisible","bottomVisible","leftVisible","rightVisible","isFloatingRow","isFloatingColumn","onUp","commitSelection","moveSelection","selectionEndRow","selectionEndColumn","state","minX","minY","min","max","lastTriggerTime","Date","now","timeout","timer","setTimeout","clearTimeout"],"mappings":";;OAGOA,gB;OACAC,S;AAEP,IAAMC,mBAAmB,GAAG,GAA5B;;AAEA,MAAMC,yBAAN,SAAwCH,gBAAxC,CAAyD;AAAA;AAAA;;AAAA;;AAAA,iDAGzB,KAHyB;;AAAA;;AAAA;;AAAA;AAAA;;AAYvDI,EAAAA,MAAM,CACJC,SADI,EAEJC,IAFI,EAGJC,KAHI,EAIgB;AACpB,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA,CAAL;AAAQC,MAAAA,MAAR;AAAgBC,MAAAA;AAAhB,QAAwBN,SAA9B;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAcN,IAApB;AACA,QAAI,CAACM,OAAL,EAAc,MAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA,KAAT;AAAgBC,MAAAA,IAAhB;AAAsBC,MAAAA;AAAtB,QAA+BL,OAArC;AACA,QAAMM,UAAU,GAAGV,CAAC,GAAGM,KAAvB;AACA,QAAMK,UAAU,GAAGV,CAAC,GAAGM,KAAvB;;AACA,QACEG,UAAU,GAAG,CAAb,IACAC,UAAU,GAAG,CADb,IAECT,MAAM,IAAI,IAAV,IAAkBQ,UAAU,GAAGF,IAFhC,IAGCL,GAAG,IAAI,IAAP,IAAeQ,UAAU,GAAGF,IAJ/B,EAKE;AACA,aAAO,KAAP;AACD;;AAED,QAAMG,aAAa,GAAGnB,SAAS,CAACoB,iBAAV,CAA4Bd,KAA5B,CAAtB;AACA,QAAMe,UAAU,GAAGf,KAAK,CAACgB,QAAzB;;AACA,QAAI,CAACH,aAAL,EAAoB;AAClB,UAAIE,UAAJ,EAAgB;AACdhB,QAAAA,IAAI,CAACkB,kBAAL;AACD,OAFD,MAEO;AACLlB,QAAAA,IAAI,CAACmB,mBAAL;AACD;AACF;;AAED,QAAMC,KAAK,GAAGpB,IAAI,CAACqB,QAAL,EAAd;AACA,QAAM;AAAEC,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAsCH,KAA5C,CA5BoB,CA6BpB;;AACA,QACE,CAAChB,MAAM,KAAK,IAAX,IAAmB,CAACmB,gBAArB,MACClB,GAAG,KAAK,IAAR,IAAgB,CAACiB,aADlB,CADF,EAGE;AACAtB,MAAAA,IAAI,CAACwB,KAAL;AACAxB,MAAAA,IAAI,CAACyB,oBAAL,CACErB,MADF,EAEEC,GAFF,EAGEW,UAHF,EAIE,IAJF,EAKEA,UAAU,IAAIF,aALhB;AAOD;;AAED,SAAKY,UAAL,GAAkB3B,SAAlB;AACA,SAAK4B,mBAAL,GAA2B,KAA3B;AACA,SAAKC,UAAL,GAAkBjC,SAAS,CAACkC,mBAAV,CAA8BvB,OAA9B,EAAuCD,GAAvC,EAA4CD,MAA5C,CAAlB;AAEA,WAAO,IAAP;AACD;;AAED0B,EAAAA,MAAM,CAAC/B,SAAD,EAAuBC,IAAvB,EAAuD;AAC3D,QAAI,KAAK0B,UAAL,KAAoBK,SAAxB,EAAmC;AACjC,aAAO,KAAP;AACD;;AAED,SAAKC,SAAL;AAEA,QAAM;AAAE3B,MAAAA,GAAG,EAAE4B,QAAP;AAAiB7B,MAAAA,MAAM,EAAE8B;AAAzB,QAAyC,KAAKR,UAApD;AACA,QAAM;AAAExB,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWJ,SAAjB;AACA,QAAI;AAAEM,MAAAA,GAAF;AAAOD,MAAAA;AAAP,QAAkBL,SAAtB;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAcN,IAApB;AACA,QAAI,CAACM,OAAL,EAAc,MAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAE4B,MAAAA,IAAF;AAAQC,MAAAA,QAAR;AAAkBC,MAAAA,GAAlB;AAAuBC,MAAAA,OAAvB;AAAgCC,MAAAA,WAAhC;AAA6CC,MAAAA;AAA7C,QAA2DlC,OAAjE;AACA,QAAMsB,UAAU,GAAGjC,SAAS,CAACkC,mBAAV,CACjBvB,OADiB,EAEjB2B,QAFiB,EAGjBC,WAHiB,CAAnB,CAd2D,CAoB3D;;AACA,QAAIO,MAAM,GAAG,CAAb;AACA,QAAIC,MAAM,GAAG,CAAb;;AACA,QAAIP,IAAI,GAAGC,QAAX,EAAqB;AACnB,UAAIlC,CAAC,GAAG0B,UAAU,CAACe,EAAnB,EAAuB;AACrBF,QAAAA,MAAM,GAAGvC,CAAC,GAAG0B,UAAU,CAACe,EAAxB;AACD,OAFD,MAEO,IAAIzC,CAAC,GAAG0B,UAAU,CAACgB,EAAnB,EAAuB;AAC5BH,QAAAA,MAAM,GAAGvC,CAAC,GAAG0B,UAAU,CAACgB,EAAxB;AACD;AACF;;AACD,QAAIP,GAAG,GAAGC,OAAV,EAAmB;AACjB,UAAInC,CAAC,GAAGyB,UAAU,CAACiB,EAAnB,EAAuB;AACrBH,QAAAA,MAAM,GAAGvC,CAAC,GAAGyB,UAAU,CAACiB,EAAxB;AACD,OAFD,MAEO,IAAI1C,CAAC,GAAGyB,UAAU,CAACkB,EAAnB,EAAuB;AAC5BJ,QAAAA,MAAM,GAAGvC,CAAC,GAAGyB,UAAU,CAACkB,EAAxB;AACD;AACF;;AAED,QAAIL,MAAM,KAAK,CAAX,IAAgBC,MAAM,KAAK,CAA/B,EAAkC;AAChC;AACA,WAAKK,UAAL,CACE/C,IADF,EAEED,SAFF,EAGE0C,MAAM,GAAG,CAAT,GACIO,IAAI,CAACC,IAAL,CAAUR,MAAM,GAAGF,WAAnB,CADJ,GAEIS,IAAI,CAACE,KAAL,CAAWT,MAAM,GAAGF,WAApB,CALN,EAMEG,MAAM,GAAG,CAAT,GACIM,IAAI,CAACC,IAAL,CAAUP,MAAM,GAAGF,SAAnB,CADJ,GAEIQ,IAAI,CAACE,KAAL,CAAWR,MAAM,GAAGF,SAApB,CARN;AAUD,KAZD,MAYO,IAAInC,GAAG,IAAI,IAAP,IAAeD,MAAM,IAAI,IAA7B,EAAmC;AACxC,UAAM;AACJ+C,QAAAA,mBADI;AAEJC,QAAAA,sBAFI;AAGJC,QAAAA,uBAHI;AAIJC,QAAAA,wBAJI;AAKJC,QAAAA,WALI;AAMJC,QAAAA,QANI;AAOJC,QAAAA,MAPI;AAQJC,QAAAA,KARI;AASJC,QAAAA,UATI;AAUJC,QAAAA,aAVI;AAWJC,QAAAA,WAXI;AAYJC,QAAAA;AAZI,UAaFxD,OAbJ,CADwC,CAexC;AACA;;AACA,UAAI,CAAC,KAAKqB,mBAAV,EAA+B;AAC7B,YACEM,QAAQ,KAAK,IAAb,IACAA,QAAQ,GAAGkB,mBADX,IAEA9C,GAAG,IAAI8C,mBAHT,EAIE;AACA;AACA9C,UAAAA,GAAG,GAAG8C,mBAAN;AACA,eAAKxB,mBAAL,GAA2B,IAA3B;AACD,SARD,MAQO,IACLM,QAAQ,KAAK,IAAb,IACAA,QAAQ,IAAIuB,QAAQ,GAAGJ,sBADvB,IAEA/C,GAAG,GAAGmD,QAAQ,GAAGJ,sBAHZ,EAIL;AACA;AACA/C,UAAAA,GAAG,GAAGmD,QAAQ,GAAGJ,sBAAX,GAAoC,CAA1C;AACA,eAAKzB,mBAAL,GAA2B,IAA3B;AACD;;AAED,YACEO,WAAW,KAAK,IAAhB,IACAA,WAAW,GAAGmB,uBADd,IAEAjD,MAAM,IAAIiD,uBAHZ,EAIE;AACA;AACAjD,UAAAA,MAAM,GAAGiD,uBAAT;AACA,eAAK1B,mBAAL,GAA2B,IAA3B;AACD,SARD,MAQO,IACLO,WAAW,KAAK,IAAhB,IACAA,WAAW,IAAIqB,WAAW,GAAGD,wBAD7B,IAEAlD,MAAM,GAAGmD,WAAW,GAAGD,wBAHlB,EAIL;AACA;AACAlD,UAAAA,MAAM,GAAGmD,WAAW,GAAGD,wBAAd,GAAyC,CAAlD;AACA,eAAK3B,mBAAL,GAA2B,IAA3B;AACD;AACF,OArDuC,CAuDxC;;;AACA,UACEM,QAAQ,KAAK,IAAb,IACA,CAACtC,SAAS,CAACoE,aAAV,CAAwB9B,QAAxB,EAAkC3B,OAAlC,CADD,IAEAX,SAAS,CAACoE,aAAV,CAAwB1D,GAAxB,EAA6BC,OAA7B,CAHF,EAIE;AACA;AACA,YAAI2B,QAAQ,GAAG5B,GAAX,IAAkBA,GAAG,GAAGgC,GAA5B,EAAiC;AAC/BhC,UAAAA,GAAG,GAAGsD,UAAU,GAAG,CAAnB;AACD,SAFD,MAEO,IAAI1B,QAAQ,GAAG5B,GAAX,IAAkBA,GAAG,GAAGoD,MAA5B,EAAoC;AACzCpD,UAAAA,GAAG,GAAGuD,aAAa,GAAG,CAAtB;AACD;AACF;;AACD,UACE1B,WAAW,KAAK,IAAhB,IACA,CAACvC,SAAS,CAACqE,gBAAV,CAA2B9B,WAA3B,EAAwC5B,OAAxC,CADD,IAEAX,SAAS,CAACqE,gBAAV,CAA2B5D,MAA3B,EAAmCE,OAAnC,CAHF,EAIE;AACA,YAAI4B,WAAW,GAAG9B,MAAd,IAAwBA,MAAM,GAAG+B,IAArC,EAA2C;AACzC/B,UAAAA,MAAM,GAAGyD,WAAW,GAAG,CAAvB;AACD,SAFD,MAEO,IAAI3B,WAAW,GAAG9B,MAAd,IAAwBA,MAAM,GAAGsD,KAArC,EAA4C;AACjDtD,UAAAA,MAAM,GAAG0D,YAAY,GAAG,CAAxB;AACD;AACF;;AACD9D,MAAAA,IAAI,CAACyB,oBAAL,CAA0BrB,MAA1B,EAAkCC,GAAlC,EAAuC,IAAvC,EAA6C,IAA7C;AACD;;AACD,WAAO,IAAP;AACD;;AAED4D,EAAAA,IAAI,CAAClE,SAAD,EAAuBC,IAAvB,EAAuD;AACzD,QAAI,KAAK0B,UAAL,KAAoBK,SAAxB,EAAmC;AACjC,WAAKL,UAAL,GAAkBK,SAAlB;AACA,WAAKH,UAAL,GAAkBG,SAAlB;AACA,WAAKC,SAAL;AACAhC,MAAAA,IAAI,CAACkE,eAAL;AACD;;AAED,WAAO,KAAP;AACD;;AAEDC,EAAAA,aAAa,CACXnE,IADW,EAEXD,SAFW,EAGX0C,MAHW,EAIXC,MAJW,EAKL;AACN,QAAM;AAAErC,MAAAA,GAAF;AAAOD,MAAAA;AAAP,QAAkBL,SAAxB;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAcN,IAApB;AACA,QAAI,CAACM,OAAL,EAAc,MAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAE6D,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAA0CrE,IAAI,CAACsE,KAArD;;AACA,QAAIF,eAAe,IAAI,IAAnB,IAA2BC,kBAAkB,IAAI,IAArD,EAA2D;AACzD,YAAM,IAAI9D,KAAJ,CAAU,mBAAV,CAAN;AACD;;AAED,QAAM;AAAEiD,MAAAA,QAAF;AAAYD,MAAAA;AAAZ,QAA4BjD,OAAlC;AACA,QAAMiE,IAAI,GAAG9B,MAAM,GAAG,CAAT,IAAcrC,MAAM,IAAI,IAAxB,GAA+BA,MAA/B,GAAwC,CAArD;AACA,QAAMM,IAAI,GAAG+B,MAAM,GAAG,CAAT,IAAcrC,MAAM,IAAI,IAAxB,GAA+BA,MAA/B,GAAwCmD,WAAW,GAAG,CAAnE;AACA,QAAMiB,IAAI,GAAG9B,MAAM,GAAG,CAAT,IAAcrC,GAAG,IAAI,IAArB,GAA4BA,GAA5B,GAAkC,CAA/C;AACA,QAAMM,IAAI,GAAG+B,MAAM,GAAG,CAAT,IAAcrC,GAAG,IAAI,IAArB,GAA4BA,GAA5B,GAAkCmD,QAAQ,GAAG,CAA1D;AACAxD,IAAAA,IAAI,CAACyB,oBAAL,CACEuB,IAAI,CAACyB,GAAL,CAASzB,IAAI,CAAC0B,GAAL,CAASH,IAAT,EAAeF,kBAAkB,GAAG5B,MAApC,CAAT,EAAsD/B,IAAtD,CADF,EAEEsC,IAAI,CAACyB,GAAL,CAASzB,IAAI,CAAC0B,GAAL,CAASF,IAAT,EAAeJ,eAAe,GAAG1B,MAAjC,CAAT,EAAmD/B,IAAnD,CAFF,EAGE,IAHF;AAKA,SAAKgE,eAAL,GAAuBC,IAAI,CAACC,GAAL,EAAvB;AACD;;AAED9B,EAAAA,UAAU,CACR/C,IADQ,EAERD,SAFQ,EAGR0C,MAHQ,EAIRC,MAJQ,EAKF;AACN,SAAKV,SAAL;AAEA,QAAM8C,OAAO,GACX,KAAKH,eAAL,IAAwB,IAAxB,GACI/E,mBAAmB,GACnBoD,IAAI,CAACyB,GAAL,CAAS7E,mBAAT,EAA8BgF,IAAI,CAACC,GAAL,KAAa,KAAKF,eAAhD,CAFJ,GAGI,CAJN;AAKA,SAAKI,KAAL,GAAaC,UAAU,CAAC,MAAM;AAC5B,WAAKb,aAAL,CAAmBnE,IAAnB,EAAyBD,SAAzB,EAAoC0C,MAApC,EAA4CC,MAA5C;AACA,WAAKK,UAAL,CAAgB/C,IAAhB,EAAsBD,SAAtB,EAAiC0C,MAAjC,EAAyCC,MAAzC;AACD,KAHsB,EAGpBoC,OAHoB,CAAvB;AAID;;AAED9C,EAAAA,SAAS,GAAS;AAChB,QAAI,KAAK+C,KAAL,KAAehD,SAAnB,EAA8B;AAC5BkD,MAAAA,YAAY,CAAC,KAAKF,KAAN,CAAZ;AACA,WAAKA,KAAL,GAAahD,SAAb;AACD;AACF;;AAxQsD;;AA2QzD,eAAelC,yBAAf","sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { BoxCoordinates } from '../GridMetrics';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nconst DEFAULT_INTERVAL_MS = 100;\n\nclass GridSelectionMouseHandler extends GridMouseHandler {\n private startPoint?: GridPoint;\n\n private hasExtendedFloating = false;\n\n // Timer used when holding a drag past the end of the grid\n private timer?: ReturnType<typeof setTimeout>;\n\n private lastTriggerTime?: number;\n\n private dragBounds?: BoxCoordinates;\n\n onDown(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const { x, y, column, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { gridX, gridY, maxX, maxY } = metrics;\n const gridMouseX = x - gridX;\n const gridMouseY = y - gridY;\n if (\n gridMouseX < 0 ||\n gridMouseY < 0 ||\n (column == null && gridMouseX > maxX) ||\n (row == null && gridMouseY > maxY)\n ) {\n return false;\n }\n\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n const isShiftKey = event.shiftKey;\n if (!isModifierKey) {\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n }\n\n const theme = grid.getTheme();\n const { autoSelectRow, autoSelectColumn } = theme;\n // If they click a column/row header, don't want to select the whole table if auto select column/row is on\n if (\n (column !== null || !autoSelectColumn) &&\n (row !== null || !autoSelectRow)\n ) {\n grid.focus();\n grid.moveCursorToPosition(\n column,\n row,\n isShiftKey,\n true,\n isShiftKey && isModifierKey\n );\n }\n\n this.startPoint = gridPoint;\n this.hasExtendedFloating = false;\n this.dragBounds = GridUtils.getScrollDragBounds(metrics, row, column);\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint === undefined) {\n return false;\n }\n\n this.stopTimer();\n\n const { row: startRow, column: startColumn } = this.startPoint;\n const { x, y } = gridPoint;\n let { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { left, lastLeft, top, lastTop, columnWidth, rowHeight } = metrics;\n const dragBounds = GridUtils.getScrollDragBounds(\n metrics,\n startRow,\n startColumn\n );\n\n // If we're dragging outside of the grid entirely, then we should start scrolling\n let deltaX = 0;\n let deltaY = 0;\n if (left < lastLeft) {\n if (x < dragBounds.x1) {\n deltaX = x - dragBounds.x1;\n } else if (x > dragBounds.x2) {\n deltaX = x - dragBounds.x2;\n }\n }\n if (top < lastTop) {\n if (y < dragBounds.y1) {\n deltaY = y - dragBounds.y1;\n } else if (y > dragBounds.y2) {\n deltaY = y - dragBounds.y2;\n }\n }\n\n if (deltaX !== 0 || deltaY !== 0) {\n // Have it go faster depending on how far out they've dragged\n this.startTimer(\n grid,\n gridPoint,\n deltaX > 0\n ? Math.ceil(deltaX / columnWidth)\n : Math.floor(deltaX / columnWidth),\n deltaY > 0\n ? Math.ceil(deltaY / rowHeight)\n : Math.floor(deltaY / rowHeight)\n );\n } else if (row != null && column != null) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n rowCount,\n bottom,\n right,\n topVisible,\n bottomVisible,\n leftVisible,\n rightVisible,\n } = metrics;\n // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area\n // So when that happens, just adjust the point to be past the new boundary\n if (!this.hasExtendedFloating) {\n if (\n startRow !== null &&\n startRow < floatingTopRowCount &&\n row >= floatingTopRowCount\n ) {\n // Extending from floating top into the view\n row = floatingTopRowCount;\n this.hasExtendedFloating = true;\n } else if (\n startRow !== null &&\n startRow >= rowCount - floatingBottomRowCount &&\n row < rowCount - floatingBottomRowCount\n ) {\n // Extending from floating bottom into the view\n row = rowCount - floatingBottomRowCount - 1;\n this.hasExtendedFloating = true;\n }\n\n if (\n startColumn !== null &&\n startColumn < floatingLeftColumnCount &&\n column >= floatingLeftColumnCount\n ) {\n // Extending from floating left into the view\n column = floatingLeftColumnCount;\n this.hasExtendedFloating = true;\n } else if (\n startColumn !== null &&\n startColumn >= columnCount - floatingRightColumnCount &&\n column < columnCount - floatingRightColumnCount\n ) {\n // Extending from floating right into the view\n column = columnCount - floatingRightColumnCount - 1;\n this.hasExtendedFloating = true;\n }\n }\n\n // When a selection is dragging from within the main area to over a floating area, scroll.\n if (\n startRow !== null &&\n !GridUtils.isFloatingRow(startRow, metrics) &&\n GridUtils.isFloatingRow(row, metrics)\n ) {\n // Need to scroll\n if (startRow > row && row < top) {\n row = topVisible - 1;\n } else if (startRow < row && row > bottom) {\n row = bottomVisible + 1;\n }\n }\n if (\n startColumn !== null &&\n !GridUtils.isFloatingColumn(startColumn, metrics) &&\n GridUtils.isFloatingColumn(column, metrics)\n ) {\n if (startColumn > column && column < left) {\n column = leftVisible - 1;\n } else if (startColumn < column && column > right) {\n column = rightVisible + 1;\n }\n }\n grid.moveCursorToPosition(column, row, true, true);\n }\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint !== undefined) {\n this.startPoint = undefined;\n this.dragBounds = undefined;\n this.stopTimer();\n grid.commitSelection();\n }\n\n return false;\n }\n\n moveSelection(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n const { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { selectionEndRow, selectionEndColumn } = grid.state;\n if (selectionEndRow == null || selectionEndColumn == null) {\n throw new Error('selection not set');\n }\n\n const { rowCount, columnCount } = metrics;\n const minX = deltaX < 0 && column != null ? column : 0;\n const maxX = deltaX > 0 && column != null ? column : columnCount - 1;\n const minY = deltaY < 0 && row != null ? row : 0;\n const maxY = deltaY > 0 && row != null ? row : rowCount - 1;\n grid.moveCursorToPosition(\n Math.min(Math.max(minX, selectionEndColumn + deltaX), maxX),\n Math.min(Math.max(minY, selectionEndRow + deltaY), maxY),\n true\n );\n this.lastTriggerTime = Date.now();\n }\n\n startTimer(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n this.stopTimer();\n\n const timeout =\n this.lastTriggerTime != null\n ? DEFAULT_INTERVAL_MS -\n Math.min(DEFAULT_INTERVAL_MS, Date.now() - this.lastTriggerTime)\n : 0;\n this.timer = setTimeout(() => {\n this.moveSelection(grid, gridPoint, deltaX, deltaY);\n this.startTimer(grid, gridPoint, deltaX, deltaY);\n }, timeout);\n }\n\n stopTimer(): void {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n\nexport default GridSelectionMouseHandler;\n"],"file":"GridSelectionMouseHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridSelectionMouseHandler.ts"],"names":["GridMouseHandler","GridUtils","DEFAULT_INTERVAL_MS","GridSelectionMouseHandler","onDown","gridPoint","grid","event","x","y","column","row","metrics","Error","gridX","gridY","maxX","maxY","gridMouseX","gridMouseY","isModifierKey","isModifierKeyDown","isShiftKey","shiftKey","trimSelectedRanges","clearSelectedRanges","theme","getTheme","autoSelectRow","autoSelectColumn","focus","moveCursorToPosition","startPoint","hasExtendedFloating","dragBounds","getScrollDragBounds","onDrag","undefined","stopTimer","startRow","startColumn","left","lastLeft","top","lastTop","columnWidth","rowHeight","deltaX","deltaY","x1","x2","y1","y2","startTimer","Math","ceil","floor","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnCount","rowCount","bottom","right","topVisible","bottomVisible","leftVisible","rightVisible","isFloatingRow","isFloatingColumn","onUp","commitSelection","moveSelection","selectionEndRow","selectionEndColumn","state","minX","minY","min","max","lastTriggerTime","Date","now","timeout","timer","setTimeout","clearTimeout"],"mappings":"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","sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { BoxCoordinates } from '../GridMetrics';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nconst DEFAULT_INTERVAL_MS = 100;\n\nclass GridSelectionMouseHandler extends GridMouseHandler {\n private startPoint?: GridPoint;\n\n private hasExtendedFloating = false;\n\n // Timer used when holding a drag past the end of the grid\n private timer?: ReturnType<typeof setTimeout>;\n\n private lastTriggerTime?: number;\n\n private dragBounds?: BoxCoordinates;\n\n onDown(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const { x, y, column, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { gridX, gridY, maxX, maxY } = metrics;\n const gridMouseX = x - gridX;\n const gridMouseY = y - gridY;\n if (\n gridMouseX < 0 ||\n gridMouseY < 0 ||\n (column == null && gridMouseX > maxX) ||\n (row == null && gridMouseY > maxY)\n ) {\n return false;\n }\n\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n const isShiftKey = event.shiftKey;\n if (!isModifierKey) {\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n }\n\n const theme = grid.getTheme();\n const { autoSelectRow, autoSelectColumn } = theme;\n // If they click a column/row header, don't want to select the whole table if auto select column/row is on\n if (\n (column !== null || !autoSelectColumn) &&\n (row !== null || !autoSelectRow)\n ) {\n grid.focus();\n grid.moveCursorToPosition(\n column,\n row,\n isShiftKey,\n false,\n isShiftKey && isModifierKey\n );\n }\n\n this.startPoint = gridPoint;\n this.hasExtendedFloating = false;\n this.dragBounds = GridUtils.getScrollDragBounds(metrics, row, column);\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint === undefined) {\n return false;\n }\n\n this.stopTimer();\n\n const { row: startRow, column: startColumn } = this.startPoint;\n const { x, y } = gridPoint;\n let { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { left, lastLeft, top, lastTop, columnWidth, rowHeight } = metrics;\n const dragBounds = GridUtils.getScrollDragBounds(\n metrics,\n startRow,\n startColumn\n );\n\n // If we're dragging outside of the grid entirely, then we should start scrolling\n let deltaX = 0;\n let deltaY = 0;\n if (left < lastLeft) {\n if (x < dragBounds.x1) {\n deltaX = x - dragBounds.x1;\n } else if (x > dragBounds.x2) {\n deltaX = x - dragBounds.x2;\n }\n }\n if (top < lastTop) {\n if (y < dragBounds.y1) {\n deltaY = y - dragBounds.y1;\n } else if (y > dragBounds.y2) {\n deltaY = y - dragBounds.y2;\n }\n }\n\n if (deltaX !== 0 || deltaY !== 0) {\n // Have it go faster depending on how far out they've dragged\n this.startTimer(\n grid,\n gridPoint,\n deltaX > 0\n ? Math.ceil(deltaX / columnWidth)\n : Math.floor(deltaX / columnWidth),\n deltaY > 0\n ? Math.ceil(deltaY / rowHeight)\n : Math.floor(deltaY / rowHeight)\n );\n } else if (row != null && column != null) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n rowCount,\n bottom,\n right,\n topVisible,\n bottomVisible,\n leftVisible,\n rightVisible,\n } = metrics;\n // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area\n // So when that happens, just adjust the point to be past the new boundary\n if (!this.hasExtendedFloating) {\n if (\n startRow !== null &&\n startRow < floatingTopRowCount &&\n row >= floatingTopRowCount\n ) {\n // Extending from floating top into the view\n row = floatingTopRowCount;\n this.hasExtendedFloating = true;\n } else if (\n startRow !== null &&\n startRow >= rowCount - floatingBottomRowCount &&\n row < rowCount - floatingBottomRowCount\n ) {\n // Extending from floating bottom into the view\n row = rowCount - floatingBottomRowCount - 1;\n this.hasExtendedFloating = true;\n }\n\n if (\n startColumn !== null &&\n startColumn < floatingLeftColumnCount &&\n column >= floatingLeftColumnCount\n ) {\n // Extending from floating left into the view\n column = floatingLeftColumnCount;\n this.hasExtendedFloating = true;\n } else if (\n startColumn !== null &&\n startColumn >= columnCount - floatingRightColumnCount &&\n column < columnCount - floatingRightColumnCount\n ) {\n // Extending from floating right into the view\n column = columnCount - floatingRightColumnCount - 1;\n this.hasExtendedFloating = true;\n }\n }\n\n // When a selection is dragging from within the main area to over a floating area, scroll.\n if (\n startRow !== null &&\n !GridUtils.isFloatingRow(startRow, metrics) &&\n GridUtils.isFloatingRow(row, metrics)\n ) {\n // Need to scroll\n if (startRow > row && row < top) {\n row = topVisible - 1;\n } else if (startRow < row && row > bottom) {\n row = bottomVisible + 1;\n }\n }\n if (\n startColumn !== null &&\n !GridUtils.isFloatingColumn(startColumn, metrics) &&\n GridUtils.isFloatingColumn(column, metrics)\n ) {\n if (startColumn > column && column < left) {\n column = leftVisible - 1;\n } else if (startColumn < column && column > right) {\n column = rightVisible + 1;\n }\n }\n grid.moveCursorToPosition(column, row, true, true);\n }\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint !== undefined) {\n this.startPoint = undefined;\n this.dragBounds = undefined;\n this.stopTimer();\n grid.commitSelection();\n }\n\n return false;\n }\n\n moveSelection(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n const { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { selectionEndRow, selectionEndColumn } = grid.state;\n if (selectionEndRow == null || selectionEndColumn == null) {\n throw new Error('selection not set');\n }\n\n const { rowCount, columnCount } = metrics;\n const minX = deltaX < 0 && column != null ? column : 0;\n const maxX = deltaX > 0 && column != null ? column : columnCount - 1;\n const minY = deltaY < 0 && row != null ? row : 0;\n const maxY = deltaY > 0 && row != null ? row : rowCount - 1;\n grid.moveCursorToPosition(\n Math.min(Math.max(minX, selectionEndColumn + deltaX), maxX),\n Math.min(Math.max(minY, selectionEndRow + deltaY), maxY),\n true\n );\n this.lastTriggerTime = Date.now();\n }\n\n startTimer(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n this.stopTimer();\n\n const timeout =\n this.lastTriggerTime != null\n ? DEFAULT_INTERVAL_MS -\n Math.min(DEFAULT_INTERVAL_MS, Date.now() - this.lastTriggerTime)\n : 0;\n this.timer = setTimeout(() => {\n this.moveSelection(grid, gridPoint, deltaX, deltaY);\n this.startTimer(grid, gridPoint, deltaX, deltaY);\n }, timeout);\n }\n\n stopTimer(): void {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n\nexport default GridSelectionMouseHandler;\n"],"file":"GridSelectionMouseHandler.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/grid",
|
|
3
|
-
"version": "0.11.10-beta.
|
|
3
|
+
"version": "0.11.10-beta.5+8359d17",
|
|
4
4
|
"description": "Deephaven React grid component",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"react": "^17.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@deephaven/tsconfig": "^0.11.10-beta.
|
|
36
|
+
"@deephaven/tsconfig": "^0.11.10-beta.5+8359d17"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
39
|
"dist"
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "8359d17561e80cb91dcbfa588c5d015bb4b7051f"
|
|
54
54
|
}
|