@pie-lib/plot 4.0.21 → 4.0.22-beta.2
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 +0 -79
- package/lib/draggable.js +28 -8
- package/lib/draggable.js.map +1 -1
- package/lib/grid-draggable.js +3 -12
- package/lib/grid-draggable.js.map +1 -1
- package/package.json +7 -7
- package/src/draggable.jsx +7 -8
- package/src/grid-draggable.jsx +3 -9
- package/LICENSE.md +0 -5
- package/src/__tests__/draggable.test.jsx +0 -38
- package/src/__tests__/grid-draggable-drag-end.test.jsx +0 -97
- package/src/__tests__/grid-draggable.test.jsx +0 -487
- package/src/__tests__/root.test.jsx +0 -277
- package/src/__tests__/trig.test.js +0 -163
- package/src/__tests__/utils.test.js +0 -229
package/CHANGELOG.md
CHANGED
|
@@ -3,85 +3,6 @@
|
|
|
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
|
-
## [4.0.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.20...@pie-lib/plot@4.0.21) (2026-09-22)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
9
|
-
|
|
10
|
-
## [4.0.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.19...@pie-lib/plot@4.0.20) (2026-09-16)
|
|
11
|
-
|
|
12
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
13
|
-
|
|
14
|
-
## [4.0.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.18...@pie-lib/plot@4.0.19) (2026-09-03)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
17
|
-
|
|
18
|
-
## [4.0.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.17...@pie-lib/plot@4.0.18) (2026-09-02)
|
|
19
|
-
|
|
20
|
-
### Bug Fixes
|
|
21
|
-
|
|
22
|
-
- **deps:** align versions with pie-elements-ng and upgrade [@visx](https://github.com/visx) to v4 PIE-926 ([16c5ff0](https://github.com/pie-framework/pie-lib/commit/16c5ff093a36fea98a46d5e2b37f95d9ec03025c))
|
|
23
|
-
- **plot:** stop returning false from gridDraggable onStop PIE-972 react-draggable 4.x acts on the value returned by DraggableCore's onStop andreturns early, before it removes the document mousemove/mouseup listeners.3.3.2 ignored that value and always removed them, so returning false was inert -which is what the old comment assumed. On v4 every handle you drag staysattached to the document, so released marks keep following the cursor: incharting a line's points all move together, and in graphing andgraphing-solution-set marks drift off the graph and disappear.The behaviour was introduced upstream in react-draggable 4.3.0. pie-lib pickedit up with the bump in PIE-926; pie-elements-ng has had it since its own move to^4.6.0. grid-draggable is synced from pie-lib, so the fix carries over there.Adds a regression test for both a released handle and a second handle beingdragged.Also drops the componentWillReceiveProps override on plot's Draggable, which v4makes unreachable via its static getDerivedStateFromProps, and replaces twoassertion-free tests with ones that check the real transform. ([0f9f173](https://github.com/pie-framework/pie-lib/commit/0f9f173350f11e98dc1b7cea8cb0a3162bfd3d87))
|
|
24
|
-
|
|
25
|
-
## [4.0.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.16...@pie-lib/plot@4.0.17) (2026-08-26)
|
|
26
|
-
|
|
27
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
28
|
-
|
|
29
|
-
## [4.0.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.15...@pie-lib/plot@4.0.16) (2026-08-21)
|
|
30
|
-
|
|
31
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
32
|
-
|
|
33
|
-
## [4.0.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.14...@pie-lib/plot@4.0.15) (2026-08-18)
|
|
34
|
-
|
|
35
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
36
|
-
|
|
37
|
-
## [4.0.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.13...@pie-lib/plot@4.0.14) (2026-08-13)
|
|
38
|
-
|
|
39
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
40
|
-
|
|
41
|
-
## [4.0.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.12...@pie-lib/plot@4.0.13) (2026-07-31)
|
|
42
|
-
|
|
43
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
44
|
-
|
|
45
|
-
## [4.0.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.11...@pie-lib/plot@4.0.12) (2026-07-08)
|
|
46
|
-
|
|
47
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
48
|
-
|
|
49
|
-
## [4.0.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.10...@pie-lib/plot@4.0.11) (2026-07-01)
|
|
50
|
-
|
|
51
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
52
|
-
|
|
53
|
-
## [4.0.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.9...@pie-lib/plot@4.0.10) (2026-06-25)
|
|
54
|
-
|
|
55
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
56
|
-
|
|
57
|
-
## [4.0.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.8...@pie-lib/plot@4.0.9) (2026-06-19)
|
|
58
|
-
|
|
59
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
60
|
-
|
|
61
|
-
## [4.0.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.7...@pie-lib/plot@4.0.8) (2026-06-17)
|
|
62
|
-
|
|
63
|
-
### Bug Fixes
|
|
64
|
-
|
|
65
|
-
- **charting, plot:** rename 'disabled' class to 'disabledMarkLabel' and 'disabledTitle' PIE-661 PIE-664 ([29fc92c](https://github.com/pie-framework/pie-lib/commit/29fc92cf738990cd83f0e0d48fa4dd9047ad065d))
|
|
66
|
-
|
|
67
|
-
## [4.0.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.6...@pie-lib/plot@4.0.7) (2026-06-12)
|
|
68
|
-
|
|
69
|
-
### Bug Fixes
|
|
70
|
-
|
|
71
|
-
- correct @emotion/style typo to @emotion/styled in package deps PIE-678 ([d529ac7](https://github.com/pie-framework/pie-lib/commit/d529ac7bc3dfa94d8037688452d4c70c66f2590b))
|
|
72
|
-
|
|
73
|
-
## [4.0.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.5...@pie-lib/plot@4.0.6) (2026-06-03)
|
|
74
|
-
|
|
75
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
76
|
-
|
|
77
|
-
## [4.0.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.4...@pie-lib/plot@4.0.5) (2026-06-01)
|
|
78
|
-
|
|
79
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
80
|
-
|
|
81
|
-
## [4.0.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.3...@pie-lib/plot@4.0.4) (2026-05-21)
|
|
82
|
-
|
|
83
|
-
**Note:** Version bump only for package @pie-lib/plot
|
|
84
|
-
|
|
85
6
|
## [4.0.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@4.0.2...@pie-lib/plot@4.0.3) (2026-05-15)
|
|
86
7
|
|
|
87
8
|
**Note:** Version bump only for package @pie-lib/plot
|
package/lib/draggable.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
@@ -11,14 +12,33 @@ Object.defineProperty(exports, "DraggableCore", {
|
|
|
11
12
|
}
|
|
12
13
|
});
|
|
13
14
|
exports["default"] = void 0;
|
|
15
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
21
|
var _reactDraggable = _interopRequireWildcard(require("react-draggable"));
|
|
15
22
|
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); }
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
24
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
25
|
+
function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
26
|
+
var LocalDraggable = exports["default"] = /*#__PURE__*/function (_Draggable) {
|
|
27
|
+
function LocalDraggable() {
|
|
28
|
+
(0, _classCallCheck2["default"])(this, LocalDraggable);
|
|
29
|
+
return _callSuper(this, LocalDraggable, arguments);
|
|
30
|
+
}
|
|
31
|
+
(0, _inherits2["default"])(LocalDraggable, _Draggable);
|
|
32
|
+
return (0, _createClass2["default"])(LocalDraggable, [{
|
|
33
|
+
key: "componentWillReceiveProps",
|
|
34
|
+
value: function componentWillReceiveProps(next) {
|
|
35
|
+
_superPropGet(LocalDraggable, "componentWillReceiveProps", this, 3)([next]);
|
|
36
|
+
//Remove the x/y state as these values have now been updated and will come through as props.
|
|
37
|
+
this.setState({
|
|
38
|
+
x: 0,
|
|
39
|
+
y: 0
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}]);
|
|
43
|
+
}(_reactDraggable["default"]);
|
|
24
44
|
//# sourceMappingURL=draggable.js.map
|
package/lib/draggable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draggable.js","names":["_reactDraggable","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","
|
|
1
|
+
{"version":3,"file":"draggable.js","names":["_reactDraggable","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","_superPropGet","p","_get2","LocalDraggable","exports","_Draggable","_classCallCheck2","arguments","_inherits2","_createClass2","key","value","componentWillReceiveProps","next","setState","x","y","Draggable"],"sources":["../src/draggable.jsx"],"sourcesContent":["import Draggable, { DraggableCore } from 'react-draggable';\n\nexport default class LocalDraggable extends Draggable {\n componentWillReceiveProps(next) {\n super.componentWillReceiveProps(next);\n //Remove the x/y state as these values have now been updated and will come through as props.\n this.setState({ x: 0, y: 0 });\n }\n}\n\nexport { DraggableCore };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA2D,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,WAAAnB,CAAA,EAAAK,CAAA,EAAAN,CAAA,WAAAM,CAAA,OAAAe,gBAAA,aAAAf,CAAA,OAAAgB,2BAAA,aAAArB,CAAA,EAAAsB,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAnB,CAAA,EAAAN,CAAA,YAAAqB,gBAAA,aAAApB,CAAA,EAAAyB,WAAA,IAAApB,CAAA,CAAAqB,KAAA,CAAA1B,CAAA,EAAAD,CAAA;AAAA,SAAAuB,0BAAA,cAAAtB,CAAA,IAAA2B,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAd,IAAA,CAAAQ,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAA3B,CAAA,aAAAsB,yBAAA,YAAAA,0BAAA,aAAAtB,CAAA;AAAA,SAAA8B,cAAA9B,CAAA,EAAAK,CAAA,EAAAN,CAAA,EAAAG,CAAA,QAAA6B,CAAA,OAAAC,KAAA,iBAAAZ,gBAAA,iBAAAlB,CAAA,GAAAF,CAAA,CAAA4B,SAAA,GAAA5B,CAAA,GAAAK,CAAA,EAAAN,CAAA,cAAAG,CAAA,yBAAA6B,CAAA,aAAA/B,CAAA,WAAA+B,CAAA,CAAAL,KAAA,CAAA3B,CAAA,EAAAC,CAAA,OAAA+B,CAAA;AAAA,IAEtCE,cAAc,GAAAC,OAAA,qCAAAC,UAAA;EAAA,SAAAF,eAAA;IAAA,IAAAG,gBAAA,mBAAAH,cAAA;IAAA,OAAAd,UAAA,OAAAc,cAAA,EAAAI,SAAA;EAAA;EAAA,IAAAC,UAAA,aAAAL,cAAA,EAAAE,UAAA;EAAA,WAAAI,aAAA,aAAAN,cAAA;IAAAO,GAAA;IAAAC,KAAA,EACjC,SAAAC,yBAAyBA,CAACC,IAAI,EAAE;MAC9Bb,aAAA,CAAAG,cAAA,yCAAgCU,IAAI;MACpC;MACA,IAAI,CAACC,QAAQ,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC,CAAC;IAC/B;EAAC;AAAA,EALyCC,0BAAS","ignoreList":[]}
|
package/lib/grid-draggable.js
CHANGED
|
@@ -248,13 +248,6 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
|
|
|
248
248
|
log('[applyDelta] delta:', delta);
|
|
249
249
|
return opts.fromDelta(_this.props, delta);
|
|
250
250
|
});
|
|
251
|
-
/**
|
|
252
|
-
* Must not return false. react-draggable v4 treats a false return as "keep dragging"
|
|
253
|
-
* and bails out of handleDragStop before it detaches the document mousemove/mouseup
|
|
254
|
-
* listeners, so the handle would keep following the pointer after release - and every
|
|
255
|
-
* previously dragged handle would move along with the next one. (v3 ignored the
|
|
256
|
-
* return value and always detached, which is why returning false used to look inert.)
|
|
257
|
-
*/
|
|
258
251
|
(0, _defineProperty2["default"])(_this, "onStop", function (e, dd) {
|
|
259
252
|
log('[onStop] dd:', dd);
|
|
260
253
|
var _this$props2 = _this.props,
|
|
@@ -301,16 +294,14 @@ var gridDraggable = exports.gridDraggable = function gridDraggable(opts) {
|
|
|
301
294
|
onClick({});
|
|
302
295
|
}
|
|
303
296
|
}
|
|
304
|
-
|
|
305
|
-
startX: null,
|
|
306
|
-
startY: null
|
|
307
|
-
});
|
|
308
|
-
return;
|
|
297
|
+
return false;
|
|
309
298
|
}
|
|
310
299
|
_this.setState({
|
|
311
300
|
startX: null,
|
|
312
301
|
startY: null
|
|
313
302
|
});
|
|
303
|
+
// return false to prevent state updates in the underlying draggable - a move will have triggered an update already.
|
|
304
|
+
return false;
|
|
314
305
|
});
|
|
315
306
|
_this.state = {
|
|
316
307
|
startX: null,
|
|
@@ -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","target","onNativeClick","clickEvent","removeEventListener","stopPropagation","preventDefault","addEventListener","_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","_pointer","pointer","_pointer2","_","_inherits2","_createClass2","value","render","_this$props3","rest","_objectWithoutProperties2","onMouseDown","nativeEvent","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 this._didDrag = false;\n this.setState({ startX: e.clientX, startY: e.clientY });\n\n // Intercept the native 'click' event that the browser fires after mouseup.\n // We use a one-time capture-phase listener so we can suppress it when a\n // real drag occurred, preventing Bg's d3 click listener from creating a new mark.\n const target = e.target;\n const onNativeClick = (clickEvent) => {\n target.removeEventListener('click', onNativeClick, true);\n if (this._didDrag) {\n clickEvent.stopPropagation();\n clickEvent.preventDefault();\n }\n };\n target.addEventListener('click', onNativeClick, true);\n\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\n // Track drag movement BEFORE any early returns so that onStop always\n // knows a real drag occurred, even when onDrag prop is absent or disabled.\n if (Math.abs(dd.deltaX) > 1 || Math.abs(dd.deltaY) > 1) {\n this._didDrag = true;\n }\n\n if (!onDrag || disabled) {\n return;\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 /**\n * Must not return false. react-draggable v4 treats a false return as \"keep dragging\"\n * and bails out of handleDragStop before it detaches the document mousemove/mouseup\n * listeners, so the handle would keep following the pointer after release - and every\n * previously dragged handle would move along with the next one. (v3 ignored the\n * return value and always detached, which is why returning false used to look inert.)\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 && typeof e?.stopPropagation === 'function') {\n e.stopPropagation();\n }\n\n if (onClick) {\n log('call onClick');\n this.setState({ startX: null, startY: null });\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n try {\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 } catch (_) {\n // pointer() can fail on SVG elements (e.g. <circle>) that lack a valid\n // coordinate transform. Label-mode callbacks use props data, not coords.\n onClick({});\n }\n }\n\n this.setState({ startX: null, startY: null });\n return;\n }\n\n this.setState({ startX: null, startY: null });\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} onClick={isDragging ? undefined : onClick} />\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","target","onNativeClick","clickEvent","removeEventListener","stopPropagation","preventDefault","addEventListener","_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","_pointer","pointer","_pointer2","_","_inherits2","_createClass2","value","render","_this$props3","rest","_objectWithoutProperties2","onMouseDown","nativeEvent","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 this._didDrag = false;\n this.setState({ startX: e.clientX, startY: e.clientY });\n\n // Intercept the native 'click' event that the browser fires after mouseup.\n // We use a one-time capture-phase listener so we can suppress it when a\n // real drag occurred, preventing Bg's d3 click listener from creating a new mark.\n const target = e.target;\n const onNativeClick = (clickEvent) => {\n target.removeEventListener('click', onNativeClick, true);\n if (this._didDrag) {\n clickEvent.stopPropagation();\n clickEvent.preventDefault();\n }\n };\n target.addEventListener('click', onNativeClick, true);\n\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\n // Track drag movement BEFORE any early returns so that onStop always\n // knows a real drag occurred, even when onDrag prop is absent or disabled.\n if (Math.abs(dd.deltaX) > 1 || Math.abs(dd.deltaY) > 1) {\n this._didDrag = true;\n }\n\n if (!onDrag || disabled) {\n return;\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 && typeof e?.stopPropagation === 'function') {\n e.stopPropagation();\n }\n\n if (onClick) {\n log('call onClick');\n this.setState({ startX: null, startY: null });\n const { graphProps } = this.props;\n const { scale, snap } = graphProps;\n try {\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 } catch (_) {\n // pointer() can fail on SVG elements (e.g. <circle>) that lack a valid\n // coordinate transform. Label-mode callbacks use props data, not coords.\n onClick({});\n }\n }\n\n return false;\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} onClick={isDragging ? undefined : onClick} />\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": "4.0.
|
|
6
|
+
"version": "4.0.22-beta.2",
|
|
7
7
|
"description": "Some underlying components for building charts/graphs",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"@mapbox/point-geometry": "^1.1.0",
|
|
22
22
|
"@mui/icons-material": "^7.3.4",
|
|
23
23
|
"@mui/material": "^7.3.4",
|
|
24
|
-
"@pie-lib/editable-html-tip-tap": "^2.1.
|
|
25
|
-
"@pie-lib/render-ui": "^
|
|
24
|
+
"@pie-lib/editable-html-tip-tap": "^2.1.20-beta.2",
|
|
25
|
+
"@pie-lib/render-ui": "^6.1.0",
|
|
26
26
|
"assert": "^1.4.1",
|
|
27
27
|
"d3-scale": "^4.0.2",
|
|
28
28
|
"d3-selection": "^3.0.0",
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"lodash-es": "^4.17.23",
|
|
32
32
|
"prop-types": "^15.7.2",
|
|
33
33
|
"react": "^18.2.0",
|
|
34
|
-
"react-draggable": "^
|
|
35
|
-
"react-redux": "^
|
|
36
|
-
"redux": "^
|
|
34
|
+
"react-draggable": "^3.3.0",
|
|
35
|
+
"react-redux": "^6.0.0",
|
|
36
|
+
"redux": "^4.0.1"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "^18.2.0"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "433bcb776c2975739e7417f133d31cd996164116",
|
|
42
42
|
"scripts": {}
|
|
43
43
|
}
|
package/src/draggable.jsx
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import Draggable, { DraggableCore } from 'react-draggable';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export default Draggable;
|
|
3
|
+
export default class LocalDraggable extends Draggable {
|
|
4
|
+
componentWillReceiveProps(next) {
|
|
5
|
+
super.componentWillReceiveProps(next);
|
|
6
|
+
//Remove the x/y state as these values have now been updated and will come through as props.
|
|
7
|
+
this.setState({ x: 0, y: 0 });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
11
10
|
|
|
12
11
|
export { DraggableCore };
|
package/src/grid-draggable.jsx
CHANGED
|
@@ -252,13 +252,6 @@ export const gridDraggable = (opts) => (Comp) => {
|
|
|
252
252
|
return opts.fromDelta(this.props, delta);
|
|
253
253
|
};
|
|
254
254
|
|
|
255
|
-
/**
|
|
256
|
-
* Must not return false. react-draggable v4 treats a false return as "keep dragging"
|
|
257
|
-
* and bails out of handleDragStop before it detaches the document mousemove/mouseup
|
|
258
|
-
* listeners, so the handle would keep following the pointer after release - and every
|
|
259
|
-
* previously dragged handle would move along with the next one. (v3 ignored the
|
|
260
|
-
* return value and always detached, which is why returning false used to look inert.)
|
|
261
|
-
*/
|
|
262
255
|
onStop = (e, dd) => {
|
|
263
256
|
log('[onStop] dd:', dd);
|
|
264
257
|
const { onDragStop, onClick, disabled } = this.props;
|
|
@@ -297,11 +290,12 @@ export const gridDraggable = (opts) => (Comp) => {
|
|
|
297
290
|
}
|
|
298
291
|
}
|
|
299
292
|
|
|
300
|
-
|
|
301
|
-
return;
|
|
293
|
+
return false;
|
|
302
294
|
}
|
|
303
295
|
|
|
304
296
|
this.setState({ startX: null, startY: null });
|
|
297
|
+
// return false to prevent state updates in the underlying draggable - a move will have triggered an update already.
|
|
298
|
+
return false;
|
|
305
299
|
};
|
|
306
300
|
|
|
307
301
|
render() {
|
package/LICENSE.md
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
Copyright 2019 CoreSpring Inc
|
|
2
|
-
|
|
3
|
-
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
|
-
|
|
5
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
3
|
-
import RD, { DraggableCore as RDCore } from 'react-draggable';
|
|
4
|
-
import Draggable, { DraggableCore } from '../draggable';
|
|
5
|
-
|
|
6
|
-
describe('draggable', () => {
|
|
7
|
-
it('renders with children', () => {
|
|
8
|
-
const { container } = render(
|
|
9
|
-
<Draggable>
|
|
10
|
-
<div>hellow</div>
|
|
11
|
-
</Draggable>,
|
|
12
|
-
);
|
|
13
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('re-exports react-draggable unchanged', () => {
|
|
17
|
-
expect(Draggable).toBe(RD);
|
|
18
|
-
expect(DraggableCore).toBe(RDCore);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('applies a transform from the controlled position prop', () => {
|
|
22
|
-
const Wrap = ({ x, y }) => (
|
|
23
|
-
<Draggable position={{ x, y }}>
|
|
24
|
-
<div data-testid="draggable-child">content</div>
|
|
25
|
-
</Draggable>
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
const { rerender, getByTestId } = render(<Wrap x={100} y={100} />);
|
|
29
|
-
const child = getByTestId('draggable-child');
|
|
30
|
-
expect(child.style.transform).toBe('translate(100px,100px)');
|
|
31
|
-
|
|
32
|
-
rerender(<Wrap x={200} y={200} />);
|
|
33
|
-
expect(child.style.transform).toBe('translate(200px,200px)');
|
|
34
|
-
|
|
35
|
-
rerender(<Wrap x={0} y={0} />);
|
|
36
|
-
expect(child.style.transform).toBe('translate(0px,0px)');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { fireEvent, render } from '@testing-library/react';
|
|
3
|
-
import { scaleLinear } from 'd3-scale';
|
|
4
|
-
import { gridDraggable } from '../grid-draggable';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* react-draggable v4 honours the value returned from DraggableCore's `onStop` and bails
|
|
8
|
-
* out of handleDragStop before it detaches the document mousemove/mouseup listeners.
|
|
9
|
-
* v3 ignored that return value and always detached them. If gridDraggable's onStop
|
|
10
|
-
* returns false, every dragged handle stays subscribed to document mousemove forever,
|
|
11
|
-
* so later pointer movement keeps dragging marks that the user is no longer holding.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
const Handle = ({ onMouseDown, onMouseUp, onTouchStart, onTouchEnd, style, testid }) => (
|
|
15
|
-
<div
|
|
16
|
-
data-testid={testid}
|
|
17
|
-
onMouseDown={onMouseDown}
|
|
18
|
-
onMouseUp={onMouseUp}
|
|
19
|
-
onTouchStart={onTouchStart}
|
|
20
|
-
onTouchEnd={onTouchEnd}
|
|
21
|
-
style={style}
|
|
22
|
-
/>
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
const Draggable = gridDraggable({
|
|
26
|
-
anchorPoint: (props) => ({ x: props.x, y: props.y }),
|
|
27
|
-
fromDelta: (props, delta) => ({ x: props.x + delta.x, y: props.y + delta.y }),
|
|
28
|
-
bounds: () => ({ left: -1000, right: 1000, top: -1000, bottom: 1000 }),
|
|
29
|
-
})(Handle);
|
|
30
|
-
|
|
31
|
-
const graphProps = (rootNode) => ({
|
|
32
|
-
scale: {
|
|
33
|
-
x: scaleLinear().domain([0, 10]).range([0, 400]),
|
|
34
|
-
y: scaleLinear().domain([0, 10]).range([400, 0]),
|
|
35
|
-
},
|
|
36
|
-
snap: { x: (n) => n, y: (n) => n },
|
|
37
|
-
domain: { min: 0, max: 10, step: 1 },
|
|
38
|
-
range: { min: 0, max: 10, step: 1 },
|
|
39
|
-
size: { width: 400, height: 400 },
|
|
40
|
-
getRootNode: () => rootNode,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
// grid() resolves to [40, -40] for these scales, so a move must clear 20px to register.
|
|
44
|
-
const drag = (node, to) => {
|
|
45
|
-
fireEvent.mouseDown(node, { clientX: 0, clientY: 0, button: 0 });
|
|
46
|
-
fireEvent.mouseMove(document, { clientX: to, clientY: 0 });
|
|
47
|
-
fireEvent.mouseUp(document, { clientX: to, clientY: 0 });
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
describe('gridDraggable drag end', () => {
|
|
51
|
-
let root;
|
|
52
|
-
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
root = document.createElement('div');
|
|
55
|
-
document.body.appendChild(root);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
afterEach(() => {
|
|
59
|
-
document.body.removeChild(root);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('stops dragging a handle once the mouse is released', () => {
|
|
63
|
-
const onDrag = jest.fn();
|
|
64
|
-
const { getByTestId } = render(
|
|
65
|
-
<Draggable testid="a" x={2} y={2} graphProps={graphProps(root)} onDrag={onDrag} />,
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
drag(getByTestId('a'), 40);
|
|
69
|
-
expect(onDrag).toHaveBeenCalled();
|
|
70
|
-
|
|
71
|
-
const callsAtRelease = onDrag.mock.calls.length;
|
|
72
|
-
fireEvent.mouseMove(document, { clientX: 240, clientY: 120 });
|
|
73
|
-
expect(onDrag).toHaveBeenCalledTimes(callsAtRelease);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it('does not drag a previously released handle when another one is dragged', () => {
|
|
77
|
-
const onDragA = jest.fn();
|
|
78
|
-
const onDragB = jest.fn();
|
|
79
|
-
const { getByTestId } = render(
|
|
80
|
-
<>
|
|
81
|
-
<Draggable testid="a" x={2} y={2} graphProps={graphProps(root)} onDrag={onDragA} />
|
|
82
|
-
<Draggable testid="b" x={6} y={6} graphProps={graphProps(root)} onDragB onDrag={onDragB} />
|
|
83
|
-
</>,
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
drag(getByTestId('a'), 40);
|
|
87
|
-
expect(onDragA).toHaveBeenCalled();
|
|
88
|
-
onDragA.mockClear();
|
|
89
|
-
|
|
90
|
-
// Now drag b. a has been released, so it must not move with it.
|
|
91
|
-
fireEvent.mouseDown(getByTestId('b'), { clientX: 0, clientY: 0, button: 0 });
|
|
92
|
-
fireEvent.mouseMove(document, { clientX: 80, clientY: 0 });
|
|
93
|
-
|
|
94
|
-
expect(onDragB).toHaveBeenCalled();
|
|
95
|
-
expect(onDragA).not.toHaveBeenCalled();
|
|
96
|
-
});
|
|
97
|
-
});
|