@pie-element/number-line 5.11.3-next.519 → 5.11.3-next.521

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.
@@ -76,9 +76,13 @@ var Tick = /*#__PURE__*/function (_React$Component) {
76
76
 
77
77
  var _super = _createSuper(Tick);
78
78
 
79
- function Tick() {
79
+ function Tick(props) {
80
+ var _this;
81
+
80
82
  (0, _classCallCheck2["default"])(this, Tick);
81
- return _super.apply(this, arguments);
83
+ _this = _super.call(this, props);
84
+ _this.wasRendered = false;
85
+ return _this;
82
86
  }
83
87
 
84
88
  (0, _createClass2["default"])(Tick, [{
@@ -86,16 +90,24 @@ var Tick = /*#__PURE__*/function (_React$Component) {
86
90
  value: function componentDidMount() {
87
91
  //center align the tick text
88
92
  if (this.text) {
93
+ var fraction = this.props.fraction;
94
+
89
95
  var _this$text$getBBox = this.text.getBBox(),
90
96
  width = _this$text$getBBox.width;
91
97
 
92
98
  this.text.setAttribute('x', width / 2 * -1);
99
+
100
+ if (fraction && !this.wasRendered) {
101
+ // used for rendering the line fraction
102
+ this.wasRendered = true;
103
+ this.forceUpdate();
104
+ }
93
105
  }
94
106
  }
95
107
  }, {
96
108
  key: "render",
97
109
  value: function render() {
98
- var _this = this;
110
+ var _this2 = this;
99
111
 
100
112
  //the domain value
101
113
  var _this$props = this.props,
@@ -109,7 +121,7 @@ var Tick = /*#__PURE__*/function (_React$Component) {
109
121
  var labelTick = type === 'major';
110
122
  var height = labelTick ? 20 : 10;
111
123
 
112
- var _ref = this.text ? this.text.getBBox() : {},
124
+ var _ref = this.text && this.text.getBBox() || {},
113
125
  _ref$width = _ref.width,
114
126
  textWidth = _ref$width === void 0 ? 0 : _ref$width,
115
127
  _ref$height = _ref.height,
@@ -143,7 +155,7 @@ var Tick = /*#__PURE__*/function (_React$Component) {
143
155
  y2: textY + textHeight / 2
144
156
  }), labelTick && /*#__PURE__*/_react["default"].createElement("text", {
145
157
  ref: function ref(text) {
146
- return _this.text = text;
158
+ return _this2.text = text;
147
159
  },
148
160
  className: classes.text,
149
161
  y: "14",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/ticks.jsx"],"names":["style","text","userSelect","textAlign","fill","color","primary","line","stroke","TickValidator","PropTypes","shape","major","props","propName","minor","Error","componentName","isRequired","Tick","getBBox","width","setAttribute","x","y","type","classes","xScale","fraction","displayFraction","n","d","labelTick","height","textWidth","textHeight","textX","textY","xText","Number","toFixed","React","Component","object","number","bool","func","string","Ticks","domain","ticks","context","tickData","map","min","max"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { buildTickData, isMultiple } from './tick-utils';\nimport injectSheet from 'react-jss';\nimport { color } from '@pie-lib/render-ui';\n\nconst style = {\n text: {\n userSelect: 'none',\n textAlign: 'center',\n fill: color.primary()\n },\n line: {\n stroke: color.primary()\n }\n};\n\nexport const TickValidator = PropTypes.shape({\n /** the number of major ticks (including min + max)\n * to display. cant be lower than 2.\n */\n major: (props, propName) => {\n let major = props[propName];\n let minor = props.minor;\n\n if (!isMultiple(major, minor)) {\n return new Error(`Invalid prop major. It must be a multiple of ${minor}`);\n }\n },\n /** the number of minor ticks to display between major ticks.\n * Can't be less than zero.\n */\n minor: (props, propName, componentName) => {\n let minor = props[propName];\n if (minor <= 0) {\n return new Error(\n `Invalid prop ${propName} must be > 0. ${componentName}`\n );\n }\n }\n}).isRequired;\n\nexport class Tick extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n y: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n major: PropTypes.bool,\n fraction: PropTypes.bool,\n xScale: PropTypes.func,\n type: PropTypes.string\n };\n\n static defaultProps = {\n major: false\n };\n\n componentDidMount() {\n //center align the tick text\n if (this.text) {\n let { width } = this.text.getBBox();\n this.text.setAttribute('x', (width / 2) * -1);\n }\n }\n\n render() {\n //the domain value\n let { x, y, type, classes, xScale, fraction } = this.props;\n const displayFraction = fraction && x.n !== x.d && x.n !== 0;\n const labelTick = type === 'major';\n const height = labelTick ? 20 : 10;\n const {\n width: textWidth = 0,\n height: textHeight = 0,\n x: textX = 0,\n y: textY = 0\n } = this.text ? this.text.getBBox() : {};\n\n const xText = !fraction ? Number(x.toFixed(2))\n : !displayFraction ? x.n\n : <>\n <tspan x=\"0\" dy=\"0.71em\">{x.n}</tspan>\n <tspan x=\"0\" dy=\"1.11em\">{x.d}</tspan>\n </>;\n\n return (\n <g opacity=\"1\" transform={`translate(${xScale(x)}, ${y})`}>\n <line\n className={classes.line}\n y1={(height / 2) * -1}\n y2={height / 2}\n x1=\"0.5\"\n x2=\"0.5\"\n />\n\n {displayFraction &&\n <line\n className={classes.line}\n x1={textX}\n x2={textX + textWidth}\n y1={textY + textHeight / 2}\n y2={textY + textHeight / 2}\n />\n }\n\n {labelTick && (\n <text\n ref={text => (this.text = text)}\n className={classes.text}\n y=\"14\"\n width=\"10\"\n dy=\"0.71em\"\n textAnchor={displayFraction && \"middle\"}\n >\n {xText}\n </text>\n )}\n </g>\n );\n }\n}\n\nexport class Ticks extends React.Component {\n static contextTypes = {\n xScale: PropTypes.func.isRequired\n };\n\n static propTypes = {\n classes: PropTypes.object.isRequired,\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired\n }).isRequired,\n fraction: PropTypes.bool,\n ticks: TickValidator,\n y: PropTypes.number.isRequired\n };\n\n render() {\n let { domain, ticks, y, classes, fraction } = this.props;\n let { xScale } = this.context;\n\n const tickData = buildTickData(domain, ticks, { fraction });\n\n return (\n <g>\n {tickData.map(({ x, type }) => {\n return (\n <Tick\n classes={classes}\n fraction={fraction}\n x={x}\n y={y}\n type={type}\n xScale={xScale}\n key={`${x}-${type}`}\n />\n );\n })}\n </g>\n );\n }\n}\n\nexport default injectSheet(style)(Ticks);\n"],"file":"ticks.js"}
1
+ {"version":3,"sources":["../../../src/number-line/graph/ticks.jsx"],"names":["style","text","userSelect","textAlign","fill","color","primary","line","stroke","TickValidator","PropTypes","shape","major","props","propName","minor","Error","componentName","isRequired","Tick","wasRendered","fraction","getBBox","width","setAttribute","forceUpdate","x","y","type","classes","xScale","displayFraction","n","d","labelTick","height","textWidth","textHeight","textX","textY","xText","Number","toFixed","React","Component","object","number","bool","func","string","Ticks","domain","ticks","context","tickData","map","min","max"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { buildTickData, isMultiple } from './tick-utils';\nimport injectSheet from 'react-jss';\nimport { color } from '@pie-lib/render-ui';\n\nconst style = {\n text: {\n userSelect: 'none',\n textAlign: 'center',\n fill: color.primary()\n },\n line: {\n stroke: color.primary()\n }\n};\n\nexport const TickValidator = PropTypes.shape({\n /** the number of major ticks (including min + max)\n * to display. cant be lower than 2.\n */\n major: (props, propName) => {\n let major = props[propName];\n let minor = props.minor;\n\n if (!isMultiple(major, minor)) {\n return new Error(`Invalid prop major. It must be a multiple of ${minor}`);\n }\n },\n /** the number of minor ticks to display between major ticks.\n * Can't be less than zero.\n */\n minor: (props, propName, componentName) => {\n let minor = props[propName];\n if (minor <= 0) {\n return new Error(\n `Invalid prop ${propName} must be > 0. ${componentName}`\n );\n }\n }\n}).isRequired;\n\nexport class Tick extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n y: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n major: PropTypes.bool,\n fraction: PropTypes.bool,\n xScale: PropTypes.func,\n type: PropTypes.string\n };\n\n static defaultProps = {\n major: false\n };\n\n constructor(props) {\n super(props);\n this.wasRendered = false;\n };\n\n componentDidMount() {\n //center align the tick text\n if (this.text) {\n const { fraction } = this.props;\n let { width } = this.text.getBBox();\n this.text.setAttribute('x', (width / 2) * -1);\n\n if (fraction && !this.wasRendered) {\n // used for rendering the line fraction\n this.wasRendered = true;\n this.forceUpdate();\n }\n }\n }\n\n render() {\n //the domain value\n let { x, y, type, classes, xScale, fraction } = this.props;\n const displayFraction = fraction && x.n !== x.d && x.n !== 0;\n const labelTick = type === 'major';\n const height = labelTick ? 20 : 10;\n const {\n width: textWidth = 0,\n height: textHeight = 0,\n x: textX = 0,\n y: textY = 0\n } = this.text && this.text.getBBox() || {};\n\n const xText = !fraction ? Number(x.toFixed(2))\n : !displayFraction ? x.n\n : <>\n <tspan x=\"0\" dy=\"0.71em\">{x.n}</tspan>\n <tspan x=\"0\" dy=\"1.11em\">{x.d}</tspan>\n </>;\n\n return (\n <g opacity=\"1\" transform={`translate(${xScale(x)}, ${y})`}>\n <line\n className={classes.line}\n y1={(height / 2) * -1}\n y2={height / 2}\n x1=\"0.5\"\n x2=\"0.5\"\n />\n\n {displayFraction &&\n <line\n className={classes.line}\n x1={textX}\n x2={textX + textWidth}\n y1={textY + textHeight / 2}\n y2={textY + textHeight / 2}\n />\n }\n\n {labelTick && (\n <text\n ref={text => (this.text = text)}\n className={classes.text}\n y=\"14\"\n width=\"10\"\n dy=\"0.71em\"\n textAnchor={displayFraction && \"middle\"}\n >\n {xText}\n </text>\n )}\n </g>\n );\n }\n}\n\nexport class Ticks extends React.Component {\n static contextTypes = {\n xScale: PropTypes.func.isRequired\n };\n\n static propTypes = {\n classes: PropTypes.object.isRequired,\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired\n }).isRequired,\n fraction: PropTypes.bool,\n ticks: TickValidator,\n y: PropTypes.number.isRequired\n };\n\n render() {\n let { domain, ticks, y, classes, fraction } = this.props;\n let { xScale } = this.context;\n\n const tickData = buildTickData(domain, ticks, { fraction });\n\n return (\n <g>\n {tickData.map(({ x, type }) => {\n return (\n <Tick\n classes={classes}\n fraction={fraction}\n x={x}\n y={y}\n type={type}\n xScale={xScale}\n key={`${x}-${type}`}\n />\n );\n })}\n </g>\n );\n }\n}\n\nexport default injectSheet(style)(Ticks);\n"],"file":"ticks.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/number-line",
3
- "version": "5.11.3-next.519+d60898c47",
3
+ "version": "5.11.3-next.521+bf0e0b327",
4
4
  "repository": "pie-framework/pie-elements",
5
5
  "description": "",
6
6
  "publishConfig": {
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "author": "pie framework developers",
29
29
  "license": "ISC",
30
- "gitHead": "d60898c470ced3492133816ec4b21d52eea79193",
30
+ "gitHead": "bf0e0b327b93a0ba6d4681f44e06572182d0e845",
31
31
  "scripts": {
32
32
  "postpublish": "../../scripts/postpublish"
33
33
  },