@pie-lib/graphing 2.4.7 → 2.4.10

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/lib/axis/arrow.js +22 -18
  3. package/lib/axis/arrow.js.map +1 -1
  4. package/lib/axis/axes.js +74 -78
  5. package/lib/axis/axes.js.map +1 -1
  6. package/lib/axis/index.js +5 -1
  7. package/lib/axis/index.js.map +1 -1
  8. package/lib/bg.js +16 -14
  9. package/lib/bg.js.map +1 -1
  10. package/lib/container/index.js +21 -15
  11. package/lib/container/index.js.map +1 -1
  12. package/lib/coordinates-label.js +4 -4
  13. package/lib/coordinates-label.js.map +1 -1
  14. package/lib/graph-with-controls.js +29 -25
  15. package/lib/graph-with-controls.js.map +1 -1
  16. package/lib/graph.js +58 -45
  17. package/lib/graph.js.map +1 -1
  18. package/lib/grid.js +20 -14
  19. package/lib/grid.js.map +1 -1
  20. package/lib/index.js +5 -1
  21. package/lib/index.js.map +1 -1
  22. package/lib/labels.js +28 -24
  23. package/lib/labels.js.map +1 -1
  24. package/lib/mark-label.js +16 -8
  25. package/lib/mark-label.js.map +1 -1
  26. package/lib/toggle-bar.js +18 -16
  27. package/lib/toggle-bar.js.map +1 -1
  28. package/lib/tool-menu.js +22 -16
  29. package/lib/tool-menu.js.map +1 -1
  30. package/lib/tools/circle/bg-circle.js +26 -18
  31. package/lib/tools/circle/bg-circle.js.map +1 -1
  32. package/lib/tools/circle/component.js +30 -28
  33. package/lib/tools/circle/component.js.map +1 -1
  34. package/lib/tools/circle/index.js +4 -4
  35. package/lib/tools/circle/index.js.map +1 -1
  36. package/lib/tools/index.js +16 -15
  37. package/lib/tools/index.js.map +1 -1
  38. package/lib/tools/line/component.js +17 -7
  39. package/lib/tools/line/component.js.map +1 -1
  40. package/lib/tools/parabola/component.js.map +1 -1
  41. package/lib/tools/parabola/index.js +4 -4
  42. package/lib/tools/parabola/index.js.map +1 -1
  43. package/lib/tools/point/component.js +21 -17
  44. package/lib/tools/point/component.js.map +1 -1
  45. package/lib/tools/point/index.js +2 -2
  46. package/lib/tools/polygon/component.js +55 -47
  47. package/lib/tools/polygon/component.js.map +1 -1
  48. package/lib/tools/polygon/index.js +12 -8
  49. package/lib/tools/polygon/index.js.map +1 -1
  50. package/lib/tools/polygon/line.js +26 -18
  51. package/lib/tools/polygon/line.js.map +1 -1
  52. package/lib/tools/polygon/polygon.js +26 -18
  53. package/lib/tools/polygon/polygon.js.map +1 -1
  54. package/lib/tools/ray/component.js +17 -7
  55. package/lib/tools/ray/component.js.map +1 -1
  56. package/lib/tools/segment/component.js +4 -2
  57. package/lib/tools/segment/component.js.map +1 -1
  58. package/lib/tools/shared/arrow-head.js +4 -4
  59. package/lib/tools/shared/arrow-head.js.map +1 -1
  60. package/lib/tools/shared/line/index.js +46 -44
  61. package/lib/tools/shared/line/index.js.map +1 -1
  62. package/lib/tools/shared/line/line-path.js +28 -20
  63. package/lib/tools/shared/line/line-path.js.map +1 -1
  64. package/lib/tools/shared/line/with-root-edge.js +8 -6
  65. package/lib/tools/shared/line/with-root-edge.js.map +1 -1
  66. package/lib/tools/shared/point/arrow-point.js +21 -15
  67. package/lib/tools/shared/point/arrow-point.js.map +1 -1
  68. package/lib/tools/shared/point/arrow.js +21 -15
  69. package/lib/tools/shared/point/arrow.js.map +1 -1
  70. package/lib/tools/shared/point/base-point.js +22 -16
  71. package/lib/tools/shared/point/base-point.js.map +1 -1
  72. package/lib/tools/shared/point/index.js +8 -4
  73. package/lib/tools/shared/point/index.js.map +1 -1
  74. package/lib/tools/shared/styles.js +1 -1
  75. package/lib/tools/shared/types.js +1 -1
  76. package/lib/tools/sine/component.js.map +1 -1
  77. package/lib/tools/sine/index.js +4 -4
  78. package/lib/tools/sine/index.js.map +1 -1
  79. package/lib/tools/vector/component.js +4 -2
  80. package/lib/tools/vector/component.js.map +1 -1
  81. package/lib/undo-redo.js +20 -16
  82. package/lib/undo-redo.js.map +1 -1
  83. package/lib/use-debounce.js +7 -3
  84. package/lib/use-debounce.js.map +1 -1
  85. package/lib/utils.js +93 -5
  86. package/lib/utils.js.map +1 -1
  87. package/package.json +2 -2
  88. package/src/axis/arrow.jsx +5 -5
  89. package/src/axis/axes.jsx +25 -36
  90. package/src/graph.jsx +16 -10
  91. package/src/tools/line/component.jsx +4 -2
  92. package/src/tools/ray/component.jsx +4 -2
  93. package/src/utils.js +87 -4
@@ -17,6 +17,8 @@ var _styles = require("@material-ui/core/styles");
17
17
 
18
18
  var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
+ var _excluded = ["className", "classes", "correctness", "disabled", "graphProps", "from", "to"];
21
+
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
23
 
22
24
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -42,10 +44,10 @@ var Line = function Line(props) {
42
44
  graphProps = props.graphProps,
43
45
  from = props.from,
44
46
  to = props.to,
45
- rest = _objectWithoutProperties(props, ["className", "classes", "correctness", "disabled", "graphProps", "from", "to"]);
47
+ rest = _objectWithoutProperties(props, _excluded);
46
48
 
47
49
  var scale = graphProps.scale;
48
- return _react["default"].createElement("line", _extends({
50
+ return /*#__PURE__*/_react["default"].createElement("line", _extends({
49
51
  stroke: "green",
50
52
  strokeWidth: "6",
51
53
  x1: scale.x(from.x),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/segment/component.jsx"],"names":["lineStyles","theme","line","styles","disabled","correct","incorrect","Line","props","className","classes","correctness","graphProps","from","to","rest","scale","x","y","propTypes","PropTypes","string","object","bool","any","types","PointType","StyledLine","Segment","Component"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK;AAAA,SAAK;AAC3BC,IAAAA,IAAI,EAAEC,aAAOD,IAAP,CAAYD,KAAZ,CADqB;AAE3BG,IAAAA,QAAQ,EAAED,aAAOC,QAAP,CAAgBH,KAAhB,CAFiB;AAG3BI,IAAAA,OAAO,EAAEF,aAAOE,OAAP,CAAeJ,KAAf,EAAsB,QAAtB,CAHkB;AAI3BK,IAAAA,SAAS,EAAEH,aAAOG,SAAP,CAAiBL,KAAjB,EAAwB,QAAxB;AAJgB,GAAL;AAAA,CAAxB;;AAMO,IAAMM,IAAI,GAAG,SAAPA,IAAO,CAAAC,KAAK,EAAI;AAAA,MACnBC,SADmB,GAC0DD,KAD1D,CACnBC,SADmB;AAAA,MACRC,OADQ,GAC0DF,KAD1D,CACRE,OADQ;AAAA,MACCC,WADD,GAC0DH,KAD1D,CACCG,WADD;AAAA,MACcP,QADd,GAC0DI,KAD1D,CACcJ,QADd;AAAA,MACwBQ,UADxB,GAC0DJ,KAD1D,CACwBI,UADxB;AAAA,MACoCC,IADpC,GAC0DL,KAD1D,CACoCK,IADpC;AAAA,MAC0CC,EAD1C,GAC0DN,KAD1D,CAC0CM,EAD1C;AAAA,MACiDC,IADjD,4BAC0DP,KAD1D;;AAAA,MAEnBQ,KAFmB,GAETJ,UAFS,CAEnBI,KAFmB;AAI3B,SACE;AACE,IAAA,MAAM,EAAC,OADT;AAEE,IAAA,WAAW,EAAC,GAFd;AAGE,IAAA,EAAE,EAAEA,KAAK,CAACC,CAAN,CAAQJ,IAAI,CAACI,CAAb,CAHN;AAIE,IAAA,EAAE,EAAED,KAAK,CAACE,CAAN,CAAQL,IAAI,CAACK,CAAb,CAJN;AAKE,IAAA,EAAE,EAAEF,KAAK,CAACC,CAAN,CAAQH,EAAE,CAACG,CAAX,CALN;AAME,IAAA,EAAE,EAAED,KAAK,CAACE,CAAN,CAAQJ,EAAE,CAACI,CAAX,CANN;AAOE,IAAA,SAAS,EAAE,4BACTR,OAAO,CAACR,IADC,EAETE,QAAQ,IAAIM,OAAO,CAACN,QAFX,EAGTM,OAAO,CAACC,WAAD,CAHE,EAITF,SAJS;AAPb,KAaMM,IAbN,EADF;AAiBD,CArBM;;;AAuBPR,IAAI,CAACY,SAAL,GAAiB;AACfV,EAAAA,SAAS,EAAEW,sBAAUC,MADN;AAEfX,EAAAA,OAAO,EAAEU,sBAAUE,MAFJ;AAGfX,EAAAA,WAAW,EAAES,sBAAUC,MAHR;AAIfjB,EAAAA,QAAQ,EAAEgB,sBAAUG,IAJL;AAKfX,EAAAA,UAAU,EAAEQ,sBAAUI,GALP;AAMfX,EAAAA,IAAI,EAAEY,YAAMC,SANG;AAOfZ,EAAAA,EAAE,EAAEW,YAAMC;AAPK,CAAjB;AAUA,IAAMC,UAAU,GAAG,wBAAW3B,UAAX,EAAuBO,IAAvB,CAAnB;AACA,IAAMqB,OAAO,GAAG,oBAASD,UAAT,CAAhB;AACA,IAAME,SAAS,GAAG,6BAAkBD,OAAlB,CAAlB;eAEeC,S","sourcesContent":["import { lineToolComponent, lineBase, styles } from '../shared/line';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { types } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nconst lineStyles = theme => ({\n line: styles.line(theme),\n disabled: styles.disabled(theme),\n correct: styles.correct(theme, 'stroke'),\n incorrect: styles.incorrect(theme, 'stroke')\n});\nexport const Line = props => {\n const { className, classes, correctness, disabled, graphProps, from, to, ...rest } = props;\n const { scale } = graphProps;\n\n return (\n <line\n stroke=\"green\"\n strokeWidth=\"6\"\n x1={scale.x(from.x)}\n y1={scale.y(from.y)}\n x2={scale.x(to.x)}\n y2={scale.y(to.y)}\n className={classNames(\n classes.line,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n {...rest}\n />\n );\n};\n\nLine.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n graphProps: PropTypes.any,\n from: types.PointType,\n to: types.PointType\n};\n\nconst StyledLine = withStyles(lineStyles)(Line);\nconst Segment = lineBase(StyledLine);\nconst Component = lineToolComponent(Segment);\n\nexport default Component;\n"],"file":"component.js"}
1
+ {"version":3,"sources":["../../../src/tools/segment/component.jsx"],"names":["lineStyles","theme","line","styles","disabled","correct","incorrect","Line","props","className","classes","correctness","graphProps","from","to","rest","scale","x","y","propTypes","PropTypes","string","object","bool","any","types","PointType","StyledLine","Segment","Component"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK;AAAA,SAAK;AAC3BC,IAAAA,IAAI,EAAEC,aAAOD,IAAP,CAAYD,KAAZ,CADqB;AAE3BG,IAAAA,QAAQ,EAAED,aAAOC,QAAP,CAAgBH,KAAhB,CAFiB;AAG3BI,IAAAA,OAAO,EAAEF,aAAOE,OAAP,CAAeJ,KAAf,EAAsB,QAAtB,CAHkB;AAI3BK,IAAAA,SAAS,EAAEH,aAAOG,SAAP,CAAiBL,KAAjB,EAAwB,QAAxB;AAJgB,GAAL;AAAA,CAAxB;;AAMO,IAAMM,IAAI,GAAG,SAAPA,IAAO,CAAAC,KAAK,EAAI;AAC3B,MAAQC,SAAR,GAAqFD,KAArF,CAAQC,SAAR;AAAA,MAAmBC,OAAnB,GAAqFF,KAArF,CAAmBE,OAAnB;AAAA,MAA4BC,WAA5B,GAAqFH,KAArF,CAA4BG,WAA5B;AAAA,MAAyCP,QAAzC,GAAqFI,KAArF,CAAyCJ,QAAzC;AAAA,MAAmDQ,UAAnD,GAAqFJ,KAArF,CAAmDI,UAAnD;AAAA,MAA+DC,IAA/D,GAAqFL,KAArF,CAA+DK,IAA/D;AAAA,MAAqEC,EAArE,GAAqFN,KAArF,CAAqEM,EAArE;AAAA,MAA4EC,IAA5E,4BAAqFP,KAArF;;AACA,MAAQQ,KAAR,GAAkBJ,UAAlB,CAAQI,KAAR;AAEA,sBACE;AACE,IAAA,MAAM,EAAC,OADT;AAEE,IAAA,WAAW,EAAC,GAFd;AAGE,IAAA,EAAE,EAAEA,KAAK,CAACC,CAAN,CAAQJ,IAAI,CAACI,CAAb,CAHN;AAIE,IAAA,EAAE,EAAED,KAAK,CAACE,CAAN,CAAQL,IAAI,CAACK,CAAb,CAJN;AAKE,IAAA,EAAE,EAAEF,KAAK,CAACC,CAAN,CAAQH,EAAE,CAACG,CAAX,CALN;AAME,IAAA,EAAE,EAAED,KAAK,CAACE,CAAN,CAAQJ,EAAE,CAACI,CAAX,CANN;AAOE,IAAA,SAAS,EAAE,4BACTR,OAAO,CAACR,IADC,EAETE,QAAQ,IAAIM,OAAO,CAACN,QAFX,EAGTM,OAAO,CAACC,WAAD,CAHE,EAITF,SAJS;AAPb,KAaMM,IAbN,EADF;AAiBD,CArBM;;;AAuBPR,IAAI,CAACY,SAAL,GAAiB;AACfV,EAAAA,SAAS,EAAEW,sBAAUC,MADN;AAEfX,EAAAA,OAAO,EAAEU,sBAAUE,MAFJ;AAGfX,EAAAA,WAAW,EAAES,sBAAUC,MAHR;AAIfjB,EAAAA,QAAQ,EAAEgB,sBAAUG,IAJL;AAKfX,EAAAA,UAAU,EAAEQ,sBAAUI,GALP;AAMfX,EAAAA,IAAI,EAAEY,YAAMC,SANG;AAOfZ,EAAAA,EAAE,EAAEW,YAAMC;AAPK,CAAjB;AAUA,IAAMC,UAAU,GAAG,wBAAW3B,UAAX,EAAuBO,IAAvB,CAAnB;AACA,IAAMqB,OAAO,GAAG,oBAASD,UAAT,CAAhB;AACA,IAAME,SAAS,GAAG,6BAAkBD,OAAlB,CAAlB;eAEeC,S","sourcesContent":["import { lineToolComponent, lineBase, styles } from '../shared/line';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { types } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nconst lineStyles = theme => ({\n line: styles.line(theme),\n disabled: styles.disabled(theme),\n correct: styles.correct(theme, 'stroke'),\n incorrect: styles.incorrect(theme, 'stroke')\n});\nexport const Line = props => {\n const { className, classes, correctness, disabled, graphProps, from, to, ...rest } = props;\n const { scale } = graphProps;\n\n return (\n <line\n stroke=\"green\"\n strokeWidth=\"6\"\n x1={scale.x(from.x)}\n y1={scale.y(from.y)}\n x2={scale.x(to.x)}\n y2={scale.y(to.y)}\n className={classNames(\n classes.line,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n {...rest}\n />\n );\n};\n\nLine.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n graphProps: PropTypes.any,\n from: types.PointType,\n to: types.PointType\n};\n\nconst StyledLine = withStyles(lineStyles)(Line);\nconst Segment = lineBase(StyledLine);\nconst Component = lineToolComponent(Segment);\n\nexport default Component;\n"],"file":"component.js"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ArrowMarker = exports.genUid = exports.ArrowHead = void 0;
6
+ exports.genUid = exports.ArrowMarker = exports.ArrowHead = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -15,7 +15,7 @@ var ArrowHead = function ArrowHead(_ref) {
15
15
  var size = _ref.size,
16
16
  transform = _ref.transform,
17
17
  points = _ref.points;
18
- return _react["default"].createElement("polygon", {
18
+ return /*#__PURE__*/_react["default"].createElement("polygon", {
19
19
  points: points || "0,0 ".concat(size, ",").concat(size / 2, " 0,").concat(size),
20
20
  transform: transform
21
21
  });
@@ -44,7 +44,7 @@ var ArrowMarker = function ArrowMarker(_ref2) {
44
44
  var id = _ref2.id,
45
45
  size = _ref2.size,
46
46
  className = _ref2.className;
47
- return _react["default"].createElement("marker", {
47
+ return /*#__PURE__*/_react["default"].createElement("marker", {
48
48
  id: id,
49
49
  viewBox: "0 0 ".concat(size, " ").concat(size),
50
50
  refX: size / 2,
@@ -53,7 +53,7 @@ var ArrowMarker = function ArrowMarker(_ref2) {
53
53
  markerHeight: size,
54
54
  orient: "auto-start-reverse",
55
55
  className: className
56
- }, _react["default"].createElement(ArrowHead, {
56
+ }, /*#__PURE__*/_react["default"].createElement(ArrowHead, {
57
57
  size: size
58
58
  }));
59
59
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/shared/arrow-head.jsx"],"names":["ArrowHead","size","transform","points","propTypes","PropTypes","string","number","defaultProps","genUid","v","Math","random","toFixed","ArrowMarker","id","className"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEO,IAAMA,SAAS,GAAG,SAAZA,SAAY;AAAA,MAAGC,IAAH,QAAGA,IAAH;AAAA,MAASC,SAAT,QAASA,SAAT;AAAA,MAAoBC,MAApB,QAAoBA,MAApB;AAAA,SACvB;AAAS,IAAA,MAAM,EAAEA,MAAM,kBAAWF,IAAX,cAAmBA,IAAI,GAAG,CAA1B,gBAAiCA,IAAjC,CAAvB;AAAgE,IAAA,SAAS,EAAEC;AAA3E,IADuB;AAAA,CAAlB;;;AAGPF,SAAS,CAACI,SAAV,GAAsB;AACpBD,EAAAA,MAAM,EAAEE,sBAAUC,MADE;AAEpBL,EAAAA,IAAI,EAAEI,sBAAUE,MAFI;AAGpBL,EAAAA,SAAS,EAAEG,sBAAUC;AAHD,CAAtB;AAKAN,SAAS,CAACQ,YAAV,GAAyB;AACvBL,EAAAA,MAAM,EAAE,EADe;AAEvBF,EAAAA,IAAI,EAAE,EAFiB;AAGvBC,EAAAA,SAAS,EAAE;AAHY,CAAzB;;AAKO,IAAMO,MAAM,GAAG,SAATA,MAAS,GAAM;AAC1B,MAAMC,CAAC,GAAG,CAACC,IAAI,CAACC,MAAL,KAAgB,IAAjB,EAAuBC,OAAvB,CAA+B,CAA/B,CAAV;AACA,yBAAgBH,CAAhB;AACD,CAHM;;;;AAIA,IAAMI,WAAW,GAAG,SAAdA,WAAc,QAA6B;AAAA,MAA1BC,EAA0B,SAA1BA,EAA0B;AAAA,MAAtBd,IAAsB,SAAtBA,IAAsB;AAAA,MAAhBe,SAAgB,SAAhBA,SAAgB;AACtD,SACE;AACE,IAAA,EAAE,EAAED,EADN;AAEE,IAAA,OAAO,gBAASd,IAAT,cAAiBA,IAAjB,CAFT;AAGE,IAAA,IAAI,EAAEA,IAAI,GAAG,CAHf;AAIE,IAAA,IAAI,EAAEA,IAAI,GAAG,CAJf;AAKE,IAAA,WAAW,EAAEA,IALf;AAME,IAAA,YAAY,EAAEA,IANhB;AAOE,IAAA,MAAM,EAAC,oBAPT;AAQE,IAAA,SAAS,EAAEe;AARb,KAUE,gCAAC,SAAD;AAAW,IAAA,IAAI,EAAEf;AAAjB,IAVF,CADF;AAcD,CAfM;;;AAgBPa,WAAW,CAACV,SAAZ,GAAwB;AACtBW,EAAAA,EAAE,EAAEV,sBAAUC,MADQ;AAEtBL,EAAAA,IAAI,EAAEI,sBAAUE,MAFM;AAGtBS,EAAAA,SAAS,EAAEX,sBAAUC;AAHC,CAAxB;AAKAQ,WAAW,CAACN,YAAZ,GAA2B;AACzBP,EAAAA,IAAI,EAAE;AADmB,CAA3B","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const ArrowHead = ({ size, transform, points }) => (\n <polygon points={points || `0,0 ${size},${size / 2} 0,${size}`} transform={transform} />\n);\nArrowHead.propTypes = {\n points: PropTypes.string,\n size: PropTypes.number,\n transform: PropTypes.string\n};\nArrowHead.defaultProps = {\n points: '',\n size: 10,\n transform: ''\n};\nexport const genUid = () => {\n const v = (Math.random() * 1000).toFixed(0);\n return `arrow-${v}`;\n};\nexport const ArrowMarker = ({ id, size, className }) => {\n return (\n <marker\n id={id}\n viewBox={`0 0 ${size} ${size}`}\n refX={size / 2}\n refY={size / 2}\n markerWidth={size}\n markerHeight={size}\n orient=\"auto-start-reverse\"\n className={className}\n >\n <ArrowHead size={size} />\n </marker>\n );\n};\nArrowMarker.propTypes = {\n id: PropTypes.string,\n size: PropTypes.number,\n className: PropTypes.string\n};\nArrowMarker.defaultProps = {\n size: 5\n};\n"],"file":"arrow-head.js"}
1
+ {"version":3,"sources":["../../../src/tools/shared/arrow-head.jsx"],"names":["ArrowHead","size","transform","points","propTypes","PropTypes","string","number","defaultProps","genUid","v","Math","random","toFixed","ArrowMarker","id","className"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEO,IAAMA,SAAS,GAAG,SAAZA,SAAY;AAAA,MAAGC,IAAH,QAAGA,IAAH;AAAA,MAASC,SAAT,QAASA,SAAT;AAAA,MAAoBC,MAApB,QAAoBA,MAApB;AAAA,sBACvB;AAAS,IAAA,MAAM,EAAEA,MAAM,kBAAWF,IAAX,cAAmBA,IAAI,GAAG,CAA1B,gBAAiCA,IAAjC,CAAvB;AAAgE,IAAA,SAAS,EAAEC;AAA3E,IADuB;AAAA,CAAlB;;;AAGPF,SAAS,CAACI,SAAV,GAAsB;AACpBD,EAAAA,MAAM,EAAEE,sBAAUC,MADE;AAEpBL,EAAAA,IAAI,EAAEI,sBAAUE,MAFI;AAGpBL,EAAAA,SAAS,EAAEG,sBAAUC;AAHD,CAAtB;AAKAN,SAAS,CAACQ,YAAV,GAAyB;AACvBL,EAAAA,MAAM,EAAE,EADe;AAEvBF,EAAAA,IAAI,EAAE,EAFiB;AAGvBC,EAAAA,SAAS,EAAE;AAHY,CAAzB;;AAKO,IAAMO,MAAM,GAAG,SAATA,MAAS,GAAM;AAC1B,MAAMC,CAAC,GAAG,CAACC,IAAI,CAACC,MAAL,KAAgB,IAAjB,EAAuBC,OAAvB,CAA+B,CAA/B,CAAV;AACA,yBAAgBH,CAAhB;AACD,CAHM;;;;AAIA,IAAMI,WAAW,GAAG,SAAdA,WAAc,QAA6B;AAAA,MAA1BC,EAA0B,SAA1BA,EAA0B;AAAA,MAAtBd,IAAsB,SAAtBA,IAAsB;AAAA,MAAhBe,SAAgB,SAAhBA,SAAgB;AACtD,sBACE;AACE,IAAA,EAAE,EAAED,EADN;AAEE,IAAA,OAAO,gBAASd,IAAT,cAAiBA,IAAjB,CAFT;AAGE,IAAA,IAAI,EAAEA,IAAI,GAAG,CAHf;AAIE,IAAA,IAAI,EAAEA,IAAI,GAAG,CAJf;AAKE,IAAA,WAAW,EAAEA,IALf;AAME,IAAA,YAAY,EAAEA,IANhB;AAOE,IAAA,MAAM,EAAC,oBAPT;AAQE,IAAA,SAAS,EAAEe;AARb,kBAUE,gCAAC,SAAD;AAAW,IAAA,IAAI,EAAEf;AAAjB,IAVF,CADF;AAcD,CAfM;;;AAgBPa,WAAW,CAACV,SAAZ,GAAwB;AACtBW,EAAAA,EAAE,EAAEV,sBAAUC,MADQ;AAEtBL,EAAAA,IAAI,EAAEI,sBAAUE,MAFM;AAGtBS,EAAAA,SAAS,EAAEX,sBAAUC;AAHC,CAAxB;AAKAQ,WAAW,CAACN,YAAZ,GAA2B;AACzBP,EAAAA,IAAI,EAAE;AADmB,CAA3B","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const ArrowHead = ({ size, transform, points }) => (\n <polygon points={points || `0,0 ${size},${size / 2} 0,${size}`} transform={transform} />\n);\nArrowHead.propTypes = {\n points: PropTypes.string,\n size: PropTypes.number,\n transform: PropTypes.string\n};\nArrowHead.defaultProps = {\n points: '',\n size: 10,\n transform: ''\n};\nexport const genUid = () => {\n const v = (Math.random() * 1000).toFixed(0);\n return `arrow-${v}`;\n};\nexport const ArrowMarker = ({ id, size, className }) => {\n return (\n <marker\n id={id}\n viewBox={`0 0 ${size} ${size}`}\n refX={size / 2}\n refY={size / 2}\n markerWidth={size}\n markerHeight={size}\n orient=\"auto-start-reverse\"\n className={className}\n >\n <ArrowHead size={size} />\n </marker>\n );\n};\nArrowMarker.propTypes = {\n id: PropTypes.string,\n size: PropTypes.number,\n className: PropTypes.string\n};\nArrowMarker.defaultProps = {\n size: 5\n};\n"],"file":"arrow-head.js"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.styles = exports.lineBase = exports.lineToolComponent = exports.lineTool = void 0;
8
+ exports.styles = exports.lineToolComponent = exports.lineTool = exports.lineBase = void 0;
7
9
 
8
10
  var _react = _interopRequireDefault(require("react"));
9
11
 
@@ -29,29 +31,31 @@ var _utils = require("../../../utils");
29
31
 
30
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
33
 
32
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
33
-
34
34
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
35
35
 
36
36
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
37
37
 
38
38
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
39
39
 
40
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
40
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
41
41
 
42
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
42
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
43
43
 
44
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
44
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
45
+
46
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
47
+
48
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
45
49
 
46
50
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
47
51
 
48
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
52
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
49
53
 
50
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
54
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51
55
 
52
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
56
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
53
57
 
54
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
58
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
55
59
 
56
60
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
57
61
 
@@ -77,7 +81,7 @@ var lineTool = function lineTool(type, Component) {
77
81
  return _objectSpread({}, mark);
78
82
  }
79
83
 
80
- return _objectSpread({}, mark, {
84
+ return _objectSpread(_objectSpread({}, mark), {}, {
81
85
  building: false,
82
86
  to: point
83
87
  });
@@ -89,19 +93,19 @@ var lineTool = function lineTool(type, Component) {
89
93
  exports.lineTool = lineTool;
90
94
 
91
95
  var lineToolComponent = function lineToolComponent(Component) {
92
- var _class, _temp;
96
+ var _class;
93
97
 
94
- return _temp = _class =
95
- /*#__PURE__*/
96
- function (_React$Component) {
98
+ return _class = /*#__PURE__*/function (_React$Component) {
97
99
  _inherits(LineToolComponent, _React$Component);
98
100
 
101
+ var _super = _createSuper(LineToolComponent);
102
+
99
103
  function LineToolComponent(props) {
100
104
  var _this;
101
105
 
102
106
  _classCallCheck(this, LineToolComponent);
103
107
 
104
- _this = _possibleConstructorReturn(this, _getPrototypeOf(LineToolComponent).call(this, props));
108
+ _this = _super.call(this, props);
105
109
 
106
110
  _defineProperty(_assertThisInitialized(_this), "startDrag", function () {
107
111
  return _this.setState({
@@ -133,13 +137,13 @@ var lineToolComponent = function lineToolComponent(Component) {
133
137
  to = _ref.to,
134
138
  middle = _ref.middle;
135
139
 
136
- var mark = _objectSpread({}, _this.state.mark, {
140
+ var mark = _objectSpread(_objectSpread({}, _this.state.mark), {}, {
137
141
  from: from,
138
142
  to: to
139
143
  });
140
144
 
141
145
  if (middle) {
142
- mark = _objectSpread({}, mark, {
146
+ mark = _objectSpread(_objectSpread({}, mark), {}, {
143
147
  middle: middle
144
148
  });
145
149
  }
@@ -157,22 +161,22 @@ var lineToolComponent = function lineToolComponent(Component) {
157
161
  onChange = _this$props2.onChange,
158
162
  mark = _this$props2.mark;
159
163
 
160
- var update = _objectSpread({}, mark, {}, _this.state.mark);
164
+ var update = _objectSpread(_objectSpread({}, mark), _this.state.mark);
161
165
 
162
166
  if (from) {
163
- update = _objectSpread({}, update, {
167
+ update = _objectSpread(_objectSpread({}, update), {}, {
164
168
  from: from
165
169
  });
166
170
  }
167
171
 
168
172
  if (to) {
169
- update = _objectSpread({}, update, {
173
+ update = _objectSpread(_objectSpread({}, update), {}, {
170
174
  to: to
171
175
  });
172
176
  }
173
177
 
174
178
  if (middle) {
175
- update = _objectSpread({}, update, {
179
+ update = _objectSpread(_objectSpread({}, update), {}, {
176
180
  middle: middle
177
181
  });
178
182
  }
@@ -196,7 +200,7 @@ var lineToolComponent = function lineToolComponent(Component) {
196
200
  labelModeEnabled = _this$props3.labelModeEnabled,
197
201
  coordinatesOnHover = _this$props3.coordinatesOnHover;
198
202
  var mark = this.state.mark ? this.state.mark : this.props.mark;
199
- return _react["default"].createElement(Component, {
203
+ return /*#__PURE__*/_react["default"].createElement(Component, {
200
204
  disabled: mark.disabled,
201
205
  coordinatesOnHover: coordinatesOnHover,
202
206
  correctness: mark.correctness,
@@ -216,9 +220,9 @@ var lineToolComponent = function lineToolComponent(Component) {
216
220
  }]);
217
221
 
218
222
  return LineToolComponent;
219
- }(_react["default"].Component), _defineProperty(_class, "propTypes", _objectSpread({}, _plot.types.ToolPropTypeFields, {
223
+ }(_react["default"].Component), _defineProperty(_class, "propTypes", _objectSpread(_objectSpread({}, _plot.types.ToolPropTypeFields), {}, {
220
224
  graphProps: _plot.types.GraphPropsType.isRequired
221
- })), _temp;
225
+ })), _class;
222
226
  };
223
227
 
224
228
  exports.lineToolComponent = lineToolComponent;
@@ -253,14 +257,12 @@ var lineBase = function lineBase(Comp, opts) {
253
257
  var FromPoint = opts && opts.from ? opts.from : _point.BasePoint;
254
258
  var ToPoint = opts && opts.to ? opts.to : _point.BasePoint;
255
259
 
256
- var LineBase =
257
- /*#__PURE__*/
258
- function (_React$Component2) {
260
+ var LineBase = /*#__PURE__*/function (_React$Component2) {
259
261
  _inherits(LineBase, _React$Component2);
260
262
 
261
- function LineBase() {
262
- var _getPrototypeOf2;
263
+ var _super2 = _createSuper(LineBase);
263
264
 
265
+ function LineBase() {
264
266
  var _this2;
265
267
 
266
268
  _classCallCheck(this, LineBase);
@@ -269,7 +271,7 @@ var lineBase = function lineBase(Comp, opts) {
269
271
  args[_key] = arguments[_key];
270
272
  }
271
273
 
272
- _this2 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LineBase)).call.apply(_getPrototypeOf2, [this].concat(args)));
274
+ _this2 = _super2.call.apply(_super2, [this].concat(args));
273
275
 
274
276
  _defineProperty(_assertThisInitialized(_this2), "onChangePoint", function (point) {
275
277
  var _this2$props = _this2.props,
@@ -280,7 +282,7 @@ var lineBase = function lineBase(Comp, opts) {
280
282
 
281
283
  if (!(0, _utils.equalPoints)(from, to)) {
282
284
  if (middle) {
283
- point.middle = _objectSpread({}, middle, {}, (0, _utils.getMiddleOfTwoPoints)(from, to));
285
+ point.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(from, to));
284
286
  }
285
287
 
286
288
  onChange(point);
@@ -310,7 +312,7 @@ var lineBase = function lineBase(Comp, opts) {
310
312
  };
311
313
 
312
314
  if (middle) {
313
- updated.middle = _objectSpread({}, middle, {}, (0, _utils.getMiddleOfTwoPoints)(draggedFrom, draggedTo));
315
+ updated.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(draggedFrom, draggedTo));
314
316
  }
315
317
 
316
318
  onChange(updated);
@@ -369,7 +371,7 @@ var lineBase = function lineBase(Comp, opts) {
369
371
  to = _this2$props5.to;
370
372
 
371
373
  if (type === 'middle' && !point && from && to) {
372
- point = _objectSpread({}, point, {}, (0, _utils.getMiddleOfTwoPoints)(from, to));
374
+ point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
373
375
  }
374
376
 
375
377
  changeMarkProps(_defineProperty({
@@ -422,7 +424,7 @@ var lineBase = function lineBase(Comp, opts) {
422
424
 
423
425
  if (labelNode) {
424
426
  if (from && from.hasOwnProperty('label')) {
425
- fromLabelNode = _reactDom["default"].createPortal(_react["default"].createElement(_markLabel["default"], {
427
+ fromLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
426
428
  inputRef: function inputRef(r) {
427
429
  return _this3.input.from = r;
428
430
  },
@@ -430,7 +432,7 @@ var lineBase = function lineBase(Comp, opts) {
430
432
  mark: from,
431
433
  graphProps: graphProps,
432
434
  onChange: function onChange(label) {
433
- return _this3.labelChange(_objectSpread({}, from, {
435
+ return _this3.labelChange(_objectSpread(_objectSpread({}, from), {}, {
434
436
  label: label
435
437
  }), 'from');
436
438
  }
@@ -438,7 +440,7 @@ var lineBase = function lineBase(Comp, opts) {
438
440
  }
439
441
 
440
442
  if (to && to.hasOwnProperty('label')) {
441
- toLabelNode = _reactDom["default"].createPortal(_react["default"].createElement(_markLabel["default"], {
443
+ toLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
442
444
  inputRef: function inputRef(r) {
443
445
  return _this3.input.to = r;
444
446
  },
@@ -446,7 +448,7 @@ var lineBase = function lineBase(Comp, opts) {
446
448
  mark: to,
447
449
  graphProps: graphProps,
448
450
  onChange: function onChange(label) {
449
- return _this3.labelChange(_objectSpread({}, to, {
451
+ return _this3.labelChange(_objectSpread(_objectSpread({}, to), {}, {
450
452
  label: label
451
453
  }), 'to');
452
454
  }
@@ -454,7 +456,7 @@ var lineBase = function lineBase(Comp, opts) {
454
456
  }
455
457
 
456
458
  if (middle && middle.hasOwnProperty('label')) {
457
- lineLabelNode = _reactDom["default"].createPortal(_react["default"].createElement(_markLabel["default"], {
459
+ lineLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
458
460
  inputRef: function inputRef(r) {
459
461
  return _this3.input.middle = r;
460
462
  },
@@ -462,7 +464,7 @@ var lineBase = function lineBase(Comp, opts) {
462
464
  mark: middle,
463
465
  graphProps: graphProps,
464
466
  onChange: function onChange(label) {
465
- return _this3.labelChange(_objectSpread({}, middle, {
467
+ return _this3.labelChange(_objectSpread(_objectSpread({}, middle), {}, {
466
468
  label: label
467
469
  }), 'middle');
468
470
  }
@@ -470,7 +472,7 @@ var lineBase = function lineBase(Comp, opts) {
470
472
  }
471
473
  }
472
474
 
473
- return _react["default"].createElement("g", null, to && _react["default"].createElement(DraggableComp, _extends({
475
+ return /*#__PURE__*/_react["default"].createElement("g", null, to && /*#__PURE__*/_react["default"].createElement(DraggableComp, _extends({
474
476
  from: from,
475
477
  to: to,
476
478
  middle: middle,
@@ -479,7 +481,7 @@ var lineBase = function lineBase(Comp, opts) {
479
481
  onClick: labelModeEnabled ? function () {
480
482
  return _this3.clickPoint(middle, 'middle');
481
483
  } : common.onClick
482
- })), lineLabelNode, _react["default"].createElement(FromPoint, _extends({
484
+ })), lineLabelNode, /*#__PURE__*/_react["default"].createElement(FromPoint, _extends({
483
485
  x: from.x,
484
486
  y: from.y,
485
487
  labelNode: labelNode,
@@ -489,7 +491,7 @@ var lineBase = function lineBase(Comp, opts) {
489
491
  onClick: labelModeEnabled ? function () {
490
492
  return _this3.clickPoint(from, 'from');
491
493
  } : common.onClick
492
- })), fromLabelNode, to && _react["default"].createElement(ToPoint, _extends({
494
+ })), fromLabelNode, to && /*#__PURE__*/_react["default"].createElement(ToPoint, _extends({
493
495
  x: to.x,
494
496
  y: to.y,
495
497
  angle: angle //angle + 45}
@@ -551,7 +553,7 @@ var styles = {
551
553
  return _objectSpread({}, (0, _styles.disabled)());
552
554
  },
553
555
  disabled: function disabled() {
554
- return _objectSpread({}, (0, _styles.disabled)('stroke'), {
556
+ return _objectSpread(_objectSpread({}, (0, _styles.disabled)('stroke')), {}, {
555
557
  strokeWidth: 2
556
558
  });
557
559
  },
@@ -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","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,iCAAYA,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;AAAA;;AAME,+BAAYS,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,6FAAMA,KAAN;;AADiB,kEAKP;AAAA,eAAM,MAAKC,QAAL,CAAc;AAAEP,UAAAA,IAAI,oBAAO,MAAKM,KAAL,CAAWN,IAAlB;AAAN,SAAd,CAAN;AAAA,OALO;;AAAA,iEAOR,YAAM;AAAA,0BACY,MAAKM,KADjB;AAAA,YACPE,QADO,eACPA,QADO;AAAA,YACGR,IADH,eACGA,IADH;;AAEf,YAAMS,MAAM,qBAAQ,MAAKC,KAAL,CAAWV,IAAnB,CAAZ;;AAEA,cAAKO,QAAL,CAAc;AAAEP,UAAAA,IAAI,EAAEW;AAAR,SAAd,EAAmC,YAAM;AAAA,cAC/Bf,IAD+B,GACtBa,MADsB,CAC/Bb,IAD+B;AAEvC,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,qBAAQ,MAAKU,KAAL,CAAWV,IAAnB;AAAyBG,UAAAA,IAAI,EAAJA,IAAzB;AAA+BC,UAAAA,EAAE,EAAFA;AAA/B,UAAR;;AAEA,YAAIS,MAAJ,EAAY;AACVb,UAAAA,IAAI,qBAAQA,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;AAAA,2BACf,MAAKP,KADU;AAAA,YAClCE,QADkC,gBAClCA,QADkC;AAAA,YACxBR,IADwB,gBACxBA,IADwB;;AAE1C,YAAIS,MAAM,qBAAQT,IAAR,MAAiB,MAAKU,KAAL,CAAWV,IAA5B,CAAV;;AAEA,YAAIG,IAAJ,EAAU;AACRM,UAAAA,MAAM,qBAAQA,MAAR;AAAgBN,YAAAA,IAAI,EAAJA;AAAhB,YAAN;AACD;;AAED,YAAIC,EAAJ,EAAQ;AACNK,UAAAA,MAAM,qBAAQA,MAAR;AAAgBL,YAAAA,EAAE,EAAFA;AAAhB,YAAN;AACD;;AAED,YAAIS,MAAJ,EAAY;AACVJ,UAAAA,MAAM,qBAAQA,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,+BA2DW;AAAA,2BAC0E,KAAKJ,KAD/E;AAAA,YACCQ,UADD,gBACCA,UADD;AAAA,YACaC,OADb,gBACaA,OADb;AAAA,YACsBC,SADtB,gBACsBA,SADtB;AAAA,YACiCC,gBADjC,gBACiCA,gBADjC;AAAA,YACmDC,kBADnD,gBACmDA,kBADnD;AAEP,YAAMlB,IAAI,GAAG,KAAKU,KAAL,CAAWV,IAAX,GAAkB,KAAKU,KAAL,CAAWV,IAA7B,GAAoC,KAAKM,KAAL,CAAWN,IAA5D;AAEA,eACE,gCAAC,SAAD;AACE,UAAA,QAAQ,EAAEA,IAAI,CAACmB,QADjB;AAEE,UAAA,kBAAkB,EAAED,kBAFtB;AAGE,UAAA,WAAW,EAAElB,IAAI,CAACoB,WAHpB;AAIE,UAAA,IAAI,EAAEpB,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,KAAKO,UARjB;AASE,UAAA,eAAe,EAAE,KAAKC,eATxB;AAUE,UAAA,OAAO,EAAEP,OAVX;AAWE,UAAA,WAAW,EAAE,KAAKQ,SAXpB;AAYE,UAAA,UAAU,EAAE,KAAKC,QAZnB;AAaE,UAAA,SAAS,EAAER,SAbb;AAcE,UAAA,gBAAgB,EAAEC;AAdpB,UADF;AAkBD;AAjFH;;AAAA;AAAA,IAAuCQ,kBAAM5B,SAA7C,0DAEO6B,YAAMC,kBAFb;AAGIb,IAAAA,UAAU,EAAEY,YAAME,cAAN,CAAqBC;AAHrC;AAmFD,CApFM;;;;AAsFP,IAAMC,QAAQ,GAAG,SAAXA,QAAW;AAAA,SAAO;AACtBC,IAAAA,MAAM,EAAE,gBAACzB,KAAD,SAA8B;AAAA,UAApB0B,MAAoB,SAApBA,MAAoB;AAAA,UAAZC,KAAY,SAAZA,KAAY;;AACpC,UAAMC,IAAI,GAAGC,YAAMC,UAAN,CAAiB9B,KAAK,CAACH,IAAvB,EAA6BG,KAAK,CAACF,EAAnC,CAAb;;AACA,aAAO+B,YAAMJ,MAAN,CAAaG,IAAb,EAAmBF,MAAnB,EAA2BC,KAA3B,CAAP;AACD,KAJqB;AAKtBI,IAAAA,WAAW,EAAE,qBAAA/B,KAAK,EAAI;AAAA,UACZH,IADY,GACHG,KADG,CACZH,IADY;AAEpB,aAAOA,IAAP;AACD,KARqB;AAStBmC,IAAAA,SAAS,EAAE,mBAAChC,KAAD,EAAQiC,KAAR,EAAkB;AAAA,UACnBpC,IADmB,GACNG,KADM,CACnBH,IADmB;AAAA,UACbC,EADa,GACNE,KADM,CACbF,EADa;AAE3B,aAAO;AACLD,QAAAA,IAAI,EAAEgC,YAAMpC,KAAN,CAAYI,IAAZ,EAAkBqC,GAAlB,CAAsBL,YAAMpC,KAAN,CAAYwC,KAAZ,CAAtB,CADD;AAELnC,QAAAA,EAAE,EAAE+B,YAAMpC,KAAN,CAAYK,EAAZ,EAAgBoC,GAAhB,CAAoBL,YAAMpC,KAAN,CAAYwC,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,CAACxC,IAAb,GAAoBwC,IAAI,CAACxC,IAAzB,GAAgC2C,gBAAlD;AACA,MAAMC,OAAO,GAAGJ,IAAI,IAAIA,IAAI,CAACvC,EAAb,GAAkBuC,IAAI,CAACvC,EAAvB,GAA4B0C,gBAA5C;;AAJsC,MAMhCE,QANgC;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,uEAwBpB,UAAAjD,KAAK,EAAI;AAAA,2BACM,OAAKO,KADX;AAAA,YACfO,MADe,gBACfA,MADe;AAAA,YACPL,QADO,gBACPA,QADO;AAAA,YAEfL,IAFe,GAEFJ,KAFE,CAEfI,IAFe;AAAA,YAETC,EAFS,GAEFL,KAFE,CAETK,EAFS,EAIvB;;AACA,YAAI,CAAC,wBAAYD,IAAZ,EAAkBC,EAAlB,CAAL,EAA4B;AAC1B,cAAIS,MAAJ,EAAY;AACVd,YAAAA,KAAK,CAACc,MAAN,qBAAoBA,MAApB,MAA+B,iCAAqBV,IAArB,EAA2BC,EAA3B,CAA/B;AACD;;AAEDI,UAAAA,QAAQ,CAACT,KAAD,CAAR;AACD;AACF,OApCmC;;AAAA,kEAsCzB,iBAA0C;AAAA,YAAjCkD,WAAiC,SAAvC9C,IAAuC;AAAA,YAAhB+C,SAAgB,SAApB9C,EAAoB;AAAA,4BACZ,OAAKE,KADO;AAAA,YAC3CH,IAD2C,iBAC3CA,IAD2C;AAAA,YACrCC,EADqC,iBACrCA,EADqC;AAAA,YACjCI,QADiC,iBACjCA,QADiC;AAAA,YACvBK,MADuB,iBACvBA,MADuB;;AAGnD,YAAIV,IAAI,CAACgD,KAAT,EAAgB;AACdF,UAAAA,WAAW,CAACE,KAAZ,GAAoBhD,IAAI,CAACgD,KAAzB;AACD;;AAED,YAAI/C,EAAE,CAAC+C,KAAP,EAAc;AACZD,UAAAA,SAAS,CAACC,KAAV,GAAkB/C,EAAE,CAAC+C,KAArB;AACD;;AAED,YAAMC,OAAO,GAAG;AAAEjD,UAAAA,IAAI,EAAE8C,WAAR;AAAqB7C,UAAAA,EAAE,EAAE8C;AAAzB,SAAhB;;AAEA,YAAIrC,MAAJ,EAAY;AACVuC,UAAAA,OAAO,CAACvC,MAAR,qBAAsBA,MAAtB,MAAiC,iCAAqBoC,WAArB,EAAkCC,SAAlC,CAAjC;AACD;;AAED1C,QAAAA,QAAQ,CAAC4C,OAAD,CAAR;AACD,OAxDmC;;AAAA,kEA0DzB,UAAAH,WAAW,EAAI;AAAA,4BACH,OAAK3C,KADF;AAAA,YAChBH,IADgB,iBAChBA,IADgB;AAAA,YACVC,EADU,iBACVA,EADU;;AAGxB,YAAID,IAAI,CAACgD,KAAT,EAAgB;AACdF,UAAAA,WAAW,CAACE,KAAZ,GAAoBhD,IAAI,CAACgD,KAAzB;AACD;;AAED,YAAI,CAAC,wBAAYF,WAAZ,EAAyB7C,EAAzB,CAAL,EAAmC;AACjC,iBAAKiD,aAAL,CAAmB;AAAElD,YAAAA,IAAI,EAAE8C,WAAR;AAAqB7C,YAAAA,EAAE,EAAEA;AAAzB,WAAnB;AACD;AACF,OApEmC;;AAAA,gEAsE3B,UAAA8C,SAAS,EAAI;AAAA,4BACC,OAAK5C,KADN;AAAA,YACZH,IADY,iBACZA,IADY;AAAA,YACNC,EADM,iBACNA,EADM;;AAGpB,YAAIA,EAAE,CAAC+C,KAAP,EAAc;AACZD,UAAAA,SAAS,CAACC,KAAV,GAAkB/C,EAAE,CAAC+C,KAArB;AACD;;AAED,YAAI,CAAC,wBAAYhD,IAAZ,EAAkB+C,SAAlB,CAAL,EAAmC;AACjC,iBAAKG,aAAL,CAAmB;AAAElD,YAAAA,IAAI,EAAEA,IAAR;AAAcC,YAAAA,EAAE,EAAE8C;AAAlB,WAAnB;AACD;AACF,OAhFmC;;AAAA,qEAkFtB,UAACnD,KAAD,EAAQH,IAAR,EAAiB;AAAA,YACrB0B,eADqB,GACD,OAAKhB,KADJ,CACrBgB,eADqB;;AAE7B,YAAMb,MAAM,qBAAQV,KAAR,CAAZ;;AAEA,YAAI,CAACA,KAAK,CAACoD,KAAP,IAAgB,yBAAQpD,KAAK,CAACoD,KAAd,CAApB,EAA0C;AACxC,iBAAO1C,MAAM,CAAC0C,KAAd;AACD;;AAED7B,QAAAA,eAAe,qBAAI1B,IAAJ,EAAWa,MAAX,EAAf;AACD,OA3FmC;;AAAA,oEA6FvB,UAACV,KAAD,EAAQH,IAAR,EAAiB;AAAA,4BACU,OAAKU,KADf;AAAA,YACpBgB,eADoB,iBACpBA,eADoB;AAAA,YACHnB,IADG,iBACHA,IADG;AAAA,YACGC,EADH,iBACGA,EADH;;AAG5B,YAAIR,IAAI,KAAK,QAAT,IAAqB,CAACG,KAAtB,IAA+BI,IAA/B,IAAuCC,EAA3C,EAA+C;AAC7CL,UAAAA,KAAK,qBAAQA,KAAR,MAAkB,iCAAqBI,IAArB,EAA2BC,EAA3B,CAAlB,CAAL;AACD;;AAEDkB,QAAAA,eAAe;AAAGnB,UAAAA,IAAI,EAAJA,IAAH;AAASC,UAAAA,EAAE,EAAFA;AAAT,WAAcR,IAAd;AAAuBuD,UAAAA,KAAK,EAAE;AAA9B,WAAqCpD,KAArC,GAAf;;AAEA,YAAI,OAAKuD,KAAL,CAAW1D,IAAX,CAAJ,EAAsB;AACpB,iBAAK0D,KAAL,CAAW1D,IAAX,EAAiB2D,KAAjB;AACD;AACF,OAzGmC;;AAAA,+DA4G5B,EA5G4B;;AAAA;AAAA;;AAAA;AAAA;AAAA,+BA8G3B;AAAA;;AAAA,2BAcH,KAAKjD,KAdF;AAAA,YAELY,kBAFK,gBAELA,kBAFK;AAAA,YAGLJ,UAHK,gBAGLA,UAHK;AAAA,YAIL0C,WAJK,gBAILA,WAJK;AAAA,YAKLC,UALK,gBAKLA,UALK;AAAA,YAMLtD,IANK,gBAMLA,IANK;AAAA,YAOLC,EAPK,gBAOLA,EAPK;AAAA,YAQLS,MARK,gBAQLA,MARK;AAAA,YASLM,QATK,gBASLA,QATK;AAAA,YAULC,WAVK,gBAULA,WAVK;AAAA,YAWLL,OAXK,gBAWLA,OAXK;AAAA,YAYLC,SAZK,gBAYLA,SAZK;AAAA,YAaLC,gBAbK,gBAaLA,gBAbK;AAeP,YAAMyC,MAAM,GAAG;AAAE5C,UAAAA,UAAU,EAAVA,UAAF;AAAc0C,UAAAA,WAAW,EAAXA,WAAd;AAA2BC,UAAAA,UAAU,EAAVA,UAA3B;AAAuCtC,UAAAA,QAAQ,EAARA,QAAvC;AAAiDC,UAAAA,WAAW,EAAXA,WAAjD;AAA8DL,UAAAA,OAAO,EAAPA;AAA9D,SAAf;AACA,YAAM4C,KAAK,GAAGvD,EAAE,GAAGwD,WAAKC,SAAL,CAAeD,WAAKD,KAAL,CAAWxD,IAAX,EAAiBC,EAAjB,CAAf,CAAH,GAA0C,CAA1D;AAEA,YAAI0D,aAAa,GAAG,IAApB;AACA,YAAIC,WAAW,GAAG,IAAlB;AACA,YAAIC,aAAa,GAAG,IAApB;;AAEA,YAAIhD,SAAJ,EAAe;AACb,cAAIb,IAAI,IAAIA,IAAI,CAAC8D,cAAL,CAAoB,OAApB,CAAZ,EAA0C;AACxCH,YAAAA,aAAa,GAAGI,qBAASC,YAAT,CACd,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAWnD,IAAX,GAAkBiE,CAAvB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACnD,gBAFb;AAGE,cAAA,IAAI,EAAEd,IAHR;AAIE,cAAA,UAAU,EAAEW,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAqC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,mBAAsBlE,IAAtB;AAA4BgD,kBAAAA,KAAK,EAALA;AAA5B,oBAAqC,MAArC,CAAJ;AAAA;AALjB,cADc,EAQdnC,SARc,CAAhB;AAUD;;AAED,cAAIZ,EAAE,IAAIA,EAAE,CAAC6D,cAAH,CAAkB,OAAlB,CAAV,EAAsC;AACpCF,YAAAA,WAAW,GAAGG,qBAASC,YAAT,CACZ,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAWlD,EAAX,GAAgBgE,CAArB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACnD,gBAFb;AAGE,cAAA,IAAI,EAAEb,EAHR;AAIE,cAAA,UAAU,EAAEU,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAqC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,mBAAsBjE,EAAtB;AAA0B+C,kBAAAA,KAAK,EAALA;AAA1B,oBAAmC,IAAnC,CAAJ;AAAA;AALjB,cADY,EAQZnC,SARY,CAAd;AAUD;;AAED,cAAIH,MAAM,IAAIA,MAAM,CAACoD,cAAP,CAAsB,OAAtB,CAAd,EAA8C;AAC5CD,YAAAA,aAAa,GAAGE,qBAASC,YAAT,CACd,gCAAC,qBAAD;AACE,cAAA,QAAQ,EAAE,kBAAAC,CAAC;AAAA,uBAAK,MAAI,CAACd,KAAL,CAAWzC,MAAX,GAAoBuD,CAAzB;AAAA,eADb;AAEE,cAAA,QAAQ,EAAE,CAACnD,gBAFb;AAGE,cAAA,IAAI,EAAEJ,MAHR;AAIE,cAAA,UAAU,EAAEC,UAJd;AAKE,cAAA,QAAQ,EAAE,kBAAAqC,KAAK;AAAA,uBAAI,MAAI,CAACkB,WAAL,mBAAsBxD,MAAtB;AAA8BsC,kBAAAA,KAAK,EAALA;AAA9B,oBAAuC,QAAvC,CAAJ;AAAA;AALjB,cADc,EAQdnC,SARc,CAAhB;AAUD;AACF;;AAED,eACE,2CACGZ,EAAE,IACD,gCAAC,aAAD;AACE,UAAA,IAAI,EAAED,IADR;AAEE,UAAA,EAAE,EAAEC,EAFN;AAGE,UAAA,MAAM,EAAES,MAHV;AAIE,UAAA,MAAM,EAAE,KAAKyD;AAJf,WAKMZ,MALN;AAME,UAAA,OAAO,EAAEzC,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACsD,UAAL,CAAgB1D,MAAhB,EAAwB,QAAxB,CAAN;AAAA,WAAH,GAA6C6C,MAAM,CAAC3C;AAN/E,WAFJ,EAWGiD,aAXH,EAaE,gCAAC,SAAD;AACE,UAAA,CAAC,EAAE7D,IAAI,CAACqE,CADV;AAEE,UAAA,CAAC,EAAErE,IAAI,CAACsE,CAFV;AAGE,UAAA,SAAS,EAAEzD,SAHb;AAIE,UAAA,kBAAkB,EAAEE,kBAJtB;AAKE,UAAA,MAAM,EAAE,KAAKwD;AALf,WAMMhB,MANN;AAOE,UAAA,OAAO,EAAEzC,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACsD,UAAL,CAAgBpE,IAAhB,EAAsB,MAAtB,CAAN;AAAA,WAAH,GAAyCuD,MAAM,CAAC3C;AAP3E,WAbF,EAsBG+C,aAtBH,EAwBG1D,EAAE,IACD,gCAAC,OAAD;AACE,UAAA,CAAC,EAAEA,EAAE,CAACoE,CADR;AAEE,UAAA,CAAC,EAAEpE,EAAE,CAACqE,CAFR;AAGE,UAAA,KAAK,EAAEd,KAHT,CAGgB;AAHhB;AAIE,UAAA,SAAS,EAAE3C,SAJb;AAKE,UAAA,kBAAkB,EAAEE,kBALtB;AAME,UAAA,MAAM,EAAE,KAAKyD;AANf,WAOMjB,MAPN;AAQE,UAAA,OAAO,EAAEzC,gBAAgB,GAAG;AAAA,mBAAM,MAAI,CAACsD,UAAL,CAAgBnE,EAAhB,EAAoB,IAApB,CAAN;AAAA,WAAH,GAAqCsD,MAAM,CAAC3C;AARvE,WAzBJ,EAoCGgD,WApCH,CADF;AAwCD;AArNmC;;AAAA;AAAA,IAMftC,kBAAM5B,SANS;;AAAA,kBAMhCmD,QANgC,eAOjB;AACjB9B,IAAAA,kBAAkB,EAAE0D,sBAAUC,IADb;AAEjB/D,IAAAA,UAAU,EAAEY,YAAME,cAFD;AAGjBzB,IAAAA,IAAI,EAAEuB,YAAMoD,SAHK;AAIjB1E,IAAAA,EAAE,EAAEsB,YAAMoD,SAJO;AAKjBjE,IAAAA,MAAM,EAAEa,YAAMoD,SALG;AAMjBtE,IAAAA,QAAQ,EAAEoE,sBAAUG,IANH;AAOjBvB,IAAAA,WAAW,EAAEoB,sBAAUG,IAPN;AAQjBtB,IAAAA,UAAU,EAAEmB,sBAAUG,IARL;AASjBhE,IAAAA,OAAO,EAAE6D,sBAAUG,IATF;AAUjB3D,IAAAA,WAAW,EAAEwD,sBAAUI,MAVN;AAWjB7D,IAAAA,QAAQ,EAAEyD,sBAAUC,IAXH;AAYjB7D,IAAAA,SAAS,EAAE4D,sBAAUK,MAZJ;AAajBhE,IAAAA,gBAAgB,EAAE2D,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,6BACL,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 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","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 { 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 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"}