@pie-lib/graphing 2.20.0 → 2.22.0

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 (133) hide show
  1. package/CHANGELOG.md +6 -10
  2. package/lib/axis/arrow.js +115 -0
  3. package/lib/axis/arrow.js.map +1 -0
  4. package/lib/axis/axes.js +415 -0
  5. package/lib/axis/axes.js.map +1 -0
  6. package/lib/axis/index.js +26 -0
  7. package/lib/axis/index.js.map +1 -0
  8. package/lib/bg.js +139 -0
  9. package/lib/bg.js.map +1 -0
  10. package/lib/container/actions.js +24 -0
  11. package/lib/container/actions.js.map +1 -0
  12. package/lib/container/index.js +163 -0
  13. package/lib/container/index.js.map +1 -0
  14. package/lib/container/marks.js +27 -0
  15. package/lib/container/marks.js.map +1 -0
  16. package/lib/container/middleware.js +25 -0
  17. package/lib/container/middleware.js.map +1 -0
  18. package/lib/container/reducer.js +25 -0
  19. package/lib/container/reducer.js.map +1 -0
  20. package/lib/coordinates-label.js +109 -0
  21. package/lib/coordinates-label.js.map +1 -0
  22. package/lib/graph-with-controls.js +359 -0
  23. package/lib/graph-with-controls.js.map +1 -0
  24. package/lib/graph.js +371 -0
  25. package/lib/graph.js.map +1 -0
  26. package/lib/grid-setup.js +462 -0
  27. package/lib/grid-setup.js.map +1 -0
  28. package/lib/grid.js +176 -0
  29. package/lib/grid.js.map +1 -0
  30. package/lib/index.js +59 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/key-legend.js +246 -0
  33. package/lib/key-legend.js.map +1 -0
  34. package/lib/label-svg-icon.js +56 -0
  35. package/lib/label-svg-icon.js.map +1 -0
  36. package/lib/labels.js +299 -0
  37. package/lib/labels.js.map +1 -0
  38. package/lib/mark-label.js +321 -0
  39. package/lib/mark-label.js.map +1 -0
  40. package/lib/toggle-bar.js +336 -0
  41. package/lib/toggle-bar.js.map +1 -0
  42. package/lib/tool-menu.js +112 -0
  43. package/lib/tool-menu.js.map +1 -0
  44. package/lib/tools/absolute/component.js +35 -0
  45. package/lib/tools/absolute/component.js.map +1 -0
  46. package/lib/tools/absolute/index.js +63 -0
  47. package/lib/tools/absolute/index.js.map +1 -0
  48. package/lib/tools/circle/bg-circle.js +173 -0
  49. package/lib/tools/circle/bg-circle.js.map +1 -0
  50. package/lib/tools/circle/component.js +406 -0
  51. package/lib/tools/circle/component.js.map +1 -0
  52. package/lib/tools/circle/index.js +51 -0
  53. package/lib/tools/circle/index.js.map +1 -0
  54. package/lib/tools/exponential/component.js +34 -0
  55. package/lib/tools/exponential/component.js.map +1 -0
  56. package/lib/tools/exponential/index.js +71 -0
  57. package/lib/tools/exponential/index.js.map +1 -0
  58. package/lib/tools/index.js +99 -0
  59. package/lib/tools/index.js.map +1 -0
  60. package/lib/tools/line/component.js +103 -0
  61. package/lib/tools/line/component.js.map +1 -0
  62. package/lib/tools/line/index.js +16 -0
  63. package/lib/tools/line/index.js.map +1 -0
  64. package/lib/tools/parabola/component.js +34 -0
  65. package/lib/tools/parabola/component.js.map +1 -0
  66. package/lib/tools/parabola/index.js +63 -0
  67. package/lib/tools/parabola/index.js.map +1 -0
  68. package/lib/tools/point/component.js +186 -0
  69. package/lib/tools/point/component.js.map +1 -0
  70. package/lib/tools/point/index.js +32 -0
  71. package/lib/tools/point/index.js.map +1 -0
  72. package/lib/tools/polygon/component.js +518 -0
  73. package/lib/tools/polygon/component.js.map +1 -0
  74. package/lib/tools/polygon/index.js +106 -0
  75. package/lib/tools/polygon/index.js.map +1 -0
  76. package/lib/tools/polygon/line.js +157 -0
  77. package/lib/tools/polygon/line.js.map +1 -0
  78. package/lib/tools/polygon/polygon.js +165 -0
  79. package/lib/tools/polygon/polygon.js.map +1 -0
  80. package/lib/tools/ray/component.js +102 -0
  81. package/lib/tools/ray/component.js.map +1 -0
  82. package/lib/tools/ray/index.js +16 -0
  83. package/lib/tools/ray/index.js.map +1 -0
  84. package/lib/tools/segment/component.js +75 -0
  85. package/lib/tools/segment/component.js.map +1 -0
  86. package/lib/tools/segment/index.js +16 -0
  87. package/lib/tools/segment/index.js.map +1 -0
  88. package/lib/tools/shared/arrow-head.js +70 -0
  89. package/lib/tools/shared/arrow-head.js.map +1 -0
  90. package/lib/tools/shared/icons/CorrectSVG.js +36 -0
  91. package/lib/tools/shared/icons/CorrectSVG.js.map +1 -0
  92. package/lib/tools/shared/icons/IncorrectSVG.js +36 -0
  93. package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -0
  94. package/lib/tools/shared/icons/MissingSVG.js +35 -0
  95. package/lib/tools/shared/icons/MissingSVG.js.map +1 -0
  96. package/lib/tools/shared/line/index.js +599 -0
  97. package/lib/tools/shared/line/index.js.map +1 -0
  98. package/lib/tools/shared/line/line-path.js +151 -0
  99. package/lib/tools/shared/line/line-path.js.map +1 -0
  100. package/lib/tools/shared/line/with-root-edge.js +155 -0
  101. package/lib/tools/shared/line/with-root-edge.js.map +1 -0
  102. package/lib/tools/shared/point/arrow-point.js +113 -0
  103. package/lib/tools/shared/point/arrow-point.js.map +1 -0
  104. package/lib/tools/shared/point/arrow.js +96 -0
  105. package/lib/tools/shared/point/arrow.js.map +1 -0
  106. package/lib/tools/shared/point/base-point.js +175 -0
  107. package/lib/tools/shared/point/base-point.js.map +1 -0
  108. package/lib/tools/shared/point/index.js +97 -0
  109. package/lib/tools/shared/point/index.js.map +1 -0
  110. package/lib/tools/shared/styles.js +58 -0
  111. package/lib/tools/shared/styles.js.map +1 -0
  112. package/lib/tools/shared/types.js +23 -0
  113. package/lib/tools/shared/types.js.map +1 -0
  114. package/lib/tools/sine/component.js +51 -0
  115. package/lib/tools/sine/component.js.map +1 -0
  116. package/lib/tools/sine/index.js +63 -0
  117. package/lib/tools/sine/index.js.map +1 -0
  118. package/lib/tools/vector/component.js +88 -0
  119. package/lib/tools/vector/component.js.map +1 -0
  120. package/lib/tools/vector/index.js +16 -0
  121. package/lib/tools/vector/index.js.map +1 -0
  122. package/lib/undo-redo.js +123 -0
  123. package/lib/undo-redo.js.map +1 -0
  124. package/lib/use-debounce.js +32 -0
  125. package/lib/use-debounce.js.map +1 -0
  126. package/lib/utils.js +307 -0
  127. package/lib/utils.js.map +1 -0
  128. package/package.json +8 -9
  129. package/src/__tests__/graph-with-controls.test.jsx +1 -1
  130. package/src/__tests__/graph.test.jsx +1 -1
  131. package/src/tools/line/__tests__/component.test.jsx +2 -2
  132. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +2 -2
  133. package/src/tools/shared/point/__tests__/base-point.test.jsx +2 -2
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.position = exports["default"] = exports.coordinates = exports.MarkLabel = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _styles = require("@material-ui/core/styles");
23
+
24
+ var _reactInputAutosize = _interopRequireDefault(require("react-input-autosize"));
25
+
26
+ var _useDebounce = require("./use-debounce");
27
+
28
+ var _plot = require("@pie-lib/plot");
29
+
30
+ var _renderUi = require("@pie-lib/render-ui");
31
+
32
+ var _labelSvgIcon = _interopRequireDefault(require("./label-svg-icon"));
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ 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; }
39
+
40
+ 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) { (0, _defineProperty2["default"])(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; }
41
+
42
+ var inputStyles = function inputStyles(theme) {
43
+ return {
44
+ "float": 'right',
45
+ padding: theme.spacing.unit * 0.5,
46
+ borderRadius: '4px',
47
+ fontSize: '10px',
48
+ backgroundColor: _renderUi.color.defaults.WHITE
49
+ };
50
+ };
51
+
52
+ var styles = function styles(theme) {
53
+ return {
54
+ inputStudent: _objectSpread(_objectSpread({}, inputStyles(theme)), {}, {
55
+ padding: '0',
56
+ border: 'none',
57
+ color: 'inherit',
58
+ fontWeight: 'bold'
59
+ }),
60
+ input: {
61
+ "float": 'right',
62
+ padding: theme.spacing.unit * 0.5,
63
+ fontFamily: theme.typography.fontFamily,
64
+ fontSize: '10px',
65
+ border: "solid 1px ".concat(_renderUi.color.defaults.SECONDARY),
66
+ borderRadius: '3px',
67
+ color: _renderUi.color.defaults.PRIMARY_DARK,
68
+ backgroundColor: _renderUi.color.defaults.WHITE
69
+ },
70
+ disabled: {
71
+ border: "solid 1px ".concat(_renderUi.color.defaults.PRIMARY_DARK),
72
+ backgroundColor: _renderUi.color.defaults.WHITE,
73
+ '-webkit-opacity': '1'
74
+ },
75
+ disabledMark: {
76
+ border: "solid 1px ".concat(_renderUi.color.disabled()),
77
+ color: _renderUi.color.disabled(),
78
+ '-webkit-text-fill-color': _renderUi.color.disabled()
79
+ },
80
+ inputCorrect: _objectSpread(_objectSpread({}, inputStyles(theme)), {}, {
81
+ color: _renderUi.color.defaults.CORRECT_WITH_ICON,
82
+ border: "solid 1px ".concat(_renderUi.color.defaults.CORRECT_WITH_ICON)
83
+ }),
84
+ inputIncorrect: _objectSpread(_objectSpread({}, inputStyles(theme)), {}, {
85
+ color: _renderUi.color.defaults.INCORRECT_WITH_ICON,
86
+ border: "solid 1px ".concat(_renderUi.color.defaults.INCORRECT_WITH_ICON)
87
+ }),
88
+ inputMissing: _objectSpread(_objectSpread({}, inputStyles(theme)), {}, {
89
+ color: _renderUi.color.defaults.MISSING_WITH_ICON,
90
+ border: "solid 1px ".concat(_renderUi.color.defaults.MISSING_WITH_ICON),
91
+ fontWeight: 'bold'
92
+ }),
93
+ incorrect: _objectSpread(_objectSpread({}, inputStyles(theme)), {}, {
94
+ color: _renderUi.color.defaults.INCORRECT_WITH_ICON,
95
+ fontWeight: 'bold',
96
+ padding: '0'
97
+ })
98
+ };
99
+ };
100
+
101
+ var position = function position(graphProps, mark) {
102
+ var rect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
103
+ width: 0,
104
+ height: 0
105
+ };
106
+ var scale = graphProps.scale,
107
+ domain = graphProps.domain,
108
+ range = graphProps.range;
109
+ var shift = 5;
110
+ var rightEdge = scale.x(mark.x) + rect.width + shift;
111
+ var bottomEdge = scale.y(mark.y) + rect.height + shift;
112
+ var h = rightEdge >= scale.x(domain.max) ? 'left' : 'right';
113
+ var v = bottomEdge >= scale.y(range.min) ? 'top' : 'bottom';
114
+ return "".concat(v, "-").concat(h);
115
+ };
116
+
117
+ exports.position = position;
118
+
119
+ var coordinates = function coordinates(graphProps, mark) {
120
+ var rect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
121
+ width: 0,
122
+ height: 0
123
+ };
124
+ var position = arguments.length > 3 ? arguments[3] : undefined;
125
+ var scale = graphProps.scale;
126
+ var shift = 5;
127
+
128
+ switch (position) {
129
+ case 'bottom-right':
130
+ return {
131
+ left: scale.x(mark.x) + shift,
132
+ top: scale.y(mark.y) + shift
133
+ };
134
+
135
+ case 'bottom-left':
136
+ return {
137
+ left: scale.x(mark.x) - shift - rect.width,
138
+ top: scale.y(mark.y) + shift
139
+ };
140
+
141
+ case 'top-left':
142
+ return {
143
+ left: scale.x(mark.x) - shift - rect.width,
144
+ top: scale.y(mark.y) - shift - rect.height
145
+ };
146
+
147
+ case 'top-right':
148
+ return {
149
+ left: scale.x(mark.x) + shift,
150
+ top: scale.y(mark.y) - shift - rect.height
151
+ };
152
+
153
+ default:
154
+ return {};
155
+ }
156
+ };
157
+
158
+ exports.coordinates = coordinates;
159
+
160
+ var LabelInput = function LabelInput(_ref2) {
161
+ var _ref = _ref2._ref,
162
+ externalInputRef = _ref2.externalInputRef,
163
+ label = _ref2.label,
164
+ disabled = _ref2.disabled,
165
+ inputClassName = _ref2.inputClassName,
166
+ onChange = _ref2.onChange;
167
+ return /*#__PURE__*/_react["default"].createElement(_reactInputAutosize["default"], {
168
+ inputRef: function inputRef(r) {
169
+ _ref(r);
170
+
171
+ externalInputRef(r);
172
+ },
173
+ disabled: disabled,
174
+ inputClassName: inputClassName,
175
+ value: label,
176
+ onChange: onChange
177
+ });
178
+ };
179
+
180
+ var MarkLabel = function MarkLabel(props) {
181
+ var _cn;
182
+
183
+ var _useState = (0, _react.useState)(null),
184
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
185
+ input = _useState2[0],
186
+ setInput = _useState2[1];
187
+
188
+ var _ref = (0, _react.useCallback)(function (node) {
189
+ return setInput(node);
190
+ });
191
+
192
+ var mark = props.mark,
193
+ graphProps = props.graphProps,
194
+ classes = props.classes,
195
+ disabled = props.disabled,
196
+ externalInputRef = props.inputRef,
197
+ theme = props.theme;
198
+
199
+ var _useState3 = (0, _react.useState)(mark.label),
200
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
201
+ label = _useState4[0],
202
+ setLabel = _useState4[1];
203
+
204
+ var correctness = mark.correctness,
205
+ correctnesslabel = mark.correctnesslabel,
206
+ correctlabel = mark.correctlabel;
207
+
208
+ var onChange = function onChange(e) {
209
+ return setLabel(e.target.value);
210
+ };
211
+
212
+ var debouncedLabel = (0, _useDebounce.useDebounce)(label, 200); // useState only sets the value once, to synch props to state need useEffect
213
+
214
+ (0, _react.useEffect)(function () {
215
+ setLabel(mark.label);
216
+ }, [mark.label]); // pick up the change to debouncedLabel and save it
217
+
218
+ (0, _react.useEffect)(function () {
219
+ if (typeof debouncedLabel === 'string' && debouncedLabel !== mark.label) {
220
+ props.onChange(debouncedLabel);
221
+ }
222
+ }, [debouncedLabel]);
223
+ var rect = input ? input.getBoundingClientRect() : {
224
+ width: 0,
225
+ height: 0
226
+ };
227
+ var pos = position(graphProps, mark, rect);
228
+ var leftTop = coordinates(graphProps, mark, rect, pos);
229
+
230
+ var style = _objectSpread({
231
+ position: 'fixed',
232
+ pointerEvents: 'auto',
233
+ display: 'flex',
234
+ alignItems: 'center',
235
+ gap: '3px'
236
+ }, leftTop);
237
+
238
+ var secondLabelStyle = _objectSpread(_objectSpread({}, style), {}, {
239
+ top: leftTop.top + 25
240
+ });
241
+
242
+ var disabledInput = disabled || mark.disabled;
243
+
244
+ var renderInput = function renderInput(inputClass, labelValue) {
245
+ return /*#__PURE__*/_react["default"].createElement(LabelInput, {
246
+ _ref: _ref,
247
+ externalInputRef: externalInputRef,
248
+ label: labelValue,
249
+ disabled: disabledInput,
250
+ inputClassName: (0, _classnames["default"])(inputClass),
251
+ onChange: onChange
252
+ });
253
+ };
254
+
255
+ if (correctness === 'correct' && correctnesslabel === 'correct' && correctlabel) {
256
+ return /*#__PURE__*/_react["default"].createElement("div", {
257
+ className: classes.inputCorrect,
258
+ style: style
259
+ }, /*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
260
+ type: "correct"
261
+ }), renderInput(classes.inputStudent, correctlabel));
262
+ } // avoid rendering empty label when a correct point without label was provided
263
+
264
+
265
+ if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {
266
+ return null;
267
+ }
268
+
269
+ if (correctness === 'correct' && correctnesslabel === 'incorrect') {
270
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
271
+ className: classes.inputIncorrect,
272
+ style: style
273
+ }, /*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
274
+ type: "incorrect"
275
+ }), label === '' ? /*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
276
+ type: "empty",
277
+ style: {
278
+ marginLeft: '3px'
279
+ }
280
+ }) : renderInput(classes.inputStudent, label)), /*#__PURE__*/_react["default"].createElement("div", {
281
+ className: classes.inputMissing,
282
+ style: secondLabelStyle
283
+ }, renderInput(classes.inputStudent, correctlabel)));
284
+ }
285
+
286
+ if (correctness === 'missing') {
287
+ return /*#__PURE__*/_react["default"].createElement("div", {
288
+ className: classes.inputMissing,
289
+ style: style
290
+ }, renderInput(classes.inputStudent, label));
291
+ }
292
+
293
+ if (correctness === 'incorrect') {
294
+ return /*#__PURE__*/_react["default"].createElement("div", {
295
+ className: classes.incorrect,
296
+ style: style
297
+ }, renderInput(classes.inputStudent, label));
298
+ }
299
+
300
+ return /*#__PURE__*/_react["default"].createElement("div", {
301
+ style: style
302
+ }, renderInput((0, _classnames["default"])(classes.input, (_cn = {}, (0, _defineProperty2["default"])(_cn, classes.disabled, disabled), (0, _defineProperty2["default"])(_cn, classes.disabledMark, mark.disabled), _cn)), label));
303
+ };
304
+
305
+ exports.MarkLabel = MarkLabel;
306
+ MarkLabel.propTypes = {
307
+ disabled: _propTypes["default"].bool,
308
+ onChange: _propTypes["default"].func,
309
+ graphProps: _plot.types.GraphPropsType,
310
+ classes: _propTypes["default"].object,
311
+ inputRef: _propTypes["default"].func,
312
+ mark: _propTypes["default"].object,
313
+ theme: _propTypes["default"].object
314
+ };
315
+
316
+ var _default = (0, _styles.withStyles)(styles, {
317
+ withTheme: true
318
+ })(MarkLabel);
319
+
320
+ exports["default"] = _default;
321
+ //# sourceMappingURL=mark-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mark-label.jsx"],"names":["inputStyles","theme","padding","spacing","unit","borderRadius","fontSize","backgroundColor","color","defaults","WHITE","styles","inputStudent","border","fontWeight","input","fontFamily","typography","SECONDARY","PRIMARY_DARK","disabled","disabledMark","inputCorrect","CORRECT_WITH_ICON","inputIncorrect","INCORRECT_WITH_ICON","inputMissing","MISSING_WITH_ICON","incorrect","position","graphProps","mark","rect","width","height","scale","domain","range","shift","rightEdge","x","bottomEdge","y","h","max","v","min","coordinates","left","top","LabelInput","_ref","externalInputRef","label","inputClassName","onChange","r","MarkLabel","props","setInput","node","classes","inputRef","setLabel","correctness","correctnesslabel","correctlabel","e","target","value","debouncedLabel","getBoundingClientRect","pos","leftTop","style","pointerEvents","display","alignItems","gap","secondLabelStyle","disabledInput","renderInput","inputClass","labelValue","marginLeft","propTypes","PropTypes","bool","func","types","GraphPropsType","object","withTheme"],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport cn from 'classnames';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AutosizeInput from 'react-input-autosize';\nimport { useDebounce } from './use-debounce';\nimport { types } from '@pie-lib/plot';\nimport { color } from '@pie-lib/render-ui';\nimport SvgIcon from './label-svg-icon';\n\nconst inputStyles = (theme) => ({\n float: 'right',\n padding: theme.spacing.unit * 0.5,\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n});\n\nconst styles = (theme) => ({\n inputStudent: {\n ...inputStyles(theme),\n padding: '0',\n border: 'none',\n color: 'inherit',\n fontWeight: 'bold',\n },\n input: {\n float: 'right',\n padding: theme.spacing.unit * 0.5,\n fontFamily: theme.typography.fontFamily,\n fontSize: '10px',\n border: `solid 1px ${color.defaults.SECONDARY}`,\n borderRadius: '3px',\n color: color.defaults.PRIMARY_DARK,\n backgroundColor: color.defaults.WHITE,\n },\n disabled: {\n border: `solid 1px ${color.defaults.PRIMARY_DARK}`,\n backgroundColor: color.defaults.WHITE,\n '-webkit-opacity': '1',\n },\n disabledMark: {\n border: `solid 1px ${color.disabled()}`,\n color: color.disabled(),\n '-webkit-text-fill-color': color.disabled(),\n },\n inputCorrect: {\n ...inputStyles(theme),\n color: color.defaults.CORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.CORRECT_WITH_ICON}`,\n },\n inputIncorrect: {\n ...inputStyles(theme),\n color: color.defaults.INCORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.INCORRECT_WITH_ICON}`,\n },\n inputMissing: {\n ...inputStyles(theme),\n color: color.defaults.MISSING_WITH_ICON,\n border: `solid 1px ${color.defaults.MISSING_WITH_ICON}`,\n fontWeight: 'bold',\n },\n incorrect: {\n ...inputStyles(theme),\n color: color.defaults.INCORRECT_WITH_ICON,\n fontWeight: 'bold',\n padding: '0',\n },\n});\n\nexport const position = (graphProps, mark, rect = { width: 0, height: 0 }) => {\n const { scale, domain, range } = graphProps;\n const shift = 5;\n\n const rightEdge = scale.x(mark.x) + rect.width + shift;\n const bottomEdge = scale.y(mark.y) + rect.height + shift;\n\n const h = rightEdge >= scale.x(domain.max) ? 'left' : 'right';\n const v = bottomEdge >= scale.y(range.min) ? 'top' : 'bottom';\n\n return `${v}-${h}`;\n};\n\nexport const coordinates = (graphProps, mark, rect = { width: 0, height: 0 }, position) => {\n const { scale } = graphProps;\n const shift = 5;\n\n switch (position) {\n case 'bottom-right':\n return { left: scale.x(mark.x) + shift, top: scale.y(mark.y) + shift };\n case 'bottom-left':\n return { left: scale.x(mark.x) - shift - rect.width, top: scale.y(mark.y) + shift };\n case 'top-left':\n return { left: scale.x(mark.x) - shift - rect.width, top: scale.y(mark.y) - shift - rect.height };\n case 'top-right':\n return { left: scale.x(mark.x) + shift, top: scale.y(mark.y) - shift - rect.height };\n default:\n return {};\n }\n};\n\nconst LabelInput = ({ _ref, externalInputRef, label, disabled, inputClassName, onChange }) => (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n externalInputRef(r);\n }}\n disabled={disabled}\n inputClassName={inputClassName}\n value={label}\n onChange={onChange}\n />\n);\n\nexport const MarkLabel = (props) => {\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node));\n\n const { mark, graphProps, classes, disabled, inputRef: externalInputRef, theme } = props;\n\n const [label, setLabel] = useState(mark.label);\n const { correctness, correctnesslabel, correctlabel } = mark;\n const onChange = (e) => setLabel(e.target.value);\n\n const debouncedLabel = useDebounce(label, 200);\n\n // useState only sets the value once, to synch props to state need useEffect\n useEffect(() => {\n setLabel(mark.label);\n }, [mark.label]);\n\n // pick up the change to debouncedLabel and save it\n useEffect(() => {\n if (typeof debouncedLabel === 'string' && debouncedLabel !== mark.label) {\n props.onChange(debouncedLabel);\n }\n }, [debouncedLabel]);\n\n const rect = input ? input.getBoundingClientRect() : { width: 0, height: 0 };\n const pos = position(graphProps, mark, rect);\n const leftTop = coordinates(graphProps, mark, rect, pos);\n\n const style = {\n position: 'fixed',\n pointerEvents: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: '3px',\n ...leftTop,\n };\n\n const secondLabelStyle = {\n ...style,\n top: leftTop.top + 25,\n };\n\n const disabledInput = disabled || mark.disabled;\n\n const renderInput = (inputClass, labelValue) => (\n <LabelInput\n _ref={_ref}\n externalInputRef={externalInputRef}\n label={labelValue}\n disabled={disabledInput}\n inputClassName={cn(inputClass)}\n onChange={onChange}\n />\n );\n\n if (correctness === 'correct' && correctnesslabel === 'correct' && correctlabel) {\n return (\n <div className={classes.inputCorrect} style={style}>\n <SvgIcon type=\"correct\" />\n {renderInput(classes.inputStudent, correctlabel)}\n </div>\n );\n }\n\n // avoid rendering empty label when a correct point without label was provided\n if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {\n return null;\n }\n\n if (correctness === 'correct' && correctnesslabel === 'incorrect') {\n return (\n <>\n <div className={classes.inputIncorrect} style={style}>\n <SvgIcon type=\"incorrect\" />\n {label === '' ? (\n <SvgIcon type=\"empty\" style={{ marginLeft: '3px' }} />\n ) : (\n renderInput(classes.inputStudent, label)\n )}\n </div>\n <div className={classes.inputMissing} style={secondLabelStyle}>\n {renderInput(classes.inputStudent, correctlabel)}\n </div>\n </>\n );\n }\n\n if (correctness === 'missing') {\n return (\n <div className={classes.inputMissing} style={style}>\n {renderInput(classes.inputStudent, label)}\n </div>\n );\n }\n\n if (correctness === 'incorrect') {\n return (\n <div className={classes.incorrect} style={style}>\n {renderInput(classes.inputStudent, label)}\n </div>\n );\n }\n\n return (\n <div style={style}>\n {renderInput(\n cn(classes.input, {\n [classes.disabled]: disabled,\n [classes.disabledMark]: mark.disabled,\n }),\n label,\n )}\n </div>\n );\n};\n\nMarkLabel.propTypes = {\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n classes: PropTypes.object,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n theme: PropTypes.object,\n};\n\nexport default withStyles(styles, { withTheme: true })(MarkLabel);\n"],"file":"mark-label.js"}