@pie-lib/graphing 2.4.15 → 2.4.16

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,17 @@
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
+ ## [2.4.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.15...@pie-lib/graphing@2.4.16) (2022-03-22)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Do not change object at address. Instead, create a clone. ([2b683d7](https://github.com/pie-framework/pie-lib/commit/2b683d76853bf057388e6a223671eef3a040dbbf))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [2.4.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.14...@pie-lib/graphing@2.4.15) (2022-03-22)
7
18
 
8
19
 
@@ -11,6 +11,8 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
13
13
 
14
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
+
14
16
  var _point = require("../point");
15
17
 
16
18
  var _plot = require("@pie-lib/plot");
@@ -199,28 +201,31 @@ var lineToolComponent = function lineToolComponent(Component) {
199
201
  labelNode = _this$props3.labelNode,
200
202
  labelModeEnabled = _this$props3.labelModeEnabled,
201
203
  coordinatesOnHover = _this$props3.coordinatesOnHover;
202
- var mark = this.state.mark ? this.state.mark : this.props.mark; // SET DISABLED
204
+ var mark = this.state.mark ? this.state.mark : this.props.mark;
205
+ var from = (0, _cloneDeep["default"])(mark.from);
206
+ var to = (0, _cloneDeep["default"])(mark.to);
207
+ var middle = (0, _cloneDeep["default"])(mark.middle); // SET DISABLED
203
208
  // if it's a background mark, we need to force disable it
204
209
 
205
- if (mark.from && mark.isBackground) {
206
- mark.from.disabled = true;
210
+ if (from && mark.isBackground) {
211
+ from.disabled = true;
207
212
  }
208
213
 
209
- if (mark.to && mark.isBackground) {
210
- mark.to.disabled = true;
214
+ if (to && mark.isBackground) {
215
+ to.disabled = true;
211
216
  }
212
217
 
213
- if (mark.middle && mark.isBackground) {
214
- mark.middle.disabled = true;
218
+ if (middle && mark.isBackground) {
219
+ middle.disabled = true;
215
220
  }
216
221
 
217
222
  return /*#__PURE__*/_react["default"].createElement(Component, {
218
223
  disabled: mark.disabled,
219
224
  coordinatesOnHover: coordinatesOnHover,
220
225
  correctness: mark.correctness,
221
- from: mark.from,
222
- to: mark.to,
223
- middle: mark.middle,
226
+ from: from,
227
+ to: to,
228
+ middle: middle,
224
229
  graphProps: graphProps,
225
230
  onChange: this.changeMark,
226
231
  changeMarkProps: this.changeMarkProps,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/tools/shared/line/index.jsx"],"names":["lineTool","type","Component","addPoint","point","mark","root","building","from","to","lineToolComponent","props","setState","onChange","update","state","undefined","shouldNotChange","middle","graphProps","onClick","labelNode","labelModeEnabled","coordinatesOnHover","isBackground","disabled","correctness","changeMark","changeMarkProps","startDrag","stopDrag","React","types","ToolPropTypeFields","GraphPropsType","isRequired","dragOpts","bounds","domain","range","area","utils","lineToArea","anchorPoint","fromDelta","delta","add","lineBase","Comp","opts","DraggableComp","FromPoint","BasePoint","ToPoint","LineBase","draggedFrom","draggedTo","label","updated","onChangePoint","input","focus","onDragStart","onDragStop","common","angle","trig","toDegrees","fromLabelNode","toLabelNode","lineLabelNode","hasOwnProperty","ReactDOM","createPortal","r","labelChange","dragComp","clickPoint","x","y","dragFrom","dragTo","PropTypes","bool","PointType","func","string","object","styles","line","fill","stroke","color","primaryLight","strokeWidth","transition","primaryDark","arrow","secondary","disabledArrow","correct","theme","key","incorrect"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,IAAD,EAAOC,SAAP;AAAA,SAAqB;AAAA,WAAO;AAClDD,MAAAA,IAAI,EAAJA,IADkD;AAElDC,MAAAA,SAAS,EAATA,SAFkD;AAGlDC,MAAAA,QAAQ,EAAE,kBAACC,KAAD,EAAQC,IAAR,EAAiB;AACzB,YAAIA,IAAI,IAAI,wBAAYA,IAAI,CAACC,IAAjB,EAAuBF,KAAvB,CAAZ,EAA2C;AACzC,iBAAOC,IAAP;AACD;;AAED,YAAI,CAACA,IAAL,EAAW;AACT,iBAAO;AACLJ,YAAAA,IAAI,EAAJA,IADK;AAELM,YAAAA,QAAQ,EAAE,IAFL;AAGLC,YAAAA,IAAI,EAAEJ;AAHD,WAAP;AAKD;;AAED,YAAI,wBAAYA,KAAZ,EAAmBC,IAAI,CAACG,IAAxB,CAAJ,EAAmC;AACjC,mCAAYH,IAAZ;AACD;;AAED,+CAAYA,IAAZ;AAAkBE,UAAAA,QAAQ,EAAE,KAA5B;AAAmCE,UAAAA,EAAE,EAAEL;AAAvC;AACD;AArBiD,KAAP;AAAA,GAArB;AAAA,CAAjB;;;;AAwBA,IAAMM,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAR,SAAS,EAAI;AAAA;;AAC5C;AAAA;;AAAA;;AAME,+BAAYS,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,gCAAMA,KAAN;;AADiB,kEAKP;AAAA,eAAM,MAAKC,QAAL,CAAc;AAAEP,UAAAA,IAAI,oBAAO,MAAKM,KAAL,CAAWN,IAAlB;AAAN,SAAd,CAAN;AAAA,OALO;;AAAA,iEAOR,YAAM;AACf,0BAA2B,MAAKM,KAAhC;AAAA,YAAQE,QAAR,eAAQA,QAAR;AAAA,YAAkBR,IAAlB,eAAkBA,IAAlB;;AACA,YAAMS,MAAM,qBAAQ,MAAKC,KAAL,CAAWV,IAAnB,CAAZ;;AAEA,cAAKO,QAAL,CAAc;AAAEP,UAAAA,IAAI,EAAEW;AAAR,SAAd,EAAmC,YAAM;AACvC,cAAQf,IAAR,GAAiBa,MAAjB,CAAQb,IAAR;AACA,cAAMgB,eAAe,GACnBhB,IAAI,KAAKA,IAAI,KAAK,UAAT,IAAuBA,IAAI,KAAK,MAArC,CAAJ,IAAoD,qBAASa,MAAM,CAACN,IAAhB,EAAsBM,MAAM,CAACL,EAA7B,CADtD;;AAGA,cAAI,CAAC,yBAAQJ,IAAR,EAAcS,MAAd,CAAD,IAA0B,CAACG,eAA/B,EAAgD;AAC9CJ,YAAAA,QAAQ,CAACR,IAAD,EAAOS,MAAP,CAAR;AACD;AACF,SARD;AASD,OApBkB;;AAAA,mEAsBN,gBAA0B;AAAA,YAAvBN,IAAuB,QAAvBA,IAAuB;AAAA,YAAjBC,EAAiB,QAAjBA,EAAiB;AAAA,YAAbS,MAAa,QAAbA,MAAa;;AACrC,YAAIb,IAAI,mCAAQ,MAAKU,KAAL,CAAWV,IAAnB;AAAyBG,UAAAA,IAAI,EAAJA,IAAzB;AAA+BC,UAAAA,EAAE,EAAFA;AAA/B,UAAR;;AAEA,YAAIS,MAAJ,EAAY;AACVb,UAAAA,IAAI,mCAAQA,IAAR;AAAca,YAAAA,MAAM,EAANA;AAAd,YAAJ;AACD;;AAED,cAAKN,QAAL,CAAc;AAAEP,UAAAA,IAAI,EAAJA;AAAF,SAAd;AACD,OA9BkB;;AAAA,wEAgCD,iBAA0B;AAAA,YAAvBG,IAAuB,SAAvBA,IAAuB;AAAA,YAAjBC,EAAiB,SAAjBA,EAAiB;AAAA,YAAbS,MAAa,SAAbA,MAAa;AAC1C,2BAA2B,MAAKP,KAAhC;AAAA,YAAQE,QAAR,gBAAQA,QAAR;AAAA,YAAkBR,IAAlB,gBAAkBA,IAAlB;;AACA,YAAIS,MAAM,mCAAQT,IAAR,GAAiB,MAAKU,KAAL,CAAWV,IAA5B,CAAV;;AAEA,YAAIG,IAAJ,EAAU;AACRM,UAAAA,MAAM,mCAAQA,MAAR;AAAgBN,YAAAA,IAAI,EAAJA;AAAhB,YAAN;AACD;;AAED,YAAIC,EAAJ,EAAQ;AACNK,UAAAA,MAAM,mCAAQA,MAAR;AAAgBL,YAAAA,EAAE,EAAFA;AAAhB,YAAN;AACD;;AAED,YAAIS,MAAJ,EAAY;AACVJ,UAAAA,MAAM,mCAAQA,MAAR;AAAgBI,YAAAA,MAAM,EAANA;AAAhB,YAAN;AACD;;AAED,YAAI,CAAC,yBAAQb,IAAR,EAAcS,MAAd,CAAL,EAA4B;AAC1BD,UAAAA,QAAQ,CAACR,IAAD,EAAOS,MAAP,CAAR;AACD;AACF,OAnDkB;;AAEjB,YAAKC,KAAL,GAAa,EAAb;AAFiB;AAGlB;;AATH;AAAA;AAAA,aA2DE,kBAAS;AACP,2BAAiF,KAAKJ,KAAtF;AAAA,YAAQQ,UAAR,gBAAQA,UAAR;AAAA,YAAoBC,OAApB,gBAAoBA,OAApB;AAAA,YAA6BC,SAA7B,gBAA6BA,SAA7B;AAAA,YAAwCC,gBAAxC,gBAAwCA,gBAAxC;AAAA,YAA0DC,kBAA1D,gBAA0DA,kBAA1D;AACA,YAAMlB,IAAI,GAAG,KAAKU,KAAL,CAAWV,IAAX,GAAkB,KAAKU,KAAL,CAAWV,IAA7B,GAAoC,KAAKM,KAAL,CAAWN,IAA5D,CAFO,CAIP;AACA;;AACA,YAAIA,IAAI,CAACG,IAAL,IAAaH,IAAI,CAACmB,YAAtB,EAAoC;AAClCnB,UAAAA,IAAI,CAACG,IAAL,CAAUiB,QAAV,GAAqB,IAArB;AACD;;AAED,YAAIpB,IAAI,CAACI,EAAL,IAAWJ,IAAI,CAACmB,YAApB,EAAkC;AAChCnB,UAAAA,IAAI,CAACI,EAAL,CAAQgB,QAAR,GAAmB,IAAnB;AACD;;AAED,YAAIpB,IAAI,CAACa,MAAL,IAAeb,IAAI,CAACmB,YAAxB,EAAsC;AACpCnB,UAAAA,IAAI,CAACa,MAAL,CAAYO,QAAZ,GAAuB,IAAvB;AACD;;AAED,4BACE,gCAAC,SAAD;AACE,UAAA,QAAQ,EAAEpB,IAAI,CAACoB,QADjB;AAEE,UAAA,kBAAkB,EAAEF,kBAFtB;AAGE,UAAA,WAAW,EAAElB,IAAI,CAACqB,WAHpB;AAIE,UAAA,IAAI,EAAErB,IAAI,CAACG,IAJb;AAKE,UAAA,EAAE,EAAEH,IAAI,CAACI,EALX;AAME,UAAA,MAAM,EAAEJ,IAAI,CAACa,MANf;AAOE,UAAA,UAAU,EAAEC,UAPd;AAQE,UAAA,QAAQ,EAAE,KAAKQ,UARjB;AASE,UAAA,eAAe,EAAE,KAAKC,eATxB;AAUE,UAAA,OAAO,EAAER,OAVX;AAWE,UAAA,WAAW,EAAE,KAAKS,SAXpB;AAYE,UAAA,UAAU,EAAE,KAAKC,QAZnB;AAaE,UAAA,SAAS,EAAET,SAbb;AAcE,UAAA,gBAAgB,EAAEC;AAdpB,UADF;AAkBD;AA/FH;;AAAA;AAAA,IAAuCS,kBAAM7B,SAA7C,wEAEO8B,YAAMC,kBAFb;AAGId,IAAAA,UAAU,EAAEa,YAAME,cAAN,CAAqBC;AAHrC;AAiGD,CAlGM;;;;AAoGP,IAAMC,QAAQ,GAAG,SAAXA,QAAW;AAAA,SAAO;AACtBC,IAAAA,MAAM,EAAE,gBAAC1B,KAAD,SAA8B;AAAA,UAApB2B,MAAoB,SAApBA,MAAoB;AAAA,UAAZC,KAAY,SAAZA,KAAY;;AACpC,UAAMC,IAAI,GAAGC,YAAMC,UAAN,CAAiB/B,KAAK,CAACH,IAAvB,EAA6BG,KAAK,CAACF,EAAnC,CAAb;;AACA,aAAOgC,YAAMJ,MAAN,CAAaG,IAAb,EAAmBF,MAAnB,EAA2BC,KAA3B,CAAP;AACD,KAJqB;AAKtBI,IAAAA,WAAW,EAAE,qBAAAhC,KAAK,EAAI;AACpB,UAAQH,IAAR,GAAiBG,KAAjB,CAAQH,IAAR;AACA,aAAOA,IAAP;AACD,KARqB;AAStBoC,IAAAA,SAAS,EAAE,mBAACjC,KAAD,EAAQkC,KAAR,EAAkB;AAC3B,UAAQrC,IAAR,GAAqBG,KAArB,CAAQH,IAAR;AAAA,UAAcC,EAAd,GAAqBE,KAArB,CAAcF,EAAd;AACA,aAAO;AACLD,QAAAA,IAAI,EAAEiC,YAAMrC,KAAN,CAAYI,IAAZ,EAAkBsC,GAAlB,CAAsBL,YAAMrC,KAAN,CAAYyC,KAAZ,CAAtB,CADD;AAELpC,QAAAA,EAAE,EAAEgC,YAAMrC,KAAN,CAAYK,EAAZ,EAAgBqC,GAAhB,CAAoBL,YAAMrC,KAAN,CAAYyC,KAAZ,CAApB;AAFC,OAAP;AAID;AAfqB,GAAP;AAAA,CAAjB;;AAkBO,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAACC,IAAD,EAAOC,IAAP,EAAgB;AACtC,MAAMC,aAAa,GAAG,yBAAcd,QAAQ,EAAtB,EAA0BY,IAA1B,CAAtB;AAEA,MAAMG,SAAS,GAAGF,IAAI,IAAIA,IAAI,CAACzC,IAAb,GAAoByC,IAAI,CAACzC,IAAzB,GAAgC4C,gBAAlD;AACA,MAAMC,OAAO,GAAGJ,IAAI,IAAIA,IAAI,CAACxC,EAAb,GAAkBwC,IAAI,CAACxC,EAAvB,GAA4B2C,gBAA5C;;AAJsC,MAMhCE,QANgC;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,uEAwBpB,UAAAlD,KAAK,EAAI;AACvB,2BAA6B,OAAKO,KAAlC;AAAA,YAAQO,MAAR,gBAAQA,MAAR;AAAA,YAAgBL,QAAhB,gBAAgBA,QAAhB;AACA,YAAQL,IAAR,GAAqBJ,KAArB,CAAQI,IAAR;AAAA,YAAcC,EAAd,GAAqBL,KAArB,CAAcK,EAAd,CAFuB,CAIvB;;AACA,YAAI,CAAC,wBAAYD,IAAZ,EAAkBC,EAAlB,CAAL,EAA4B;AAC1B,cAAIS,MAAJ,EAAY;AACVd,YAAAA,KAAK,CAACc,MAAN,mCAAoBA,MAApB,GAA+B,iCAAqBV,IAArB,EAA2BC,EAA3B,CAA/B;AACD;;AAEDI,UAAAA,QAAQ,CAACT,KAAD,CAAR;AACD;AACF,OApCmC;;AAAA,kEAsCzB,iBAA0C;AAAA,YAAjCmD,WAAiC,SAAvC/C,IAAuC;AAAA,YAAhBgD,SAAgB,SAApB/C,EAAoB;AACnD,4BAAuC,OAAKE,KAA5C;AAAA,YAAQH,IAAR,iBAAQA,IAAR;AAAA,YAAcC,EAAd,iBAAcA,EAAd;AAAA,YAAkBI,QAAlB,iBAAkBA,QAAlB;AAAA,YAA4BK,MAA5B,iBAA4BA,MAA5B;;AAEA,YAAIV,IAAI,CAACiD,KAAT,EAAgB;AACdF,UAAAA,WAAW,CAACE,KAAZ,GAAoBjD,IAAI,CAACiD,KAAzB;AACD;;AAED,YAAIhD,EAAE,CAACgD,KAAP,EAAc;AACZD,UAAAA,SAAS,CAACC,KAAV,GAAkBhD,EAAE,CAACgD,KAArB;AACD;;AAED,YAAMC,OAAO,GAAG;AAAElD,UAAAA,IAAI,EAAE+C,WAAR;AAAqB9C,UAAAA,EAAE,EAAE+C;AAAzB,SAAhB;;AAEA,YAAItC,MAAJ,EAAY;AACVwC,UAAAA,OAAO,CAACxC,MAAR,mCAAsBA,MAAtB,GAAiC,iCAAqBqC,WAArB,EAAkCC,SAAlC,CAAjC;AACD;;AAED3C,QAAAA,QAAQ,CAAC6C,OAAD,CAAR;AACD,OAxDmC;;AAAA,kEA0DzB,UAAAH,WAAW,EAAI;AACxB,4BAAqB,OAAK5C,KAA1B;AAAA,YAAQH,IAAR,iBAAQA,IAAR;AAAA,YAAcC,EAAd,iBAAcA,EAAd;;AAEA,YAAID,IAAI,CAACiD,KAAT,EAAgB;AACdF,UAAAA,WAAW,CAACE,KAAZ,GAAoBjD,IAAI,CAACiD,KAAzB;AACD;;AAED,YAAI,CAAC,wBAAYF,WAAZ,EAAyB9C,EAAzB,CAAL,EAAmC;AACjC,iBAAKkD,aAAL,CAAmB;AAAEnD,YAAAA,IAAI,EAAE+C,WAAR;AAAqB9C,YAAAA,EAAE,EAAEA;AAAzB,WAAnB;AACD;AACF,OApEmC;;AAAA,gEAsE3B,UAAA+C,SAAS,EAAI;AACpB,4BAAqB,OAAK7C,KAA1B;AAAA,YAAQH,IAAR,iBAAQA,IAAR;AAAA,YAAcC,EAAd,iBAAcA,EAAd;;AAEA,YAAIA,EAAE,CAACgD,KAAP,EAAc;AACZD,UAAAA,SAAS,CAACC,KAAV,GAAkBhD,EAAE,CAACgD,KAArB;AACD;;AAED,YAAI,CAAC,wBAAYjD,IAAZ,EAAkBgD,SAAlB,CAAL,EAAmC;AACjC,iBAAKG,aAAL,CAAmB;AAAEnD,YAAAA,IAAI,EAAEA,IAAR;AAAcC,YAAAA,EAAE,EAAE+C;AAAlB,WAAnB;AACD;AACF,OAhFmC;;AAAA,qEAkFtB,UAACpD,KAAD,EAAQH,IAAR,EAAiB;AAC7B,YAAQ2B,eAAR,GAA4B,OAAKjB,KAAjC,CAAQiB,eAAR;;AACA,YAAMd,MAAM,qBAAQV,KAAR,CAAZ;;AAEA,YAAI,CAACA,KAAK,CAACqD,KAAP,IAAgB,yBAAQrD,KAAK,CAACqD,KAAd,CAApB,EAA0C;AACxC,iBAAO3C,MAAM,CAAC2C,KAAd;AACD;;AAED7B,QAAAA,eAAe,qBAAI3B,IAAJ,EAAWa,MAAX,EAAf;AACD,OA3FmC;;AAAA,oEA6FvB,UAACV,KAAD,EAAQH,IAAR,EAAiB;AAC5B,4BAAsC,OAAKU,KAA3C;AAAA,YAAQiB,eAAR,iBAAQA,eAAR;AAAA,YAAyBpB,IAAzB,iBAAyBA,IAAzB;AAAA,YAA+BC,EAA/B,iBAA+BA,EAA/B;;AAEA,YAAIR,IAAI,KAAK,QAAT,IAAqB,CAACG,KAAtB,IAA+BI,IAA/B,IAAuCC,EAA3C,EAA+C;AAC7CL,UAAAA,KAAK,mCAAQA,KAAR,GAAkB,iCAAqBI,IAArB,EAA2BC,EAA3B,CAAlB,CAAL;AACD;;AAEDmB,QAAAA,eAAe;AAAGpB,UAAAA,IAAI,EAAJA,IAAH;AAASC,UAAAA,EAAE,EAAFA;AAAT,WAAcR,IAAd;AAAuBwD,UAAAA,KAAK,EAAE;AAA9B,WAAqCrD,KAArC,GAAf;;AAEA,YAAI,OAAKwD,KAAL,CAAW3D,IAAX,CAAJ,EAAsB;AACpB,iBAAK2D,KAAL,CAAW3D,IAAX,EAAiB4D,KAAjB;AACD;AACF,OAzGmC;;AAAA,+DA4G5B,EA5G4B;;AAAA;AAAA;;AAAA;AAAA;AAAA,aA8GpC,kBAAS;AAAA;;AACP,2BAaI,KAAKlD,KAbT;AAAA,YACEY,kBADF,gBACEA,kBADF;AAAA,YAEEJ,UAFF,gBAEEA,UAFF;AAAA,YAGE2C,WAHF,gBAGEA,WAHF;AAAA,YAIEC,UAJF,gBAIEA,UAJF;AAAA,YAKEvD,IALF,gBAKEA,IALF;AAAA,YAMEC,EANF,gBAMEA,EANF;AAAA,YAOES,MAPF,gBAOEA,MAPF;AAAA,YAQEO,QARF,gBAQEA,QARF;AAAA,YASEC,WATF,gBASEA,WATF;AAAA,YAUEN,OAVF,gBAUEA,OAVF;AAAA,YAWEC,SAXF,gBAWEA,SAXF;AAAA,YAYEC,gBAZF,gBAYEA,gBAZF;AAcA,YAAM0C,MAAM,GAAG;AAAE7C,UAAAA,UAAU,EAAVA,UAAF;AAAc2C,UAAAA,WAAW,EAAXA,WAAd;AAA2BC,UAAAA,UAAU,EAAVA,UAA3B;AAAuCtC,UAAAA,QAAQ,EAARA,QAAvC;AAAiDC,UAAAA,WAAW,EAAXA,WAAjD;AAA8DN,UAAAA,OAAO,EAAPA;AAA9D,SAAf;AACA,YAAM6C,KAAK,GAAGxD,EAAE,GAAGyD,WAAKC,SAAL,CAAeD,WAAKD,KAAL,CAAWzD,IAAX,EAAiBC,EAAjB,CAAf,CAAH,GAA0C,CAA1D;AAEA,YAAI2D,aAAa,GAAG,IAApB;AACA,YAAIC,WAAW,GAAG,IAAlB;AACA,YAAIC,aAAa,GAAG,IAApB;;AAEA,YAAIjD,SAAJ,EAAe;AACb,cAAIb,IAAI,IAAIA,IAAI,CAAC+D,cAAL,CAAoB,OAApB,CAAZ,EAA0C;AACxCH,YAAAA,aAAa,gBAAGI,qBAASC,YAAT,eACd,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAWpD,IAAX,GAAkBkE,CAAvB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACpD,gBAFb;AAGE,cAAA,IAAI,EAAEd,IAHR;AAIE,cAAA,UAAU,EAAEW,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAsC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,iCAAsBnE,IAAtB;AAA4BiD,kBAAAA,KAAK,EAALA;AAA5B,oBAAqC,MAArC,CAAJ;AAAA;AALjB,cADc,EAQdpC,SARc,CAAhB;AAUD;;AAED,cAAIZ,EAAE,IAAIA,EAAE,CAAC8D,cAAH,CAAkB,OAAlB,CAAV,EAAsC;AACpCF,YAAAA,WAAW,gBAAGG,qBAASC,YAAT,eACZ,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAWnD,EAAX,GAAgBiE,CAArB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACpD,gBAFb;AAGE,cAAA,IAAI,EAAEb,EAHR;AAIE,cAAA,UAAU,EAAEU,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAsC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,iCAAsBlE,EAAtB;AAA0BgD,kBAAAA,KAAK,EAALA;AAA1B,oBAAmC,IAAnC,CAAJ;AAAA;AALjB,cADY,EAQZpC,SARY,CAAd;AAUD;;AAED,cAAIH,MAAM,IAAIA,MAAM,CAACqD,cAAP,CAAsB,OAAtB,CAAd,EAA8C;AAC5CD,YAAAA,aAAa,gBAAGE,qBAASC,YAAT,eACd,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAW1C,MAAX,GAAoBwD,CAAzB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACpD,gBAFb;AAGE,cAAA,IAAI,EAAEJ,MAHR;AAIE,cAAA,UAAU,EAAEC,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAsC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,iCAAsBzD,MAAtB;AAA8BuC,kBAAAA,KAAK,EAALA;AAA9B,oBAAuC,QAAvC,CAAJ;AAAA;AALjB,cADc,EAQdpC,SARc,CAAhB;AAUD;AACF;;AAED,4BACE,2CACGZ,EAAE,iBACD,gCAAC,aAAD;AACE,UAAA,IAAI,EAAED,IADR;AAEE,UAAA,EAAE,EAAEC,EAFN;AAGE,UAAA,MAAM,EAAES,MAHV;AAIE,UAAA,MAAM,EAAE,KAAK0D;AAJf,WAKMZ,MALN;AAME,UAAA,OAAO,EAAE1C,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACuD,UAAL,CAAgB3D,MAAhB,EAAwB,QAAxB,CAAN;AAAA,WAAH,GAA6C8C,MAAM,CAAC5C;AAN/E,WAFJ,EAWGkD,aAXH,eAaE,gCAAC,SAAD;AACE,UAAA,CAAC,EAAE9D,IAAI,CAACsE,CADV;AAEE,UAAA,CAAC,EAAEtE,IAAI,CAACuE,CAFV;AAGE,UAAA,SAAS,EAAE1D,SAHb;AAIE,UAAA,kBAAkB,EAAEE,kBAJtB;AAKE,UAAA,MAAM,EAAE,KAAKyD;AALf,WAMMhB,MANN;AAOE,UAAA,OAAO,EAAE1C,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACuD,UAAL,CAAgBrE,IAAhB,EAAsB,MAAtB,CAAN;AAAA,WAAH,GAAyCwD,MAAM,CAAC5C;AAP3E,WAbF,EAsBGgD,aAtBH,EAwBG3D,EAAE,iBACD,gCAAC,OAAD;AACE,UAAA,CAAC,EAAEA,EAAE,CAACqE,CADR;AAEE,UAAA,CAAC,EAAErE,EAAE,CAACsE,CAFR;AAGE,UAAA,KAAK,EAAEd,KAHT,CAGgB;AAHhB;AAIE,UAAA,SAAS,EAAE5C,SAJb;AAKE,UAAA,kBAAkB,EAAEE,kBALtB;AAME,UAAA,MAAM,EAAE,KAAK0D;AANf,WAOMjB,MAPN;AAQE,UAAA,OAAO,EAAE1C,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACuD,UAAL,CAAgBpE,EAAhB,EAAoB,IAApB,CAAN;AAAA,WAAH,GAAqCuD,MAAM,CAAC5C;AARvE,WAzBJ,EAoCGiD,WApCH,CADF;AAwCD;AArNmC;;AAAA;AAAA,IAMftC,kBAAM7B,SANS;;AAAA,kBAMhCoD,QANgC,eAOjB;AACjB/B,IAAAA,kBAAkB,EAAE2D,sBAAUC,IADb;AAEjBhE,IAAAA,UAAU,EAAEa,YAAME,cAFD;AAGjB1B,IAAAA,IAAI,EAAEwB,YAAMoD,SAHK;AAIjB3E,IAAAA,EAAE,EAAEuB,YAAMoD,SAJO;AAKjBlE,IAAAA,MAAM,EAAEc,YAAMoD,SALG;AAMjBvE,IAAAA,QAAQ,EAAEqE,sBAAUG,IANH;AAOjBvB,IAAAA,WAAW,EAAEoB,sBAAUG,IAPN;AAQjBtB,IAAAA,UAAU,EAAEmB,sBAAUG,IARL;AASjBjE,IAAAA,OAAO,EAAE8D,sBAAUG,IATF;AAUjB3D,IAAAA,WAAW,EAAEwD,sBAAUI,MAVN;AAWjB7D,IAAAA,QAAQ,EAAEyD,sBAAUC,IAXH;AAYjB9D,IAAAA,SAAS,EAAE6D,sBAAUK,MAZJ;AAajBjE,IAAAA,gBAAgB,EAAE4D,sBAAUC,IAbX;AAcjBvD,IAAAA,eAAe,EAAEsD,sBAAUG;AAdV,GAPiB;;AAwNtC,SAAO/B,QAAP;AACD,CAzNM;;;AA2NA,IAAMkC,MAAM,GAAG;AACpBC,EAAAA,IAAI,EAAE;AAAA,WAAO;AACXC,MAAAA,IAAI,EAAE,aADK;AAEXC,MAAAA,MAAM,EAAEC,gBAAMC,YAAN,EAFG;AAGXC,MAAAA,WAAW,EAAE,CAHF;AAIXC,MAAAA,UAAU,EAAE,kDAJD;AAKX,iBAAW;AACTD,QAAAA,WAAW,EAAE,CADJ;AAETH,QAAAA,MAAM,EAAEC,gBAAMI,WAAN;AAFC;AALA,KAAP;AAAA,GADc;AAWpBC,EAAAA,KAAK,EAAE;AAAA,WAAO;AACZP,MAAAA,IAAI,EAAEE,gBAAMM,SAAN;AADM,KAAP;AAAA,GAXa;AAcpBC,EAAAA,aAAa,EAAE;AAAA,6BACV,uBADU;AAAA,GAdK;AAiBpB1E,EAAAA,QAAQ,EAAE;AAAA,2CACL,sBAAS,QAAT,CADK;AAERqE,MAAAA,WAAW,EAAE;AAFL;AAAA,GAjBU;AAqBpBM,EAAAA,OAAO,EAAE,iBAACC,KAAD,EAAQC,GAAR;AAAA,6BACJ,qBAAQA,GAAR,CADI;AAAA,GArBW;AAwBpBC,EAAAA,SAAS,EAAE,mBAACF,KAAD,EAAQC,GAAR;AAAA,6BACN,uBAAUA,GAAV,CADM;AAAA;AAxBS,CAAf","sourcesContent":["import React from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { BasePoint } from '../point';\nimport { types, utils, gridDraggable, trig } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport { disabled, correct, incorrect } from '../styles';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\nimport { getMiddleOfTwoPoints, equalPoints, sameAxes } from '../../../utils';\n\nexport const lineTool = (type, Component) => () => ({\n type,\n Component,\n addPoint: (point, mark) => {\n if (mark && equalPoints(mark.root, point)) {\n return mark;\n }\n\n if (!mark) {\n return {\n type,\n building: true,\n from: point\n };\n }\n\n if (equalPoints(point, mark.from)) {\n return { ...mark };\n }\n\n return { ...mark, building: false, to: point };\n }\n});\n\nexport const lineToolComponent = Component => {\n return class LineToolComponent extends React.Component {\n static propTypes = {\n ...types.ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n startDrag = () => this.setState({ mark: { ...this.props.mark } });\n\n stopDrag = () => {\n const { onChange, mark } = this.props;\n const update = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n const { type } = update;\n const shouldNotChange =\n type && (type === 'parabola' || type === 'sine') && sameAxes(update.from, update.to);\n\n if (!isEqual(mark, update) && !shouldNotChange) {\n onChange(mark, update);\n }\n });\n };\n\n changeMark = ({ from, to, middle }) => {\n let mark = { ...this.state.mark, from, to };\n\n if (middle) {\n mark = { ...mark, middle };\n }\n\n this.setState({ mark });\n };\n\n changeMarkProps = ({ from, to, middle }) => {\n const { onChange, mark } = this.props;\n let update = { ...mark, ...this.state.mark };\n\n if (from) {\n update = { ...update, from };\n }\n\n if (to) {\n update = { ...update, to };\n }\n\n if (middle) {\n update = { ...update, middle };\n }\n\n if (!isEqual(mark, update)) {\n onChange(mark, update);\n }\n };\n\n render() {\n const { graphProps, onClick, labelNode, labelModeEnabled, coordinatesOnHover } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n // SET DISABLED\n // if it's a background mark, we need to force disable it\n if (mark.from && mark.isBackground) {\n mark.from.disabled = true;\n }\n\n if (mark.to && mark.isBackground) {\n mark.to.disabled = true;\n }\n\n if (mark.middle && mark.isBackground) {\n mark.middle.disabled = true;\n }\n\n return (\n <Component\n disabled={mark.disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={mark.correctness}\n from={mark.from}\n to={mark.to}\n middle={mark.middle}\n graphProps={graphProps}\n onChange={this.changeMark}\n changeMarkProps={this.changeMarkProps}\n onClick={onClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n />\n );\n }\n };\n};\n\nconst dragOpts = () => ({\n bounds: (props, { domain, range }) => {\n const area = utils.lineToArea(props.from, props.to);\n return utils.bounds(area, domain, range);\n },\n anchorPoint: props => {\n const { from } = props;\n return from;\n },\n fromDelta: (props, delta) => {\n const { from, to } = props;\n return {\n from: utils.point(from).add(utils.point(delta)),\n to: utils.point(to).add(utils.point(delta))\n };\n }\n});\n\nexport const lineBase = (Comp, opts) => {\n const DraggableComp = gridDraggable(dragOpts())(Comp);\n\n const FromPoint = opts && opts.from ? opts.from : BasePoint;\n const ToPoint = opts && opts.to ? opts.to : BasePoint;\n\n class LineBase extends React.Component {\n static propTypes = {\n coordinatesOnHover: PropTypes.bool,\n graphProps: types.GraphPropsType,\n from: types.PointType,\n to: types.PointType,\n middle: types.PointType,\n onChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n changeMarkProps: PropTypes.func\n };\n\n onChangePoint = point => {\n const { middle, onChange } = this.props;\n const { from, to } = point;\n\n // because point.from.label and point.to.label can be different\n if (!equalPoints(from, to)) {\n if (middle) {\n point.middle = { ...middle, ...getMiddleOfTwoPoints(from, to) };\n }\n\n onChange(point);\n }\n };\n\n dragComp = ({ from: draggedFrom, to: draggedTo }) => {\n const { from, to, onChange, middle } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n const updated = { from: draggedFrom, to: draggedTo };\n\n if (middle) {\n updated.middle = { ...middle, ...getMiddleOfTwoPoints(draggedFrom, draggedTo) };\n }\n\n onChange(updated);\n };\n\n dragFrom = draggedFrom => {\n const { from, to } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (!equalPoints(draggedFrom, to)) {\n this.onChangePoint({ from: draggedFrom, to: to });\n }\n };\n\n dragTo = draggedTo => {\n const { from, to } = this.props;\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n if (!equalPoints(from, draggedTo)) {\n this.onChangePoint({ from: from, to: draggedTo });\n }\n };\n\n labelChange = (point, type) => {\n const { changeMarkProps } = this.props;\n const update = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete update.label;\n }\n\n changeMarkProps({ [type]: update });\n };\n\n clickPoint = (point, type) => {\n const { changeMarkProps, from, to } = this.props;\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\n\n changeMarkProps({ from, to, [type]: { label: '', ...point } });\n\n if (this.input[type]) {\n this.input[type].focus();\n }\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n coordinatesOnHover,\n graphProps,\n onDragStart,\n onDragStop,\n from,\n to,\n middle,\n disabled,\n correctness,\n onClick,\n labelNode,\n labelModeEnabled\n } = this.props;\n const common = { graphProps, onDragStart, onDragStop, disabled, correctness, onClick };\n const angle = to ? trig.toDegrees(trig.angle(from, to)) : 0;\n\n let fromLabelNode = null;\n let toLabelNode = null;\n let lineLabelNode = null;\n\n if (labelNode) {\n if (from && from.hasOwnProperty('label')) {\n fromLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.from = r)}\n disabled={!labelModeEnabled}\n mark={from}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...from, label }, 'from')}\n />,\n labelNode\n );\n }\n\n if (to && to.hasOwnProperty('label')) {\n toLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.to = r)}\n disabled={!labelModeEnabled}\n mark={to}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...to, label }, 'to')}\n />,\n labelNode\n );\n }\n\n if (middle && middle.hasOwnProperty('label')) {\n lineLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.middle = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...middle, label }, 'middle')}\n />,\n labelNode\n );\n }\n }\n\n return (\n <g>\n {to && (\n <DraggableComp\n from={from}\n to={to}\n middle={middle}\n onDrag={this.dragComp}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(middle, 'middle') : common.onClick}\n />\n )}\n {lineLabelNode}\n\n <FromPoint\n x={from.x}\n y={from.y}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragFrom}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(from, 'from') : common.onClick}\n />\n {fromLabelNode}\n\n {to && (\n <ToPoint\n x={to.x}\n y={to.y}\n angle={angle} //angle + 45}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragTo}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(to, 'to') : common.onClick}\n />\n )}\n {toLabelNode}\n </g>\n );\n }\n }\n\n return LineBase;\n};\n\nexport const styles = {\n line: () => ({\n fill: 'transparent',\n stroke: color.primaryLight(),\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.primaryDark()\n }\n }),\n arrow: () => ({\n fill: color.secondary()\n }),\n disabledArrow: () => ({\n ...disabled()\n }),\n disabled: () => ({\n ...disabled('stroke'),\n strokeWidth: 2\n }),\n correct: (theme, key) => ({\n ...correct(key)\n }),\n incorrect: (theme, key) => ({\n ...incorrect(key)\n })\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/tools/shared/line/index.jsx"],"names":["lineTool","type","Component","addPoint","point","mark","root","building","from","to","lineToolComponent","props","setState","onChange","update","state","undefined","shouldNotChange","middle","graphProps","onClick","labelNode","labelModeEnabled","coordinatesOnHover","isBackground","disabled","correctness","changeMark","changeMarkProps","startDrag","stopDrag","React","types","ToolPropTypeFields","GraphPropsType","isRequired","dragOpts","bounds","domain","range","area","utils","lineToArea","anchorPoint","fromDelta","delta","add","lineBase","Comp","opts","DraggableComp","FromPoint","BasePoint","ToPoint","LineBase","draggedFrom","draggedTo","label","updated","onChangePoint","input","focus","onDragStart","onDragStop","common","angle","trig","toDegrees","fromLabelNode","toLabelNode","lineLabelNode","hasOwnProperty","ReactDOM","createPortal","r","labelChange","dragComp","clickPoint","x","y","dragFrom","dragTo","PropTypes","bool","PointType","func","string","object","styles","line","fill","stroke","color","primaryLight","strokeWidth","transition","primaryDark","arrow","secondary","disabledArrow","correct","theme","key","incorrect"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BasePoint } from '../point';\nimport { types, utils, gridDraggable, trig } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport { disabled, correct, incorrect } from '../styles';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\nimport { getMiddleOfTwoPoints, equalPoints, sameAxes } from '../../../utils';\n\nexport const lineTool = (type, Component) => () => ({\n type,\n Component,\n addPoint: (point, mark) => {\n if (mark && equalPoints(mark.root, point)) {\n return mark;\n }\n\n if (!mark) {\n return {\n type,\n building: true,\n from: point\n };\n }\n\n if (equalPoints(point, mark.from)) {\n return { ...mark };\n }\n\n return { ...mark, building: false, to: point };\n }\n});\n\nexport const lineToolComponent = Component => {\n return class LineToolComponent extends React.Component {\n static propTypes = {\n ...types.ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n startDrag = () => this.setState({ mark: { ...this.props.mark } });\n\n stopDrag = () => {\n const { onChange, mark } = this.props;\n const update = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n const { type } = update;\n const shouldNotChange =\n type && (type === 'parabola' || type === 'sine') && sameAxes(update.from, update.to);\n\n if (!isEqual(mark, update) && !shouldNotChange) {\n onChange(mark, update);\n }\n });\n };\n\n changeMark = ({ from, to, middle }) => {\n let mark = { ...this.state.mark, from, to };\n\n if (middle) {\n mark = { ...mark, middle };\n }\n\n this.setState({ mark });\n };\n\n changeMarkProps = ({ from, to, middle }) => {\n const { onChange, mark } = this.props;\n let update = { ...mark, ...this.state.mark };\n\n if (from) {\n update = { ...update, from };\n }\n\n if (to) {\n update = { ...update, to };\n }\n\n if (middle) {\n update = { ...update, middle };\n }\n\n if (!isEqual(mark, update)) {\n onChange(mark, update);\n }\n };\n\n render() {\n const { graphProps, onClick, labelNode, labelModeEnabled, coordinatesOnHover } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n const from = cloneDeep(mark.from);\n const to = cloneDeep(mark.to);\n const middle = cloneDeep(mark.middle);\n\n // SET DISABLED\n // if it's a background mark, we need to force disable it\n if (from && mark.isBackground) {\n from.disabled = true;\n }\n\n if (to && mark.isBackground) {\n to.disabled = true;\n }\n\n if (middle && mark.isBackground) {\n middle.disabled = true;\n }\n\n return (\n <Component\n disabled={mark.disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={mark.correctness}\n from={from}\n to={to}\n middle={middle}\n graphProps={graphProps}\n onChange={this.changeMark}\n changeMarkProps={this.changeMarkProps}\n onClick={onClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n />\n );\n }\n };\n};\n\nconst dragOpts = () => ({\n bounds: (props, { domain, range }) => {\n const area = utils.lineToArea(props.from, props.to);\n return utils.bounds(area, domain, range);\n },\n anchorPoint: props => {\n const { from } = props;\n return from;\n },\n fromDelta: (props, delta) => {\n const { from, to } = props;\n return {\n from: utils.point(from).add(utils.point(delta)),\n to: utils.point(to).add(utils.point(delta))\n };\n }\n});\n\nexport const lineBase = (Comp, opts) => {\n const DraggableComp = gridDraggable(dragOpts())(Comp);\n\n const FromPoint = opts && opts.from ? opts.from : BasePoint;\n const ToPoint = opts && opts.to ? opts.to : BasePoint;\n\n class LineBase extends React.Component {\n static propTypes = {\n coordinatesOnHover: PropTypes.bool,\n graphProps: types.GraphPropsType,\n from: types.PointType,\n to: types.PointType,\n middle: types.PointType,\n onChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n changeMarkProps: PropTypes.func\n };\n\n onChangePoint = point => {\n const { middle, onChange } = this.props;\n const { from, to } = point;\n\n // because point.from.label and point.to.label can be different\n if (!equalPoints(from, to)) {\n if (middle) {\n point.middle = { ...middle, ...getMiddleOfTwoPoints(from, to) };\n }\n\n onChange(point);\n }\n };\n\n dragComp = ({ from: draggedFrom, to: draggedTo }) => {\n const { from, to, onChange, middle } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n const updated = { from: draggedFrom, to: draggedTo };\n\n if (middle) {\n updated.middle = { ...middle, ...getMiddleOfTwoPoints(draggedFrom, draggedTo) };\n }\n\n onChange(updated);\n };\n\n dragFrom = draggedFrom => {\n const { from, to } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (!equalPoints(draggedFrom, to)) {\n this.onChangePoint({ from: draggedFrom, to: to });\n }\n };\n\n dragTo = draggedTo => {\n const { from, to } = this.props;\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n if (!equalPoints(from, draggedTo)) {\n this.onChangePoint({ from: from, to: draggedTo });\n }\n };\n\n labelChange = (point, type) => {\n const { changeMarkProps } = this.props;\n const update = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete update.label;\n }\n\n changeMarkProps({ [type]: update });\n };\n\n clickPoint = (point, type) => {\n const { changeMarkProps, from, to } = this.props;\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\n\n changeMarkProps({ from, to, [type]: { label: '', ...point } });\n\n if (this.input[type]) {\n this.input[type].focus();\n }\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n coordinatesOnHover,\n graphProps,\n onDragStart,\n onDragStop,\n from,\n to,\n middle,\n disabled,\n correctness,\n onClick,\n labelNode,\n labelModeEnabled\n } = this.props;\n const common = { graphProps, onDragStart, onDragStop, disabled, correctness, onClick };\n const angle = to ? trig.toDegrees(trig.angle(from, to)) : 0;\n\n let fromLabelNode = null;\n let toLabelNode = null;\n let lineLabelNode = null;\n\n if (labelNode) {\n if (from && from.hasOwnProperty('label')) {\n fromLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.from = r)}\n disabled={!labelModeEnabled}\n mark={from}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...from, label }, 'from')}\n />,\n labelNode\n );\n }\n\n if (to && to.hasOwnProperty('label')) {\n toLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.to = r)}\n disabled={!labelModeEnabled}\n mark={to}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...to, label }, 'to')}\n />,\n labelNode\n );\n }\n\n if (middle && middle.hasOwnProperty('label')) {\n lineLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={r => (this.input.middle = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={label => this.labelChange({ ...middle, label }, 'middle')}\n />,\n labelNode\n );\n }\n }\n\n return (\n <g>\n {to && (\n <DraggableComp\n from={from}\n to={to}\n middle={middle}\n onDrag={this.dragComp}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(middle, 'middle') : common.onClick}\n />\n )}\n {lineLabelNode}\n\n <FromPoint\n x={from.x}\n y={from.y}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragFrom}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(from, 'from') : common.onClick}\n />\n {fromLabelNode}\n\n {to && (\n <ToPoint\n x={to.x}\n y={to.y}\n angle={angle} //angle + 45}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragTo}\n {...common}\n onClick={labelModeEnabled ? () => this.clickPoint(to, 'to') : common.onClick}\n />\n )}\n {toLabelNode}\n </g>\n );\n }\n }\n\n return LineBase;\n};\n\nexport const styles = {\n line: () => ({\n fill: 'transparent',\n stroke: color.primaryLight(),\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.primaryDark()\n }\n }),\n arrow: () => ({\n fill: color.secondary()\n }),\n disabledArrow: () => ({\n ...disabled()\n }),\n disabled: () => ({\n ...disabled('stroke'),\n strokeWidth: 2\n }),\n correct: (theme, key) => ({\n ...correct(key)\n }),\n incorrect: (theme, key) => ({\n ...incorrect(key)\n })\n};\n"],"file":"index.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.4.15",
6
+ "version": "2.4.16",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -43,6 +43,6 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "1cab5bfdd528e04c5d3acbcceda82c4034bd7a4a",
46
+ "gitHead": "4cc06c83958465076a69b537b0996ead7f890f59",
47
47
  "scripts": {}
48
48
  }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import isEqual from 'lodash/isEqual';
3
+ import cloneDeep from 'lodash/cloneDeep';
3
4
  import { BasePoint } from '../point';
4
5
  import { types, utils, gridDraggable, trig } from '@pie-lib/plot';
5
6
  import PropTypes from 'prop-types';
@@ -98,18 +99,22 @@ export const lineToolComponent = Component => {
98
99
  const { graphProps, onClick, labelNode, labelModeEnabled, coordinatesOnHover } = this.props;
99
100
  const mark = this.state.mark ? this.state.mark : this.props.mark;
100
101
 
102
+ const from = cloneDeep(mark.from);
103
+ const to = cloneDeep(mark.to);
104
+ const middle = cloneDeep(mark.middle);
105
+
101
106
  // SET DISABLED
102
107
  // if it's a background mark, we need to force disable it
103
- if (mark.from && mark.isBackground) {
104
- mark.from.disabled = true;
108
+ if (from && mark.isBackground) {
109
+ from.disabled = true;
105
110
  }
106
111
 
107
- if (mark.to && mark.isBackground) {
108
- mark.to.disabled = true;
112
+ if (to && mark.isBackground) {
113
+ to.disabled = true;
109
114
  }
110
115
 
111
- if (mark.middle && mark.isBackground) {
112
- mark.middle.disabled = true;
116
+ if (middle && mark.isBackground) {
117
+ middle.disabled = true;
113
118
  }
114
119
 
115
120
  return (
@@ -117,9 +122,9 @@ export const lineToolComponent = Component => {
117
122
  disabled={mark.disabled}
118
123
  coordinatesOnHover={coordinatesOnHover}
119
124
  correctness={mark.correctness}
120
- from={mark.from}
121
- to={mark.to}
122
- middle={mark.middle}
125
+ from={from}
126
+ to={to}
127
+ middle={middle}
123
128
  graphProps={graphProps}
124
129
  onChange={this.changeMark}
125
130
  changeMarkProps={this.changeMarkProps}