@pie-lib/plot 2.1.10-next.266 → 2.2.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.2.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@2.1.10...@pie-lib/plot@2.2.0) (2022-05-10)
7
+
8
+
9
+ ### Features
10
+
11
+ * **graphing, plot:** Added padding between labels and graph without changing the size of graph PD-1604 ([aa93191](https://github.com/pie-framework/pie-lib/commit/aa931910c56efddaf54d4586dc0730a9688e25e3))
12
+
13
+
14
+
15
+
16
+
17
+ ## [2.1.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@2.1.9...@pie-lib/plot@2.1.10) (2022-03-21)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **plot:** Added HTML-encoded characters support PD-1597 ([0ca23fc](https://github.com/pie-framework/pie-lib/commit/0ca23fc3276f73df875c6c9176e64890a2265d47))
23
+
24
+
25
+
26
+
27
+
6
28
  ## [2.1.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@2.1.7...@pie-lib/plot@2.1.9) (2021-06-25)
7
29
 
8
30
  **Note:** Version bump only for package @pie-lib/plot
@@ -29,13 +29,11 @@ var createSnapMinAndMax = function createSnapMinAndMax(_ref) {
29
29
  var create = function create(domain, range, size, getRootNode) {
30
30
  (0, _invariant["default"])(domain.min < domain.max, 'domain: min must be less than max');
31
31
  (0, _invariant["default"])(range.min < range.max, 'range: min must be less than max');
32
- var widthArray = (0, _utils.buildSizeArray)(size.width, domain.padding);
33
- var heightArray = (0, _utils.buildSizeArray)(size.height, range.padding);
34
32
  var domainMinMax = createSnapMinAndMax(domain);
35
33
  var rangeMinMax = createSnapMinAndMax(range);
36
34
  var scale = {
37
- x: (0, _d3Scale.scaleLinear)().domain([domain.min, domain.max]).range(widthArray),
38
- y: (0, _d3Scale.scaleLinear)().domain([range.max, range.min]).range(heightArray)
35
+ x: (0, _d3Scale.scaleLinear)().domain([domain.min, domain.max]).range([0, size.width]),
36
+ y: (0, _d3Scale.scaleLinear)().domain([range.max, range.min]).range([0, size.height])
39
37
  };
40
38
  var snap = {
41
39
  x: _utils.snapTo.bind(null, domainMinMax.min, domainMinMax.max, domainMinMax.step),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph-props.js"],"names":["createSnapMinAndMax","min","max","step","parseInt","create","domain","range","size","getRootNode","widthArray","width","padding","heightArray","height","domainMinMax","rangeMinMax","scale","x","y","snap","snapTo","bind"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,OAAwB;AAAA,MAArBC,GAAqB,QAArBA,GAAqB;AAAA,MAAhBC,GAAgB,QAAhBA,GAAgB;AAAA,MAAXC,IAAW,QAAXA,IAAW;AAClD;AACA;AACA,SAAO;AACLA,IAAAA,IAAI,EAAJA,IADK;AAELF,IAAAA,GAAG,EAAEG,QAAQ,CAACH,GAAG,GAAGE,IAAP,CAAR,GAAuBA,IAFvB;AAGLD,IAAAA,GAAG,EAAEE,QAAQ,CAACF,GAAG,GAAGC,IAAP,CAAR,GAAuBA;AAHvB,GAAP;AAKD,CARD;;AAUO,IAAME,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD,EAASC,KAAT,EAAgBC,IAAhB,EAAsBC,WAAtB,EAAsC;AAC1D,6BAAUH,MAAM,CAACL,GAAP,GAAaK,MAAM,CAACJ,GAA9B,EAAmC,mCAAnC;AACA,6BAAUK,KAAK,CAACN,GAAN,GAAYM,KAAK,CAACL,GAA5B,EAAiC,kCAAjC;AAEA,MAAMQ,UAAU,GAAG,2BAAeF,IAAI,CAACG,KAApB,EAA2BL,MAAM,CAACM,OAAlC,CAAnB;AACA,MAAMC,WAAW,GAAG,2BAAeL,IAAI,CAACM,MAApB,EAA4BP,KAAK,CAACK,OAAlC,CAApB;AAEA,MAAMG,YAAY,GAAGf,mBAAmB,CAACM,MAAD,CAAxC;AACA,MAAMU,WAAW,GAAGhB,mBAAmB,CAACO,KAAD,CAAvC;AAEA,MAAMU,KAAK,GAAG;AACZC,IAAAA,CAAC,EAAE,4BACAZ,MADA,CACO,CAACA,MAAM,CAACL,GAAR,EAAaK,MAAM,CAACJ,GAApB,CADP,EAEAK,KAFA,CAEMG,UAFN,CADS;AAIZS,IAAAA,CAAC,EAAE,4BACAb,MADA,CACO,CAACC,KAAK,CAACL,GAAP,EAAYK,KAAK,CAACN,GAAlB,CADP,EAEAM,KAFA,CAEMM,WAFN;AAJS,GAAd;AASA,MAAMO,IAAI,GAAG;AACXF,IAAAA,CAAC,EAAEG,cAAOC,IAAP,CAAY,IAAZ,EAAkBP,YAAY,CAACd,GAA/B,EAAoCc,YAAY,CAACb,GAAjD,EAAsDa,YAAY,CAACZ,IAAnE,CADQ;AAEXgB,IAAAA,CAAC,EAAEE,cAAOC,IAAP,CAAY,IAAZ,EAAkBN,WAAW,CAACf,GAA9B,EAAmCe,WAAW,CAACd,GAA/C,EAAoDc,WAAW,CAACb,IAAhE;AAFQ,GAAb;AAKA,SAAO;AAAEc,IAAAA,KAAK,EAALA,KAAF;AAASG,IAAAA,IAAI,EAAJA,IAAT;AAAed,IAAAA,MAAM,EAANA,MAAf;AAAuBC,IAAAA,KAAK,EAALA,KAAvB;AAA8BC,IAAAA,IAAI,EAAJA,IAA9B;AAAoCC,IAAAA,WAAW,EAAXA;AAApC,GAAP;AACD,CAzBM","sourcesContent":["import invariant from 'invariant';\nimport { buildSizeArray, snapTo } from './utils';\nimport { scaleLinear } from 'd3-scale';\n\nconst createSnapMinAndMax = ({ min, max, step }) => {\n // for graphing, if step is a value with decimals, we have to calculate the min & max for the grid taking in consideration that 0 has to be exactly in the middle\n // for example, if min: -5 & max: 5 & step: 0.75, in order to keep 0 in the middle we have to set min: -4.5 & max: 4.5\n return {\n step,\n min: parseInt(min / step) * step,\n max: parseInt(max / step) * step\n };\n};\n\nexport const create = (domain, range, size, getRootNode) => {\n invariant(domain.min < domain.max, 'domain: min must be less than max');\n invariant(range.min < range.max, 'range: min must be less than max');\n\n const widthArray = buildSizeArray(size.width, domain.padding);\n const heightArray = buildSizeArray(size.height, range.padding);\n\n const domainMinMax = createSnapMinAndMax(domain);\n const rangeMinMax = createSnapMinAndMax(range);\n\n const scale = {\n x: scaleLinear()\n .domain([domain.min, domain.max])\n .range(widthArray),\n y: scaleLinear()\n .domain([range.max, range.min])\n .range(heightArray)\n };\n\n const snap = {\n x: snapTo.bind(null, domainMinMax.min, domainMinMax.max, domainMinMax.step),\n y: snapTo.bind(null, rangeMinMax.min, rangeMinMax.max, rangeMinMax.step)\n };\n\n return { scale, snap, domain, range, size, getRootNode };\n};\n"],"file":"graph-props.js"}
1
+ {"version":3,"sources":["../src/graph-props.js"],"names":["createSnapMinAndMax","min","max","step","parseInt","create","domain","range","size","getRootNode","domainMinMax","rangeMinMax","scale","x","width","y","height","snap","snapTo","bind"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,OAAwB;AAAA,MAArBC,GAAqB,QAArBA,GAAqB;AAAA,MAAhBC,GAAgB,QAAhBA,GAAgB;AAAA,MAAXC,IAAW,QAAXA,IAAW;AAClD;AACA;AACA,SAAO;AACLA,IAAAA,IAAI,EAAJA,IADK;AAELF,IAAAA,GAAG,EAAEG,QAAQ,CAACH,GAAG,GAAGE,IAAP,CAAR,GAAuBA,IAFvB;AAGLD,IAAAA,GAAG,EAAEE,QAAQ,CAACF,GAAG,GAAGC,IAAP,CAAR,GAAuBA;AAHvB,GAAP;AAKD,CARD;;AAUO,IAAME,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD,EAASC,KAAT,EAAgBC,IAAhB,EAAsBC,WAAtB,EAAsC;AAC1D,6BAAUH,MAAM,CAACL,GAAP,GAAaK,MAAM,CAACJ,GAA9B,EAAmC,mCAAnC;AACA,6BAAUK,KAAK,CAACN,GAAN,GAAYM,KAAK,CAACL,GAA5B,EAAiC,kCAAjC;AAEA,MAAMQ,YAAY,GAAGV,mBAAmB,CAACM,MAAD,CAAxC;AACA,MAAMK,WAAW,GAAGX,mBAAmB,CAACO,KAAD,CAAvC;AAEA,MAAMK,KAAK,GAAG;AACZC,IAAAA,CAAC,EAAE,4BACAP,MADA,CACO,CAACA,MAAM,CAACL,GAAR,EAAaK,MAAM,CAACJ,GAApB,CADP,EAEAK,KAFA,CAEM,CAAC,CAAD,EAAIC,IAAI,CAACM,KAAT,CAFN,CADS;AAIZC,IAAAA,CAAC,EAAE,4BACAT,MADA,CACO,CAACC,KAAK,CAACL,GAAP,EAAYK,KAAK,CAACN,GAAlB,CADP,EAEAM,KAFA,CAEM,CAAC,CAAD,EAAIC,IAAI,CAACQ,MAAT,CAFN;AAJS,GAAd;AASA,MAAMC,IAAI,GAAG;AACXJ,IAAAA,CAAC,EAAEK,cAAOC,IAAP,CAAY,IAAZ,EAAkBT,YAAY,CAACT,GAA/B,EAAoCS,YAAY,CAACR,GAAjD,EAAsDQ,YAAY,CAACP,IAAnE,CADQ;AAEXY,IAAAA,CAAC,EAAEG,cAAOC,IAAP,CAAY,IAAZ,EAAkBR,WAAW,CAACV,GAA9B,EAAmCU,WAAW,CAACT,GAA/C,EAAoDS,WAAW,CAACR,IAAhE;AAFQ,GAAb;AAKA,SAAO;AAAES,IAAAA,KAAK,EAALA,KAAF;AAASK,IAAAA,IAAI,EAAJA,IAAT;AAAeX,IAAAA,MAAM,EAANA,MAAf;AAAuBC,IAAAA,KAAK,EAALA,KAAvB;AAA8BC,IAAAA,IAAI,EAAJA,IAA9B;AAAoCC,IAAAA,WAAW,EAAXA;AAApC,GAAP;AACD,CAtBM","sourcesContent":["import invariant from 'invariant';\nimport { snapTo } from './utils';\nimport { scaleLinear } from 'd3-scale';\n\nconst createSnapMinAndMax = ({ min, max, step }) => {\n // for graphing, if step is a value with decimals, we have to calculate the min & max for the grid taking in consideration that 0 has to be exactly in the middle\n // for example, if min: -5 & max: 5 & step: 0.75, in order to keep 0 in the middle we have to set min: -4.5 & max: 4.5\n return {\n step,\n min: parseInt(min / step) * step,\n max: parseInt(max / step) * step\n };\n};\n\nexport const create = (domain, range, size, getRootNode) => {\n invariant(domain.min < domain.max, 'domain: min must be less than max');\n invariant(range.min < range.max, 'range: min must be less than max');\n\n const domainMinMax = createSnapMinAndMax(domain);\n const rangeMinMax = createSnapMinAndMax(range);\n\n const scale = {\n x: scaleLinear()\n .domain([domain.min, domain.max])\n .range([0, size.width]),\n y: scaleLinear()\n .domain([range.max, range.min])\n .range([0, size.height])\n };\n\n const snap = {\n x: snapTo.bind(null, domainMinMax.min, domainMinMax.max, domainMinMax.step),\n y: snapTo.bind(null, rangeMinMax.min, rangeMinMax.max, rangeMinMax.step)\n };\n\n return { scale, snap, domain, range, size, getRootNode };\n};\n"],"file":"graph-props.js"}
package/lib/root.js CHANGED
@@ -21,8 +21,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
22
  var _renderUi = require("@pie-lib/render-ui");
23
23
 
24
- var _utils = require("./utils");
25
-
26
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
25
 
28
26
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -132,15 +130,19 @@ var Root = /*#__PURE__*/function (_React$Component) {
132
130
  children = _this$props2.children,
133
131
  classes = _this$props2.classes,
134
132
  title = _this$props2.title,
135
- rootRef = _this$props2.rootRef,
136
- paddingLeft = _this$props2.paddingLeft;
137
- var size = graphProps.size,
138
- domain = graphProps.domain;
139
- var padding = 50;
140
- var longestWord = (0, _utils.findLongestWord)(domain.axisLabel);
141
- var increaseWidth = (0, _utils.amountToIncreaseWidth)(longestWord);
142
- var finalWidth = size.width + padding * 2 + increaseWidth;
143
- var finalHeight = size.height + padding * 2;
133
+ rootRef = _this$props2.rootRef;
134
+ var _graphProps$size = graphProps.size,
135
+ _graphProps$size$widt = _graphProps$size.width,
136
+ width = _graphProps$size$widt === void 0 ? 500 : _graphProps$size$widt,
137
+ _graphProps$size$heig = _graphProps$size.height,
138
+ height = _graphProps$size$heig === void 0 ? 500 : _graphProps$size$heig,
139
+ domain = graphProps.domain,
140
+ range = graphProps.range;
141
+ var topPadding = 50;
142
+ var leftPadding = topPadding + 10; // left side requires an extra padding of 10
143
+
144
+ var finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;
145
+ var finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;
144
146
  return /*#__PURE__*/_react["default"].createElement("div", {
145
147
  className: classes.root
146
148
  }, title && /*#__PURE__*/_react["default"].createElement(GraphTitle, {
@@ -158,7 +160,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
158
160
  }
159
161
  },
160
162
  className: classes.graphBox,
161
- transform: "translate(".concat(paddingLeft || padding, ", ").concat(padding, ")")
163
+ transform: "translate(".concat(leftPadding, ", ").concat(topPadding, ")")
162
164
  }, children)));
163
165
  }
164
166
  }]);
@@ -174,8 +176,7 @@ _defineProperty(Root, "propTypes", {
174
176
  graphProps: _types.GraphPropsType.isRequired,
175
177
  onMouseMove: _propTypes["default"].func,
176
178
  classes: _propTypes["default"].object.isRequired,
177
- rootRef: _propTypes["default"].func,
178
- paddingLeft: _propTypes["default"].number
179
+ rootRef: _propTypes["default"].func
179
180
  });
180
181
 
181
182
  var styles = function styles() {
package/lib/root.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["GraphTitle","theme","title","color","text","textAlign","paddingTop","spacing","unit","fontSize","typography","value","classes","__html","Root","g","props","graphProps","onMouseMove","scale","snap","coords","_groups","x","invert","y","snapped","on","mouseMove","bind","children","rootRef","paddingLeft","size","domain","padding","longestWord","axisLabel","increaseWidth","finalWidth","width","finalHeight","height","root","svg","r","graphBox","React","Component","PropTypes","string","ChildrenType","GraphPropsType","isRequired","func","object","number","styles","border","primaryLight","backgroundColor","background","cursor","userSelect"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ChildrenType } from './types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { select, mouse } from 'd3-selection';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { color } from '@pie-lib/render-ui';\nimport { findLongestWord, amountToIncreaseWidth } from './utils';\n\nexport const GraphTitle = withStyles(theme => ({\n title: {\n color: color.text(),\n textAlign: 'center',\n paddingTop: theme.spacing.unit * 2,\n fontSize: theme.typography.fontSize + 6\n }\n}))(({ value, classes }) => (\n <Typography\n className={classes.title}\n color=\"primary\"\n variant=\"h5\"\n dangerouslySetInnerHTML={{ __html: value }}\n />\n));\n\nexport class Root extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n children: ChildrenType,\n graphProps: GraphPropsType.isRequired,\n onMouseMove: PropTypes.func,\n classes: PropTypes.object.isRequired,\n rootRef: PropTypes.func,\n paddingLeft: PropTypes.number\n };\n\n mouseMove = g => {\n const { graphProps, onMouseMove } = this.props;\n\n if (!onMouseMove) {\n return;\n }\n\n const { scale, snap } = graphProps;\n const coords = mouse(g._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n\n const snapped = {\n x: snap.x(x),\n y: snap.y(y)\n };\n\n onMouseMove(snapped);\n };\n\n componentDidMount() {\n const g = select(this.g);\n g.on('mousemove', this.mouseMove.bind(this, g));\n }\n\n componentWillUnmount() {\n const g = select(this.g);\n g.on('mousemove', null);\n }\n\n render() {\n const { graphProps, children, classes, title, rootRef, paddingLeft } = this.props;\n const { size, domain } = graphProps;\n const padding = 50;\n const longestWord = findLongestWord(domain.axisLabel);\n const increaseWidth = amountToIncreaseWidth(longestWord);\n\n const finalWidth = size.width + padding * 2 + increaseWidth;\n const finalHeight = size.height + padding * 2;\n\n return (\n <div className={classes.root}>\n {title && <GraphTitle value={title} />}\n <svg width={finalWidth} height={finalHeight} className={classes.svg}>\n <g\n ref={r => {\n this.g = r;\n if (rootRef) {\n rootRef(r);\n }\n }}\n className={classes.graphBox}\n transform={`translate(${paddingLeft || padding}, ${padding})`}\n >\n {children}\n </g>\n </svg>\n </div>\n );\n }\n}\nconst styles = () => ({\n root: {\n border: `solid 1px ${color.primaryLight()}`,\n color: color.text(),\n backgroundColor: color.background()\n },\n svg: {},\n graphBox: {\n cursor: 'pointer',\n userSelect: 'none'\n }\n});\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
1
+ {"version":3,"sources":["../src/root.jsx"],"names":["GraphTitle","theme","title","color","text","textAlign","paddingTop","spacing","unit","fontSize","typography","value","classes","__html","Root","g","props","graphProps","onMouseMove","scale","snap","coords","_groups","x","invert","y","snapped","on","mouseMove","bind","children","rootRef","size","width","height","domain","range","topPadding","leftPadding","finalWidth","padding","finalHeight","root","svg","r","graphBox","React","Component","PropTypes","string","ChildrenType","GraphPropsType","isRequired","func","object","styles","border","primaryLight","backgroundColor","background","cursor","userSelect"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ChildrenType } from './types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { select, mouse } from 'd3-selection';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { color } from '@pie-lib/render-ui';\n\nexport const GraphTitle = withStyles(theme => ({\n title: {\n color: color.text(),\n textAlign: 'center',\n paddingTop: theme.spacing.unit * 2,\n fontSize: theme.typography.fontSize + 6\n }\n}))(({ value, classes }) => (\n <Typography\n className={classes.title}\n color=\"primary\"\n variant=\"h5\"\n dangerouslySetInnerHTML={{ __html: value }}\n />\n));\n\nexport class Root extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n children: ChildrenType,\n graphProps: GraphPropsType.isRequired,\n onMouseMove: PropTypes.func,\n classes: PropTypes.object.isRequired,\n rootRef: PropTypes.func\n };\n\n mouseMove = g => {\n const { graphProps, onMouseMove } = this.props;\n\n if (!onMouseMove) {\n return;\n }\n\n const { scale, snap } = graphProps;\n const coords = mouse(g._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n\n const snapped = {\n x: snap.x(x),\n y: snap.y(y)\n };\n\n onMouseMove(snapped);\n };\n\n componentDidMount() {\n const g = select(this.g);\n g.on('mousemove', this.mouseMove.bind(this, g));\n }\n\n componentWillUnmount() {\n const g = select(this.g);\n g.on('mousemove', null);\n }\n\n render() {\n const { graphProps, children, classes, title, rootRef } = this.props;\n const {\n size: { width = 500, height = 500 },\n domain,\n range\n } = graphProps;\n const topPadding = 50;\n const leftPadding = topPadding + 10; // left side requires an extra padding of 10\n const finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;\n const finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;\n\n return (\n <div className={classes.root}>\n {title && <GraphTitle value={title} />}\n <svg width={finalWidth} height={finalHeight} className={classes.svg}>\n <g\n ref={r => {\n this.g = r;\n if (rootRef) {\n rootRef(r);\n }\n }}\n className={classes.graphBox}\n transform={`translate(${leftPadding}, ${topPadding})`}\n >\n {children}\n </g>\n </svg>\n </div>\n );\n }\n}\nconst styles = () => ({\n root: {\n border: `solid 1px ${color.primaryLight()}`,\n color: color.text(),\n backgroundColor: color.background()\n },\n svg: {},\n graphBox: {\n cursor: 'pointer',\n userSelect: 'none'\n }\n});\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
package/lib/utils.js CHANGED
@@ -183,7 +183,7 @@ exports.bandKey = bandKey;
183
183
 
184
184
  var isDomainRangeEqual = function isDomainRangeEqual(graphProps, nextGraphProps) {
185
185
  return (0, _isEqual["default"])(graphProps.domain, nextGraphProps.domain) && (0, _isEqual["default"])(graphProps.range, nextGraphProps.range);
186
- }; // findLongestWord is also used in grapghing
186
+ }; // findLongestWord is also used in graphing
187
187
 
188
188
 
189
189
  exports.isDomainRangeEqual = isDomainRangeEqual;
@@ -193,7 +193,7 @@ var findLongestWord = function findLongestWord(label) {
193
193
  return b.length - a.length;
194
194
  });
195
195
  return longestWord[0].length;
196
- }; // amountToIncreaseWidth is also used in grapghing
196
+ }; // amountToIncreaseWidth is also used in graphing
197
197
 
198
198
 
199
199
  exports.findLongestWord = findLongestWord;
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["xy","x","y","buildSizeArray","size","padding","Number","isFinite","Math","max","half","round","tickCount","min","step","abs","getInterval","domain","ticks","major","minor","Error","distance","minorTicks","normalizedMajor","isNaN","divider","raw","parseFloat","toFixed","mkRange","interval","splice","length","snapTo","value","rng","filter","v","reduce","prev","curr","currentDistance","previousDistance","buildTickModel","scaleFn","map","r","index","isMajor","polygonToArea","points","h","area","left","top","bottom","right","a","p","lineToArea","from","to","bounds","range","point","o","Point","getDelta","sub","bandKey","d","label","isDomainRangeEqual","graphProps","nextGraphProps","findLongestWord","longestWord","replace","split","sort","b","amountToIncreaseWidth"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport range from 'lodash/range';\nimport Point from '@mapbox/point-geometry';\nimport head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport isEqual from 'lodash/isEqual';\n\nexport const xy = (x, y) => ({ x, y });\n\nexport const buildSizeArray = (size, padding) => {\n padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;\n invariant(padding < size, 'padding must be less than size');\n const half = Math.round(padding * 0.5);\n return [half, size - half];\n};\n\nexport const tickCount = (min, max, step) => {\n invariant(min < max, 'min must be less than max');\n const size = Math.abs(min - max);\n return Math.round(size / step);\n};\n\nexport function getInterval(domain, ticks) {\n const { min, max } = domain;\n const { major, minor } = ticks;\n\n if (min >= max) {\n throw new Error(`min is > max: ${min} > ${max}`);\n }\n\n const distance = max - min;\n const minorTicks = minor > 0 ? minor + 1 : 1;\n const normalizedMajor = major - 1;\n\n if (isNaN(normalizedMajor)) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n if (normalizedMajor <= 0) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n const divider = normalizedMajor * minorTicks;\n const raw = distance / divider;\n return parseFloat(Number(raw).toFixed(4));\n}\n\nconst mkRange = (min, max, interval) => {\n const raw = range(min, max, interval);\n /* Fix the last step due to rounding errors */\n raw.splice(raw.length, 1, max);\n return raw;\n};\n\nexport function snapTo(min, max, interval, value) {\n if (value >= max) {\n return max;\n }\n\n if (value <= min) {\n return min;\n }\n\n let rng = mkRange(min, max, interval);\n\n rng = rng.filter(v => {\n return Math.abs(value - v) <= interval;\n });\n\n return (\n rng.length &&\n rng.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n}\n\nexport function buildTickModel(domain, ticks, interval, scaleFn) {\n const rng = mkRange(domain.min, domain.max, interval);\n\n return rng.map((r, index) => {\n const isMajor = index % (ticks.minor + 1) === 0;\n\n return {\n value: r,\n major: isMajor,\n x: scaleFn(r)\n };\n });\n}\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => {\n const left = Math.min(from.x, to.x);\n const top = Math.max(from.y, to.y);\n const bottom = Math.min(from.y, to.y);\n const right = Math.max(from.x, to.x);\n return { left, top, bottom, right };\n};\n\nexport const bounds = (area, domain, range) => {\n return {\n left: domain.min - area.left,\n right: Math.abs(area.right - domain.max),\n top: Math.abs(area.top - range.max),\n bottom: range.min - area.bottom\n };\n};\n\nexport const point = o => new Point(o.x, o.y);\nexport const getDelta = (from, to) => {\n return point(to).sub(point(from));\n};\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\n// findLongestWord is also used in grapghing\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in grapghing\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 20;\n};\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../src/utils.js"],"names":["xy","x","y","buildSizeArray","size","padding","Number","isFinite","Math","max","half","round","tickCount","min","step","abs","getInterval","domain","ticks","major","minor","Error","distance","minorTicks","normalizedMajor","isNaN","divider","raw","parseFloat","toFixed","mkRange","interval","splice","length","snapTo","value","rng","filter","v","reduce","prev","curr","currentDistance","previousDistance","buildTickModel","scaleFn","map","r","index","isMajor","polygonToArea","points","h","area","left","top","bottom","right","a","p","lineToArea","from","to","bounds","range","point","o","Point","getDelta","sub","bandKey","d","label","isDomainRangeEqual","graphProps","nextGraphProps","findLongestWord","longestWord","replace","split","sort","b","amountToIncreaseWidth"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport range from 'lodash/range';\nimport Point from '@mapbox/point-geometry';\nimport head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport isEqual from 'lodash/isEqual';\n\nexport const xy = (x, y) => ({ x, y });\n\nexport const buildSizeArray = (size, padding) => {\n padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;\n invariant(padding < size, 'padding must be less than size');\n const half = Math.round(padding * 0.5);\n return [half, size - half];\n};\n\nexport const tickCount = (min, max, step) => {\n invariant(min < max, 'min must be less than max');\n const size = Math.abs(min - max);\n return Math.round(size / step);\n};\n\nexport function getInterval(domain, ticks) {\n const { min, max } = domain;\n const { major, minor } = ticks;\n\n if (min >= max) {\n throw new Error(`min is > max: ${min} > ${max}`);\n }\n\n const distance = max - min;\n const minorTicks = minor > 0 ? minor + 1 : 1;\n const normalizedMajor = major - 1;\n\n if (isNaN(normalizedMajor)) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n if (normalizedMajor <= 0) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n const divider = normalizedMajor * minorTicks;\n const raw = distance / divider;\n return parseFloat(Number(raw).toFixed(4));\n}\n\nconst mkRange = (min, max, interval) => {\n const raw = range(min, max, interval);\n /* Fix the last step due to rounding errors */\n raw.splice(raw.length, 1, max);\n return raw;\n};\n\nexport function snapTo(min, max, interval, value) {\n if (value >= max) {\n return max;\n }\n\n if (value <= min) {\n return min;\n }\n\n let rng = mkRange(min, max, interval);\n\n rng = rng.filter(v => {\n return Math.abs(value - v) <= interval;\n });\n\n return (\n rng.length &&\n rng.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n}\n\nexport function buildTickModel(domain, ticks, interval, scaleFn) {\n const rng = mkRange(domain.min, domain.max, interval);\n\n return rng.map((r, index) => {\n const isMajor = index % (ticks.minor + 1) === 0;\n\n return {\n value: r,\n major: isMajor,\n x: scaleFn(r)\n };\n });\n}\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => {\n const left = Math.min(from.x, to.x);\n const top = Math.max(from.y, to.y);\n const bottom = Math.min(from.y, to.y);\n const right = Math.max(from.x, to.x);\n return { left, top, bottom, right };\n};\n\nexport const bounds = (area, domain, range) => {\n return {\n left: domain.min - area.left,\n right: Math.abs(area.right - domain.max),\n top: Math.abs(area.top - range.max),\n bottom: range.min - area.bottom\n };\n};\n\nexport const point = o => new Point(o.x, o.y);\nexport const getDelta = (from, to) => {\n return point(to).sub(point(from));\n};\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\n// findLongestWord is also used in graphing\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in graphing\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 20;\n};\n"],"file":"utils.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.1.10-next.266+bad89eaa",
6
+ "version": "2.2.0",
7
7
  "description": "Some underlying components for building charts/graphs",
8
8
  "keywords": [
9
9
  "react",
@@ -38,6 +38,6 @@
38
38
  "peerDependencies": {
39
39
  "react": "^16.8.1"
40
40
  },
41
- "gitHead": "bad89eaa7e505b7dc93e05982793679b10a5c906",
41
+ "gitHead": "84fbd889875b1e3a0539451a940fb772fc46162a",
42
42
  "scripts": {}
43
43
  }
@@ -1,5 +1,5 @@
1
1
  import invariant from 'invariant';
2
- import { buildSizeArray, snapTo } from './utils';
2
+ import { snapTo } from './utils';
3
3
  import { scaleLinear } from 'd3-scale';
4
4
 
5
5
  const createSnapMinAndMax = ({ min, max, step }) => {
@@ -16,19 +16,16 @@ export const create = (domain, range, size, getRootNode) => {
16
16
  invariant(domain.min < domain.max, 'domain: min must be less than max');
17
17
  invariant(range.min < range.max, 'range: min must be less than max');
18
18
 
19
- const widthArray = buildSizeArray(size.width, domain.padding);
20
- const heightArray = buildSizeArray(size.height, range.padding);
21
-
22
19
  const domainMinMax = createSnapMinAndMax(domain);
23
20
  const rangeMinMax = createSnapMinAndMax(range);
24
21
 
25
22
  const scale = {
26
23
  x: scaleLinear()
27
24
  .domain([domain.min, domain.max])
28
- .range(widthArray),
25
+ .range([0, size.width]),
29
26
  y: scaleLinear()
30
27
  .domain([range.max, range.min])
31
- .range(heightArray)
28
+ .range([0, size.height])
32
29
  };
33
30
 
34
31
  const snap = {
package/src/root.jsx CHANGED
@@ -6,7 +6,6 @@ import { select, mouse } from 'd3-selection';
6
6
  import PropTypes from 'prop-types';
7
7
  import { GraphPropsType } from './types';
8
8
  import { color } from '@pie-lib/render-ui';
9
- import { findLongestWord, amountToIncreaseWidth } from './utils';
10
9
 
11
10
  export const GraphTitle = withStyles(theme => ({
12
11
  title: {
@@ -31,8 +30,7 @@ export class Root extends React.Component {
31
30
  graphProps: GraphPropsType.isRequired,
32
31
  onMouseMove: PropTypes.func,
33
32
  classes: PropTypes.object.isRequired,
34
- rootRef: PropTypes.func,
35
- paddingLeft: PropTypes.number
33
+ rootRef: PropTypes.func
36
34
  };
37
35
 
38
36
  mouseMove = g => {
@@ -66,14 +64,16 @@ export class Root extends React.Component {
66
64
  }
67
65
 
68
66
  render() {
69
- const { graphProps, children, classes, title, rootRef, paddingLeft } = this.props;
70
- const { size, domain } = graphProps;
71
- const padding = 50;
72
- const longestWord = findLongestWord(domain.axisLabel);
73
- const increaseWidth = amountToIncreaseWidth(longestWord);
74
-
75
- const finalWidth = size.width + padding * 2 + increaseWidth;
76
- const finalHeight = size.height + padding * 2;
67
+ const { graphProps, children, classes, title, rootRef } = this.props;
68
+ const {
69
+ size: { width = 500, height = 500 },
70
+ domain,
71
+ range
72
+ } = graphProps;
73
+ const topPadding = 50;
74
+ const leftPadding = topPadding + 10; // left side requires an extra padding of 10
75
+ const finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;
76
+ const finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;
77
77
 
78
78
  return (
79
79
  <div className={classes.root}>
@@ -87,7 +87,7 @@ export class Root extends React.Component {
87
87
  }
88
88
  }}
89
89
  className={classes.graphBox}
90
- transform={`translate(${paddingLeft || padding}, ${padding})`}
90
+ transform={`translate(${leftPadding}, ${topPadding})`}
91
91
  >
92
92
  {children}
93
93
  </g>
package/src/utils.js CHANGED
@@ -139,7 +139,7 @@ export const isDomainRangeEqual = (graphProps, nextGraphProps) => {
139
139
  );
140
140
  };
141
141
 
142
- // findLongestWord is also used in grapghing
142
+ // findLongestWord is also used in graphing
143
143
  export const findLongestWord = label => {
144
144
  let longestWord = (label || '')
145
145
  .replace(/<[^>]+>/g, '')
@@ -149,7 +149,7 @@ export const findLongestWord = label => {
149
149
  return longestWord[0].length;
150
150
  };
151
151
 
152
- // amountToIncreaseWidth is also used in grapghing
152
+ // amountToIncreaseWidth is also used in graphing
153
153
  export const amountToIncreaseWidth = longestWord => {
154
154
  if (!longestWord) {
155
155
  return 0;