@pie-lib/plot 3.2.0-next.36 → 3.2.0-next.37

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/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.2.0-next.37](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@3.2.0-next.36...@pie-lib/plot@3.2.0-next.37) (2026-04-24)
7
+
8
+ ### Bug Fixes
9
+
10
+ - add stopPropagation to onStop calls in gridDraggable tests ([6049268](https://github.com/pie-framework/pie-lib/commit/6049268d91b0498285df1ac3ad628f45f328be93))
11
+ - ensure onClick is called for existing mark points/lines and does not interfere with drag PIE-426 PIE-427 ([1cb4f00](https://github.com/pie-framework/pie-lib/commit/1cb4f00118ff24ddffe4c1ee2a091daccafa4d15))
12
+
6
13
  # [3.2.0-next.36](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@3.2.0-next.35...@pie-lib/plot@3.2.0-next.36) (2026-04-23)
7
14
 
8
15
  ### Bug Fixes
@@ -24,7 +24,7 @@ var utils = _interopRequireWildcard(require("./utils"));
24
24
  var _lodashEs = require("lodash-es");
25
25
  var _invariant = _interopRequireDefault(require("invariant"));
26
26
  var _d3Selection = require("d3-selection");
27
- var _excluded = ["disabled"];
27
+ var _excluded = ["disabled", "onClick"];
28
28
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
29
29
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
30
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -189,8 +189,9 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
189
189
  (0, _defineProperty2["default"])(_this, "onDrag", function (e, dd) {
190
190
  var _this$props = _this.props,
191
191
  onDrag = _this$props.onDrag,
192
- graphProps = _this$props.graphProps;
193
- if (!onDrag) {
192
+ graphProps = _this$props.graphProps,
193
+ disabled = _this$props.disabled;
194
+ if (!onDrag || disabled) {
194
195
  return;
195
196
  }
196
197
 
@@ -241,17 +242,20 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
241
242
  log('[onStop] dd:', dd);
242
243
  var _this$props2 = _this.props,
243
244
  onDragStop = _this$props2.onDragStop,
244
- onClick = _this$props2.onClick;
245
- if (onDragStop) {
245
+ onClick = _this$props2.onClick,
246
+ disabled = _this$props2.disabled;
247
+ if (onDragStop && !disabled) {
246
248
  onDragStop();
247
249
  }
248
250
  log('[onStop] lastX/Y: ', dd.lastX, dd.lastY);
249
- // Use the synchronous _didDrag flag instead of comparing clientX/clientY via tiny().
250
- // tiny() was unreliable because setState is async – startX/startY might not reflect
251
- // the actual mousedown position when onStop fires. _didDrag is set synchronously in
252
- // onStart (false) and onDrag (true), so it's always accurate.
253
251
  var isClick = !_this._didDrag;
254
252
  if (isClick) {
253
+ // For non-disabled marks, stop propagation so the Bg d3 listener
254
+ // doesn't also create a new mark on top of this one.
255
+ // Disabled/background marks allow propagation so Bg can handle the click.
256
+ if (!disabled) {
257
+ e.stopPropagation();
258
+ }
255
259
  if (onClick) {
256
260
  log('call onClick');
257
261
  _this.setState({
@@ -292,8 +296,13 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
292
296
  return (0, _createClass2["default"])(GridDraggable, [{
293
297
  key: "render",
294
298
  value: function render() {
299
+ // we extract onClick here to prevent it from being passed to the DraggableCore
300
+ // and to prevent it from being included in the ...rest that gets passed to the Comp
301
+ // because otherwise it is called on every drag event
302
+ // eslint-disable-next-line no-unused-vars
295
303
  var _this$props3 = this.props,
296
304
  disabled = _this$props3.disabled,
305
+ onClick = _this$props3.onClick,
297
306
  rest = (0, _objectWithoutProperties2["default"])(_this$props3, _excluded);
298
307
  var grid = this.grid();
299
308
 
@@ -308,7 +317,6 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
308
317
  */
309
318
  var isDragging = this.state ? !!this.state.startX : false;
310
319
  return /*#__PURE__*/_react["default"].createElement(_draggable.DraggableCore, {
311
- disabled: disabled,
312
320
  onMouseDown: onMouseDown,
313
321
  onStart: this.onStart,
314
322
  onDrag: this.onDrag,
@@ -1 +1 @@
1
- {"version":3,"file":"grid-draggable.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_draggable","_debug","utils","_interopRequireWildcard","_lodashEs","_invariant","_d3Selection","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","log","debug","deltaFn","exports","scale","snap","val","delta","normalized","inverted","invert","fixDecimalsArithmetic","toFixed","gridDraggable","opts","Comp","_GridDraggable","invariant","isFunction","fromDelta","bounds","anchorPoint","_React$Component","GridDraggable","props","_this","_classCallCheck2","graphProps","domain","range","x","step","y","onDragStart","document","activeElement","blur","_didDrag","setState","startX","clientX","startY","clientY","_opts$anchorPoint","key","event","K","toUpperCase","end","concat","start","state","Math","abs","out","grid","scaled","left","right","top","bottom","buffer","min","node","svg","ownerSVGElement","createSVGPoint","point","touches","touch","getScreenCTM","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","dd","rootNode","getRootNode","clientPoint","getClientPoint","_clientPoint","_slicedToArray2","rawX","rawY","xOutside","deltaX","max","yOutside","deltaY","_this$props","onDrag","getScaledBounds","skipDragOutsideOfBounds","dragArg","applyDelta","undefined","pos","position","p","getDelta","_this$props2","onDragStop","onClick","lastX","lastY","isClick","_pointer","pointer","target","_pointer2","_inherits2","_createClass2","value","render","_this$props3","disabled","rest","_objectWithoutProperties2","onMouseDown","nativeEvent","preventDefault","isDragging","createElement","DraggableCore","onStart","onStop","axis","_extends2","React","Component","PropTypes","bool","func","onMove","GraphPropsType","isRequired"],"sources":["../src/grid-draggable.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { DraggableCore } from './draggable';\nimport debug from 'debug';\nimport * as utils from './utils';\nimport { isFunction } from 'lodash-es';\nimport invariant from 'invariant';\nimport { pointer } from 'd3-selection';\n\nconst log = debug('pie-lib:plot:grid-draggable');\n\nexport const deltaFn = (scale, snap, val) => (delta) => {\n const normalized = delta + scale(0);\n const inverted = scale.invert(normalized);\n\n const fixDecimalsArithmetic = (snap(val + inverted).toFixed(4) * 1000) / 1000;\n\n return fixDecimalsArithmetic;\n};\n\n/**\n * Creates a Component that is draggable, within a bounded grid.\n * @param {*} opts\n */\nexport const gridDraggable = (opts) => (Comp) => {\n invariant(\n !!opts && isFunction(opts.fromDelta) && isFunction(opts.bounds) && isFunction(opts.anchorPoint),\n 'You must supply an object with: { anchorPoint: Function, fromDelta: Function, bounds: Function }',\n );\n return class GridDraggable extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n onMove: PropTypes.func,\n graphProps: GraphPropsType.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n startX: null,\n startY: null,\n };\n }\n\n grid = () => {\n const { graphProps } = this.props;\n const { scale, domain, range } = graphProps;\n return {\n x: scale.x(domain.step) - scale.x(0),\n y: scale.y(range.step) - scale.y(0),\n };\n };\n onStart = (e) => {\n const { onDragStart } = this.props;\n if (document.activeElement) {\n document.activeElement.blur();\n }\n // reliably track whether any real drag movement occurred. This avoids the async-setState race condition\n // where onStop fires before setState has updated, causing drags to be misidentified as clicks.\n this._didDrag = false;\n this.setState({ startX: e.clientX, startY: e.clientY });\n if (onDragStart) {\n onDragStart();\n }\n };\n position = () => {\n const { x, y } = opts.anchorPoint(this.props);\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n\n return {\n anchorPoint: {\n x,\n y,\n },\n x: deltaFn(scale.x, snap.x, x),\n y: deltaFn(scale.y, snap.y, y),\n };\n };\n\n tiny = (key, event) => {\n const K = key.toUpperCase();\n const end = event[`client${K}`];\n const start = this.state[`start${K}`];\n const delta = Math.abs(end - start);\n const out = delta < Math.abs(this.grid()[key]) / 10;\n log('[tiny] key: ', key, 'delta: ', delta, 'out: ', out);\n return out;\n };\n\n getScaledBounds = () => {\n const bounds = opts.bounds(this.props, this.props.graphProps);\n log('bounds: ', bounds);\n const grid = this.grid();\n\n let scaled = {\n left: bounds.left * grid.x,\n right: bounds.right * grid.x,\n top: bounds.top * grid.y,\n bottom: bounds.bottom * grid.y,\n };\n\n // Normalize Y bounds so that:\n // - top is <= 0 (negative or zero, allowing upward movement)\n // - bottom is >= 0 (positive or zero, allowing downward movement)\n // This compensates for the inverted Y scale (range.max -> 0, range.min -> size.height)\n // Add a small buffer (1 grid unit) to ensure we can reach exact boundaries\n const buffer = Math.abs(grid.y);\n scaled = {\n ...scaled,\n top: Math.min(0, scaled.top) - buffer, // More negative to allow reaching max\n bottom: Math.abs(scaled.bottom) + buffer, // More positive to allow reaching min\n };\n\n log('[getScaledBounds]: ', scaled);\n return scaled;\n };\n\n /**\n * Retrieves the coordinates of a mouse or touch event relative to an SVG element.\n * This method has been overwritten from the d3-selection library's clientPoint to handle touch events and improve clarity.\n * @param {Element} node - The SVG element.\n * @param {Event} event - The mouse or touch event.\n * @returns {Array} - An array containing the coordinates [x, y] relative to the SVG element.\n */\n getClientPoint = (node, event) => {\n if (!node || !event) {\n return null;\n }\n const svg = node.ownerSVGElement || node;\n\n if (svg && svg.createSVGPoint) {\n let point = svg.createSVGPoint();\n // Check if it's a touch event and use the first touch point\n if (event.touches && event.touches.length > 0) {\n const touch = event.touches[0];\n point.x = touch.clientX;\n point.y = touch.clientY;\n } else {\n // Fall back to mouse event properties\n point.x = event.clientX;\n point.y = event.clientY;\n }\n if (node.getScreenCTM) {\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n } else {\n return null;\n }\n }\n\n const rect = node.getBoundingClientRect();\n if (rect) {\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n } else {\n return null;\n }\n };\n\n skipDragOutsideOfBounds = (dd, e, graphProps) => {\n // Ignore drag movement outside of the domain and range.\n const rootNode = graphProps.getRootNode();\n const clientPoint = this.getClientPoint(rootNode, e);\n\n if (clientPoint === null) {\n return true; // Indicate that the drag is outside of bounds\n }\n\n const [rawX, rawY] = clientPoint;\n const { scale, domain, range } = graphProps;\n let x = scale.x.invert(rawX);\n let y = scale.y.invert(rawY);\n\n const xOutside = (dd.deltaX > 0 && x < domain.min) || (dd.deltaX < 0 && x > domain.max);\n const yOutside = (dd.deltaY > 0 && y > range.max) || (dd.deltaY < 0 && y < range.min);\n return xOutside || yOutside;\n };\n\n onDrag = (e, dd) => {\n const { onDrag, graphProps } = this.props;\n\n if (!onDrag) {\n return;\n }\n\n // Mark that a real drag occurred so onStop won't treat this as a click.\n // We check for non-trivial movement to avoid marking a click as a drag\n // due to sub-pixel jitter on mousedown.\n if (Math.abs(dd.deltaX) > 1 || Math.abs(dd.deltaY) > 1) {\n this._didDrag = true;\n }\n\n const bounds = this.getScaledBounds();\n\n if (dd.deltaX < 0 && dd.deltaX < bounds.left) {\n return;\n }\n\n if (dd.deltaX > 0 && dd.deltaX > bounds.right) {\n return;\n }\n\n if (dd.deltaY < 0 && dd.deltaY < bounds.top) {\n return;\n }\n\n if (dd.deltaY > 0 && dd.deltaY > bounds.bottom) {\n return;\n }\n\n if (this.skipDragOutsideOfBounds(dd, e, graphProps)) {\n return;\n }\n\n const dragArg = this.applyDelta({ x: dd.deltaX, y: dd.deltaY });\n\n if (dragArg !== undefined || dragArg !== null) {\n onDrag(dragArg);\n }\n };\n\n getDelta = (point) => {\n const pos = this.position();\n\n const p = {\n x: pos.x(point.x),\n y: pos.y(point.y),\n };\n\n return utils.getDelta(pos.anchorPoint, p);\n };\n\n applyDelta = (point) => {\n const delta = this.getDelta(point);\n log('[applyDelta] delta:', delta);\n return opts.fromDelta(this.props, delta);\n };\n\n onStop = (e, dd) => {\n log('[onStop] dd:', dd);\n const { onDragStop, onClick } = this.props;\n\n if (onDragStop) {\n onDragStop();\n }\n\n log('[onStop] lastX/Y: ', dd.lastX, dd.lastY);\n // Use the synchronous _didDrag flag instead of comparing clientX/clientY via tiny().\n // tiny() was unreliable because setState is async – startX/startY might not reflect\n // the actual mousedown position when onStop fires. _didDrag is set synchronously in\n // onStart (false) and onDrag (true), so it's always accurate.\n const isClick = !this._didDrag;\n\n if (isClick) {\n if (onClick) {\n log('call onClick');\n this.setState({ startX: null });\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n const [rawX, rawY] = pointer(e, e.target);\n let x = scale.x.invert(rawX);\n let y = scale.y.invert(rawY);\n x = snap.x(x);\n y = snap.y(y);\n onClick({ x, y });\n return false;\n }\n }\n\n this.setState({ startX: null, startY: null });\n // return false to prevent state updates in the underlying draggable - a move will have triggered an update already.\n return false;\n };\n\n render() {\n const { disabled, ...rest } = this.props;\n const grid = this.grid();\n\n // prevent the text select icon from rendering.\n const onMouseDown = (e) => e.nativeEvent.preventDefault();\n\n /**\n * TODO: This shouldnt be necessary, we should be able to use the r-d classnames.\n * But they aren't being unset. If we continue with this lib, we'll have to fix this.\n */\n const isDragging = this.state ? !!this.state.startX : false;\n\n return (\n <DraggableCore\n disabled={disabled}\n onMouseDown={onMouseDown}\n onStart={this.onStart}\n onDrag={this.onDrag}\n onStop={this.onStop}\n axis={opts.axis || 'both'}\n grid={[grid.x, grid.y]}\n >\n <Comp {...rest} disabled={disabled} isDragging={isDragging} />\n </DraggableCore>\n );\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"grid-draggable.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_draggable","_debug","utils","_interopRequireWildcard","_lodashEs","_invariant","_d3Selection","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","log","debug","deltaFn","exports","scale","snap","val","delta","normalized","inverted","invert","fixDecimalsArithmetic","toFixed","gridDraggable","opts","Comp","_GridDraggable","invariant","isFunction","fromDelta","bounds","anchorPoint","_React$Component","GridDraggable","props","_this","_classCallCheck2","graphProps","domain","range","x","step","y","onDragStart","document","activeElement","blur","_didDrag","setState","startX","clientX","startY","clientY","_opts$anchorPoint","key","event","K","toUpperCase","end","concat","start","state","Math","abs","out","grid","scaled","left","right","top","bottom","buffer","min","node","svg","ownerSVGElement","createSVGPoint","point","touches","touch","getScreenCTM","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","dd","rootNode","getRootNode","clientPoint","getClientPoint","_clientPoint","_slicedToArray2","rawX","rawY","xOutside","deltaX","max","yOutside","deltaY","_this$props","onDrag","disabled","getScaledBounds","skipDragOutsideOfBounds","dragArg","applyDelta","undefined","pos","position","p","getDelta","_this$props2","onDragStop","onClick","lastX","lastY","isClick","stopPropagation","_pointer","pointer","target","_pointer2","_inherits2","_createClass2","value","render","_this$props3","rest","_objectWithoutProperties2","onMouseDown","nativeEvent","preventDefault","isDragging","createElement","DraggableCore","onStart","onStop","axis","_extends2","React","Component","PropTypes","bool","func","onMove","GraphPropsType","isRequired"],"sources":["../src/grid-draggable.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { DraggableCore } from './draggable';\nimport debug from 'debug';\nimport * as utils from './utils';\nimport { isFunction } from 'lodash-es';\nimport invariant from 'invariant';\nimport { pointer } from 'd3-selection';\n\nconst log = debug('pie-lib:plot:grid-draggable');\n\nexport const deltaFn = (scale, snap, val) => (delta) => {\n const normalized = delta + scale(0);\n const inverted = scale.invert(normalized);\n\n const fixDecimalsArithmetic = (snap(val + inverted).toFixed(4) * 1000) / 1000;\n\n return fixDecimalsArithmetic;\n};\n\n/**\n * Creates a Component that is draggable, within a bounded grid.\n * @param {*} opts\n */\nexport const gridDraggable = (opts) => (Comp) => {\n invariant(\n !!opts && isFunction(opts.fromDelta) && isFunction(opts.bounds) && isFunction(opts.anchorPoint),\n 'You must supply an object with: { anchorPoint: Function, fromDelta: Function, bounds: Function }',\n );\n return class GridDraggable extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n onMove: PropTypes.func,\n graphProps: GraphPropsType.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n startX: null,\n startY: null,\n };\n }\n\n grid = () => {\n const { graphProps } = this.props;\n const { scale, domain, range } = graphProps;\n return {\n x: scale.x(domain.step) - scale.x(0),\n y: scale.y(range.step) - scale.y(0),\n };\n };\n onStart = (e) => {\n const { onDragStart } = this.props;\n if (document.activeElement) {\n document.activeElement.blur();\n }\n // reliably track whether any real drag movement occurred. This avoids the async-setState race condition\n // where onStop fires before setState has updated, causing drags to be misidentified as clicks.\n this._didDrag = false;\n this.setState({ startX: e.clientX, startY: e.clientY });\n if (onDragStart) {\n onDragStart();\n }\n };\n position = () => {\n const { x, y } = opts.anchorPoint(this.props);\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n\n return {\n anchorPoint: {\n x,\n y,\n },\n x: deltaFn(scale.x, snap.x, x),\n y: deltaFn(scale.y, snap.y, y),\n };\n };\n\n tiny = (key, event) => {\n const K = key.toUpperCase();\n const end = event[`client${K}`];\n const start = this.state[`start${K}`];\n const delta = Math.abs(end - start);\n const out = delta < Math.abs(this.grid()[key]) / 10;\n log('[tiny] key: ', key, 'delta: ', delta, 'out: ', out);\n return out;\n };\n\n getScaledBounds = () => {\n const bounds = opts.bounds(this.props, this.props.graphProps);\n log('bounds: ', bounds);\n const grid = this.grid();\n\n let scaled = {\n left: bounds.left * grid.x,\n right: bounds.right * grid.x,\n top: bounds.top * grid.y,\n bottom: bounds.bottom * grid.y,\n };\n\n // Normalize Y bounds so that:\n // - top is <= 0 (negative or zero, allowing upward movement)\n // - bottom is >= 0 (positive or zero, allowing downward movement)\n // This compensates for the inverted Y scale (range.max -> 0, range.min -> size.height)\n // Add a small buffer (1 grid unit) to ensure we can reach exact boundaries\n const buffer = Math.abs(grid.y);\n scaled = {\n ...scaled,\n top: Math.min(0, scaled.top) - buffer, // More negative to allow reaching max\n bottom: Math.abs(scaled.bottom) + buffer, // More positive to allow reaching min\n };\n\n log('[getScaledBounds]: ', scaled);\n return scaled;\n };\n\n /**\n * Retrieves the coordinates of a mouse or touch event relative to an SVG element.\n * This method has been overwritten from the d3-selection library's clientPoint to handle touch events and improve clarity.\n * @param {Element} node - The SVG element.\n * @param {Event} event - The mouse or touch event.\n * @returns {Array} - An array containing the coordinates [x, y] relative to the SVG element.\n */\n getClientPoint = (node, event) => {\n if (!node || !event) {\n return null;\n }\n const svg = node.ownerSVGElement || node;\n\n if (svg && svg.createSVGPoint) {\n let point = svg.createSVGPoint();\n // Check if it's a touch event and use the first touch point\n if (event.touches && event.touches.length > 0) {\n const touch = event.touches[0];\n point.x = touch.clientX;\n point.y = touch.clientY;\n } else {\n // Fall back to mouse event properties\n point.x = event.clientX;\n point.y = event.clientY;\n }\n if (node.getScreenCTM) {\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n } else {\n return null;\n }\n }\n\n const rect = node.getBoundingClientRect();\n if (rect) {\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n } else {\n return null;\n }\n };\n\n skipDragOutsideOfBounds = (dd, e, graphProps) => {\n // Ignore drag movement outside of the domain and range.\n const rootNode = graphProps.getRootNode();\n const clientPoint = this.getClientPoint(rootNode, e);\n\n if (clientPoint === null) {\n return true; // Indicate that the drag is outside of bounds\n }\n\n const [rawX, rawY] = clientPoint;\n const { scale, domain, range } = graphProps;\n let x = scale.x.invert(rawX);\n let y = scale.y.invert(rawY);\n\n const xOutside = (dd.deltaX > 0 && x < domain.min) || (dd.deltaX < 0 && x > domain.max);\n const yOutside = (dd.deltaY > 0 && y > range.max) || (dd.deltaY < 0 && y < range.min);\n return xOutside || yOutside;\n };\n\n onDrag = (e, dd) => {\n const { onDrag, graphProps, disabled } = this.props;\n if (!onDrag || disabled) {\n return;\n }\n\n // Mark that a real drag occurred so onStop won't treat this as a click.\n // We check for non-trivial movement to avoid marking a click as a drag\n // due to sub-pixel jitter on mousedown.\n if (Math.abs(dd.deltaX) > 1 || Math.abs(dd.deltaY) > 1) {\n this._didDrag = true;\n }\n\n const bounds = this.getScaledBounds();\n\n if (dd.deltaX < 0 && dd.deltaX < bounds.left) {\n return;\n }\n\n if (dd.deltaX > 0 && dd.deltaX > bounds.right) {\n return;\n }\n\n if (dd.deltaY < 0 && dd.deltaY < bounds.top) {\n return;\n }\n\n if (dd.deltaY > 0 && dd.deltaY > bounds.bottom) {\n return;\n }\n\n if (this.skipDragOutsideOfBounds(dd, e, graphProps)) {\n return;\n }\n\n const dragArg = this.applyDelta({ x: dd.deltaX, y: dd.deltaY });\n\n if (dragArg !== undefined || dragArg !== null) {\n onDrag(dragArg);\n }\n };\n\n getDelta = (point) => {\n const pos = this.position();\n\n const p = {\n x: pos.x(point.x),\n y: pos.y(point.y),\n };\n\n return utils.getDelta(pos.anchorPoint, p);\n };\n\n applyDelta = (point) => {\n const delta = this.getDelta(point);\n log('[applyDelta] delta:', delta);\n return opts.fromDelta(this.props, delta);\n };\n\n onStop = (e, dd) => {\n log('[onStop] dd:', dd);\n const { onDragStop, onClick, disabled } = this.props;\n\n if (onDragStop && !disabled) {\n onDragStop();\n }\n\n log('[onStop] lastX/Y: ', dd.lastX, dd.lastY);\n const isClick = !this._didDrag;\n\n if (isClick) {\n // For non-disabled marks, stop propagation so the Bg d3 listener\n // doesn't also create a new mark on top of this one.\n // Disabled/background marks allow propagation so Bg can handle the click.\n if (!disabled) {\n e.stopPropagation();\n }\n\n if (onClick) {\n log('call onClick');\n this.setState({ startX: null });\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n const [rawX, rawY] = pointer(e, e.target);\n let x = scale.x.invert(rawX);\n let y = scale.y.invert(rawY);\n x = snap.x(x);\n y = snap.y(y);\n onClick({ x, y });\n return false;\n }\n }\n\n this.setState({ startX: null, startY: null });\n // return false to prevent state updates in the underlying draggable - a move will have triggered an update already.\n return false;\n };\n\n render() {\n // we extract onClick here to prevent it from being passed to the DraggableCore\n // and to prevent it from being included in the ...rest that gets passed to the Comp\n // because otherwise it is called on every drag event\n // eslint-disable-next-line no-unused-vars\n const { disabled, onClick, ...rest } = this.props;\n const grid = this.grid();\n\n // prevent the text select icon from rendering.\n const onMouseDown = (e) => e.nativeEvent.preventDefault();\n\n /**\n * TODO: This shouldnt be necessary, we should be able to use the r-d classnames.\n * But they aren't being unset. If we continue with this lib, we'll have to fix this.\n */\n const isDragging = this.state ? !!this.state.startX : false;\n\n return (\n <DraggableCore\n onMouseDown={onMouseDown}\n onStart={this.onStart}\n onDrag={this.onDrag}\n onStop={this.onStop}\n axis={opts.axis || 'both'}\n grid={[grid.x, grid.y]}\n >\n <Comp {...rest} disabled={disabled} isDragging={isDragging} />\n </DraggableCore>\n );\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "3.2.0-next.36",
6
+ "version": "3.2.0-next.37",
7
7
  "description": "Some underlying components for building charts/graphs",
8
8
  "keywords": [
9
9
  "react",
@@ -38,6 +38,6 @@
38
38
  "peerDependencies": {
39
39
  "react": "^18.2.0"
40
40
  },
41
- "gitHead": "6ed326bed124056a8f5a7ff52386f8b12fbf650b",
41
+ "gitHead": "75aae235bdc5eb5a2918708c1c2e9ccade7a7d4b",
42
42
  "scripts": {}
43
43
  }
@@ -428,7 +428,7 @@ describe('gridDraggable', () => {
428
428
  mockDraggableCoreProps.onStart({ clientX: 0, clientY: 0 });
429
429
 
430
430
  // Stop with large movement (not tiny)
431
- mockDraggableCoreProps.onStop({ clientX: 100, clientY: 100 }, {});
431
+ mockDraggableCoreProps.onStop({ clientX: 100, clientY: 100, stopPropagation: jest.fn() }, {});
432
432
 
433
433
  expect(onDragStop).toHaveBeenCalled();
434
434
  });
@@ -446,7 +446,7 @@ describe('gridDraggable', () => {
446
446
  // Start and stop at almost the same position (tiny movement)
447
447
  // Grid is 1x1, tiny threshold is grid/10 = 0.1
448
448
  mockDraggableCoreProps.onStart({ clientX: 0, clientY: 0 });
449
- mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {} }, {});
449
+ mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {}, stopPropagation: jest.fn() }, {});
450
450
 
451
451
  expect(onClick).toHaveBeenCalledWith({ x: 0, y: 0 });
452
452
  });
@@ -468,7 +468,7 @@ describe('gridDraggable', () => {
468
468
 
469
469
  // Start and stop at almost the same position (tiny movement)
470
470
  mockDraggableCoreProps.onStart({ clientX: 0, clientY: 0 });
471
- mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {} }, {});
471
+ mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {}, stopPropagation: jest.fn() }, {});
472
472
 
473
473
  expect(graphProps.snap.x).toHaveBeenCalledWith(1.7);
474
474
  expect(graphProps.snap.y).toHaveBeenCalledWith(2.3);
@@ -182,9 +182,8 @@ export const gridDraggable = (opts) => (Comp) => {
182
182
  };
183
183
 
184
184
  onDrag = (e, dd) => {
185
- const { onDrag, graphProps } = this.props;
186
-
187
- if (!onDrag) {
185
+ const { onDrag, graphProps, disabled } = this.props;
186
+ if (!onDrag || disabled) {
188
187
  return;
189
188
  }
190
189
 
@@ -243,20 +242,23 @@ export const gridDraggable = (opts) => (Comp) => {
243
242
 
244
243
  onStop = (e, dd) => {
245
244
  log('[onStop] dd:', dd);
246
- const { onDragStop, onClick } = this.props;
245
+ const { onDragStop, onClick, disabled } = this.props;
247
246
 
248
- if (onDragStop) {
247
+ if (onDragStop && !disabled) {
249
248
  onDragStop();
250
249
  }
251
250
 
252
251
  log('[onStop] lastX/Y: ', dd.lastX, dd.lastY);
253
- // Use the synchronous _didDrag flag instead of comparing clientX/clientY via tiny().
254
- // tiny() was unreliable because setState is async – startX/startY might not reflect
255
- // the actual mousedown position when onStop fires. _didDrag is set synchronously in
256
- // onStart (false) and onDrag (true), so it's always accurate.
257
252
  const isClick = !this._didDrag;
258
253
 
259
254
  if (isClick) {
255
+ // For non-disabled marks, stop propagation so the Bg d3 listener
256
+ // doesn't also create a new mark on top of this one.
257
+ // Disabled/background marks allow propagation so Bg can handle the click.
258
+ if (!disabled) {
259
+ e.stopPropagation();
260
+ }
261
+
260
262
  if (onClick) {
261
263
  log('call onClick');
262
264
  this.setState({ startX: null });
@@ -278,7 +280,11 @@ export const gridDraggable = (opts) => (Comp) => {
278
280
  };
279
281
 
280
282
  render() {
281
- const { disabled, ...rest } = this.props;
283
+ // we extract onClick here to prevent it from being passed to the DraggableCore
284
+ // and to prevent it from being included in the ...rest that gets passed to the Comp
285
+ // because otherwise it is called on every drag event
286
+ // eslint-disable-next-line no-unused-vars
287
+ const { disabled, onClick, ...rest } = this.props;
282
288
  const grid = this.grid();
283
289
 
284
290
  // prevent the text select icon from rendering.
@@ -292,7 +298,6 @@ export const gridDraggable = (opts) => (Comp) => {
292
298
 
293
299
  return (
294
300
  <DraggableCore
295
- disabled={disabled}
296
301
  onMouseDown={onMouseDown}
297
302
  onStart={this.onStart}
298
303
  onDrag={this.onDrag}