@pie-lib/graphing 2.4.2 → 2.4.3-next.162

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
@@ -21,214 +21,119 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
21
21
 
22
22
  # [2.4.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.3.2...@pie-lib/graphing@2.4.0) (2021-07-23)
23
23
 
24
-
25
24
  ### Features
26
25
 
27
- * **graphing:** control over whether arrows are displayed PD-483 ([dc9c8f8](https://github.com/pie-framework/pie-lib/commit/dc9c8f8))
28
- * **graphing:** Display point coordinates on hover PD-188 ([ed38fef](https://github.com/pie-framework/pie-lib/commit/ed38fef))
29
-
30
-
31
-
32
-
26
+ - **graphing:** control over whether arrows are displayed PD-483 ([dc9c8f8](https://github.com/pie-framework/pie-lib/commit/dc9c8f8))
27
+ - **graphing:** Display point coordinates on hover PD-188 ([ed38fef](https://github.com/pie-framework/pie-lib/commit/ed38fef))
33
28
 
34
29
  ## [2.3.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.3.0...@pie-lib/graphing@2.3.2) (2021-06-25)
35
30
 
36
31
  **Note:** Version bump only for package @pie-lib/graphing
37
32
 
38
-
39
-
40
-
41
-
42
33
  # [2.3.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.21...@pie-lib/graphing@2.3.0) (2021-06-25)
43
34
 
44
-
45
35
  ### Bug Fixes
46
36
 
47
- * **graphing:** correctly calculate tick values for when step has 3 decimals. Add sanity check for graph label PD-991 ([5b1d85b](https://github.com/pie-framework/pie-lib/commit/5b1d85b))
48
- * **graphing:** Removed non-functional buttons PD-545 ([1884b9d](https://github.com/pie-framework/pie-lib/commit/1884b9d))
49
-
37
+ - **graphing:** correctly calculate tick values for when step has 3 decimals. Add sanity check for graph label PD-991 ([5b1d85b](https://github.com/pie-framework/pie-lib/commit/5b1d85b))
38
+ - **graphing:** Removed non-functional buttons PD-545 ([1884b9d](https://github.com/pie-framework/pie-lib/commit/1884b9d))
50
39
 
51
40
  ### Features
52
41
 
53
- * **graphing:** Added the ability to label shapes other than point - PD-486 ([ad1ea5a](https://github.com/pie-framework/pie-lib/commit/ad1ea5a))
54
- * **graphing:** Disallowed invalid point movements and placements PD-484 ([88ad2c4](https://github.com/pie-framework/pie-lib/commit/88ad2c4))
55
-
56
-
57
-
58
-
42
+ - **graphing:** Added the ability to label shapes other than point - PD-486 ([ad1ea5a](https://github.com/pie-framework/pie-lib/commit/ad1ea5a))
43
+ - **graphing:** Disallowed invalid point movements and placements PD-484 ([88ad2c4](https://github.com/pie-framework/pie-lib/commit/88ad2c4))
59
44
 
60
45
  ## [2.2.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.20...@pie-lib/graphing@2.2.21) (2021-04-06)
61
46
 
62
47
  **Note:** Version bump only for package @pie-lib/graphing
63
48
 
64
-
65
-
66
-
67
-
68
49
  ## [2.2.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.19...@pie-lib/graphing@2.2.20) (2021-04-02)
69
50
 
70
-
71
51
  ### Bug Fixes
72
52
 
73
- * **graphing:** denote labels as non-readable ([a59a9ba](https://github.com/pie-framework/pie-lib/commit/a59a9ba))
74
- * **graphing:** Modified labels size and bug fixes ([e6dd79a](https://github.com/pie-framework/pie-lib/commit/e6dd79a))
75
-
76
-
77
-
78
-
53
+ - **graphing:** denote labels as non-readable ([a59a9ba](https://github.com/pie-framework/pie-lib/commit/a59a9ba))
54
+ - **graphing:** Modified labels size and bug fixes ([e6dd79a](https://github.com/pie-framework/pie-lib/commit/e6dd79a))
79
55
 
80
56
  ## [2.2.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.18...@pie-lib/graphing@2.2.19) (2021-03-22)
81
57
 
82
-
83
58
  ### Bug Fixes
84
59
 
85
- * **graphing:** fix arrow positioning for any angle PD-495 ([33cc936](https://github.com/pie-framework/pie-lib/commit/33cc936))
86
-
87
-
88
-
89
-
60
+ - **graphing:** fix arrow positioning for any angle PD-495 ([33cc936](https://github.com/pie-framework/pie-lib/commit/33cc936))
90
61
 
91
62
  ## [2.2.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.17...@pie-lib/graphing@2.2.18) (2021-03-17)
92
63
 
93
-
94
64
  ### Bug Fixes
95
65
 
96
- * **graphing:** ROLLBACK - fix arrow positioning PD-495 ([8af59e7](https://github.com/pie-framework/pie-lib/commit/8af59e7))
97
-
98
-
99
-
100
-
66
+ - **graphing:** ROLLBACK - fix arrow positioning PD-495 ([8af59e7](https://github.com/pie-framework/pie-lib/commit/8af59e7))
101
67
 
102
68
  ## [2.2.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.16...@pie-lib/graphing@2.2.17) (2021-03-16)
103
69
 
104
-
105
70
  ### Bug Fixes
106
71
 
107
- * **graphing:** fix arrow positioning PD-495 ([36a87cf](https://github.com/pie-framework/pie-lib/commit/36a87cf))
108
-
109
-
110
-
111
-
72
+ - **graphing:** fix arrow positioning PD-495 ([36a87cf](https://github.com/pie-framework/pie-lib/commit/36a87cf))
112
73
 
113
74
  ## [2.2.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.15...@pie-lib/graphing@2.2.16) (2021-03-15)
114
75
 
115
-
116
76
  ### Bug Fixes
117
77
 
118
- * **graphing:** increase width and height for labels, depending on labels length PD-988 ([5f64c47](https://github.com/pie-framework/pie-lib/commit/5f64c47))
119
- * **graphing:** increase width for range axisLabel PD-988 ([e4e5b8f](https://github.com/pie-framework/pie-lib/commit/e4e5b8f))
120
- * **graphing:** set height depending on number of words of axisLabel PD-988 ([210b3af](https://github.com/pie-framework/pie-lib/commit/210b3af))
121
-
122
-
123
-
124
-
78
+ - **graphing:** increase width and height for labels, depending on labels length PD-988 ([5f64c47](https://github.com/pie-framework/pie-lib/commit/5f64c47))
79
+ - **graphing:** increase width for range axisLabel PD-988 ([e4e5b8f](https://github.com/pie-framework/pie-lib/commit/e4e5b8f))
80
+ - **graphing:** set height depending on number of words of axisLabel PD-988 ([210b3af](https://github.com/pie-framework/pie-lib/commit/210b3af))
125
81
 
126
82
  ## [2.2.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.14...@pie-lib/graphing@2.2.15) (2021-03-01)
127
83
 
128
-
129
84
  ### Bug Fixes
130
85
 
131
- * **graphing:** positioning of the numeric labels on the x- and y- axes for 0 and -1 PD-529 ([c33c82b](https://github.com/pie-framework/pie-lib/commit/c33c82b))
132
- * **graphing:** where '-n' [x] and '-n' [y] would overlap if positioned normally, only one '-n' label should be displayed and centered PD-529 ([946657f](https://github.com/pie-framework/pie-lib/commit/946657f))
133
-
134
-
135
-
136
-
86
+ - **graphing:** positioning of the numeric labels on the x- and y- axes for 0 and -1 PD-529 ([c33c82b](https://github.com/pie-framework/pie-lib/commit/c33c82b))
87
+ - **graphing:** where '-n' [x] and '-n' [y] would overlap if positioned normally, only one '-n' label should be displayed and centered PD-529 ([946657f](https://github.com/pie-framework/pie-lib/commit/946657f))
137
88
 
138
89
  ## [2.2.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.13...@pie-lib/graphing@2.2.14) (2021-03-01)
139
90
 
140
-
141
91
  ### Bug Fixes
142
92
 
143
- * **graphing:** in OT buttons and tool labels are too small, override fontSize of 0.8125rem and fontSize of 0.8125rem PD-24 ([4f58952](https://github.com/pie-framework/pie-lib/commit/4f58952))
144
-
145
-
146
-
147
-
93
+ - **graphing:** in OT buttons and tool labels are too small, override fontSize of 0.8125rem and fontSize of 0.8125rem PD-24 ([4f58952](https://github.com/pie-framework/pie-lib/commit/4f58952))
148
94
 
149
95
  ## [2.2.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.12...@pie-lib/graphing@2.2.13) (2021-02-15)
150
96
 
151
-
152
97
  ### Bug Fixes
153
98
 
154
- * **graphing:** reset markups on pushing reset ([3a10924](https://github.com/pie-framework/pie-lib/commit/3a10924))
155
-
156
-
157
-
158
-
99
+ - **graphing:** reset markups on pushing reset ([3a10924](https://github.com/pie-framework/pie-lib/commit/3a10924))
159
100
 
160
101
  ## [2.2.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.10...@pie-lib/graphing@2.2.12) (2021-02-15)
161
102
 
162
103
  **Note:** Version bump only for package @pie-lib/graphing
163
104
 
164
-
165
-
166
-
167
-
168
105
  ## [2.2.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.9...@pie-lib/graphing@2.2.10) (2021-02-15)
169
106
 
170
107
  **Note:** Version bump only for package @pie-lib/graphing
171
108
 
172
-
173
-
174
-
175
-
176
109
  ## [2.2.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.8...@pie-lib/graphing@2.2.9) (2021-02-01)
177
110
 
178
111
  **Note:** Version bump only for package @pie-lib/graphing
179
112
 
180
-
181
-
182
-
183
-
184
113
  ## [2.2.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.7...@pie-lib/graphing@2.2.8) (2021-01-28)
185
114
 
186
115
  **Note:** Version bump only for package @pie-lib/graphing
187
116
 
188
-
189
-
190
-
191
-
192
117
  ## [2.2.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.6...@pie-lib/graphing@2.2.7) (2021-01-28)
193
118
 
194
119
  **Note:** Version bump only for package @pie-lib/graphing
195
120
 
196
-
197
-
198
-
199
-
200
121
  ## [2.2.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.5...@pie-lib/graphing@2.2.6) (2021-01-25)
201
122
 
202
123
  **Note:** Version bump only for package @pie-lib/graphing
203
124
 
204
-
205
-
206
-
207
-
208
125
  ## [2.2.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.4...@pie-lib/graphing@2.2.5) (2021-01-11)
209
126
 
210
127
  **Note:** Version bump only for package @pie-lib/graphing
211
128
 
212
-
213
-
214
-
215
-
216
129
  ## [2.2.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.3...@pie-lib/graphing@2.2.4) (2020-10-29)
217
130
 
218
131
  **Note:** Version bump only for package @pie-lib/graphing
219
132
 
220
-
221
-
222
-
223
-
224
133
  ## [2.2.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.2...@pie-lib/graphing@2.2.3) (2020-10-26)
225
134
 
226
135
  **Note:** Version bump only for package @pie-lib/graphing
227
136
 
228
-
229
-
230
-
231
-
232
137
  ## [2.2.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.1...@pie-lib/graphing@2.2.2) (2020-10-26)
233
138
 
234
139
  **Note:** Version bump only for package @pie-lib/graphing
package/lib/axis/arrow.js CHANGED
@@ -61,6 +61,7 @@ function (_React$Component) {
61
61
  classes = _this$props.classes,
62
62
  className = _this$props.className,
63
63
  scale = _this$props.scale;
64
+ var names = (0, _classnames["default"])(classes.root, className);
64
65
  var direction = this.props.direction || 'left';
65
66
  var xv = scale.x(x);
66
67
  var yv = scale.y(y);
@@ -71,22 +72,21 @@ function (_React$Component) {
71
72
  };
72
73
 
73
74
  if (direction === 'left') {
74
- transform = getTransform(xv - 7, yv, 0);
75
+ transform = getTransform(xv - 15, yv, 0);
75
76
  }
76
77
 
77
78
  if (direction === 'right') {
78
- transform = getTransform(xv + 7, yv, 180);
79
+ transform = getTransform(xv + 15, yv, 180);
79
80
  }
80
81
 
81
82
  if (direction === 'up') {
82
- transform = getTransform(xv, yv - 7, 90);
83
+ transform = getTransform(xv, yv - 15, 90);
83
84
  }
84
85
 
85
86
  if (direction === 'down') {
86
- transform = getTransform(xv, yv + 7, 270);
87
+ transform = getTransform(xv, yv + 15, 270);
87
88
  }
88
89
 
89
- var names = (0, _classnames["default"])(classes.root, className);
90
90
  return _react["default"].createElement("path", {
91
91
  d: "m 0,0 8,-5 0,10 -8,-5",
92
92
  transform: transform,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","direction","xv","yv","transform","getTransform","rotate","names","React","Component","propTypes","PropTypes","number","oneOf","object","isRequired","string","types","ScaleType","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADM,CAAd;;IAMaC,K;;;;;;;;;;;;;6BACF;AAAA,wBACqC,KAAKC,KAD1C;AAAA,UACCC,CADD,eACCA,CADD;AAAA,UACIC,CADJ,eACIA,CADJ;AAAA,UACOC,OADP,eACOA,OADP;AAAA,UACgBC,SADhB,eACgBA,SADhB;AAAA,UAC2BC,KAD3B,eAC2BA,KAD3B;AAEP,UAAIC,SAAS,GAAG,KAAKN,KAAL,CAAWM,SAAX,IAAwB,MAAxC;AAEA,UAAMC,EAAE,GAAGF,KAAK,CAACJ,CAAN,CAAQA,CAAR,CAAX;AACA,UAAMO,EAAE,GAAGH,KAAK,CAACH,CAAN,CAAQA,CAAR,CAAX;AAEA,UAAIO,SAAS,GAAG,EAAhB;;AAEA,UAAMC,YAAY,GAAG,SAAfA,YAAe,CAACT,CAAD,EAAIC,CAAJ,EAAOS,MAAP;AAAA,mCAA+BV,CAA/B,eAAqCC,CAArC,sBAAkDS,MAAlD;AAAA,OAArB;;AAEA,UAAIL,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,CAAN,EAASC,EAAT,EAAa,CAAb,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,OAAlB,EAA2B;AACzBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,CAAN,EAASC,EAAT,EAAa,GAAb,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,CAAV,EAAa,EAAb,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,CAAV,EAAa,GAAb,CAAxB;AACD;;AAED,UAAMI,KAAK,GAAG,4BAAWT,OAAO,CAACN,IAAnB,EAAyBO,SAAzB,CAAd;AACA,aAAO;AAAM,QAAA,CAAC,EAAC,uBAAR;AAAgC,QAAA,SAAS,EAAEK,SAA3C;AAAsD,QAAA,SAAS,EAAEG;AAAjE,QAAP;AACD;;;;EA9BwBC,kBAAMC,S;;;AAiCjCf,KAAK,CAACgB,SAAN,GAAkB;AAChBb,EAAAA,CAAC,EAAEc,sBAAUC,MADG;AAEhBhB,EAAAA,CAAC,EAAEe,sBAAUC,MAFG;AAGhBX,EAAAA,SAAS,EAAEU,sBAAUE,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,EAAkB,IAAlB,EAAwB,MAAxB,CAAhB,CAHK;AAIhBf,EAAAA,OAAO,EAAEa,sBAAUG,MAAV,CAAiBC,UAJV;AAKhBhB,EAAAA,SAAS,EAAEY,sBAAUK,MALL;AAMhBhB,EAAAA,KAAK,EAAEiB,YAAMC,SAAN,CAAgBH;AANP,CAAlB;AASArB,KAAK,CAACyB,YAAN,GAAqB;AACnBtB,EAAAA,CAAC,EAAE,CADgB;AAEnBD,EAAAA,CAAC,EAAE,CAFgB;AAGnBK,EAAAA,SAAS,EAAE;AAHQ,CAArB;;eAMe,wBAAWV,KAAX,EAAkBG,KAAlB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { types } from '@pie-lib/plot';\n\nconst style = {\n root: {\n fill: 'var(--arrow-color, black)'\n }\n};\n\nexport class Arrow extends React.Component {\n render() {\n const { x, y, classes, className, scale } = this.props;\n let direction = this.props.direction || 'left';\n\n const xv = scale.x(x);\n const yv = scale.y(y);\n\n let transform = '';\n\n const getTransform = (x, y, rotate) => `translate(${x}, ${y}) rotate(${rotate})`;\n\n if (direction === 'left') {\n transform = getTransform(xv - 7, yv, 0);\n }\n\n if (direction === 'right') {\n transform = getTransform(xv + 7, yv, 180);\n }\n\n if (direction === 'up') {\n transform = getTransform(xv, yv - 7, 90);\n }\n\n if (direction === 'down') {\n transform = getTransform(xv, yv + 7, 270);\n }\n\n const names = classNames(classes.root, className);\n return <path d=\"m 0,0 8,-5 0,10 -8,-5\" transform={transform} className={names} />;\n }\n}\n\nArrow.propTypes = {\n y: PropTypes.number,\n x: PropTypes.number,\n direction: PropTypes.oneOf(['left', 'right', 'up', 'down']),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n scale: types.ScaleType.isRequired\n};\n\nArrow.defaultProps = {\n y: 0,\n x: 0,\n direction: 'left'\n};\n\nexport default withStyles(style)(Arrow);\n"],"file":"arrow.js"}
1
+ {"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","names","direction","xv","yv","transform","getTransform","rotate","React","Component","propTypes","PropTypes","number","oneOf","object","isRequired","string","types","ScaleType","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADM,CAAd;;IAMaC,K;;;;;;;;;;;;;6BACF;AAAA,wBACqC,KAAKC,KAD1C;AAAA,UACCC,CADD,eACCA,CADD;AAAA,UACIC,CADJ,eACIA,CADJ;AAAA,UACOC,OADP,eACOA,OADP;AAAA,UACgBC,SADhB,eACgBA,SADhB;AAAA,UAC2BC,KAD3B,eAC2BA,KAD3B;AAEP,UAAMC,KAAK,GAAG,4BAAWH,OAAO,CAACN,IAAnB,EAAyBO,SAAzB,CAAd;AACA,UAAIG,SAAS,GAAG,KAAKP,KAAL,CAAWO,SAAX,IAAwB,MAAxC;AAEA,UAAMC,EAAE,GAAGH,KAAK,CAACJ,CAAN,CAAQA,CAAR,CAAX;AACA,UAAMQ,EAAE,GAAGJ,KAAK,CAACH,CAAN,CAAQA,CAAR,CAAX;AAEA,UAAIQ,SAAS,GAAG,EAAhB;;AAEA,UAAMC,YAAY,GAAG,SAAfA,YAAe,CAACV,CAAD,EAAIC,CAAJ,EAAOU,MAAP;AAAA,mCAA+BX,CAA/B,eAAqCC,CAArC,sBAAkDU,MAAlD;AAAA,OAArB;;AAEA,UAAIL,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,CAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,OAAlB,EAA2B;AACzBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,EAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,aAAO;AAAM,QAAA,CAAC,EAAC,uBAAR;AAAgC,QAAA,SAAS,EAAEC,SAA3C;AAAsD,QAAA,SAAS,EAAEJ;AAAjE,QAAP;AACD;;;;EA9BwBO,kBAAMC,S;;;AAiCjCf,KAAK,CAACgB,SAAN,GAAkB;AAChBb,EAAAA,CAAC,EAAEc,sBAAUC,MADG;AAEhBhB,EAAAA,CAAC,EAAEe,sBAAUC,MAFG;AAGhBV,EAAAA,SAAS,EAAES,sBAAUE,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,EAAkB,IAAlB,EAAwB,MAAxB,CAAhB,CAHK;AAIhBf,EAAAA,OAAO,EAAEa,sBAAUG,MAAV,CAAiBC,UAJV;AAKhBhB,EAAAA,SAAS,EAAEY,sBAAUK,MALL;AAMhBhB,EAAAA,KAAK,EAAEiB,YAAMC,SAAN,CAAgBH;AANP,CAAlB;AASArB,KAAK,CAACyB,YAAN,GAAqB;AACnBtB,EAAAA,CAAC,EAAE,CADgB;AAEnBD,EAAAA,CAAC,EAAE,CAFgB;AAGnBM,EAAAA,SAAS,EAAE;AAHQ,CAArB;;eAMe,wBAAWX,KAAX,EAAkBG,KAAlB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { types } from '@pie-lib/plot';\n\nconst style = {\n root: {\n fill: 'var(--arrow-color, black)'\n }\n};\n\nexport class Arrow extends React.Component {\n render() {\n const { x, y, classes, className, scale } = this.props;\n const names = classNames(classes.root, className);\n let direction = this.props.direction || 'left';\n\n const xv = scale.x(x);\n const yv = scale.y(y);\n\n let transform = '';\n\n const getTransform = (x, y, rotate) => `translate(${x}, ${y}) rotate(${rotate})`;\n\n if (direction === 'left') {\n transform = getTransform(xv - 15, yv, 0);\n }\n\n if (direction === 'right') {\n transform = getTransform(xv + 15, yv, 180);\n }\n\n if (direction === 'up') {\n transform = getTransform(xv, yv - 15, 90);\n }\n\n if (direction === 'down') {\n transform = getTransform(xv, yv + 15, 270);\n }\n\n return <path d=\"m 0,0 8,-5 0,10 -8,-5\" transform={transform} className={names} />;\n }\n}\n\nArrow.propTypes = {\n y: PropTypes.number,\n x: PropTypes.number,\n direction: PropTypes.oneOf(['left', 'right', 'up', 'down']),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n scale: types.ScaleType.isRequired\n};\n\nArrow.defaultProps = {\n y: 0,\n x: 0,\n direction: 'left'\n};\n\nexport default withStyles(style)(Arrow);\n"],"file":"arrow.js"}
package/lib/axis/axes.js CHANGED
@@ -108,10 +108,10 @@ var tickLabelStyles = {
108
108
  cursor: 'inherit'
109
109
  };
110
110
 
111
- var sharedValues = function sharedValues(firstNegativeX, firstNegativeY, distantceFromOriginToFirstNegativeX, distantceFromOriginToFirstNegativeY, deltaAllowance, dy) {
111
+ var sharedValues = function sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy) {
112
112
  var result = [];
113
113
 
114
- if (firstNegativeX === firstNegativeY && distantceFromOriginToFirstNegativeX - deltaAllowance < distantceFromOriginToFirstNegativeY && distantceFromOriginToFirstNegativeY < distantceFromOriginToFirstNegativeX + deltaAllowance && distantceFromOriginToFirstNegativeX - deltaAllowance < dy && dy < distantceFromOriginToFirstNegativeX + deltaAllowance) {
114
+ if (firstNegativeX === firstNegativeY && distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY && distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance && distanceFromOriginToFirstNegativeX - deltaAllowance < dy && dy < distanceFromOriginToFirstNegativeX + deltaAllowance) {
115
115
  result.push(firstNegativeX);
116
116
  }
117
117
 
@@ -148,7 +148,7 @@ function (_React$Component) {
148
148
  graphProps = _this$props.graphProps,
149
149
  columnTicksValues = _this$props.columnTicksValues,
150
150
  skipValues = _this$props.skipValues,
151
- distantceFromOriginToFirstNegativeY = _this$props.distantceFromOriginToFirstNegativeY,
151
+ distanceFromOriginToFirstNegativeY = _this$props.distanceFromOriginToFirstNegativeY,
152
152
  dy = _this$props.dy;
153
153
 
154
154
  var _ref = graphProps || {},
@@ -162,12 +162,7 @@ function (_React$Component) {
162
162
  var tickValues = (domain.labelStep || range.labelStep) && domain.min <= 0 ? ['0'].concat(_toConsumableArray(columnTicksValues)) : columnTicksValues; // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed
163
163
 
164
164
  var labelProps = function labelProps(label) {
165
- var y = dy;
166
-
167
- if (skipValues && skipValues[0] === label) {
168
- y = distantceFromOriginToFirstNegativeY + 4;
169
- }
170
-
165
+ var y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;
171
166
  return _objectSpread({}, tickLabelStyles, {
172
167
  textAnchor: 'middle',
173
168
  y: y,
@@ -185,6 +180,7 @@ function (_React$Component) {
185
180
  top: scale.y(0),
186
181
  left: 0,
187
182
  label: domain.label,
183
+ rangePadding: 8,
188
184
  tickClassName: classes.tick,
189
185
  tickFormat: function tickFormat(value) {
190
186
  return value;
@@ -204,7 +200,7 @@ function (_React$Component) {
204
200
  className: classes.arrow,
205
201
  scale: scale
206
202
  }), domain.axisLabel && _react["default"].createElement("foreignObject", {
207
- x: size.width + 10,
203
+ x: size.width + 15,
208
204
  y: scale.y(0) - 10,
209
205
  width: necessaryWidth,
210
206
  height: 20 * necessaryRows
@@ -260,11 +256,7 @@ function (_React$Component2) {
260
256
  var necessaryWidth = range.axisLabel ? (0, _utils.amountToIncreaseWidth)(range.axisLabel.length) : 0;
261
257
 
262
258
  var customTickFormat = function customTickFormat(value) {
263
- if (skipValues && skipValues.indexOf(value) >= 0) {
264
- return '';
265
- }
266
-
267
- return value;
259
+ return skipValues && skipValues.indexOf(value) >= 0 ? '' : value;
268
260
  };
269
261
 
270
262
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_axis.Axis, {
@@ -278,6 +270,7 @@ function (_React$Component2) {
278
270
  labelProps: {
279
271
  'data-pie-readable': false
280
272
  },
273
+ rangePadding: 8,
281
274
  tickLength: 10,
282
275
  tickClassName: classes.tick,
283
276
  tickFormat: customTickFormat,
@@ -285,7 +278,7 @@ function (_React$Component2) {
285
278
  var digits = value.toLocaleString().length || 1;
286
279
  return _objectSpread({}, tickLabelStyles, {
287
280
  dy: 4,
288
- dx: -8 - digits * 5,
281
+ dx: -4 - digits * 8,
289
282
  'data-pie-readable': false
290
283
  });
291
284
  },
@@ -306,7 +299,7 @@ function (_React$Component2) {
306
299
  scale: scale
307
300
  }), range.axisLabel && _react["default"].createElement("foreignObject", {
308
301
  x: scale.x(0) - necessaryWidth / 2,
309
- y: -25,
302
+ y: -30,
310
303
  width: necessaryWidth,
311
304
  height: "20"
312
305
  }, _react["default"].createElement(_renderUi.Readable, {
@@ -369,7 +362,7 @@ function (_React$Component3) {
369
362
  return {
370
363
  columnTicksValues: ticks,
371
364
  firstNegativeX: negative,
372
- distantceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))
365
+ distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))
373
366
  };
374
367
  });
375
368
 
@@ -391,7 +384,7 @@ function (_React$Component3) {
391
384
  return {
392
385
  rowTickValues: ticks,
393
386
  firstNegativeY: negative,
394
- distantceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))
387
+ distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))
395
388
  };
396
389
  });
397
390
 
@@ -405,34 +398,31 @@ function (_React$Component3) {
405
398
 
406
399
  var _ref5 = graphProps || {},
407
400
  domain = _ref5.domain,
408
- range = _ref5.range; // x
409
-
401
+ range = _ref5.range;
410
402
 
411
403
  var _this$xValues = this.xValues(),
412
404
  columnTicksValues = _this$xValues.columnTicksValues,
413
405
  firstNegativeX = _this$xValues.firstNegativeX,
414
- distantceFromOriginToFirstNegativeX = _this$xValues.distantceFromOriginToFirstNegativeX;
415
-
416
- var result = this.xValues(); // y
406
+ distanceFromOriginToFirstNegativeX = _this$xValues.distanceFromOriginToFirstNegativeX;
417
407
 
418
408
  var _this$yValues = this.yValues(),
419
409
  rowTickValues = _this$yValues.rowTickValues,
420
410
  firstNegativeY = _this$yValues.firstNegativeY,
421
- distantceFromOriginToFirstNegativeY = _this$yValues.distantceFromOriginToFirstNegativeY;
411
+ distanceFromOriginToFirstNegativeY = _this$yValues.distanceFromOriginToFirstNegativeY;
422
412
 
423
413
  var deltaAllowance = 6;
424
414
  var dy = 25;
425
- var skipValues = sharedValues(firstNegativeX, firstNegativeY, distantceFromOriginToFirstNegativeX, distantceFromOriginToFirstNegativeY, deltaAllowance, dy); // each axis has to be displayed only if the domain & range include it
415
+ var skipValues = sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy); // each axis has to be displayed only if the domain & range include it
426
416
 
427
417
  return _react["default"].createElement(_react["default"].Fragment, null, range.min <= 0 ? _react["default"].createElement(XAxis, _extends({}, this.props, {
428
418
  skipValues: skipValues,
429
419
  columnTicksValues: columnTicksValues,
430
- distantceFromOriginToFirstNegativeY: distantceFromOriginToFirstNegativeY,
420
+ distanceFromOriginToFirstNegativeY: distanceFromOriginToFirstNegativeY,
431
421
  dy: dy
432
422
  })) : null, domain.min <= 0 ? _react["default"].createElement(YAxis, _extends({}, this.props, {
433
423
  skipValues: skipValues,
434
424
  rowTickValues: rowTickValues,
435
- distantceFromOriginToFirstNegativeX: distantceFromOriginToFirstNegativeX
425
+ distanceFromOriginToFirstNegativeX: distanceFromOriginToFirstNegativeX
436
426
  })) : null);
437
427
  }
438
428
  }]);
@@ -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","distantceFromOriginToFirstNegativeX","distantceFromOriginToFirstNegativeY","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":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAMA,aAAa,GAAG;AAC3BC,EAAAA,aAAa,EAAEC,sBAAUC,MADE;AAE3BC,EAAAA,UAAU,EAAEF,sBAAUC;AAFK,CAAtB;;AAKP,IAAME,gBAAgB,GAAG;AACvBJ,EAAAA,aAAa,EAAE;AACbK,IAAAA,IAAI,EAAE,IADO;AAEbC,IAAAA,KAAK,EAAE,IAFM;AAGbC,IAAAA,EAAE,EAAE,IAHS;AAIbC,IAAAA,IAAI,EAAE;AAJO;AADQ,CAAzB;;AASA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK;AAAA,SAAK;AAC3BC,IAAAA,IAAI,EAAE;AACJC,MAAAA,MAAM,EAAEC,gBAAMC,OAAN,EADJ;AAEJC,MAAAA,WAAW,EAAE;AAFT,KADqB;AAK3BC,IAAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAEJ,gBAAMC,OAAN;AADD,KALoB;AAQ3BI,IAAAA,IAAI,EAAE;AACJD,MAAAA,IAAI,EAAEJ,gBAAMC,OAAN,EADF;AAEJ,kBAAY;AACVF,QAAAA,MAAM,EAAEC,gBAAMC,OAAN;AADE;AAFR,KARqB;AAc3BK,IAAAA,aAAa,EAAE;AACbC,MAAAA,QAAQ,EAAEV,KAAK,CAACW,UAAN,CAAiBD;AADd,KAdY;AAiB3BE,IAAAA,eAAe,EAAE;AACfC,MAAAA,OAAO,EAAE,CADM;AAEfC,MAAAA,MAAM,EAAE,CAFO;AAGfC,MAAAA,SAAS,EAAE,QAHI;AAIf,eAAS;AACPD,QAAAA,MAAM,EAAE,CADD;AAEPD,QAAAA,OAAO,EAAE;AAFF,OAJM;AAQfH,MAAAA,QAAQ,EAAEV,KAAK,CAACW,UAAN,CAAiBD;AARZ;AAjBU,GAAL;AAAA,CAAxB;;AA6BA,IAAMM,eAAe,GAAG;AACtBC,EAAAA,UAAU,EAAE,QADU;AAEtBP,EAAAA,QAAQ,EAAE,MAFY;AAGtBQ,EAAAA,MAAM,EAAE;AAHc,CAAxB;;AAMO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAC1BC,cAD0B,EAE1BC,cAF0B,EAG1BC,mCAH0B,EAI1BC,mCAJ0B,EAK1BC,cAL0B,EAM1BC,EAN0B,EAOvB;AACH,MAAIC,MAAM,GAAG,EAAb;;AAEA,MACEN,cAAc,KAAKC,cAAnB,IACAC,mCAAmC,GAAGE,cAAtC,GAAuDD,mCADvD,IAEAA,mCAAmC,GAAGD,mCAAmC,GAAGE,cAF5E,IAGAF,mCAAmC,GAAGE,cAAtC,GAAuDC,EAHvD,IAIAA,EAAE,GAAGH,mCAAmC,GAAGE,cAL7C,EAME;AACAE,IAAAA,MAAM,CAACC,IAAP,CAAYP,cAAZ;AACD;;AAED,SAAOM,MAAP;AACD,CArBM;;;;AAuBA,IAAME,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ;AAAA,SAAI,CAACA,QAAQ,IAAI,EAAb,EAAiBC,IAAjB,CAAsB,UAAAC,OAAO;AAAA,WAAIA,OAAO,GAAG,CAAd;AAAA,GAA7B,CAAJ;AAAA,CAAnC;;;;IAEMC,Q;;;;;;;;;;;;;6BAQF;AAAA,wBASH,KAAKC,KATF;AAAA,UAEL3C,aAFK,eAELA,aAFK;AAAA,UAGL4C,OAHK,eAGLA,OAHK;AAAA,UAILzC,UAJK,eAILA,UAJK;AAAA,UAKL0C,iBALK,eAKLA,iBALK;AAAA,UAMLC,UANK,eAMLA,UANK;AAAA,UAOLb,mCAPK,eAOLA,mCAPK;AAAA,UAQLE,EARK,eAQLA,EARK;;AAAA,iBAUgChC,UAAU,IAAI,EAV9C;AAAA,UAUC4C,KAVD,QAUCA,KAVD;AAAA,UAUQC,MAVR,QAUQA,MAVR;AAAA,UAUgBC,IAVhB,QAUgBA,IAVhB;AAAA,UAUsBC,KAVtB,QAUsBA,KAVtB,EAYP;AACA;;;AACA,UAAMC,UAAU,GACd,CAACH,MAAM,CAACI,SAAP,IAAoBF,KAAK,CAACE,SAA3B,KAAyCJ,MAAM,CAACK,GAAP,IAAc,CAAvD,IACK,GADL,4BACaR,iBADb,KAEIA,iBAHN,CAdO,CAkBP;;AAEA,UAAMS,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK,EAAI;AAC1B,YAAIC,CAAC,GAAGrB,EAAR;;AAEA,YAAIW,UAAU,IAAIA,UAAU,CAAC,CAAD,CAAV,KAAkBS,KAApC,EAA2C;AACzCC,UAAAA,CAAC,GAAGvB,mCAAmC,GAAG,CAA1C;AACD;;AAED,iCACKP,eADL;AAEE+B,UAAAA,UAAU,EAAE,QAFd;AAGED,UAAAA,CAAC,EAAEA,CAHL;AAIEE,UAAAA,EAAE,EAAEH,KAAK,KAAK,GAAV,GAAgB,CAAC,EAAjB,GAAsB,CAJ5B;AAKEpB,UAAAA,EAAE,EAAEoB,KAAK,KAAK,GAAV,GAAgB,CAAC,CAAjB,GAAqB;AAL3B;AAOD,OAdD;;AAgBA,UAAMI,aAAa,GAAG,uBAAWX,MAAM,CAACY,SAAlB,CAAtB;AACA,UAAMC,WAAW,GAAG,4BAAgBb,MAAM,CAACY,SAAvB,CAApB;AACA,UAAME,cAAc,GAAG,kCAAsBD,WAAtB,CAAvB;AAEA,aACE,gCAAC,iBAAD,CAAO,QAAP,QACE,gCAAC,UAAD;AACE,QAAA,iBAAiB,EAAEjB,OAAO,CAACjC,IAD7B;AAEE,QAAA,KAAK,EAAEoC,KAAK,CAACgB,CAFf;AAGE,QAAA,GAAG,EAAEhB,KAAK,CAACS,CAAN,CAAQ,CAAR,CAHP;AAIE,QAAA,IAAI,EAAE,CAJR;AAKE,QAAA,KAAK,EAAER,MAAM,CAACO,KALhB;AAME,QAAA,aAAa,EAAEX,OAAO,CAAC1B,IANzB;AAOE,QAAA,UAAU,EAAE,oBAAA8C,KAAK;AAAA,iBAAIA,KAAJ;AAAA,SAPnB;AAQE,QAAA,cAAc,EAAEV,UARlB;AASE,QAAA,UAAU,EAAEH;AATd,QADF,EAYGnD,aAAa,IAAIA,aAAa,CAACK,IAA/B,IACC,gCAAC,iBAAD;AAAO,QAAA,SAAS,EAAC,MAAjB;AAAwB,QAAA,CAAC,EAAE2C,MAAM,CAACK,GAAlC;AAAuC,QAAA,CAAC,EAAE,CAA1C;AAA6C,QAAA,SAAS,EAAET,OAAO,CAAC5B,KAAhE;AAAuE,QAAA,KAAK,EAAE+B;AAA9E,QAbJ,EAeG/C,aAAa,IAAIA,aAAa,CAACM,KAA/B,IACC,gCAAC,iBAAD;AAAO,QAAA,SAAS,EAAC,OAAjB;AAAyB,QAAA,CAAC,EAAE0C,MAAM,CAACiB,GAAnC;AAAwC,QAAA,CAAC,EAAE,CAA3C;AAA8C,QAAA,SAAS,EAAErB,OAAO,CAAC5B,KAAjE;AAAwE,QAAA,KAAK,EAAE+B;AAA/E,QAhBJ,EAkBGC,MAAM,CAACY,SAAP,IACC;AACE,QAAA,CAAC,EAAEX,IAAI,CAACiB,KAAL,GAAa,EADlB;AAEE,QAAA,CAAC,EAAEnB,KAAK,CAACS,CAAN,CAAQ,CAAR,IAAa,EAFlB;AAGE,QAAA,KAAK,EAAEM,cAHT;AAIE,QAAA,MAAM,EAAE,KAAKH;AAJf,SAME;AACE,QAAA,uBAAuB,EAAE;AAAEQ,UAAAA,MAAM,EAAEnB,MAAM,CAACY;AAAjB,SAD3B;AAEE,QAAA,SAAS,EAAEhB,OAAO,CAACzB;AAFrB,QANF,CAnBJ,CADF;AAkCD;;;;EAlF2BiD,kBAAMC,S;;;;gBAAvB3B,Q,iCAEN3C,a;AACH6C,EAAAA,OAAO,EAAE3C,sBAAUC,M;AACnBC,EAAAA,UAAU,EAAEmE,YAAMC,cAAN,CAAqBC;;;gBAJxB9B,Q,kBAMWtC,gB;;AA+ExB,IAAMqE,KAAK,GAAG,sBAAWhE,UAAX,EAAuBiC,QAAvB,CAAd;;IAEagC,Q;;;;;;;;;;;;;6BAOF;AAAA,yBACmE,KAAK/B,KADxE;AAAA,UACCC,OADD,gBACCA,OADD;AAAA,UACU5C,aADV,gBACUA,aADV;AAAA,UACyBG,UADzB,gBACyBA,UADzB;AAAA,UACqC2C,UADrC,gBACqCA,UADrC;AAAA,UACiD6B,aADjD,gBACiDA,aADjD;;AAAA,kBAEwBxE,UAAU,IAAI,EAFtC;AAAA,UAEC4C,KAFD,SAECA,KAFD;AAAA,UAEQG,KAFR,SAEQA,KAFR;AAAA,UAEeD,IAFf,SAEeA,IAFf;;AAIP,UAAMa,cAAc,GAAGZ,KAAK,CAACU,SAAN,GAAkB,kCAAsBV,KAAK,CAACU,SAAN,CAAgBgB,MAAtC,CAAlB,GAAkE,CAAzF;;AAEA,UAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAb,KAAK,EAAI;AAChC,YAAIlB,UAAU,IAAIA,UAAU,CAACgC,OAAX,CAAmBd,KAAnB,KAA6B,CAA/C,EAAkD;AAChD,iBAAO,EAAP;AACD;;AAED,eAAOA,KAAP;AACD,OAND;;AAQA,aACE,gCAAC,iBAAD,CAAO,QAAP,QACE,gCAAC,UAAD;AACE,QAAA,iBAAiB,EAAEpB,OAAO,CAACjC,IAD7B;AAEE,QAAA,WAAW,EAAE,MAFf;AAGE,QAAA,KAAK,EAAEoC,KAAK,CAACS,CAHf;AAIE,QAAA,GAAG,EAAE,CAJP;AAKE,QAAA,MAAM,EAAEP,IAAI,CAAC8B,MALf;AAME,QAAA,IAAI,EAAEhC,KAAK,CAACgB,CAAN,CAAQ,CAAR,CANR;AAOE,QAAA,KAAK,EAAEb,KAAK,CAACK,KAPf;AAQE,QAAA,UAAU,EAAE;AAAE,+BAAqB;AAAvB,SARd;AASE,QAAA,UAAU,EAAE,EATd;AAUE,QAAA,aAAa,EAAEX,OAAO,CAAC1B,IAVzB;AAWE,QAAA,UAAU,EAAE2D,gBAXd;AAYE,QAAA,cAAc,EAAE,wBAAAb,KAAK,EAAI;AACvB,cAAMgB,MAAM,GAAGhB,KAAK,CAACiB,cAAN,GAAuBL,MAAvB,IAAiC,CAAhD;AACA,mCACKlD,eADL;AAEES,YAAAA,EAAE,EAAE,CAFN;AAGEuB,YAAAA,EAAE,EAAE,CAAC,CAAD,GAAKsB,MAAM,GAAG,CAHpB;AAIE,iCAAqB;AAJvB;AAMD,SApBH;AAqBE,QAAA,QAAQ,EAAE,IArBZ;AAsBE,QAAA,cAAc,EAAE,QAtBlB;AAuBE,QAAA,UAAU,EAAEL;AAvBd,QADF,EA2BG3E,aAAa,IAAIA,aAAa,CAACQ,IAA/B,IACC,gCAAC,iBAAD;AAAO,QAAA,SAAS,EAAC,MAAjB;AAAwB,QAAA,CAAC,EAAE,CAA3B;AAA8B,QAAA,CAAC,EAAE0C,KAAK,CAACG,GAAvC;AAA4C,QAAA,SAAS,EAAET,OAAO,CAAC5B,KAA/D;AAAsE,QAAA,KAAK,EAAE+B;AAA7E,QA5BJ,EA8BG/C,aAAa,IAAIA,aAAa,CAACO,EAA/B,IACC,gCAAC,iBAAD;AAAO,QAAA,SAAS,EAAC,IAAjB;AAAsB,QAAA,CAAC,EAAE,CAAzB;AAA4B,QAAA,CAAC,EAAE2C,KAAK,CAACe,GAArC;AAA0C,QAAA,SAAS,EAAErB,OAAO,CAAC5B,KAA7D;AAAoE,QAAA,KAAK,EAAE+B;AAA3E,QA/BJ,EAiCGG,KAAK,CAACU,SAAN,IACC;AACE,QAAA,CAAC,EAAEb,KAAK,CAACgB,CAAN,CAAQ,CAAR,IAAaD,cAAc,GAAG,CADnC;AAEE,QAAA,CAAC,EAAE,CAAC,EAFN;AAGE,QAAA,KAAK,EAAEA,cAHT;AAIE,QAAA,MAAM,EAAC;AAJT,SAME,gCAAC,kBAAD;AAAU;AAAV,SACE;AACE,QAAA,uBAAuB,EAAE;AAAEK,UAAAA,MAAM,EAAEjB,KAAK,CAACU;AAAhB,SAD3B;AAEE,QAAA,SAAS,EAAEhB,OAAO,CAACtB;AAFrB,QADF,CANF,CAlCJ,CADF;AAmDD;;;;EAxE2B8C,kBAAMC,S;;;;gBAAvBK,Q,iCAEN3E,a;AACHI,EAAAA,UAAU,EAAEmE,YAAMC,cAAN,CAAqBC;;;gBAHxBE,Q,kBAKWtE,gB;;AAqExB,IAAM8E,KAAK,GAAG,sBAAWzE,UAAX,EAAuBiE,QAAvB,CAAd;;IAEqBS,I;;;;;;;;;;;;;;;;;;8DAQT,YAAM;AAAA,UACNhF,UADM,GACS,MAAKwC,KADd,CACNxC,UADM;;AAAA,kBAEYA,UAAU,IAAI,EAF1B;AAAA,UAEN4C,KAFM,SAENA,KAFM;AAAA,UAECC,MAFD,SAECA,MAFD;;AAGd,UAAI,CAACA,MAAD,IAAW,CAACD,KAAhB,EAAuB;AACrB;AACD;;AAED,UAAMqC,KAAK,GAAG,4CAAmBpC,MAAnB;AAA2BqC,QAAAA,IAAI,EAAErC,MAAM,CAACI;AAAxC,SAAd;AACA,UAAMkC,QAAQ,GAAGhD,kBAAkB,CAAC8C,KAAD,CAAnC;AAEA,aAAO;AACLvC,QAAAA,iBAAiB,EAAEuC,KADd;AAELtD,QAAAA,cAAc,EAAEwD,QAFX;AAGLtD,QAAAA,mCAAmC,EAAEuD,IAAI,CAACC,GAAL,CAASzC,KAAK,CAACS,CAAN,CAAQ,CAAR,IAAaT,KAAK,CAACS,CAAN,CAAQ8B,QAAR,CAAtB;AAHhC,OAAP;AAKD,K;;8DAES,YAAM;AAAA,UACNnF,UADM,GACS,MAAKwC,KADd,CACNxC,UADM;;AAAA,kBAEWA,UAAU,IAAI,EAFzB;AAAA,UAEN4C,KAFM,SAENA,KAFM;AAAA,UAECG,KAFD,SAECA,KAFD;;AAGd,UAAI,CAACA,KAAD,IAAU,CAACH,KAAf,EAAsB;AACpB;AACD;;AAED,UAAMqC,KAAK,GAAG,4CAAmBlC,KAAnB;AAA0BmC,QAAAA,IAAI,EAAEnC,KAAK,CAACE;AAAtC,SAAd;AACA,UAAMkC,QAAQ,GAAGhD,kBAAkB,CAAC8C,KAAD,CAAnC;AAEA,aAAO;AACLT,QAAAA,aAAa,EAAES,KADV;AAELrD,QAAAA,cAAc,EAAEuD,QAFX;AAGLrD,QAAAA,mCAAmC,EAAEsD,IAAI,CAACC,GAAL,CAASzC,KAAK,CAACgB,CAAN,CAAQ,CAAR,IAAahB,KAAK,CAACgB,CAAN,CAAQuB,QAAR,CAAtB;AAHhC,OAAP;AAKD,K;;;;;;;6BAEQ;AAAA,UACCnF,UADD,GACgB,KAAKwC,KADrB,CACCxC,UADD;;AAAA,kBAEmBA,UAAU,IAAI,EAFjC;AAAA,UAEC6C,MAFD,SAECA,MAFD;AAAA,UAESE,KAFT,SAESA,KAFT,EAIP;;;AAJO,0BASH,KAAKuC,OAAL,EATG;AAAA,UAML5C,iBANK,iBAMLA,iBANK;AAAA,UAOLf,cAPK,iBAOLA,cAPK;AAAA,UAQLE,mCARK,iBAQLA,mCARK;;AAUP,UAAMI,MAAM,GAAG,KAAKqD,OAAL,EAAf,CAVO,CAYP;;AAZO,0BAawE,KAAKC,OAAL,EAbxE;AAAA,UAaCf,aAbD,iBAaCA,aAbD;AAAA,UAagB5C,cAbhB,iBAagBA,cAbhB;AAAA,UAagCE,mCAbhC,iBAagCA,mCAbhC;;AAeP,UAAMC,cAAc,GAAG,CAAvB;AACA,UAAMC,EAAE,GAAG,EAAX;AAEA,UAAMW,UAAU,GAAGjB,YAAY,CAC7BC,cAD6B,EAE7BC,cAF6B,EAG7BC,mCAH6B,EAI7BC,mCAJ6B,EAK7BC,cAL6B,EAM7BC,EAN6B,CAA/B,CAlBO,CA2BP;;AACA,aACE,gCAAC,iBAAD,CAAO,QAAP,QACGe,KAAK,CAACG,GAAN,IAAa,CAAb,GACC,gCAAC,KAAD,eACM,KAAKV,KADX;AAEE,QAAA,UAAU,EAAEG,UAFd;AAGE,QAAA,iBAAiB,EAAED,iBAHrB;AAIE,QAAA,mCAAmC,EAAEZ,mCAJvC;AAKE,QAAA,EAAE,EAAEE;AALN,SADD,GAQG,IATN,EAUGa,MAAM,CAACK,GAAP,IAAc,CAAd,GACC,gCAAC,KAAD,eACM,KAAKV,KADX;AAEE,QAAA,UAAU,EAAEG,UAFd;AAGE,QAAA,aAAa,EAAE6B,aAHjB;AAIE,QAAA,mCAAmC,EAAE3C;AAJvC,SADD,GAOG,IAjBN,CADF;AAqBD;;;;EA3F+BoC,kBAAMC,S;;;;gBAAnBc,I,iCAEdpF,a;AACH6C,EAAAA,OAAO,EAAE3C,sBAAUC,M;AACnBC,EAAAA,UAAU,EAAEmE,YAAMC,cAAN,CAAqBC;;;gBAJhBW,I,kBAMG/E,gB","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 distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < distantceFromOriginToFirstNegativeY &&\n distantceFromOriginToFirstNegativeY < distantceFromOriginToFirstNegativeX + deltaAllowance &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distantceFromOriginToFirstNegativeX + 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 distantceFromOriginToFirstNegativeY,\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 let y = dy;\n\n if (skipValues && skipValues[0] === label) {\n y = distantceFromOriginToFirstNegativeY + 4;\n }\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 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 + 10}\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 => {\n if (skipValues && skipValues.indexOf(value) >= 0) {\n return '';\n }\n\n return value;\n };\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 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: -8 - digits * 5,\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={-25}\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}\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 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 distantceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\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 distantceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n\n // x\n const {\n columnTicksValues,\n firstNegativeX,\n distantceFromOriginToFirstNegativeX\n } = this.xValues();\n const result = this.xValues();\n\n // y\n const { rowTickValues, firstNegativeY, distantceFromOriginToFirstNegativeY } = this.yValues();\n\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\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 distantceFromOriginToFirstNegativeY={distantceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distantceFromOriginToFirstNegativeX={distantceFromOriginToFirstNegativeX}\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","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"}
package/lib/graph.js CHANGED
@@ -86,10 +86,10 @@ exports.graphPropTypes = graphPropTypes;
86
86
 
87
87
  var getMaskSize = function getMaskSize(size) {
88
88
  return {
89
- x: -10,
90
- y: -10,
91
- width: size.width + 20,
92
- height: size.height + 20
89
+ x: -23,
90
+ y: -23,
91
+ width: size.width + 46,
92
+ height: size.height + 46
93
93
  };
94
94
  };
95
95
 
package/lib/graph.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -10,\n y: -10,\n width: size.width + 20,\n height: size.height + 20\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}
1
+ {"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}