@pie-lib/graphing 2.4.3-next.234 → 2.4.3-next.271

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/axis/axes.js CHANGED
@@ -283,10 +283,10 @@ var RawYAxis = /*#__PURE__*/function (_React$Component2) {
283
283
  tickClassName: classes.tick,
284
284
  tickFormat: customTickFormat,
285
285
  tickLabelProps: function tickLabelProps(value) {
286
- var digits = value.toLocaleString().length || 1;
286
+ var digits = value.toLocaleString().replace(/[.-]/g, '').length || 1;
287
287
  return _objectSpread(_objectSpread({}, tickLabelStyles), {}, {
288
288
  dy: 4,
289
- dx: -4 - digits * 8,
289
+ dx: -10 - digits * 9,
290
290
  'data-pie-readable': false
291
291
  });
292
292
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distanceFromOriginToFirstNegativeX","distanceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY &&\n distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distanceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distanceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n rangePadding={8}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 15}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => (skipValues && skipValues.indexOf(value) >= 0 ? '' : value);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n rangePadding={8}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n const digits = value.toLocaleString().length || 1;\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -4 - digits * 8,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-30}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n const {\n columnTicksValues,\n firstNegativeX,\n distanceFromOriginToFirstNegativeX\n } = this.xValues();\n const { rowTickValues, firstNegativeY, distanceFromOriginToFirstNegativeY } = this.yValues();\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distanceFromOriginToFirstNegativeY={distanceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distanceFromOriginToFirstNegativeX={distanceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
1
+ {"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distanceFromOriginToFirstNegativeX","distanceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","replace","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY &&\n distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distanceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distanceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n rangePadding={8}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 15}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => (skipValues && skipValues.indexOf(value) >= 0 ? '' : value);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n rangePadding={8}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n let digits = value.toLocaleString().replace(/[.-]/g, '').length || 1;\n\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -10 - digits * 9,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-30}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n const {\n columnTicksValues,\n firstNegativeX,\n distanceFromOriginToFirstNegativeX\n } = this.xValues();\n const { rowTickValues, firstNegativeY, distanceFromOriginToFirstNegativeY } = this.yValues();\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distanceFromOriginToFirstNegativeY={distanceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distanceFromOriginToFirstNegativeX={distanceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/container/index.jsx"],"names":["mapStateToProps","s","marks","present","mapDispatchToProps","dispatch","onChangeMarks","m","onUndo","ActionCreators","undo","onRedo","redo","onReset","GraphContainer","GraphWithControls","Root","props","storeState","store","getState","r","subscribe","onStoreChange","rest","correctnessSet","find","correctness","React","Component","PropTypes","func","array"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,CAAC;AAAA,SAAK;AAC5BC,IAAAA,KAAK,EAAED,CAAC,CAACC,KAAF,CAAQC;AADa,GAAL;AAAA,CAAzB;;AAIA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ;AAAA,SAAK;AACtCC,IAAAA,aAAa,EAAE,uBAAAC,CAAC;AAAA,aAAIF,QAAQ,CAAC,0BAAYE,CAAZ,CAAD,CAAZ;AAAA,KADsB;AAEtCC,IAAAA,MAAM,EAAE;AAAA,aAAMH,QAAQ,CAACI,0BAAeC,IAAf,EAAD,CAAd;AAAA,KAF8B;AAGtCC,IAAAA,MAAM,EAAE;AAAA,aAAMN,QAAQ,CAACI,0BAAeG,IAAf,EAAD,CAAd;AAAA,KAH8B;AAItCC,IAAAA,OAAO,EAAE;AAAA,aAAMR,QAAQ,CAAC,0BAAY,EAAZ,CAAD,CAAd;AAAA;AAJ6B,GAAL;AAAA,CAAnC;;AAOO,IAAMS,cAAc,GAAG,yBAC5Bd,eAD4B,EAE5BI,kBAF4B,EAG5BW,6BAH4B,CAAvB;AAKP;AACA;AACA;AACA;;;;IACMC,I;;;;;AAMJ,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,oEASH,YAAM;AACpB,wBAAiC,MAAKA,KAAtC;AAAA,UAAQf,KAAR,eAAQA,KAAR;AAAA,UAAeI,aAAf,eAAeA,aAAf;;AACA,UAAMY,UAAU,GAAG,MAAKC,KAAL,CAAWC,QAAX,EAAnB;;AACA,UAAI,CAAC,yBAAQF,UAAU,CAAChB,KAAX,CAAiBC,OAAzB,EAAkCD,KAAlC,CAAL,EAA+C;AAC7CI,QAAAA,aAAa,CAACY,UAAU,CAAChB,KAAX,CAAiBC,OAAlB,CAAb;AACD;AACF,KAfkB;;AAGjB,QAAMkB,CAAC,GAAG,0BAAV;AACA,UAAKF,KAAL,GAAa,wBAAYE,CAAZ,EAAe;AAAEnB,MAAAA,KAAK,EAAEe,KAAK,CAACf;AAAf,KAAf,CAAb;;AAEA,UAAKiB,KAAL,CAAWG,SAAX,CAAqB,MAAKC,aAA1B;;AANiB;AAOlB;;;;WAUD,kBAAS;AACP;AACA,yBAA0C,KAAKN,KAA/C;AAAA,UAAQX,aAAR,gBAAQA,aAAR;AAAA,UAAuBJ,KAAvB,gBAAuBA,KAAvB;AAAA,UAAiCsB,IAAjC;;AACA,UAAMC,cAAc,GAAGvB,KAAK,IAAIA,KAAK,CAACwB,IAAN,CAAW,UAAAnB,CAAC;AAAA,eAAIA,CAAC,CAACoB,WAAN;AAAA,OAAZ,CAAhC;;AAEA,UAAIF,cAAJ,EAAoB;AAClB,4BAAO,gCAAC,6BAAD,eAAuBD,IAAvB;AAA6B,UAAA,KAAK,EAAEtB,KAApC;AAA2C,UAAA,QAAQ,EAAEuB;AAArD,WAAP;AACD;;AAED,0BACE,gCAAC,oBAAD;AAAU,QAAA,KAAK,EAAE,KAAKN;AAAtB,sBACE,gCAAC,cAAD,EAAoBK,IAApB,CADF,CADF;AAKD;;;;EArCgBI,kBAAMC,S;;gBAAnBb,I,eACe;AACjBV,EAAAA,aAAa,EAAEwB,sBAAUC,IADR;AAEjB7B,EAAAA,KAAK,EAAE4B,sBAAUE;AAFA,C;;eAuCNhB,I","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore } from 'redux';\nimport reducer from './reducer';\nimport { changeMarks } from './actions';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { ActionCreators } from 'redux-undo';\nimport GraphWithControls from '../graph-with-controls';\n\nconst mapStateToProps = s => ({\n marks: s.marks.present\n});\n\nconst mapDispatchToProps = dispatch => ({\n onChangeMarks: m => dispatch(changeMarks(m)),\n onUndo: () => dispatch(ActionCreators.undo()),\n onRedo: () => dispatch(ActionCreators.redo()),\n onReset: () => dispatch(changeMarks([]))\n});\n\nexport const GraphContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(GraphWithControls);\n\n/**\n * The graph component entry point with undo/redo\n * Redux is an implementation detail, hide it in the react component.\n */\nclass Root extends React.Component {\n static propTypes = {\n onChangeMarks: PropTypes.func,\n marks: PropTypes.array\n };\n\n constructor(props) {\n super(props);\n\n const r = reducer();\n this.store = createStore(r, { marks: props.marks });\n\n this.store.subscribe(this.onStoreChange);\n }\n\n onStoreChange = () => {\n const { marks, onChangeMarks } = this.props;\n const storeState = this.store.getState();\n if (!isEqual(storeState.marks.present, marks)) {\n onChangeMarks(storeState.marks.present);\n }\n };\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { onChangeMarks, marks, ...rest } = this.props;\n const correctnessSet = marks && marks.find(m => m.correctness);\n\n if (correctnessSet) {\n return <GraphWithControls {...rest} marks={marks} disabled={correctnessSet} />;\n }\n\n return (\n <Provider store={this.store}>\n <GraphContainer {...rest} />\n </Provider>\n );\n }\n}\n\nexport default Root;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/container/index.jsx"],"names":["mapStateToProps","s","marks","present","mapDispatchToProps","dispatch","onChangeMarks","m","onUndo","ActionCreators","undo","onRedo","redo","onReset","GraphContainer","GraphWithControls","Root","props","storeState","store","getState","r","subscribe","onStoreChange","rest","correctnessSet","find","correctness","React","Component","PropTypes","func","array"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,CAAC;AAAA,SAAK;AAC5BC,IAAAA,KAAK,EAAED,CAAC,CAACC,KAAF,CAAQC;AADa,GAAL;AAAA,CAAzB;;AAIA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ;AAAA,SAAK;AACtCC,IAAAA,aAAa,EAAE,uBAAAC,CAAC;AAAA,aAAIF,QAAQ,CAAC,0BAAYE,CAAZ,CAAD,CAAZ;AAAA,KADsB;AAEtCC,IAAAA,MAAM,EAAE;AAAA,aAAMH,QAAQ,CAACI,0BAAeC,IAAf,EAAD,CAAd;AAAA,KAF8B;AAGtCC,IAAAA,MAAM,EAAE;AAAA,aAAMN,QAAQ,CAACI,0BAAeG,IAAf,EAAD,CAAd;AAAA,KAH8B;AAItCC,IAAAA,OAAO,EAAE;AAAA,aAAMR,QAAQ,CAAC,0BAAY,EAAZ,CAAD,CAAd;AAAA;AAJ6B,GAAL;AAAA,CAAnC;;AAOO,IAAMS,cAAc,GAAG,yBAAQd,eAAR,EAAyBI,kBAAzB,EAA6CW,6BAA7C,CAAvB;AAEP;AACA;AACA;AACA;;;;IACMC,I;;;;;AAMJ,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,oEASH,YAAM;AACpB,wBAAiC,MAAKA,KAAtC;AAAA,UAAQf,KAAR,eAAQA,KAAR;AAAA,UAAeI,aAAf,eAAeA,aAAf;;AACA,UAAMY,UAAU,GAAG,MAAKC,KAAL,CAAWC,QAAX,EAAnB;;AAEA,UAAI,CAAC,yBAAQF,UAAU,CAAChB,KAAX,CAAiBC,OAAzB,EAAkCD,KAAlC,CAAL,EAA+C;AAC7CI,QAAAA,aAAa,CAACY,UAAU,CAAChB,KAAX,CAAiBC,OAAlB,CAAb;AACD;AACF,KAhBkB;;AAGjB,QAAMkB,CAAC,GAAG,0BAAV;AACA,UAAKF,KAAL,GAAa,wBAAYE,CAAZ,EAAe;AAAEnB,MAAAA,KAAK,EAAEe,KAAK,CAACf;AAAf,KAAf,CAAb;;AAEA,UAAKiB,KAAL,CAAWG,SAAX,CAAqB,MAAKC,aAA1B;;AANiB;AAOlB;;;;WAWD,kBAAS;AACP;AACA,yBAA0C,KAAKN,KAA/C;AAAA,UAAQX,aAAR,gBAAQA,aAAR;AAAA,UAAuBJ,KAAvB,gBAAuBA,KAAvB;AAAA,UAAiCsB,IAAjC;;AACA,UAAMC,cAAc,GAAGvB,KAAK,IAAIA,KAAK,CAACwB,IAAN,CAAW,UAAAnB,CAAC;AAAA,eAAIA,CAAC,CAACoB,WAAN;AAAA,OAAZ,CAAhC;;AAEA,UAAIF,cAAJ,EAAoB;AAClB,4BAAO,gCAAC,6BAAD,eAAuBD,IAAvB;AAA6B,UAAA,KAAK,EAAEtB,KAApC;AAA2C,UAAA,QAAQ,EAAEuB;AAArD,WAAP;AACD;;AAED,0BACE,gCAAC,oBAAD;AAAU,QAAA,KAAK,EAAE,KAAKN;AAAtB,sBACE,gCAAC,cAAD,EAAoBK,IAApB,CADF,CADF;AAKD;;;;EAtCgBI,kBAAMC,S;;gBAAnBb,I,eACe;AACjBV,EAAAA,aAAa,EAAEwB,sBAAUC,IADR;AAEjB7B,EAAAA,KAAK,EAAE4B,sBAAUE;AAFA,C;;eAwCNhB,I","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore } from 'redux';\nimport reducer from './reducer';\nimport { changeMarks } from './actions';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { ActionCreators } from 'redux-undo';\nimport GraphWithControls from '../graph-with-controls';\n\nconst mapStateToProps = s => ({\n marks: s.marks.present\n});\n\nconst mapDispatchToProps = dispatch => ({\n onChangeMarks: m => dispatch(changeMarks(m)),\n onUndo: () => dispatch(ActionCreators.undo()),\n onRedo: () => dispatch(ActionCreators.redo()),\n onReset: () => dispatch(changeMarks([]))\n});\n\nexport const GraphContainer = connect(mapStateToProps, mapDispatchToProps)(GraphWithControls);\n\n/**\n * The graph component entry point with undo/redo\n * Redux is an implementation detail, hide it in the react component.\n */\nclass Root extends React.Component {\n static propTypes = {\n onChangeMarks: PropTypes.func,\n marks: PropTypes.array\n };\n\n constructor(props) {\n super(props);\n\n const r = reducer();\n this.store = createStore(r, { marks: props.marks });\n\n this.store.subscribe(this.onStoreChange);\n }\n\n onStoreChange = () => {\n const { marks, onChangeMarks } = this.props;\n const storeState = this.store.getState();\n\n if (!isEqual(storeState.marks.present, marks)) {\n onChangeMarks(storeState.marks.present);\n }\n };\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { onChangeMarks, marks, ...rest } = this.props;\n const correctnessSet = marks && marks.find(m => m.correctness);\n\n if (correctnessSet) {\n return <GraphWithControls {...rest} marks={marks} disabled={correctnessSet} />;\n }\n\n return (\n <Provider store={this.store}>\n <GraphContainer {...rest} />\n </Provider>\n );\n }\n}\n\nexport default Root;\n"],"file":"index.js"}
package/lib/grid.js CHANGED
@@ -15,6 +15,8 @@ var vx = _interopRequireWildcard(require("@vx/grid"));
15
15
 
16
16
  var _plot = require("@pie-lib/plot");
17
17
 
18
+ var _renderUi = require("@pie-lib/render-ui");
19
+
18
20
  var _styles = require("@material-ui/core/styles");
19
21
 
20
22
  var _utils = require("./utils");
@@ -25,6 +27,22 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
27
 
26
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
29
 
30
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
31
+
32
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
+
34
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
35
+
36
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
37
+
38
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
39
+
40
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
41
+
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
+
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
+
28
46
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29
47
 
30
48
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -53,9 +71,59 @@ var Grid = /*#__PURE__*/function (_React$Component) {
53
71
  var _super = _createSuper(Grid);
54
72
 
55
73
  function Grid() {
74
+ var _this;
75
+
56
76
  _classCallCheck(this, Grid);
57
77
 
58
- return _super.apply(this, arguments);
78
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
79
+ args[_key] = arguments[_key];
80
+ }
81
+
82
+ _this = _super.call.apply(_super, [this].concat(args));
83
+
84
+ _defineProperty(_assertThisInitialized(_this), "getAdditionalGridProps", function (rowTickValues, columnTickValues) {
85
+ var _this$props$graphProp = _this.props.graphProps,
86
+ scale = _this$props$graphProp.scale,
87
+ _this$props$graphProp2 = _this$props$graphProp.size,
88
+ width = _this$props$graphProp2.width,
89
+ height = _this$props$graphProp2.height,
90
+ domain = _this$props$graphProp.domain,
91
+ range = _this$props$graphProp.range;
92
+ var rowTickLabelValues = (0, _utils.getTickValues)(_objectSpread(_objectSpread({}, range), {}, {
93
+ step: range.labelStep
94
+ })).filter(function (value) {
95
+ return rowTickValues.includes(value);
96
+ });
97
+ var columnTickLabelValues = (0, _utils.getTickValues)(_objectSpread(_objectSpread({}, domain), {}, {
98
+ step: domain.labelStep
99
+ })).filter(function (value) {
100
+ return columnTickValues.includes(value);
101
+ });
102
+ var minValueLength = rowTickLabelValues.length && Math.min.apply(Math, _toConsumableArray(rowTickLabelValues)).toString().replace(/[.-]/g, '').length || 1;
103
+ var maxValueLength = rowTickLabelValues.length && Math.max.apply(Math, _toConsumableArray(rowTickLabelValues)).toString().replace(/[.-]/g, '').length || 1;
104
+ var rowLabelLength = Math.max(minValueLength, maxValueLength) * 9 + 22;
105
+ var horizontalDistanceToZero = scale.x(0);
106
+ var verticalDistanceToZero = scale.y(0);
107
+ var columnLabelLength = 28;
108
+ var rowStrokeDasharray = "".concat(horizontalDistanceToZero - rowLabelLength, " ").concat(rowLabelLength, " ").concat(width);
109
+ var columnStrokeDasharray = "".concat(verticalDistanceToZero, " ").concat(columnLabelLength, " ").concat(height);
110
+ var displayAdditionalGrid = domain.labelStep > 0 && range.labelStep > 0 && rowTickLabelValues && columnTickLabelValues && rowTickLabelValues.length > 1 && columnTickLabelValues.length > 1 && (rowTickLabelValues.length !== rowTickValues.length || columnTickLabelValues.length !== columnTickValues.length);
111
+ var filteredColumnValues = columnTickLabelValues.filter(function (value) {
112
+ return value >= 0 || horizontalDistanceToZero - scale.x(value) > rowLabelLength;
113
+ });
114
+ var filteredRowValues = rowTickLabelValues.filter(function (value) {
115
+ return value >= 0 || scale.y(value) - verticalDistanceToZero > columnLabelLength;
116
+ });
117
+ return {
118
+ rowTickLabelValues: filteredRowValues,
119
+ columnTickLabelValues: filteredColumnValues,
120
+ rowStrokeDasharray: rowStrokeDasharray,
121
+ columnStrokeDasharray: columnStrokeDasharray,
122
+ displayAdditionalGrid: displayAdditionalGrid
123
+ };
124
+ });
125
+
126
+ return _this;
59
127
  }
60
128
 
61
129
  _createClass(Grid, [{
@@ -68,29 +136,51 @@ var Grid = /*#__PURE__*/function (_React$Component) {
68
136
  }, {
69
137
  key: "render",
70
138
  value: function render() {
71
- var _this = this;
139
+ var _this2 = this;
72
140
 
73
141
  var _this$props = this.props,
74
142
  classes = _this$props.classes,
75
143
  graphProps = _this$props.graphProps;
76
144
  var scale = graphProps.scale,
77
- size = graphProps.size,
145
+ _graphProps$size = graphProps.size,
146
+ height = _graphProps$size.height,
147
+ width = _graphProps$size.width,
78
148
  domain = graphProps.domain,
79
149
  range = graphProps.range;
80
150
  var rowTickValues = (0, _utils.getTickValues)(range);
81
- var columnTicksValues = (0, _utils.getTickValues)(domain);
82
- return /*#__PURE__*/_react["default"].createElement(vx.Grid, {
151
+ var columnTickValues = (0, _utils.getTickValues)(domain);
152
+
153
+ var _this$getAdditionalGr = this.getAdditionalGridProps(rowTickValues, columnTickValues),
154
+ rowTickLabelValues = _this$getAdditionalGr.rowTickLabelValues,
155
+ columnTickLabelValues = _this$getAdditionalGr.columnTickLabelValues,
156
+ rowStrokeDasharray = _this$getAdditionalGr.rowStrokeDasharray,
157
+ columnStrokeDasharray = _this$getAdditionalGr.columnStrokeDasharray,
158
+ displayAdditionalGrid = _this$getAdditionalGr.displayAdditionalGrid;
159
+
160
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(vx.Grid, {
83
161
  innerRef: function innerRef(r) {
84
- return _this.grid = r;
162
+ return _this2.grid = r;
85
163
  },
86
164
  xScale: scale.x,
87
165
  yScale: scale.y,
88
- width: size.width,
89
- height: size.height,
166
+ width: width,
167
+ height: height,
90
168
  className: classes.grid,
91
169
  rowTickValues: rowTickValues,
92
- columnTickValues: columnTicksValues
93
- });
170
+ columnTickValues: columnTickValues
171
+ }), displayAdditionalGrid && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(vx.GridRows, {
172
+ scale: scale.y,
173
+ width: width,
174
+ tickValues: rowTickLabelValues,
175
+ stroke: _renderUi.color.primary(),
176
+ strokeDasharray: rowStrokeDasharray
177
+ }), /*#__PURE__*/_react["default"].createElement(vx.GridColumns, {
178
+ scale: scale.x,
179
+ height: height,
180
+ tickValues: columnTickLabelValues,
181
+ stroke: _renderUi.color.primary(),
182
+ strokeDasharray: columnStrokeDasharray
183
+ })));
94
184
  }
95
185
  }]);
96
186
 
@@ -101,6 +191,7 @@ exports.Grid = Grid;
101
191
 
102
192
  _defineProperty(Grid, "propTypes", {
103
193
  disabled: _propTypes["default"].bool,
194
+ disabledAdditionalGrid: _propTypes["default"].bool,
104
195
  classes: _propTypes["default"].object.isRequired,
105
196
  graphProps: _plot.types.GraphPropsType.isRequired
106
197
  });
package/lib/grid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/grid.jsx"],"names":["Grid","nextProps","graphProps","props","nextGraphProps","utils","isDomainRangeEqual","classes","scale","size","domain","range","rowTickValues","columnTicksValues","r","grid","x","y","width","height","React","Component","disabled","PropTypes","bool","object","isRequired","types","GraphPropsType","stroke"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,I;;;;;;;;;;;;;WAOX,+BAAsBC,SAAtB,EAAiC;AAC/B,UAAQC,UAAR,GAAuB,KAAKC,KAA5B,CAAQD,UAAR;AACA,UAAoBE,cAApB,GAAuCH,SAAvC,CAAQC,UAAR;AACA,aAAO,CAACG,YAAMC,kBAAN,CAAyBJ,UAAzB,EAAqCE,cAArC,CAAR;AACD;;;WAED,kBAAS;AAAA;;AACP,wBAAgC,KAAKD,KAArC;AAAA,UAAQI,OAAR,eAAQA,OAAR;AAAA,UAAiBL,UAAjB,eAAiBA,UAAjB;AACA,UAAQM,KAAR,GAAuCN,UAAvC,CAAQM,KAAR;AAAA,UAAeC,IAAf,GAAuCP,UAAvC,CAAeO,IAAf;AAAA,UAAqBC,MAArB,GAAuCR,UAAvC,CAAqBQ,MAArB;AAAA,UAA6BC,KAA7B,GAAuCT,UAAvC,CAA6BS,KAA7B;AACA,UAAMC,aAAa,GAAG,0BAAcD,KAAd,CAAtB;AACA,UAAME,iBAAiB,GAAG,0BAAcH,MAAd,CAA1B;AAEA,0BACE,gCAAC,EAAD,CAAI,IAAJ;AACE,QAAA,QAAQ,EAAE,kBAAAI,CAAC;AAAA,iBAAK,KAAI,CAACC,IAAL,GAAYD,CAAjB;AAAA,SADb;AAEE,QAAA,MAAM,EAAEN,KAAK,CAACQ,CAFhB;AAGE,QAAA,MAAM,EAAER,KAAK,CAACS,CAHhB;AAIE,QAAA,KAAK,EAAER,IAAI,CAACS,KAJd;AAKE,QAAA,MAAM,EAAET,IAAI,CAACU,MALf;AAME,QAAA,SAAS,EAAEZ,OAAO,CAACQ,IANrB;AAOE,QAAA,aAAa,EAAEH,aAPjB;AAQE,QAAA,gBAAgB,EAAEC;AARpB,QADF;AAYD;;;;EA/BuBO,kBAAMC,S;;;;gBAAnBrB,I,eACQ;AACjBsB,EAAAA,QAAQ,EAAEC,sBAAUC,IADH;AAEjBjB,EAAAA,OAAO,EAAEgB,sBAAUE,MAAV,CAAiBC,UAFT;AAGjBxB,EAAAA,UAAU,EAAEyB,YAAMC,cAAN,CAAqBF;AAHhB,C;;eAiCN,wBAAW;AAAA,SAAO;AAC/BX,IAAAA,IAAI,EAAE;AACJc,MAAAA,MAAM,EAAE,QADJ,CACa;;AADb;AADyB,GAAP;AAAA,CAAX,EAIX7B,IAJW,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as vx from '@vx/grid';\nimport { types, utils } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getTickValues } from './utils';\n\nexport class Grid extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n graphProps: types.GraphPropsType.isRequired\n };\n\n shouldComponentUpdate(nextProps) {\n const { graphProps } = this.props;\n const { graphProps: nextGraphProps } = nextProps;\n return !utils.isDomainRangeEqual(graphProps, nextGraphProps);\n }\n\n render() {\n const { classes, graphProps } = this.props;\n const { scale, size, domain, range } = graphProps;\n const rowTickValues = getTickValues(range);\n const columnTicksValues = getTickValues(domain);\n\n return (\n <vx.Grid\n innerRef={r => (this.grid = r)}\n xScale={scale.x}\n yScale={scale.y}\n width={size.width}\n height={size.height}\n className={classes.grid}\n rowTickValues={rowTickValues}\n columnTickValues={columnTicksValues}\n />\n );\n }\n}\n\nexport default withStyles(() => ({\n grid: {\n stroke: 'purple' // TODO hardcoded color\n }\n}))(Grid);\n"],"file":"grid.js"}
1
+ {"version":3,"sources":["../src/grid.jsx"],"names":["Grid","rowTickValues","columnTickValues","props","graphProps","scale","size","width","height","domain","range","rowTickLabelValues","step","labelStep","filter","value","includes","columnTickLabelValues","minValueLength","length","Math","min","toString","replace","maxValueLength","max","rowLabelLength","horizontalDistanceToZero","x","verticalDistanceToZero","y","columnLabelLength","rowStrokeDasharray","columnStrokeDasharray","displayAdditionalGrid","filteredColumnValues","filteredRowValues","nextProps","nextGraphProps","utils","isDomainRangeEqual","classes","getAdditionalGridProps","r","grid","color","primary","React","Component","disabled","PropTypes","bool","disabledAdditionalGrid","object","isRequired","types","GraphPropsType","stroke"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as vx from '@vx/grid';\nimport { types, utils } from '@pie-lib/plot';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getTickValues } from './utils';\n\nexport class Grid extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n disabledAdditionalGrid: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n graphProps: types.GraphPropsType.isRequired\n };\n\n shouldComponentUpdate(nextProps) {\n const { graphProps } = this.props;\n const { graphProps: nextGraphProps } = nextProps;\n\n return !utils.isDomainRangeEqual(graphProps, nextGraphProps);\n }\n\n getAdditionalGridProps = (rowTickValues, columnTickValues) => {\n const {\n graphProps: {\n scale,\n size: { width, height },\n domain,\n range\n }\n } = this.props;\n const rowTickLabelValues = getTickValues({\n ...range,\n step: range.labelStep\n }).filter(value => rowTickValues.includes(value));\n const columnTickLabelValues = getTickValues({\n ...domain,\n step: domain.labelStep\n }).filter(value => columnTickValues.includes(value));\n\n const minValueLength =\n (rowTickLabelValues.length &&\n Math.min(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n const maxValueLength =\n (rowTickLabelValues.length &&\n Math.max(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n\n const rowLabelLength = Math.max(minValueLength, maxValueLength) * 9 + 22;\n const horizontalDistanceToZero = scale.x(0);\n const verticalDistanceToZero = scale.y(0);\n const columnLabelLength = 28;\n const rowStrokeDasharray = `${horizontalDistanceToZero -\n rowLabelLength} ${rowLabelLength} ${width}`;\n const columnStrokeDasharray = `${verticalDistanceToZero} ${columnLabelLength} ${height}`;\n\n const displayAdditionalGrid =\n domain.labelStep > 0 &&\n range.labelStep > 0 &&\n rowTickLabelValues &&\n columnTickLabelValues &&\n rowTickLabelValues.length > 1 &&\n columnTickLabelValues.length > 1 &&\n (rowTickLabelValues.length !== rowTickValues.length ||\n columnTickLabelValues.length !== columnTickValues.length);\n\n const filteredColumnValues = columnTickLabelValues.filter(\n value => value >= 0 || horizontalDistanceToZero - scale.x(value) > rowLabelLength\n );\n const filteredRowValues = rowTickLabelValues.filter(\n value => value >= 0 || scale.y(value) - verticalDistanceToZero > columnLabelLength\n );\n\n return {\n rowTickLabelValues: filteredRowValues,\n columnTickLabelValues: filteredColumnValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n };\n };\n\n render() {\n const { classes, graphProps } = this.props;\n const {\n scale,\n size: { height, width },\n domain,\n range\n } = graphProps;\n const rowTickValues = getTickValues(range);\n const columnTickValues = getTickValues(domain);\n const {\n rowTickLabelValues,\n columnTickLabelValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n } = this.getAdditionalGridProps(rowTickValues, columnTickValues);\n\n return (\n <>\n <vx.Grid\n innerRef={r => (this.grid = r)}\n xScale={scale.x}\n yScale={scale.y}\n width={width}\n height={height}\n className={classes.grid}\n rowTickValues={rowTickValues}\n columnTickValues={columnTickValues}\n />\n {displayAdditionalGrid && (\n <>\n <vx.GridRows\n scale={scale.y}\n width={width}\n tickValues={rowTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={rowStrokeDasharray}\n />\n <vx.GridColumns\n scale={scale.x}\n height={height}\n tickValues={columnTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={columnStrokeDasharray}\n />\n </>\n )}\n </>\n );\n }\n}\n\nexport default withStyles(() => ({\n grid: {\n stroke: 'purple' // TODO hardcoded color\n }\n}))(Grid);\n"],"file":"grid.js"}
package/lib/undo-redo.js CHANGED
@@ -104,9 +104,9 @@ var styles = function styles(theme) {
104
104
  button: {
105
105
  color: _renderUi.color.text(),
106
106
  backgroundColor: _renderUi.color.background(),
107
+ marginBottom: theme.spacing.unit / 2,
107
108
  '&:not(:last-of-type)': {
108
- marginRight: theme.spacing.unit / 2,
109
- marginBottom: theme.spacing.unit / 2
109
+ marginRight: theme.spacing.unit / 2
110
110
  },
111
111
  '&:hover': {
112
112
  backgroundColor: _renderUi.color.primary()
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/undo-redo.jsx"],"names":["UndoRedo","props","classes","className","onUndo","onRedo","onReset","root","button","React","Component","PropTypes","object","string","func","isRequired","styles","theme","color","text","backgroundColor","background","marginRight","spacing","unit","marginBottom","primary"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,Q;;;;;;;;;;;;;WASX,kBAAS;AACP,wBAAwD,KAAKC,KAA7D;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,MAA5B,eAA4BA,MAA5B;AAAA,UAAoCC,MAApC,eAAoCA,MAApC;AAAA,UAA4CC,OAA5C,eAA4CA,OAA5C;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWH,SAAX;AAAhB,sBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEI,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEJ;AAApD,gBADF,eAIE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEG,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEH;AAApD,gBAJF,eAOE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEE,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEF;AAApD,iBAPF,CADF;AAaD;;;;EAxB2BG,kBAAMC,S;;;;gBAAvBV,Q,eACQ;AACjBE,EAAAA,OAAO,EAAES,sBAAUC,MADF;AAEjBT,EAAAA,SAAS,EAAEQ,sBAAUE,MAFJ;AAGjBT,EAAAA,MAAM,EAAEO,sBAAUG,IAAV,CAAeC,UAHN;AAIjBV,EAAAA,MAAM,EAAEM,sBAAUG,IAAV,CAAeC,UAJN;AAKjBT,EAAAA,OAAO,EAAEK,sBAAUG,IAAV,CAAeC;AALP,C;;gBADRf,Q,kBAQW,E;;AAmBxB,IAAMgB,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBT,IAAAA,MAAM,EAAE;AACNU,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADD;AAENC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN,EAFX;AAGN,8BAAwB;AACtBC,QAAAA,WAAW,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB,CADZ;AAEtBC,QAAAA,YAAY,EAAER,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB;AAFb,OAHlB;AAON,iBAAW;AACTJ,QAAAA,eAAe,EAAEF,gBAAMQ,OAAN;AADR;AAPL;AADe,GAAL;AAAA,CAApB;;eAce,sBAAWV,MAAX,EAAmBhB,QAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\n\nexport class UndoRedo extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n onUndo: PropTypes.func.isRequired,\n onRedo: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired\n };\n static defaultProps = {};\n render() {\n const { classes, className, onUndo, onRedo, onReset } = this.props;\n return (\n <div className={classNames(className)}>\n <Button classes={{ root: classes.button }} onClick={onUndo}>\n Undo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onRedo}>\n Redo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onReset}>\n Reset\n </Button>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n button: {\n color: color.text(),\n backgroundColor: color.background(),\n '&:not(:last-of-type)': {\n marginRight: theme.spacing.unit / 2,\n marginBottom: theme.spacing.unit / 2\n },\n '&:hover': {\n backgroundColor: color.primary()\n }\n }\n});\n\nexport default withStyles(styles)(UndoRedo);\n"],"file":"undo-redo.js"}
1
+ {"version":3,"sources":["../src/undo-redo.jsx"],"names":["UndoRedo","props","classes","className","onUndo","onRedo","onReset","root","button","React","Component","PropTypes","object","string","func","isRequired","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","marginRight","primary"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,Q;;;;;;;;;;;;;WASX,kBAAS;AACP,wBAAwD,KAAKC,KAA7D;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,MAA5B,eAA4BA,MAA5B;AAAA,UAAoCC,MAApC,eAAoCA,MAApC;AAAA,UAA4CC,OAA5C,eAA4CA,OAA5C;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWH,SAAX;AAAhB,sBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEI,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEJ;AAApD,gBADF,eAIE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEG,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEH;AAApD,gBAJF,eAOE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAEE,UAAAA,IAAI,EAAEL,OAAO,CAACM;AAAhB,SAAjB;AAA2C,QAAA,OAAO,EAAEF;AAApD,iBAPF,CADF;AAaD;;;;EAxB2BG,kBAAMC,S;;;;gBAAvBV,Q,eACQ;AACjBE,EAAAA,OAAO,EAAES,sBAAUC,MADF;AAEjBT,EAAAA,SAAS,EAAEQ,sBAAUE,MAFJ;AAGjBT,EAAAA,MAAM,EAAEO,sBAAUG,IAAV,CAAeC,UAHN;AAIjBV,EAAAA,MAAM,EAAEM,sBAAUG,IAAV,CAAeC,UAJN;AAKjBT,EAAAA,OAAO,EAAEK,sBAAUG,IAAV,CAAeC;AALP,C;;gBADRf,Q,kBAQW,E;;AAmBxB,IAAMgB,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBT,IAAAA,MAAM,EAAE;AACNU,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADD;AAENC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN,EAFX;AAGNC,MAAAA,YAAY,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB,CAH7B;AAIN,8BAAwB;AACtBC,QAAAA,WAAW,EAAER,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB;AADZ,OAJlB;AAON,iBAAW;AACTJ,QAAAA,eAAe,EAAEF,gBAAMQ,OAAN;AADR;AAPL;AADe,GAAL;AAAA,CAApB;;eAce,sBAAWV,MAAX,EAAmBhB,QAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\n\nexport class UndoRedo extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n onUndo: PropTypes.func.isRequired,\n onRedo: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired\n };\n static defaultProps = {};\n render() {\n const { classes, className, onUndo, onRedo, onReset } = this.props;\n return (\n <div className={classNames(className)}>\n <Button classes={{ root: classes.button }} onClick={onUndo}>\n Undo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onRedo}>\n Redo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onReset}>\n Reset\n </Button>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n button: {\n color: color.text(),\n backgroundColor: color.background(),\n marginBottom: theme.spacing.unit / 2,\n '&:not(:last-of-type)': {\n marginRight: theme.spacing.unit / 2\n },\n '&:hover': {\n backgroundColor: color.primary()\n }\n }\n});\n\nexport default withStyles(styles)(UndoRedo);\n"],"file":"undo-redo.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.4.3-next.234+3bb6d0e9",
6
+ "version": "2.4.3-next.271+c8d57f18",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -20,7 +20,7 @@
20
20
  "@material-ui/core": "^3.8.3",
21
21
  "@pie-lib/graphing-utils": "^1.1.20",
22
22
  "@pie-lib/plot": "^2.1.9",
23
- "@pie-lib/render-ui": "^4.12.1-next.234+3bb6d0e9",
23
+ "@pie-lib/render-ui": "^4.12.0",
24
24
  "@vx/axis": "^0.0.189",
25
25
  "@vx/clip-path": "^0.0.189",
26
26
  "@vx/event": "^0.0.189",
@@ -43,6 +43,6 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "3bb6d0e9216e3292f4fcd4ff5c557397d62fb82f",
46
+ "gitHead": "c8d57f184903e012d6c222f0eb2e94f0e53894ae",
47
47
  "scripts": {}
48
48
  }
package/src/axis/axes.jsx CHANGED
@@ -196,11 +196,12 @@ export class RawYAxis extends React.Component {
196
196
  tickClassName={classes.tick}
197
197
  tickFormat={customTickFormat}
198
198
  tickLabelProps={value => {
199
- const digits = value.toLocaleString().length || 1;
199
+ let digits = value.toLocaleString().replace(/[.-]/g, '').length || 1;
200
+
200
201
  return {
201
202
  ...tickLabelStyles,
202
203
  dy: 4,
203
- dx: -4 - digits * 8,
204
+ dx: -10 - digits * 9,
204
205
  'data-pie-readable': false
205
206
  };
206
207
  }}
@@ -20,10 +20,7 @@ const mapDispatchToProps = dispatch => ({
20
20
  onReset: () => dispatch(changeMarks([]))
21
21
  });
22
22
 
23
- export const GraphContainer = connect(
24
- mapStateToProps,
25
- mapDispatchToProps
26
- )(GraphWithControls);
23
+ export const GraphContainer = connect(mapStateToProps, mapDispatchToProps)(GraphWithControls);
27
24
 
28
25
  /**
29
26
  * The graph component entry point with undo/redo
@@ -47,6 +44,7 @@ class Root extends React.Component {
47
44
  onStoreChange = () => {
48
45
  const { marks, onChangeMarks } = this.props;
49
46
  const storeState = this.store.getState();
47
+
50
48
  if (!isEqual(storeState.marks.present, marks)) {
51
49
  onChangeMarks(storeState.marks.present);
52
50
  }
package/src/grid.jsx CHANGED
@@ -2,12 +2,14 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import * as vx from '@vx/grid';
4
4
  import { types, utils } from '@pie-lib/plot';
5
+ import { color } from '@pie-lib/render-ui';
5
6
  import { withStyles } from '@material-ui/core/styles';
6
7
  import { getTickValues } from './utils';
7
8
 
8
9
  export class Grid extends React.Component {
9
10
  static propTypes = {
10
11
  disabled: PropTypes.bool,
12
+ disabledAdditionalGrid: PropTypes.bool,
11
13
  classes: PropTypes.object.isRequired,
12
14
  graphProps: types.GraphPropsType.isRequired
13
15
  };
@@ -15,26 +17,124 @@ export class Grid extends React.Component {
15
17
  shouldComponentUpdate(nextProps) {
16
18
  const { graphProps } = this.props;
17
19
  const { graphProps: nextGraphProps } = nextProps;
20
+
18
21
  return !utils.isDomainRangeEqual(graphProps, nextGraphProps);
19
22
  }
20
23
 
24
+ getAdditionalGridProps = (rowTickValues, columnTickValues) => {
25
+ const {
26
+ graphProps: {
27
+ scale,
28
+ size: { width, height },
29
+ domain,
30
+ range
31
+ }
32
+ } = this.props;
33
+ const rowTickLabelValues = getTickValues({
34
+ ...range,
35
+ step: range.labelStep
36
+ }).filter(value => rowTickValues.includes(value));
37
+ const columnTickLabelValues = getTickValues({
38
+ ...domain,
39
+ step: domain.labelStep
40
+ }).filter(value => columnTickValues.includes(value));
41
+
42
+ const minValueLength =
43
+ (rowTickLabelValues.length &&
44
+ Math.min(...rowTickLabelValues)
45
+ .toString()
46
+ .replace(/[.-]/g, '').length) ||
47
+ 1;
48
+ const maxValueLength =
49
+ (rowTickLabelValues.length &&
50
+ Math.max(...rowTickLabelValues)
51
+ .toString()
52
+ .replace(/[.-]/g, '').length) ||
53
+ 1;
54
+
55
+ const rowLabelLength = Math.max(minValueLength, maxValueLength) * 9 + 22;
56
+ const horizontalDistanceToZero = scale.x(0);
57
+ const verticalDistanceToZero = scale.y(0);
58
+ const columnLabelLength = 28;
59
+ const rowStrokeDasharray = `${horizontalDistanceToZero -
60
+ rowLabelLength} ${rowLabelLength} ${width}`;
61
+ const columnStrokeDasharray = `${verticalDistanceToZero} ${columnLabelLength} ${height}`;
62
+
63
+ const displayAdditionalGrid =
64
+ domain.labelStep > 0 &&
65
+ range.labelStep > 0 &&
66
+ rowTickLabelValues &&
67
+ columnTickLabelValues &&
68
+ rowTickLabelValues.length > 1 &&
69
+ columnTickLabelValues.length > 1 &&
70
+ (rowTickLabelValues.length !== rowTickValues.length ||
71
+ columnTickLabelValues.length !== columnTickValues.length);
72
+
73
+ const filteredColumnValues = columnTickLabelValues.filter(
74
+ value => value >= 0 || horizontalDistanceToZero - scale.x(value) > rowLabelLength
75
+ );
76
+ const filteredRowValues = rowTickLabelValues.filter(
77
+ value => value >= 0 || scale.y(value) - verticalDistanceToZero > columnLabelLength
78
+ );
79
+
80
+ return {
81
+ rowTickLabelValues: filteredRowValues,
82
+ columnTickLabelValues: filteredColumnValues,
83
+ rowStrokeDasharray,
84
+ columnStrokeDasharray,
85
+ displayAdditionalGrid
86
+ };
87
+ };
88
+
21
89
  render() {
22
90
  const { classes, graphProps } = this.props;
23
- const { scale, size, domain, range } = graphProps;
91
+ const {
92
+ scale,
93
+ size: { height, width },
94
+ domain,
95
+ range
96
+ } = graphProps;
24
97
  const rowTickValues = getTickValues(range);
25
- const columnTicksValues = getTickValues(domain);
98
+ const columnTickValues = getTickValues(domain);
99
+ const {
100
+ rowTickLabelValues,
101
+ columnTickLabelValues,
102
+ rowStrokeDasharray,
103
+ columnStrokeDasharray,
104
+ displayAdditionalGrid
105
+ } = this.getAdditionalGridProps(rowTickValues, columnTickValues);
26
106
 
27
107
  return (
28
- <vx.Grid
29
- innerRef={r => (this.grid = r)}
30
- xScale={scale.x}
31
- yScale={scale.y}
32
- width={size.width}
33
- height={size.height}
34
- className={classes.grid}
35
- rowTickValues={rowTickValues}
36
- columnTickValues={columnTicksValues}
37
- />
108
+ <>
109
+ <vx.Grid
110
+ innerRef={r => (this.grid = r)}
111
+ xScale={scale.x}
112
+ yScale={scale.y}
113
+ width={width}
114
+ height={height}
115
+ className={classes.grid}
116
+ rowTickValues={rowTickValues}
117
+ columnTickValues={columnTickValues}
118
+ />
119
+ {displayAdditionalGrid && (
120
+ <>
121
+ <vx.GridRows
122
+ scale={scale.y}
123
+ width={width}
124
+ tickValues={rowTickLabelValues}
125
+ stroke={color.primary()}
126
+ strokeDasharray={rowStrokeDasharray}
127
+ />
128
+ <vx.GridColumns
129
+ scale={scale.x}
130
+ height={height}
131
+ tickValues={columnTickLabelValues}
132
+ stroke={color.primary()}
133
+ strokeDasharray={columnStrokeDasharray}
134
+ />
135
+ </>
136
+ )}
137
+ </>
38
138
  );
39
139
  }
40
140
  }
package/src/undo-redo.jsx CHANGED
@@ -36,9 +36,9 @@ const styles = theme => ({
36
36
  button: {
37
37
  color: color.text(),
38
38
  backgroundColor: color.background(),
39
+ marginBottom: theme.spacing.unit / 2,
39
40
  '&:not(:last-of-type)': {
40
- marginRight: theme.spacing.unit / 2,
41
- marginBottom: theme.spacing.unit / 2
41
+ marginRight: theme.spacing.unit / 2
42
42
  },
43
43
  '&:hover': {
44
44
  backgroundColor: color.primary()