@pie-lib/graphing 4.0.15 → 4.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.0.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@4.0.15...@pie-lib/graphing@4.0.16) (2026-08-18)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **graphing:** keep label input focused while it is being edited PIE-681 ([9c836f5](https://github.com/pie-framework/pie-lib/commit/9c836f5ab2437be4e48665426f3656561050c590))
11
+
6
12
  ## [4.0.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@4.0.14...@pie-lib/graphing@4.0.15) (2026-08-13)
7
13
 
8
14
  **Note:** Version bump only for package @pie-lib/graphing
package/lib/mark-label.js CHANGED
@@ -19,6 +19,7 @@ var _labelSvgIcon = _interopRequireDefault(require("./label-svg-icon"));
19
19
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
20
20
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
21
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ var DEBOUNCE_DELAY = 500;
22
23
  var StyledInputCorrect = (0, _styles.styled)('div')(function (_ref2) {
23
24
  var theme = _ref2.theme;
24
25
  return {
@@ -178,6 +179,7 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
178
179
  var mark = props.mark,
179
180
  graphProps = props.graphProps,
180
181
  disabled = props.disabled,
182
+ autoFocus = props.autoFocus,
181
183
  externalInputRef = props.inputRef;
182
184
  var _useState3 = (0, _react.useState)(mark.label),
183
185
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
@@ -186,6 +188,9 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
186
188
  var correctness = mark.correctness,
187
189
  correctnesslabel = mark.correctnesslabel,
188
190
  correctlabel = mark.correctlabel;
191
+ var isFocused = function isFocused() {
192
+ return !!input && typeof document !== 'undefined' && document.activeElement === input;
193
+ };
189
194
  var onChange = function onChange(e) {
190
195
  return setLabel(e.target.value);
191
196
  };
@@ -193,11 +198,21 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
193
198
  if (label === '') {
194
199
  props.onChange('');
195
200
  }
196
- }, [label, props.onChange]);
197
- var debouncedLabel = (0, _useDebounce.useDebounce)(label, 200);
198
201
 
199
- // useState only sets the value once, to synch props to state need useEffect
202
+ // lets the tool know that this label is not being edited anymore, so it stops auto focusing it
203
+ if (props.onBlur) {
204
+ props.onBlur();
205
+ }
206
+ }, [label, props.onChange, props.onBlur]);
207
+ var debouncedLabel = (0, _useDebounce.useDebounce)(label, DEBOUNCE_DELAY);
208
+
209
+ // useState only sets the value once, to synch props to state need useEffect.
210
+ // While this input has the focus we keep what the user typed: the mark can come back from an
211
+ // (async) model save with an older label and that would overwrite the characters typed meanwhile.
200
212
  (0, _react.useEffect)(function () {
213
+ if (isFocused()) {
214
+ return;
215
+ }
201
216
  setLabel(mark.label);
202
217
  }, [mark.label]);
203
218
 
@@ -207,6 +222,22 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
207
222
  props.onChange(debouncedLabel);
208
223
  }
209
224
  }, [debouncedLabel]);
225
+
226
+ // A label that has just been added has to be focused so that it can be typed into right away.
227
+ // This also re-focuses the input if it gets remounted while it is being edited - saving the model
228
+ // is done by the host (api call) and the model that comes back can replace the input node.
229
+ (0, _react.useEffect)(function () {
230
+ if (!autoFocus || !input || disabled || isFocused()) {
231
+ return;
232
+ }
233
+ input.focus();
234
+
235
+ // keep the caret at the end, otherwise typing continues in front of the existing label
236
+ var caret = (input.value || '').length;
237
+ if (input.setSelectionRange) {
238
+ input.setSelectionRange(caret, caret);
239
+ }
240
+ }, [autoFocus, input, disabled]);
210
241
  var rect = input ? input.getBoundingClientRect() : {
211
242
  width: 0,
212
243
  height: 0
@@ -275,7 +306,9 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
275
306
  }, renderInput(getInputStyles(theme, disabled, mark.disabled), label));
276
307
  };
277
308
  MarkLabel.propTypes = {
309
+ autoFocus: _propTypes["default"].bool,
278
310
  disabled: _propTypes["default"].bool,
311
+ onBlur: _propTypes["default"].func,
279
312
  onChange: _propTypes["default"].func,
280
313
  graphProps: _plot.types.GraphPropsType,
281
314
  inputRef: _propTypes["default"].func,
@@ -1 +1 @@
1
- {"version":3,"file":"mark-label.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_styles","_reactInputAutosize","_useDebounce","_plot","_renderUi","_labelSvgIcon","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","StyledInputCorrect","styled","_ref2","theme","padding","spacing","borderRadius","fontSize","backgroundColor","color","defaults","WHITE","CORRECT_WITH_ICON","border","concat","StyledInputIncorrect","_ref3","INCORRECT_WITH_ICON","StyledInputMissing","_ref4","MISSING_WITH_ICON","fontWeight","StyledIncorrect","getInputStyles","disabled","markDisabled","fontFamily","typography","PRIMARY_DARK","SECONDARY","WebkitOpacity","undefined","WebkitTextFillColor","getStudentInputStyles","position","exports","graphProps","mark","rect","width","height","scale","domain","range","shift","rightEdge","x","bottomEdge","y","h","max","v","min","coordinates","left","top","LabelInput","_ref5","_ref","externalInputRef","label","inputStyle","onChange","onBlur","createElement","inputRef","value","propTypes","PropTypes","func","string","bool","object","MarkLabel","props","_useState","useState","_useState2","_slicedToArray2","input","setInput","useCallback","node","useTheme","_useState3","_useState4","setLabel","correctness","correctnesslabel","correctlabel","target","handleBlur","debouncedLabel","useDebounce","useEffect","getBoundingClientRect","pos","leftTop","style","pointerEvents","display","alignItems","gap","secondLabelStyle","disabledInput","renderInput","labelValue","studentInputStyle","type","Fragment","marginLeft","types","GraphPropsType","_default"],"sources":["../src/mark-label.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, useTheme } from '@mui/material/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 StyledInputCorrect = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.CORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.CORRECT_WITH_ICON}`,\n}));\n\nconst StyledInputIncorrect = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.INCORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.INCORRECT_WITH_ICON}`,\n}));\n\nconst StyledInputMissing = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.MISSING_WITH_ICON,\n border: `solid 1px ${color.defaults.MISSING_WITH_ICON}`,\n fontWeight: 'bold',\n}));\n\nconst StyledIncorrect = styled('div')(() => ({\n float: 'right',\n padding: 0,\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.INCORRECT_WITH_ICON,\n fontWeight: 'bold',\n}));\n\nconst getInputStyles = (theme, disabled, markDisabled) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n fontFamily: theme.typography.fontFamily,\n fontSize: '10px',\n border: disabled\n ? `solid 1px ${color.defaults.PRIMARY_DARK}`\n : markDisabled\n ? `solid 1px ${color.disabled()}`\n : `solid 1px ${color.defaults.SECONDARY}`,\n borderRadius: '3px',\n color: markDisabled ? color.disabled() : color.defaults.PRIMARY_DARK,\n backgroundColor: color.defaults.WHITE,\n WebkitOpacity: disabled ? '1' : undefined,\n WebkitTextFillColor: markDisabled ? color.disabled() : undefined,\n});\n\nconst getStudentInputStyles = () => ({\n padding: '0',\n border: 'none',\n color: 'inherit',\n fontWeight: 'bold',\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, inputStyle, onChange, onBlur }) => (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n externalInputRef(r);\n }}\n disabled={disabled}\n inputStyle={inputStyle}\n value={label}\n onChange={onChange}\n onBlur={onBlur}\n />\n);\n\nLabelInput.propTypes = {\n _ref: PropTypes.func,\n externalInputRef: PropTypes.func,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n inputStyle: PropTypes.object,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nexport const MarkLabel = (props) => {\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node));\n const theme = useTheme();\n\n const { mark, graphProps, disabled, inputRef: externalInputRef } = props;\n\n const [label, setLabel] = useState(mark.label);\n const { correctness, correctnesslabel, correctlabel } = mark;\n\n const onChange = (e) => setLabel(e.target.value);\n\n const handleBlur = useCallback(() => {\n if (label === '') {\n props.onChange('');\n }\n }, [label, props.onChange]);\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 = (inputStyle, labelValue) => (\n <LabelInput\n _ref={_ref}\n externalInputRef={externalInputRef}\n label={labelValue}\n disabled={disabledInput}\n inputStyle={inputStyle}\n onChange={onChange}\n onBlur={handleBlur}\n />\n );\n\n const studentInputStyle = getStudentInputStyles();\n\n if (correctness === 'correct' && correctnesslabel === 'correct' && correctlabel) {\n return (\n <StyledInputCorrect style={style}>\n <SvgIcon type=\"correct\" />\n {renderInput(studentInputStyle, correctlabel)}\n </StyledInputCorrect>\n );\n }\n\n if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {\n return null;\n }\n\n if (correctness === 'correct' && correctnesslabel === 'incorrect') {\n return (\n <>\n <StyledInputIncorrect style={style}>\n <SvgIcon type=\"incorrect\" />\n {label === '' ? (\n <SvgIcon type=\"empty\" style={{ marginLeft: '3px' }} />\n ) : (\n renderInput(studentInputStyle, label)\n )}\n </StyledInputIncorrect>\n <StyledInputMissing style={secondLabelStyle}>{renderInput(studentInputStyle, correctlabel)}</StyledInputMissing>\n </>\n );\n }\n\n if (correctness === 'missing') {\n return <StyledInputMissing style={style}>{renderInput(studentInputStyle, label)}</StyledInputMissing>;\n }\n\n if (correctness === 'incorrect') {\n return <StyledIncorrect style={style}>{renderInput(studentInputStyle, label)}</StyledIncorrect>;\n }\n\n return <div style={style}>{renderInput(getInputStyles(theme, disabled, mark.disabled), label)}</div>;\n};\n\nMarkLabel.propTypes = {\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n};\n\nexport default MarkLabel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"mark-label.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_styles","_reactInputAutosize","_useDebounce","_plot","_renderUi","_labelSvgIcon","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DEBOUNCE_DELAY","StyledInputCorrect","styled","_ref2","theme","padding","spacing","borderRadius","fontSize","backgroundColor","color","defaults","WHITE","CORRECT_WITH_ICON","border","concat","StyledInputIncorrect","_ref3","INCORRECT_WITH_ICON","StyledInputMissing","_ref4","MISSING_WITH_ICON","fontWeight","StyledIncorrect","getInputStyles","disabled","markDisabled","fontFamily","typography","PRIMARY_DARK","SECONDARY","WebkitOpacity","undefined","WebkitTextFillColor","getStudentInputStyles","position","exports","graphProps","mark","rect","width","height","scale","domain","range","shift","rightEdge","x","bottomEdge","y","h","max","v","min","coordinates","left","top","LabelInput","_ref5","_ref","externalInputRef","label","inputStyle","onChange","onBlur","createElement","inputRef","value","propTypes","PropTypes","func","string","bool","object","MarkLabel","props","_useState","useState","_useState2","_slicedToArray2","input","setInput","useCallback","node","useTheme","autoFocus","_useState3","_useState4","setLabel","correctness","correctnesslabel","correctlabel","isFocused","document","activeElement","target","handleBlur","debouncedLabel","useDebounce","useEffect","focus","caret","setSelectionRange","getBoundingClientRect","pos","leftTop","style","pointerEvents","display","alignItems","gap","secondLabelStyle","disabledInput","renderInput","labelValue","studentInputStyle","type","Fragment","marginLeft","types","GraphPropsType","_default"],"sources":["../src/mark-label.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, useTheme } from '@mui/material/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 DEBOUNCE_DELAY = 500;\n\nconst StyledInputCorrect = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.CORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.CORRECT_WITH_ICON}`,\n}));\n\nconst StyledInputIncorrect = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.INCORRECT_WITH_ICON,\n border: `solid 1px ${color.defaults.INCORRECT_WITH_ICON}`,\n}));\n\nconst StyledInputMissing = styled('div')(({ theme }) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.MISSING_WITH_ICON,\n border: `solid 1px ${color.defaults.MISSING_WITH_ICON}`,\n fontWeight: 'bold',\n}));\n\nconst StyledIncorrect = styled('div')(() => ({\n float: 'right',\n padding: 0,\n borderRadius: '4px',\n fontSize: '10px',\n backgroundColor: color.defaults.WHITE,\n color: color.defaults.INCORRECT_WITH_ICON,\n fontWeight: 'bold',\n}));\n\nconst getInputStyles = (theme, disabled, markDisabled) => ({\n float: 'right',\n padding: theme.spacing(0.5),\n fontFamily: theme.typography.fontFamily,\n fontSize: '10px',\n border: disabled\n ? `solid 1px ${color.defaults.PRIMARY_DARK}`\n : markDisabled\n ? `solid 1px ${color.disabled()}`\n : `solid 1px ${color.defaults.SECONDARY}`,\n borderRadius: '3px',\n color: markDisabled ? color.disabled() : color.defaults.PRIMARY_DARK,\n backgroundColor: color.defaults.WHITE,\n WebkitOpacity: disabled ? '1' : undefined,\n WebkitTextFillColor: markDisabled ? color.disabled() : undefined,\n});\n\nconst getStudentInputStyles = () => ({\n padding: '0',\n border: 'none',\n color: 'inherit',\n fontWeight: 'bold',\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, inputStyle, onChange, onBlur }) => (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n externalInputRef(r);\n }}\n disabled={disabled}\n inputStyle={inputStyle}\n value={label}\n onChange={onChange}\n onBlur={onBlur}\n />\n);\n\nLabelInput.propTypes = {\n _ref: PropTypes.func,\n externalInputRef: PropTypes.func,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n inputStyle: PropTypes.object,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nexport const MarkLabel = (props) => {\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node));\n const theme = useTheme();\n\n const { mark, graphProps, disabled, autoFocus, inputRef: externalInputRef } = props;\n\n const [label, setLabel] = useState(mark.label);\n const { correctness, correctnesslabel, correctlabel } = mark;\n\n const isFocused = () => !!input && typeof document !== 'undefined' && document.activeElement === input;\n\n const onChange = (e) => setLabel(e.target.value);\n\n const handleBlur = useCallback(() => {\n if (label === '') {\n props.onChange('');\n }\n\n // lets the tool know that this label is not being edited anymore, so it stops auto focusing it\n if (props.onBlur) {\n props.onBlur();\n }\n }, [label, props.onChange, props.onBlur]);\n\n const debouncedLabel = useDebounce(label, DEBOUNCE_DELAY);\n\n // useState only sets the value once, to synch props to state need useEffect.\n // While this input has the focus we keep what the user typed: the mark can come back from an\n // (async) model save with an older label and that would overwrite the characters typed meanwhile.\n useEffect(() => {\n if (isFocused()) {\n return;\n }\n\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 // A label that has just been added has to be focused so that it can be typed into right away.\n // This also re-focuses the input if it gets remounted while it is being edited - saving the model\n // is done by the host (api call) and the model that comes back can replace the input node.\n useEffect(() => {\n if (!autoFocus || !input || disabled || isFocused()) {\n return;\n }\n\n input.focus();\n\n // keep the caret at the end, otherwise typing continues in front of the existing label\n const caret = (input.value || '').length;\n\n if (input.setSelectionRange) {\n input.setSelectionRange(caret, caret);\n }\n }, [autoFocus, input, disabled]);\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 = (inputStyle, labelValue) => (\n <LabelInput\n _ref={_ref}\n externalInputRef={externalInputRef}\n label={labelValue}\n disabled={disabledInput}\n inputStyle={inputStyle}\n onChange={onChange}\n onBlur={handleBlur}\n />\n );\n\n const studentInputStyle = getStudentInputStyles();\n\n if (correctness === 'correct' && correctnesslabel === 'correct' && correctlabel) {\n return (\n <StyledInputCorrect style={style}>\n <SvgIcon type=\"correct\" />\n {renderInput(studentInputStyle, correctlabel)}\n </StyledInputCorrect>\n );\n }\n\n if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {\n return null;\n }\n\n if (correctness === 'correct' && correctnesslabel === 'incorrect') {\n return (\n <>\n <StyledInputIncorrect style={style}>\n <SvgIcon type=\"incorrect\" />\n {label === '' ? (\n <SvgIcon type=\"empty\" style={{ marginLeft: '3px' }} />\n ) : (\n renderInput(studentInputStyle, label)\n )}\n </StyledInputIncorrect>\n <StyledInputMissing style={secondLabelStyle}>{renderInput(studentInputStyle, correctlabel)}</StyledInputMissing>\n </>\n );\n }\n\n if (correctness === 'missing') {\n return <StyledInputMissing style={style}>{renderInput(studentInputStyle, label)}</StyledInputMissing>;\n }\n\n if (correctness === 'incorrect') {\n return <StyledIncorrect style={style}>{renderInput(studentInputStyle, label)}</StyledIncorrect>;\n }\n\n return <div style={style}>{renderInput(getInputStyles(theme, disabled, mark.disabled), label)}</div>;\n};\n\nMarkLabel.propTypes = {\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n};\n\nexport default MarkLabel;\n"],"mappings":"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","ignoreList":[]}
@@ -54,6 +54,10 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
54
54
  args[_key] = arguments[_key];
55
55
  }
56
56
  _this = _callSuper(this, RawBaseCircle, [].concat(args));
57
+ // which of from/to/middle has its label edited, null if none
58
+ (0, _defineProperty2["default"])(_this, "state", {
59
+ editingLabel: null
60
+ });
57
61
  (0, _defineProperty2["default"])(_this, "onChangePoint", function (point) {
58
62
  var _this$props = _this.props,
59
63
  middle = _this$props.middle,
@@ -122,6 +126,13 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
122
126
  if (!point.label || (0, _lodashEs.isEmpty)(point.label)) delete update.label;
123
127
  changeMarkProps((0, _defineProperty2["default"])({}, type, update));
124
128
  });
129
+ (0, _defineProperty2["default"])(_this, "stopEditingLabel", function () {
130
+ if (_this.state.editingLabel !== null) {
131
+ _this.setState({
132
+ editingLabel: null
133
+ });
134
+ }
135
+ });
125
136
  (0, _defineProperty2["default"])(_this, "clickPoint", function (point, type, data) {
126
137
  var _this$props5 = _this.props,
127
138
  changeMarkProps = _this$props5.changeMarkProps,
@@ -147,15 +158,28 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
147
158
  }, type, _objectSpread({
148
159
  label: ''
149
160
  }, point)));
150
- if (_this.input[type]) {
151
- _this.input[type].focus();
152
- }
161
+
162
+ // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model
163
+ // that comes back from the host (api save) remounts the input.
164
+ _this.setState({
165
+ editingLabel: type
166
+ });
153
167
  });
154
168
  (0, _defineProperty2["default"])(_this, "input", {});
155
169
  return _this;
156
170
  }
157
171
  (0, _inherits2["default"])(RawBaseCircle, _React$Component);
158
172
  return (0, _createClass2["default"])(RawBaseCircle, [{
173
+ key: "componentDidUpdate",
174
+ value: function componentDidUpdate(prevProps) {
175
+ // leaving label mode closes any label that is still being edited
176
+ if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {
177
+ this.setState({
178
+ editingLabel: null
179
+ });
180
+ }
181
+ }
182
+ }, {
159
183
  key: "render",
160
184
  value: function render() {
161
185
  var _this2 = this;
@@ -173,6 +197,7 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
173
197
  graphProps = _this$props6.graphProps,
174
198
  labelNode = _this$props6.labelNode,
175
199
  labelModeEnabled = _this$props6.labelModeEnabled;
200
+ var editingLabel = this.state.editingLabel;
176
201
  var common = {
177
202
  onDragStart: onDragStart,
178
203
  onDragStop: onDragStop,
@@ -191,9 +216,11 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
191
216
  inputRef: function inputRef(r) {
192
217
  return _this2.input.from = r;
193
218
  },
219
+ autoFocus: editingLabel === 'from',
194
220
  disabled: !labelModeEnabled,
195
221
  mark: from,
196
222
  graphProps: graphProps,
223
+ onBlur: this.stopEditingLabel,
197
224
  onChange: function onChange(label) {
198
225
  return _this2.labelChange(_objectSpread(_objectSpread({}, from), {}, {
199
226
  label: label
@@ -206,9 +233,11 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
206
233
  inputRef: function inputRef(r) {
207
234
  return _this2.input.to = r;
208
235
  },
236
+ autoFocus: editingLabel === 'to',
209
237
  disabled: !labelModeEnabled,
210
238
  mark: to,
211
239
  graphProps: graphProps,
240
+ onBlur: this.stopEditingLabel,
212
241
  onChange: function onChange(label) {
213
242
  return _this2.labelChange(_objectSpread(_objectSpread({}, to), {}, {
214
243
  label: label
@@ -221,9 +250,11 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
221
250
  inputRef: function inputRef(r) {
222
251
  return _this2.input.middle = r;
223
252
  },
253
+ autoFocus: editingLabel === 'middle',
224
254
  disabled: !labelModeEnabled,
225
255
  mark: middle,
226
256
  graphProps: graphProps,
257
+ onBlur: this.stopEditingLabel,
227
258
  onChange: function onChange(label) {
228
259
  return _this2.labelChange(_objectSpread(_objectSpread({}, middle), {}, {
229
260
  label: label
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_point","_bgCircle","_utils","_plot","_withRootEdge","_reactDom","_markLabel","_lodashEs","_renderUi","_styles","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","opacityPulsate","opacity","keyframes","getRadius","from","outer","c","point","dist","RawBaseCircle","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","_this$props","props","middle","onChange","to","equalPoints","getMiddleOfTwoPoints","draggedFrom","_this$props2","label","onChangePoint","draggedTo","_this$props3","_this$props4","diff","sub","updated","setState","draggedroot","undefined","draggedOuter","isCircleDrag","type","changeMarkProps","update","isEmpty","data","_this$props5","disabled","labelModeEnabled","limitLabeling","onClick","stripEmptyLabel","input","focus","_inherits2","_createClass2","key","value","render","_this2","_this$props6","building","coordinatesOnHover","onDragStart","onDragStop","correctness","graphProps","labelNode","common","radius","fromLabelNode","toLabelNode","circleLabelNode","_to","ReactDOM","createPortal","createElement","inputRef","mark","labelChange","StyledBgCircle","_extends2","className","classNames","x","y","onDrag","dragCircle","clickPoint","BasePoint","dragTo","dragFrom","React","Component","PropTypes","bool","string","types","PointType","func","isRequired","GraphPropsType","object","styled","BgCircle","fill","color","transparent","stroke","defaults","BLACK","strokeWidth","PRIMARY_DARK","animation","BaseCircle","rootEdgeComponent","_default"],"sources":["../../../src/tools/circle/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { BasePoint } from '../shared/point';\nimport BgCircle from './bg-circle';\nimport { equalPoints, getMiddleOfTwoPoints, point, stripEmptyLabel } from '../../utils';\nimport { types } from '@pie-lib/plot';\nimport { rootEdgeComponent } from '../shared/line/with-root-edge';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\nimport { keyframes, styled } from '@mui/material/styles';\n\nconst opacityPulsate = (opacity) =>\n keyframes({\n '0%': { opacity: '0.0' },\n '50%': { opacity },\n '100%': { opacity: '0.0' },\n });\n\nconst getRadius = (from, outer) => {\n const c = point(from);\n return c.dist(point(outer));\n};\n\nexport class RawBaseCircle extends React.Component {\n static propTypes = {\n building: PropTypes.bool,\n className: PropTypes.string,\n coordinatesOnHover: PropTypes.bool,\n correctness: PropTypes.string,\n from: types.PointType,\n disabled: PropTypes.bool,\n to: types.PointType,\n middle: types.PointType,\n onChange: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n onClick: PropTypes.func,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n limitLabeling: PropTypes.bool,\n };\n\n static defaultProps = {\n onClick: () => ({}),\n };\n\n onChangePoint = (point) => {\n const { middle, onChange } = this.props;\n const { from, to } = point;\n\n if (!equalPoints(from, to)) {\n if (middle) {\n point.middle = { ...middle, ...getMiddleOfTwoPoints(from, to) };\n }\n onChange(point);\n }\n };\n\n dragFrom = (draggedFrom) => {\n const { from, to } = this.props;\n\n if (from.label) draggedFrom.label = from.label;\n if (!equalPoints(draggedFrom, to)) {\n this.onChangePoint({ from: draggedFrom, to });\n }\n };\n\n dragTo = (draggedTo) => {\n const { from, to } = this.props;\n\n if (to.label) draggedTo.label = to.label;\n if (!equalPoints(from, draggedTo)) {\n this.onChangePoint({ from, to: draggedTo });\n }\n };\n\n dragCircle = (draggedFrom) => {\n const { from, to, onChange, middle } = this.props;\n const diff = point(from).sub(point(draggedFrom));\n const draggedTo = point(to).sub(diff);\n\n if (from.label) draggedFrom.label = from.label;\n if (to.label) draggedTo.label = to.label;\n\n const updated = { from: draggedFrom, to: draggedTo };\n if (middle) {\n updated.middle = { ...middle, ...getMiddleOfTwoPoints(draggedFrom, draggedTo) };\n }\n\n this.setState({ draggedroot: undefined, draggedOuter: undefined, isCircleDrag: false }, () => onChange(updated));\n };\n\n labelChange = (point, type) => {\n const { changeMarkProps } = this.props;\n const update = { ...point };\n if (!point.label || isEmpty(point.label)) delete update.label;\n changeMarkProps({ [type]: update });\n };\n\n clickPoint = (point, type, data) => {\n const { changeMarkProps, disabled, from, to, middle, labelModeEnabled, limitLabeling, onClick } = this.props;\n\n if (!labelModeEnabled) {\n onClick(point || data);\n return;\n }\n\n if (disabled || limitLabeling) return;\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\n changeMarkProps({\n from: stripEmptyLabel(from),\n to: stripEmptyLabel(to),\n middle: stripEmptyLabel(middle),\n [type]: { label: '', ...point },\n });\n\n if (this.input[type]) {\n this.input[type].focus();\n }\n };\n\n input = {};\n\n render() {\n let {\n from,\n to,\n middle,\n disabled,\n building,\n coordinatesOnHover,\n onDragStart,\n onDragStop,\n onClick,\n correctness,\n graphProps,\n labelNode,\n labelModeEnabled,\n } = this.props;\n\n const common = { onDragStart, onDragStop, graphProps, onClick };\n to = to || from;\n const radius = getRadius(from, to);\n\n let fromLabelNode = null;\n let toLabelNode = null;\n let circleLabelNode = null;\n\n if (labelNode) {\n if (from?.label !== undefined) {\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?.label !== undefined) {\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?.label !== undefined) {\n circleLabelNode = 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 <StyledBgCircle\n disabled={building || disabled}\n correctness={correctness}\n className={classNames(building && 'bgCircleBuilding')}\n x={from.x}\n y={from.y}\n radius={radius}\n onDrag={this.dragCircle}\n {...common}\n onClick={(data) => this.clickPoint(middle, 'middle', data)}\n />\n {circleLabelNode}\n\n <BasePoint\n disabled={building || disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={correctness}\n labelNode={labelNode}\n x={to.x}\n y={to.y}\n onDrag={this.dragTo}\n {...common}\n onClick={(data) => this.clickPoint(to, 'to', data)}\n />\n {toLabelNode}\n\n <BasePoint\n disabled={building || disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={correctness}\n labelNode={labelNode}\n x={from.x}\n y={from.y}\n className=\"from\"\n onDrag={this.dragFrom}\n {...common}\n onClick={(data) => this.clickPoint(from, 'from', data)}\n />\n {fromLabelNode}\n </g>\n );\n }\n}\n\n// MUI v5 styled() replaces withStyles\nconst StyledBgCircle = styled(BgCircle)(() => ({\n '&.outerLine': {\n fill: color.transparent(),\n stroke: color.defaults.BLACK,\n strokeWidth: 4,\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n },\n '&.bgCircleBuilding': {\n stroke: color.defaults.BLACK,\n animation: `${opacityPulsate('0.3')} 2s ease-out infinite`,\n opacity: 1,\n },\n}));\n\nexport const BaseCircle = RawBaseCircle;\nconst Component = rootEdgeComponent(BaseCircle);\nexport default Component;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_point","_bgCircle","_utils","_plot","_withRootEdge","_reactDom","_markLabel","_lodashEs","_renderUi","_styles","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","opacityPulsate","opacity","keyframes","getRadius","from","outer","c","point","dist","RawBaseCircle","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","editingLabel","_this$props","props","middle","onChange","to","equalPoints","getMiddleOfTwoPoints","draggedFrom","_this$props2","label","onChangePoint","draggedTo","_this$props3","_this$props4","diff","sub","updated","setState","draggedroot","undefined","draggedOuter","isCircleDrag","type","changeMarkProps","update","isEmpty","state","data","_this$props5","disabled","labelModeEnabled","limitLabeling","onClick","stripEmptyLabel","_inherits2","_createClass2","key","value","componentDidUpdate","prevProps","render","_this2","_this$props6","building","coordinatesOnHover","onDragStart","onDragStop","correctness","graphProps","labelNode","common","radius","fromLabelNode","toLabelNode","circleLabelNode","_to","ReactDOM","createPortal","createElement","inputRef","input","autoFocus","mark","onBlur","stopEditingLabel","labelChange","StyledBgCircle","_extends2","className","classNames","x","y","onDrag","dragCircle","clickPoint","BasePoint","dragTo","dragFrom","React","Component","PropTypes","bool","string","types","PointType","func","isRequired","GraphPropsType","object","styled","BgCircle","fill","color","transparent","stroke","defaults","BLACK","strokeWidth","PRIMARY_DARK","animation","BaseCircle","rootEdgeComponent","_default"],"sources":["../../../src/tools/circle/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { BasePoint } from '../shared/point';\nimport BgCircle from './bg-circle';\nimport { equalPoints, getMiddleOfTwoPoints, point, stripEmptyLabel } from '../../utils';\nimport { types } from '@pie-lib/plot';\nimport { rootEdgeComponent } from '../shared/line/with-root-edge';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\nimport { keyframes, styled } from '@mui/material/styles';\n\nconst opacityPulsate = (opacity) =>\n keyframes({\n '0%': { opacity: '0.0' },\n '50%': { opacity },\n '100%': { opacity: '0.0' },\n });\n\nconst getRadius = (from, outer) => {\n const c = point(from);\n return c.dist(point(outer));\n};\n\nexport class RawBaseCircle extends React.Component {\n static propTypes = {\n building: PropTypes.bool,\n className: PropTypes.string,\n coordinatesOnHover: PropTypes.bool,\n correctness: PropTypes.string,\n from: types.PointType,\n disabled: PropTypes.bool,\n to: types.PointType,\n middle: types.PointType,\n onChange: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n onClick: PropTypes.func,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n limitLabeling: PropTypes.bool,\n };\n\n static defaultProps = {\n onClick: () => ({}),\n };\n\n // which of from/to/middle has its label edited, null if none\n state = { editingLabel: null };\n\n componentDidUpdate(prevProps) {\n // leaving label mode closes any label that is still being edited\n if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n }\n\n onChangePoint = (point) => {\n const { middle, onChange } = this.props;\n const { from, to } = point;\n\n if (!equalPoints(from, to)) {\n if (middle) {\n point.middle = { ...middle, ...getMiddleOfTwoPoints(from, to) };\n }\n onChange(point);\n }\n };\n\n dragFrom = (draggedFrom) => {\n const { from, to } = this.props;\n\n if (from.label) draggedFrom.label = from.label;\n if (!equalPoints(draggedFrom, to)) {\n this.onChangePoint({ from: draggedFrom, to });\n }\n };\n\n dragTo = (draggedTo) => {\n const { from, to } = this.props;\n\n if (to.label) draggedTo.label = to.label;\n if (!equalPoints(from, draggedTo)) {\n this.onChangePoint({ from, to: draggedTo });\n }\n };\n\n dragCircle = (draggedFrom) => {\n const { from, to, onChange, middle } = this.props;\n const diff = point(from).sub(point(draggedFrom));\n const draggedTo = point(to).sub(diff);\n\n if (from.label) draggedFrom.label = from.label;\n if (to.label) draggedTo.label = to.label;\n\n const updated = { from: draggedFrom, to: draggedTo };\n if (middle) {\n updated.middle = { ...middle, ...getMiddleOfTwoPoints(draggedFrom, draggedTo) };\n }\n\n this.setState({ draggedroot: undefined, draggedOuter: undefined, isCircleDrag: false }, () => onChange(updated));\n };\n\n labelChange = (point, type) => {\n const { changeMarkProps } = this.props;\n const update = { ...point };\n if (!point.label || isEmpty(point.label)) delete update.label;\n changeMarkProps({ [type]: update });\n };\n\n stopEditingLabel = () => {\n if (this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n };\n\n clickPoint = (point, type, data) => {\n const { changeMarkProps, disabled, from, to, middle, labelModeEnabled, limitLabeling, onClick } = this.props;\n\n if (!labelModeEnabled) {\n onClick(point || data);\n return;\n }\n\n if (disabled || limitLabeling) return;\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\n changeMarkProps({\n from: stripEmptyLabel(from),\n to: stripEmptyLabel(to),\n middle: stripEmptyLabel(middle),\n [type]: { label: '', ...point },\n });\n\n // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model\n // that comes back from the host (api save) remounts the input.\n this.setState({ editingLabel: type });\n };\n\n input = {};\n\n render() {\n let {\n from,\n to,\n middle,\n disabled,\n building,\n coordinatesOnHover,\n onDragStart,\n onDragStop,\n onClick,\n correctness,\n graphProps,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const { editingLabel } = this.state;\n\n const common = { onDragStart, onDragStop, graphProps, onClick };\n to = to || from;\n const radius = getRadius(from, to);\n\n let fromLabelNode = null;\n let toLabelNode = null;\n let circleLabelNode = null;\n\n if (labelNode) {\n if (from?.label !== undefined) {\n fromLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.from = r)}\n autoFocus={editingLabel === 'from'}\n disabled={!labelModeEnabled}\n mark={from}\n graphProps={graphProps}\n onBlur={this.stopEditingLabel}\n onChange={(label) => this.labelChange({ ...from, label }, 'from')}\n />,\n labelNode,\n );\n }\n\n if (to?.label !== undefined) {\n toLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.to = r)}\n autoFocus={editingLabel === 'to'}\n disabled={!labelModeEnabled}\n mark={to}\n graphProps={graphProps}\n onBlur={this.stopEditingLabel}\n onChange={(label) => this.labelChange({ ...to, label }, 'to')}\n />,\n labelNode,\n );\n }\n\n if (middle?.label !== undefined) {\n circleLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.middle = r)}\n autoFocus={editingLabel === 'middle'}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onBlur={this.stopEditingLabel}\n onChange={(label) => this.labelChange({ ...middle, label }, 'middle')}\n />,\n labelNode,\n );\n }\n }\n\n return (\n <g>\n <StyledBgCircle\n disabled={building || disabled}\n correctness={correctness}\n className={classNames(building && 'bgCircleBuilding')}\n x={from.x}\n y={from.y}\n radius={radius}\n onDrag={this.dragCircle}\n {...common}\n onClick={(data) => this.clickPoint(middle, 'middle', data)}\n />\n {circleLabelNode}\n\n <BasePoint\n disabled={building || disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={correctness}\n labelNode={labelNode}\n x={to.x}\n y={to.y}\n onDrag={this.dragTo}\n {...common}\n onClick={(data) => this.clickPoint(to, 'to', data)}\n />\n {toLabelNode}\n\n <BasePoint\n disabled={building || disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={correctness}\n labelNode={labelNode}\n x={from.x}\n y={from.y}\n className=\"from\"\n onDrag={this.dragFrom}\n {...common}\n onClick={(data) => this.clickPoint(from, 'from', data)}\n />\n {fromLabelNode}\n </g>\n );\n }\n}\n\n// MUI v5 styled() replaces withStyles\nconst StyledBgCircle = styled(BgCircle)(() => ({\n '&.outerLine': {\n fill: color.transparent(),\n stroke: color.defaults.BLACK,\n strokeWidth: 4,\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n },\n '&.bgCircleBuilding': {\n stroke: color.defaults.BLACK,\n animation: `${opacityPulsate('0.3')} 2s ease-out infinite`,\n opacity: 1,\n },\n}));\n\nexport const BaseCircle = RawBaseCircle;\nconst Component = rootEdgeComponent(BaseCircle);\nexport default Component;\n"],"mappings":"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","ignoreList":[]}
@@ -28,6 +28,7 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
28
28
  var _this;
29
29
  (0, _classCallCheck2["default"])(this, Point);
30
30
  _this = _callSuper(this, Point, [props]);
31
+ // which label is being edited, null if none - a point only has the one
31
32
  (0, _defineProperty2["default"])(_this, "move", function (p) {
32
33
  var mark = _objectSpread(_objectSpread({}, _this.state.mark), p);
33
34
  _this.setState({
@@ -73,6 +74,13 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
73
74
  onChange(_this.props.mark, update);
74
75
  });
75
76
  });
77
+ (0, _defineProperty2["default"])(_this, "stopEditingLabel", function () {
78
+ if (_this.state.editingLabel !== null) {
79
+ _this.setState({
80
+ editingLabel: null
81
+ });
82
+ }
83
+ });
76
84
  (0, _defineProperty2["default"])(_this, "clickPoint", function () {
77
85
  var _this$props2 = _this.props,
78
86
  labelModeEnabled = _this$props2.labelModeEnabled,
@@ -90,19 +98,29 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
90
98
  label: ''
91
99
  }, mark));
92
100
 
93
- // MarkLabel is only rendered after the parent re-renders with the new label prop,
94
- // so we defer focus until after that render cycle completes.
95
- setTimeout(function () {
96
- if (_this.input) {
97
- _this.input.focus();
98
- }
99
- }, 0);
101
+ // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model
102
+ // that comes back from the host (api save) remounts the input.
103
+ _this.setState({
104
+ editingLabel: 'label'
105
+ });
100
106
  });
101
- _this.state = {};
107
+ _this.state = {
108
+ editingLabel: null
109
+ };
102
110
  return _this;
103
111
  }
104
112
  (0, _inherits2["default"])(Point, _React$Component);
105
113
  return (0, _createClass2["default"])(Point, [{
114
+ key: "componentDidUpdate",
115
+ value: function componentDidUpdate(prevProps) {
116
+ // leaving label mode closes any label that is still being edited
117
+ if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {
118
+ this.setState({
119
+ editingLabel: null
120
+ });
121
+ }
122
+ }
123
+ }, {
106
124
  key: "render",
107
125
  value: function render() {
108
126
  var _this2 = this;
@@ -111,6 +129,7 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
111
129
  graphProps = _this$props3.graphProps,
112
130
  labelNode = _this$props3.labelNode,
113
131
  labelModeEnabled = _this$props3.labelModeEnabled;
132
+ var editingLabel = this.state.editingLabel;
114
133
  var mark = this.state.mark ? this.state.mark : this.props.mark;
115
134
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_point.BasePoint, (0, _extends2["default"])({}, mark, {
116
135
  coordinatesOnHover: coordinatesOnHover,
@@ -132,9 +151,11 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
132
151
  inputRef: function inputRef(r) {
133
152
  return _this2.input = r;
134
153
  },
154
+ autoFocus: editingLabel === 'label',
135
155
  disabled: !labelModeEnabled,
136
156
  mark: mark,
137
157
  graphProps: graphProps,
158
+ onBlur: this.stopEditingLabel,
138
159
  onChange: this.labelChange
139
160
  }), labelNode));
140
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_point","_types","_plot","_reactDom","_markLabel","_lodashEs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Point","exports","_React$Component","props","_this","_classCallCheck2","p","mark","state","setState","onDragStart","update","label","_this$props","onChange","onDragStop","undefined","isEqual","isEmpty","_this$props2","labelModeEnabled","onClick","disabled","setTimeout","input","focus","_inherits2","_createClass2","key","value","render","_this2","_this$props3","coordinatesOnHover","graphProps","labelNode","createElement","Fragment","BasePoint","_extends2","onDrag","move","startDrag","stopDrag","clickPoint","onTouchStart","stopPropagation","onTouchEnd","hasOwnProperty","ReactDOM","createPortal","inputRef","labelChange","React","Component","types","GraphPropsType","isRequired","ToolPropTypeFields","_default"],"sources":["../../../src/tools/point/component.jsx"],"sourcesContent":["import React from 'react';\nimport { BasePoint } from '../shared/point';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { types } from '@pie-lib/plot';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty, isEqual } from 'lodash-es';\n\nexport class Point extends React.Component {\n static propTypes = {\n graphProps: types.GraphPropsType.isRequired,\n ...ToolPropTypeFields,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n move = (p) => {\n const mark = { ...this.state.mark, ...p };\n this.setState({ mark });\n };\n\n startDrag = () => {\n const { onDragStart } = this.props;\n const update = { ...this.props.mark };\n\n if (update.label === '') {\n delete update.label;\n }\n this.setState({ mark: update });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, onDragStop } = this.props;\n const mark = { ...this.state.mark };\n this.setState({ mark: undefined }, () => {\n if (!isEqual(this.props.mark, mark)) {\n onChange(this.props.mark, mark);\n }\n if (onDragStop) onDragStop();\n });\n };\n\n labelChange = (label) => {\n const { onChange } = this.props;\n const update = { ...this.props.mark, label };\n\n if (!label || isEmpty(label)) {\n delete update.label;\n }\n\n this.setState({ mark: update }, () => {\n onChange(this.props.mark, update);\n });\n };\n\n clickPoint = () => {\n const { labelModeEnabled, onChange, onClick, mark } = this.props;\n\n if (!labelModeEnabled) {\n onClick(mark);\n return;\n }\n\n if (mark.disabled) {\n return;\n }\n\n onChange(mark, { label: '', ...mark });\n\n // MarkLabel is only rendered after the parent re-renders with the new label prop,\n // so we defer focus until after that render cycle completes.\n setTimeout(() => {\n if (this.input) {\n this.input.focus();\n }\n }, 0);\n };\n\n render() {\n const { coordinatesOnHover, graphProps, labelNode, labelModeEnabled } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n return (\n <React.Fragment>\n <BasePoint\n {...mark}\n coordinatesOnHover={coordinatesOnHover}\n graphProps={graphProps}\n labelNode={labelNode}\n onDrag={this.move}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n onClick={this.clickPoint}\n onTouchStart={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n onTouchEnd={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n />\n {labelNode &&\n Object.prototype.hasOwnProperty.call(mark, 'label') &&\n ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input = r)}\n disabled={!labelModeEnabled}\n mark={mark}\n graphProps={graphProps}\n onChange={this.labelChange}\n />,\n labelNode,\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default Point;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_point","_types","_plot","_reactDom","_markLabel","_lodashEs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Point","exports","_React$Component","props","_this","_classCallCheck2","p","mark","state","setState","onDragStart","update","label","_this$props","onChange","onDragStop","undefined","isEqual","isEmpty","editingLabel","_this$props2","labelModeEnabled","onClick","disabled","_inherits2","_createClass2","key","value","componentDidUpdate","prevProps","render","_this2","_this$props3","coordinatesOnHover","graphProps","labelNode","createElement","Fragment","BasePoint","_extends2","onDrag","move","startDrag","stopDrag","clickPoint","onTouchStart","stopPropagation","onTouchEnd","hasOwnProperty","ReactDOM","createPortal","inputRef","input","autoFocus","onBlur","stopEditingLabel","labelChange","React","Component","types","GraphPropsType","isRequired","ToolPropTypeFields","_default"],"sources":["../../../src/tools/point/component.jsx"],"sourcesContent":["import React from 'react';\nimport { BasePoint } from '../shared/point';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { types } from '@pie-lib/plot';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty, isEqual } from 'lodash-es';\n\nexport class Point extends React.Component {\n static propTypes = {\n graphProps: types.GraphPropsType.isRequired,\n ...ToolPropTypeFields,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n // which label is being edited, null if none - a point only has the one\n this.state = { editingLabel: null };\n }\n\n componentDidUpdate(prevProps) {\n // leaving label mode closes any label that is still being edited\n if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n }\n\n move = (p) => {\n const mark = { ...this.state.mark, ...p };\n this.setState({ mark });\n };\n\n startDrag = () => {\n const { onDragStart } = this.props;\n const update = { ...this.props.mark };\n\n if (update.label === '') {\n delete update.label;\n }\n this.setState({ mark: update });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, onDragStop } = this.props;\n const mark = { ...this.state.mark };\n this.setState({ mark: undefined }, () => {\n if (!isEqual(this.props.mark, mark)) {\n onChange(this.props.mark, mark);\n }\n if (onDragStop) onDragStop();\n });\n };\n\n labelChange = (label) => {\n const { onChange } = this.props;\n const update = { ...this.props.mark, label };\n\n if (!label || isEmpty(label)) {\n delete update.label;\n }\n\n this.setState({ mark: update }, () => {\n onChange(this.props.mark, update);\n });\n };\n\n stopEditingLabel = () => {\n if (this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n };\n\n clickPoint = () => {\n const { labelModeEnabled, onChange, onClick, mark } = this.props;\n\n if (!labelModeEnabled) {\n onClick(mark);\n return;\n }\n\n if (mark.disabled) {\n return;\n }\n\n onChange(mark, { label: '', ...mark });\n\n // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model\n // that comes back from the host (api save) remounts the input.\n this.setState({ editingLabel: 'label' });\n };\n\n render() {\n const { coordinatesOnHover, graphProps, labelNode, labelModeEnabled } = this.props;\n const { editingLabel } = this.state;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n return (\n <React.Fragment>\n <BasePoint\n {...mark}\n coordinatesOnHover={coordinatesOnHover}\n graphProps={graphProps}\n labelNode={labelNode}\n onDrag={this.move}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n onClick={this.clickPoint}\n onTouchStart={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n onTouchEnd={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n />\n {labelNode &&\n Object.prototype.hasOwnProperty.call(mark, 'label') &&\n ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input = r)}\n autoFocus={editingLabel === 'label'}\n disabled={!labelModeEnabled}\n mark={mark}\n graphProps={graphProps}\n onBlur={this.stopEditingLabel}\n onChange={this.labelChange}\n />,\n labelNode,\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default Point;\n"],"mappings":"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","ignoreList":[]}