@deephaven/grid 1.1.2-beta.0 → 1.1.2-grid-render-loop.4
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.map +1 -1
- package/dist/CellRenderer.js.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/DataBarCellRenderer.js.map +1 -1
- package/dist/DataBarGridModel.js.map +1 -1
- package/dist/DeletableGridModel.js.map +1 -1
- package/dist/EditableGridModel.js.map +1 -1
- package/dist/EventHandlerResult.js.map +1 -1
- package/dist/ExpandableGridModel.js.map +1 -1
- package/dist/Grid.d.ts +3 -0
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +16 -5
- package/dist/Grid.js.map +1 -1
- package/dist/GridAxisRange.js.map +1 -1
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridMetrics.js.map +1 -1
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.js.map +1 -1
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridRendererTypes.js.map +1 -1
- package/dist/GridTestUtils.js.map +1 -1
- package/dist/GridTheme.js.map +1 -1
- package/dist/GridUtils.js.map +1 -1
- package/dist/KeyHandler.js.map +1 -1
- package/dist/MockDataBarGridModel.js.map +1 -1
- package/dist/MockGridData.js.map +1 -1
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/StaticDataGridModel.js.map +1 -1
- package/dist/TextCellRenderer.js.map +1 -1
- package/dist/ThemeContext.js.map +1 -1
- package/dist/TokenBoxCellRenderer.js.map +1 -1
- package/dist/ViewportDataGridModel.js.map +1 -1
- package/dist/errors/AssertionError.js.map +1 -1
- package/dist/errors/PasteError.js.map +1 -1
- package/dist/errors/assertIsDefined.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/memoizeClear.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/index.js.map +1 -1
- package/package.json +3 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CellInputField.js","names":["React","useCallback","useEffect","useRef","useState","PropTypes","classNames","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","propTypes","arrayOf","number","string","bool","func","shape","defaultProps"],"sources":["../src/CellInputField.tsx"],"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\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 = 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"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CellInputField.js","names":["React","useCallback","useEffect","useRef","useState","PropTypes","classNames","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","propTypes","arrayOf","number","string","bool","func","shape","defaultProps"],"sources":["../src/CellInputField.tsx"],"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\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 = 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"],"mappings":"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","ignoreList":[]}
|
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,IAAM;MAAEC,OAAO;MAAEC,KAAK;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAM,CAAC,GAAGN,KAAK;IACvD,IAAM;MACJO,WAAW;MACXC,KAAK;MACLC,KAAK;MACLC,WAAW;MACXC,eAAe;MACfC,QAAQ;MACRC,aAAa;MACbC;IACF,CAAC,GAAGZ,OAAO;IACX,IAAM;MAAEa,eAAe;MAAEC;IAAqB,CAAC,GAAGV,KAAK;IACvD,IAAMW,OAAO,GAAGjC,UAAU,CAAC0B,WAAW,EAAEH,WAAW,CAAC;IACpD,IAAMW,WAAW,GAAGlC,UAAU,CAAC2B,eAAe,EAAEJ,WAAW,CAAC;IAC5D,IAAMY,IAAI,GAAGnC,UAAU,CAAC4B,QAAQ,EAAEX,GAAG,CAAC;IACtC,IAAMmB,SAAS,GAAGpC,UAAU,CAAC6B,aAAa,EAAEZ,GAAG,CAAC;IAChD,IAAI,CAAChB,qBAAqB,CAACkB,KAAK,CAAC,IAAI,CAACA,KAAK,CAACkB,eAAe,CAACpB,GAAG,CAAC,EAAE;MAChE;IACF;IAEA,IAAMqB,OAAO,GAAGtC,UAAU,CAAC8B,mBAAmB,EAAEb,GAAG,CAAC;IACpD,IAAMsB,KAAK,GACTnB,MAAM,IAAI,IAAI,IACdC,MAAM,IAAI,IAAI,IACdD,MAAM,IAAII,KAAK,GAAGS,OAAO,IACzBb,MAAM,IAAII,KAAK,GAAGS,OAAO,GAAGC,WAAW,IACvCb,MAAM,IAAII,KAAK,GAAGU,IAAI,IACtBd,MAAM,IAAII,KAAK,GAAGU,IAAI,GAAGC,SAAS,GAC9BJ,oBAAoB,GACpBD,eAAe;IAErB,IAAI,CAACS,cAAc,CACjBjC,OAAO,EACPS,KAAK,EACLiB,OAAO,EACPE,IAAI,EACJG,OAAO,EACPC,KAAK,EACLpB,KAAK,CAACsB,aAAa,CAACxB,GAAG,CACzB,CAAC;EACH;EAEAuB,cAAcA,CACZjC,OAAiC,EACjCS,KAAsB,EACtBiB,OAAmB,EACnBE,IAAgB,EAChBG,OAAuB,EACvBC,KAAgB,EAChBG,UAAmB,EACb;IACN,IAAM;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC;IAAG,CAAC,GAAGR,OAAO;IAClC,IAAMS,UAAU,GAAGL,UAAU,GAAG,GAAG,GAAG,GAAG;IACzC,IAAMM,KAAK,GAAGf,OAAO,GAAG,CAACU,EAAE,GAAGE,EAAE,IAAI,GAAG,GAAG,GAAG;IAC7C,IAAMI,KAAK,GAAGd,IAAI,GAAG,CAACS,EAAE,GAAGE,EAAE,IAAI,GAAG,GAAG,GAAG;IAC1CvC,OAAO,CAAC2C,SAAS,GAAGX,KAAK;IACzBhC,OAAO,CAAC4C,SAAS,GAAG,QAAQ;IAC5B5C,OAAO,CAAC6C,QAAQ,CAACL,UAAU,EAAEC,KAAK,EAAEC,KAAK,CAAC;EAC5C;AAqBF;AAEA,eAAe7C,YAAY"}
|
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,IAAM;MAAEC,OAAO;MAAEC,KAAK;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAM,CAAC,GAAGN,KAAK;IACvD,IAAM;MACJO,WAAW;MACXC,KAAK;MACLC,KAAK;MACLC,WAAW;MACXC,eAAe;MACfC,QAAQ;MACRC,aAAa;MACbC;IACF,CAAC,GAAGZ,OAAO;IACX,IAAM;MAAEa,eAAe;MAAEC;IAAqB,CAAC,GAAGV,KAAK;IACvD,IAAMW,OAAO,GAAGjC,UAAU,CAAC0B,WAAW,EAAEH,WAAW,CAAC;IACpD,IAAMW,WAAW,GAAGlC,UAAU,CAAC2B,eAAe,EAAEJ,WAAW,CAAC;IAC5D,IAAMY,IAAI,GAAGnC,UAAU,CAAC4B,QAAQ,EAAEX,GAAG,CAAC;IACtC,IAAMmB,SAAS,GAAGpC,UAAU,CAAC6B,aAAa,EAAEZ,GAAG,CAAC;IAChD,IAAI,CAAChB,qBAAqB,CAACkB,KAAK,CAAC,IAAI,CAACA,KAAK,CAACkB,eAAe,CAACpB,GAAG,CAAC,EAAE;MAChE;IACF;IAEA,IAAMqB,OAAO,GAAGtC,UAAU,CAAC8B,mBAAmB,EAAEb,GAAG,CAAC;IACpD,IAAMsB,KAAK,GACTnB,MAAM,IAAI,IAAI,IACdC,MAAM,IAAI,IAAI,IACdD,MAAM,IAAII,KAAK,GAAGS,OAAO,IACzBb,MAAM,IAAII,KAAK,GAAGS,OAAO,GAAGC,WAAW,IACvCb,MAAM,IAAII,KAAK,GAAGU,IAAI,IACtBd,MAAM,IAAII,KAAK,GAAGU,IAAI,GAAGC,SAAS,GAC9BJ,oBAAoB,GACpBD,eAAe;IAErB,IAAI,CAACS,cAAc,CACjBjC,OAAO,EACPS,KAAK,EACLiB,OAAO,EACPE,IAAI,EACJG,OAAO,EACPC,KAAK,EACLpB,KAAK,CAACsB,aAAa,CAACxB,GAAG,CACzB,CAAC;EACH;EAEAuB,cAAcA,CACZjC,OAAiC,EACjCS,KAAsB,EACtBiB,OAAmB,EACnBE,IAAgB,EAChBG,OAAuB,EACvBC,KAAgB,EAChBG,UAAmB,EACb;IACN,IAAM;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC;IAAG,CAAC,GAAGR,OAAO;IAClC,IAAMS,UAAU,GAAGL,UAAU,GAAG,GAAG,GAAG,GAAG;IACzC,IAAMM,KAAK,GAAGf,OAAO,GAAG,CAACU,EAAE,GAAGE,EAAE,IAAI,GAAG,GAAG,GAAG;IAC7C,IAAMI,KAAK,GAAGd,IAAI,GAAG,CAACS,EAAE,GAAGE,EAAE,IAAI,GAAG,GAAG,GAAG;IAC1CvC,OAAO,CAAC2C,SAAS,GAAGX,KAAK;IACzBhC,OAAO,CAAC4C,SAAS,GAAG,QAAQ;IAC5B5C,OAAO,CAAC6C,QAAQ,CAACL,UAAU,EAAEC,KAAK,EAAEC,KAAK,CAAC;EAC5C;AAqBF;AAEA,eAAe7C,YAAY","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.js","names":[],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import { type MoveOperation } from './GridMetrics';\nimport { type BoundedAxisRange } from './GridAxisRange';\n\nexport interface IColumnHeaderGroup {\n name: string;\n depth: number;\n color?: string;\n getVisibleRange: (movedColumns: readonly MoveOperation[]) => BoundedAxisRange;\n}\n"],"mappings":""}
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.js","names":[],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import { type MoveOperation } from './GridMetrics';\nimport { type BoundedAxisRange } from './GridAxisRange';\n\nexport interface IColumnHeaderGroup {\n name: string;\n depth: number;\n color?: string;\n getVisibleRange: (movedColumns: readonly MoveOperation[]) => BoundedAxisRange;\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataBarCellRenderer.js","names":["getOrThrow","CellRenderer","isExpandableGridModel","isDataBarGridModel","GridColorUtils","GridUtils","memoizeClear","DataBarCellRenderer","constructor","arguments","_defineProperty","context","text","measureText","width","max","visibleRows","modelRows","model","column","widestValue","i","length","row","modelRow","textForCell","Math","getCachedWidth","drawCellContent","state","metrics","theme","modelColumns","allRowHeights","allRowYs","firstColumn","fontWidthsLower","fontWidthsUpper","isFirstColumn","rowHeight","modelColumn","rowY","textAlign","textAlignForCell","x","textX","y","textY","textWidth","getTextRenderMetrics","fontWidthLower","get","font","fontWidthUpper","truncationChar","truncationCharForCell","truncatedText","getCachedTruncatedString","columnMin","columnMax","axis","color","dataBarColor","valuePlacement","opacity","markers","direction","value","dataBarOptionsForCell","hasGradient","Array","isArray","maxWidth","dataBarX","dataBarY","zeroPosition","leftmostPosition","markerXs","totalValueRange","dataBarWidth","getDataBarRenderMetrics","save","fillStyle","textBaseline","fillText","hasRowDividers","gridRowColor","yOffset","beginPath","roundRect","clip","globalAlpha","gradientWidth","gradientX","round","abs","translate","scale","gradient","getGradient","fillRect","restore","fill","forEach","markerX","index","shouldRenderDashedLine","strokeStyle","zeroLineColor","setLineDash","moveTo","lineTo","stroke","hasExpandableRows","drawCellRowTreeMarker","Error","allColumnXs","allColumnWidths","cellHorizontalPadding","treeDepthIndent","treeHorizontalPadding","columnWidth","treeIndent","depthForRow","longestValueWidth","getCachedWidestValueForColumn","leftPadding","rightPadding","columnLongest","map","marker","markerValue","offset","rightmostPosition","colors","canvas","document","createElement","ctx","getContext","Number","isNaN","createLinearGradient","oklabColors","linearSRGBToOklab","hexToRgb","colorStop","colorChangeInterval","leftColorIndex","floor","lerpColor","addColorStop","rgbToHex","OklabToLinearSRGB","primitive"],"sources":["../src/DataBarCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { isDataBarGridModel } from './DataBarGridModel';\nimport {\n type ModelIndex,\n type VisibleIndex,\n type VisibleToModelMap,\n} from './GridMetrics';\nimport GridColorUtils from './GridColorUtils';\nimport GridUtils from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport { type GridRenderState } from './GridRendererTypes';\nimport type GridModel from './GridModel';\n\ninterface DataBarRenderMetrics {\n /** The total width the entire bar from the min to max value can take up (rightmostPosition - leftmostPosition) */\n maxWidth: number;\n /** The x coordinate of the bar (the left) */\n x: number;\n /** The y coordinate of the bar (the top) */\n y: number;\n /** The position of the zero line */\n zeroPosition: number;\n /** The position of the leftmost point */\n leftmostPosition: number;\n /** The position of the rightmost point */\n rightmostPosition: number;\n /** The range of values (e.g. max of 100 and min of -50 means range of 150) */\n totalValueRange: number;\n /** The width of the databar */\n dataBarWidth: number;\n /** The x coordinates of the markers (the left) */\n markerXs: number[];\n}\nclass DataBarCellRenderer extends CellRenderer {\n static getGradient = memoizeClear(\n (width: number, colors: string[]): CanvasGradient => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (ctx == null) {\n throw new Error('Failed to create canvas context');\n }\n if (Number.isNaN(width)) {\n return ctx.createLinearGradient(0, 0, 0, 0);\n }\n const gradient = ctx.createLinearGradient(0, 0, width, 0);\n const oklabColors = colors.map(color =>\n GridColorUtils.linearSRGBToOklab(GridColorUtils.hexToRgb(color))\n );\n for (let i = 0; i < width; i += 1) {\n const colorStop = i / width;\n const colorChangeInterval = 1 / (colors.length - 1);\n const leftColorIndex = Math.floor(colorStop / colorChangeInterval);\n const color = GridColorUtils.lerpColor(\n oklabColors[leftColorIndex],\n oklabColors[leftColorIndex + 1],\n (colorStop % colorChangeInterval) / colorChangeInterval\n );\n gradient.addColorStop(\n i / width,\n GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(color))\n );\n }\n return gradient;\n },\n {\n max: 1000,\n primitive: true, // Stringify the arguments for memoization. Lets the color arrays be different arrays in memory, but still cache hit\n }\n );\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n return;\n }\n const {\n modelColumns,\n modelRows,\n allRowHeights,\n allRowYs,\n firstColumn,\n fontWidthsLower,\n fontWidthsUpper,\n } = metrics;\n\n const isFirstColumn = column === firstColumn;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const rowY = getOrThrow(allRowYs, row);\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const text = model.textForCell(modelColumn, modelRow);\n const {\n x: textX,\n y: textY,\n width: textWidth,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n );\n\n const {\n columnMin,\n columnMax,\n axis,\n color: dataBarColor,\n valuePlacement,\n opacity,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n\n const hasGradient = Array.isArray(dataBarColor) && dataBarColor.length > 1;\n if (columnMin == null || columnMax == null) {\n return;\n }\n\n const {\n maxWidth,\n x: dataBarX,\n y: dataBarY,\n zeroPosition,\n leftmostPosition,\n markerXs,\n totalValueRange,\n dataBarWidth,\n } = this.getDataBarRenderMetrics(context, state, column, row);\n\n context.save();\n context.textAlign = textAlign;\n if (hasGradient) {\n const color =\n value >= 0 ? dataBarColor[dataBarColor.length - 1] : dataBarColor[0];\n context.fillStyle = color;\n } else {\n context.fillStyle = Array.isArray(dataBarColor)\n ? dataBarColor[0]\n : dataBarColor;\n }\n context.textBaseline = 'middle';\n context.font = theme.font;\n\n if (valuePlacement !== 'hide') {\n context.fillText(truncatedText, textX, textY);\n }\n\n const hasRowDividers = theme.gridRowColor != null;\n const yOffset = hasRowDividers ? 2 : 1;\n\n context.save();\n context.beginPath();\n context.roundRect(\n dataBarX,\n rowY + yOffset, // yOffset includes 1px for top padding\n dataBarWidth,\n rowHeight - 1 - yOffset, // 1px for bottom padding\n 1\n );\n context.clip();\n context.globalAlpha = opacity;\n\n // Draw bar\n if (hasGradient) {\n // Draw gradient bar\n\n let gradientWidth = 0;\n let gradientX = 0;\n context.save();\n\n // Translate the context so its origin is at the start of the gradient\n // and increasing x value moves towards the end of the gradient.\n // For RTL, scale x by -1 to flip across the x-axis\n if (value < 0) {\n if (direction === 'LTR') {\n gradientWidth = Math.round(\n (Math.abs(columnMin) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n gradientWidth = Math.round(\n maxWidth - (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n } else if (direction === 'LTR') {\n // Value is greater than or equal to 0\n gradientWidth =\n Math.round(\n maxWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth\n ) - 1;\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n // Value is greater than or equal to 0\n gradientWidth = Math.round(\n (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n\n const gradient = DataBarCellRenderer.getGradient(\n gradientWidth,\n dataBarColor\n );\n context.fillStyle = gradient;\n context.fillRect(0, dataBarY, gradientWidth, rowHeight);\n context.restore(); // Restore gradient translate/scale\n } else {\n // Draw normal bar\n context.beginPath();\n context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight, 1);\n context.fill();\n }\n\n // Draw markers\n if (maxWidth > 0) {\n markerXs.forEach((markerX, index) => {\n context.fillStyle = markers[index].color;\n context.fillRect(markerX, dataBarY, 1, rowHeight);\n });\n }\n\n // restore clip\n context.restore();\n\n const shouldRenderDashedLine = !(\n axis === 'directional' &&\n ((valuePlacement === 'beside' &&\n textAlign === 'right' &&\n direction === 'LTR') ||\n (valuePlacement === 'beside' &&\n textAlign === 'left' &&\n direction === 'RTL') ||\n valuePlacement !== 'beside')\n );\n\n // Draw dashed line\n if (shouldRenderDashedLine) {\n context.strokeStyle = theme.zeroLineColor;\n context.beginPath();\n context.setLineDash([2, 1]);\n context.moveTo(zeroPosition, rowY);\n context.lineTo(zeroPosition, rowY + rowHeight);\n context.stroke();\n }\n\n context.restore();\n\n // Draw tree marker\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n getDataBarRenderMetrics(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): DataBarRenderMetrics {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n throw new Error('Grid model is not a data bar grid model');\n }\n const {\n firstColumn,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n modelColumns,\n modelRows,\n visibleRows,\n } = metrics;\n const { cellHorizontalPadding, treeDepthIndent, treeHorizontalPadding } =\n theme;\n\n const modelColumn = getOrThrow(modelColumns, column);\n const modelRow = getOrThrow(modelRows, row);\n const x = getOrThrow(allColumnXs, column);\n const y = getOrThrow(allRowYs, row);\n const columnWidth = getOrThrow(allColumnWidths, column);\n const isFirstColumn = column === firstColumn;\n let treeIndent = 0;\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n isFirstColumn\n ) {\n treeIndent =\n treeDepthIndent * (model.depthForRow(row) + 1) + treeHorizontalPadding;\n }\n\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const {\n columnMin,\n columnMax,\n axis,\n valuePlacement,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n const longestValueWidth = this.getCachedWidestValueForColumn(\n context,\n visibleRows,\n modelRows,\n model,\n modelColumn\n );\n\n const leftPadding = 2;\n const rightPadding =\n valuePlacement === 'beside' && textAlign === 'right' ? 2 : 1;\n\n // The value of the total range (e.g. max - column)\n let totalValueRange = columnMax - columnMin;\n // If min and max are both positive or min and max are equal, the max length is columnMax\n if ((columnMax >= 0 && columnMin >= 0) || columnMin === columnMax) {\n totalValueRange = columnMax;\n } else if (columnMax <= 0 && columnMin <= 0) {\n // If min and max are both negative, the max length is the absolute value of columnMin\n totalValueRange = Math.abs(columnMin);\n }\n\n let maxWidth = columnWidth - treeIndent - rightPadding - leftPadding;\n if (valuePlacement === 'beside') {\n maxWidth = maxWidth - cellHorizontalPadding - longestValueWidth;\n }\n\n if (maxWidth < 0) {\n maxWidth = 0;\n }\n\n const columnLongest = Math.max(Math.abs(columnMin), Math.abs(columnMax));\n // If axis is proportional, totalValueRange is proportional to maxWidth\n let dataBarWidth = (Math.abs(value) / totalValueRange) * maxWidth;\n\n if (maxWidth === 0) {\n dataBarWidth = 0;\n } else if (axis === 'middle') {\n // The longest bar is proportional to half of the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * (maxWidth / 2);\n } else if (axis === 'directional') {\n // The longest bar is proportional to the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * maxWidth;\n }\n\n // Default: proportional, beside, LTR, right text align\n // All positions are assuming the left side is 0 and the right side is maxWidth\n let zeroPosition =\n columnMin >= 0 ? 0 : (Math.abs(columnMin) / totalValueRange) * maxWidth;\n let dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / totalValueRange) * maxWidth;\n let markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n const offset = (Math.abs(markerValue) / totalValueRange) * maxWidth;\n return markerValue >= 0 ? zeroPosition + offset : zeroPosition - offset;\n });\n let leftmostPosition =\n valuePlacement === 'beside' && textAlign === 'left'\n ? cellHorizontalPadding + longestValueWidth + leftPadding\n : leftPadding;\n let rightmostPosition =\n valuePlacement === 'beside' && textAlign === 'right'\n ? columnWidth - cellHorizontalPadding - longestValueWidth - rightPadding\n : rightPadding;\n\n // Proportional, RTL\n if (direction === 'RTL') {\n zeroPosition =\n columnMin >= 0\n ? columnWidth\n : columnWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth;\n dataBarX =\n value >= 0\n ? zeroPosition - (value / totalValueRange) * maxWidth\n : zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n return markerValue >= 0\n ? zeroPosition - (Math.abs(markerValue) / totalValueRange) * maxWidth\n : zeroPosition + (Math.abs(markerValue) / totalValueRange) * maxWidth;\n });\n }\n\n if (axis === 'middle') {\n zeroPosition = maxWidth / 2;\n if (direction === 'LTR') {\n // Middle, LTR\n dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue >= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n } else if (direction === 'RTL') {\n // Middle, RTL\n dataBarX =\n value <= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue <= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n }\n } else if (axis === 'directional') {\n if (direction === 'LTR') {\n // Directional, LTR\n zeroPosition = 0;\n dataBarX = zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition + (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n } else if (direction === 'RTL') {\n // Directional, RTL\n zeroPosition = columnWidth;\n dataBarX = zeroPosition - (Math.abs(value) / columnLongest) * maxWidth;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition - (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n }\n }\n\n // Offset all values by the actual x value and padding\n if (direction === 'LTR') {\n zeroPosition += x + leftPadding + treeIndent;\n dataBarX += x + leftPadding + treeIndent;\n markerXs = markerXs.map(\n markerX => markerX + x + leftPadding + treeIndent\n );\n\n if (valuePlacement === 'beside' && textAlign === 'left') {\n zeroPosition += longestValueWidth + cellHorizontalPadding;\n dataBarX += longestValueWidth + cellHorizontalPadding;\n markerXs = markerXs.map(\n markerX => markerX + longestValueWidth + cellHorizontalPadding\n );\n }\n } else if (direction === 'RTL') {\n zeroPosition = zeroPosition + x - rightPadding;\n dataBarX = dataBarX + x - rightPadding;\n markerXs = markerXs.map(markerX => markerX + x - rightPadding);\n\n if (valuePlacement === 'beside' && textAlign === 'right') {\n zeroPosition = zeroPosition - cellHorizontalPadding - longestValueWidth;\n dataBarX = dataBarX - cellHorizontalPadding - longestValueWidth;\n markerXs = markerXs.map(\n markerX => markerX - cellHorizontalPadding - longestValueWidth\n );\n }\n }\n\n leftmostPosition += x + treeIndent;\n rightmostPosition += x;\n\n return {\n maxWidth,\n x: dataBarX,\n y,\n zeroPosition,\n leftmostPosition,\n rightmostPosition,\n totalValueRange,\n dataBarWidth,\n markerXs,\n };\n }\n\n getCachedWidth = memoizeClear(\n (context: CanvasRenderingContext2D, text: string): number =>\n context.measureText(text).width,\n { max: 10000 }\n );\n\n /**\n * Returns the width of the widest value in pixels\n */\n getCachedWidestValueForColumn = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n visibleRows: readonly VisibleIndex[],\n modelRows: VisibleToModelMap,\n model: GridModel,\n column: ModelIndex\n ): number => {\n let widestValue = 0;\n for (let i = 0; i < visibleRows.length; i += 1) {\n const row = visibleRows[i];\n const modelRow = getOrThrow(modelRows, row);\n const text = model.textForCell(column, modelRow);\n widestValue = Math.max(widestValue, this.getCachedWidth(context, text));\n }\n\n return widestValue;\n },\n { max: 1000 }\n );\n}\n\nexport default DataBarCellRenderer;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DataBarCellRenderer.js","names":["getOrThrow","CellRenderer","isExpandableGridModel","isDataBarGridModel","GridColorUtils","GridUtils","memoizeClear","DataBarCellRenderer","constructor","arguments","_defineProperty","context","text","measureText","width","max","visibleRows","modelRows","model","column","widestValue","i","length","row","modelRow","textForCell","Math","getCachedWidth","drawCellContent","state","metrics","theme","modelColumns","allRowHeights","allRowYs","firstColumn","fontWidthsLower","fontWidthsUpper","isFirstColumn","rowHeight","modelColumn","rowY","textAlign","textAlignForCell","x","textX","y","textY","textWidth","getTextRenderMetrics","fontWidthLower","get","font","fontWidthUpper","truncationChar","truncationCharForCell","truncatedText","getCachedTruncatedString","columnMin","columnMax","axis","color","dataBarColor","valuePlacement","opacity","markers","direction","value","dataBarOptionsForCell","hasGradient","Array","isArray","maxWidth","dataBarX","dataBarY","zeroPosition","leftmostPosition","markerXs","totalValueRange","dataBarWidth","getDataBarRenderMetrics","save","fillStyle","textBaseline","fillText","hasRowDividers","gridRowColor","yOffset","beginPath","roundRect","clip","globalAlpha","gradientWidth","gradientX","round","abs","translate","scale","gradient","getGradient","fillRect","restore","fill","forEach","markerX","index","shouldRenderDashedLine","strokeStyle","zeroLineColor","setLineDash","moveTo","lineTo","stroke","hasExpandableRows","drawCellRowTreeMarker","Error","allColumnXs","allColumnWidths","cellHorizontalPadding","treeDepthIndent","treeHorizontalPadding","columnWidth","treeIndent","depthForRow","longestValueWidth","getCachedWidestValueForColumn","leftPadding","rightPadding","columnLongest","map","marker","markerValue","offset","rightmostPosition","colors","canvas","document","createElement","ctx","getContext","Number","isNaN","createLinearGradient","oklabColors","linearSRGBToOklab","hexToRgb","colorStop","colorChangeInterval","leftColorIndex","floor","lerpColor","addColorStop","rgbToHex","OklabToLinearSRGB","primitive"],"sources":["../src/DataBarCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { isDataBarGridModel } from './DataBarGridModel';\nimport {\n type ModelIndex,\n type VisibleIndex,\n type VisibleToModelMap,\n} from './GridMetrics';\nimport GridColorUtils from './GridColorUtils';\nimport GridUtils from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport { type GridRenderState } from './GridRendererTypes';\nimport type GridModel from './GridModel';\n\ninterface DataBarRenderMetrics {\n /** The total width the entire bar from the min to max value can take up (rightmostPosition - leftmostPosition) */\n maxWidth: number;\n /** The x coordinate of the bar (the left) */\n x: number;\n /** The y coordinate of the bar (the top) */\n y: number;\n /** The position of the zero line */\n zeroPosition: number;\n /** The position of the leftmost point */\n leftmostPosition: number;\n /** The position of the rightmost point */\n rightmostPosition: number;\n /** The range of values (e.g. max of 100 and min of -50 means range of 150) */\n totalValueRange: number;\n /** The width of the databar */\n dataBarWidth: number;\n /** The x coordinates of the markers (the left) */\n markerXs: number[];\n}\nclass DataBarCellRenderer extends CellRenderer {\n static getGradient = memoizeClear(\n (width: number, colors: string[]): CanvasGradient => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (ctx == null) {\n throw new Error('Failed to create canvas context');\n }\n if (Number.isNaN(width)) {\n return ctx.createLinearGradient(0, 0, 0, 0);\n }\n const gradient = ctx.createLinearGradient(0, 0, width, 0);\n const oklabColors = colors.map(color =>\n GridColorUtils.linearSRGBToOklab(GridColorUtils.hexToRgb(color))\n );\n for (let i = 0; i < width; i += 1) {\n const colorStop = i / width;\n const colorChangeInterval = 1 / (colors.length - 1);\n const leftColorIndex = Math.floor(colorStop / colorChangeInterval);\n const color = GridColorUtils.lerpColor(\n oklabColors[leftColorIndex],\n oklabColors[leftColorIndex + 1],\n (colorStop % colorChangeInterval) / colorChangeInterval\n );\n gradient.addColorStop(\n i / width,\n GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(color))\n );\n }\n return gradient;\n },\n {\n max: 1000,\n primitive: true, // Stringify the arguments for memoization. Lets the color arrays be different arrays in memory, but still cache hit\n }\n );\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n return;\n }\n const {\n modelColumns,\n modelRows,\n allRowHeights,\n allRowYs,\n firstColumn,\n fontWidthsLower,\n fontWidthsUpper,\n } = metrics;\n\n const isFirstColumn = column === firstColumn;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const rowY = getOrThrow(allRowYs, row);\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const text = model.textForCell(modelColumn, modelRow);\n const {\n x: textX,\n y: textY,\n width: textWidth,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n );\n\n const {\n columnMin,\n columnMax,\n axis,\n color: dataBarColor,\n valuePlacement,\n opacity,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n\n const hasGradient = Array.isArray(dataBarColor) && dataBarColor.length > 1;\n if (columnMin == null || columnMax == null) {\n return;\n }\n\n const {\n maxWidth,\n x: dataBarX,\n y: dataBarY,\n zeroPosition,\n leftmostPosition,\n markerXs,\n totalValueRange,\n dataBarWidth,\n } = this.getDataBarRenderMetrics(context, state, column, row);\n\n context.save();\n context.textAlign = textAlign;\n if (hasGradient) {\n const color =\n value >= 0 ? dataBarColor[dataBarColor.length - 1] : dataBarColor[0];\n context.fillStyle = color;\n } else {\n context.fillStyle = Array.isArray(dataBarColor)\n ? dataBarColor[0]\n : dataBarColor;\n }\n context.textBaseline = 'middle';\n context.font = theme.font;\n\n if (valuePlacement !== 'hide') {\n context.fillText(truncatedText, textX, textY);\n }\n\n const hasRowDividers = theme.gridRowColor != null;\n const yOffset = hasRowDividers ? 2 : 1;\n\n context.save();\n context.beginPath();\n context.roundRect(\n dataBarX,\n rowY + yOffset, // yOffset includes 1px for top padding\n dataBarWidth,\n rowHeight - 1 - yOffset, // 1px for bottom padding\n 1\n );\n context.clip();\n context.globalAlpha = opacity;\n\n // Draw bar\n if (hasGradient) {\n // Draw gradient bar\n\n let gradientWidth = 0;\n let gradientX = 0;\n context.save();\n\n // Translate the context so its origin is at the start of the gradient\n // and increasing x value moves towards the end of the gradient.\n // For RTL, scale x by -1 to flip across the x-axis\n if (value < 0) {\n if (direction === 'LTR') {\n gradientWidth = Math.round(\n (Math.abs(columnMin) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n gradientWidth = Math.round(\n maxWidth - (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n } else if (direction === 'LTR') {\n // Value is greater than or equal to 0\n gradientWidth =\n Math.round(\n maxWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth\n ) - 1;\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n // Value is greater than or equal to 0\n gradientWidth = Math.round(\n (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n\n const gradient = DataBarCellRenderer.getGradient(\n gradientWidth,\n dataBarColor\n );\n context.fillStyle = gradient;\n context.fillRect(0, dataBarY, gradientWidth, rowHeight);\n context.restore(); // Restore gradient translate/scale\n } else {\n // Draw normal bar\n context.beginPath();\n context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight, 1);\n context.fill();\n }\n\n // Draw markers\n if (maxWidth > 0) {\n markerXs.forEach((markerX, index) => {\n context.fillStyle = markers[index].color;\n context.fillRect(markerX, dataBarY, 1, rowHeight);\n });\n }\n\n // restore clip\n context.restore();\n\n const shouldRenderDashedLine = !(\n axis === 'directional' &&\n ((valuePlacement === 'beside' &&\n textAlign === 'right' &&\n direction === 'LTR') ||\n (valuePlacement === 'beside' &&\n textAlign === 'left' &&\n direction === 'RTL') ||\n valuePlacement !== 'beside')\n );\n\n // Draw dashed line\n if (shouldRenderDashedLine) {\n context.strokeStyle = theme.zeroLineColor;\n context.beginPath();\n context.setLineDash([2, 1]);\n context.moveTo(zeroPosition, rowY);\n context.lineTo(zeroPosition, rowY + rowHeight);\n context.stroke();\n }\n\n context.restore();\n\n // Draw tree marker\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n getDataBarRenderMetrics(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): DataBarRenderMetrics {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n throw new Error('Grid model is not a data bar grid model');\n }\n const {\n firstColumn,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n modelColumns,\n modelRows,\n visibleRows,\n } = metrics;\n const { cellHorizontalPadding, treeDepthIndent, treeHorizontalPadding } =\n theme;\n\n const modelColumn = getOrThrow(modelColumns, column);\n const modelRow = getOrThrow(modelRows, row);\n const x = getOrThrow(allColumnXs, column);\n const y = getOrThrow(allRowYs, row);\n const columnWidth = getOrThrow(allColumnWidths, column);\n const isFirstColumn = column === firstColumn;\n let treeIndent = 0;\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n isFirstColumn\n ) {\n treeIndent =\n treeDepthIndent * (model.depthForRow(row) + 1) + treeHorizontalPadding;\n }\n\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const {\n columnMin,\n columnMax,\n axis,\n valuePlacement,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n const longestValueWidth = this.getCachedWidestValueForColumn(\n context,\n visibleRows,\n modelRows,\n model,\n modelColumn\n );\n\n const leftPadding = 2;\n const rightPadding =\n valuePlacement === 'beside' && textAlign === 'right' ? 2 : 1;\n\n // The value of the total range (e.g. max - column)\n let totalValueRange = columnMax - columnMin;\n // If min and max are both positive or min and max are equal, the max length is columnMax\n if ((columnMax >= 0 && columnMin >= 0) || columnMin === columnMax) {\n totalValueRange = columnMax;\n } else if (columnMax <= 0 && columnMin <= 0) {\n // If min and max are both negative, the max length is the absolute value of columnMin\n totalValueRange = Math.abs(columnMin);\n }\n\n let maxWidth = columnWidth - treeIndent - rightPadding - leftPadding;\n if (valuePlacement === 'beside') {\n maxWidth = maxWidth - cellHorizontalPadding - longestValueWidth;\n }\n\n if (maxWidth < 0) {\n maxWidth = 0;\n }\n\n const columnLongest = Math.max(Math.abs(columnMin), Math.abs(columnMax));\n // If axis is proportional, totalValueRange is proportional to maxWidth\n let dataBarWidth = (Math.abs(value) / totalValueRange) * maxWidth;\n\n if (maxWidth === 0) {\n dataBarWidth = 0;\n } else if (axis === 'middle') {\n // The longest bar is proportional to half of the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * (maxWidth / 2);\n } else if (axis === 'directional') {\n // The longest bar is proportional to the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * maxWidth;\n }\n\n // Default: proportional, beside, LTR, right text align\n // All positions are assuming the left side is 0 and the right side is maxWidth\n let zeroPosition =\n columnMin >= 0 ? 0 : (Math.abs(columnMin) / totalValueRange) * maxWidth;\n let dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / totalValueRange) * maxWidth;\n let markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n const offset = (Math.abs(markerValue) / totalValueRange) * maxWidth;\n return markerValue >= 0 ? zeroPosition + offset : zeroPosition - offset;\n });\n let leftmostPosition =\n valuePlacement === 'beside' && textAlign === 'left'\n ? cellHorizontalPadding + longestValueWidth + leftPadding\n : leftPadding;\n let rightmostPosition =\n valuePlacement === 'beside' && textAlign === 'right'\n ? columnWidth - cellHorizontalPadding - longestValueWidth - rightPadding\n : rightPadding;\n\n // Proportional, RTL\n if (direction === 'RTL') {\n zeroPosition =\n columnMin >= 0\n ? columnWidth\n : columnWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth;\n dataBarX =\n value >= 0\n ? zeroPosition - (value / totalValueRange) * maxWidth\n : zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n return markerValue >= 0\n ? zeroPosition - (Math.abs(markerValue) / totalValueRange) * maxWidth\n : zeroPosition + (Math.abs(markerValue) / totalValueRange) * maxWidth;\n });\n }\n\n if (axis === 'middle') {\n zeroPosition = maxWidth / 2;\n if (direction === 'LTR') {\n // Middle, LTR\n dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue >= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n } else if (direction === 'RTL') {\n // Middle, RTL\n dataBarX =\n value <= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue <= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n }\n } else if (axis === 'directional') {\n if (direction === 'LTR') {\n // Directional, LTR\n zeroPosition = 0;\n dataBarX = zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition + (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n } else if (direction === 'RTL') {\n // Directional, RTL\n zeroPosition = columnWidth;\n dataBarX = zeroPosition - (Math.abs(value) / columnLongest) * maxWidth;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition - (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n }\n }\n\n // Offset all values by the actual x value and padding\n if (direction === 'LTR') {\n zeroPosition += x + leftPadding + treeIndent;\n dataBarX += x + leftPadding + treeIndent;\n markerXs = markerXs.map(\n markerX => markerX + x + leftPadding + treeIndent\n );\n\n if (valuePlacement === 'beside' && textAlign === 'left') {\n zeroPosition += longestValueWidth + cellHorizontalPadding;\n dataBarX += longestValueWidth + cellHorizontalPadding;\n markerXs = markerXs.map(\n markerX => markerX + longestValueWidth + cellHorizontalPadding\n );\n }\n } else if (direction === 'RTL') {\n zeroPosition = zeroPosition + x - rightPadding;\n dataBarX = dataBarX + x - rightPadding;\n markerXs = markerXs.map(markerX => markerX + x - rightPadding);\n\n if (valuePlacement === 'beside' && textAlign === 'right') {\n zeroPosition = zeroPosition - cellHorizontalPadding - longestValueWidth;\n dataBarX = dataBarX - cellHorizontalPadding - longestValueWidth;\n markerXs = markerXs.map(\n markerX => markerX - cellHorizontalPadding - longestValueWidth\n );\n }\n }\n\n leftmostPosition += x + treeIndent;\n rightmostPosition += x;\n\n return {\n maxWidth,\n x: dataBarX,\n y,\n zeroPosition,\n leftmostPosition,\n rightmostPosition,\n totalValueRange,\n dataBarWidth,\n markerXs,\n };\n }\n\n getCachedWidth = memoizeClear(\n (context: CanvasRenderingContext2D, text: string): number =>\n context.measureText(text).width,\n { max: 10000 }\n );\n\n /**\n * Returns the width of the widest value in pixels\n */\n getCachedWidestValueForColumn = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n visibleRows: readonly VisibleIndex[],\n modelRows: VisibleToModelMap,\n model: GridModel,\n column: ModelIndex\n ): number => {\n let widestValue = 0;\n for (let i = 0; i < visibleRows.length; i += 1) {\n const row = visibleRows[i];\n const modelRow = getOrThrow(modelRows, row);\n const text = model.textForCell(column, modelRow);\n widestValue = Math.max(widestValue, this.getCachedWidth(context, text));\n }\n\n return widestValue;\n },\n { max: 1000 }\n );\n}\n\nexport default DataBarCellRenderer;\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataBarGridModel.js","names":["isDataBarGridModel","model","dataBarOptionsForCell","undefined"],"sources":["../src/DataBarGridModel.ts"],"sourcesContent":["import { type ModelIndex } from './GridMetrics';\nimport type GridModel from './GridModel';\nimport { type GridColor, type GridTheme as GridThemeType } from './GridTheme';\n\nexport type Marker = { value: number; color: string };\nexport type AxisOption = 'proportional' | 'middle' | 'directional';\nexport type ValuePlacementOption = 'beside' | 'overlap' | 'hide';\nexport type DirectionOption = 'LTR' | 'RTL';\n/** Map from ModelIndex to the axis option of the column */\nexport type ColumnAxisMap = Map<ModelIndex, AxisOption>;\n/** Map from ModelIndex to a color or an array of colors\n * If given an array, then the bar will be a gradient\n * The colors should be given left to right (e.g. it should be like ['yellow', 'green'] for positive color and ['red', 'yellow'] for negative color)\n */\nexport type ColorMap = Map<ModelIndex, GridColor | GridColor[]>;\n/** Map from ModelIndex to the value placement option of the column */\nexport type ValuePlacementMap = Map<ModelIndex, ValuePlacementOption>;\n/** Map from ModelIndex to the opacity of the column */\nexport type OpacityMap = Map<ModelIndex, number>;\n/** Map from ModelIndex to the direction of the column */\nexport type DirectionMap = Map<ModelIndex, DirectionOption>;\n/** Map from ModelIndex to the text alignment of the column */\nexport type TextAlignmentMap = Map<ModelIndex, CanvasTextAlign>;\n/** Map from column to the columns its markers are from */\nexport type MarkerMap = Map<ModelIndex, Marker[]>;\n/** Map from column to whether the bar has a gradient */\nexport type GradientMap = Map<ModelIndex, boolean>;\n// Map from ModelIndex to the minimum number in the column\nexport type MinMap = Map<ModelIndex, number>;\n// Map from ModelIndex to the maximum number in the column\nexport type MaxMap = Map<ModelIndex, number>;\n\nexport interface DataBarOptions {\n columnMin: number;\n columnMax: number;\n axis: AxisOption;\n color: GridColor | GridColor[];\n valuePlacement: ValuePlacementOption;\n opacity: number;\n markers: Marker[];\n direction: DirectionOption;\n value: number;\n}\n\nexport function isDataBarGridModel(\n model: GridModel\n): model is DataBarGridModel {\n return (model as DataBarGridModel)?.dataBarOptionsForCell !== undefined;\n}\n\nexport interface DataBarGridModel extends GridModel {\n dataBarOptionsForCell: (\n column: ModelIndex,\n row: ModelIndex,\n theme: GridThemeType\n ) => DataBarOptions;\n}\n"],"mappings":"AAQA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAeA,OAAO,SAASA,kBAAkBA,CAChCC,KAAgB,EACW;EAC3B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAuBC,qBAAqB,MAAKC,SAAS;AACzE"}
|
1
|
+
{"version":3,"file":"DataBarGridModel.js","names":["isDataBarGridModel","model","dataBarOptionsForCell","undefined"],"sources":["../src/DataBarGridModel.ts"],"sourcesContent":["import { type ModelIndex } from './GridMetrics';\nimport type GridModel from './GridModel';\nimport { type GridColor, type GridTheme as GridThemeType } from './GridTheme';\n\nexport type Marker = { value: number; color: string };\nexport type AxisOption = 'proportional' | 'middle' | 'directional';\nexport type ValuePlacementOption = 'beside' | 'overlap' | 'hide';\nexport type DirectionOption = 'LTR' | 'RTL';\n/** Map from ModelIndex to the axis option of the column */\nexport type ColumnAxisMap = Map<ModelIndex, AxisOption>;\n/** Map from ModelIndex to a color or an array of colors\n * If given an array, then the bar will be a gradient\n * The colors should be given left to right (e.g. it should be like ['yellow', 'green'] for positive color and ['red', 'yellow'] for negative color)\n */\nexport type ColorMap = Map<ModelIndex, GridColor | GridColor[]>;\n/** Map from ModelIndex to the value placement option of the column */\nexport type ValuePlacementMap = Map<ModelIndex, ValuePlacementOption>;\n/** Map from ModelIndex to the opacity of the column */\nexport type OpacityMap = Map<ModelIndex, number>;\n/** Map from ModelIndex to the direction of the column */\nexport type DirectionMap = Map<ModelIndex, DirectionOption>;\n/** Map from ModelIndex to the text alignment of the column */\nexport type TextAlignmentMap = Map<ModelIndex, CanvasTextAlign>;\n/** Map from column to the columns its markers are from */\nexport type MarkerMap = Map<ModelIndex, Marker[]>;\n/** Map from column to whether the bar has a gradient */\nexport type GradientMap = Map<ModelIndex, boolean>;\n// Map from ModelIndex to the minimum number in the column\nexport type MinMap = Map<ModelIndex, number>;\n// Map from ModelIndex to the maximum number in the column\nexport type MaxMap = Map<ModelIndex, number>;\n\nexport interface DataBarOptions {\n columnMin: number;\n columnMax: number;\n axis: AxisOption;\n color: GridColor | GridColor[];\n valuePlacement: ValuePlacementOption;\n opacity: number;\n markers: Marker[];\n direction: DirectionOption;\n value: number;\n}\n\nexport function isDataBarGridModel(\n model: GridModel\n): model is DataBarGridModel {\n return (model as DataBarGridModel)?.dataBarOptionsForCell !== undefined;\n}\n\nexport interface DataBarGridModel extends GridModel {\n dataBarOptionsForCell: (\n column: ModelIndex,\n row: ModelIndex,\n theme: GridThemeType\n ) => DataBarOptions;\n}\n"],"mappings":"AAQA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAeA,OAAO,SAASA,kBAAkBA,CAChCC,KAAgB,EACW;EAC3B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAuBC,qBAAqB,MAAKC,SAAS;AACzE","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DeletableGridModel.js","names":["AssertionError","isDeletableGridModel","model","isDeletable","undefined","assertIsDeletableGridModel","concat"],"sources":["../src/DeletableGridModel.ts"],"sourcesContent":["import type GridRange from './GridRange';\nimport type GridModel from './GridModel';\nimport { AssertionError } from './errors';\n\nexport function isDeletableGridModel(\n model: GridModel\n): model is DeletableGridModel {\n return (model as DeletableGridModel)?.isDeletable !== undefined;\n}\n\nexport function assertIsDeletableGridModel(\n model: GridModel\n): asserts model is DeletableGridModel {\n if (!isDeletableGridModel(model)) {\n throw new AssertionError(\n `Expected 'model' to be deletable, but received ${model}`\n );\n }\n}\n\n/**\n * Model for a deletable grid\n */\nexport interface DeletableGridModel extends GridModel {\n /** Whether this model is deletable or not */\n isDeletable: boolean;\n\n /**\n * Check if a given range is deletable\n * @param range The range to check if it is deletable\n * @returns True if the range is deletable\n */\n isDeletableRange: (range: GridRange) => boolean;\n\n /**\n * Check if an array of ranges are deletable\n * @param ranges The ranges to check if they are deletable\n * @returns True if the ranges are deletable\n */\n isDeletableRanges: (ranges: readonly GridRange[]) => boolean;\n\n /**\n * Delete ranges from an input grid.\n * @param ranges The ranges to delete\n * @returns A promise that resolves successfully when the operation is complete or rejects if there's an error\n */\n delete: (ranges: readonly GridRange[]) => Promise<void>;\n}\n\nexport default DeletableGridModel;\n"],"mappings":"SAESA,cAAc;AAEvB,OAAO,SAASC,oBAAoBA,CAClCC,KAAgB,EACa;EAC7B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAyBC,WAAW,MAAKC,SAAS;AACjE;AAEA,OAAO,SAASC,0BAA0BA,CACxCH,KAAgB,EACqB;EACrC,IAAI,CAACD,oBAAoB,CAACC,KAAK,CAAC,EAAE;IAChC,MAAM,IAAIF,cAAc,mDAAAM,MAAA,CAC4BJ,KAAK,CACzD,CAAC;EACH;AACF;;AAEA;AACA;AACA"}
|
1
|
+
{"version":3,"file":"DeletableGridModel.js","names":["AssertionError","isDeletableGridModel","model","isDeletable","undefined","assertIsDeletableGridModel","concat"],"sources":["../src/DeletableGridModel.ts"],"sourcesContent":["import type GridRange from './GridRange';\nimport type GridModel from './GridModel';\nimport { AssertionError } from './errors';\n\nexport function isDeletableGridModel(\n model: GridModel\n): model is DeletableGridModel {\n return (model as DeletableGridModel)?.isDeletable !== undefined;\n}\n\nexport function assertIsDeletableGridModel(\n model: GridModel\n): asserts model is DeletableGridModel {\n if (!isDeletableGridModel(model)) {\n throw new AssertionError(\n `Expected 'model' to be deletable, but received ${model}`\n );\n }\n}\n\n/**\n * Model for a deletable grid\n */\nexport interface DeletableGridModel extends GridModel {\n /** Whether this model is deletable or not */\n isDeletable: boolean;\n\n /**\n * Check if a given range is deletable\n * @param range The range to check if it is deletable\n * @returns True if the range is deletable\n */\n isDeletableRange: (range: GridRange) => boolean;\n\n /**\n * Check if an array of ranges are deletable\n * @param ranges The ranges to check if they are deletable\n * @returns True if the ranges are deletable\n */\n isDeletableRanges: (ranges: readonly GridRange[]) => boolean;\n\n /**\n * Delete ranges from an input grid.\n * @param ranges The ranges to delete\n * @returns A promise that resolves successfully when the operation is complete or rejects if there's an error\n */\n delete: (ranges: readonly GridRange[]) => Promise<void>;\n}\n\nexport default DeletableGridModel;\n"],"mappings":"SAESA,cAAc;AAEvB,OAAO,SAASC,oBAAoBA,CAClCC,KAAgB,EACa;EAC7B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAyBC,WAAW,MAAKC,SAAS;AACjE;AAEA,OAAO,SAASC,0BAA0BA,CACxCH,KAAgB,EACqB;EACrC,IAAI,CAACD,oBAAoB,CAACC,KAAK,CAAC,EAAE;IAChC,MAAM,IAAIF,cAAc,mDAAAM,MAAA,CAC4BJ,KAAK,CACzD,CAAC;EACH;AACF;;AAEA;AACA;AACA","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EditableGridModel.js","names":["AssertionError","isEditableGridModel","model","isEditable","undefined","assertIsEditableGridModel","concat"],"sources":["../src/EditableGridModel.ts"],"sourcesContent":["import type GridRange from './GridRange';\nimport { type ModelIndex } from './GridMetrics';\nimport type GridModel from './GridModel';\nimport { AssertionError } from './errors';\n\nexport function isEditableGridModel(\n model: GridModel\n): model is EditableGridModel {\n return (model as EditableGridModel)?.isEditable !== undefined;\n}\n\nexport function assertIsEditableGridModel(\n model: GridModel\n): asserts model is EditableGridModel {\n if (!isEditableGridModel(model)) {\n throw new AssertionError(\n `Expected 'model' to be editable, but received ${model}`\n );\n }\n}\n\n/**\n * Edit operation when applying multiple edits\n */\nexport type EditOperation = {\n /** Column to set the value for */\n column: ModelIndex;\n\n /** Row to set the value for */\n row: ModelIndex;\n\n /** Text value to set */\n text: string;\n\n /** @deprecated use `column` instead */\n x?: ModelIndex;\n /** @deprecated use `row` instead */\n y?: ModelIndex;\n};\n\n/**\n * Model for an editable grid\n */\nexport interface EditableGridModel extends GridModel {\n isEditable: boolean;\n\n /**\n * Check if a given range is editable\n * @param range The range to check if it is editable\n * @returns True if the range is editable\n */\n isEditableRange: (range: GridRange) => boolean;\n\n /**\n * Get the edit text for a cell as a string\n * @param column Column to get\n * @param row Row to get\n * @returns The value to use for editing\n */\n editValueForCell: (column: ModelIndex, row: ModelIndex) => string;\n\n /**\n * Set value in an editable table\n * @param column Column to set\n * @param row Row to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n setValueForCell: (\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ) => Promise<void>;\n\n /**\n * Set value in an editable table\n * @param ranges The ranges to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n setValueForRanges: (\n ranges: readonly GridRange[],\n value: string\n ) => Promise<void>;\n\n /**\n * Apply edits to the model\n * @param edits Edits to apply to the model\n * @returns A promise that resolves successfully when the operation is complete or rejects if there's an error\n */\n setValues: (edits: readonly EditOperation[]) => Promise<void>;\n\n /**\n * Check if a text value is a valid edit for a cell\n * @param column Column to check\n * @param row Row to check\n * @param value Value to check if it's a valid value or not\n * @returns True if it's a valid value, false otherwise\n */\n isValidForCell: (\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ) => boolean;\n}\n\nexport default EditableGridModel;\n"],"mappings":"SAGSA,cAAc;AAEvB,OAAO,SAASC,mBAAmBA,CACjCC,KAAgB,EACY;EAC5B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAwBC,UAAU,MAAKC,SAAS;AAC/D;AAEA,OAAO,SAASC,yBAAyBA,CACvCH,KAAgB,EACoB;EACpC,IAAI,CAACD,mBAAmB,CAACC,KAAK,CAAC,EAAE;IAC/B,MAAM,IAAIF,cAAc,kDAAAM,MAAA,CAC2BJ,KAAK,CACxD,CAAC;EACH;AACF;;AAEA;AACA;AACA;;AAiBA;AACA;AACA"}
|
1
|
+
{"version":3,"file":"EditableGridModel.js","names":["AssertionError","isEditableGridModel","model","isEditable","undefined","assertIsEditableGridModel","concat"],"sources":["../src/EditableGridModel.ts"],"sourcesContent":["import type GridRange from './GridRange';\nimport { type ModelIndex } from './GridMetrics';\nimport type GridModel from './GridModel';\nimport { AssertionError } from './errors';\n\nexport function isEditableGridModel(\n model: GridModel\n): model is EditableGridModel {\n return (model as EditableGridModel)?.isEditable !== undefined;\n}\n\nexport function assertIsEditableGridModel(\n model: GridModel\n): asserts model is EditableGridModel {\n if (!isEditableGridModel(model)) {\n throw new AssertionError(\n `Expected 'model' to be editable, but received ${model}`\n );\n }\n}\n\n/**\n * Edit operation when applying multiple edits\n */\nexport type EditOperation = {\n /** Column to set the value for */\n column: ModelIndex;\n\n /** Row to set the value for */\n row: ModelIndex;\n\n /** Text value to set */\n text: string;\n\n /** @deprecated use `column` instead */\n x?: ModelIndex;\n /** @deprecated use `row` instead */\n y?: ModelIndex;\n};\n\n/**\n * Model for an editable grid\n */\nexport interface EditableGridModel extends GridModel {\n isEditable: boolean;\n\n /**\n * Check if a given range is editable\n * @param range The range to check if it is editable\n * @returns True if the range is editable\n */\n isEditableRange: (range: GridRange) => boolean;\n\n /**\n * Get the edit text for a cell as a string\n * @param column Column to get\n * @param row Row to get\n * @returns The value to use for editing\n */\n editValueForCell: (column: ModelIndex, row: ModelIndex) => string;\n\n /**\n * Set value in an editable table\n * @param column Column to set\n * @param row Row to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n setValueForCell: (\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ) => Promise<void>;\n\n /**\n * Set value in an editable table\n * @param ranges The ranges to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n setValueForRanges: (\n ranges: readonly GridRange[],\n value: string\n ) => Promise<void>;\n\n /**\n * Apply edits to the model\n * @param edits Edits to apply to the model\n * @returns A promise that resolves successfully when the operation is complete or rejects if there's an error\n */\n setValues: (edits: readonly EditOperation[]) => Promise<void>;\n\n /**\n * Check if a text value is a valid edit for a cell\n * @param column Column to check\n * @param row Row to check\n * @param value Value to check if it's a valid value or not\n * @returns True if it's a valid value, false otherwise\n */\n isValidForCell: (\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ) => boolean;\n}\n\nexport default EditableGridModel;\n"],"mappings":"SAGSA,cAAc;AAEvB,OAAO,SAASC,mBAAmBA,CACjCC,KAAgB,EACY;EAC5B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAwBC,UAAU,MAAKC,SAAS;AAC/D;AAEA,OAAO,SAASC,yBAAyBA,CACvCH,KAAgB,EACoB;EACpC,IAAI,CAACD,mBAAmB,CAACC,KAAK,CAAC,EAAE;IAC/B,MAAM,IAAIF,cAAc,kDAAAM,MAAA,CAC2BJ,KAAK,CACxD,CAAC;EACH;AACF;;AAEA;AACA;AACA;;AAiBA;AACA;AACA","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EventHandlerResult.js","names":[],"sources":["../src/EventHandlerResult.ts"],"sourcesContent":["/**\n * An options object can be returned as the result to control\n * if event.stopPropagation() and event.preventDefault() should be called\n */\nexport type EventHandlerResultOptions = {\n stopPropagation?: boolean;\n preventDefault?: boolean;\n};\n\n/**\n * Result from the event handler for an event.\n * Return one of the following:\n * - `false` if the event was not consumed and should be passed to other registered grid event handlers\n * - `true` to stop the event from being passed along to other registered grid event handlers, as well as call event.stopPropagation() and event.preventDefault()\n * - An `EventHandlerResultOptions` object to stop the event from being passed along to other registered grid event handlers, and decide whether to call event.stopPropagation() and/or event.preventDefault()\n */\nexport type EventHandlerResult = boolean | EventHandlerResultOptions;\n"],"mappings":""}
|
1
|
+
{"version":3,"file":"EventHandlerResult.js","names":[],"sources":["../src/EventHandlerResult.ts"],"sourcesContent":["/**\n * An options object can be returned as the result to control\n * if event.stopPropagation() and event.preventDefault() should be called\n */\nexport type EventHandlerResultOptions = {\n stopPropagation?: boolean;\n preventDefault?: boolean;\n};\n\n/**\n * Result from the event handler for an event.\n * Return one of the following:\n * - `false` if the event was not consumed and should be passed to other registered grid event handlers\n * - `true` to stop the event from being passed along to other registered grid event handlers, as well as call event.stopPropagation() and event.preventDefault()\n * - An `EventHandlerResultOptions` object to stop the event from being passed along to other registered grid event handlers, and decide whether to call event.stopPropagation() and/or event.preventDefault()\n */\nexport type EventHandlerResult = boolean | EventHandlerResultOptions;\n"],"mappings":"","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ExpandableGridModel.js","names":["isExpandableGridModel","model","hasExpandableRows","undefined"],"sources":["../src/ExpandableGridModel.ts"],"sourcesContent":["import type GridModel from './GridModel';\nimport { type ModelIndex } from './GridMetrics';\n\nexport function isExpandableGridModel(\n model: GridModel\n): model is ExpandableGridModel {\n return (model as ExpandableGridModel)?.hasExpandableRows !== undefined;\n}\n\n/**\n * Expandable grid model. Allows for a grid with rows that can expand (e.g. A Tree Table)\n */\nexport interface ExpandableGridModel extends GridModel {\n /** Whether the grid has rows that can be expanded */\n hasExpandableRows: boolean;\n\n /** Whether the grid can expand all */\n isExpandAllAvailable: boolean;\n\n /**\n * @param row Row to check\n * @returns True if the row is expandable\n */\n isRowExpandable: (row: ModelIndex) => boolean;\n\n /**\n * @param row Row to check\n * @returns True if the row is currently expanded\n */\n isRowExpanded: (row: ModelIndex) => boolean;\n\n /**\n * Change the expanded status of an expandable row\n * @param row Row to expand\n * @param isExpanded True to expand the row, false to collapse\n * @param expandDescendants True to expand nested rows, false otherwise\n */\n setRowExpanded: (\n row: ModelIndex,\n isExpanded: boolean,\n expandDescendants?: boolean\n ) => void;\n\n /**\n * Expand all rows\n */\n expandAll: () => void;\n\n /**\n * Collapse all rows\n */\n collapseAll: () => void;\n\n /**\n * Get the depth of a row (ie. How indented the row should be)\n * @param row Row to check\n * @returns Depth of the row\n */\n depthForRow: (row: ModelIndex) => number;\n}\n\nexport default ExpandableGridModel;\n"],"mappings":"AAGA,OAAO,SAASA,qBAAqBA,CACnCC,KAAgB,EACc;EAC9B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAA0BC,iBAAiB,MAAKC,SAAS;AACxE;;AAEA;AACA;AACA"}
|
1
|
+
{"version":3,"file":"ExpandableGridModel.js","names":["isExpandableGridModel","model","hasExpandableRows","undefined"],"sources":["../src/ExpandableGridModel.ts"],"sourcesContent":["import type GridModel from './GridModel';\nimport { type ModelIndex } from './GridMetrics';\n\nexport function isExpandableGridModel(\n model: GridModel\n): model is ExpandableGridModel {\n return (model as ExpandableGridModel)?.hasExpandableRows !== undefined;\n}\n\n/**\n * Expandable grid model. Allows for a grid with rows that can expand (e.g. A Tree Table)\n */\nexport interface ExpandableGridModel extends GridModel {\n /** Whether the grid has rows that can be expanded */\n hasExpandableRows: boolean;\n\n /** Whether the grid can expand all */\n isExpandAllAvailable: boolean;\n\n /**\n * @param row Row to check\n * @returns True if the row is expandable\n */\n isRowExpandable: (row: ModelIndex) => boolean;\n\n /**\n * @param row Row to check\n * @returns True if the row is currently expanded\n */\n isRowExpanded: (row: ModelIndex) => boolean;\n\n /**\n * Change the expanded status of an expandable row\n * @param row Row to expand\n * @param isExpanded True to expand the row, false to collapse\n * @param expandDescendants True to expand nested rows, false otherwise\n */\n setRowExpanded: (\n row: ModelIndex,\n isExpanded: boolean,\n expandDescendants?: boolean\n ) => void;\n\n /**\n * Expand all rows\n */\n expandAll: () => void;\n\n /**\n * Collapse all rows\n */\n collapseAll: () => void;\n\n /**\n * Get the depth of a row (ie. How indented the row should be)\n * @param row Row to check\n * @returns Depth of the row\n */\n depthForRow: (row: ModelIndex) => number;\n}\n\nexport default ExpandableGridModel;\n"],"mappings":"AAGA,OAAO,SAASA,qBAAqBA,CACnCC,KAAgB,EACc;EAC9B,OAAO,CAACA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAA0BC,iBAAiB,MAAKC,SAAS;AACxE;;AAEA;AACA;AACA","ignoreList":[]}
|
package/dist/Grid.d.ts
CHANGED
@@ -75,6 +75,8 @@ export type GridState = {
|
|
75
75
|
* so we need to throw them in componentDidUpdate
|
76
76
|
*/
|
77
77
|
renderError?: unknown;
|
78
|
+
/** What revision the grid is drawing. Automatically increments when a forceUpdate is called. */
|
79
|
+
updateRevision: number;
|
78
80
|
};
|
79
81
|
/**
|
80
82
|
* High performance, extendible, themeable grid component.
|
@@ -459,6 +461,7 @@ declare class Grid extends PureComponent<GridProps, GridState> {
|
|
459
461
|
handleMouseDrag(event: MouseEvent): void;
|
460
462
|
handleMouseUp(event: MouseEvent): void;
|
461
463
|
handleResize(): void;
|
464
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
462
465
|
handleWheel(event: WheelEvent): void;
|
463
466
|
/**
|
464
467
|
* Handle cancelling the cell edit action
|
package/dist/Grid.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../src/Grid.tsx"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../src/Grid.tsx"],"names":[],"mappings":"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"}
|
package/dist/Grid.js
CHANGED
@@ -190,7 +190,9 @@ class Grid extends PureComponent {
|
|
190
190
|
// The cell that is currently being edited
|
191
191
|
editingCell: null,
|
192
192
|
isStuckToBottom,
|
193
|
-
isStuckToRight
|
193
|
+
isStuckToRight,
|
194
|
+
/** What revision the grid is drawing. Automatically increments when a forceUpdate is called. */
|
195
|
+
updateRevision: 0
|
194
196
|
};
|
195
197
|
}
|
196
198
|
componentDidMount() {
|
@@ -234,8 +236,6 @@ class Grid extends PureComponent {
|
|
234
236
|
var changedState = getChangedKeys(prevState, this.state);
|
235
237
|
// We don't need to bother re-checking any of the metrics if no props have changed or only the children have changed
|
236
238
|
if ((changedProps.length === 0 || changedProps.length === 1 && changedProps[0] === 'children') && changedState.length === 0) {
|
237
|
-
// We should still draw the canvas though, as we may have been called with a `forceUpdate`
|
238
|
-
this.requestUpdateCanvas();
|
239
239
|
return;
|
240
240
|
}
|
241
241
|
var {
|
@@ -1605,6 +1605,17 @@ class Grid extends PureComponent {
|
|
1605
1605
|
if (!this.metrics) throw new Error('metrics not set');
|
1606
1606
|
this.forceUpdate();
|
1607
1607
|
}
|
1608
|
+
forceUpdate(callback) {
|
1609
|
+
this.setState(_ref5 => {
|
1610
|
+
var {
|
1611
|
+
updateRevision = 0
|
1612
|
+
} = _ref5;
|
1613
|
+
return {
|
1614
|
+
updateRevision: (updateRevision + 1) % Number.MAX_SAFE_INTEGER
|
1615
|
+
};
|
1616
|
+
});
|
1617
|
+
super.forceUpdate(callback);
|
1618
|
+
}
|
1608
1619
|
handleWheel(event) {
|
1609
1620
|
this.notifyMouseHandlers('onWheel', event);
|
1610
1621
|
if (event.defaultPrevented) {
|
@@ -1782,10 +1793,10 @@ class Grid extends PureComponent {
|
|
1782
1793
|
* @param value New value set
|
1783
1794
|
*/
|
1784
1795
|
handleEditCellChange(value) {
|
1785
|
-
this.setState(
|
1796
|
+
this.setState(_ref6 => {
|
1786
1797
|
var {
|
1787
1798
|
editingCell
|
1788
|
-
} =
|
1799
|
+
} = _ref6;
|
1789
1800
|
try {
|
1790
1801
|
assertIsDefined(editingCell);
|
1791
1802
|
return {
|