@pie-lib/graphing 4.0.4-next.3 → 4.0.4-next.9

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/lib/mark-label.js CHANGED
@@ -143,7 +143,8 @@ var LabelInput = function LabelInput(_ref5) {
143
143
  label = _ref5.label,
144
144
  disabled = _ref5.disabled,
145
145
  inputStyle = _ref5.inputStyle,
146
- onChange = _ref5.onChange;
146
+ onChange = _ref5.onChange,
147
+ onBlur = _ref5.onBlur;
147
148
  return /*#__PURE__*/_react["default"].createElement(_reactInputAutosize["default"], {
148
149
  inputRef: function inputRef(r) {
149
150
  _ref(r);
@@ -152,7 +153,8 @@ var LabelInput = function LabelInput(_ref5) {
152
153
  disabled: disabled,
153
154
  inputStyle: inputStyle,
154
155
  value: label,
155
- onChange: onChange
156
+ onChange: onChange,
157
+ onBlur: onBlur
156
158
  });
157
159
  };
158
160
  LabelInput.propTypes = {
@@ -161,7 +163,8 @@ LabelInput.propTypes = {
161
163
  label: _propTypes["default"].string,
162
164
  disabled: _propTypes["default"].bool,
163
165
  inputStyle: _propTypes["default"].object,
164
- onChange: _propTypes["default"].func
166
+ onChange: _propTypes["default"].func,
167
+ onBlur: _propTypes["default"].func
165
168
  };
166
169
  var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
167
170
  var _useState = (0, _react.useState)(null),
@@ -186,6 +189,11 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
186
189
  var onChange = function onChange(e) {
187
190
  return setLabel(e.target.value);
188
191
  };
192
+ var handleBlur = (0, _react.useCallback)(function () {
193
+ if (label === '') {
194
+ props.onChange('');
195
+ }
196
+ }, [label, props.onChange]);
189
197
  var debouncedLabel = (0, _useDebounce.useDebounce)(label, 200);
190
198
 
191
199
  // useState only sets the value once, to synch props to state need useEffect
@@ -223,7 +231,8 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
223
231
  label: labelValue,
224
232
  disabled: disabledInput,
225
233
  inputStyle: inputStyle,
226
- onChange: onChange
234
+ onChange: onChange,
235
+ onBlur: handleBlur
227
236
  });
228
237
  };
229
238
  var studentInputStyle = getStudentInputStyles();
@@ -234,8 +243,6 @@ var MarkLabel = exports.MarkLabel = function MarkLabel(props) {
234
243
  type: "correct"
235
244
  }), renderInput(studentInputStyle, correctlabel));
236
245
  }
237
-
238
- // avoid rendering empty label when a correct point without label was provided
239
246
  if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {
240
247
  return null;
241
248
  }
@@ -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","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","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 }) => (\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 />\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};\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 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 = (inputStyle, labelValue) => (\n <LabelInput\n _ref={_ref}\n externalInputRef={externalInputRef}\n label={labelValue}\n disabled={disabledInput}\n inputStyle={inputStyle}\n onChange={onChange}\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 // 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 <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","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":[]}
@@ -128,6 +128,7 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
128
128
  disabled = _this$props5.disabled,
129
129
  from = _this$props5.from,
130
130
  to = _this$props5.to,
131
+ middle = _this$props5.middle,
131
132
  labelModeEnabled = _this$props5.labelModeEnabled,
132
133
  limitLabeling = _this$props5.limitLabeling,
133
134
  onClick = _this$props5.onClick;
@@ -140,8 +141,9 @@ var RawBaseCircle = exports.RawBaseCircle = /*#__PURE__*/function (_React$Compon
140
141
  point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
141
142
  }
142
143
  changeMarkProps((0, _defineProperty2["default"])({
143
- from: from,
144
- to: to
144
+ from: (0, _utils.stripEmptyLabel)(from),
145
+ to: (0, _utils.stripEmptyLabel)(to),
146
+ middle: (0, _utils.stripEmptyLabel)(middle)
145
147
  }, type, _objectSpread({
146
148
  label: ''
147
149
  }, point)));
@@ -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","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 } 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, 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\n changeMarkProps({ from, to, [type]: { label: '', ...point } });\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","_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":[]}
@@ -157,12 +157,12 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
157
157
  var _this$props4 = _this.props,
158
158
  closed = _this$props4.closed,
159
159
  disabled = _this$props4.disabled,
160
+ currentMiddle = _this$props4.middle,
160
161
  onClick = _this$props4.onClick,
161
162
  isToolActive = _this$props4.isToolActive,
162
163
  labelModeEnabled = _this$props4.labelModeEnabled,
163
164
  limitLabeling = _this$props4.limitLabeling,
164
- onChangeProps = _this$props4.onChangeProps,
165
- onChangeLabelProps = _this$props4.onChangeLabelProps,
165
+ onSetMiddleLabel = _this$props4.onSetMiddleLabel,
166
166
  points = _this$props4.points;
167
167
  if (labelModeEnabled) {
168
168
  // limit labeling the points of the polygon
@@ -176,13 +176,14 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
176
176
  var middle = _objectSpread(_objectSpread({
177
177
  label: ''
178
178
  }, point), (0, _utils.getMiddleOfTwoPoints)(a, b));
179
- onChangeLabelProps(middle);
179
+ onSetMiddleLabel(middle, points.map(_utils.stripEmptyLabel));
180
180
  } else {
181
- var update = (0, _toConsumableArray2["default"])(points);
182
- update.splice(index, 1, _objectSpread({
181
+ var strippedPoints = points.map(_utils.stripEmptyLabel);
182
+ strippedPoints.splice(index, 1, _objectSpread({
183
183
  label: ''
184
184
  }, point));
185
- onChangeProps(update);
185
+ var strippedMiddle = currentMiddle ? (0, _utils.stripEmptyLabel)(currentMiddle) : currentMiddle;
186
+ onSetMiddleLabel(strippedMiddle, strippedPoints);
186
187
  }
187
188
 
188
189
  // defer the focus() call with setTimeout to allow the re-render to complete first.
@@ -236,7 +237,7 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
236
237
  inputRef: function inputRef(r) {
237
238
  return _this2.input[polygonLabelIndex] = r;
238
239
  },
239
- disabled: !labelModeEnabled,
240
+ disabled: disabled || !labelModeEnabled,
240
241
  mark: middle,
241
242
  graphProps: graphProps,
242
243
  onChange: function onChange(label) {
@@ -279,7 +280,7 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
279
280
  inputRef: function inputRef(r) {
280
281
  return _this2.input[index] = r;
281
282
  },
282
- disabled: !labelModeEnabled,
283
+ disabled: disabled || !labelModeEnabled,
283
284
  mark: p,
284
285
  graphProps: graphProps,
285
286
  onChange: function onChange(label) {
@@ -312,6 +313,7 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
312
313
  labelModeEnabled: _propTypes["default"].bool,
313
314
  limitLabeling: _propTypes["default"].bool,
314
315
  onChangeLabelProps: _propTypes["default"].func,
316
+ onSetMiddleLabel: _propTypes["default"].func,
315
317
  onChangeProps: _propTypes["default"].func
316
318
  });
317
319
  (0, _defineProperty2["default"])(RawBaseComponent, "defaultProps", {
@@ -349,15 +351,30 @@ var Component = exports["default"] = /*#__PURE__*/function (_React$Component2) {
349
351
  mark = _this3$props.mark,
350
352
  onChange = _this3$props.onChange;
351
353
  var middle = _objectSpread(_objectSpread({}, mark.middle), point);
354
+ if (!middle.label || (0, _lodashEs.isEmpty)(middle.label)) {
355
+ delete middle.label;
356
+ }
352
357
  onChange(mark, _objectSpread(_objectSpread({}, mark), {}, {
353
358
  middle: middle
354
359
  }));
355
360
  });
361
+ (0, _defineProperty2["default"])(_this3, "setMiddleLabel", function (middle, strippedPoints) {
362
+ var _this3$props2 = _this3.props,
363
+ mark = _this3$props2.mark,
364
+ onChange = _this3$props2.onChange;
365
+ var next = _objectSpread(_objectSpread({}, mark), {}, {
366
+ middle: middle
367
+ });
368
+ if (strippedPoints) {
369
+ next.points = strippedPoints;
370
+ }
371
+ onChange(mark, next);
372
+ });
356
373
  (0, _defineProperty2["default"])(_this3, "closePolygon", function () {
357
374
  log('[closePolygon] ...');
358
- var _this3$props2 = _this3.props,
359
- onComplete = _this3$props2.onComplete,
360
- mark = _this3$props2.mark;
375
+ var _this3$props3 = _this3.props,
376
+ onComplete = _this3$props3.onComplete,
377
+ mark = _this3$props3.mark;
361
378
  var update = _objectSpread(_objectSpread({}, mark), {}, {
362
379
  closed: true
363
380
  });
@@ -398,6 +415,7 @@ var Component = exports["default"] = /*#__PURE__*/function (_React$Component2) {
398
415
  coordinatesOnHover: coordinatesOnHover,
399
416
  onChange: this.change,
400
417
  onChangeLabelProps: this.changeLabelProps,
418
+ onSetMiddleLabel: this.setMiddleLabel,
401
419
  onChangeProps: this.changeProps,
402
420
  onClosePolygon: this.closePolygon,
403
421
  onDragStart: this.dragStart,
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_point","_lodashEs","_debug","_line","_polygon","_interopRequireWildcard","_plot","_invariant","_reactDom","_markLabel","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","buildLines","exports","points","closed","expanded","reduce","acc","p","index","isLast","next","all","chunk","map","_ref","_ref2","_slicedToArray2","from","to","initial","swap","arr","_len","rest","Array","_key","pairs","pr","_pr","replacement","invariant","Number","isFinite","splice","_toConsumableArray2","RawBaseComponent","_React$Component","_this","_classCallCheck2","_len2","args","_key2","concat","_this$props","props","onChange","update","overlapPoint","find","equalPoints","label","existing","point","_this$props2","onClosePolygon","_this$props3","onChangeProps","updatedPoint","isEmpty","data","_this$props4","disabled","onClick","isToolActive","labelModeEnabled","limitLabeling","onChangeLabelProps","_getRightestPoints","getRightestPoints","a","b","middle","getMiddleOfTwoPoints","setTimeout","input","focus","close","_inherits2","_createClass2","key","value","render","_this2","_this$props5","coordinatesOnHover","correctness","graphProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","ReactDOM","createPortal","createElement","inputRef","mark","Fragment","_extends2","onDrag","dragPoly","bind","clickPoint","Polygon","l","dragLine","BasePoint","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","_React$Component2","_this3","state","_getRightestPoints2","setState","_this3$props","_this3$props2","onComplete","m","undefined","_this$props6","stateMark","change","changeLabelProps","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"sources":["../../../src/tools/polygon/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport { chunk, initial, isEmpty } from 'lodash-es';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { equalPoints, getMiddleOfTwoPoints, getRightestPoints } from '../../utils';\n\nconst log = debug('pie-lib:graphing:polygon');\n\nexport const buildLines = (points, closed) => {\n const expanded = points.reduce((acc, p, index) => {\n acc.push({ ...p, index });\n\n const isLast = index === points.length - 1;\n const next = isLast ? 0 : index + 1;\n\n acc.push({ ...points[next], index: next });\n\n return acc;\n }, []);\n\n const all = chunk(expanded, 2).map(([from, to]) => {\n return { from, to };\n });\n\n return closed ? all : initial(all);\n};\n\nexport const swap = (arr, ...rest) => {\n const pairs = chunk(rest, 2);\n\n return pairs.reduce(\n (acc, pr) => {\n if (pr.length === 2) {\n let [e, replacement] = pr;\n\n invariant(Number.isFinite(e.index), 'Index must be defined');\n\n const index = e.index;\n // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);\n\n if (index >= 0) {\n acc.splice(index, 1, replacement);\n\n return acc;\n } else {\n return acc;\n }\n } else {\n return acc;\n }\n },\n [...arr],\n );\n};\n\nexport class RawBaseComponent extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClosePolygon: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n isToolActive: PropTypes.bool,\n middle: PropTypes.object,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n limitLabeling: PropTypes.bool,\n onChangeLabelProps: PropTypes.func,\n onChangeProps: PropTypes.func,\n };\n\n static defaultProps = {\n points: [],\n };\n\n dragPoint = (index, from, to) => {\n log('[dragPoint] from, to:', from, to);\n const { onChange, points } = this.props;\n const update = [...points];\n const overlapPoint = !!(points || []).find((p) => equalPoints(p, to));\n\n if (equalPoints(from, to) || overlapPoint) {\n return;\n }\n\n if (points[index].label) {\n to.label = points[index].label;\n }\n\n update.splice(index, 1, to);\n onChange(update);\n };\n\n dragLine = (existing, next) => {\n log('[dragLine]: ', existing, next);\n const { onChange } = this.props;\n\n if (existing.from.label) {\n next.from.label = existing.from.label;\n }\n\n if (existing.to.label) {\n next.to.label = existing.to.label;\n }\n\n const points = swap(this.props.points, existing.from, next.from, existing.to, next.to);\n onChange(points);\n };\n\n dragPoly = (existing, next) => {\n log('[dragPoly] ', existing, next);\n const { onChange } = this.props;\n\n next.forEach((point, index) => {\n if (existing[index].label) {\n next[index].label = existing[index].label;\n }\n });\n\n onChange(next);\n };\n\n close = () => {\n const { points, onClosePolygon } = this.props;\n log('[close] ...');\n\n if (points.length >= 3) {\n onClosePolygon();\n } else {\n log('[close] - nope');\n }\n };\n\n labelChange = (point, index) => {\n const { points, onChangeProps } = this.props;\n const updatedPoint = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete updatedPoint.label;\n }\n\n const update = [...points];\n\n update.splice(index, 1, updatedPoint);\n onChangeProps(update);\n };\n\n clickPoint = (point, index, data) => {\n const {\n closed,\n disabled,\n onClick,\n isToolActive,\n labelModeEnabled,\n limitLabeling,\n onChangeProps,\n onChangeLabelProps,\n points,\n } = this.props;\n\n if (labelModeEnabled) {\n // limit labeling the points of the polygon\n if (disabled || limitLabeling) {\n return;\n }\n\n if (points && index === points.length) {\n const { a, b } = getRightestPoints(points);\n const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };\n\n onChangeLabelProps(middle);\n } else {\n const update = [...points];\n\n update.splice(index, 1, { label: '', ...point });\n onChangeProps(update);\n }\n\n // defer the focus() call with setTimeout to allow the re-render to complete first.\n setTimeout(() => {\n if (this.input[index]) {\n this.input[index].focus();\n }\n }, 0);\n\n return;\n }\n\n if (isToolActive && !closed && index === 0) {\n this.close();\n return;\n }\n\n onClick(point || data);\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n closed,\n coordinatesOnHover,\n correctness,\n disabled,\n graphProps,\n onChangeLabelProps,\n onDragStart,\n onDragStop,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const lines = buildLines(points, closed);\n const common = { onDragStart, onDragStop, graphProps, disabled, correctness };\n const polygonLabelIndex = (points && points.length) || 0;\n let polygonLabelNode = null;\n\n if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {\n polygonLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[polygonLabelIndex] = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={(label) => onChangeLabelProps({ ...middle, label })}\n />,\n labelNode,\n );\n }\n\n return (\n <g>\n {closed ? (\n <React.Fragment>\n <DraggablePolygon\n points={points}\n onDrag={this.dragPoly.bind(this, points)}\n closed={closed}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n {polygonLabelNode}\n </React.Fragment>\n ) : (\n <Polygon points={points} graphProps={graphProps} closed={closed} />\n )}\n {(lines || []).map((l, index) => (\n <Line\n key={`line-${index}`}\n from={l.from}\n to={l.to}\n onDrag={this.dragLine.bind(this, l)}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n ))}\n\n {(points || []).map((p, index) => {\n return [\n <BasePoint\n key={`point-${index}`}\n coordinatesOnHover={coordinatesOnHover}\n labelNode={labelNode}\n x={p.x}\n y={p.y}\n onDrag={this.dragPoint.bind(this, index, p)}\n {...common}\n onClick={this.clickPoint.bind(this, p, index)}\n />,\n labelNode && Object.prototype.hasOwnProperty.call(p, 'label')\n ? ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[index] = r)}\n disabled={!labelModeEnabled}\n mark={p}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...p, label }, index)}\n />,\n labelNode,\n )\n : null,\n ];\n })}\n </g>\n );\n }\n}\n\nexport const BaseComponent = RawBaseComponent;\n\nexport default class Component extends React.Component {\n static propTypes = {\n ...ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n change = (points) => {\n const {\n mark: { middle },\n } = this.props;\n const mark = { ...this.state.mark, points };\n\n if (middle) {\n const { a, b } = getRightestPoints(points);\n\n mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };\n }\n\n this.setState({ mark });\n };\n\n changeProps = (points) => {\n const mark = { ...this.props.mark, points };\n\n this.props.onChange(this.props.mark, mark);\n };\n\n changeLabelProps = (point) => {\n const { mark, onChange } = this.props;\n const middle = { ...mark.middle, ...point };\n\n onChange(mark, { ...mark, middle });\n };\n\n closePolygon = () => {\n log('[closePolygon] ...');\n const { onComplete, mark } = this.props;\n const update = { ...mark, closed: true };\n\n onComplete(mark, update);\n };\n\n dragStart = () => this.setState({ mark: this.props.mark });\n\n dragStop = () => {\n const { onChange } = this.props;\n const m = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n onChange(this.props.mark, m);\n });\n };\n\n render() {\n const { coordinatesOnHover, mark, graphProps, onClick, isToolActive, labelNode, labelModeEnabled, limitLabeling } =\n this.props;\n const { mark: stateMark } = this.state;\n\n return (\n <BaseComponent\n {...(stateMark || mark)}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.change}\n onChangeLabelProps={this.changeLabelProps}\n onChangeProps={this.changeProps}\n onClosePolygon={this.closePolygon}\n onDragStart={this.dragStart}\n onDragStop={this.dragStop}\n onClick={onClick}\n graphProps={graphProps}\n isToolActive={isToolActive}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\n />\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,KAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,QAAA,GAAAC,uBAAA,CAAAR,OAAA;AACA,IAAAS,KAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,SAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,UAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,MAAA,GAAAb,OAAA;AAAmF,SAAAQ,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,wBAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,WAAAnB,CAAA,EAAAK,CAAA,EAAAN,CAAA,WAAAM,CAAA,OAAAe,gBAAA,aAAAf,CAAA,OAAAgB,2BAAA,aAAArB,CAAA,EAAAsB,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAnB,CAAA,EAAAN,CAAA,YAAAqB,gBAAA,aAAApB,CAAA,EAAAyB,WAAA,IAAApB,CAAA,CAAAqB,KAAA,CAAA1B,CAAA,EAAAD,CAAA;AAAA,SAAAuB,0BAAA,cAAAtB,CAAA,IAAA2B,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAd,IAAA,CAAAQ,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAA3B,CAAA,aAAAsB,yBAAA,YAAAA,0BAAA,aAAAtB,CAAA;AAAA,SAAA8B,QAAA/B,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAe,IAAA,CAAAhC,CAAA,OAAAiB,MAAA,CAAAgB,qBAAA,QAAA3B,CAAA,GAAAW,MAAA,CAAAgB,qBAAA,CAAAjC,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAA4B,MAAA,WAAA/B,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAgC,UAAA,OAAAlC,CAAA,CAAAmC,IAAA,CAAAT,KAAA,CAAA1B,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAAoC,cAAArC,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAmC,SAAA,CAAAC,MAAA,EAAApC,CAAA,UAAAF,CAAA,WAAAqC,SAAA,CAAAnC,CAAA,IAAAmC,SAAA,CAAAnC,CAAA,QAAAA,CAAA,OAAA4B,OAAA,CAAAd,MAAA,CAAAhB,CAAA,OAAAuC,OAAA,WAAArC,CAAA,QAAAsC,gBAAA,aAAAzC,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAyB,yBAAA,GAAAzB,MAAA,CAAA0B,gBAAA,CAAA3C,CAAA,EAAAiB,MAAA,CAAAyB,yBAAA,CAAAzC,CAAA,KAAA8B,OAAA,CAAAd,MAAA,CAAAhB,CAAA,GAAAuC,OAAA,WAAArC,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAEnF,IAAM4C,GAAG,GAAG,IAAAC,iBAAK,EAAC,0BAA0B,CAAC;AAEtC,IAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,SAAbA,UAAUA,CAAIE,MAAM,EAAEC,MAAM,EAAK;EAC5C,IAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM,CAAC,UAACC,GAAG,EAAEC,CAAC,EAAEC,KAAK,EAAK;IAChDF,GAAG,CAAChB,IAAI,CAAAC,aAAA,CAAAA,aAAA,KAAMgB,CAAC;MAAEC,KAAK,EAALA;IAAK,EAAE,CAAC;IAEzB,IAAMC,MAAM,GAAGD,KAAK,KAAKN,MAAM,CAACT,MAAM,GAAG,CAAC;IAC1C,IAAMiB,IAAI,GAAGD,MAAM,GAAG,CAAC,GAAGD,KAAK,GAAG,CAAC;IAEnCF,GAAG,CAAChB,IAAI,CAAAC,aAAA,CAAAA,aAAA,KAAMW,MAAM,CAACQ,IAAI,CAAC;MAAEF,KAAK,EAAEE;IAAI,EAAE,CAAC;IAE1C,OAAOJ,GAAG;EACZ,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMK,GAAG,GAAG,IAAAC,eAAK,EAACR,QAAQ,EAAE,CAAC,CAAC,CAACS,GAAG,CAAC,UAAAC,IAAA,EAAgB;IAAA,IAAAC,KAAA,OAAAC,eAAA,aAAAF,IAAA;MAAdG,IAAI,GAAAF,KAAA;MAAEG,EAAE,GAAAH,KAAA;IAC3C,OAAO;MAAEE,IAAI,EAAJA,IAAI;MAAEC,EAAE,EAAFA;IAAG,CAAC;EACrB,CAAC,CAAC;EAEF,OAAOf,MAAM,GAAGQ,GAAG,GAAG,IAAAQ,iBAAO,EAACR,GAAG,CAAC;AACpC,CAAC;AAEM,IAAMS,IAAI,GAAAnB,OAAA,CAAAmB,IAAA,GAAG,SAAPA,IAAIA,CAAIC,GAAG,EAAc;EAAA,SAAAC,IAAA,GAAA9B,SAAA,CAAAC,MAAA,EAAT8B,IAAI,OAAAC,KAAA,CAAAF,IAAA,OAAAA,IAAA,WAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;IAAJF,IAAI,CAAAE,IAAA,QAAAjC,SAAA,CAAAiC,IAAA;EAAA;EAC/B,IAAMC,KAAK,GAAG,IAAAd,eAAK,EAACW,IAAI,EAAE,CAAC,CAAC;EAE5B,OAAOG,KAAK,CAACrB,MAAM,CACjB,UAACC,GAAG,EAAEqB,EAAE,EAAK;IACX,IAAIA,EAAE,CAAClC,MAAM,KAAK,CAAC,EAAE;MACnB,IAAAmC,GAAA,OAAAZ,eAAA,aAAuBW,EAAE;QAApBzE,CAAC,GAAA0E,GAAA;QAAEC,WAAW,GAAAD,GAAA;MAEnB,IAAAE,qBAAS,EAACC,MAAM,CAACC,QAAQ,CAAC9E,CAAC,CAACsD,KAAK,CAAC,EAAE,uBAAuB,CAAC;MAE5D,IAAMA,KAAK,GAAGtD,CAAC,CAACsD,KAAK;MACrB;;MAEA,IAAIA,KAAK,IAAI,CAAC,EAAE;QACdF,GAAG,CAAC2B,MAAM,CAACzB,KAAK,EAAE,CAAC,EAAEqB,WAAW,CAAC;QAEjC,OAAOvB,GAAG;MACZ,CAAC,MAAM;QACL,OAAOA,GAAG;MACZ;IACF,CAAC,MAAM;MACL,OAAOA,GAAG;IACZ;EACF,CAAC,MAAA4B,mBAAA,aACGb,GAAG,CACT,CAAC;AACH,CAAC;AAAC,IAEWc,gBAAgB,GAAAlC,OAAA,CAAAkC,gBAAA,0BAAAC,gBAAA;EAAA,SAAAD,iBAAA;IAAA,IAAAE,KAAA;IAAA,IAAAC,gBAAA,mBAAAH,gBAAA;IAAA,SAAAI,KAAA,GAAA/C,SAAA,CAAAC,MAAA,EAAA+C,IAAA,OAAAhB,KAAA,CAAAe,KAAA,GAAAE,KAAA,MAAAA,KAAA,GAAAF,KAAA,EAAAE,KAAA;MAAAD,IAAA,CAAAC,KAAA,IAAAjD,SAAA,CAAAiD,KAAA;IAAA;IAAAJ,KAAA,GAAA/D,UAAA,OAAA6D,gBAAA,KAAAO,MAAA,CAAAF,IAAA;IAAA,IAAA7C,gBAAA,aAAA0C,KAAA,eA4Bf,UAAC7B,KAAK,EAAES,IAAI,EAAEC,EAAE,EAAK;MAC/BpB,GAAG,CAAC,uBAAuB,EAAEmB,IAAI,EAAEC,EAAE,CAAC;MACtC,IAAAyB,WAAA,GAA6BN,KAAA,CAAKO,KAAK;QAA/BC,QAAQ,GAAAF,WAAA,CAARE,QAAQ;QAAE3C,MAAM,GAAAyC,WAAA,CAANzC,MAAM;MACxB,IAAM4C,MAAM,OAAAZ,mBAAA,aAAOhC,MAAM,CAAC;MAC1B,IAAM6C,YAAY,GAAG,CAAC,CAAC,CAAC7C,MAAM,IAAI,EAAE,EAAE8C,IAAI,CAAC,UAACzC,CAAC;QAAA,OAAK,IAAA0C,kBAAW,EAAC1C,CAAC,EAAEW,EAAE,CAAC;MAAA,EAAC;MAErE,IAAI,IAAA+B,kBAAW,EAAChC,IAAI,EAAEC,EAAE,CAAC,IAAI6B,YAAY,EAAE;QACzC;MACF;MAEA,IAAI7C,MAAM,CAACM,KAAK,CAAC,CAAC0C,KAAK,EAAE;QACvBhC,EAAE,CAACgC,KAAK,GAAGhD,MAAM,CAACM,KAAK,CAAC,CAAC0C,KAAK;MAChC;MAEAJ,MAAM,CAACb,MAAM,CAACzB,KAAK,EAAE,CAAC,EAAEU,EAAE,CAAC;MAC3B2B,QAAQ,CAACC,MAAM,CAAC;IAClB,CAAC;IAAA,IAAAnD,gBAAA,aAAA0C,KAAA,cAEU,UAACc,QAAQ,EAAEzC,IAAI,EAAK;MAC7BZ,GAAG,CAAC,cAAc,EAAEqD,QAAQ,EAAEzC,IAAI,CAAC;MACnC,IAAQmC,QAAQ,GAAKR,KAAA,CAAKO,KAAK,CAAvBC,QAAQ;MAEhB,IAAIM,QAAQ,CAAClC,IAAI,CAACiC,KAAK,EAAE;QACvBxC,IAAI,CAACO,IAAI,CAACiC,KAAK,GAAGC,QAAQ,CAAClC,IAAI,CAACiC,KAAK;MACvC;MAEA,IAAIC,QAAQ,CAACjC,EAAE,CAACgC,KAAK,EAAE;QACrBxC,IAAI,CAACQ,EAAE,CAACgC,KAAK,GAAGC,QAAQ,CAACjC,EAAE,CAACgC,KAAK;MACnC;MAEA,IAAMhD,MAAM,GAAGkB,IAAI,CAACiB,KAAA,CAAKO,KAAK,CAAC1C,MAAM,EAAEiD,QAAQ,CAAClC,IAAI,EAAEP,IAAI,CAACO,IAAI,EAAEkC,QAAQ,CAACjC,EAAE,EAAER,IAAI,CAACQ,EAAE,CAAC;MACtF2B,QAAQ,CAAC3C,MAAM,CAAC;IAClB,CAAC;IAAA,IAAAP,gBAAA,aAAA0C,KAAA,cAEU,UAACc,QAAQ,EAAEzC,IAAI,EAAK;MAC7BZ,GAAG,CAAC,aAAa,EAAEqD,QAAQ,EAAEzC,IAAI,CAAC;MAClC,IAAQmC,QAAQ,GAAKR,KAAA,CAAKO,KAAK,CAAvBC,QAAQ;MAEhBnC,IAAI,CAAChB,OAAO,CAAC,UAAC0D,KAAK,EAAE5C,KAAK,EAAK;QAC7B,IAAI2C,QAAQ,CAAC3C,KAAK,CAAC,CAAC0C,KAAK,EAAE;UACzBxC,IAAI,CAACF,KAAK,CAAC,CAAC0C,KAAK,GAAGC,QAAQ,CAAC3C,KAAK,CAAC,CAAC0C,KAAK;QAC3C;MACF,CAAC,CAAC;MAEFL,QAAQ,CAACnC,IAAI,CAAC;IAChB,CAAC;IAAA,IAAAf,gBAAA,aAAA0C,KAAA,WAEO,YAAM;MACZ,IAAAgB,YAAA,GAAmChB,KAAA,CAAKO,KAAK;QAArC1C,MAAM,GAAAmD,YAAA,CAANnD,MAAM;QAAEoD,cAAc,GAAAD,YAAA,CAAdC,cAAc;MAC9BxD,GAAG,CAAC,aAAa,CAAC;MAElB,IAAII,MAAM,CAACT,MAAM,IAAI,CAAC,EAAE;QACtB6D,cAAc,CAAC,CAAC;MAClB,CAAC,MAAM;QACLxD,GAAG,CAAC,gBAAgB,CAAC;MACvB;IACF,CAAC;IAAA,IAAAH,gBAAA,aAAA0C,KAAA,iBAEa,UAACe,KAAK,EAAE5C,KAAK,EAAK;MAC9B,IAAA+C,YAAA,GAAkClB,KAAA,CAAKO,KAAK;QAApC1C,MAAM,GAAAqD,YAAA,CAANrD,MAAM;QAAEsD,aAAa,GAAAD,YAAA,CAAbC,aAAa;MAC7B,IAAMC,YAAY,GAAAlE,aAAA,KAAQ6D,KAAK,CAAE;MAEjC,IAAI,CAACA,KAAK,CAACF,KAAK,IAAI,IAAAQ,iBAAO,EAACN,KAAK,CAACF,KAAK,CAAC,EAAE;QACxC,OAAOO,YAAY,CAACP,KAAK;MAC3B;MAEA,IAAMJ,MAAM,OAAAZ,mBAAA,aAAOhC,MAAM,CAAC;MAE1B4C,MAAM,CAACb,MAAM,CAACzB,KAAK,EAAE,CAAC,EAAEiD,YAAY,CAAC;MACrCD,aAAa,CAACV,MAAM,CAAC;IACvB,CAAC;IAAA,IAAAnD,gBAAA,aAAA0C,KAAA,gBAEY,UAACe,KAAK,EAAE5C,KAAK,EAAEmD,IAAI,EAAK;MACnC,IAAAC,YAAA,GAUIvB,KAAA,CAAKO,KAAK;QATZzC,MAAM,GAAAyD,YAAA,CAANzD,MAAM;QACN0D,QAAQ,GAAAD,YAAA,CAARC,QAAQ;QACRC,OAAO,GAAAF,YAAA,CAAPE,OAAO;QACPC,YAAY,GAAAH,YAAA,CAAZG,YAAY;QACZC,gBAAgB,GAAAJ,YAAA,CAAhBI,gBAAgB;QAChBC,aAAa,GAAAL,YAAA,CAAbK,aAAa;QACbT,aAAa,GAAAI,YAAA,CAAbJ,aAAa;QACbU,kBAAkB,GAAAN,YAAA,CAAlBM,kBAAkB;QAClBhE,MAAM,GAAA0D,YAAA,CAAN1D,MAAM;MAGR,IAAI8D,gBAAgB,EAAE;QACpB;QACA,IAAIH,QAAQ,IAAII,aAAa,EAAE;UAC7B;QACF;QAEA,IAAI/D,MAAM,IAAIM,KAAK,KAAKN,MAAM,CAACT,MAAM,EAAE;UACrC,IAAA0E,kBAAA,GAAiB,IAAAC,wBAAiB,EAAClE,MAAM,CAAC;YAAlCmE,CAAC,GAAAF,kBAAA,CAADE,CAAC;YAAEC,CAAC,GAAAH,kBAAA,CAADG,CAAC;UACZ,IAAMC,MAAM,GAAAhF,aAAA,CAAAA,aAAA;YAAK2D,KAAK,EAAE;UAAE,GAAKE,KAAK,GAAK,IAAAoB,2BAAoB,EAACH,CAAC,EAAEC,CAAC,CAAC,CAAE;UAErEJ,kBAAkB,CAACK,MAAM,CAAC;QAC5B,CAAC,MAAM;UACL,IAAMzB,MAAM,OAAAZ,mBAAA,aAAOhC,MAAM,CAAC;UAE1B4C,MAAM,CAACb,MAAM,CAACzB,KAAK,EAAE,CAAC,EAAAjB,aAAA;YAAI2D,KAAK,EAAE;UAAE,GAAKE,KAAK,CAAE,CAAC;UAChDI,aAAa,CAACV,MAAM,CAAC;QACvB;;QAEA;QACA2B,UAAU,CAAC,YAAM;UACf,IAAIpC,KAAA,CAAKqC,KAAK,CAAClE,KAAK,CAAC,EAAE;YACrB6B,KAAA,CAAKqC,KAAK,CAAClE,KAAK,CAAC,CAACmE,KAAK,CAAC,CAAC;UAC3B;QACF,CAAC,EAAE,CAAC,CAAC;QAEL;MACF;MAEA,IAAIZ,YAAY,IAAI,CAAC5D,MAAM,IAAIK,KAAK,KAAK,CAAC,EAAE;QAC1C6B,KAAA,CAAKuC,KAAK,CAAC,CAAC;QACZ;MACF;MAEAd,OAAO,CAACV,KAAK,IAAIO,IAAI,CAAC;IACxB,CAAC;IAED;IAAA,IAAAhE,gBAAA,aAAA0C,KAAA,WACQ,CAAC,CAAC;IAAA,OAAAA,KAAA;EAAA;EAAA,IAAAwC,UAAA,aAAA1C,gBAAA,EAAAC,gBAAA;EAAA,WAAA0C,aAAA,aAAA3C,gBAAA;IAAA4C,GAAA;IAAAC,KAAA,EAEV,SAAAC,MAAMA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACP,IAAAC,YAAA,GAaI,IAAI,CAACvC,KAAK;QAZZzC,MAAM,GAAAgF,YAAA,CAANhF,MAAM;QACNiF,kBAAkB,GAAAD,YAAA,CAAlBC,kBAAkB;QAClBC,WAAW,GAAAF,YAAA,CAAXE,WAAW;QACXxB,QAAQ,GAAAsB,YAAA,CAARtB,QAAQ;QACRyB,UAAU,GAAAH,YAAA,CAAVG,UAAU;QACVpB,kBAAkB,GAAAiB,YAAA,CAAlBjB,kBAAkB;QAClBqB,WAAW,GAAAJ,YAAA,CAAXI,WAAW;QACXC,UAAU,GAAAL,YAAA,CAAVK,UAAU;QACVtF,MAAM,GAAAiF,YAAA,CAANjF,MAAM;QACNqE,MAAM,GAAAY,YAAA,CAANZ,MAAM;QACNkB,SAAS,GAAAN,YAAA,CAATM,SAAS;QACTzB,gBAAgB,GAAAmB,YAAA,CAAhBnB,gBAAgB;MAElB,IAAM0B,KAAK,GAAG1F,UAAU,CAACE,MAAM,EAAEC,MAAM,CAAC;MACxC,IAAMwF,MAAM,GAAG;QAAEJ,WAAW,EAAXA,WAAW;QAAEC,UAAU,EAAVA,UAAU;QAAEF,UAAU,EAAVA,UAAU;QAAEzB,QAAQ,EAARA,QAAQ;QAAEwB,WAAW,EAAXA;MAAY,CAAC;MAC7E,IAAMO,iBAAiB,GAAI1F,MAAM,IAAIA,MAAM,CAACT,MAAM,IAAK,CAAC;MACxD,IAAIoG,gBAAgB,GAAG,IAAI;MAE3B,IAAIJ,SAAS,IAAIlB,MAAM,IAAIpG,MAAM,CAACY,SAAS,CAACd,cAAc,CAACC,IAAI,CAACqG,MAAM,EAAE,OAAO,CAAC,EAAE;QAChFsB,gBAAgB,gBAAGC,oBAAQ,CAACC,YAAY,cACtC7J,MAAA,YAAA8J,aAAA,CAAChJ,UAAA,WAAS;UACRiJ,QAAQ,EAAE,SAAVA,QAAQA,CAAG5I,CAAC;YAAA,OAAM6H,MAAI,CAACR,KAAK,CAACkB,iBAAiB,CAAC,GAAGvI,CAAC;UAAA,CAAE;UACrDwG,QAAQ,EAAE,CAACG,gBAAiB;UAC5BkC,IAAI,EAAE3B,MAAO;UACbe,UAAU,EAAEA,UAAW;UACvBzC,QAAQ,EAAE,SAAVA,QAAQA,CAAGK,KAAK;YAAA,OAAKgB,kBAAkB,CAAA3E,aAAA,CAAAA,aAAA,KAAMgF,MAAM;cAAErB,KAAK,EAALA;YAAK,EAAE,CAAC;UAAA;QAAC,CAC/D,CAAC,EACFuC,SACF,CAAC;MACH;MAEA,oBACEvJ,MAAA,YAAA8J,aAAA,YACG7F,MAAM,gBACLjE,MAAA,YAAA8J,aAAA,CAAC9J,MAAA,WAAK,CAACiK,QAAQ,qBACbjK,MAAA,YAAA8J,aAAA,CAACrJ,QAAA,WAAgB,MAAAyJ,SAAA;QACflG,MAAM,EAAEA,MAAO;QACfmG,MAAM,EAAE,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,IAAI,EAAErG,MAAM,CAAE;QACzCC,MAAM,EAAEA;MAAO,GACXwF,MAAM;QACV7B,OAAO,EAAE,IAAI,CAAC0C,UAAU,CAACD,IAAI,CAAC,IAAI,EAAEhC,MAAM,EAAEqB,iBAAiB;MAAE,EAChE,CAAC,EACDC,gBACa,CAAC,gBAEjB3J,MAAA,YAAA8J,aAAA,CAACrJ,QAAA,CAAA8J,OAAO;QAACvG,MAAM,EAAEA,MAAO;QAACoF,UAAU,EAAEA,UAAW;QAACnF,MAAM,EAAEA;MAAO,CAAE,CACnE,EACA,CAACuF,KAAK,IAAI,EAAE,EAAE7E,GAAG,CAAC,UAAC6F,CAAC,EAAElG,KAAK;QAAA,oBAC1BtE,MAAA,YAAA8J,aAAA,CAACtJ,KAAA,WAAI,MAAA0J,SAAA;UACHrB,GAAG,UAAArC,MAAA,CAAUlC,KAAK,CAAG;UACrBS,IAAI,EAAEyF,CAAC,CAACzF,IAAK;UACbC,EAAE,EAAEwF,CAAC,CAACxF,EAAG;UACTmF,MAAM,EAAEnB,MAAI,CAACyB,QAAQ,CAACJ,IAAI,CAACrB,MAAI,EAAEwB,CAAC;QAAE,GAChCf,MAAM;UACV7B,OAAO,EAAEoB,MAAI,CAACsB,UAAU,CAACD,IAAI,CAACrB,MAAI,EAAEX,MAAM,EAAEqB,iBAAiB;QAAE,EAChE,CAAC;MAAA,CACH,CAAC,EAED,CAAC1F,MAAM,IAAI,EAAE,EAAEW,GAAG,CAAC,UAACN,CAAC,EAAEC,KAAK,EAAK;QAChC,OAAO,cACLtE,MAAA,YAAA8J,aAAA,CAACzJ,MAAA,CAAAqK,SAAS,MAAAR,SAAA;UACRrB,GAAG,WAAArC,MAAA,CAAWlC,KAAK,CAAG;UACtB4E,kBAAkB,EAAEA,kBAAmB;UACvCK,SAAS,EAAEA,SAAU;UACrBoB,CAAC,EAAEtG,CAAC,CAACsG,CAAE;UACPC,CAAC,EAAEvG,CAAC,CAACuG,CAAE;UACPT,MAAM,EAAEnB,MAAI,CAAC6B,SAAS,CAACR,IAAI,CAACrB,MAAI,EAAE1E,KAAK,EAAED,CAAC;QAAE,GACxCoF,MAAM;UACV7B,OAAO,EAAEoB,MAAI,CAACsB,UAAU,CAACD,IAAI,CAACrB,MAAI,EAAE3E,CAAC,EAAEC,KAAK;QAAE,EAC/C,CAAC,EACFiF,SAAS,IAAItH,MAAM,CAACY,SAAS,CAACd,cAAc,CAACC,IAAI,CAACqC,CAAC,EAAE,OAAO,CAAC,gBACzDuF,oBAAQ,CAACC,YAAY,cACnB7J,MAAA,YAAA8J,aAAA,CAAChJ,UAAA,WAAS;UACRiJ,QAAQ,EAAE,SAAVA,QAAQA,CAAG5I,CAAC;YAAA,OAAM6H,MAAI,CAACR,KAAK,CAAClE,KAAK,CAAC,GAAGnD,CAAC;UAAA,CAAE;UACzCwG,QAAQ,EAAE,CAACG,gBAAiB;UAC5BkC,IAAI,EAAE3F,CAAE;UACR+E,UAAU,EAAEA,UAAW;UACvBzC,QAAQ,EAAE,SAAVA,QAAQA,CAAGK,KAAK;YAAA,OAAKgC,MAAI,CAAC8B,WAAW,CAAAzH,aAAA,CAAAA,aAAA,KAAMgB,CAAC;cAAE2C,KAAK,EAALA;YAAK,IAAI1C,KAAK,CAAC;UAAA;QAAC,CAC/D,CAAC,EACFiF,SACF,CAAC,GACD,IAAI,CACT;MACH,CAAC,CACA,CAAC;IAER;EAAC;AAAA,EAhPmCwB,iBAAK,CAACC,SAAS;AAAA,IAAAvH,gBAAA,aAAxCwC,gBAAgB,eACR;EACjBgF,OAAO,EAAEC,qBAAS,CAACC,MAAM;EACzBC,SAAS,EAAEF,qBAAS,CAACG,MAAM;EAC3B1D,QAAQ,EAAEuD,qBAAS,CAACI,IAAI;EACxBnC,WAAW,EAAE+B,qBAAS,CAACG,MAAM;EAC7BrH,MAAM,EAAEkH,qBAAS,CAACK,OAAO,CAACC,WAAK,CAACC,SAAS,CAAC;EAC1CxH,MAAM,EAAEiH,qBAAS,CAACI,IAAI;EACtBpC,kBAAkB,EAAEgC,qBAAS,CAACI,IAAI;EAClC3E,QAAQ,EAAEuE,qBAAS,CAACQ,IAAI,CAACC,UAAU;EACnCvE,cAAc,EAAE8D,qBAAS,CAACQ,IAAI,CAACC,UAAU;EACzCtC,WAAW,EAAE6B,qBAAS,CAACQ,IAAI;EAC3BpC,UAAU,EAAE4B,qBAAS,CAACQ,IAAI;EAC1B9D,OAAO,EAAEsD,qBAAS,CAACQ,IAAI;EACvBtC,UAAU,EAAEoC,WAAK,CAACI,cAAc,CAACD,UAAU;EAC3C9D,YAAY,EAAEqD,qBAAS,CAACI,IAAI;EAC5BjD,MAAM,EAAE6C,qBAAS,CAACC,MAAM;EACxB5B,SAAS,EAAE2B,qBAAS,CAACC,MAAM;EAC3BrD,gBAAgB,EAAEoD,qBAAS,CAACI,IAAI;EAChCvD,aAAa,EAAEmD,qBAAS,CAACI,IAAI;EAC7BtD,kBAAkB,EAAEkD,qBAAS,CAACQ,IAAI;EAClCpE,aAAa,EAAE4D,qBAAS,CAACQ;AAC3B,CAAC;AAAA,IAAAjI,gBAAA,aAtBUwC,gBAAgB,kBAwBL;EACpBjC,MAAM,EAAE;AACV,CAAC;AAyNI,IAAM6H,aAAa,GAAA9H,OAAA,CAAA8H,aAAA,GAAG5F,gBAAgB;AAAC,IAEzB+E,SAAS,GAAAjH,OAAA,qCAAA+H,iBAAA;EAQ5B,SAAAd,UAAYtE,KAAK,EAAE;IAAA,IAAAqF,MAAA;IAAA,IAAA3F,gBAAA,mBAAA4E,SAAA;IACjBe,MAAA,GAAA3J,UAAA,OAAA4I,SAAA,GAAMtE,KAAK;IAAE,IAAAjD,gBAAA,aAAAsI,MAAA,YAIN,UAAC/H,MAAM,EAAK;MACnB,IACUqE,MAAM,GACZ0D,MAAA,CAAKrF,KAAK,CADZsD,IAAI,CAAI3B,MAAM;MAEhB,IAAM2B,IAAI,GAAA3G,aAAA,CAAAA,aAAA,KAAQ0I,MAAA,CAAKC,KAAK,CAAChC,IAAI;QAAEhG,MAAM,EAANA;MAAM,EAAE;MAE3C,IAAIqE,MAAM,EAAE;QACV,IAAA4D,mBAAA,GAAiB,IAAA/D,wBAAiB,EAAClE,MAAM,CAAC;UAAlCmE,CAAC,GAAA8D,mBAAA,CAAD9D,CAAC;UAAEC,CAAC,GAAA6D,mBAAA,CAAD7D,CAAC;QAEZ4B,IAAI,CAAC3B,MAAM,GAAAhF,aAAA,CAAAA,aAAA,KAAQgF,MAAM,GAAK,IAAAC,2BAAoB,EAACH,CAAC,EAAEC,CAAC,CAAC,CAAE;MAC5D;MAEA2D,MAAA,CAAKG,QAAQ,CAAC;QAAElC,IAAI,EAAJA;MAAK,CAAC,CAAC;IACzB,CAAC;IAAA,IAAAvG,gBAAA,aAAAsI,MAAA,iBAEa,UAAC/H,MAAM,EAAK;MACxB,IAAMgG,IAAI,GAAA3G,aAAA,CAAAA,aAAA,KAAQ0I,MAAA,CAAKrF,KAAK,CAACsD,IAAI;QAAEhG,MAAM,EAANA;MAAM,EAAE;MAE3C+H,MAAA,CAAKrF,KAAK,CAACC,QAAQ,CAACoF,MAAA,CAAKrF,KAAK,CAACsD,IAAI,EAAEA,IAAI,CAAC;IAC5C,CAAC;IAAA,IAAAvG,gBAAA,aAAAsI,MAAA,sBAEkB,UAAC7E,KAAK,EAAK;MAC5B,IAAAiF,YAAA,GAA2BJ,MAAA,CAAKrF,KAAK;QAA7BsD,IAAI,GAAAmC,YAAA,CAAJnC,IAAI;QAAErD,QAAQ,GAAAwF,YAAA,CAARxF,QAAQ;MACtB,IAAM0B,MAAM,GAAAhF,aAAA,CAAAA,aAAA,KAAQ2G,IAAI,CAAC3B,MAAM,GAAKnB,KAAK,CAAE;MAE3CP,QAAQ,CAACqD,IAAI,EAAA3G,aAAA,CAAAA,aAAA,KAAO2G,IAAI;QAAE3B,MAAM,EAANA;MAAM,EAAE,CAAC;IACrC,CAAC;IAAA,IAAA5E,gBAAA,aAAAsI,MAAA,kBAEc,YAAM;MACnBnI,GAAG,CAAC,oBAAoB,CAAC;MACzB,IAAAwI,aAAA,GAA6BL,MAAA,CAAKrF,KAAK;QAA/B2F,UAAU,GAAAD,aAAA,CAAVC,UAAU;QAAErC,IAAI,GAAAoC,aAAA,CAAJpC,IAAI;MACxB,IAAMpD,MAAM,GAAAvD,aAAA,CAAAA,aAAA,KAAQ2G,IAAI;QAAE/F,MAAM,EAAE;MAAI,EAAE;MAExCoI,UAAU,CAACrC,IAAI,EAAEpD,MAAM,CAAC;IAC1B,CAAC;IAAA,IAAAnD,gBAAA,aAAAsI,MAAA,eAEW;MAAA,OAAMA,MAAA,CAAKG,QAAQ,CAAC;QAAElC,IAAI,EAAE+B,MAAA,CAAKrF,KAAK,CAACsD;MAAK,CAAC,CAAC;IAAA;IAAA,IAAAvG,gBAAA,aAAAsI,MAAA,cAE/C,YAAM;MACf,IAAQpF,QAAQ,GAAKoF,MAAA,CAAKrF,KAAK,CAAvBC,QAAQ;MAChB,IAAM2F,CAAC,GAAAjJ,aAAA,KAAQ0I,MAAA,CAAKC,KAAK,CAAChC,IAAI,CAAE;MAEhC+B,MAAA,CAAKG,QAAQ,CAAC;QAAElC,IAAI,EAAEuC;MAAU,CAAC,EAAE,YAAM;QACvC5F,QAAQ,CAACoF,MAAA,CAAKrF,KAAK,CAACsD,IAAI,EAAEsC,CAAC,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC;IAhDCP,MAAA,CAAKC,KAAK,GAAG,CAAC,CAAC;IAAC,OAAAD,MAAA;EAClB;EAAC,IAAApD,UAAA,aAAAqC,SAAA,EAAAc,iBAAA;EAAA,WAAAlD,aAAA,aAAAoC,SAAA;IAAAnC,GAAA;IAAAC,KAAA,EAiDD,SAAAC,MAAMA,CAAA,EAAG;MACP,IAAAyD,YAAA,GACE,IAAI,CAAC9F,KAAK;QADJwC,kBAAkB,GAAAsD,YAAA,CAAlBtD,kBAAkB;QAAEc,IAAI,GAAAwC,YAAA,CAAJxC,IAAI;QAAEZ,UAAU,GAAAoD,YAAA,CAAVpD,UAAU;QAAExB,OAAO,GAAA4E,YAAA,CAAP5E,OAAO;QAAEC,YAAY,GAAA2E,YAAA,CAAZ3E,YAAY;QAAE0B,SAAS,GAAAiD,YAAA,CAATjD,SAAS;QAAEzB,gBAAgB,GAAA0E,YAAA,CAAhB1E,gBAAgB;QAAEC,aAAa,GAAAyE,YAAA,CAAbzE,aAAa;MAE/G,IAAc0E,SAAS,GAAK,IAAI,CAACT,KAAK,CAA9BhC,IAAI;MAEZ,oBACEhK,MAAA,YAAA8J,aAAA,CAAC+B,aAAa,MAAA3B,SAAA,iBACPuC,SAAS,IAAIzC,IAAI;QACtBd,kBAAkB,EAAEA,kBAAmB;QACvCvC,QAAQ,EAAE,IAAI,CAAC+F,MAAO;QACtB1E,kBAAkB,EAAE,IAAI,CAAC2E,gBAAiB;QAC1CrF,aAAa,EAAE,IAAI,CAACsF,WAAY;QAChCxF,cAAc,EAAE,IAAI,CAACyF,YAAa;QAClCxD,WAAW,EAAE,IAAI,CAACyD,SAAU;QAC5BxD,UAAU,EAAE,IAAI,CAACyD,QAAS;QAC1BnF,OAAO,EAAEA,OAAQ;QACjBwB,UAAU,EAAEA,UAAW;QACvBvB,YAAY,EAAEA,YAAa;QAC3B0B,SAAS,EAAEA,SAAU;QACrBzB,gBAAgB,EAAEA,gBAAiB;QACnCC,aAAa,EAAEA;MAAc,EAC9B,CAAC;IAEN;EAAC;AAAA,EAnFoCgD,iBAAK,CAACC,SAAS;AAAA,IAAAvH,gBAAA,aAAjCuH,SAAS,eAAA3H,aAAA,CAAAA,aAAA,KAEvB2J,yBAAkB;EACrB5D,UAAU,EAAEoC,WAAK,CAACI,cAAc,CAACD;AAAU;AAAA,IAAAlI,gBAAA,aAH1BuH,SAAS,kBAMN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_point","_lodashEs","_debug","_line","_polygon","_interopRequireWildcard","_plot","_invariant","_reactDom","_markLabel","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","buildLines","exports","points","closed","expanded","reduce","acc","p","index","isLast","next","all","chunk","map","_ref","_ref2","_slicedToArray2","from","to","initial","swap","arr","_len","rest","Array","_key","pairs","pr","_pr","replacement","invariant","Number","isFinite","splice","_toConsumableArray2","RawBaseComponent","_React$Component","_this","_classCallCheck2","_len2","args","_key2","concat","_this$props","props","onChange","update","overlapPoint","find","equalPoints","label","existing","point","_this$props2","onClosePolygon","_this$props3","onChangeProps","updatedPoint","isEmpty","data","_this$props4","disabled","currentMiddle","middle","onClick","isToolActive","labelModeEnabled","limitLabeling","onSetMiddleLabel","_getRightestPoints","getRightestPoints","a","b","getMiddleOfTwoPoints","stripEmptyLabel","strippedPoints","strippedMiddle","setTimeout","input","focus","close","_inherits2","_createClass2","key","value","render","_this2","_this$props5","coordinatesOnHover","correctness","graphProps","onChangeLabelProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","ReactDOM","createPortal","createElement","inputRef","mark","Fragment","_extends2","onDrag","dragPoly","bind","clickPoint","Polygon","l","dragLine","BasePoint","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","_React$Component2","_this3","state","_getRightestPoints2","setState","_this3$props","_this3$props2","_this3$props3","onComplete","m","undefined","_this$props6","stateMark","change","changeLabelProps","setMiddleLabel","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"sources":["../../../src/tools/polygon/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport { chunk, initial, isEmpty } from 'lodash-es';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { equalPoints, getMiddleOfTwoPoints, getRightestPoints, stripEmptyLabel } from '../../utils';\n\nconst log = debug('pie-lib:graphing:polygon');\n\nexport const buildLines = (points, closed) => {\n const expanded = points.reduce((acc, p, index) => {\n acc.push({ ...p, index });\n\n const isLast = index === points.length - 1;\n const next = isLast ? 0 : index + 1;\n\n acc.push({ ...points[next], index: next });\n\n return acc;\n }, []);\n\n const all = chunk(expanded, 2).map(([from, to]) => {\n return { from, to };\n });\n\n return closed ? all : initial(all);\n};\n\nexport const swap = (arr, ...rest) => {\n const pairs = chunk(rest, 2);\n\n return pairs.reduce(\n (acc, pr) => {\n if (pr.length === 2) {\n let [e, replacement] = pr;\n\n invariant(Number.isFinite(e.index), 'Index must be defined');\n\n const index = e.index;\n // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);\n\n if (index >= 0) {\n acc.splice(index, 1, replacement);\n\n return acc;\n } else {\n return acc;\n }\n } else {\n return acc;\n }\n },\n [...arr],\n );\n};\n\nexport class RawBaseComponent extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClosePolygon: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n isToolActive: PropTypes.bool,\n middle: PropTypes.object,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n limitLabeling: PropTypes.bool,\n onChangeLabelProps: PropTypes.func,\n onSetMiddleLabel: PropTypes.func,\n onChangeProps: PropTypes.func,\n };\n\n static defaultProps = {\n points: [],\n };\n\n dragPoint = (index, from, to) => {\n log('[dragPoint] from, to:', from, to);\n const { onChange, points } = this.props;\n const update = [...points];\n const overlapPoint = !!(points || []).find((p) => equalPoints(p, to));\n\n if (equalPoints(from, to) || overlapPoint) {\n return;\n }\n\n if (points[index].label) {\n to.label = points[index].label;\n }\n\n update.splice(index, 1, to);\n onChange(update);\n };\n\n dragLine = (existing, next) => {\n log('[dragLine]: ', existing, next);\n const { onChange } = this.props;\n\n if (existing.from.label) {\n next.from.label = existing.from.label;\n }\n\n if (existing.to.label) {\n next.to.label = existing.to.label;\n }\n\n const points = swap(this.props.points, existing.from, next.from, existing.to, next.to);\n onChange(points);\n };\n\n dragPoly = (existing, next) => {\n log('[dragPoly] ', existing, next);\n const { onChange } = this.props;\n\n next.forEach((point, index) => {\n if (existing[index].label) {\n next[index].label = existing[index].label;\n }\n });\n\n onChange(next);\n };\n\n close = () => {\n const { points, onClosePolygon } = this.props;\n log('[close] ...');\n\n if (points.length >= 3) {\n onClosePolygon();\n } else {\n log('[close] - nope');\n }\n };\n\n labelChange = (point, index) => {\n const { points, onChangeProps } = this.props;\n const updatedPoint = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete updatedPoint.label;\n }\n\n const update = [...points];\n\n update.splice(index, 1, updatedPoint);\n onChangeProps(update);\n };\n\n clickPoint = (point, index, data) => {\n const {\n closed,\n disabled,\n middle: currentMiddle,\n onClick,\n isToolActive,\n labelModeEnabled,\n limitLabeling,\n onSetMiddleLabel,\n points,\n } = this.props;\n\n if (labelModeEnabled) {\n // limit labeling the points of the polygon\n if (disabled || limitLabeling) {\n return;\n }\n\n if (points && index === points.length) {\n const { a, b } = getRightestPoints(points);\n const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };\n\n onSetMiddleLabel(middle, points.map(stripEmptyLabel));\n } else {\n const strippedPoints = points.map(stripEmptyLabel);\n strippedPoints.splice(index, 1, { label: '', ...point });\n\n const strippedMiddle = currentMiddle ? stripEmptyLabel(currentMiddle) : currentMiddle;\n onSetMiddleLabel(strippedMiddle, strippedPoints);\n }\n\n // defer the focus() call with setTimeout to allow the re-render to complete first.\n setTimeout(() => {\n if (this.input[index]) {\n this.input[index].focus();\n }\n }, 0);\n\n return;\n }\n\n if (isToolActive && !closed && index === 0) {\n this.close();\n return;\n }\n\n onClick(point || data);\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n closed,\n coordinatesOnHover,\n correctness,\n disabled,\n graphProps,\n onChangeLabelProps,\n onDragStart,\n onDragStop,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const lines = buildLines(points, closed);\n const common = { onDragStart, onDragStop, graphProps, disabled, correctness };\n const polygonLabelIndex = (points && points.length) || 0;\n let polygonLabelNode = null;\n\n if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {\n polygonLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[polygonLabelIndex] = r)}\n disabled={disabled || !labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={(label) => onChangeLabelProps({ ...middle, label })}\n />,\n labelNode,\n );\n }\n\n return (\n <g>\n {closed ? (\n <React.Fragment>\n <DraggablePolygon\n points={points}\n onDrag={this.dragPoly.bind(this, points)}\n closed={closed}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n {polygonLabelNode}\n </React.Fragment>\n ) : (\n <Polygon points={points} graphProps={graphProps} closed={closed} />\n )}\n {(lines || []).map((l, index) => (\n <Line\n key={`line-${index}`}\n from={l.from}\n to={l.to}\n onDrag={this.dragLine.bind(this, l)}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n ))}\n\n {(points || []).map((p, index) => {\n return [\n <BasePoint\n key={`point-${index}`}\n coordinatesOnHover={coordinatesOnHover}\n labelNode={labelNode}\n x={p.x}\n y={p.y}\n onDrag={this.dragPoint.bind(this, index, p)}\n {...common}\n onClick={this.clickPoint.bind(this, p, index)}\n />,\n labelNode && Object.prototype.hasOwnProperty.call(p, 'label')\n ? ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[index] = r)}\n disabled={disabled || !labelModeEnabled}\n mark={p}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...p, label }, index)}\n />,\n labelNode,\n )\n : null,\n ];\n })}\n </g>\n );\n }\n}\n\nexport const BaseComponent = RawBaseComponent;\n\nexport default class Component extends React.Component {\n static propTypes = {\n ...ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n change = (points) => {\n const {\n mark: { middle },\n } = this.props;\n const mark = { ...this.state.mark, points };\n\n if (middle) {\n const { a, b } = getRightestPoints(points);\n\n mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };\n }\n\n this.setState({ mark });\n };\n\n changeProps = (points) => {\n const mark = { ...this.props.mark, points };\n\n this.props.onChange(this.props.mark, mark);\n };\n\n changeLabelProps = (point) => {\n const { mark, onChange } = this.props;\n const middle = { ...mark.middle, ...point };\n\n if (!middle.label || isEmpty(middle.label)) {\n delete middle.label;\n }\n\n onChange(mark, { ...mark, middle });\n };\n\n setMiddleLabel = (middle, strippedPoints) => {\n const { mark, onChange } = this.props;\n const next = { ...mark, middle };\n if (strippedPoints) {\n next.points = strippedPoints;\n }\n onChange(mark, next);\n };\n\n closePolygon = () => {\n log('[closePolygon] ...');\n const { onComplete, mark } = this.props;\n const update = { ...mark, closed: true };\n\n onComplete(mark, update);\n };\n\n dragStart = () => this.setState({ mark: this.props.mark });\n\n dragStop = () => {\n const { onChange } = this.props;\n const m = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n onChange(this.props.mark, m);\n });\n };\n\n render() {\n const { coordinatesOnHover, mark, graphProps, onClick, isToolActive, labelNode, labelModeEnabled, limitLabeling } =\n this.props;\n const { mark: stateMark } = this.state;\n\n return (\n <BaseComponent\n {...(stateMark || mark)}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.change}\n onChangeLabelProps={this.changeLabelProps}\n onSetMiddleLabel={this.setMiddleLabel}\n onChangeProps={this.changeProps}\n onClosePolygon={this.closePolygon}\n onDragStart={this.dragStart}\n onDragStop={this.dragStop}\n onClick={onClick}\n graphProps={graphProps}\n isToolActive={isToolActive}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\n />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -335,6 +335,7 @@ var lineBase = exports.lineBase = function lineBase(Comp, opts) {
335
335
  disabled = _this2$props5.disabled,
336
336
  from = _this2$props5.from,
337
337
  to = _this2$props5.to,
338
+ middle = _this2$props5.middle,
338
339
  labelModeEnabled = _this2$props5.labelModeEnabled,
339
340
  limitLabeling = _this2$props5.limitLabeling,
340
341
  onClick = _this2$props5.onClick;
@@ -354,8 +355,9 @@ var lineBase = exports.lineBase = function lineBase(Comp, opts) {
354
355
  point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
355
356
  }
356
357
  changeMarkProps((0, _defineProperty2["default"])({
357
- from: from,
358
- to: to
358
+ from: (0, _utils.stripEmptyLabel)(from),
359
+ to: (0, _utils.stripEmptyLabel)(to),
360
+ middle: (0, _utils.stripEmptyLabel)(middle)
359
361
  }, type, _objectSpread({
360
362
  label: ''
361
363
  }, point)));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_lodashEs","_point","_plot","_propTypes","_styles","_reactDom","_markLabel","_renderUi","_utils","_styles2","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","StyledLineGroup","styled","_ref","disabled","correctness","fill","stroke","color","defaults","BLACK","strokeWidth","transition","PRIMARY_DARK","disabledSecondary","correct","incorrect","missing","strokeDasharray","lineTool","exports","type","Component","addPoint","point","mark","equalPoints","root","building","from","to","lineToolComponent","_LineToolComponent","_React$Component","LineToolComponent","props","_this","_classCallCheck2","onDragStart","setState","_this$props","onChange","onDragStop","update","state","undefined","shouldNotChange","sameAxes","y","isEqual","_ref2","middle","_ref3","_this$props2","_inherits2","_createClass2","key","value","render","_this$props3","graphProps","onClick","labelNode","labelModeEnabled","coordinatesOnHover","limitLabeling","cloneDeep","isBackground","createElement","changeMark","changeMarkProps","startDrag","stopDrag","React","types","ToolPropTypeFields","GraphPropsType","isRequired","PropTypes","bool","func","PointType","dragOpts","bounds","_ref4","domain","range","area","utils","lineToArea","anchorPoint","fromDelta","delta","add","lineBase","Comp","opts","DraggableComp","gridDraggable","FromPoint","BasePoint","ToPoint","LineBase","_React$Component2","_this2","_len","args","Array","_key","concat","_this2$props","getMiddleOfTwoPoints","_ref5","draggedFrom","draggedTo","_this2$props2","label","updated","_this2$props3","onChangePoint","_this2$props4","isEmpty","data","_this2$props5","input","focus","_this3","_this$props4","common","angle","trig","toDegrees","fromLabelNode","toLabelNode","lineLabelNode","hasOwnProperty","ReactDOM","createPortal","inputRef","labelChange","_extends2","onDrag","dragComp","clickPoint","x","dragFrom","dragTo","string","object","styles","line","arrow","disabledArrow","theme"],"sources":["../../../../src/tools/shared/line/index.jsx"],"sourcesContent":["import React from 'react';\nimport { cloneDeep, isEmpty, isEqual } from 'lodash-es';\nimport { BasePoint } from '../point';\nimport { gridDraggable, trig, types, utils } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport { correct, disabled, disabledSecondary, incorrect, missing } from '../styles';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../../mark-label';\nimport { color } from '@pie-lib/render-ui';\nimport { equalPoints, getMiddleOfTwoPoints, sameAxes } from '../../../utils';\nimport { styled } from '@mui/material/styles';\n\nconst StyledLineGroup = styled('g')(({ disabled, correctness }) => ({\n '& line': {\n fill: 'transparent',\n stroke: color.defaults.BLACK,\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n },\n ...(disabled && {\n '& line': {\n ...disabledSecondary('stroke'),\n strokeWidth: 2,\n },\n }),\n ...(correctness === 'correct' && {\n '& line': {\n ...correct('stroke'),\n },\n }),\n ...(correctness === 'incorrect' && {\n '& line': {\n ...incorrect('stroke'),\n },\n }),\n ...(correctness === 'missing' && {\n '& line': {\n ...missing('stroke'),\n strokeWidth: 1,\n strokeDasharray: '4 3',\n },\n }),\n}));\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 limitLabeling: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n disabled: PropTypes.bool,\n from: types.PointType,\n to: types.PointType,\n labelModeEnabled: PropTypes.bool,\n onClick: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n startDrag = () => {\n const { onDragStart } = this.props;\n this.setState({ mark: { ...this.props.mark } });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, mark, onDragStop } = this.props;\n const update = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n const { type } = update;\n let shouldNotChange =\n type &&\n (type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') &&\n sameAxes(update.from, update.to);\n if (!shouldNotChange && type && type === 'exponential' && update.from && update.to) {\n shouldNotChange = update.from.y === 0 || update.to.y === 0 || update.from.y * update.to.y < 0;\n }\n if (!isEqual(mark, update) && !shouldNotChange) {\n onChange(mark, update);\n }\n if (onDragStop) onDragStop();\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, limitLabeling } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n const from = cloneDeep(mark.from);\n const to = cloneDeep(mark.to);\n const middle = cloneDeep(mark.middle);\n\n // SET DISABLED\n // if it's a background mark, we need to force disable it\n if (from && mark.isBackground) {\n from.disabled = true;\n }\n\n if (to && mark.isBackground) {\n to.disabled = true;\n }\n\n if (middle && mark.isBackground) {\n middle.disabled = true;\n }\n\n return (\n <Component\n disabled={mark.disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={mark.correctness}\n from={from}\n to={to}\n middle={middle}\n graphProps={graphProps}\n onChange={this.changeMark}\n changeMarkProps={this.changeMarkProps}\n onClick={onClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\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 limitLabeling: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n labelModeEnabled: PropTypes.bool,\n labelNode: PropTypes.object,\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, data) => {\n const { changeMarkProps, disabled, from, to, labelModeEnabled, limitLabeling, onClick } = this.props;\n\n if (!labelModeEnabled) {\n onClick(point || data);\n return;\n }\n\n if (disabled) {\n return;\n }\n\n // limit labeling the points of the line\n if (limitLabeling) {\n return;\n }\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 && Object.prototype.hasOwnProperty.call(from, '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 && Object.prototype.hasOwnProperty.call(to, '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 && Object.prototype.hasOwnProperty.call(middle, '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 <StyledLineGroup disabled={disabled} correctness={correctness}>\n {to && (\n <DraggableComp\n from={from}\n to={to}\n middle={middle}\n onDrag={this.dragComp}\n {...common}\n onClick={(data) => this.clickPoint(middle, 'middle', data)}\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={(data) => this.clickPoint(from, 'from', data)}\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={(data) => this.clickPoint(to, 'to', data)}\n />\n )}\n {toLabelNode}\n </StyledLineGroup>\n );\n }\n }\n\n return LineBase;\n};\n\nexport const styles = {\n line: () => ({\n fill: 'transparent',\n stroke: color.defaults.BLACK,\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n }),\n arrow: () => ({\n fill: color.defaults.BLACK,\n }),\n disabledArrow: () => ({\n ...disabledSecondary(),\n }),\n disabledSecondary: () => ({\n ...disabledSecondary('stroke'),\n strokeWidth: 2,\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 missing: (theme, key) => ({\n ...missing(key),\n strokeWidth: 1,\n strokeDasharray: '4 3',\n }),\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,UAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,SAAA,GAAAR,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,QAAA,GAAAV,OAAA;AAA8C,SAAAW,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,aAAAF,CAAA,OAAAG,2BAAA,aAAAJ,CAAA,EAAAK,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,aAAAH,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAG,0BAAA,cAAAL,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAP,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAK,yBAAA,YAAAA,0BAAA,aAAAL,CAAA;AAAA,SAAAc,QAAAZ,CAAA,EAAAa,CAAA,QAAAf,CAAA,GAAAgB,MAAA,CAAAC,IAAA,CAAAf,CAAA,OAAAc,MAAA,CAAAE,qBAAA,QAAAjB,CAAA,GAAAe,MAAA,CAAAE,qBAAA,CAAAhB,CAAA,GAAAa,CAAA,KAAAd,CAAA,GAAAA,CAAA,CAAAkB,MAAA,WAAAJ,CAAA,WAAAC,MAAA,CAAAI,wBAAA,CAAAlB,CAAA,EAAAa,CAAA,EAAAM,UAAA,OAAArB,CAAA,CAAAsB,IAAA,CAAAb,KAAA,CAAAT,CAAA,EAAAC,CAAA,YAAAD,CAAA;AAAA,SAAAuB,cAAArB,CAAA,aAAAa,CAAA,MAAAA,CAAA,GAAAS,SAAA,CAAAC,MAAA,EAAAV,CAAA,UAAAf,CAAA,WAAAwB,SAAA,CAAAT,CAAA,IAAAS,SAAA,CAAAT,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAE,MAAA,CAAAhB,CAAA,OAAA0B,OAAA,WAAAX,CAAA,QAAAY,gBAAA,aAAAzB,CAAA,EAAAa,CAAA,EAAAf,CAAA,CAAAe,CAAA,SAAAC,MAAA,CAAAY,yBAAA,GAAAZ,MAAA,CAAAa,gBAAA,CAAA3B,CAAA,EAAAc,MAAA,CAAAY,yBAAA,CAAA5B,CAAA,KAAAc,OAAA,CAAAE,MAAA,CAAAhB,CAAA,GAAA0B,OAAA,WAAAX,CAAA,IAAAC,MAAA,CAAAc,cAAA,CAAA5B,CAAA,EAAAa,CAAA,EAAAC,MAAA,CAAAI,wBAAA,CAAApB,CAAA,EAAAe,CAAA,iBAAAb,CAAA;AAE9C,IAAM6B,eAAe,GAAG,IAAAC,eAAM,EAAC,GAAG,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,WAAW,GAAAF,IAAA,CAAXE,WAAW;EAAA,OAAAZ,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;IAC1D,QAAQ,EAAE;MACRa,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAEC,eAAK,CAACC,QAAQ,CAACC,KAAK;MAC5BC,WAAW,EAAE,CAAC;MACdC,UAAU,EAAE,kDAAkD;MAC9D,SAAS,EAAE;QACTD,WAAW,EAAE,CAAC;QACdJ,MAAM,EAAEC,eAAK,CAACC,QAAQ,CAACI;MACzB;IACF;EAAC,GACGT,QAAQ,IAAI;IACd,QAAQ,EAAAX,aAAA,CAAAA,aAAA,KACH,IAAAqB,yBAAiB,EAAC,QAAQ,CAAC;MAC9BH,WAAW,EAAE;IAAC;EAElB,CAAC,GACGN,WAAW,KAAK,SAAS,IAAI;IAC/B,QAAQ,EAAAZ,aAAA,KACH,IAAAsB,eAAO,EAAC,QAAQ,CAAC;EAExB,CAAC,GACGV,WAAW,KAAK,WAAW,IAAI;IACjC,QAAQ,EAAAZ,aAAA,KACH,IAAAuB,iBAAS,EAAC,QAAQ,CAAC;EAE1B,CAAC,GACGX,WAAW,KAAK,SAAS,IAAI;IAC/B,QAAQ,EAAAZ,aAAA,CAAAA,aAAA,KACH,IAAAwB,eAAO,EAAC,QAAQ,CAAC;MACpBN,WAAW,EAAE,CAAC;MACdO,eAAe,EAAE;IAAK;EAE1B,CAAC;AAAA,CACD,CAAC;AAEI,IAAMC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,SAAXA,QAAQA,CAAIE,IAAI,EAAEC,SAAS;EAAA,OAAK;IAAA,OAAO;MAClDD,IAAI,EAAJA,IAAI;MACJC,SAAS,EAATA,SAAS;MACTC,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,KAAK,EAAEC,IAAI,EAAK;QACzB,IAAIA,IAAI,IAAI,IAAAC,kBAAW,EAACD,IAAI,CAACE,IAAI,EAAEH,KAAK,CAAC,EAAE;UACzC,OAAOC,IAAI;QACb;QAEA,IAAI,CAACA,IAAI,EAAE;UACT,OAAO;YACLJ,IAAI,EAAJA,IAAI;YACJO,QAAQ,EAAE,IAAI;YACdC,IAAI,EAAEL;UACR,CAAC;QACH;QAEA,IAAI,IAAAE,kBAAW,EAACF,KAAK,EAAEC,IAAI,CAACI,IAAI,CAAC,EAAE;UACjC,OAAApC,aAAA,KAAYgC,IAAI;QAClB;QAEA,OAAAhC,aAAA,CAAAA,aAAA,KAAYgC,IAAI;UAAEG,QAAQ,EAAE,KAAK;UAAEE,EAAE,EAAEN;QAAK;MAC9C;IACF,CAAC;EAAA,CAAC;AAAA;AAEK,IAAMO,iBAAiB,GAAAX,OAAA,CAAAW,iBAAA,GAAG,SAApBA,iBAAiBA,CAAIT,SAAS,EAAK;EAAA,IAAAU,kBAAA;EAC9C,OAAAA,kBAAA,0BAAAC,gBAAA;IAaE,SAAAC,kBAAYC,KAAK,EAAE;MAAA,IAAAC,KAAA;MAAA,IAAAC,gBAAA,mBAAAH,iBAAA;MACjBE,KAAA,GAAAnE,UAAA,OAAAiE,iBAAA,GAAMC,KAAK;MAAE,IAAAtC,gBAAA,aAAAuC,KAAA,eAIH,YAAM;QAChB,IAAQE,WAAW,GAAKF,KAAA,CAAKD,KAAK,CAA1BG,WAAW;QACnBF,KAAA,CAAKG,QAAQ,CAAC;UAAEd,IAAI,EAAAhC,aAAA,KAAO2C,KAAA,CAAKD,KAAK,CAACV,IAAI;QAAG,CAAC,CAAC;QAC/C,IAAIa,WAAW,EAAEA,WAAW,CAAC,CAAC;MAChC,CAAC;MAAA,IAAAzC,gBAAA,aAAAuC,KAAA,cAEU,YAAM;QACf,IAAAI,WAAA,GAAuCJ,KAAA,CAAKD,KAAK;UAAzCM,QAAQ,GAAAD,WAAA,CAARC,QAAQ;UAAEhB,IAAI,GAAAe,WAAA,CAAJf,IAAI;UAAEiB,UAAU,GAAAF,WAAA,CAAVE,UAAU;QAClC,IAAMC,MAAM,GAAAlD,aAAA,KAAQ2C,KAAA,CAAKQ,KAAK,CAACnB,IAAI,CAAE;QAErCW,KAAA,CAAKG,QAAQ,CAAC;UAAEd,IAAI,EAAEoB;QAAU,CAAC,EAAE,YAAM;UACvC,IAAQxB,IAAI,GAAKsB,MAAM,CAAftB,IAAI;UACZ,IAAIyB,eAAe,GACjBzB,IAAI,KACHA,IAAI,KAAK,UAAU,IAAIA,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,UAAU,IAAIA,IAAI,KAAK,aAAa,CAAC,IACzF,IAAA0B,eAAQ,EAACJ,MAAM,CAACd,IAAI,EAAEc,MAAM,CAACb,EAAE,CAAC;UAClC,IAAI,CAACgB,eAAe,IAAIzB,IAAI,IAAIA,IAAI,KAAK,aAAa,IAAIsB,MAAM,CAACd,IAAI,IAAIc,MAAM,CAACb,EAAE,EAAE;YAClFgB,eAAe,GAAGH,MAAM,CAACd,IAAI,CAACmB,CAAC,KAAK,CAAC,IAAIL,MAAM,CAACb,EAAE,CAACkB,CAAC,KAAK,CAAC,IAAIL,MAAM,CAACd,IAAI,CAACmB,CAAC,GAAGL,MAAM,CAACb,EAAE,CAACkB,CAAC,GAAG,CAAC;UAC/F;UACA,IAAI,CAAC,IAAAC,iBAAO,EAACxB,IAAI,EAAEkB,MAAM,CAAC,IAAI,CAACG,eAAe,EAAE;YAC9CL,QAAQ,CAAChB,IAAI,EAAEkB,MAAM,CAAC;UACxB;UACA,IAAID,UAAU,EAAEA,UAAU,CAAC,CAAC;QAC9B,CAAC,CAAC;MACJ,CAAC;MAAA,IAAA7C,gBAAA,aAAAuC,KAAA,gBAEY,UAAAc,KAAA,EAA0B;QAAA,IAAvBrB,IAAI,GAAAqB,KAAA,CAAJrB,IAAI;UAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE;UAAEqB,MAAM,GAAAD,KAAA,CAANC,MAAM;QAC9B,IAAI1B,IAAI,GAAAhC,aAAA,CAAAA,aAAA,KAAQ2C,KAAA,CAAKQ,KAAK,CAACnB,IAAI;UAAEI,IAAI,EAAJA,IAAI;UAAEC,EAAE,EAAFA;QAAE,EAAE;QAE3C,IAAIqB,MAAM,EAAE;UACV1B,IAAI,GAAAhC,aAAA,CAAAA,aAAA,KAAQgC,IAAI;YAAE0B,MAAM,EAANA;UAAM,EAAE;QAC5B;QAEAf,KAAA,CAAKG,QAAQ,CAAC;UAAEd,IAAI,EAAJA;QAAK,CAAC,CAAC;MACzB,CAAC;MAAA,IAAA5B,gBAAA,aAAAuC,KAAA,qBAEiB,UAAAgB,KAAA,EAA0B;QAAA,IAAvBvB,IAAI,GAAAuB,KAAA,CAAJvB,IAAI;UAAEC,EAAE,GAAAsB,KAAA,CAAFtB,EAAE;UAAEqB,MAAM,GAAAC,KAAA,CAAND,MAAM;QACnC,IAAAE,YAAA,GAA2BjB,KAAA,CAAKD,KAAK;UAA7BM,QAAQ,GAAAY,YAAA,CAARZ,QAAQ;UAAEhB,IAAI,GAAA4B,YAAA,CAAJ5B,IAAI;QACtB,IAAIkB,MAAM,GAAAlD,aAAA,CAAAA,aAAA,KAAQgC,IAAI,GAAKW,KAAA,CAAKQ,KAAK,CAACnB,IAAI,CAAE;QAE5C,IAAII,IAAI,EAAE;UACRc,MAAM,GAAAlD,aAAA,CAAAA,aAAA,KAAQkD,MAAM;YAAEd,IAAI,EAAJA;UAAI,EAAE;QAC9B;QAEA,IAAIC,EAAE,EAAE;UACNa,MAAM,GAAAlD,aAAA,CAAAA,aAAA,KAAQkD,MAAM;YAAEb,EAAE,EAAFA;UAAE,EAAE;QAC5B;QAEA,IAAIqB,MAAM,EAAE;UACVR,MAAM,GAAAlD,aAAA,CAAAA,aAAA,KAAQkD,MAAM;YAAEQ,MAAM,EAANA;UAAM,EAAE;QAChC;QAEA,IAAI,CAAC,IAAAF,iBAAO,EAACxB,IAAI,EAAEkB,MAAM,CAAC,EAAE;UAC1BF,QAAQ,CAAChB,IAAI,EAAEkB,MAAM,CAAC;QACxB;MACF,CAAC;MA1DCP,KAAA,CAAKQ,KAAK,GAAG,CAAC,CAAC;MAAC,OAAAR,KAAA;IAClB;IAAC,IAAAkB,UAAA,aAAApB,iBAAA,EAAAD,gBAAA;IAAA,WAAAsB,aAAA,aAAArB,iBAAA;MAAAsB,GAAA;MAAAC,KAAA,EA2DD,SAAAC,MAAMA,CAAA,EAAG;QACP,IAAAC,YAAA,GAAgG,IAAI,CAACxB,KAAK;UAAlGyB,UAAU,GAAAD,YAAA,CAAVC,UAAU;UAAEC,OAAO,GAAAF,YAAA,CAAPE,OAAO;UAAEC,SAAS,GAAAH,YAAA,CAATG,SAAS;UAAEC,gBAAgB,GAAAJ,YAAA,CAAhBI,gBAAgB;UAAEC,kBAAkB,GAAAL,YAAA,CAAlBK,kBAAkB;UAAEC,aAAa,GAAAN,YAAA,CAAbM,aAAa;QAC3F,IAAMxC,IAAI,GAAG,IAAI,CAACmB,KAAK,CAACnB,IAAI,GAAG,IAAI,CAACmB,KAAK,CAACnB,IAAI,GAAG,IAAI,CAACU,KAAK,CAACV,IAAI;QAEhE,IAAMI,IAAI,GAAG,IAAAqC,mBAAS,EAACzC,IAAI,CAACI,IAAI,CAAC;QACjC,IAAMC,EAAE,GAAG,IAAAoC,mBAAS,EAACzC,IAAI,CAACK,EAAE,CAAC;QAC7B,IAAMqB,MAAM,GAAG,IAAAe,mBAAS,EAACzC,IAAI,CAAC0B,MAAM,CAAC;;QAErC;QACA;QACA,IAAItB,IAAI,IAAIJ,IAAI,CAAC0C,YAAY,EAAE;UAC7BtC,IAAI,CAACzB,QAAQ,GAAG,IAAI;QACtB;QAEA,IAAI0B,EAAE,IAAIL,IAAI,CAAC0C,YAAY,EAAE;UAC3BrC,EAAE,CAAC1B,QAAQ,GAAG,IAAI;QACpB;QAEA,IAAI+C,MAAM,IAAI1B,IAAI,CAAC0C,YAAY,EAAE;UAC/BhB,MAAM,CAAC/C,QAAQ,GAAG,IAAI;QACxB;QAEA,oBACEhD,MAAA,YAAAgH,aAAA,CAAC9C,SAAS;UACRlB,QAAQ,EAAEqB,IAAI,CAACrB,QAAS;UACxB4D,kBAAkB,EAAEA,kBAAmB;UACvC3D,WAAW,EAAEoB,IAAI,CAACpB,WAAY;UAC9BwB,IAAI,EAAEA,IAAK;UACXC,EAAE,EAAEA,EAAG;UACPqB,MAAM,EAAEA,MAAO;UACfS,UAAU,EAAEA,UAAW;UACvBnB,QAAQ,EAAE,IAAI,CAAC4B,UAAW;UAC1BC,eAAe,EAAE,IAAI,CAACA,eAAgB;UACtCT,OAAO,EAAEA,OAAQ;UACjBvB,WAAW,EAAE,IAAI,CAACiC,SAAU;UAC5B7B,UAAU,EAAE,IAAI,CAAC8B,QAAS;UAC1BV,SAAS,EAAEA,SAAU;UACrBC,gBAAgB,EAAEA,gBAAiB;UACnCE,aAAa,EAAEA;QAAc,CAC9B,CAAC;MAEN;IAAC;EAAA,EApHoCQ,iBAAK,CAACnD,SAAS,OAAAzB,gBAAA,aAAAmC,kBAAA,eAAAvC,aAAA,CAAAA,aAAA,KAE/CiF,WAAK,CAACC,kBAAkB;IAC3Bf,UAAU,EAAEc,WAAK,CAACE,cAAc,CAACC,UAAU;IAC3CZ,aAAa,EAAEa,qBAAS,CAACC,IAAI;IAC7BT,eAAe,EAAEQ,qBAAS,CAACE,IAAI;IAC/B5E,QAAQ,EAAE0E,qBAAS,CAACC,IAAI;IACxBlD,IAAI,EAAE6C,WAAK,CAACO,SAAS;IACrBnD,EAAE,EAAE4C,WAAK,CAACO,SAAS;IACnBlB,gBAAgB,EAAEe,qBAAS,CAACC,IAAI;IAChClB,OAAO,EAAEiB,qBAAS,CAACE;EAAI,KAAAhD,kBAAA;AA4G7B,CAAC;AAED,IAAMkD,QAAQ,GAAG,SAAXA,QAAQA,CAAA;EAAA,OAAU;IACtBC,MAAM,EAAE,SAARA,MAAMA,CAAGhD,KAAK,EAAAiD,KAAA,EAAwB;MAAA,IAApBC,MAAM,GAAAD,KAAA,CAANC,MAAM;QAAEC,KAAK,GAAAF,KAAA,CAALE,KAAK;MAC7B,IAAMC,IAAI,GAAGC,WAAK,CAACC,UAAU,CAACtD,KAAK,CAACN,IAAI,EAAEM,KAAK,CAACL,EAAE,CAAC;MACnD,OAAO0D,WAAK,CAACL,MAAM,CAACI,IAAI,EAAEF,MAAM,EAAEC,KAAK,CAAC;IAC1C,CAAC;IACDI,WAAW,EAAE,SAAbA,WAAWA,CAAGvD,KAAK,EAAK;MACtB,IAAQN,IAAI,GAAKM,KAAK,CAAdN,IAAI;MACZ,OAAOA,IAAI;IACb,CAAC;IACD8D,SAAS,EAAE,SAAXA,SAASA,CAAGxD,KAAK,EAAEyD,KAAK,EAAK;MAC3B,IAAQ/D,IAAI,GAASM,KAAK,CAAlBN,IAAI;QAAEC,EAAE,GAAKK,KAAK,CAAZL,EAAE;MAChB,OAAO;QACLD,IAAI,EAAE2D,WAAK,CAAChE,KAAK,CAACK,IAAI,CAAC,CAACgE,GAAG,CAACL,WAAK,CAAChE,KAAK,CAACoE,KAAK,CAAC,CAAC;QAC/C9D,EAAE,EAAE0D,WAAK,CAAChE,KAAK,CAACM,EAAE,CAAC,CAAC+D,GAAG,CAACL,WAAK,CAAChE,KAAK,CAACoE,KAAK,CAAC;MAC5C,CAAC;IACH;EACF,CAAC;AAAA,CAAC;AAEK,IAAME,QAAQ,GAAA1E,OAAA,CAAA0E,QAAA,GAAG,SAAXA,QAAQA,CAAIC,IAAI,EAAEC,IAAI,EAAK;EACtC,IAAMC,aAAa,GAAG,IAAAC,mBAAa,EAAChB,QAAQ,CAAC,CAAC,CAAC,CAACa,IAAI,CAAC;EAErD,IAAMI,SAAS,GAAGH,IAAI,IAAIA,IAAI,CAACnE,IAAI,GAAGmE,IAAI,CAACnE,IAAI,GAAGuE,gBAAS;EAC3D,IAAMC,OAAO,GAAGL,IAAI,IAAIA,IAAI,CAAClE,EAAE,GAAGkE,IAAI,CAAClE,EAAE,GAAGsE,gBAAS;EAAC,IAEhDE,QAAQ,0BAAAC,iBAAA;IAAA,SAAAD,SAAA;MAAA,IAAAE,MAAA;MAAA,IAAAnE,gBAAA,mBAAAiE,QAAA;MAAA,SAAAG,IAAA,GAAA/G,SAAA,CAAAC,MAAA,EAAA+G,IAAA,OAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;QAAAF,IAAA,CAAAE,IAAA,IAAAlH,SAAA,CAAAkH,IAAA;MAAA;MAAAJ,MAAA,GAAAvI,UAAA,OAAAqI,QAAA,KAAAO,MAAA,CAAAH,IAAA;MAAA,IAAA7G,gBAAA,aAAA2G,MAAA,mBAmBI,UAAChF,KAAK,EAAK;QACzB,IAAAsF,YAAA,GAA6BN,MAAA,CAAKrE,KAAK;UAA/BgB,MAAM,GAAA2D,YAAA,CAAN3D,MAAM;UAAEV,QAAQ,GAAAqE,YAAA,CAARrE,QAAQ;QACxB,IAAQZ,IAAI,GAASL,KAAK,CAAlBK,IAAI;UAAEC,EAAE,GAAKN,KAAK,CAAZM,EAAE;;QAEhB;QACA,IAAI,CAAC,IAAAJ,kBAAW,EAACG,IAAI,EAAEC,EAAE,CAAC,EAAE;UAC1B,IAAIqB,MAAM,EAAE;YACV3B,KAAK,CAAC2B,MAAM,GAAA1D,aAAA,CAAAA,aAAA,KAAQ0D,MAAM,GAAK,IAAA4D,2BAAoB,EAAClF,IAAI,EAAEC,EAAE,CAAC,CAAE;UACjE;UAEAW,QAAQ,CAACjB,KAAK,CAAC;QACjB;MACF,CAAC;MAAA,IAAA3B,gBAAA,aAAA2G,MAAA,cAEU,UAAAQ,KAAA,EAA0C;QAAA,IAAjCC,WAAW,GAAAD,KAAA,CAAjBnF,IAAI;UAAmBqF,SAAS,GAAAF,KAAA,CAAblF,EAAE;QACjC,IAAAqF,aAAA,GAAuCX,MAAA,CAAKrE,KAAK;UAAzCN,IAAI,GAAAsF,aAAA,CAAJtF,IAAI;UAAEC,EAAE,GAAAqF,aAAA,CAAFrF,EAAE;UAAEW,QAAQ,GAAA0E,aAAA,CAAR1E,QAAQ;UAAEU,MAAM,GAAAgE,aAAA,CAANhE,MAAM;QAElC,IAAItB,IAAI,CAACuF,KAAK,EAAE;UACdH,WAAW,CAACG,KAAK,GAAGvF,IAAI,CAACuF,KAAK;QAChC;QAEA,IAAItF,EAAE,CAACsF,KAAK,EAAE;UACZF,SAAS,CAACE,KAAK,GAAGtF,EAAE,CAACsF,KAAK;QAC5B;QAEA,IAAMC,OAAO,GAAG;UAAExF,IAAI,EAAEoF,WAAW;UAAEnF,EAAE,EAAEoF;QAAU,CAAC;QAEpD,IAAI/D,MAAM,EAAE;UACVkE,OAAO,CAAClE,MAAM,GAAA1D,aAAA,CAAAA,aAAA,KAAQ0D,MAAM,GAAK,IAAA4D,2BAAoB,EAACE,WAAW,EAAEC,SAAS,CAAC,CAAE;QACjF;QAEAzE,QAAQ,CAAC4E,OAAO,CAAC;MACnB,CAAC;MAAA,IAAAxH,gBAAA,aAAA2G,MAAA,cAEU,UAACS,WAAW,EAAK;QAC1B,IAAAK,aAAA,GAAqBd,MAAA,CAAKrE,KAAK;UAAvBN,IAAI,GAAAyF,aAAA,CAAJzF,IAAI;UAAEC,EAAE,GAAAwF,aAAA,CAAFxF,EAAE;QAEhB,IAAID,IAAI,CAACuF,KAAK,EAAE;UACdH,WAAW,CAACG,KAAK,GAAGvF,IAAI,CAACuF,KAAK;QAChC;QAEA,IAAI,CAAC,IAAA1F,kBAAW,EAACuF,WAAW,EAAEnF,EAAE,CAAC,EAAE;UACjC0E,MAAA,CAAKe,aAAa,CAAC;YAAE1F,IAAI,EAAEoF,WAAW;YAAEnF,EAAE,EAAEA;UAAG,CAAC,CAAC;QACnD;MACF,CAAC;MAAA,IAAAjC,gBAAA,aAAA2G,MAAA,YAEQ,UAACU,SAAS,EAAK;QACtB,IAAAM,aAAA,GAAqBhB,MAAA,CAAKrE,KAAK;UAAvBN,IAAI,GAAA2F,aAAA,CAAJ3F,IAAI;UAAEC,EAAE,GAAA0F,aAAA,CAAF1F,EAAE;QAEhB,IAAIA,EAAE,CAACsF,KAAK,EAAE;UACZF,SAAS,CAACE,KAAK,GAAGtF,EAAE,CAACsF,KAAK;QAC5B;QAEA,IAAI,CAAC,IAAA1F,kBAAW,EAACG,IAAI,EAAEqF,SAAS,CAAC,EAAE;UACjCV,MAAA,CAAKe,aAAa,CAAC;YAAE1F,IAAI,EAAEA,IAAI;YAAEC,EAAE,EAAEoF;UAAU,CAAC,CAAC;QACnD;MACF,CAAC;MAAA,IAAArH,gBAAA,aAAA2G,MAAA,iBAEa,UAAChF,KAAK,EAAEH,IAAI,EAAK;QAC7B,IAAQiD,eAAe,GAAKkC,MAAA,CAAKrE,KAAK,CAA9BmC,eAAe;QACvB,IAAM3B,MAAM,GAAAlD,aAAA,KAAQ+B,KAAK,CAAE;QAE3B,IAAI,CAACA,KAAK,CAAC4F,KAAK,IAAI,IAAAK,iBAAO,EAACjG,KAAK,CAAC4F,KAAK,CAAC,EAAE;UACxC,OAAOzE,MAAM,CAACyE,KAAK;QACrB;QAEA9C,eAAe,KAAAzE,gBAAA,iBAAIwB,IAAI,EAAGsB,MAAM,CAAE,CAAC;MACrC,CAAC;MAAA,IAAA9C,gBAAA,aAAA2G,MAAA,gBAEY,UAAChF,KAAK,EAAEH,IAAI,EAAEqG,IAAI,EAAK;QAClC,IAAAC,aAAA,GAA0FnB,MAAA,CAAKrE,KAAK;UAA5FmC,eAAe,GAAAqD,aAAA,CAAfrD,eAAe;UAAElE,QAAQ,GAAAuH,aAAA,CAARvH,QAAQ;UAAEyB,IAAI,GAAA8F,aAAA,CAAJ9F,IAAI;UAAEC,EAAE,GAAA6F,aAAA,CAAF7F,EAAE;UAAEiC,gBAAgB,GAAA4D,aAAA,CAAhB5D,gBAAgB;UAAEE,aAAa,GAAA0D,aAAA,CAAb1D,aAAa;UAAEJ,OAAO,GAAA8D,aAAA,CAAP9D,OAAO;QAErF,IAAI,CAACE,gBAAgB,EAAE;UACrBF,OAAO,CAACrC,KAAK,IAAIkG,IAAI,CAAC;UACtB;QACF;QAEA,IAAItH,QAAQ,EAAE;UACZ;QACF;;QAEA;QACA,IAAI6D,aAAa,EAAE;UACjB;QACF;QAEA,IAAI5C,IAAI,KAAK,QAAQ,IAAI,CAACG,KAAK,IAAIK,IAAI,IAAIC,EAAE,EAAE;UAC7CN,KAAK,GAAA/B,aAAA,CAAAA,aAAA,KAAQ+B,KAAK,GAAK,IAAAuF,2BAAoB,EAAClF,IAAI,EAAEC,EAAE,CAAC,CAAE;QACzD;QAEAwC,eAAe,KAAAzE,gBAAA;UAAGgC,IAAI,EAAJA,IAAI;UAAEC,EAAE,EAAFA;QAAE,GAAGT,IAAI,EAAA5B,aAAA;UAAK2H,KAAK,EAAE;QAAE,GAAK5F,KAAK,EAAI,CAAC;QAE9D,IAAIgF,MAAA,CAAKoB,KAAK,CAACvG,IAAI,CAAC,EAAE;UACpBmF,MAAA,CAAKoB,KAAK,CAACvG,IAAI,CAAC,CAACwG,KAAK,CAAC,CAAC;QAC1B;MACF,CAAC;MAED;MAAA,IAAAhI,gBAAA,aAAA2G,MAAA,WACQ,CAAC,CAAC;MAAA,OAAAA,MAAA;IAAA;IAAA,IAAAlD,UAAA,aAAAgD,QAAA,EAAAC,iBAAA;IAAA,WAAAhD,aAAA,aAAA+C,QAAA;MAAA9C,GAAA;MAAAC,KAAA,EAEV,SAAAC,MAAMA,CAAA,EAAG;QAAA,IAAAoE,MAAA;QACP,IAAAC,YAAA,GAaI,IAAI,CAAC5F,KAAK;UAZZ6B,kBAAkB,GAAA+D,YAAA,CAAlB/D,kBAAkB;UAClBJ,UAAU,GAAAmE,YAAA,CAAVnE,UAAU;UACVtB,WAAW,GAAAyF,YAAA,CAAXzF,WAAW;UACXI,UAAU,GAAAqF,YAAA,CAAVrF,UAAU;UACVb,IAAI,GAAAkG,YAAA,CAAJlG,IAAI;UACJC,EAAE,GAAAiG,YAAA,CAAFjG,EAAE;UACFqB,MAAM,GAAA4E,YAAA,CAAN5E,MAAM;UACN/C,QAAQ,GAAA2H,YAAA,CAAR3H,QAAQ;UACRC,WAAW,GAAA0H,YAAA,CAAX1H,WAAW;UACXwD,OAAO,GAAAkE,YAAA,CAAPlE,OAAO;UACPC,SAAS,GAAAiE,YAAA,CAATjE,SAAS;UACTC,gBAAgB,GAAAgE,YAAA,CAAhBhE,gBAAgB;QAElB,IAAMiE,MAAM,GAAG;UAAEpE,UAAU,EAAVA,UAAU;UAAEtB,WAAW,EAAXA,WAAW;UAAEI,UAAU,EAAVA,UAAU;UAAEtC,QAAQ,EAARA,QAAQ;UAAEC,WAAW,EAAXA,WAAW;UAAEwD,OAAO,EAAPA;QAAQ,CAAC;QACtF,IAAMoE,KAAK,GAAGnG,EAAE,GAAGoG,UAAI,CAACC,SAAS,CAACD,UAAI,CAACD,KAAK,CAACpG,IAAI,EAAEC,EAAE,CAAC,CAAC,GAAG,CAAC;QAE3D,IAAIsG,aAAa,GAAG,IAAI;QACxB,IAAIC,WAAW,GAAG,IAAI;QACtB,IAAIC,aAAa,GAAG,IAAI;QAExB,IAAIxE,SAAS,EAAE;UACb,IAAIjC,IAAI,IAAI3C,MAAM,CAACL,SAAS,CAAC0J,cAAc,CAACxJ,IAAI,CAAC8C,IAAI,EAAE,OAAO,CAAC,EAAE;YAC/DuG,aAAa,gBAAGI,oBAAQ,CAACC,YAAY,cACnCrL,MAAA,YAAAgH,aAAA,CAACvG,UAAA,WAAS;cACR6K,QAAQ,EAAE,SAAVA,QAAQA,CAAGzJ,CAAC;gBAAA,OAAM6I,MAAI,CAACF,KAAK,CAAC/F,IAAI,GAAG5C,CAAC;cAAA,CAAE;cACvCmB,QAAQ,EAAE,CAAC2D,gBAAiB;cAC5BtC,IAAI,EAAEI,IAAK;cACX+B,UAAU,EAAEA,UAAW;cACvBnB,QAAQ,EAAE,SAAVA,QAAQA,CAAG2E,KAAK;gBAAA,OAAKU,MAAI,CAACa,WAAW,CAAAlJ,aAAA,CAAAA,aAAA,KAAMoC,IAAI;kBAAEuF,KAAK,EAALA;gBAAK,IAAI,MAAM,CAAC;cAAA;YAAC,CACnE,CAAC,EACFtD,SACF,CAAC;UACH;UAEA,IAAIhC,EAAE,IAAI5C,MAAM,CAACL,SAAS,CAAC0J,cAAc,CAACxJ,IAAI,CAAC+C,EAAE,EAAE,OAAO,CAAC,EAAE;YAC3DuG,WAAW,gBAAGG,oBAAQ,CAACC,YAAY,cACjCrL,MAAA,YAAAgH,aAAA,CAACvG,UAAA,WAAS;cACR6K,QAAQ,EAAE,SAAVA,QAAQA,CAAGzJ,CAAC;gBAAA,OAAM6I,MAAI,CAACF,KAAK,CAAC9F,EAAE,GAAG7C,CAAC;cAAA,CAAE;cACrCmB,QAAQ,EAAE,CAAC2D,gBAAiB;cAC5BtC,IAAI,EAAEK,EAAG;cACT8B,UAAU,EAAEA,UAAW;cACvBnB,QAAQ,EAAE,SAAVA,QAAQA,CAAG2E,KAAK;gBAAA,OAAKU,MAAI,CAACa,WAAW,CAAAlJ,aAAA,CAAAA,aAAA,KAAMqC,EAAE;kBAAEsF,KAAK,EAALA;gBAAK,IAAI,IAAI,CAAC;cAAA;YAAC,CAC/D,CAAC,EACFtD,SACF,CAAC;UACH;UAEA,IAAIX,MAAM,IAAIjE,MAAM,CAACL,SAAS,CAAC0J,cAAc,CAACxJ,IAAI,CAACoE,MAAM,EAAE,OAAO,CAAC,EAAE;YACnEmF,aAAa,gBAAGE,oBAAQ,CAACC,YAAY,cACnCrL,MAAA,YAAAgH,aAAA,CAACvG,UAAA,WAAS;cACR6K,QAAQ,EAAE,SAAVA,QAAQA,CAAGzJ,CAAC;gBAAA,OAAM6I,MAAI,CAACF,KAAK,CAACzE,MAAM,GAAGlE,CAAC;cAAA,CAAE;cACzCmB,QAAQ,EAAE,CAAC2D,gBAAiB;cAC5BtC,IAAI,EAAE0B,MAAO;cACbS,UAAU,EAAEA,UAAW;cACvBnB,QAAQ,EAAE,SAAVA,QAAQA,CAAG2E,KAAK;gBAAA,OAAKU,MAAI,CAACa,WAAW,CAAAlJ,aAAA,CAAAA,aAAA,KAAM0D,MAAM;kBAAEiE,KAAK,EAALA;gBAAK,IAAI,QAAQ,CAAC;cAAA;YAAC,CACvE,CAAC,EACFtD,SACF,CAAC;UACH;QACF;QAEA,oBACE1G,MAAA,YAAAgH,aAAA,CAACnE,eAAe;UAACG,QAAQ,EAAEA,QAAS;UAACC,WAAW,EAAEA;QAAY,GAC3DyB,EAAE,iBACD1E,MAAA,YAAAgH,aAAA,CAAC6B,aAAa,MAAA2C,SAAA;UACZ/G,IAAI,EAAEA,IAAK;UACXC,EAAE,EAAEA,EAAG;UACPqB,MAAM,EAAEA,MAAO;UACf0F,MAAM,EAAE,IAAI,CAACC;QAAS,GAClBd,MAAM;UACVnE,OAAO,EAAE,SAATA,OAAOA,CAAG6D,IAAI;YAAA,OAAKI,MAAI,CAACiB,UAAU,CAAC5F,MAAM,EAAE,QAAQ,EAAEuE,IAAI,CAAC;UAAA;QAAC,EAC5D,CACF,EACAY,aAAa,eAEdlL,MAAA,YAAAgH,aAAA,CAAC+B,SAAS,MAAAyC,SAAA;UACRI,CAAC,EAAEnH,IAAI,CAACmH,CAAE;UACVhG,CAAC,EAAEnB,IAAI,CAACmB,CAAE;UACVc,SAAS,EAAEA,SAAU;UACrBE,kBAAkB,EAAEA,kBAAmB;UACvC6E,MAAM,EAAE,IAAI,CAACI;QAAS,GAClBjB,MAAM;UACVnE,OAAO,EAAE,SAATA,OAAOA,CAAG6D,IAAI;YAAA,OAAKI,MAAI,CAACiB,UAAU,CAAClH,IAAI,EAAE,MAAM,EAAE6F,IAAI,CAAC;UAAA;QAAC,EACxD,CAAC,EACDU,aAAa,EAEbtG,EAAE,iBACD1E,MAAA,YAAAgH,aAAA,CAACiC,OAAO,MAAAuC,SAAA;UACNI,CAAC,EAAElH,EAAE,CAACkH,CAAE;UACRhG,CAAC,EAAElB,EAAE,CAACkB,CAAE;UACRiF,KAAK,EAAEA,KAAM,CAAC;UAAA;UACdnE,SAAS,EAAEA,SAAU;UACrBE,kBAAkB,EAAEA,kBAAmB;UACvC6E,MAAM,EAAE,IAAI,CAACK;QAAO,GAChBlB,MAAM;UACVnE,OAAO,EAAE,SAATA,OAAOA,CAAG6D,IAAI;YAAA,OAAKI,MAAI,CAACiB,UAAU,CAACjH,EAAE,EAAE,IAAI,EAAE4F,IAAI,CAAC;UAAA;QAAC,EACpD,CACF,EACAW,WACc,CAAC;MAEtB;IAAC;EAAA,EA9NoB5D,iBAAK,CAACnD,SAAS;EAAA,IAAAzB,gBAAA,aAAhCyG,QAAQ,eACO;IACjBtC,kBAAkB,EAAEc,qBAAS,CAACC,IAAI;IAClCnB,UAAU,EAAEc,WAAK,CAACE,cAAc;IAChC/C,IAAI,EAAE6C,WAAK,CAACO,SAAS;IACrBnD,EAAE,EAAE4C,WAAK,CAACO,SAAS;IACnB9B,MAAM,EAAEuB,WAAK,CAACO,SAAS;IACvBxC,QAAQ,EAAEqC,qBAAS,CAACE,IAAI;IACxB1C,WAAW,EAAEwC,qBAAS,CAACE,IAAI;IAC3BtC,UAAU,EAAEoC,qBAAS,CAACE,IAAI;IAC1BnB,OAAO,EAAEiB,qBAAS,CAACE,IAAI;IACvB3E,WAAW,EAAEyE,qBAAS,CAACqE,MAAM;IAC7B/I,QAAQ,EAAE0E,qBAAS,CAACC,IAAI;IACxBd,aAAa,EAAEa,qBAAS,CAACC,IAAI;IAC7BT,eAAe,EAAEQ,qBAAS,CAACE,IAAI;IAC/BjB,gBAAgB,EAAEe,qBAAS,CAACC,IAAI;IAChCjB,SAAS,EAAEgB,qBAAS,CAACsE;EACvB,CAAC;EAgNH,OAAO9C,QAAQ;AACjB,CAAC;AAEM,IAAM+C,MAAM,GAAAjI,OAAA,CAAAiI,MAAA,GAAG;EACpBC,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,OAAS;MACXhJ,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAEC,eAAK,CAACC,QAAQ,CAACC,KAAK;MAC5BC,WAAW,EAAE,CAAC;MACdC,UAAU,EAAE,kDAAkD;MAC9D,SAAS,EAAE;QACTD,WAAW,EAAE,CAAC;QACdJ,MAAM,EAAEC,eAAK,CAACC,QAAQ,CAACI;MACzB;IACF,CAAC;EAAA,CAAC;EACF0I,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,OAAS;MACZjJ,IAAI,EAAEE,eAAK,CAACC,QAAQ,CAACC;IACvB,CAAC;EAAA,CAAC;EACF8I,aAAa,EAAE,SAAfA,aAAaA,CAAA;IAAA,OAAA/J,aAAA,KACR,IAAAqB,yBAAiB,EAAC,CAAC;EAAA,CACtB;EACFA,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAA;IAAA,OAAArB,aAAA,CAAAA,aAAA,KACZ,IAAAqB,yBAAiB,EAAC,QAAQ,CAAC;MAC9BH,WAAW,EAAE;IAAC;EAAA,CACd;EACFP,QAAQ,EAAE,SAAVA,QAAQA,CAAA;IAAA,OAAAX,aAAA,CAAAA,aAAA,KACH,IAAAW,gBAAQ,EAAC,QAAQ,CAAC;MACrBO,WAAW,EAAE;IAAC;EAAA,CACd;EACFI,OAAO,EAAE,SAATA,OAAOA,CAAG0I,KAAK,EAAEjG,GAAG;IAAA,OAAA/D,aAAA,KACf,IAAAsB,eAAO,EAACyC,GAAG,CAAC;EAAA,CACf;EACFxC,SAAS,EAAE,SAAXA,SAASA,CAAGyI,KAAK,EAAEjG,GAAG;IAAA,OAAA/D,aAAA,KACjB,IAAAuB,iBAAS,EAACwC,GAAG,CAAC;EAAA,CACjB;EACFvC,OAAO,EAAE,SAATA,OAAOA,CAAGwI,KAAK,EAAEjG,GAAG;IAAA,OAAA/D,aAAA,CAAAA,aAAA,KACf,IAAAwB,eAAO,EAACuC,GAAG,CAAC;MACf7C,WAAW,EAAE,CAAC;MACdO,eAAe,EAAE;IAAK;EAAA;AAE1B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_lodashEs","_point","_plot","_propTypes","_styles","_reactDom","_markLabel","_renderUi","_utils","_styles2","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","StyledLineGroup","styled","_ref","disabled","correctness","fill","stroke","color","defaults","BLACK","strokeWidth","transition","PRIMARY_DARK","disabledSecondary","correct","incorrect","missing","strokeDasharray","lineTool","exports","type","Component","addPoint","point","mark","equalPoints","root","building","from","to","lineToolComponent","_LineToolComponent","_React$Component","LineToolComponent","props","_this","_classCallCheck2","onDragStart","setState","_this$props","onChange","onDragStop","update","state","undefined","shouldNotChange","sameAxes","y","isEqual","_ref2","middle","_ref3","_this$props2","_inherits2","_createClass2","key","value","render","_this$props3","graphProps","onClick","labelNode","labelModeEnabled","coordinatesOnHover","limitLabeling","cloneDeep","isBackground","createElement","changeMark","changeMarkProps","startDrag","stopDrag","React","types","ToolPropTypeFields","GraphPropsType","isRequired","PropTypes","bool","func","PointType","dragOpts","bounds","_ref4","domain","range","area","utils","lineToArea","anchorPoint","fromDelta","delta","add","lineBase","Comp","opts","DraggableComp","gridDraggable","FromPoint","BasePoint","ToPoint","LineBase","_React$Component2","_this2","_len","args","Array","_key","concat","_this2$props","getMiddleOfTwoPoints","_ref5","draggedFrom","draggedTo","_this2$props2","label","updated","_this2$props3","onChangePoint","_this2$props4","isEmpty","data","_this2$props5","stripEmptyLabel","input","focus","_this3","_this$props4","common","angle","trig","toDegrees","fromLabelNode","toLabelNode","lineLabelNode","hasOwnProperty","ReactDOM","createPortal","inputRef","labelChange","_extends2","onDrag","dragComp","clickPoint","x","dragFrom","dragTo","string","object","styles","line","arrow","disabledArrow","theme"],"sources":["../../../../src/tools/shared/line/index.jsx"],"sourcesContent":["import React from 'react';\nimport { cloneDeep, isEmpty, isEqual } from 'lodash-es';\nimport { BasePoint } from '../point';\nimport { gridDraggable, trig, types, utils } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport { correct, disabled, disabledSecondary, incorrect, missing } from '../styles';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../../mark-label';\nimport { color } from '@pie-lib/render-ui';\nimport { equalPoints, getMiddleOfTwoPoints, sameAxes, stripEmptyLabel } from '../../../utils';\nimport { styled } from '@mui/material/styles';\n\nconst StyledLineGroup = styled('g')(({ disabled, correctness }) => ({\n '& line': {\n fill: 'transparent',\n stroke: color.defaults.BLACK,\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n },\n ...(disabled && {\n '& line': {\n ...disabledSecondary('stroke'),\n strokeWidth: 2,\n },\n }),\n ...(correctness === 'correct' && {\n '& line': {\n ...correct('stroke'),\n },\n }),\n ...(correctness === 'incorrect' && {\n '& line': {\n ...incorrect('stroke'),\n },\n }),\n ...(correctness === 'missing' && {\n '& line': {\n ...missing('stroke'),\n strokeWidth: 1,\n strokeDasharray: '4 3',\n },\n }),\n}));\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 limitLabeling: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n disabled: PropTypes.bool,\n from: types.PointType,\n to: types.PointType,\n labelModeEnabled: PropTypes.bool,\n onClick: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n startDrag = () => {\n const { onDragStart } = this.props;\n this.setState({ mark: { ...this.props.mark } });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, mark, onDragStop } = this.props;\n const update = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n const { type } = update;\n let shouldNotChange =\n type &&\n (type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') &&\n sameAxes(update.from, update.to);\n if (!shouldNotChange && type && type === 'exponential' && update.from && update.to) {\n shouldNotChange = update.from.y === 0 || update.to.y === 0 || update.from.y * update.to.y < 0;\n }\n if (!isEqual(mark, update) && !shouldNotChange) {\n onChange(mark, update);\n }\n if (onDragStop) onDragStop();\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, limitLabeling } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n const from = cloneDeep(mark.from);\n const to = cloneDeep(mark.to);\n const middle = cloneDeep(mark.middle);\n\n // SET DISABLED\n // if it's a background mark, we need to force disable it\n if (from && mark.isBackground) {\n from.disabled = true;\n }\n\n if (to && mark.isBackground) {\n to.disabled = true;\n }\n\n if (middle && mark.isBackground) {\n middle.disabled = true;\n }\n\n return (\n <Component\n disabled={mark.disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={mark.correctness}\n from={from}\n to={to}\n middle={middle}\n graphProps={graphProps}\n onChange={this.changeMark}\n changeMarkProps={this.changeMarkProps}\n onClick={onClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\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 limitLabeling: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n labelModeEnabled: PropTypes.bool,\n labelNode: PropTypes.object,\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, 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) {\n return;\n }\n\n // limit labeling the points of the line\n if (limitLabeling) {\n return;\n }\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\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 // 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 && Object.prototype.hasOwnProperty.call(from, '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 && Object.prototype.hasOwnProperty.call(to, '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 && Object.prototype.hasOwnProperty.call(middle, '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 <StyledLineGroup disabled={disabled} correctness={correctness}>\n {to && (\n <DraggableComp\n from={from}\n to={to}\n middle={middle}\n onDrag={this.dragComp}\n {...common}\n onClick={(data) => this.clickPoint(middle, 'middle', data)}\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={(data) => this.clickPoint(from, 'from', data)}\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={(data) => this.clickPoint(to, 'to', data)}\n />\n )}\n {toLabelNode}\n </StyledLineGroup>\n );\n }\n }\n\n return LineBase;\n};\n\nexport const styles = {\n line: () => ({\n fill: 'transparent',\n stroke: color.defaults.BLACK,\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n }),\n arrow: () => ({\n fill: color.defaults.BLACK,\n }),\n disabledArrow: () => ({\n ...disabledSecondary(),\n }),\n disabledSecondary: () => ({\n ...disabledSecondary('stroke'),\n strokeWidth: 2,\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 missing: (theme, key) => ({\n ...missing(key),\n strokeWidth: 1,\n strokeDasharray: '4 3',\n }),\n};\n"],"mappings":"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","ignoreList":[]}
package/lib/utils.js CHANGED
@@ -4,10 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.tickCount = exports.thinnerShapesNeeded = exports.sameAxes = exports.roundNumber = exports.polygonToArea = exports.pointsToArea = exports.point = exports.lineToArea = exports.isDuplicatedMark = exports.isDomainRangeEqual = exports.getTickValues = exports.getRightestPoints = exports.getMiddleOfTwoPoints = exports.getDistanceBetweenTwoPoints = exports.getAngleDeg = exports.getAdjustedGraphLimits = exports.findLongestWord = exports.equalPoints = exports.countWords = exports.bounds = exports.arrowDimensions = exports.amountToIncreaseWidth = void 0;
7
+ exports.tickCount = exports.thinnerShapesNeeded = exports.stripEmptyLabel = exports.sameAxes = exports.roundNumber = exports.polygonToArea = exports.pointsToArea = exports.point = exports.lineToArea = exports.isDuplicatedMark = exports.isDomainRangeEqual = exports.getTickValues = exports.getRightestPoints = exports.getMiddleOfTwoPoints = exports.getDistanceBetweenTwoPoints = exports.getAngleDeg = exports.getAdjustedGraphLimits = exports.findLongestWord = exports.equalPoints = exports.countWords = exports.bounds = exports.arrowDimensions = exports.amountToIncreaseWidth = void 0;
8
8
  var _plot = require("@pie-lib/plot");
9
9
  var _invariant = _interopRequireDefault(require("invariant"));
10
10
  var _lodashEs = require("lodash-es");
11
+ var stripEmptyLabel = exports.stripEmptyLabel = function stripEmptyLabel(pt) {
12
+ return (pt === null || pt === void 0 ? void 0 : pt.label) === '' ? (0, _lodashEs.omit)(pt, 'label') : pt;
13
+ };
11
14
  var tickCount = exports.tickCount = _plot.utils.tickCount;
12
15
  var bounds = exports.bounds = _plot.utils.bounds;
13
16
  var point = exports.point = _plot.utils.point;
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_plot","require","_invariant","_interopRequireDefault","_lodashEs","tickCount","exports","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","isEmpty","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","head","area","left","x","top","y","bottom","right","tail","reduce","p","lineToArea","from","to","pointsToArea","invariant","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","domain","range","getRightestPoints","sortedPoints","cloneDeep","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","_graphProps$size","width","height","getAdjustedGraphLimits","_graphProps$size2","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"sources":["../src/utils.js"],"sourcesContent":["import { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport { cloneDeep, head, isEmpty, isEqual, tail } from 'lodash-es';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = (label) => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\nexport const getRightestPoints = (points) => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2,\n});\n\nexport const roundNumber = (number) => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y),\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y),\n },\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding,\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding,\n },\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) => Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = (array) => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter((m) => m.type === type && !m.building);\n const index = filteredMarks.findIndex((m) => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find((m) => {\n if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {\n const { root, edge } = mark;\n\n return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_plot","require","_invariant","_interopRequireDefault","_lodashEs","stripEmptyLabel","exports","pt","label","omit","tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","isEmpty","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","head","area","left","x","top","y","bottom","right","tail","reduce","p","lineToArea","from","to","pointsToArea","invariant","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","domain","range","getRightestPoints","sortedPoints","cloneDeep","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","_graphProps$size","width","height","getAdjustedGraphLimits","_graphProps$size2","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"sources":["../src/utils.js"],"sourcesContent":["import { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport { cloneDeep, head, isEmpty, isEqual, omit, tail } from 'lodash-es';\n\nexport const stripEmptyLabel = (pt) => (pt?.label === '' ? omit(pt, 'label') : pt);\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = (label) => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\nexport const getRightestPoints = (points) => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2,\n});\n\nexport const roundNumber = (number) => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y),\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y),\n },\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding,\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding,\n },\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) => Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = (array) => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter((m) => m.type === type && !m.building);\n const index = filteredMarks.findIndex((m) => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find((m) => {\n if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {\n const { root, edge } = mark;\n\n return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "4.0.4-next.3+9ed0f0b3d",
6
+ "version": "4.0.4-next.9+f1b478218",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -23,9 +23,9 @@
23
23
  "@mui/icons-material": "^7.3.4",
24
24
  "@mui/material": "^7.3.4",
25
25
  "@pie-lib/drag": "^4.0.2",
26
- "@pie-lib/editable-html-tip-tap": "^2.1.1-next.3+9ed0f0b3d",
26
+ "@pie-lib/editable-html-tip-tap": "^2.1.0",
27
27
  "@pie-lib/graphing-utils": "^3.0.2",
28
- "@pie-lib/plot": "^4.0.3-next.3+9ed0f0b3d",
28
+ "@pie-lib/plot": "^4.0.2",
29
29
  "@pie-lib/render-ui": "^6.1.0",
30
30
  "@pie-lib/translator": "^4.0.2",
31
31
  "@visx/axis": "^3.0.0",
@@ -54,6 +54,6 @@
54
54
  "peerDependencies": {
55
55
  "react": "^18.2.0"
56
56
  },
57
- "gitHead": "9ed0f0b3d5fa8b6ee6a161ec237e2aa1fe11d9f6",
57
+ "gitHead": "f1b478218d993e9523593ac0297cb8fb4f6d684e",
58
58
  "scripts": {}
59
59
  }
@@ -103,7 +103,7 @@ export const coordinates = (graphProps, mark, rect = { width: 0, height: 0 }, po
103
103
  }
104
104
  };
105
105
 
106
- const LabelInput = ({ _ref, externalInputRef, label, disabled, inputStyle, onChange }) => (
106
+ const LabelInput = ({ _ref, externalInputRef, label, disabled, inputStyle, onChange, onBlur }) => (
107
107
  <AutosizeInput
108
108
  inputRef={(r) => {
109
109
  _ref(r);
@@ -113,6 +113,7 @@ const LabelInput = ({ _ref, externalInputRef, label, disabled, inputStyle, onCha
113
113
  inputStyle={inputStyle}
114
114
  value={label}
115
115
  onChange={onChange}
116
+ onBlur={onBlur}
116
117
  />
117
118
  );
118
119
 
@@ -123,6 +124,7 @@ LabelInput.propTypes = {
123
124
  disabled: PropTypes.bool,
124
125
  inputStyle: PropTypes.object,
125
126
  onChange: PropTypes.func,
127
+ onBlur: PropTypes.func,
126
128
  };
127
129
 
128
130
  export const MarkLabel = (props) => {
@@ -134,8 +136,15 @@ export const MarkLabel = (props) => {
134
136
 
135
137
  const [label, setLabel] = useState(mark.label);
136
138
  const { correctness, correctnesslabel, correctlabel } = mark;
139
+
137
140
  const onChange = (e) => setLabel(e.target.value);
138
141
 
142
+ const handleBlur = useCallback(() => {
143
+ if (label === '') {
144
+ props.onChange('');
145
+ }
146
+ }, [label, props.onChange]);
147
+
139
148
  const debouncedLabel = useDebounce(label, 200);
140
149
 
141
150
  // useState only sets the value once, to synch props to state need useEffect
@@ -178,6 +187,7 @@ export const MarkLabel = (props) => {
178
187
  disabled={disabledInput}
179
188
  inputStyle={inputStyle}
180
189
  onChange={onChange}
190
+ onBlur={handleBlur}
181
191
  />
182
192
  );
183
193
 
@@ -192,7 +202,6 @@ export const MarkLabel = (props) => {
192
202
  );
193
203
  }
194
204
 
195
- // avoid rendering empty label when a correct point without label was provided
196
205
  if (correctness === 'correct' && correctnesslabel === 'correct' && !correctlabel) {
197
206
  return null;
198
207
  }
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
  import { BasePoint } from '../shared/point';
5
5
  import BgCircle from './bg-circle';
6
- import { equalPoints, getMiddleOfTwoPoints, point } from '../../utils';
6
+ import { equalPoints, getMiddleOfTwoPoints, point, stripEmptyLabel } from '../../utils';
7
7
  import { types } from '@pie-lib/plot';
8
8
  import { rootEdgeComponent } from '../shared/line/with-root-edge';
9
9
  import ReactDOM from 'react-dom';
@@ -103,7 +103,7 @@ export class RawBaseCircle extends React.Component {
103
103
  };
104
104
 
105
105
  clickPoint = (point, type, data) => {
106
- const { changeMarkProps, disabled, from, to, labelModeEnabled, limitLabeling, onClick } = this.props;
106
+ const { changeMarkProps, disabled, from, to, middle, labelModeEnabled, limitLabeling, onClick } = this.props;
107
107
 
108
108
  if (!labelModeEnabled) {
109
109
  onClick(point || data);
@@ -115,8 +115,12 @@ export class RawBaseCircle extends React.Component {
115
115
  if (type === 'middle' && !point && from && to) {
116
116
  point = { ...point, ...getMiddleOfTwoPoints(from, to) };
117
117
  }
118
-
119
- changeMarkProps({ from, to, [type]: { label: '', ...point } });
118
+ changeMarkProps({
119
+ from: stripEmptyLabel(from),
120
+ to: stripEmptyLabel(to),
121
+ middle: stripEmptyLabel(middle),
122
+ [type]: { label: '', ...point },
123
+ });
120
124
 
121
125
  if (this.input[type]) {
122
126
  this.input[type].focus();
@@ -10,7 +10,7 @@ import { types } from '@pie-lib/plot';
10
10
  import invariant from 'invariant';
11
11
  import ReactDOM from 'react-dom';
12
12
  import MarkLabel from '../../mark-label';
13
- import { equalPoints, getMiddleOfTwoPoints, getRightestPoints } from '../../utils';
13
+ import { equalPoints, getMiddleOfTwoPoints, getRightestPoints, stripEmptyLabel } from '../../utils';
14
14
 
15
15
  const log = debug('pie-lib:graphing:polygon');
16
16
 
@@ -82,6 +82,7 @@ export class RawBaseComponent extends React.Component {
82
82
  labelModeEnabled: PropTypes.bool,
83
83
  limitLabeling: PropTypes.bool,
84
84
  onChangeLabelProps: PropTypes.func,
85
+ onSetMiddleLabel: PropTypes.func,
85
86
  onChangeProps: PropTypes.func,
86
87
  };
87
88
 
@@ -165,12 +166,12 @@ export class RawBaseComponent extends React.Component {
165
166
  const {
166
167
  closed,
167
168
  disabled,
169
+ middle: currentMiddle,
168
170
  onClick,
169
171
  isToolActive,
170
172
  labelModeEnabled,
171
173
  limitLabeling,
172
- onChangeProps,
173
- onChangeLabelProps,
174
+ onSetMiddleLabel,
174
175
  points,
175
176
  } = this.props;
176
177
 
@@ -184,12 +185,13 @@ export class RawBaseComponent extends React.Component {
184
185
  const { a, b } = getRightestPoints(points);
185
186
  const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };
186
187
 
187
- onChangeLabelProps(middle);
188
+ onSetMiddleLabel(middle, points.map(stripEmptyLabel));
188
189
  } else {
189
- const update = [...points];
190
+ const strippedPoints = points.map(stripEmptyLabel);
191
+ strippedPoints.splice(index, 1, { label: '', ...point });
190
192
 
191
- update.splice(index, 1, { label: '', ...point });
192
- onChangeProps(update);
193
+ const strippedMiddle = currentMiddle ? stripEmptyLabel(currentMiddle) : currentMiddle;
194
+ onSetMiddleLabel(strippedMiddle, strippedPoints);
193
195
  }
194
196
 
195
197
  // defer the focus() call with setTimeout to allow the re-render to complete first.
@@ -237,7 +239,7 @@ export class RawBaseComponent extends React.Component {
237
239
  polygonLabelNode = ReactDOM.createPortal(
238
240
  <MarkLabel
239
241
  inputRef={(r) => (this.input[polygonLabelIndex] = r)}
240
- disabled={!labelModeEnabled}
242
+ disabled={disabled || !labelModeEnabled}
241
243
  mark={middle}
242
244
  graphProps={graphProps}
243
245
  onChange={(label) => onChangeLabelProps({ ...middle, label })}
@@ -289,7 +291,7 @@ export class RawBaseComponent extends React.Component {
289
291
  ? ReactDOM.createPortal(
290
292
  <MarkLabel
291
293
  inputRef={(r) => (this.input[index] = r)}
292
- disabled={!labelModeEnabled}
294
+ disabled={disabled || !labelModeEnabled}
293
295
  mark={p}
294
296
  graphProps={graphProps}
295
297
  onChange={(label) => this.labelChange({ ...p, label }, index)}
@@ -344,9 +346,22 @@ export default class Component extends React.Component {
344
346
  const { mark, onChange } = this.props;
345
347
  const middle = { ...mark.middle, ...point };
346
348
 
349
+ if (!middle.label || isEmpty(middle.label)) {
350
+ delete middle.label;
351
+ }
352
+
347
353
  onChange(mark, { ...mark, middle });
348
354
  };
349
355
 
356
+ setMiddleLabel = (middle, strippedPoints) => {
357
+ const { mark, onChange } = this.props;
358
+ const next = { ...mark, middle };
359
+ if (strippedPoints) {
360
+ next.points = strippedPoints;
361
+ }
362
+ onChange(mark, next);
363
+ };
364
+
350
365
  closePolygon = () => {
351
366
  log('[closePolygon] ...');
352
367
  const { onComplete, mark } = this.props;
@@ -377,6 +392,7 @@ export default class Component extends React.Component {
377
392
  coordinatesOnHover={coordinatesOnHover}
378
393
  onChange={this.change}
379
394
  onChangeLabelProps={this.changeLabelProps}
395
+ onSetMiddleLabel={this.setMiddleLabel}
380
396
  onChangeProps={this.changeProps}
381
397
  onClosePolygon={this.closePolygon}
382
398
  onDragStart={this.dragStart}
@@ -7,7 +7,7 @@ import { correct, disabled, disabledSecondary, incorrect, missing } from '../sty
7
7
  import ReactDOM from 'react-dom';
8
8
  import MarkLabel from '../../../mark-label';
9
9
  import { color } from '@pie-lib/render-ui';
10
- import { equalPoints, getMiddleOfTwoPoints, sameAxes } from '../../../utils';
10
+ import { equalPoints, getMiddleOfTwoPoints, sameAxes, stripEmptyLabel } from '../../../utils';
11
11
  import { styled } from '@mui/material/styles';
12
12
 
13
13
  const StyledLineGroup = styled('g')(({ disabled, correctness }) => ({
@@ -304,7 +304,7 @@ export const lineBase = (Comp, opts) => {
304
304
  };
305
305
 
306
306
  clickPoint = (point, type, data) => {
307
- const { changeMarkProps, disabled, from, to, labelModeEnabled, limitLabeling, onClick } = this.props;
307
+ const { changeMarkProps, disabled, from, to, middle, labelModeEnabled, limitLabeling, onClick } = this.props;
308
308
 
309
309
  if (!labelModeEnabled) {
310
310
  onClick(point || data);
@@ -324,7 +324,12 @@ export const lineBase = (Comp, opts) => {
324
324
  point = { ...point, ...getMiddleOfTwoPoints(from, to) };
325
325
  }
326
326
 
327
- changeMarkProps({ from, to, [type]: { label: '', ...point } });
327
+ changeMarkProps({
328
+ from: stripEmptyLabel(from),
329
+ to: stripEmptyLabel(to),
330
+ middle: stripEmptyLabel(middle),
331
+ [type]: { label: '', ...point },
332
+ });
328
333
 
329
334
  if (this.input[type]) {
330
335
  this.input[type].focus();
package/src/utils.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { utils } from '@pie-lib/plot';
2
2
  import invariant from 'invariant';
3
- import { cloneDeep, head, isEmpty, isEqual, tail } from 'lodash-es';
3
+ import { cloneDeep, head, isEmpty, isEqual, omit, tail } from 'lodash-es';
4
+
5
+ export const stripEmptyLabel = (pt) => (pt?.label === '' ? omit(pt, 'label') : pt);
4
6
 
5
7
  export const tickCount = utils.tickCount;
6
8
  export const bounds = utils.bounds;