@carbon/charts 0.30.21 → 0.30.25

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.
Files changed (215) hide show
  1. package/CHANGELOG.md +337 -1035
  2. package/README.md +3 -0
  3. package/axis-chart.js +8 -14
  4. package/axis-chart.js.map +1 -1
  5. package/build/demo/{data/create-codesandbox.d.ts → create-codesandbox.d.ts} +16 -13
  6. package/build/demo/data/bar.d.ts +175 -1
  7. package/build/demo/data/bubble.d.ts +41 -0
  8. package/build/demo/data/donut.d.ts +23 -0
  9. package/build/demo/data/line.d.ts +70 -0
  10. package/build/demo/data/pie.d.ts +13 -0
  11. package/build/demo/data/scatter.d.ts +31 -0
  12. package/build/demo/data/step.d.ts +4 -0
  13. package/build/demo/data/time-series-axis.d.ts +55 -3
  14. package/build/src/components/axes/grid.d.ts +3 -3
  15. package/build/src/components/axes/two-dimensional-axes.d.ts +3 -0
  16. package/build/src/components/essentials/threshold.d.ts +17 -0
  17. package/build/src/components/graphs/bar.d.ts +1 -1
  18. package/build/src/components/graphs/scatter.d.ts +1 -0
  19. package/build/src/components/graphs/skeleton.d.ts +22 -0
  20. package/build/src/components/index.d.ts +2 -0
  21. package/build/src/interfaces/axis-scales.d.ts +22 -11
  22. package/build/src/interfaces/charts.d.ts +5 -0
  23. package/build/src/interfaces/components.d.ts +21 -0
  24. package/build/src/interfaces/enums.d.ts +9 -0
  25. package/build/src/interfaces/events.d.ts +7 -0
  26. package/build/src/model.d.ts +1 -0
  27. package/build/src/services/scales-cartesian.d.ts +9 -1
  28. package/build/stories/tutorials/event-listeners.d.ts +1 -0
  29. package/build/stories/tutorials/index.d.ts +2 -1
  30. package/bundle.js +1 -1
  31. package/chart.js +15 -24
  32. package/chart.js.map +1 -1
  33. package/charts/bar-grouped.js +6 -2
  34. package/charts/bar-grouped.js.map +1 -1
  35. package/charts/bar-simple.js +6 -2
  36. package/charts/bar-simple.js.map +1 -1
  37. package/charts/bar-stacked.js +6 -2
  38. package/charts/bar-stacked.js.map +1 -1
  39. package/charts/bubble.js +6 -2
  40. package/charts/bubble.js.map +1 -1
  41. package/charts/donut.js +6 -2
  42. package/charts/donut.js.map +1 -1
  43. package/charts/line.js +6 -2
  44. package/charts/line.js.map +1 -1
  45. package/charts/pie.js +6 -2
  46. package/charts/pie.js.map +1 -1
  47. package/charts/radar.js +1 -3
  48. package/charts/radar.js.map +1 -1
  49. package/charts/scatter.js +6 -2
  50. package/charts/scatter.js.map +1 -1
  51. package/components/axes/axis.js +93 -43
  52. package/components/axes/axis.js.map +1 -1
  53. package/components/axes/grid.d.ts +3 -3
  54. package/components/axes/grid.js +46 -23
  55. package/components/axes/grid.js.map +1 -1
  56. package/components/axes/ruler.js +7 -5
  57. package/components/axes/ruler.js.map +1 -1
  58. package/components/axes/two-dimensional-axes.d.ts +3 -0
  59. package/components/axes/two-dimensional-axes.js +35 -2
  60. package/components/axes/two-dimensional-axes.js.map +1 -1
  61. package/components/axes/zero-line.js +16 -1
  62. package/components/axes/zero-line.js.map +1 -1
  63. package/components/component.js +2 -4
  64. package/components/component.js.map +1 -1
  65. package/components/essentials/legend.js +46 -23
  66. package/components/essentials/legend.js.map +1 -1
  67. package/components/essentials/threshold.d.ts +17 -0
  68. package/components/essentials/threshold.js +171 -0
  69. package/components/essentials/threshold.js.map +1 -0
  70. package/components/essentials/title.js +6 -4
  71. package/components/essentials/title.js.map +1 -1
  72. package/components/essentials/tooltip-bar.js +39 -20
  73. package/components/essentials/tooltip-bar.js.map +1 -1
  74. package/components/essentials/tooltip-pie.js +4 -3
  75. package/components/essentials/tooltip-pie.js.map +1 -1
  76. package/components/essentials/tooltip-radar.js +6 -3
  77. package/components/essentials/tooltip-radar.js.map +1 -1
  78. package/components/essentials/tooltip-scatter.js +3 -1
  79. package/components/essentials/tooltip-scatter.js.map +1 -1
  80. package/components/essentials/tooltip.js +35 -15
  81. package/components/essentials/tooltip.js.map +1 -1
  82. package/components/graphs/bar-grouped.js +48 -20
  83. package/components/graphs/bar-grouped.js.map +1 -1
  84. package/components/graphs/bar-simple.js +39 -19
  85. package/components/graphs/bar-simple.js.map +1 -1
  86. package/components/graphs/bar-stacked.js +50 -28
  87. package/components/graphs/bar-stacked.js.map +1 -1
  88. package/components/graphs/bar.d.ts +1 -1
  89. package/components/graphs/bar.js +1 -1
  90. package/components/graphs/bar.js.map +1 -1
  91. package/components/graphs/bubble.js +22 -8
  92. package/components/graphs/bubble.js.map +1 -1
  93. package/components/graphs/donut.js +17 -3
  94. package/components/graphs/donut.js.map +1 -1
  95. package/components/graphs/line.js +14 -7
  96. package/components/graphs/line.js.map +1 -1
  97. package/components/graphs/pie.js +80 -44
  98. package/components/graphs/pie.js.map +1 -1
  99. package/components/graphs/radar.js +271 -140
  100. package/components/graphs/radar.js.map +1 -1
  101. package/components/graphs/scatter.d.ts +1 -0
  102. package/components/graphs/scatter.js +80 -19
  103. package/components/graphs/scatter.js.map +1 -1
  104. package/components/graphs/skeleton.d.ts +22 -0
  105. package/components/graphs/skeleton.js +256 -0
  106. package/components/graphs/skeleton.js.map +1 -0
  107. package/components/index.d.ts +2 -0
  108. package/components/index.js +2 -0
  109. package/components/index.js.map +1 -1
  110. package/components/layout/layout.js +38 -26
  111. package/components/layout/layout.js.map +1 -1
  112. package/components/layout/spacer.js +2 -1
  113. package/components/layout/spacer.js.map +1 -1
  114. package/configuration.js +17 -14
  115. package/configuration.js.map +1 -1
  116. package/demo/{data/create-codesandbox.d.ts → create-codesandbox.d.ts} +16 -13
  117. package/demo/{data/create-codesandbox.js → create-codesandbox.js} +24 -21
  118. package/demo/create-codesandbox.js.map +1 -0
  119. package/demo/data/bar.d.ts +175 -1
  120. package/demo/data/bar.js +189 -3
  121. package/demo/data/bar.js.map +1 -1
  122. package/demo/data/bubble.d.ts +41 -0
  123. package/demo/data/bubble.js +48 -3
  124. package/demo/data/bubble.js.map +1 -1
  125. package/demo/data/bundle.js +1 -1
  126. package/demo/data/donut.d.ts +23 -0
  127. package/demo/data/donut.js +25 -0
  128. package/demo/data/donut.js.map +1 -1
  129. package/demo/data/index.js +189 -7
  130. package/demo/data/index.js.map +1 -1
  131. package/demo/data/line.d.ts +70 -0
  132. package/demo/data/line.js +71 -0
  133. package/demo/data/line.js.map +1 -1
  134. package/demo/data/pie.d.ts +13 -0
  135. package/demo/data/pie.js +15 -0
  136. package/demo/data/pie.js.map +1 -1
  137. package/demo/data/radar.js.map +1 -1
  138. package/demo/data/scatter.d.ts +31 -0
  139. package/demo/data/scatter.js +33 -0
  140. package/demo/data/scatter.js.map +1 -1
  141. package/demo/data/step.d.ts +4 -0
  142. package/demo/data/step.js +15 -0
  143. package/demo/data/step.js.map +1 -1
  144. package/demo/data/time-series-axis.d.ts +55 -3
  145. package/demo/data/time-series-axis.js +62 -6
  146. package/demo/data/time-series-axis.js.map +1 -1
  147. package/demo/styles.css +342 -18
  148. package/demo/styles.css.map +1 -1
  149. package/demo/styles.min.css +1 -1
  150. package/demo/styles.min.css.map +1 -1
  151. package/demo/tsconfig.tsbuildinfo +232 -229
  152. package/index.js.map +1 -1
  153. package/interfaces/axis-scales.d.ts +22 -11
  154. package/interfaces/axis-scales.js.map +1 -1
  155. package/interfaces/charts.d.ts +5 -0
  156. package/interfaces/charts.js.map +1 -1
  157. package/interfaces/components.d.ts +21 -0
  158. package/interfaces/components.js.map +1 -1
  159. package/interfaces/enums.d.ts +9 -0
  160. package/interfaces/enums.js +10 -0
  161. package/interfaces/enums.js.map +1 -1
  162. package/interfaces/events.d.ts +7 -0
  163. package/interfaces/events.js +8 -0
  164. package/interfaces/events.js.map +1 -1
  165. package/model.d.ts +1 -0
  166. package/model.js +30 -16
  167. package/model.js.map +1 -1
  168. package/package.json +4 -2
  169. package/polyfills.js +7 -2
  170. package/polyfills.js.map +1 -1
  171. package/services/angle-utils.js +34 -9
  172. package/services/angle-utils.js.map +1 -1
  173. package/services/colors.js.map +1 -1
  174. package/services/curves.js +4 -2
  175. package/services/curves.js.map +1 -1
  176. package/services/essentials/dom-utils.js +4 -3
  177. package/services/essentials/dom-utils.js.map +1 -1
  178. package/services/essentials/transitions.js +3 -4
  179. package/services/essentials/transitions.js.map +1 -1
  180. package/services/scales-cartesian.d.ts +9 -1
  181. package/services/scales-cartesian.js +96 -23
  182. package/services/scales-cartesian.js.map +1 -1
  183. package/services/time-series.js +36 -19
  184. package/services/time-series.js.map +1 -1
  185. package/styles/components/_axis.scss +4 -0
  186. package/styles/components/_layout.scss +0 -1
  187. package/styles/components/_ruler.scss +5 -2
  188. package/styles/components/_skeleton.scss +56 -0
  189. package/styles/components/_threshold.scss +49 -0
  190. package/styles/components/_tooltip.scss +6 -5
  191. package/styles/components/index.scss +2 -0
  192. package/styles/graphs/_bubble.scss +1 -1
  193. package/styles/graphs/_radar.scss +4 -2
  194. package/styles/graphs/_scatter.scss +5 -1
  195. package/styles/mixins.scss +2 -2
  196. package/styles-g10.css +87 -4
  197. package/styles-g10.css.map +1 -1
  198. package/styles-g10.min.css +1 -1
  199. package/styles-g10.min.css.map +1 -1
  200. package/styles-g100.css +87 -4
  201. package/styles-g100.css.map +1 -1
  202. package/styles-g100.min.css +1 -1
  203. package/styles-g100.min.css.map +1 -1
  204. package/styles-g90.css +87 -4
  205. package/styles-g90.css.map +1 -1
  206. package/styles-g90.min.css +1 -1
  207. package/styles-g90.min.css.map +1 -1
  208. package/styles.css +87 -4
  209. package/styles.css.map +1 -1
  210. package/styles.min.css +1 -1
  211. package/styles.min.css.map +1 -1
  212. package/tools.js +25 -7
  213. package/tools.js.map +1 -1
  214. package/tsconfig.tsbuildinfo +169 -106
  215. package/demo/data/create-codesandbox.js.map +0 -1
@@ -0,0 +1,256 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ // Internal Imports
15
+ import { Component } from "../component";
16
+ import { DOMUtils } from "../../services";
17
+ import { Tools } from "../../tools";
18
+ import { Skeletons, CartesianOrientations } from "../../interfaces/enums";
19
+ // D3 Imports
20
+ import { scaleLinear } from "d3-scale";
21
+ import { easeLinear } from "d3-ease";
22
+ import { arc } from "d3-shape";
23
+ var Skeleton = /** @class */ (function (_super) {
24
+ __extends(Skeleton, _super);
25
+ function Skeleton() {
26
+ var _this = _super !== null && _super.apply(this, arguments) || this;
27
+ _this.type = "skeleton";
28
+ return _this;
29
+ }
30
+ Skeleton.prototype.render = function () {
31
+ var svg = this.parent;
32
+ var parent = svg.node().parentNode;
33
+ var _a = DOMUtils.getSVGElementSize(parent, {
34
+ useAttrs: true
35
+ }), width = _a.width, height = _a.height;
36
+ svg.attr("width", width).attr("height", height);
37
+ var isDataEmpty = this.model.isDataEmpty();
38
+ var isDataLoading = Tools.getProperty(this.model.getOptions(), "data", "loading");
39
+ if (isDataEmpty) {
40
+ this.renderSkeleton(isDataLoading);
41
+ }
42
+ else if (!isDataEmpty && isDataLoading) {
43
+ throw new Error("Something went wrong. You can't provided non-empty data and data loading together.");
44
+ }
45
+ else {
46
+ this.removeSkeleton();
47
+ }
48
+ };
49
+ Skeleton.prototype.renderSkeleton = function (showShimmerEffect) {
50
+ if (this.configs.skeleton === Skeletons.GRID) {
51
+ this.renderGridSkeleton(showShimmerEffect);
52
+ }
53
+ else if (this.configs.skeleton === Skeletons.VERT_OR_HORIZ) {
54
+ this.renderVertOrHorizSkeleton(showShimmerEffect);
55
+ }
56
+ else if (this.configs.skeleton === Skeletons.PIE) {
57
+ this.renderPieSkeleton(showShimmerEffect);
58
+ }
59
+ else if (this.configs.skeleton === Skeletons.DONUT) {
60
+ this.renderDonutSkeleton(showShimmerEffect);
61
+ }
62
+ else {
63
+ throw new Error("\"" + this.configs.skeleton + "\" is not a valid Skeleton type.");
64
+ }
65
+ };
66
+ Skeleton.prototype.renderGridSkeleton = function (showShimmerEffect) {
67
+ this.setScales();
68
+ this.drawBackdrop(showShimmerEffect);
69
+ this.drawXGrid(showShimmerEffect);
70
+ this.drawYGrid(showShimmerEffect);
71
+ if (showShimmerEffect) {
72
+ this.setShimmerEffect("shimmer-lines");
73
+ }
74
+ };
75
+ Skeleton.prototype.renderVertOrHorizSkeleton = function (showShimmerEffect) {
76
+ var orientation = this.services.cartesianScales.getOrientation();
77
+ this.setScales();
78
+ this.drawBackdrop(showShimmerEffect);
79
+ if (orientation === CartesianOrientations.VERTICAL) {
80
+ this.drawYGrid(showShimmerEffect);
81
+ }
82
+ if (orientation === CartesianOrientations.HORIZONTAL) {
83
+ this.drawXGrid(showShimmerEffect);
84
+ }
85
+ this.setShimmerEffect("shimmer-lines");
86
+ };
87
+ Skeleton.prototype.renderPieSkeleton = function (showShimmerEffect) {
88
+ var outerRadius = this.computeOuterRadius();
89
+ var innerRadius = 0;
90
+ this.drawRing(outerRadius, innerRadius, showShimmerEffect);
91
+ if (showShimmerEffect) {
92
+ this.setShimmerEffect("shimmer-areas");
93
+ }
94
+ };
95
+ Skeleton.prototype.renderDonutSkeleton = function (showShimmerEffect) {
96
+ var outerRadius = this.computeOuterRadius();
97
+ var innerRadius = this.computeInnerRadius();
98
+ this.drawRing(outerRadius, innerRadius, showShimmerEffect);
99
+ if (showShimmerEffect) {
100
+ this.setShimmerEffect("shimmer-areas");
101
+ }
102
+ };
103
+ Skeleton.prototype.setScales = function () {
104
+ var xRange = this.services.cartesianScales.getMainXScale().range();
105
+ var yRange = this.services.cartesianScales.getMainYScale().range();
106
+ this.xScale = scaleLinear()
107
+ .domain([0, 1])
108
+ .range(xRange);
109
+ this.yScale = scaleLinear()
110
+ .domain([0, 1])
111
+ .range(yRange);
112
+ };
113
+ Skeleton.prototype.drawBackdrop = function (showShimmerEffect) {
114
+ var svg = this.parent;
115
+ var parent = svg.node().parentNode;
116
+ var _a = DOMUtils.getSVGElementSize(parent, {
117
+ useAttrs: true
118
+ }), width = _a.width, height = _a.height;
119
+ this.backdrop = DOMUtils.appendOrSelect(svg, "svg.chart-skeleton.DAII")
120
+ .attr("width", width)
121
+ .attr("height", height);
122
+ var backdropRect = DOMUtils.appendOrSelect(this.backdrop, "rect.chart-skeleton-backdrop");
123
+ backdropRect.attr("width", "100%").attr("height", "100%");
124
+ var _b = this.xScale.range(), xScaleStart = _b[0], xScaleEnd = _b[1];
125
+ var _c = this.yScale.range(), yScaleEnd = _c[0], yScaleStart = _c[1];
126
+ this.backdrop
127
+ .merge(backdropRect)
128
+ .attr("x", xScaleStart)
129
+ .attr("y", yScaleStart);
130
+ backdropRect
131
+ .classed("shimmer-effect-lines", showShimmerEffect)
132
+ .classed("empty-state-lines", !showShimmerEffect);
133
+ };
134
+ Skeleton.prototype.drawXGrid = function (showShimmerEffect) {
135
+ var height = this.backdrop.attr("height");
136
+ var width = this.backdrop.attr("width");
137
+ var ticksNumber = Tools.getProperty(this.model.getOptions(), "grid", "x", "numberOfTicks");
138
+ var ticksValues = this.xScale.ticks(ticksNumber).map(function (d) { return d * width; });
139
+ var xGridG = DOMUtils.appendOrSelect(this.backdrop, "g.x.skeleton");
140
+ var update = xGridG.selectAll("line").data(ticksValues);
141
+ update
142
+ .enter()
143
+ .append("line")
144
+ .merge(update)
145
+ .attr("x1", function (d) { return d; })
146
+ .attr("x2", function (d) { return d; })
147
+ .attr("y1", 0)
148
+ .attr("y2", height);
149
+ xGridG
150
+ .selectAll("line")
151
+ .classed("shimmer-effect-lines", showShimmerEffect)
152
+ .classed("empty-state-lines", !showShimmerEffect);
153
+ };
154
+ Skeleton.prototype.drawYGrid = function (showShimmerEffect) {
155
+ var height = this.backdrop.attr("height");
156
+ var width = this.backdrop.attr("width");
157
+ var ticksNumber = Tools.getProperty(this.model.getOptions(), "grid", "y", "numberOfTicks");
158
+ var ticksValues = this.xScale.ticks(ticksNumber).map(function (d) { return d * height; });
159
+ var yGridG = DOMUtils.appendOrSelect(this.backdrop, "g.y.skeleton");
160
+ var update = yGridG.selectAll("line").data(ticksValues);
161
+ update
162
+ .enter()
163
+ .append("line")
164
+ .merge(update)
165
+ .attr("x1", 0)
166
+ .attr("x2", width)
167
+ .attr("y1", function (d) { return d; })
168
+ .attr("y2", function (d) { return d; });
169
+ yGridG
170
+ .selectAll("line")
171
+ .classed("shimmer-effect-lines", showShimmerEffect)
172
+ .classed("empty-state-lines", !showShimmerEffect);
173
+ };
174
+ Skeleton.prototype.drawRing = function (outerRadius, innerRadius, shimmer) {
175
+ if (shimmer === void 0) { shimmer = true; }
176
+ var svg = this.parent;
177
+ var _a = DOMUtils.getSVGElementSize(svg.node().parentNode, { useAttrs: true }), width = _a.width, height = _a.height;
178
+ var container = DOMUtils.appendOrSelect(svg, "svg.chart-skeleton")
179
+ .attr("width", width)
180
+ .attr("height", height);
181
+ var options = this.model.getOptions().pie;
182
+ var skeletonAreaContainer = DOMUtils.appendOrSelect(container, "rect.chart-skeleton-area-container")
183
+ .attr("width", width)
184
+ .attr("height", height)
185
+ .attr("fill", "none");
186
+ var arcPathGenerator = arc()
187
+ .innerRadius(innerRadius)
188
+ .outerRadius(outerRadius)
189
+ .startAngle(0)
190
+ .endAngle(Math.PI * 2);
191
+ // centering circle inside the container
192
+ var tcx = outerRadius + Math.abs(options.radiusOffset);
193
+ var tcy = outerRadius + (Math.min(width, height) - outerRadius * 2) / 2;
194
+ DOMUtils.appendOrSelect(container, "path")
195
+ .attr("class", "skeleton-area-shape")
196
+ .attr("transform", "translate(" + tcx + ", " + tcy + ")")
197
+ .attr("d", arcPathGenerator)
198
+ .classed("shimmer-effect-areas", shimmer)
199
+ .classed("empty-state-areas", !shimmer);
200
+ };
201
+ // same logic in pie
202
+ Skeleton.prototype.computeOuterRadius = function () {
203
+ var options = this.model.getOptions();
204
+ var _a = DOMUtils.getSVGElementSize(this.parent.node().parentNode, { useAttrs: true }), width = _a.width, height = _a.height;
205
+ var radius = Math.min(width, height) / 2;
206
+ return radius + options.pie.radiusOffset;
207
+ };
208
+ // same logic in donut
209
+ Skeleton.prototype.computeInnerRadius = function () {
210
+ return this.computeOuterRadius() * (3 / 4);
211
+ };
212
+ Skeleton.prototype.setShimmerEffect = function (gradientId) {
213
+ var animationDuration = 2000; // ms
214
+ var delay = 1000; // ms
215
+ var shimmerWidth = 0.2;
216
+ var stopBgShimmerClass = "stop-bg-shimmer";
217
+ var stopShimmerClass = "stop-shimmer";
218
+ var container = this.parent.select(".chart-skeleton");
219
+ var width = DOMUtils.getSVGElementSize(this.parent, {
220
+ useAttrs: true
221
+ }).width;
222
+ var startPoint = 0;
223
+ var endPoint = width;
224
+ // append the defs as first child of container
225
+ var defs = DOMUtils.appendOrSelect(container, "defs").lower();
226
+ var linearGradient = DOMUtils.appendOrSelect(defs, "linearGradient")
227
+ .attr("id", gradientId)
228
+ .attr("x1", startPoint - 3 * shimmerWidth * width)
229
+ .attr("x2", endPoint)
230
+ .attr("y1", 0)
231
+ .attr("y2", 0)
232
+ .attr("gradientUnits", "userSpaceOnUse")
233
+ .attr("gradientTransform", "translate(0, 0)");
234
+ var stops = "\n\t\t\t<stop class=\"" + stopBgShimmerClass + "\" offset=\"" + startPoint + "\"></stop>\n\t\t\t<stop class=\"" + stopShimmerClass + "\" offset=\"" + (startPoint + shimmerWidth) + "\"></stop>\n\t\t\t<stop class=\"" + stopBgShimmerClass + "\" offset=\"" + (startPoint +
235
+ 2 * shimmerWidth) + "\"></stop>\n\t\t";
236
+ linearGradient.html(stops);
237
+ repeat();
238
+ function repeat() {
239
+ linearGradient
240
+ .attr("gradientTransform", "translate(" + (startPoint - 3 * shimmerWidth * width) + ", 0)")
241
+ .transition()
242
+ .duration(animationDuration)
243
+ .delay(delay)
244
+ .ease(easeLinear)
245
+ .attr("gradientTransform", "translate(" + (endPoint + 3 * shimmerWidth * width) + ", 0)")
246
+ .on("end", repeat);
247
+ }
248
+ };
249
+ Skeleton.prototype.removeSkeleton = function () {
250
+ var container = this.parent.select(".chart-skeleton");
251
+ container.remove();
252
+ };
253
+ return Skeleton;
254
+ }(Component));
255
+ export { Skeleton };
256
+ //# sourceMappingURL=../../../src/components/graphs/skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["skeleton.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport { DOMUtils } from \"../../services\";\nimport { Tools } from \"../../tools\";\nimport { Skeletons, CartesianOrientations } from \"../../interfaces/enums\";\n\n// D3 Imports\nimport { scaleLinear } from \"d3-scale\";\nimport { easeLinear } from \"d3-ease\";\nimport { arc } from \"d3-shape\";\n\nexport class Skeleton extends Component {\n\ttype = \"skeleton\";\n\txScale: any;\n\tyScale: any;\n\tbackdrop: any;\n\n\trender() {\n\t\tconst svg = this.parent;\n\t\tconst parent = svg.node().parentNode;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(parent, {\n\t\t\tuseAttrs: true\n\t\t});\n\t\tsvg.attr(\"width\", width).attr(\"height\", height);\n\n\t\tconst isDataEmpty = this.model.isDataEmpty();\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t\"data\",\n\t\t\t\"loading\"\n\t\t);\n\n\t\tif (isDataEmpty) {\n\t\t\tthis.renderSkeleton(isDataLoading);\n\t\t} else if (!isDataEmpty && isDataLoading) {\n\t\t\tthrow new Error(\n\t\t\t\t`Something went wrong. You can't provided non-empty data and data loading together.`\n\t\t\t);\n\t\t} else {\n\t\t\tthis.removeSkeleton();\n\t\t}\n\t}\n\n\trenderSkeleton(showShimmerEffect: boolean) {\n\t\tif (this.configs.skeleton === Skeletons.GRID) {\n\t\t\tthis.renderGridSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.VERT_OR_HORIZ) {\n\t\t\tthis.renderVertOrHorizSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.PIE) {\n\t\t\tthis.renderPieSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.DONUT) {\n\t\t\tthis.renderDonutSkeleton(showShimmerEffect);\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`\"${this.configs.skeleton}\" is not a valid Skeleton type.`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderGridSkeleton(showShimmerEffect: boolean) {\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tthis.drawXGrid(showShimmerEffect);\n\t\tthis.drawYGrid(showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect(\"shimmer-lines\");\n\t\t}\n\t}\n\n\trenderVertOrHorizSkeleton(showShimmerEffect: boolean) {\n\t\tconst orientation = this.services.cartesianScales.getOrientation();\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tthis.drawYGrid(showShimmerEffect);\n\t\t}\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\tthis.drawXGrid(showShimmerEffect);\n\t\t}\n\t\tthis.setShimmerEffect(\"shimmer-lines\");\n\t}\n\n\trenderPieSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = 0;\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect(\"shimmer-areas\");\n\t\t}\n\t}\n\n\trenderDonutSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = this.computeInnerRadius();\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect(\"shimmer-areas\");\n\t\t}\n\t}\n\n\tsetScales() {\n\t\tconst xRange = this.services.cartesianScales.getMainXScale().range();\n\t\tconst yRange = this.services.cartesianScales.getMainYScale().range();\n\t\tthis.xScale = scaleLinear()\n\t\t\t.domain([0, 1])\n\t\t\t.range(xRange);\n\t\tthis.yScale = scaleLinear()\n\t\t\t.domain([0, 1])\n\t\t\t.range(yRange);\n\t}\n\n\tdrawBackdrop(showShimmerEffect: boolean) {\n\t\tconst svg = this.parent;\n\t\tconst parent = svg.node().parentNode;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(parent, {\n\t\t\tuseAttrs: true\n\t\t});\n\n\t\tthis.backdrop = DOMUtils.appendOrSelect(svg, \"svg.chart-skeleton.DAII\")\n\t\t\t.attr(\"width\", width)\n\t\t\t.attr(\"height\", height);\n\n\t\tconst backdropRect = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t\"rect.chart-skeleton-backdrop\"\n\t\t);\n\t\tbackdropRect.attr(\"width\", \"100%\").attr(\"height\", \"100%\");\n\n\t\tconst [xScaleStart, xScaleEnd] = this.xScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = this.yScale.range();\n\n\t\tthis.backdrop\n\t\t\t.merge(backdropRect)\n\t\t\t.attr(\"x\", xScaleStart)\n\t\t\t.attr(\"y\", yScaleStart);\n\n\t\tbackdropRect\n\t\t\t.classed(\"shimmer-effect-lines\", showShimmerEffect)\n\t\t\t.classed(\"empty-state-lines\", !showShimmerEffect);\n\t}\n\n\tdrawXGrid(showShimmerEffect: boolean) {\n\t\tconst height = this.backdrop.attr(\"height\");\n\t\tconst width = this.backdrop.attr(\"width\");\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t\"grid\",\n\t\t\t\"x\",\n\t\t\t\"numberOfTicks\"\n\t\t);\n\t\tconst ticksValues = this.xScale.ticks(ticksNumber).map(d => d * width);\n\n\t\tconst xGridG = DOMUtils.appendOrSelect(this.backdrop, \"g.x.skeleton\");\n\t\tconst update = xGridG.selectAll(\"line\").data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append(\"line\")\n\t\t\t.merge(update)\n\t\t\t.attr(\"x1\", d => d)\n\t\t\t.attr(\"x2\", d => d)\n\t\t\t.attr(\"y1\", 0)\n\t\t\t.attr(\"y2\", height);\n\n\t\txGridG\n\t\t\t.selectAll(\"line\")\n\t\t\t.classed(\"shimmer-effect-lines\", showShimmerEffect)\n\t\t\t.classed(\"empty-state-lines\", !showShimmerEffect);\n\t}\n\n\tdrawYGrid(showShimmerEffect: boolean) {\n\t\tconst height = this.backdrop.attr(\"height\");\n\t\tconst width = this.backdrop.attr(\"width\");\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t\"grid\",\n\t\t\t\"y\",\n\t\t\t\"numberOfTicks\"\n\t\t);\n\t\tconst ticksValues = this.xScale.ticks(ticksNumber).map(d => d * height);\n\n\t\tconst yGridG = DOMUtils.appendOrSelect(this.backdrop, \"g.y.skeleton\");\n\t\tconst update = yGridG.selectAll(\"line\").data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append(\"line\")\n\t\t\t.merge(update)\n\t\t\t.attr(\"x1\", 0)\n\t\t\t.attr(\"x2\", width)\n\t\t\t.attr(\"y1\", d => d)\n\t\t\t.attr(\"y2\", d => d);\n\n\t\tyGridG\n\t\t\t.selectAll(\"line\")\n\t\t\t.classed(\"shimmer-effect-lines\", showShimmerEffect)\n\t\t\t.classed(\"empty-state-lines\", !showShimmerEffect);\n\t}\n\n\tdrawRing(outerRadius: number, innerRadius: number, shimmer = true) {\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(\n\t\t\tsvg.node().parentNode,\n\t\t\t{ useAttrs: true }\n\t\t);\n\n\t\tconst container = DOMUtils.appendOrSelect(svg, \"svg.chart-skeleton\")\n\t\t\t.attr(\"width\", width)\n\t\t\t.attr(\"height\", height);\n\t\tconst options = this.model.getOptions().pie;\n\n\t\tconst skeletonAreaContainer = DOMUtils.appendOrSelect(\n\t\t\tcontainer,\n\t\t\t\"rect.chart-skeleton-area-container\"\n\t\t)\n\t\t\t.attr(\"width\", width)\n\t\t\t.attr(\"height\", height)\n\t\t\t.attr(\"fill\", \"none\");\n\n\t\tconst arcPathGenerator = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(outerRadius)\n\t\t\t.startAngle(0)\n\t\t\t.endAngle(Math.PI * 2);\n\n\t\t// centering circle inside the container\n\t\tconst tcx = outerRadius + Math.abs(options.radiusOffset);\n\t\tconst tcy =\n\t\t\touterRadius + (Math.min(width, height) - outerRadius * 2) / 2;\n\n\t\tDOMUtils.appendOrSelect(container, \"path\")\n\t\t\t.attr(\"class\", \"skeleton-area-shape\")\n\t\t\t.attr(\"transform\", `translate(${tcx}, ${tcy})`)\n\t\t\t.attr(\"d\", arcPathGenerator)\n\t\t\t.classed(\"shimmer-effect-areas\", shimmer)\n\t\t\t.classed(\"empty-state-areas\", !shimmer);\n\t}\n\n\t// same logic in pie\n\tcomputeOuterRadius() {\n\t\tconst options = this.model.getOptions();\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(\n\t\t\tthis.parent.node().parentNode,\n\t\t\t{ useAttrs: true }\n\t\t);\n\t\tconst radius = Math.min(width, height) / 2;\n\t\treturn radius + options.pie.radiusOffset;\n\t}\n\n\t// same logic in donut\n\tcomputeInnerRadius() {\n\t\treturn this.computeOuterRadius() * (3 / 4);\n\t}\n\n\tsetShimmerEffect(gradientId: string) {\n\t\tconst animationDuration = 2000; // ms\n\t\tconst delay = 1000; // ms\n\t\tconst shimmerWidth = 0.2;\n\t\tconst stopBgShimmerClass = \"stop-bg-shimmer\";\n\t\tconst stopShimmerClass = \"stop-shimmer\";\n\t\tconst container = this.parent.select(\".chart-skeleton\");\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true\n\t\t});\n\t\tconst startPoint = 0;\n\t\tconst endPoint = width;\n\n\t\t// append the defs as first child of container\n\t\tconst defs = DOMUtils.appendOrSelect(container, \"defs\").lower();\n\t\tconst linearGradient = DOMUtils.appendOrSelect(defs, \"linearGradient\")\n\t\t\t.attr(\"id\", gradientId)\n\t\t\t.attr(\"x1\", startPoint - 3 * shimmerWidth * width)\n\t\t\t.attr(\"x2\", endPoint)\n\t\t\t.attr(\"y1\", 0)\n\t\t\t.attr(\"y2\", 0)\n\t\t\t.attr(\"gradientUnits\", \"userSpaceOnUse\")\n\t\t\t.attr(\"gradientTransform\", `translate(0, 0)`);\n\t\tconst stops = `\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${startPoint}\"></stop>\n\t\t\t<stop class=\"${stopShimmerClass}\" offset=\"${startPoint + shimmerWidth}\"></stop>\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${startPoint +\n\t\t\t2 * shimmerWidth}\"></stop>\n\t\t`;\n\t\tlinearGradient.html(stops);\n\n\t\trepeat();\n\t\tfunction repeat() {\n\t\t\tlinearGradient\n\t\t\t\t.attr(\n\t\t\t\t\t\"gradientTransform\",\n\t\t\t\t\t`translate(${startPoint - 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.transition()\n\t\t\t\t.duration(animationDuration)\n\t\t\t\t.delay(delay)\n\t\t\t\t.ease(easeLinear)\n\t\t\t\t.attr(\n\t\t\t\t\t\"gradientTransform\",\n\t\t\t\t\t`translate(${endPoint + 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.on(\"end\", repeat);\n\t\t}\n\t}\n\n\tremoveSkeleton() {\n\t\tconst container = this.parent.select(\".chart-skeleton\");\n\t\tcontainer.remove();\n\t}\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  export * from "./component";
2
2
  export * from "./essentials/legend";
3
+ export * from "./essentials/threshold";
3
4
  export * from "./essentials/title";
4
5
  export * from "./essentials/tooltip";
5
6
  export * from "./essentials/tooltip-bar";
@@ -14,6 +15,7 @@ export * from "./graphs/line";
14
15
  export * from "./graphs/scatter";
15
16
  export * from "./graphs/pie";
16
17
  export * from "./graphs/donut";
18
+ export * from "./graphs/skeleton";
17
19
  export * from "./layout/spacer";
18
20
  export * from "./layout/layout";
19
21
  export * from "./axes/two-dimensional-axes";
@@ -1,6 +1,7 @@
1
1
  export * from "./component";
2
2
  // ESSENTIALS
3
3
  export * from "./essentials/legend";
4
+ export * from "./essentials/threshold";
4
5
  export * from "./essentials/title";
5
6
  export * from "./essentials/tooltip";
6
7
  export * from "./essentials/tooltip-bar";
@@ -16,6 +17,7 @@ export * from "./graphs/line";
16
17
  export * from "./graphs/scatter";
17
18
  export * from "./graphs/pie";
18
19
  export * from "./graphs/donut";
20
+ export * from "./graphs/skeleton";
19
21
  // Layout
20
22
  export * from "./layout/spacer";
21
23
  export * from "./layout/layout";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAE3C,SAAS;AACT,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,SAAS;AACT,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,OAAO;AACP,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./component\";\n\n// ESSENTIALS\nexport * from \"./essentials/legend\";\nexport * from \"./essentials/title\";\nexport * from \"./essentials/tooltip\";\nexport * from \"./essentials/tooltip-bar\";\nexport * from \"./essentials/tooltip-pie\";\nexport * from \"./essentials/tooltip-scatter\";\nexport * from \"./essentials/tooltip-radar\";\n\n// GRAPHS\nexport * from \"./graphs/bar-simple\";\nexport * from \"./graphs/bar-grouped\";\nexport * from \"./graphs/bar-stacked\";\nexport * from \"./graphs/bubble\";\nexport * from \"./graphs/line\";\nexport * from \"./graphs/scatter\";\nexport * from \"./graphs/pie\";\nexport * from \"./graphs/donut\";\n\n// Layout\nexport * from \"./layout/spacer\";\nexport * from \"./layout/layout\";\n\n// MISC\nexport * from \"./axes/two-dimensional-axes\";\nexport * from \"./axes/axis\";\nexport * from \"./axes/grid\";\nexport * from \"./axes/ruler\";\nexport * from \"./axes/zero-line\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAE3C,SAAS;AACT,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAElC,SAAS;AACT,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,OAAO;AACP,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./component\";\n\n// ESSENTIALS\nexport * from \"./essentials/legend\";\nexport * from \"./essentials/threshold\";\nexport * from \"./essentials/title\";\nexport * from \"./essentials/tooltip\";\nexport * from \"./essentials/tooltip-bar\";\nexport * from \"./essentials/tooltip-pie\";\nexport * from \"./essentials/tooltip-scatter\";\nexport * from \"./essentials/tooltip-radar\";\n\n// GRAPHS\nexport * from \"./graphs/bar-simple\";\nexport * from \"./graphs/bar-grouped\";\nexport * from \"./graphs/bar-stacked\";\nexport * from \"./graphs/bubble\";\nexport * from \"./graphs/line\";\nexport * from \"./graphs/scatter\";\nexport * from \"./graphs/pie\";\nexport * from \"./graphs/donut\";\nexport * from \"./graphs/skeleton\";\n\n// Layout\nexport * from \"./layout/spacer\";\nexport * from \"./layout/layout\";\n\n// MISC\nexport * from \"./axes/two-dimensional-axes\";\nexport * from \"./axes/axis\";\nexport * from \"./axes/grid\";\nexport * from \"./axes/ruler\";\nexport * from \"./axes/zero-line\";\n"]}
@@ -30,8 +30,8 @@ var LayoutComponent = /** @class */ (function (_super) {
30
30
  _this._instanceID = LayoutComponent.instanceID++;
31
31
  // Pass children data to the hierarchy layout
32
32
  // And calculate sum of sizes
33
- var directionIsReversed = (_this.configs.direction === LayoutDirection.ROW_REVERSE) ||
34
- (_this.configs.direction === LayoutDirection.COLUMN_REVERSE);
33
+ var directionIsReversed = _this.configs.direction === LayoutDirection.ROW_REVERSE ||
34
+ _this.configs.direction === LayoutDirection.COLUMN_REVERSE;
35
35
  if (directionIsReversed) {
36
36
  _this.children = _this.children.reverse();
37
37
  }
@@ -51,7 +51,8 @@ var LayoutComponent = /** @class */ (function (_super) {
51
51
  svg.selectAll("svg.layout-child-" + this._instanceID)
52
52
  .filter(function (d) {
53
53
  var growth = Tools.getProperty(d, "data", "growth", "x");
54
- return growth === LayoutGrowth.PREFERRED || growth === LayoutGrowth.FIXED;
54
+ return (growth === LayoutGrowth.PREFERRED ||
55
+ growth === LayoutGrowth.FIXED);
55
56
  })
56
57
  .each(function (d) {
57
58
  sum += d.data.size;
@@ -60,7 +61,8 @@ var LayoutComponent = /** @class */ (function (_super) {
60
61
  };
61
62
  LayoutComponent.prototype.getNumOfStretchChildren = function () {
62
63
  var svg = this.parent;
63
- return svg.selectAll("svg.layout-child-" + this._instanceID)
64
+ return svg
65
+ .selectAll("svg.layout-child-" + this._instanceID)
64
66
  .filter(function (d) {
65
67
  var growth = Tools.getProperty(d, "data", "growth", "x");
66
68
  return growth === LayoutGrowth.STRETCH;
@@ -72,22 +74,27 @@ var LayoutComponent = /** @class */ (function (_super) {
72
74
  if (animate === void 0) { animate = true; }
73
75
  // Get parent SVG to render inside of
74
76
  var svg = this.parent;
75
- var _a = DOMUtils.getSVGElementSize(svg, { useAttrs: true }), width = _a.width, height = _a.height;
77
+ var _a = DOMUtils.getSVGElementSize(svg, {
78
+ useAttrs: true
79
+ }), width = _a.width, height = _a.height;
76
80
  var root = hierarchy({
77
81
  children: this.children
78
- })
79
- .sum(function (d) { return d.size; });
82
+ }).sum(function (d) { return d.size; });
80
83
  // Grab the correct treemap tile function based on direction
81
- var tileType = (this.configs.direction === LayoutDirection.ROW || this.configs.direction === LayoutDirection.ROW_REVERSE)
82
- ? treemapDice : treemapSlice;
84
+ var tileType = this.configs.direction === LayoutDirection.ROW ||
85
+ this.configs.direction === LayoutDirection.ROW_REVERSE
86
+ ? treemapDice
87
+ : treemapSlice;
83
88
  // Compute the position of all elements within the layout
84
89
  treemap()
85
90
  .tile(tileType)
86
91
  .size([width, height])(root);
87
92
  // TODORF - Remove
88
- var horizontal = (this.configs.direction === LayoutDirection.ROW || this.configs.direction === LayoutDirection.ROW_REVERSE);
93
+ var horizontal = this.configs.direction === LayoutDirection.ROW ||
94
+ this.configs.direction === LayoutDirection.ROW_REVERSE;
89
95
  // Add new SVGs to the DOM for each layout child
90
- var updatedSVGs = svg.selectAll("svg.layout-child-" + this._instanceID)
96
+ var updatedSVGs = svg
97
+ .selectAll("svg.layout-child-" + this._instanceID)
91
98
  .data(root.leaves(), function (d) { return d.data.id; });
92
99
  updatedSVGs
93
100
  .attr("width", function (d) { return d.x1 - d.x0; })
@@ -95,10 +102,13 @@ var LayoutComponent = /** @class */ (function (_super) {
95
102
  var enteringSVGs = updatedSVGs
96
103
  .enter()
97
104
  .append("svg")
98
- .attr("class", function (d) { return "layout-child layout-child-" + _this._instanceID + " " + d.data.id; })
105
+ .attr("class", function (d) {
106
+ return "layout-child layout-child-" + _this._instanceID + " " + d.data.id;
107
+ })
99
108
  .attr("x", function (d) { return d.x0; })
100
109
  .attr("y", function (d) { return d.y0; });
101
- enteringSVGs.merge(svg.selectAll("svg.layout-child-" + this._instanceID))
110
+ enteringSVGs
111
+ .merge(svg.selectAll("svg.layout-child-" + this._instanceID))
102
112
  .each(function (d) {
103
113
  var _this = this;
104
114
  // Set parent component for each child
@@ -106,25 +116,25 @@ var LayoutComponent = /** @class */ (function (_super) {
106
116
  itemComponent.setParent(select(_this));
107
117
  // Render preffered & fixed items
108
118
  var growth = Tools.getProperty(d, "data", "growth", "x");
109
- if (growth === LayoutGrowth.PREFERRED || growth === LayoutGrowth.FIXED) {
119
+ if (growth === LayoutGrowth.PREFERRED ||
120
+ growth === LayoutGrowth.FIXED) {
110
121
  itemComponent.render(animate);
111
122
  }
112
123
  });
113
124
  });
114
- svg.selectAll("svg.layout-child-" + this._instanceID)
115
- .each(function (d) {
125
+ svg.selectAll("svg.layout-child-" + this._instanceID).each(function (d) {
116
126
  // Calculate preffered children sizes after internal rendering
117
127
  var growth = Tools.getProperty(d, "data", "growth", "x");
118
128
  var matchingSVGDimensions = DOMUtils.getSVGElementSize(select(this), { useBBox: true });
119
129
  if (growth === LayoutGrowth.PREFERRED) {
120
- var matchingSVGWidth = horizontal ? matchingSVGDimensions.width : matchingSVGDimensions.height;
130
+ var matchingSVGWidth = horizontal
131
+ ? matchingSVGDimensions.width
132
+ : matchingSVGDimensions.height;
121
133
  var svgWidth = horizontal ? width : height;
122
134
  d.data.size = (matchingSVGWidth / svgWidth) * 100;
123
135
  }
124
136
  });
125
- updatedSVGs
126
- .exit()
127
- .remove();
137
+ updatedSVGs.exit().remove();
128
138
  // Run through stretch x-items
129
139
  this.children
130
140
  .filter(function (child) {
@@ -132,22 +142,22 @@ var LayoutComponent = /** @class */ (function (_super) {
132
142
  return growth === LayoutGrowth.STRETCH;
133
143
  })
134
144
  .forEach(function (child, i) {
135
- child.size = (100 - (+_this.getPreferedAndFixedSizeSum())) / (+_this.getNumOfStretchChildren());
145
+ child.size =
146
+ (100 - +_this.getPreferedAndFixedSizeSum()) /
147
+ +_this.getNumOfStretchChildren();
136
148
  });
137
149
  // Pass children data to the hierarchy layout
138
150
  // And calculate sum of sizes
139
151
  root = hierarchy({
140
152
  children: this.children
141
- })
142
- .sum(function (d) { return d.size; });
153
+ }).sum(function (d) { return d.size; });
143
154
  // Compute the position of all elements within the layout
144
155
  treemap()
145
156
  .tile(tileType)
146
157
  .size([width, height])
147
158
  .padding(0)(root);
148
159
  // Add new SVGs to the DOM for each layout child
149
- svg
150
- .selectAll("svg.layout-child-" + this._instanceID)
160
+ svg.selectAll("svg.layout-child-" + this._instanceID)
151
161
  .data(root.leaves(), function (d) { return d.data.id; })
152
162
  .attr("x", function (d) { return d.x0; })
153
163
  .attr("y", function (d) { return d.y0; })
@@ -173,7 +183,9 @@ var LayoutComponent = /** @class */ (function (_super) {
173
183
  LayoutComponent.prototype.setServices = function (newObj) {
174
184
  _super.prototype.setServices.call(this, newObj);
175
185
  this.children.forEach(function (child) {
176
- child.components.forEach(function (component) { return component.setServices(newObj); });
186
+ child.components.forEach(function (component) {
187
+ return component.setServices(newObj);
188
+ });
177
189
  });
178
190
  };
179
191
  LayoutComponent.prototype.destroy = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["layout.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport {\n\tLayoutDirection,\n\tLayoutGrowth,\n\tLayoutComponentChild,\n\tLayoutConfigs\n} from \"../../interfaces/index\";\nimport { Tools } from \"../../tools\";\nimport { DOMUtils } from \"../../services\";\nimport { ChartModel } from \"../../model\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport {\n\thierarchy,\n\ttreemap,\n\ttreemapSlice,\n\ttreemapDice\n} from \"d3-hierarchy\";\n\n// TODO - What if there is no \"growth\" object?\nexport class LayoutComponent extends Component {\n\t// Give every layout component a distinct ID\n\t// so they don't interfere when querying elements\n\tstatic instanceID = Math.floor(Math.random() * 99999999999);\n\n\ttype = \"layout\";\n\n\tchildren: LayoutComponentChild[];\n\n\tprivate _instanceID: number;\n\n\tconstructor(model: ChartModel, services: any, children: LayoutComponentChild[], configs?: LayoutConfigs) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.configs = configs;\n\t\tthis.children = children;\n\n\t\tthis._instanceID = LayoutComponent.instanceID++;\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\tconst directionIsReversed = (this.configs.direction === LayoutDirection.ROW_REVERSE) ||\n\t\t\t(this.configs.direction === LayoutDirection.COLUMN_REVERSE);\n\t\tif (directionIsReversed) {\n\t\t\tthis.children = this.children.reverse();\n\t\t}\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => {\n\t\t\t\tcomponent.init();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetPreferedAndFixedSizeSum(): number {\n\t\tconst svg = this.parent;\n\t\tlet sum = 0;\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\treturn growth === LayoutGrowth.PREFERRED || growth === LayoutGrowth.FIXED;\n\t\t\t})\n\t\t\t.each(function(d: any) {\n\t\t\t\tsum += d.data.size;\n\t\t\t});\n\n\t\treturn sum;\n\t}\n\n\tgetNumOfStretchChildren(): number {\n\t\tconst svg = this.parent;\n\n\t\treturn svg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.size();\n\t}\n\n\trender(animate = true) {\n\t\t// Get parent SVG to render inside of\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, { useAttrs: true });\n\n\t\tlet root = hierarchy({\n\t\t\tchildren: this.children\n\t\t})\n\t\t\t.sum((d: any) => d.size);\n\n\t\t// Grab the correct treemap tile function based on direction\n\t\tconst tileType = (this.configs.direction === LayoutDirection.ROW || this.configs.direction === LayoutDirection.ROW_REVERSE)\n\t\t\t? treemapDice : treemapSlice;\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap()\n\t\t\t.tile(tileType)\n\t\t\t.size([width, height])\n\t\t\t(root);\n\n\t\t// TODORF - Remove\n\t\tconst horizontal = (this.configs.direction === LayoutDirection.ROW || this.configs.direction === LayoutDirection.ROW_REVERSE);\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tconst updatedSVGs = svg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id);\n\n\t\tupdatedSVGs\n\t\t\t.attr(\"width\", (d: any) => d.x1 - d.x0)\n\t\t\t.attr(\"height\", (d: any) => d.y1 - d.y0);\n\n\t\tconst enteringSVGs = updatedSVGs\n\t\t\t.enter()\n\t\t\t.append(\"svg\")\n\t\t\t\t.attr(\"class\", (d: any) => `layout-child layout-child-${this._instanceID} ${d.data.id}`)\n\t\t\t\t.attr(\"x\", (d: any) => d.x0)\n\t\t\t\t.attr(\"y\", (d: any) => d.y0);\n\n\t\tenteringSVGs.merge(svg.selectAll(`svg.layout-child-${this._instanceID}`))\n\t\t\t.each(function(d: any) {\n\t\t\t\t// Set parent component for each child\n\t\t\t\td.data.components.forEach(itemComponent => {\n\t\t\t\t\titemComponent.setParent(select(this));\n\n\t\t\t\t\t// Render preffered & fixed items\n\t\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\t\tif (growth === LayoutGrowth.PREFERRED || growth === LayoutGrowth.FIXED) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t.each(function(d: any) {\n\t\t\t// Calculate preffered children sizes after internal rendering\n\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\tconst matchingSVGDimensions = DOMUtils.getSVGElementSize(select(this), { useBBox: true });\n\t\t\tif (growth === LayoutGrowth.PREFERRED) {\n\t\t\t\tconst matchingSVGWidth = horizontal ? matchingSVGDimensions.width : matchingSVGDimensions.height;\n\t\t\t\tconst svgWidth = horizontal ? width : height;\n\n\t\t\t\td.data.size = (matchingSVGWidth / svgWidth) * 100;\n\t\t\t}\n\t\t});\n\n\t\tupdatedSVGs\n\t\t\t.exit()\n\t\t\t.remove();\n\n\t\t// Run through stretch x-items\n\t\tthis.children\n\t\t\t.filter(child => {\n\t\t\t\tconst growth = Tools.getProperty(child, \"growth\", \"x\");\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.forEach((child, i) => {\n\t\t\t\tchild.size = (100 - (+this.getPreferedAndFixedSizeSum())) / (+this.getNumOfStretchChildren());\n\t\t\t});\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\troot = hierarchy({\n\t\t\tchildren: this.children\n\t\t})\n\t\t.sum((d: any) => d.size);\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap()\n\t\t\t.tile(tileType)\n\t\t\t.size([width, height])\n\t\t\t.padding(0)\n\t\t\t(root);\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tsvg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id)\n\t\t\t.attr(\"x\", (d: any) => d.x0)\n\t\t\t.attr(\"y\", (d: any) => d.y0)\n\t\t\t.attr(\"width\", (d: any) => d.x1 - d.x0)\n\t\t\t.attr(\"height\", (d: any) => d.y1 - d.y0)\n\t\t\t.each(function(d: any, i) {\n\t\t\t\td.data.components.forEach(itemComponent => {\n\t\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\t\tif (growth === LayoutGrowth.STRETCH) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Pass on model to children as well\n\tsetModel(newObj) {\n\t\tsuper.setModel(newObj);\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => component.setModel(newObj));\n\t\t});\n\t}\n\n\t// Pass on essentials to children as well\n\tsetServices(newObj) {\n\t\tsuper.setServices(newObj);\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => component.setServices(newObj));\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => component.destroy());\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["layout.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport {\n\tLayoutDirection,\n\tLayoutGrowth,\n\tLayoutComponentChild,\n\tLayoutConfigs\n} from \"../../interfaces/index\";\nimport { Tools } from \"../../tools\";\nimport { DOMUtils } from \"../../services\";\nimport { ChartModel } from \"../../model\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { hierarchy, treemap, treemapSlice, treemapDice } from \"d3-hierarchy\";\n\n// TODO - What if there is no \"growth\" object?\nexport class LayoutComponent extends Component {\n\t// Give every layout component a distinct ID\n\t// so they don't interfere when querying elements\n\tstatic instanceID = Math.floor(Math.random() * 99999999999);\n\n\ttype = \"layout\";\n\n\tchildren: LayoutComponentChild[];\n\n\tprivate _instanceID: number;\n\n\tconstructor(\n\t\tmodel: ChartModel,\n\t\tservices: any,\n\t\tchildren: LayoutComponentChild[],\n\t\tconfigs?: LayoutConfigs\n\t) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.configs = configs;\n\t\tthis.children = children;\n\n\t\tthis._instanceID = LayoutComponent.instanceID++;\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\tconst directionIsReversed =\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE ||\n\t\t\tthis.configs.direction === LayoutDirection.COLUMN_REVERSE;\n\t\tif (directionIsReversed) {\n\t\t\tthis.children = this.children.reverse();\n\t\t}\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => {\n\t\t\t\tcomponent.init();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetPreferedAndFixedSizeSum(): number {\n\t\tconst svg = this.parent;\n\t\tlet sum = 0;\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\treturn (\n\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t);\n\t\t\t})\n\t\t\t.each(function(d: any) {\n\t\t\t\tsum += d.data.size;\n\t\t\t});\n\n\t\treturn sum;\n\t}\n\n\tgetNumOfStretchChildren(): number {\n\t\tconst svg = this.parent;\n\n\t\treturn svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.size();\n\t}\n\n\trender(animate = true) {\n\t\t// Get parent SVG to render inside of\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true\n\t\t});\n\n\t\tlet root = hierarchy({\n\t\t\tchildren: this.children\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Grab the correct treemap tile function based on direction\n\t\tconst tileType =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE\n\t\t\t\t? treemapDice\n\t\t\t\t: treemapSlice;\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap()\n\t\t\t.tile(tileType)\n\t\t\t.size([width, height])(root);\n\n\t\t// TODORF - Remove\n\t\tconst horizontal =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE;\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tconst updatedSVGs = svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id);\n\n\t\tupdatedSVGs\n\t\t\t.attr(\"width\", (d: any) => d.x1 - d.x0)\n\t\t\t.attr(\"height\", (d: any) => d.y1 - d.y0);\n\n\t\tconst enteringSVGs = updatedSVGs\n\t\t\t.enter()\n\t\t\t.append(\"svg\")\n\t\t\t.attr(\n\t\t\t\t\"class\",\n\t\t\t\t(d: any) =>\n\t\t\t\t\t`layout-child layout-child-${this._instanceID} ${d.data.id}`\n\t\t\t)\n\t\t\t.attr(\"x\", (d: any) => d.x0)\n\t\t\t.attr(\"y\", (d: any) => d.y0);\n\n\t\tenteringSVGs\n\t\t\t.merge(svg.selectAll(`svg.layout-child-${this._instanceID}`))\n\t\t\t.each(function(d: any) {\n\t\t\t\t// Set parent component for each child\n\t\t\t\td.data.components.forEach(itemComponent => {\n\t\t\t\t\titemComponent.setParent(select(this));\n\n\t\t\t\t\t// Render preffered & fixed items\n\t\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\t\tif (\n\t\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t\t) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`).each(function(\n\t\t\td: any\n\t\t) {\n\t\t\t// Calculate preffered children sizes after internal rendering\n\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\tconst matchingSVGDimensions = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(this),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\t\t\tif (growth === LayoutGrowth.PREFERRED) {\n\t\t\t\tconst matchingSVGWidth = horizontal\n\t\t\t\t\t? matchingSVGDimensions.width\n\t\t\t\t\t: matchingSVGDimensions.height;\n\t\t\t\tconst svgWidth = horizontal ? width : height;\n\n\t\t\t\td.data.size = (matchingSVGWidth / svgWidth) * 100;\n\t\t\t}\n\t\t});\n\n\t\tupdatedSVGs.exit().remove();\n\n\t\t// Run through stretch x-items\n\t\tthis.children\n\t\t\t.filter(child => {\n\t\t\t\tconst growth = Tools.getProperty(child, \"growth\", \"x\");\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.forEach((child, i) => {\n\t\t\t\tchild.size =\n\t\t\t\t\t(100 - +this.getPreferedAndFixedSizeSum()) /\n\t\t\t\t\t+this.getNumOfStretchChildren();\n\t\t\t});\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\troot = hierarchy({\n\t\t\tchildren: this.children\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap()\n\t\t\t.tile(tileType)\n\t\t\t.size([width, height])\n\t\t\t.padding(0)(root);\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id)\n\t\t\t.attr(\"x\", (d: any) => d.x0)\n\t\t\t.attr(\"y\", (d: any) => d.y0)\n\t\t\t.attr(\"width\", (d: any) => d.x1 - d.x0)\n\t\t\t.attr(\"height\", (d: any) => d.y1 - d.y0)\n\t\t\t.each(function(d: any, i) {\n\t\t\t\td.data.components.forEach(itemComponent => {\n\t\t\t\t\tconst growth = Tools.getProperty(d, \"data\", \"growth\", \"x\");\n\t\t\t\t\tif (growth === LayoutGrowth.STRETCH) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Pass on model to children as well\n\tsetModel(newObj) {\n\t\tsuper.setModel(newObj);\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => component.setModel(newObj));\n\t\t});\n\t}\n\n\t// Pass on essentials to children as well\n\tsetServices(newObj) {\n\t\tsuper.setServices(newObj);\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component =>\n\t\t\t\tcomponent.setServices(newObj)\n\t\t\t);\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.components.forEach(component => component.destroy());\n\t\t});\n\t}\n}\n"]}
@@ -22,7 +22,8 @@ var Spacer = /** @class */ (function (_super) {
22
22
  return _this;
23
23
  }
24
24
  Spacer.prototype.render = function () {
25
- this.getContainerSVG().append("rect")
25
+ this.getContainerSVG()
26
+ .append("rect")
26
27
  .attr("x", 0)
27
28
  .attr("y", 0)
28
29
  .attr("width", this.configs.size || Configuration.spacers.default.size)
@@ -1 +1 @@
1
- {"version":3,"file":"spacer.js","sourceRoot":"","sources":["spacer.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD;IAA4B,0BAAS;IAArC;QAAA,qEAWC;QAVA,UAAI,GAAG,QAAQ,CAAC;;IAUjB,CAAC;IARA,uBAAM,GAAN;QACC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACnC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aACZ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aACZ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aACtE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aACvE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACF,aAAC;AAAD,CAAC,AAXD,CAA4B,SAAS,GAWpC","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport * as Configuration from \"../../configuration\";\n\nexport class Spacer extends Component {\n\ttype = \"spacer\";\n\n\trender() {\n\t\tthis.getContainerSVG().append(\"rect\")\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", 0)\n\t\t\t.attr(\"width\", this.configs.size || Configuration.spacers.default.size)\n\t\t\t.attr(\"height\", this.configs.size || Configuration.spacers.default.size)\n\t\t\t.attr(\"opacity\", 0);\n\t}\n}\n"]}
1
+ {"version":3,"file":"spacer.js","sourceRoot":"","sources":["spacer.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD;IAA4B,0BAAS;IAArC;QAAA,qEAkBC;QAjBA,UAAI,GAAG,QAAQ,CAAC;;IAiBjB,CAAC;IAfA,uBAAM,GAAN;QACC,IAAI,CAAC,eAAe,EAAE;aACpB,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aACZ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aACZ,IAAI,CACJ,OAAO,EACP,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CACvD;aACA,IAAI,CACJ,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CACvD;aACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACF,aAAC;AAAD,CAAC,AAlBD,CAA4B,SAAS,GAkBpC","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport * as Configuration from \"../../configuration\";\n\nexport class Spacer extends Component {\n\ttype = \"spacer\";\n\n\trender() {\n\t\tthis.getContainerSVG()\n\t\t\t.append(\"rect\")\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", 0)\n\t\t\t.attr(\n\t\t\t\t\"width\",\n\t\t\t\tthis.configs.size || Configuration.spacers.default.size\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t\"height\",\n\t\t\t\tthis.configs.size || Configuration.spacers.default.size\n\t\t\t)\n\t\t\t.attr(\"opacity\", 0);\n\t}\n}\n"]}