@pie-element/number-line 7.0.2-next.3 → 7.1.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,29 @@
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
+ # [7.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@7.0.1...@pie-element/number-line@7.1.0) (2023-11-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-3271, PD-3261 ([7a795bf](https://github.com/pie-framework/pie-elements/commit/7a795bfd7e2fd865774828ad23b0a8cbbac98356))
12
+ * update pie-lib/pie-toolbox PD-597 ([1ec84aa](https://github.com/pie-framework/pie-elements/commit/1ec84aadae515088ef65b99f780a5e5dca516f99))
13
+ * update pie-lib/pie-toolbox to test build ([9750cdd](https://github.com/pie-framework/pie-elements/commit/9750cdd3ce3018ef8bb63bc2c6db6abba3dad0c4))
14
+ * update pie-lib/pie-toolbox to test build ([4e04cef](https://github.com/pie-framework/pie-elements/commit/4e04cefc163d504d136c9e3b17dbb32d1e22326b))
15
+ * update pie-libs PD-2996 ([cd092c6](https://github.com/pie-framework/pie-elements/commit/cd092c6b5c4db91645394cd23febc1f9a07f46f9))
16
+ * update pie-libs PD-3011, PD-3130, PD-3271 ([7a36106](https://github.com/pie-framework/pie-elements/commit/7a36106efeac0448b7b825989c1eb0b29b6688d4))
17
+ * update pie-toolbox version PD-3298 ([0c282d5](https://github.com/pie-framework/pie-elements/commit/0c282d540aba5b2bb7a8b515bcaa2dba8302d49a))
18
+ * **number-line:** adjust labels value to be a frequency multiplier PD-1769 ([bb9aa0e](https://github.com/pie-framework/pie-elements/commit/bb9aa0e80f3606fcfc4133b6a76cbc0b2e4c34d0))
19
+
20
+
21
+ ### Features
22
+
23
+ * update pie-lib/pie-toolbox PD-1886 ([4a978d0](https://github.com/pie-framework/pie-elements/commit/4a978d058b865cc21c1fc84d7d39224e0d7cc88d))
24
+
25
+
26
+
27
+
28
+
6
29
  ## [7.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@7.0.0...@pie-element/number-line@7.0.1) (2023-11-09)
7
30
 
8
31
 
@@ -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
+ # [6.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@6.0.1...@pie-element/number-line-configure@6.1.0) (2023-11-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-3271, PD-3261 ([7a795bf](https://github.com/pie-framework/pie-elements/commit/7a795bfd7e2fd865774828ad23b0a8cbbac98356))
12
+ * update pie-lib/pie-toolbox PD-597 ([1ec84aa](https://github.com/pie-framework/pie-elements/commit/1ec84aadae515088ef65b99f780a5e5dca516f99))
13
+ * update pie-lib/pie-toolbox to test build ([9750cdd](https://github.com/pie-framework/pie-elements/commit/9750cdd3ce3018ef8bb63bc2c6db6abba3dad0c4))
14
+ * update pie-lib/pie-toolbox to test build ([4e04cef](https://github.com/pie-framework/pie-elements/commit/4e04cefc163d504d136c9e3b17dbb32d1e22326b))
15
+ * update pie-libs PD-2996 ([cd092c6](https://github.com/pie-framework/pie-elements/commit/cd092c6b5c4db91645394cd23febc1f9a07f46f9))
16
+ * update pie-libs PD-3011, PD-3130, PD-3271 ([7a36106](https://github.com/pie-framework/pie-elements/commit/7a36106efeac0448b7b825989c1eb0b29b6688d4))
17
+ * update pie-toolbox version PD-3298 ([0c282d5](https://github.com/pie-framework/pie-elements/commit/0c282d540aba5b2bb7a8b515bcaa2dba8302d49a))
18
+
19
+
20
+ ### Features
21
+
22
+ * update pie-lib/pie-toolbox PD-1886 ([4a978d0](https://github.com/pie-framework/pie-elements/commit/4a978d058b865cc21c1fc84d7d39224e0d7cc88d))
23
+
24
+
25
+
26
+
27
+
6
28
  ## [6.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@6.0.0...@pie-element/number-line-configure@6.0.1) (2023-11-09)
7
29
 
8
30
 
@@ -49,20 +49,20 @@ var Ticks = function Ticks(props) {
49
49
  }));
50
50
  };
51
51
 
52
- var t = _numberLine.tickUtils.normalizeTicks(domain, ticks);
52
+ var normalizedTicks = _numberLine.tickUtils.normalizeTicks(domain, ticks);
53
53
 
54
- var minorLimits = _numberLine.tickUtils.minorLimits(domain);
54
+ var minorLimits = _numberLine.tickUtils.getMinorLimits(domain);
55
55
 
56
56
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_numberTextField.MiniField, {
57
57
  label: "Frequency",
58
- value: math.number(t.minor),
58
+ value: math.number(normalizedTicks.minor),
59
59
  min: math.number(minorLimits.min),
60
60
  max: math.number(minorLimits.max),
61
61
  className: classes.nl,
62
62
  onChange: changeMinor
63
63
  }), /*#__PURE__*/_react["default"].createElement(_numberTextField.MiniField, {
64
64
  label: "Labels",
65
- value: math.number(t.major),
65
+ value: math.number(normalizedTicks.major),
66
66
  className: classes.nl,
67
67
  onChange: changeMajor
68
68
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ticks.jsx"],"names":["Ticks","props","classes","ticks","onChange","domain","changeMinor","e","minor","changeMajor","major","t","tickUtils","normalizeTicks","minorLimits","math","number","min","max","nl","propTypes","PropTypes","object","isRequired","func","shape","styles"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AACO,IAAMA,KAAK,GAAG,SAARA,KAAQ,CAACC,KAAD,EAAW;AAC9B,MAAQC,OAAR,GAA6CD,KAA7C,CAAQC,OAAR;AAAA,MAAiBC,KAAjB,GAA6CF,KAA7C,CAAiBE,KAAjB;AAAA,MAAwBC,QAAxB,GAA6CH,KAA7C,CAAwBG,QAAxB;AAAA,MAAkCC,MAAlC,GAA6CJ,KAA7C,CAAkCI,MAAlC;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAIC,KAAJ;AAAA,WAAcJ,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBK,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AACA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACF,CAAD,EAAIG,KAAJ;AAAA,WAAcN,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBO,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AAEA,MAAMC,CAAC,GAAGC,sBAAUC,cAAV,CAAyBR,MAAzB,EAAiCF,KAAjC,CAAV;;AAEA,MAAMW,WAAW,GAAGF,sBAAUE,WAAV,CAAsBT,MAAtB,CAApB;;AACA,sBACE,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,0BAAD;AACE,IAAA,KAAK,EAAC,WADR;AAEE,IAAA,KAAK,EAAEU,IAAI,CAACC,MAAL,CAAYL,CAAC,CAACH,KAAd,CAFT;AAGE,IAAA,GAAG,EAAEO,IAAI,CAACC,MAAL,CAAYF,WAAW,CAACG,GAAxB,CAHP;AAIE,IAAA,GAAG,EAAEF,IAAI,CAACC,MAAL,CAAYF,WAAW,CAACI,GAAxB,CAJP;AAKE,IAAA,SAAS,EAAEhB,OAAO,CAACiB,EALrB;AAME,IAAA,QAAQ,EAAEb;AANZ,IADF,eASE,gCAAC,0BAAD;AAAW,IAAA,KAAK,EAAC,QAAjB;AAA0B,IAAA,KAAK,EAAES,IAAI,CAACC,MAAL,CAAYL,CAAC,CAACD,KAAd,CAAjC;AAAuD,IAAA,SAAS,EAAER,OAAO,CAACiB,EAA1E;AAA8E,IAAA,QAAQ,EAAEV;AAAxF,IATF,CADF;AAaD,CAtBM;;;AAuBPT,KAAK,CAACoB,SAAN,GAAkB;AAChBlB,EAAAA,OAAO,EAAEmB,sBAAUC,MAAV,CAAiBC,UADV;AAEhBnB,EAAAA,QAAQ,EAAEiB,sBAAUG,IAFJ;AAGhBrB,EAAAA,KAAK,EAAEkB,sBAAUI,KAAV,CAAgB;AACrBf,IAAAA,KAAK,EAAEW,sBAAUL,MADI;AAErBR,IAAAA,KAAK,EAAEa,sBAAUL;AAFI,GAAhB,CAHS;AAOhBX,EAAAA,MAAM,EAAEgB,sBAAUI,KAAV,CAAgB;AAAER,IAAAA,GAAG,EAAEI,sBAAUL,MAAjB;AAAyBE,IAAAA,GAAG,EAAEG,sBAAUL;AAAxC,GAAhB;AAPQ,CAAlB;;AAUA,IAAMU,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;eACe,wBAAWA,MAAX,EAAmB1B,KAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MiniField } from './number-text-field';\nimport { tickUtils } from '@pie-element/number-line';\nimport * as math from 'mathjs';\nexport const Ticks = (props) => {\n const { classes, ticks, onChange, domain } = props;\n\n const changeMinor = (e, minor) => onChange({ ...props.ticks, minor });\n const changeMajor = (e, major) => onChange({ ...props.ticks, major });\n\n const t = tickUtils.normalizeTicks(domain, ticks);\n\n const minorLimits = tickUtils.minorLimits(domain);\n return (\n <React.Fragment>\n <MiniField\n label=\"Frequency\"\n value={math.number(t.minor)}\n min={math.number(minorLimits.min)}\n max={math.number(minorLimits.max)}\n className={classes.nl}\n onChange={changeMinor}\n />\n <MiniField label=\"Labels\" value={math.number(t.major)} className={classes.nl} onChange={changeMajor} />\n </React.Fragment>\n );\n};\nTicks.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n ticks: PropTypes.shape({\n major: PropTypes.number,\n minor: PropTypes.number,\n }),\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n};\n\nconst styles = () => ({});\nexport default withStyles(styles)(Ticks);\n"],"file":"ticks.js"}
1
+ {"version":3,"sources":["../src/ticks.jsx"],"names":["Ticks","props","classes","ticks","onChange","domain","changeMinor","e","minor","changeMajor","major","normalizedTicks","tickUtils","normalizeTicks","minorLimits","getMinorLimits","math","number","min","max","nl","propTypes","PropTypes","object","isRequired","func","shape","styles"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEO,IAAMA,KAAK,GAAG,SAARA,KAAQ,CAACC,KAAD,EAAW;AAC9B,MAAQC,OAAR,GAA6CD,KAA7C,CAAQC,OAAR;AAAA,MAAiBC,KAAjB,GAA6CF,KAA7C,CAAiBE,KAAjB;AAAA,MAAwBC,QAAxB,GAA6CH,KAA7C,CAAwBG,QAAxB;AAAA,MAAkCC,MAAlC,GAA6CJ,KAA7C,CAAkCI,MAAlC;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAIC,KAAJ;AAAA,WAAcJ,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBK,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AACA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACF,CAAD,EAAIG,KAAJ;AAAA,WAAcN,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBO,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AAEA,MAAMC,eAAe,GAAGC,sBAAUC,cAAV,CAAyBR,MAAzB,EAAiCF,KAAjC,CAAxB;;AACA,MAAMW,WAAW,GAAGF,sBAAUG,cAAV,CAAyBV,MAAzB,CAApB;;AAEA,sBACE,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,0BAAD;AACE,IAAA,KAAK,EAAC,WADR;AAEE,IAAA,KAAK,EAAEW,IAAI,CAACC,MAAL,CAAYN,eAAe,CAACH,KAA5B,CAFT;AAGE,IAAA,GAAG,EAAEQ,IAAI,CAACC,MAAL,CAAYH,WAAW,CAACI,GAAxB,CAHP;AAIE,IAAA,GAAG,EAAEF,IAAI,CAACC,MAAL,CAAYH,WAAW,CAACK,GAAxB,CAJP;AAKE,IAAA,SAAS,EAAEjB,OAAO,CAACkB,EALrB;AAME,IAAA,QAAQ,EAAEd;AANZ,IADF,eASE,gCAAC,0BAAD;AACE,IAAA,KAAK,EAAC,QADR;AAEE,IAAA,KAAK,EAAEU,IAAI,CAACC,MAAL,CAAYN,eAAe,CAACD,KAA5B,CAFT;AAGE,IAAA,SAAS,EAAER,OAAO,CAACkB,EAHrB;AAIE,IAAA,QAAQ,EAAEX;AAJZ,IATF,CADF;AAkBD,CA3BM;;;AA6BPT,KAAK,CAACqB,SAAN,GAAkB;AAChBnB,EAAAA,OAAO,EAAEoB,sBAAUC,MAAV,CAAiBC,UADV;AAEhBpB,EAAAA,QAAQ,EAAEkB,sBAAUG,IAFJ;AAGhBtB,EAAAA,KAAK,EAAEmB,sBAAUI,KAAV,CAAgB;AACrBhB,IAAAA,KAAK,EAAEY,sBAAUL,MADI;AAErBT,IAAAA,KAAK,EAAEc,sBAAUL;AAFI,GAAhB,CAHS;AAOhBZ,EAAAA,MAAM,EAAEiB,sBAAUI,KAAV,CAAgB;AAAER,IAAAA,GAAG,EAAEI,sBAAUL,MAAjB;AAAyBE,IAAAA,GAAG,EAAEG,sBAAUL;AAAxC,GAAhB;AAPQ,CAAlB;;AAUA,IAAMU,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;eAEe,wBAAWA,MAAX,EAAmB3B,KAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MiniField } from './number-text-field';\nimport { tickUtils } from '@pie-element/number-line';\nimport * as math from 'mathjs';\n\nexport const Ticks = (props) => {\n const { classes, ticks, onChange, domain } = props;\n\n const changeMinor = (e, minor) => onChange({ ...props.ticks, minor });\n const changeMajor = (e, major) => onChange({ ...props.ticks, major });\n\n const normalizedTicks = tickUtils.normalizeTicks(domain, ticks);\n const minorLimits = tickUtils.getMinorLimits(domain);\n\n return (\n <React.Fragment>\n <MiniField\n label=\"Frequency\"\n value={math.number(normalizedTicks.minor)}\n min={math.number(minorLimits.min)}\n max={math.number(minorLimits.max)}\n className={classes.nl}\n onChange={changeMinor}\n />\n <MiniField\n label=\"Labels\"\n value={math.number(normalizedTicks.major)}\n className={classes.nl}\n onChange={changeMajor}\n />\n </React.Fragment>\n );\n};\n\nTicks.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n ticks: PropTypes.shape({\n major: PropTypes.number,\n minor: PropTypes.number,\n }),\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n};\n\nconst styles = () => ({});\n\nexport default withStyles(styles)(Ticks);\n"],"file":"ticks.js"}
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@pie-element/number-line-configure",
3
3
  "private": true,
4
- "version": "6.0.1",
4
+ "version": "6.1.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
7
7
  "dependencies": {
8
8
  "@material-ui/core": "^3.9.2",
9
9
  "@pie-framework/pie-configure-events": "^1.3.0",
10
- "@pie-lib/pie-toolbox": "1.0.11",
10
+ "@pie-lib/pie-toolbox": "1.1.0",
11
11
  "react": "^16.8.1",
12
12
  "react-dom": "^16.8.1"
13
13
  }
@@ -3,6 +3,18 @@
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
+ ## [5.0.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-controller@5.0.1...@pie-element/number-line-controller@5.0.2) (2023-11-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-597 ([1ec84aa](https://github.com/pie-framework/pie-elements/commit/1ec84aadae515088ef65b99f780a5e5dca516f99))
12
+ * update pie-libs PD-2996 ([cd092c6](https://github.com/pie-framework/pie-elements/commit/cd092c6b5c4db91645394cd23febc1f9a07f46f9))
13
+
14
+
15
+
16
+
17
+
6
18
  ## [5.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-controller@5.0.0...@pie-element/number-line-controller@5.0.1) (2023-11-09)
7
19
 
8
20
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/number-line-controller",
3
3
  "private": true,
4
- "version": "5.0.1",
4
+ "version": "5.0.2",
5
5
  "description": "Controller logic for @pie-ui/number-line",
6
6
  "keywords": [
7
7
  "pie",
@@ -14,7 +14,7 @@
14
14
  "access": "public"
15
15
  },
16
16
  "dependencies": {
17
- "@pie-lib/pie-toolbox": "1.0.11",
17
+ "@pie-lib/pie-toolbox": "1.1.0",
18
18
  "lodash": "^4.17.15"
19
19
  },
20
20
  "author": "",
@@ -7,10 +7,12 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.zeroBasedRange = exports.zbrErrorMessage = exports.snapTo = exports.snapElements = exports.simpleRange = exports.normalizeTicks = exports.minorLimits = exports.isMultiple = exports.fractionSnapTo = exports.fractionRange = exports.fraction = exports.closeTo = exports.buildTickDataAsFractions = exports.buildTickData = void 0;
10
+ exports.zeroBasedRange = exports.zbrErrorMessage = exports.snapTo = exports.snapElements = exports.simpleRange = exports.normalizeTicks = exports.isMultiple = exports.getMinorLimits = exports.fractionSnapTo = exports.fractionRange = exports.fraction = exports.closeTo = exports.buildTickDataAsFractions = exports.buildTickData = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
14
16
  var math = _interopRequireWildcard(require("mathjs"));
15
17
 
16
18
  var _uniqWith = _interopRequireDefault(require("lodash/uniqWith"));
@@ -152,9 +154,7 @@ var simpleRange = function simpleRange(start, end, interval) {
152
154
  interval = math.fraction(interval);
153
155
  var positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];
154
156
  var negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];
155
- var together = negativeRange.concat(positiveRange);
156
- var out = (0, _uniqWith["default"])(together, math.equal);
157
- return out;
157
+ return (0, _uniqWith["default"])([].concat((0, _toConsumableArray2["default"])(negativeRange), (0, _toConsumableArray2["default"])(positiveRange)), math.equal);
158
158
  };
159
159
 
160
160
  exports.simpleRange = simpleRange;
@@ -168,27 +168,27 @@ var closeTo = function closeTo(a, b, precision) {
168
168
 
169
169
  exports.closeTo = closeTo;
170
170
 
171
- var limit = function limit(v, min, max) {
172
- if (math.smaller(v, min)) {
171
+ var limit = function limit(value, min, max) {
172
+ if (math.smaller(value, min)) {
173
173
  return min;
174
174
  }
175
175
 
176
- if (math.larger(v, max)) {
176
+ if (math.larger(value, max)) {
177
177
  return max;
178
178
  }
179
179
 
180
- return v;
180
+ return value;
181
181
  };
182
182
 
183
- var minorLimits = function minorLimits(domain) {
183
+ var getMinorLimits = function getMinorLimits(domain) {
184
184
  var end = domain.max - domain.min;
185
185
  return {
186
186
  min: math.divide(math.fraction(end), 100),
187
- max: math.divide(math.fraction(end), 3)
187
+ max: math.divide(math.fraction(end), 2)
188
188
  };
189
189
  };
190
190
 
191
- exports.minorLimits = minorLimits;
191
+ exports.getMinorLimits = getMinorLimits;
192
192
 
193
193
  var isMultiple = function isMultiple(multiple, src) {
194
194
  var mod = math.mod(multiple, src);
@@ -214,16 +214,19 @@ var fraction = function fraction(v) {
214
214
  exports.fraction = fraction;
215
215
 
216
216
  var normalizeTicks = function normalizeTicks(domain, ticks, opts) {
217
- var l = opts ? opts.limit !== false : true;
218
- var end = fraction(domain.max - domain.min);
219
- var minor = l ? limit(fraction(ticks.minor), math.divide(end, 100), math.divide(end, 3)) : math.fraction(ticks.minor);
220
- var major = l ? limit(fraction(ticks.major), minor, math.multiply(minor, 10)) : math.fraction(ticks.major);
221
- var m = isMultiple(major, minor);
217
+ var useLimit = opts ? opts.limit !== false : true;
218
+ var minorLimits = getMinorLimits(domain);
219
+ var minor = useLimit ? limit(fraction(ticks.minor), minorLimits.min, minorLimits.max) : fraction(ticks.minor);
220
+ var major = useLimit ? limit(fraction(ticks.major), minor, math.multiply(minor, 20)) : fraction(ticks.major);
221
+ var isMajorMultiple = isMultiple(major, minor);
222
+
223
+ if (!isMajorMultiple) {
224
+ var multiplier = math.divide(major, minor);
225
+ var multiplyBy = multiplier <= 2 ? 2 : Math.round(multiplier); // major must be a multiple of minor
222
226
 
223
- if (!m) {
224
227
  return {
225
228
  minor: minor,
226
- major: math.multiply(minor, 2)
229
+ major: math.multiply(minor, multiplyBy)
227
230
  };
228
231
  }
229
232
 
@@ -241,8 +244,8 @@ exports.normalizeTicks = normalizeTicks;
241
244
 
242
245
  var buildTickDataAsFractions = function buildTickDataAsFractions(domain, ticks, opts) {
243
246
  ticks = normalizeTicks(domain, ticks, opts);
244
- var rng = simpleRange(domain.min, domain.max, ticks.minor);
245
- var o = rng.filter(function (x) {
247
+ var range = simpleRange(domain.min, domain.max, ticks.minor);
248
+ return range.filter(function (x) {
246
249
  return math.smallerEq(x, math.fraction(domain.max));
247
250
  }).map(function (x) {
248
251
  var type = 'minor';
@@ -257,19 +260,17 @@ var buildTickDataAsFractions = function buildTickDataAsFractions(domain, ticks,
257
260
  type: type
258
261
  };
259
262
  });
260
- return o;
261
263
  };
262
264
 
263
265
  exports.buildTickDataAsFractions = buildTickDataAsFractions;
264
266
 
265
267
  var buildTickData = function buildTickData(domain, ticks, opts) {
266
- var result = buildTickDataAsFractions(domain, ticks, opts);
267
- var out = result.map(function (o) {
268
+ var fractionTicks = buildTickDataAsFractions(domain, ticks, opts);
269
+ return fractionTicks.map(function (o) {
268
270
  return opts.fraction ? o : _objectSpread(_objectSpread({}, o), {}, {
269
271
  x: math.number(o.x) || 0
270
272
  });
271
273
  });
272
- return out;
273
274
  };
274
275
 
275
276
  exports.buildTickData = buildTickData;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/tick-utils.js"],"names":["fractionSnapTo","min","max","interval","value","fmax","fmin","mod","v","half","div","math","largerEq","abs","d","sub","fn","fn2","snapTo","out","fraction","number","fractionRange","start","end","m","equal","Error","e","subtract","direction","larger","smallerEq","compareFn","next","push","add","zbrErrorMessage","zeroBasedRange","length","a","multiplier","smaller","s","r","map","multiply","reverse","b","simpleRange","positiveRange","negativeRange","together","concat","closeTo","precision","expectedDiff","Math","pow","receivedDiff","limit","minorLimits","domain","divide","isMultiple","multiple","src","n","normalizeTicks","ticks","opts","l","minor","major","buildTickDataAsFractions","rng","o","filter","x","type","modulo","buildTickData","result","snapElements","elements","size","Number","isFinite","undefined","domainPosition"],"mappings":"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","sourcesContent":["import * as math from 'mathjs';\nimport uniqWith from 'lodash/uniqWith';\nimport isObject from 'lodash/isObject';\nimport isNumber from 'lodash/isNumber';\n\nexport const fractionSnapTo = (min, max, interval, value) => {\n value = fmax(fmin(value, max), min);\n const mod = value.mod(interval);\n let v;\n\n const half = interval.div(2);\n if (math.largerEq(math.abs(mod), half)) {\n const d = interval.sub(math.abs(mod));\n const fn = math.largerEq(value, 0) ? 'add' : 'sub';\n v = value[fn](d);\n } else {\n const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';\n v = value[fn2](math.abs(mod));\n }\n return v;\n};\n\nexport const snapTo = (min, max, interval, value) => {\n const out = fractionSnapTo(math.fraction(min), math.fraction(max), math.fraction(interval), math.fraction(value));\n return math.number(out);\n};\n\nexport const fractionRange = (start, end, interval) => {\n const m = math.mod(math.abs(start), math.abs(interval));\n if (!math.equal(m, 0)) {\n throw new Error('start point must be divisible by interval');\n }\n\n if (math.equal(start, end)) {\n return [];\n }\n\n const e = math.subtract(end, math.mod(end, math.abs(interval)));\n\n const direction = math.larger(interval, 0) ? 'positive' : 'negative';\n\n if (direction === 'negative' && math.largerEq(end, start)) {\n throw new Error('start must be > than end when doing a negative decrement');\n }\n if (direction === 'positive' && math.smallerEq(end, start)) {\n throw new Error('start must be < end when doing increments');\n }\n const compareFn = direction === 'positive' ? math.smallerEq : math.equal(e, end) ? math.largerEq : math.larger;\n const out = [];\n\n let next = start;\n while (compareFn(next, e)) {\n out.push(next);\n next = math.add(next, interval);\n }\n return out;\n};\n\nexport const zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nexport const zeroBasedRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const length = math.abs(math.subtract(end, start));\n\n if (math.larger(length, math.abs(end))) {\n throw new Error(zbrErrorMessage(start, end));\n }\n const a = {\n start: math.abs(start),\n end: math.abs(end),\n interval: math.abs(interval),\n multiplier: math.smaller(interval, 0) ? -1 : 1,\n };\n\n const m = math.mod(a.start, a.interval);\n const s = math.larger(m, 0) ? math.add(math.subtract(a.start, m), a.interval) : a.start;\n\n const r = fractionRange(s, a.end, a.interval);\n const out = a.multiplier === -1 ? r.map((v) => math.multiply(v, -1)) : r;\n\n if (math.smaller(interval, 0)) {\n out.reverse();\n }\n return out;\n};\n\nconst fmin = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.smaller(a, b) ? a : b;\n};\n\nconst fmax = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.larger(a, b) ? a : b;\n};\n/**\n * the lodash range was causing too much variance in the rounding errors\n * such that it was hard to round the numbers.\n * This is a more simplistic version but makes rounding work.\n */\nexport const simpleRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];\n\n const negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];\n let together = negativeRange.concat(positiveRange);\n\n const out = uniqWith(together, math.equal);\n return out;\n};\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 2;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n return receivedDiff < expectedDiff;\n};\n\nconst limit = (v, min, max) => {\n if (math.smaller(v, min)) {\n return min;\n }\n\n if (math.larger(v, max)) {\n return max;\n }\n\n return v;\n};\n\nexport const minorLimits = (domain) => {\n const end = domain.max - domain.min;\n return {\n min: math.divide(math.fraction(end), 100),\n max: math.divide(math.fraction(end), 3),\n };\n};\n\nexport const isMultiple = (multiple, src) => {\n const mod = math.mod(multiple, src);\n return math.equal(mod, 0);\n};\n\n/**\n * Accepts a fraction object {n,d,s} or number.\n * @param {*} v\n * @return mathjs.fraction\n */\nexport const fraction = (v) => {\n if (isObject(v)) {\n return math.fraction(v.n * v.s, v.d);\n } else if (isNumber(v)) {\n return math.fraction(v);\n }\n};\n\nexport const normalizeTicks = (domain, ticks, opts) => {\n const l = opts ? opts.limit !== false : true;\n const end = fraction(domain.max - domain.min);\n const minor = l\n ? limit(fraction(ticks.minor), math.divide(end, 100), math.divide(end, 3))\n : math.fraction(ticks.minor);\n const major = l ? limit(fraction(ticks.major), minor, math.multiply(minor, 10)) : math.fraction(ticks.major);\n\n const m = isMultiple(major, minor);\n\n if (!m) {\n return { minor, major: math.multiply(minor, 2) };\n }\n\n return { major, minor };\n};\n\n/**\n * Build ticks as an array of mathjs Fractions\n */\nexport const buildTickDataAsFractions = (domain, ticks, opts) => {\n ticks = normalizeTicks(domain, ticks, opts);\n const rng = simpleRange(domain.min, domain.max, ticks.minor);\n\n const o = rng\n .filter((x) => math.smallerEq(x, math.fraction(domain.max)))\n .map((x) => {\n let type = 'minor';\n const modulo = math.mod(x, ticks.major);\n\n if (closeTo(math.number(modulo), 0)) {\n type = 'major';\n }\n\n return { x, type };\n });\n\n return o;\n};\n\nexport const buildTickData = (domain, ticks, opts) => {\n const result = buildTickDataAsFractions(domain, ticks, opts);\n\n const out = result.map((o) => (opts.fraction ? o : { ...o, x: math.number(o.x) || 0 }));\n\n return out;\n};\n\nexport const snapElements = (domain, ticks, elements) => {\n return elements.map((e) => {\n const size = Number.isFinite(e.size) ? snapTo(0, e.size, ticks.minor, e.size) : undefined;\n const domainPosition = snapTo(domain.min, domain.max, ticks.minor, e.domainPosition);\n const out = { ...e, domainPosition };\n\n if (Number.isFinite(size)) {\n out.size = size;\n }\n\n return out;\n });\n};\n"],"file":"tick-utils.js"}
1
+ {"version":3,"sources":["../../../src/number-line/graph/tick-utils.js"],"names":["fractionSnapTo","min","max","interval","value","fmax","fmin","mod","v","half","div","math","largerEq","abs","d","sub","fn","fn2","snapTo","out","fraction","number","fractionRange","start","end","m","equal","Error","e","subtract","direction","larger","smallerEq","compareFn","next","push","add","zbrErrorMessage","zeroBasedRange","length","a","multiplier","smaller","s","r","map","multiply","reverse","b","simpleRange","positiveRange","negativeRange","closeTo","precision","expectedDiff","Math","pow","receivedDiff","limit","getMinorLimits","domain","divide","isMultiple","multiple","src","n","normalizeTicks","ticks","opts","useLimit","minorLimits","minor","major","isMajorMultiple","multiplyBy","round","buildTickDataAsFractions","range","filter","x","type","modulo","buildTickData","fractionTicks","o","snapElements","elements","size","Number","isFinite","undefined","domainPosition"],"mappings":"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","sourcesContent":["import * as math from 'mathjs';\nimport uniqWith from 'lodash/uniqWith';\nimport isObject from 'lodash/isObject';\nimport isNumber from 'lodash/isNumber';\n\nexport const fractionSnapTo = (min, max, interval, value) => {\n value = fmax(fmin(value, max), min);\n const mod = value.mod(interval);\n let v;\n\n const half = interval.div(2);\n\n if (math.largerEq(math.abs(mod), half)) {\n const d = interval.sub(math.abs(mod));\n const fn = math.largerEq(value, 0) ? 'add' : 'sub';\n v = value[fn](d);\n } else {\n const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';\n v = value[fn2](math.abs(mod));\n }\n\n return v;\n};\n\nexport const snapTo = (min, max, interval, value) => {\n const out = fractionSnapTo(math.fraction(min), math.fraction(max), math.fraction(interval), math.fraction(value));\n\n return math.number(out);\n};\n\nexport const fractionRange = (start, end, interval) => {\n const m = math.mod(math.abs(start), math.abs(interval));\n\n if (!math.equal(m, 0)) {\n throw new Error('start point must be divisible by interval');\n }\n\n if (math.equal(start, end)) {\n return [];\n }\n\n const e = math.subtract(end, math.mod(end, math.abs(interval)));\n const direction = math.larger(interval, 0) ? 'positive' : 'negative';\n\n if (direction === 'negative' && math.largerEq(end, start)) {\n throw new Error('start must be > than end when doing a negative decrement');\n }\n\n if (direction === 'positive' && math.smallerEq(end, start)) {\n throw new Error('start must be < end when doing increments');\n }\n\n const compareFn = direction === 'positive' ? math.smallerEq : math.equal(e, end) ? math.largerEq : math.larger;\n const out = [];\n let next = start;\n\n while (compareFn(next, e)) {\n out.push(next);\n next = math.add(next, interval);\n }\n\n return out;\n};\n\nexport const zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nexport const zeroBasedRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const length = math.abs(math.subtract(end, start));\n\n if (math.larger(length, math.abs(end))) {\n throw new Error(zbrErrorMessage(start, end));\n }\n\n const a = {\n start: math.abs(start),\n end: math.abs(end),\n interval: math.abs(interval),\n multiplier: math.smaller(interval, 0) ? -1 : 1,\n };\n\n const m = math.mod(a.start, a.interval);\n const s = math.larger(m, 0) ? math.add(math.subtract(a.start, m), a.interval) : a.start;\n\n const r = fractionRange(s, a.end, a.interval);\n const out = a.multiplier === -1 ? r.map((v) => math.multiply(v, -1)) : r;\n\n if (math.smaller(interval, 0)) {\n out.reverse();\n }\n\n return out;\n};\n\nconst fmin = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n\n return math.smaller(a, b) ? a : b;\n};\n\nconst fmax = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n\n return math.larger(a, b) ? a : b;\n};\n\n/**\n * the lodash range was causing too much variance in the rounding errors\n * such that it was hard to round the numbers.\n * This is a more simplistic version but makes rounding work.\n */\nexport const simpleRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];\n const negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];\n\n return uniqWith([...negativeRange, ...positiveRange], math.equal);\n};\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 2;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n\n return receivedDiff < expectedDiff;\n};\n\nconst limit = (value, min, max) => {\n if (math.smaller(value, min)) {\n return min;\n }\n\n if (math.larger(value, max)) {\n return max;\n }\n\n return value;\n};\n\nexport const getMinorLimits = (domain) => {\n const end = domain.max - domain.min;\n\n return {\n min: math.divide(math.fraction(end), 100),\n max: math.divide(math.fraction(end), 2),\n };\n};\n\nexport const isMultiple = (multiple, src) => {\n const mod = math.mod(multiple, src);\n\n return math.equal(mod, 0);\n};\n\n/**\n * Accepts a fraction object {n,d,s} or number.\n * @param {*} v\n * @return mathjs.fraction\n */\nexport const fraction = (v) => {\n if (isObject(v)) {\n return math.fraction(v.n * v.s, v.d);\n } else if (isNumber(v)) {\n return math.fraction(v);\n }\n};\n\nexport const normalizeTicks = (domain, ticks, opts) => {\n const useLimit = opts ? opts.limit !== false : true;\n const minorLimits = getMinorLimits(domain);\n\n const minor = useLimit ? limit(fraction(ticks.minor), minorLimits.min, minorLimits.max) : fraction(ticks.minor);\n const major = useLimit ? limit(fraction(ticks.major), minor, math.multiply(minor, 20)) : fraction(ticks.major);\n\n const isMajorMultiple = isMultiple(major, minor);\n\n if (!isMajorMultiple) {\n const multiplier = math.divide(major, minor);\n const multiplyBy = multiplier <= 2 ? 2 : Math.round(multiplier);\n\n // major must be a multiple of minor\n return { minor, major: math.multiply(minor, multiplyBy) };\n }\n\n return { major, minor };\n};\n\n/**\n * Build ticks as an array of mathjs Fractions\n */\nexport const buildTickDataAsFractions = (domain, ticks, opts) => {\n ticks = normalizeTicks(domain, ticks, opts);\n const range = simpleRange(domain.min, domain.max, ticks.minor);\n\n return range\n .filter((x) => math.smallerEq(x, math.fraction(domain.max)))\n .map((x) => {\n let type = 'minor';\n const modulo = math.mod(x, ticks.major);\n\n if (closeTo(math.number(modulo), 0)) {\n type = 'major';\n }\n\n return { x, type };\n });\n};\n\nexport const buildTickData = (domain, ticks, opts) => {\n const fractionTicks = buildTickDataAsFractions(domain, ticks, opts);\n\n return fractionTicks.map((o) => (opts.fraction ? o : { ...o, x: math.number(o.x) || 0 }));\n};\n\nexport const snapElements = (domain, ticks, elements) => {\n return elements.map((e) => {\n const size = Number.isFinite(e.size) ? snapTo(0, e.size, ticks.minor, e.size) : undefined;\n const domainPosition = snapTo(domain.min, domain.max, ticks.minor, e.domainPosition);\n const out = { ...e, domainPosition };\n\n if (Number.isFinite(size)) {\n out.size = size;\n }\n\n return out;\n });\n};\n"],"file":"tick-utils.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/number-line",
3
- "version": "7.0.2-next.3+f8ed8e125",
3
+ "version": "7.1.0",
4
4
  "repository": "pie-framework/pie-elements",
5
5
  "description": "",
6
6
  "publishConfig": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
- "@pie-lib/pie-toolbox": "1.0.11",
11
+ "@pie-lib/pie-toolbox": "1.1.0",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-scale": "^3.2.1",
14
14
  "d3-selection": "^1.4.1",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "author": "pie framework developers",
25
25
  "license": "ISC",
26
- "gitHead": "f8ed8e125424ea16ea381aa8be2f0d8d12e3b592",
26
+ "gitHead": "3298877b4b7f8c2fc707677ab09142d07363e706",
27
27
  "scripts": {
28
28
  "postpublish": "../../scripts/postpublish"
29
29
  },