@pie-lib/charting 5.50.0-mui-update.0 → 6.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +19 -143
  2. package/lib/axes.js +13 -9
  3. package/lib/axes.js.map +1 -1
  4. package/lib/bars/common/bars.js +2 -1
  5. package/lib/bars/common/bars.js.map +1 -1
  6. package/lib/bars/common/correct-check-icon.js +4 -0
  7. package/lib/bars/common/correct-check-icon.js.map +1 -1
  8. package/lib/chart-setup.js +8 -10
  9. package/lib/chart-setup.js.map +1 -1
  10. package/lib/chart-type.js +14 -0
  11. package/lib/chart-type.js.map +1 -1
  12. package/lib/chart.js +1 -4
  13. package/lib/chart.js.map +1 -1
  14. package/lib/common/correctness-indicators.js +37 -2
  15. package/lib/common/correctness-indicators.js.map +1 -1
  16. package/lib/common/drag-handle.js +2 -4
  17. package/lib/common/drag-handle.js.map +1 -1
  18. package/lib/common/drag-icon.js +6 -0
  19. package/lib/common/drag-icon.js.map +1 -1
  20. package/lib/line/common/drag-handle.js +3 -0
  21. package/lib/line/common/drag-handle.js.map +1 -1
  22. package/lib/line/common/line.js +6 -2
  23. package/lib/line/common/line.js.map +1 -1
  24. package/lib/line/line-dot.js +16 -18
  25. package/lib/line/line-dot.js.map +1 -1
  26. package/lib/mark-label.js +10 -3
  27. package/lib/mark-label.js.map +1 -1
  28. package/lib/plot/common/plot.js +13 -2
  29. package/lib/plot/common/plot.js.map +1 -1
  30. package/package.json +17 -6
  31. package/src/__tests__/axes.test.jsx +85 -100
  32. package/src/__tests__/chart-type.test.jsx +5 -11
  33. package/src/__tests__/chart.test.jsx +41 -50
  34. package/src/__tests__/grid.test.jsx +23 -11
  35. package/src/__tests__/mark-label.test.jsx +13 -11
  36. package/src/__tests__/utils.js +8 -2
  37. package/src/axes.jsx +6 -6
  38. package/src/bars/__tests__/bar.test.jsx +19 -11
  39. package/src/bars/__tests__/histogram.test.jsx +19 -12
  40. package/src/bars/common/__tests__/bars.test.jsx +23 -24
  41. package/src/bars/common/bars.jsx +1 -0
  42. package/src/bars/common/correct-check-icon.jsx +5 -0
  43. package/src/chart-setup.jsx +6 -9
  44. package/src/chart-type.js +16 -0
  45. package/src/chart.jsx +11 -13
  46. package/src/common/__tests__/drag-handle.test.jsx +16 -45
  47. package/src/common/correctness-indicators.jsx +42 -2
  48. package/src/common/drag-handle.jsx +1 -3
  49. package/src/common/drag-icon.jsx +7 -0
  50. package/src/line/__tests__/line-cross.test.jsx +16 -13
  51. package/src/line/__tests__/line-dot.test.jsx +16 -13
  52. package/src/line/__tests__/utils.js +8 -2
  53. package/src/line/common/__tests__/drag-handle.test.jsx +20 -45
  54. package/src/line/common/__tests__/line.test.jsx +27 -30
  55. package/src/line/common/drag-handle.jsx +4 -0
  56. package/src/line/common/line.jsx +4 -0
  57. package/src/line/line-dot.js +1 -1
  58. package/src/mark-label.jsx +8 -3
  59. package/src/plot/__tests__/dot.test.jsx +19 -12
  60. package/src/plot/__tests__/line.test.jsx +19 -12
  61. package/src/plot/common/__tests__/plot.test.jsx +23 -24
  62. package/src/plot/common/plot.jsx +11 -0
  63. package/src/__tests__/__snapshots__/axes.test.jsx.snap +0 -569
  64. package/src/__tests__/__snapshots__/chart-type.test.jsx.snap +0 -14
  65. package/src/__tests__/__snapshots__/chart.test.jsx.snap +0 -595
  66. package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -72
  67. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -73
  68. package/src/bars/__tests__/__snapshots__/bar.test.jsx.snap +0 -43
  69. package/src/bars/__tests__/__snapshots__/histogram.test.jsx.snap +0 -45
  70. package/src/bars/common/__tests__/__snapshots__/bars.test.jsx.snap +0 -110
  71. package/src/common/__tests__/__snapshots__/drag-handle.test.jsx.snap +0 -48
  72. package/src/line/__tests__/__snapshots__/line-cross.test.jsx.snap +0 -45
  73. package/src/line/__tests__/__snapshots__/line-dot.test.jsx.snap +0 -45
  74. package/src/line/common/__tests__/__snapshots__/drag-handle.test.jsx.snap +0 -49
  75. package/src/line/common/__tests__/__snapshots__/line.test.jsx.snap +0 -143
  76. package/src/plot/__tests__/__snapshots__/dot.test.jsx.snap +0 -45
  77. package/src/plot/__tests__/__snapshots__/line.test.jsx.snap +0 -45
  78. package/src/plot/common/__tests__/__snapshots__/plot.test.jsx.snap +0 -97
@@ -1 +1 @@
1
- {"version":3,"file":"mark-label.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_styles","_reactInputAutosize","_propTypes","_plot","_styles2","_renderUi","_mathRendering","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","StyledContainer","styled","display","flexDirection","alignItems","StyledInput","_ref2","theme","fontFamily","typography","fontSize","border","correct","incorrect","backgroundColor","concat","palette","error","main","StyledMathInput","_ref3","pointerEvents","textAlign","color","primaryDark","paddingTop","disabled","isFractionFormat","label","trimmedLabel","trim","fracRegex","RegExp","test","getLabelMathFormat","fraction","mixedNr","improperFraction","split","includes","formattedLLabel","undefined","MarkLabel","exports","props","_useState","useState","_useState2","_slicedToArray2","input","setInput","_ref","useCallback","node","mark","externalInputRef","inputRef","barWidth","rotate","correctness","autoFocus","isHiddenLabel","limitCharacters","correctnessIndicator","_useState3","_useState4","setLabel","_useState5","_useState6","mathLabel","setMathLabel","_useState7","_useState8","isEditing","setIsEditing","root","useRef","onChange","target","value","isMathRendering","onChangeProp","extraStyle","width","useEffect","renderMath","createElement","ref","dangerouslySetInnerHTML","__html","className","classNames","editable","onClick","style","minWidth","position","transformOrigin","transform","visibility","marginTop","name","inputClassName","inputStyle","background","boxSizing","paddingLeft","paddingRight","top","left","onBlur","propTypes","PropTypes","bool","any","func","graphProps","types","GraphPropsType","object","number","shape","string","_default"],"sources":["../src/mark-label.jsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { styled } from '@mui/material/styles';\nimport AutosizeInput from 'react-input-autosize';\nimport PropTypes from 'prop-types';\n\nimport { types } from '@pie-lib/plot';\nimport { correct, incorrect, disabled } from './common/styles';\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst StyledContainer = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n});\n\nconst StyledInput = styled('input')(({ theme }) => ({\n float: 'right',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.fontSize,\n border: 'none',\n '&.correct': correct('color'),\n '&.incorrect': incorrect('color'),\n '&.disabled': {\n backgroundColor: 'transparent !important',\n },\n '&.error': { border: `2px solid ${theme.palette.error.main}` },\n}));\n\nconst StyledMathInput = styled('div')(({ theme }) => ({\n pointerEvents: 'auto',\n textAlign: 'center',\n fontSize: theme.typography.fontSize + 2,\n fontFamily: theme.typography.fontFamily,\n color: color.primaryDark(),\n paddingTop: theme.typography.fontSize / 2,\n '&.disabled': {\n ...disabled('color'),\n backgroundColor: 'transparent !important',\n },\n '&.error': {\n border: `2px solid ${theme.palette.error.main}`,\n },\n '&.correct': {\n ...correct('color'),\n },\n '&.incorrect': {\n ...incorrect('color'),\n },\n}));\n\nfunction isFractionFormat(label) {\n const trimmedLabel = label?.trim() || '';\n const fracRegex = new RegExp(/^[1-9]*[0-9]*\\s?[1-9][0-9]*\\/[1-9][0-9]*$/);\n return fracRegex.test(trimmedLabel);\n}\n\nfunction getLabelMathFormat(label) {\n const trimmedLabel = label?.trim() || '';\n let fraction;\n let mixedNr = '';\n let improperFraction = trimmedLabel.split(' ');\n if (improperFraction[1] && improperFraction[1].includes('/')) {\n fraction = improperFraction[1].split('/') || '';\n } else {\n fraction = trimmedLabel?.split('/') || '';\n }\n\n let formattedLLabel;\n if (isFractionFormat(label)) {\n if (improperFraction[0] && improperFraction[1]) {\n mixedNr = improperFraction[0];\n }\n formattedLLabel = `\\\\(${mixedNr}\\\\frac{${fraction[0]}}{${fraction[1]}}\\\\)`;\n return formattedLLabel;\n }\n return undefined;\n}\n\nexport const MarkLabel = (props) => {\n // eslint-disable-next-line no-unused-vars\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node), null);\n\n const {\n mark,\n disabled,\n inputRef: externalInputRef,\n barWidth,\n rotate,\n correctness,\n autoFocus,\n error,\n isHiddenLabel,\n limitCharacters,\n correctnessIndicator,\n } = props;\n\n const [label, setLabel] = useState(mark.label);\n const [mathLabel, setMathLabel] = useState(getLabelMathFormat(mark.label));\n const [isEditing, setIsEditing] = useState(false);\n let root = useRef(null);\n\n const onChange = (e) => {\n if (limitCharacters && e.target.value && e.target.value.length > 20) {\n return;\n }\n\n setLabel(e.target.value);\n };\n\n const isMathRendering = () => {\n return isEditing === false && mathLabel !== undefined;\n };\n\n const onChangeProp = (e) => {\n setMathLabel(getLabelMathFormat(mark.label));\n setIsEditing(false);\n props.onChange(e.target.value);\n };\n let extraStyle = {};\n\n if (rotate) {\n extraStyle = {\n width: 'unset',\n textAlign: 'left',\n };\n }\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 useEffect(() => {\n renderMath(root);\n }, []);\n\n return (\n <StyledContainer>\n {correctnessIndicator}\n {isMathRendering() ? (\n <StyledMathInput\n ref={(r) => {\n root = r;\n externalInputRef(r);\n }}\n dangerouslySetInnerHTML={{ __html: getLabelMathFormat(label) }}\n className={classNames({\n disabled: disabled,\n error: error,\n correct: mark.editable && correctness?.label === 'correct',\n incorrect: mark.editable && correctness?.label === 'incorrect',\n })}\n onClick={() => setIsEditing(true)}\n style={{\n minWidth: barWidth,\n position: 'fixed',\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n marginTop: correctnessIndicator ? '24px' : '0',\n }}\n ></StyledMathInput>\n ) : (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n externalInputRef(r);\n }}\n name='mark-label-input'\n autoFocus={isEditing || autoFocus}\n disabled={disabled}\n inputClassName={classNames(\n correctness && mark.editable ? correctness.label : null,\n disabled && 'disabled',\n error && 'error',\n )}\n inputStyle={{\n minWidth: barWidth,\n textAlign: 'center',\n background: 'transparent',\n boxSizing: 'border-box',\n paddingLeft: 0,\n paddingRight: 0,\n border: 'none',\n ...extraStyle,\n }}\n value={label}\n style={{\n position: 'fixed',\n pointerEvents: 'auto',\n top: 0,\n left: 0,\n minWidth: barWidth,\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n marginTop: correctnessIndicator ? '24px' : '0',\n }}\n onChange={onChange}\n onBlur={onChangeProp}\n />\n )}\n </StyledContainer>\n );\n};\n\nMarkLabel.propTypes = {\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.any,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n barWidth: PropTypes.number,\n rotate: PropTypes.number,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n isHiddenLabel: PropTypes.bool,\n limitCharacters: PropTypes.bool,\n correctnessIndicator: PropTypes.node,\n};\n\nexport default MarkLabel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"mark-label.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_styles","_reactInputAutosize","_propTypes","_plot","_styles2","_renderUi","_mathRendering","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","StyledContainer","styled","display","flexDirection","alignItems","StyledInput","_ref2","theme","fontFamily","typography","fontSize","border","correct","incorrect","backgroundColor","concat","palette","error","main","StyledMathInput","_ref3","pointerEvents","textAlign","color","primaryDark","paddingTop","disabled","isFractionFormat","label","trimmedLabel","trim","fracRegex","RegExp","test","getLabelMathFormat","fraction","mixedNr","improperFraction","split","includes","formattedLLabel","undefined","MarkLabel","exports","props","_useState","useState","_useState2","_slicedToArray2","input","setInput","_ref","useCallback","node","_props$mark","mark","externalInputRef","inputRef","barWidth","rotate","correctness","autoFocus","isHiddenLabel","limitCharacters","correctnessIndicator","_useState3","_useState4","setLabel","_useState5","_useState6","mathLabel","setMathLabel","_useState7","_useState8","isEditing","setIsEditing","root","useRef","onChange","target","value","isMathRendering","onChangeProp","extraStyle","width","useEffect","renderMath","createElement","ref","dangerouslySetInnerHTML","__html","className","classNames","editable","onClick","style","minWidth","position","transformOrigin","transform","visibility","marginTop","name","inputClassName","inputStyle","background","boxSizing","paddingLeft","paddingRight","top","left","onBlur","propTypes","PropTypes","bool","any","func","graphProps","types","GraphPropsType","object","number","shape","string","_default"],"sources":["../src/mark-label.jsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { styled } from '@mui/material/styles';\nimport AutosizeInput from 'react-input-autosize';\nimport PropTypes from 'prop-types';\n\nimport { types } from '@pie-lib/plot';\nimport { correct, incorrect, disabled } from './common/styles';\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst StyledContainer = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n});\n\n// eslint-disable-next-line no-unused-vars\nconst StyledInput = styled('input')(({ theme }) => ({\n float: 'right',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.fontSize,\n border: 'none',\n '&.correct': correct('color'),\n '&.incorrect': incorrect('color'),\n '&.disabled': {\n backgroundColor: 'transparent !important',\n },\n '&.error': { border: `2px solid ${theme.palette.error.main}` },\n}));\n\nconst StyledMathInput = styled('div')(({ theme }) => ({\n pointerEvents: 'auto',\n textAlign: 'center',\n fontSize: theme.typography.fontSize + 2,\n fontFamily: theme.typography.fontFamily,\n color: color.primaryDark(),\n paddingTop: theme.typography.fontSize / 2,\n '&.disabled': {\n ...disabled('color'),\n backgroundColor: 'transparent !important',\n },\n '&.error': {\n border: `2px solid ${theme.palette.error.main}`,\n },\n '&.correct': {\n ...correct('color'),\n },\n '&.incorrect': {\n ...incorrect('color'),\n },\n}));\n\nfunction isFractionFormat(label) {\n const trimmedLabel = label?.trim() || '';\n const fracRegex = new RegExp(/^[1-9]*[0-9]*\\s?[1-9][0-9]*\\/[1-9][0-9]*$/);\n return fracRegex.test(trimmedLabel);\n}\n\nfunction getLabelMathFormat(label) {\n const trimmedLabel = label?.trim() || '';\n let fraction;\n let mixedNr = '';\n let improperFraction = trimmedLabel.split(' ');\n if (improperFraction[1] && improperFraction[1].includes('/')) {\n fraction = improperFraction[1].split('/') || '';\n } else {\n fraction = trimmedLabel?.split('/') || '';\n }\n\n let formattedLLabel;\n if (isFractionFormat(label)) {\n if (improperFraction[0] && improperFraction[1]) {\n mixedNr = improperFraction[0];\n }\n formattedLLabel = `\\\\(${mixedNr}\\\\frac{${fraction[0]}}{${fraction[1]}}\\\\)`;\n return formattedLLabel;\n }\n return undefined;\n}\n\nexport const MarkLabel = (props) => {\n // eslint-disable-next-line no-unused-vars\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node), null);\n\n const {\n mark = {},\n disabled,\n inputRef: externalInputRef,\n barWidth,\n rotate,\n correctness,\n autoFocus,\n error,\n isHiddenLabel,\n limitCharacters,\n correctnessIndicator,\n } = props;\n\n const [label, setLabel] = useState(mark.label);\n const [mathLabel, setMathLabel] = useState(getLabelMathFormat(mark.label));\n const [isEditing, setIsEditing] = useState(false);\n let root = useRef(null);\n\n const onChange = (e) => {\n if (limitCharacters && e.target.value && e.target.value.length > 20) {\n return;\n }\n\n setLabel(e.target.value);\n };\n\n const isMathRendering = () => {\n return isEditing === false && mathLabel !== undefined;\n };\n\n const onChangeProp = (e) => {\n setMathLabel(getLabelMathFormat(mark.label));\n setIsEditing(false);\n props.onChange(e.target.value);\n };\n let extraStyle = {};\n\n if (rotate) {\n extraStyle = {\n width: 'unset',\n textAlign: 'left',\n };\n }\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 useEffect(() => {\n renderMath(root);\n }, []);\n\n return (\n <StyledContainer>\n {correctnessIndicator}\n {isMathRendering() ? (\n <StyledMathInput\n ref={(r) => {\n root = r;\n if (typeof externalInputRef === 'function') {\n externalInputRef(r);\n }\n }}\n dangerouslySetInnerHTML={{ __html: getLabelMathFormat(label) }}\n className={classNames({\n disabled: disabled,\n error: error,\n correct: mark.editable && correctness?.label === 'correct',\n incorrect: mark.editable && correctness?.label === 'incorrect',\n })}\n onClick={() => setIsEditing(true)}\n style={{\n minWidth: barWidth,\n position: 'fixed',\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n marginTop: correctnessIndicator ? '24px' : '0',\n }}\n ></StyledMathInput>\n ) : (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n if (typeof externalInputRef === 'function') {\n externalInputRef(r);\n }\n }}\n name='mark-label-input'\n autoFocus={isEditing || autoFocus}\n disabled={disabled}\n inputClassName={classNames(\n correctness && mark.editable ? correctness.label : null,\n disabled && 'disabled',\n error && 'error',\n )}\n inputStyle={{\n minWidth: barWidth,\n textAlign: 'center',\n background: 'transparent',\n boxSizing: 'border-box',\n paddingLeft: 0,\n paddingRight: 0,\n border: 'none',\n ...extraStyle,\n }}\n value={label}\n style={{\n position: 'fixed',\n pointerEvents: 'auto',\n top: 0,\n left: 0,\n minWidth: barWidth,\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n marginTop: correctnessIndicator ? '24px' : '0',\n }}\n onChange={onChange}\n onBlur={onChangeProp}\n />\n )}\n </StyledContainer>\n );\n};\n\nMarkLabel.propTypes = {\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.any,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n barWidth: PropTypes.number,\n rotate: PropTypes.number,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n isHiddenLabel: PropTypes.bool,\n limitCharacters: PropTypes.bool,\n correctnessIndicator: PropTypes.node,\n};\n\nexport default MarkLabel;\n"],"mappings":"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","ignoreList":[]}
@@ -242,7 +242,13 @@ var RawPlot = exports.RawPlot = /*#__PURE__*/function (_React$Component) {
242
242
  correctness: _propTypes["default"].shape({
243
243
  value: _propTypes["default"].string,
244
244
  label: _propTypes["default"].string
245
- })
245
+ }),
246
+ defineChart: _propTypes["default"].bool,
247
+ correctData: _propTypes["default"].arrayOf(_propTypes["default"].shape({
248
+ value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
249
+ label: _propTypes["default"].string
250
+ })),
251
+ className: _propTypes["default"].string
246
252
  });
247
253
  var Bar = (0, _styles.styled)(RawPlot)(function (_ref2) {
248
254
  var theme = _ref2.theme;
@@ -332,7 +338,12 @@ var Plot = exports.Plot = /*#__PURE__*/function (_React$Component2) {
332
338
  xBand: _propTypes["default"].func,
333
339
  graphProps: _plot.types.GraphPropsType.isRequired,
334
340
  defineChart: _propTypes["default"].bool,
335
- CustomBarElement: _propTypes["default"].func
341
+ CustomBarElement: _propTypes["default"].func,
342
+ correctData: _propTypes["default"].arrayOf(_propTypes["default"].shape({
343
+ value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
344
+ label: _propTypes["default"].string
345
+ })),
346
+ className: _propTypes["default"].string
336
347
  });
337
348
  var _default = exports["default"] = Plot;
338
349
  //# sourceMappingURL=plot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plot.js","names":["_react","_interopRequireDefault","require","_propTypes","_Check","_styles","_group","_debug","_plot","_dragHandle","_interopRequireWildcard","_renderUi","_utils","_styles2","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","log","debug","ICON_SIZE","RawPlot","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","setState","isHovered","dragValue","_this$props","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","barX","barWidth","correctVal","correctness","scale","pointHeight","pointDiameter","iconY","y","shapeIndex","shapeCenterY","createElement","x","width","height","className","title","_inherits2","_createClass2","key","render","_this2","_this$props2","graphProps","xBand","index","CustomBarElement","interactive","defineChart","correctData","range","size","_ref","max","_this$state","v","Number","isFinite","bandwidth","barHeight","bandKey","values","push","Component","DraggableHandle","DragHandle","allowRolloverEvent","Fragment","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","onTouchStart","onTouchEnd","length","stroke","color","defaults","BORDER_GRAY","strokeWidth","fill","map","parseFloat","isNaN","selectedVal","renderCorrectnessIcon","overlayValues","lastIndexOfOverlay","lastOverlayValue","dottedOverline","valuesToRender","idx","onDrag","onDragStop","dragStop","primaryDark","isPlot","React","PropTypes","func","number","string","isRequired","types","GraphPropsType","bool","shape","Bar","styled","_ref2","theme","visualElementsColors","PLOT_FILL_COLOR","correct","incorrect","backgroundColor","incorrectWithIcon","borderRadius","spacing","WHITE","fontSize","padding","border","concat","boxSizing","display","Plot","_React$Component2","arguments","_this$props3","data","Group","d","category","array","_default"],"sources":["../../../src/plot/common/plot.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Check from '@mui/icons-material/Check';\nimport { styled } from '@mui/material/styles';\nimport { Group } from '@visx/group';\nimport debug from 'debug';\n\nimport { types } from '@pie-lib/plot';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport { color } from '@pie-lib/render-ui';\nimport { bandKey } from '../../utils';\nimport { correct, incorrect } from '../../common/styles';\n\nconst log = debug('pie-lib:chart:bars');\nconst ICON_SIZE = 16; // 10px icon + 2px padding on all sides + 1px border\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func,\n interactive: PropTypes.bool,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined,\n isHovered: false,\n };\n }\n\n handleMouseEnter = () => {\n this.setState({ isHovered: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ isHovered: false });\n };\n\n setDragValue = (dragValue) => this.setState({ dragValue });\n\n dragStop = () => {\n const { label, onChangeCategory } = this.props;\n const { dragValue } = this.state;\n log('[dragStop]', dragValue);\n\n if (dragValue !== undefined) {\n onChangeCategory({ label, value: dragValue });\n }\n\n this.setDragValue(undefined);\n };\n\n dragValue = (existing, next) => {\n log('[dragValue] next:', next);\n\n this.setDragValue(next);\n };\n\n renderCorrectnessIcon = (barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter) => {\n let iconY;\n\n if (correctVal === 0) {\n // if correct value is 0, position icon on the horizontal axis\n iconY = scale.y(0) - ICON_SIZE / 2;\n } else {\n const shapeIndex = correctVal - 1; // the index of the shape representing the correct value\n const shapeCenterY = scale.y(shapeIndex) - (pointHeight - pointDiameter) / 2 - pointDiameter / 2;\n iconY = shapeCenterY - ICON_SIZE / 2; // center the icon\n }\n\n return (\n <foreignObject x={barX + barWidth / 2 - ICON_SIZE / 2} y={iconY} width={ICON_SIZE} height={ICON_SIZE}>\n <Check\n className=\"correctnessIcon correctIcon smallIcon\"\n title={correctness.label}\n />\n </foreignObject>\n );\n };\n\n render() {\n const {\n graphProps,\n value,\n label,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness,\n defineChart,\n correctData,\n className\n } = this.props;\n\n const { scale, range, size } = graphProps;\n const { max } = range || {};\n const { dragValue, isHovered } = this.state;\n\n const v = Number.isFinite(dragValue) ? dragValue : value;\n const barWidth = xBand.bandwidth();\n const barHeight = scale.y(range.max - v);\n const barX = xBand(bandKey({ label }, index));\n\n log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);\n\n const values = [];\n\n for (let i = 0; i < v; i++) {\n values.push(i);\n }\n\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n const Component = interactive ? DraggableHandle : DragHandle;\n const allowRolloverEvent = interactive && !correctness;\n\n return (\n <React.Fragment>\n <g\n className={className}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onTouchStart={this.handleMouseEnter}\n onTouchEnd={this.handleMouseLeave}\n >\n {isHovered && allowRolloverEvent && (\n <rect\n x={barX}\n y={scale.y(v)}\n width={barWidth}\n height={values?.length ? pointHeight * values.length : 0}\n stroke={color.defaults.BORDER_GRAY}\n strokeWidth={'4px'}\n fill={'transparent'}\n />\n )}\n {values.map((index) =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n }),\n )}\n {correctness &&\n correctness.value === 'incorrect' &&\n (() => {\n const correctVal = parseFloat(correctData[index] && correctData[index].value);\n if (isNaN(correctVal)) return null;\n const selectedVal = v;\n\n // special case: if correct value is 0, only show the icon on the axis\n if (correctVal === 0) {\n return this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n );\n }\n\n if (selectedVal > correctVal) {\n // selected is higher than correct: overlay the correct last segment\n const overlayValues = [];\n for (let i = 0; i < correctVal; i++) {\n overlayValues.push(i);\n }\n const lastIndexOfOverlay = overlayValues.length - 1;\n const lastOverlayValue = overlayValues[lastIndexOfOverlay];\n const barX = xBand(bandKey({ label }, index));\n const barWidth = xBand.bandwidth();\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n return (\n <>\n <CustomBarElement\n index={lastOverlayValue}\n pointDiameter={pointDiameter + 10} // increase point diameter for dotted line\n barX={barX}\n barWidth={barWidth}\n pointHeight={pointHeight}\n label={label}\n value={value}\n scale={scale}\n dottedOverline={true}\n />\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n }\n // selected is lower than correct, render missing segment below the correct bar\n const valuesToRender = [];\n for (let i = selectedVal; i < correctVal; i++) {\n valuesToRender.push(i);\n }\n return (\n <>\n {valuesToRender.map((idx) =>\n CustomBarElement({\n index: idx,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n dottedOverline: true,\n }),\n )}\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n })()}\n <Component\n x={barX}\n y={v}\n interactive={interactive}\n width={barWidth}\n onDrag={(v) => this.dragValue(value, v)}\n onDragStop={this.dragStop}\n graphProps={graphProps}\n correctness={correctness}\n isHovered={isHovered}\n defineChart={defineChart}\n color={color.primaryDark()}\n isPlot\n />\n </g>\n </React.Fragment>\n );\n }\n}\n\nconst Bar = styled(RawPlot)(({ theme }) => ({\n '& .dot': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .dotColor': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('fill'),\n '&.incorrect': incorrect('fill'),\n },\n '& .line': {\n stroke: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .correctIcon': {\n backgroundColor: color.correct(),\n },\n '& .incorrectIcon': {\n backgroundColor: color.incorrectWithIcon(),\n },\n '& .correctnessIcon': {\n borderRadius: theme.spacing(2),\n color: color.defaults.WHITE,\n fontSize: '16px',\n width: '16px',\n height: '16px',\n padding: '2px',\n border: `1px solid ${color.defaults.WHITE}`,\n stroke: 'initial',\n boxSizing: 'unset', // to override the default border-box in IBX\n display: 'block',\n },\n '& .smallIcon': {\n fontSize: '10px',\n width: '10px',\n height: '10px',\n },\n}));\n\nexport class Plot extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChangeCategory: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n defineChart: PropTypes.bool,\n CustomBarElement: PropTypes.func,\n };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory, defineChart, correctData } = this.props;\n\n return (\n <Group>\n {(data || []).map((d, index) => (\n <Bar\n value={d.value}\n label={d.label}\n interactive={defineChart || d.interactive}\n defineChart={defineChart}\n xBand={xBand}\n index={index}\n key={`bar-${d.label}-${d.value}-${index}`}\n onChangeCategory={(category) => onChangeCategory(index, category)}\n graphProps={graphProps}\n CustomBarElement={CustomBarElement}\n correctness={d.correctness}\n correctData={correctData}\n />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"plot.js","names":["_react","_interopRequireDefault","require","_propTypes","_Check","_styles","_group","_debug","_plot","_dragHandle","_interopRequireWildcard","_renderUi","_utils","_styles2","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","log","debug","ICON_SIZE","RawPlot","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","setState","isHovered","dragValue","_this$props","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","barX","barWidth","correctVal","correctness","scale","pointHeight","pointDiameter","iconY","y","shapeIndex","shapeCenterY","createElement","x","width","height","className","title","_inherits2","_createClass2","key","render","_this2","_this$props2","graphProps","xBand","index","CustomBarElement","interactive","defineChart","correctData","range","size","_ref","max","_this$state","v","Number","isFinite","bandwidth","barHeight","bandKey","values","push","Component","DraggableHandle","DragHandle","allowRolloverEvent","Fragment","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","onTouchStart","onTouchEnd","length","stroke","color","defaults","BORDER_GRAY","strokeWidth","fill","map","parseFloat","isNaN","selectedVal","renderCorrectnessIcon","overlayValues","lastIndexOfOverlay","lastOverlayValue","dottedOverline","valuesToRender","idx","onDrag","onDragStop","dragStop","primaryDark","isPlot","React","PropTypes","func","number","string","isRequired","types","GraphPropsType","bool","shape","arrayOf","oneOfType","Bar","styled","_ref2","theme","visualElementsColors","PLOT_FILL_COLOR","correct","incorrect","backgroundColor","incorrectWithIcon","borderRadius","spacing","WHITE","fontSize","padding","border","concat","boxSizing","display","Plot","_React$Component2","arguments","_this$props3","data","Group","d","category","array","_default"],"sources":["../../../src/plot/common/plot.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Check from '@mui/icons-material/Check';\nimport { styled } from '@mui/material/styles';\nimport { Group } from '@visx/group';\nimport debug from 'debug';\n\nimport { types } from '@pie-lib/plot';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport { color } from '@pie-lib/render-ui';\nimport { bandKey } from '../../utils';\nimport { correct, incorrect } from '../../common/styles';\n\nconst log = debug('pie-lib:chart:bars');\nconst ICON_SIZE = 16; // 10px icon + 2px padding on all sides + 1px border\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func,\n interactive: PropTypes.bool,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n defineChart: PropTypes.bool,\n correctData: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string,\n })),\n className: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined,\n isHovered: false,\n };\n }\n\n handleMouseEnter = () => {\n this.setState({ isHovered: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ isHovered: false });\n };\n\n setDragValue = (dragValue) => this.setState({ dragValue });\n\n dragStop = () => {\n const { label, onChangeCategory } = this.props;\n const { dragValue } = this.state;\n log('[dragStop]', dragValue);\n\n if (dragValue !== undefined) {\n onChangeCategory({ label, value: dragValue });\n }\n\n this.setDragValue(undefined);\n };\n\n dragValue = (existing, next) => {\n log('[dragValue] next:', next);\n\n this.setDragValue(next);\n };\n\n renderCorrectnessIcon = (barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter) => {\n let iconY;\n\n if (correctVal === 0) {\n // if correct value is 0, position icon on the horizontal axis\n iconY = scale.y(0) - ICON_SIZE / 2;\n } else {\n const shapeIndex = correctVal - 1; // the index of the shape representing the correct value\n const shapeCenterY = scale.y(shapeIndex) - (pointHeight - pointDiameter) / 2 - pointDiameter / 2;\n iconY = shapeCenterY - ICON_SIZE / 2; // center the icon\n }\n\n return (\n <foreignObject x={barX + barWidth / 2 - ICON_SIZE / 2} y={iconY} width={ICON_SIZE} height={ICON_SIZE}>\n <Check\n className=\"correctnessIcon correctIcon smallIcon\"\n title={correctness.label}\n />\n </foreignObject>\n );\n };\n\n render() {\n const {\n graphProps,\n value,\n label,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness,\n defineChart,\n correctData,\n className\n } = this.props;\n\n const { scale, range, size } = graphProps;\n const { max } = range || {};\n const { dragValue, isHovered } = this.state;\n\n const v = Number.isFinite(dragValue) ? dragValue : value;\n const barWidth = xBand.bandwidth();\n const barHeight = scale.y(range.max - v);\n const barX = xBand(bandKey({ label }, index));\n\n log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);\n\n const values = [];\n\n for (let i = 0; i < v; i++) {\n values.push(i);\n }\n\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n const Component = interactive ? DraggableHandle : DragHandle;\n const allowRolloverEvent = interactive && !correctness;\n\n return (\n <React.Fragment>\n <g\n className={className}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onTouchStart={this.handleMouseEnter}\n onTouchEnd={this.handleMouseLeave}\n >\n {isHovered && allowRolloverEvent && (\n <rect\n x={barX}\n y={scale.y(v)}\n width={barWidth}\n height={values?.length ? pointHeight * values.length : 0}\n stroke={color.defaults.BORDER_GRAY}\n strokeWidth={'4px'}\n fill={'transparent'}\n />\n )}\n {values.map((index) =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n }),\n )}\n {correctness &&\n correctness.value === 'incorrect' &&\n (() => {\n const correctVal = parseFloat(correctData[index] && correctData[index].value);\n if (isNaN(correctVal)) return null;\n const selectedVal = v;\n\n // special case: if correct value is 0, only show the icon on the axis\n if (correctVal === 0) {\n return this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n );\n }\n\n if (selectedVal > correctVal) {\n // selected is higher than correct: overlay the correct last segment\n const overlayValues = [];\n for (let i = 0; i < correctVal; i++) {\n overlayValues.push(i);\n }\n const lastIndexOfOverlay = overlayValues.length - 1;\n const lastOverlayValue = overlayValues[lastIndexOfOverlay];\n const barX = xBand(bandKey({ label }, index));\n const barWidth = xBand.bandwidth();\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n return (\n <>\n <CustomBarElement\n index={lastOverlayValue}\n pointDiameter={pointDiameter + 10} // increase point diameter for dotted line\n barX={barX}\n barWidth={barWidth}\n pointHeight={pointHeight}\n label={label}\n value={value}\n scale={scale}\n dottedOverline={true}\n />\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n }\n // selected is lower than correct, render missing segment below the correct bar\n const valuesToRender = [];\n for (let i = selectedVal; i < correctVal; i++) {\n valuesToRender.push(i);\n }\n return (\n <>\n {valuesToRender.map((idx) =>\n CustomBarElement({\n index: idx,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n dottedOverline: true,\n }),\n )}\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n })()}\n <Component\n x={barX}\n y={v}\n interactive={interactive}\n width={barWidth}\n onDrag={(v) => this.dragValue(value, v)}\n onDragStop={this.dragStop}\n graphProps={graphProps}\n correctness={correctness}\n isHovered={isHovered}\n defineChart={defineChart}\n color={color.primaryDark()}\n isPlot\n />\n </g>\n </React.Fragment>\n );\n }\n}\n\nconst Bar = styled(RawPlot)(({ theme }) => ({\n '& .dot': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .dotColor': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('fill'),\n '&.incorrect': incorrect('fill'),\n },\n '& .line': {\n stroke: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .correctIcon': {\n backgroundColor: color.correct(),\n },\n '& .incorrectIcon': {\n backgroundColor: color.incorrectWithIcon(),\n },\n '& .correctnessIcon': {\n borderRadius: theme.spacing(2),\n color: color.defaults.WHITE,\n fontSize: '16px',\n width: '16px',\n height: '16px',\n padding: '2px',\n border: `1px solid ${color.defaults.WHITE}`,\n stroke: 'initial',\n boxSizing: 'unset', // to override the default border-box in IBX\n display: 'block',\n },\n '& .smallIcon': {\n fontSize: '10px',\n width: '10px',\n height: '10px',\n },\n}));\n\nexport class Plot extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChangeCategory: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n defineChart: PropTypes.bool,\n CustomBarElement: PropTypes.func,\n correctData: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string,\n })),\n className: PropTypes.string,\n };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory, defineChart, correctData } = this.props;\n\n return (\n <Group>\n {(data || []).map((d, index) => (\n <Bar\n value={d.value}\n label={d.label}\n interactive={defineChart || d.interactive}\n defineChart={defineChart}\n xBand={xBand}\n index={index}\n key={`bar-${d.label}-${d.value}-${index}`}\n onChangeCategory={(category) => onChangeCategory(index, category)}\n graphProps={graphProps}\n CustomBarElement={CustomBarElement}\n correctness={d.correctness}\n correctData={correctData}\n />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\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": "5.50.0-mui-update.0",
6
+ "version": "6.0.0-next.0",
7
7
  "description": "charting",
8
8
  "keywords": [
9
9
  "react",
@@ -22,10 +22,10 @@
22
22
  "@mapbox/point-geometry": "^0.1.0",
23
23
  "@mui/icons-material": "^7.3.4",
24
24
  "@mui/material": "^7.3.4",
25
- "@pie-lib/math-rendering": "3.40.0-mui-update.0",
26
- "@pie-lib/plot": "2.41.0-mui-update.0",
27
- "@pie-lib/render-ui": "4.49.0-mui-update.0",
28
- "@pie-lib/translator": "2.38.0-mui-update.0",
25
+ "@pie-lib/math-rendering": "3.22.2-next.16",
26
+ "@pie-lib/plot": "2.27.3-next.15",
27
+ "@pie-lib/render-ui": "4.35.3-next.15",
28
+ "@pie-lib/translator": "2.23.2-next.16",
29
29
  "@visx/axis": "^3.0.0",
30
30
  "@visx/event": "^3.0.0",
31
31
  "@visx/grid": "^3.0.0",
@@ -46,5 +46,16 @@
46
46
  "peerDependencies": {
47
47
  "react": "^18.2.0"
48
48
  },
49
- "gitHead": "4987cf54cc4fd60a003b198645907db716253ed0"
49
+ "devDependencies": {
50
+ "@pie-lib/test-utils": "^0.22.2-next.16"
51
+ },
52
+ "gitHead": "a6ae07ad459bbae1039b5a1a8b9c40e3c1f3af73",
53
+ "exports": {
54
+ ".": {
55
+ "require": "./lib/index.js",
56
+ "import": "./src/index.js",
57
+ "default": "./lib/index.js"
58
+ },
59
+ "./esm": "./esm/index.js"
60
+ }
50
61
  }
@@ -1,141 +1,126 @@
1
- import { shallow } from 'enzyme';
2
1
  import React from 'react';
2
+ import { render } from '@pie-lib/test-utils';
3
+ import { ThemeProvider, createTheme } from '@mui/material/styles';
3
4
  import ChartAxes, { TickComponent, RawChartAxes } from '../axes';
4
- import { graphProps } from './utils';
5
+ import { graphProps, createBandScale } from './utils';
6
+
7
+ const theme = createTheme();
5
8
 
6
9
  describe('ChartAxes', () => {
7
- const wrapper = (extras) => {
10
+ const renderComponent = (extras) => {
8
11
  const defaults = {
9
12
  classes: {},
10
13
  className: 'className',
11
14
  graphProps: graphProps(),
12
- xBand: {
13
- bandwidth: () => {},
14
- },
15
+ xBand: createBandScale(['a', 'b', 'c'], [0, 400]),
16
+ categories: [],
15
17
  };
16
18
  const props = { ...defaults, ...extras };
17
- return shallow(<ChartAxes {...props} />);
19
+ return render(
20
+ <ThemeProvider theme={theme}>
21
+ <svg>
22
+ <ChartAxes {...props} />
23
+ </svg>
24
+ </ThemeProvider>
25
+ );
18
26
  };
19
27
 
20
- describe('snapshot', () => {
21
- it('renders', () => expect(wrapper()).toMatchSnapshot());
28
+ describe('rendering', () => {
29
+ it('renders axes container', () => {
30
+ const { container } = renderComponent();
31
+ expect(container.firstChild).toBeInTheDocument();
32
+ });
33
+
34
+ it('renders SVG with axes group', () => {
35
+ const { container} = renderComponent();
36
+ const svg = container.querySelector('svg');
37
+ expect(svg).toBeInTheDocument();
38
+ // Component renders StyledAxesGroup which is a <g> element
39
+ const axesGroup = container.querySelector('g');
40
+ expect(axesGroup).toBeInTheDocument();
41
+ });
22
42
  });
23
43
  });
24
44
 
25
45
  describe('RawChartAxes', () => {
26
- const wrapper = (extras) => {
46
+ const renderComponent = (extras) => {
27
47
  const defaults = {
28
48
  classes: {},
29
49
  className: 'className',
30
50
  graphProps: graphProps(),
31
- xBand: {
32
- bandwidth: () => {},
33
- rangeRound: () => {},
34
- },
51
+ xBand: createBandScale(['a', 'b', 'c'], [0, 400]),
35
52
  categories: [],
36
53
  };
37
54
  const props = { ...defaults, ...extras };
38
- return shallow(<RawChartAxes {...props} />);
39
- };
40
-
41
- describe('snapshot', () => {
42
- it('renders', () => expect(wrapper()).toMatchSnapshot());
43
-
44
- it('renders if graphProps is not defined', () => expect(wrapper({ graphProps: undefined })).toMatchSnapshot());
45
-
46
- it('renders if categories are not defined', () => expect(wrapper({ categories: undefined })).toMatchSnapshot());
47
- });
48
- });
49
-
50
- describe('splitText method', () => {
51
- const wrapper = (extras) => {
52
- const xBand = jest.fn();
53
- xBand.bandwidth = jest.fn();
54
-
55
- const defaults = {
56
- graphProps: graphProps(),
57
- xBand,
58
- };
59
- const props = { ...defaults, ...extras };
60
- return shallow(<TickComponent {...props} />);
55
+ return render(
56
+ <ThemeProvider theme={theme}>
57
+ <svg>
58
+ <RawChartAxes {...props} />
59
+ </svg>
60
+ </ThemeProvider>
61
+ );
61
62
  };
62
63
 
63
- it('splits a string into chunks of up to the specified length', () => {
64
- const w = wrapper();
65
- const input = 'This is a test string for splitText function';
66
- const output = w.instance().splitText(input, 20);
67
- expect(output).toEqual(['This is a test', 'string for splitText', 'function']);
68
- });
69
-
70
- it('returns an array with a single string when the input is less than the specified length', () => {
71
- const w = wrapper();
72
- const input = 'Short text';
73
- const output = w.instance().splitText(input, 20);
74
- expect(output).toEqual(['Short text']);
75
- });
76
-
77
- it('splits a string into chunks of exact length when no spaces are present', () => {
78
- const w = wrapper();
79
- const input = 'ThisisateststringforsplitTextfunction';
80
- const output = w.instance().splitText(input, 10);
81
- expect(output).toEqual(['Thisisates', 'tstringfor', 'splitTextf', 'unction']);
82
- });
83
-
84
- it('returns an empty array when the input is an empty string', () => {
85
- const w = wrapper();
86
- const input = '';
87
- const output = w.instance().splitText(input, 20);
88
- expect(output).toEqual([]);
89
- });
64
+ describe('rendering', () => {
65
+ it('renders raw axes container', () => {
66
+ const { container } = renderComponent();
67
+ expect(container.firstChild).toBeInTheDocument();
68
+ });
90
69
 
91
- it('returns an empty array when the input is null', () => {
92
- const w = wrapper();
93
- const input = null;
94
- const output = w.instance().splitText(input, 20);
95
- expect(output).toEqual([]);
70
+ it('renders SVG with axes group', () => {
71
+ const { container } = renderComponent();
72
+ const svg = container.querySelector('svg');
73
+ expect(svg).toBeInTheDocument();
74
+ // Component renders StyledAxesGroup which is a <g> element
75
+ const axesGroup = container.querySelector('g');
76
+ expect(axesGroup).toBeInTheDocument();
77
+ });
96
78
  });
97
79
  });
98
80
 
99
81
  describe('TickComponent', () => {
100
- const wrapper = (extras) => {
101
- const xBand = jest.fn();
102
- xBand.bandwidth = jest.fn();
103
-
82
+ const renderComponent = (extras) => {
104
83
  const defaults = {
105
84
  graphProps: graphProps(),
106
- xBand,
85
+ xBand: createBandScale(['a', 'b', 'c'], [0, 400]),
86
+ categories: [{ value: 1, label: 'test', editable: false, interactive: false }],
87
+ formattedValue: '0-test',
88
+ bandWidth: 100,
89
+ barWidth: 100,
90
+ x: 50,
91
+ y: 50,
107
92
  };
108
93
  const props = { ...defaults, ...extras };
109
- return shallow(<TickComponent {...props} />);
94
+ return render(
95
+ <ThemeProvider theme={theme}>
96
+ <svg>
97
+ <TickComponent {...props} />
98
+ </svg>
99
+ </ThemeProvider>
100
+ );
110
101
  };
111
102
 
112
- describe('snapshot', () => {
113
- it('renders', () => expect(wrapper()).toMatchSnapshot());
114
- });
115
-
116
- describe('snapshot1', () => {
117
- it('renders', () =>
118
- expect(
119
- wrapper({
120
- formattedValue: '0-test',
121
- categories: [{ value: 1, label: 'test' }],
122
- }),
123
- ).toMatchSnapshot());
124
- });
125
-
126
- describe('logic', () => {
127
- const onChange = jest.fn();
128
- const onChangeCategory = jest.fn();
129
- const w = wrapper({
130
- formattedValue: '0-test',
131
- categories: [{ value: 1, label: 'test' }],
132
- onChange,
133
- onChangeCategory,
103
+ describe('rendering', () => {
104
+ it('renders tick component', () => {
105
+ const { container } = renderComponent();
106
+ const svg = container.querySelector('svg');
107
+ expect(svg).toBeInTheDocument();
108
+ // TickComponent renders a <g> element
109
+ expect(container.querySelector('g')).toBeInTheDocument();
134
110
  });
135
111
 
136
- it('calls onChangeCategory', () => {
137
- w.instance().changeCategory(0, 'new label');
138
- expect(onChangeCategory).toHaveBeenCalledWith(0, { value: 1, label: 'new label' });
112
+ it('renders with categories', () => {
113
+ const { container } = renderComponent({
114
+ formattedValue: '0-test',
115
+ categories: [{ value: 1, label: 'test', editable: false, interactive: false }],
116
+ });
117
+ const svg = container.querySelector('svg');
118
+ expect(svg).toBeInTheDocument();
119
+ expect(container.querySelector('g')).toBeInTheDocument();
139
120
  });
140
121
  });
122
+
123
+ // Note: splitText and changeCategory are internal implementation details.
124
+ // In RTL philosophy, we test user-visible behavior rather than implementation.
125
+ // These methods would be tested indirectly through their effects on the rendered output.
141
126
  });
@@ -1,9 +1,8 @@
1
- import { shallow } from 'enzyme';
2
1
  import React from 'react';
2
+ import { render } from '@pie-lib/test-utils';
3
3
  import ChartType from '../chart-type';
4
4
 
5
5
  describe('ChartType', () => {
6
- let wrapper;
7
6
  let props;
8
7
  const onChange = jest.fn();
9
8
 
@@ -13,17 +12,12 @@ describe('ChartType', () => {
13
12
  value: 'bar',
14
13
  onChange,
15
14
  };
16
-
17
- wrapper = (newProps) => {
18
- const configureProps = { ...props, newProps };
19
-
20
- return shallow(<ChartType {...configureProps} />);
21
- };
22
15
  });
23
16
 
24
- describe('renders', () => {
25
- it('snapshot', () => {
26
- expect(wrapper()).toMatchSnapshot();
17
+ describe('rendering', () => {
18
+ it('renders chart type selector', () => {
19
+ const { container } = render(<ChartType {...props} />);
20
+ expect(container.firstChild).toBeInTheDocument();
27
21
  });
28
22
  });
29
23
  });