@tetacom/svg-charts 1.0.2 → 1.1.3

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 (265) hide show
  1. package/{dist/chart → chart}/base/series-base.component.d.ts +4 -1
  2. package/{dist/chart → chart}/chart/chart.component.d.ts +12 -9
  3. package/chart/chart-container/chart-container.component.d.ts +37 -0
  4. package/chart/chart-container/gridlines/gridlines.component.d.ts +14 -0
  5. package/{dist/chart/chart-container/plotband/plotband.component.d.ts → chart/chart-container/plotband/plot-band.component.d.ts} +11 -10
  6. package/{dist/chart → chart}/chart-container/plotline/plotline.component.d.ts +5 -5
  7. package/{dist/chart → chart}/chart-container/series/bar/bar-series.component.d.ts +0 -0
  8. package/{dist/chart → chart}/chart-container/series/line/line-series.component.d.ts +2 -2
  9. package/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +28 -0
  10. package/{dist/chart → chart}/chart-container/series-host/series-host.component.d.ts +4 -1
  11. package/{dist/chart → chart}/chart-container/tooltip/tooltip.component.d.ts +6 -3
  12. package/chart/chart-container/x-axis/x-axis.component.d.ts +19 -0
  13. package/chart/chart-container/y-axis/y-axis.component.d.ts +20 -0
  14. package/{dist/chart → chart}/chart.module.d.ts +4 -3
  15. package/{dist/chart → chart}/core/axis/axis.d.ts +8 -3
  16. package/{dist/chart → chart}/core/axis/builders/axis-size-builder.d.ts +0 -0
  17. package/{dist/chart → chart}/core/axis/builders/extremes-builder.d.ts +0 -0
  18. package/{dist/chart → chart}/core/axis/builders/public-api.d.ts +0 -0
  19. package/{dist/chart → chart}/core/utils/generate-ticks.d.ts +0 -0
  20. package/{dist/chart → chart}/core/utils/get-text-width.d.ts +0 -0
  21. package/{dist/chart → chart}/core/utils/public-api.d.ts +0 -0
  22. package/chart/default/default-axis-config.d.ts +2 -0
  23. package/chart/default/default-chart-config.d.ts +2 -0
  24. package/chart/default/default-series-config.d.ts +3 -0
  25. package/{dist/chart → chart}/directives/brushable.directive.d.ts +2 -1
  26. package/{dist/chart → chart}/directives/zoomable.directive.d.ts +1 -3
  27. package/{dist/chart → chart}/legend/legend.component.d.ts +1 -3
  28. package/chart/model/axis-options.d.ts +19 -0
  29. package/{dist/chart → chart}/model/base-point.d.ts +1 -1
  30. package/{dist/chart → chart}/model/chart-bounds.d.ts +0 -0
  31. package/{dist/chart → chart}/model/enum/axis-orientation.d.ts +0 -0
  32. package/{dist/chart → chart}/model/enum/brush-type.d.ts +0 -0
  33. package/{dist/chart → chart}/model/enum/drag-point-type.d.ts +0 -0
  34. package/{dist/chart → chart}/model/enum/public-api.d.ts +1 -1
  35. package/chart/model/enum/scale-type.d.ts +8 -0
  36. package/{dist/chart → chart}/model/enum/series-type.d.ts +2 -1
  37. package/{dist/chart → chart}/model/enum/tooltip-tracking.d.ts +0 -0
  38. package/{dist/chart → chart}/model/enum/zoom-type.d.ts +0 -0
  39. package/chart/model/i-broadcast-message.d.ts +17 -0
  40. package/{dist/chart → chart}/model/i-builder.d.ts +0 -0
  41. package/{dist/chart → chart}/model/i-chart-config.d.ts +1 -0
  42. package/{dist/chart → chart}/model/i-chart-event.d.ts +0 -0
  43. package/{dist/chart → chart}/model/i-display-tooltip.d.ts +0 -0
  44. package/{dist/chart → chart}/model/i-point-move.d.ts +0 -0
  45. package/{dist/chart → chart}/model/marker-options.d.ts +0 -0
  46. package/{dist/chart/model/plotband.d.ts → chart/model/plot-band.d.ts} +7 -5
  47. package/{dist/chart/model/plotline.d.ts → chart/model/plot-line.d.ts} +3 -1
  48. package/{dist/chart → chart}/model/public-api.d.ts +2 -2
  49. package/{dist/chart → chart}/model/series.d.ts +0 -0
  50. package/{dist/chart → chart}/model/svg-attributes.d.ts +0 -0
  51. package/{dist/chart → chart}/model/tooltip-options.d.ts +0 -0
  52. package/{dist/chart → chart}/service/broadcast.service.d.ts +0 -0
  53. package/{dist/chart → chart}/service/brush.service.d.ts +2 -5
  54. package/{dist/chart → chart}/service/chart.service.d.ts +16 -17
  55. package/chart/service/scale.service.d.ts +19 -0
  56. package/{dist/chart → chart}/service/zoom.service.d.ts +6 -14
  57. package/esm2020/chart/base/series-base.component.mjs +32 -0
  58. package/esm2020/chart/chart/chart.component.mjs +71 -0
  59. package/esm2020/chart/chart-container/chart-container.component.mjs +133 -0
  60. package/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +29 -0
  61. package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +150 -0
  62. package/esm2020/chart/chart-container/plotline/plotline.component.mjs +76 -0
  63. package/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +48 -0
  64. package/esm2020/chart/chart-container/series/line/line-series.component.mjs +152 -0
  65. package/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +174 -0
  66. package/esm2020/chart/chart-container/series-host/series-host.component.mjs +68 -0
  67. package/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +83 -0
  68. package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +53 -0
  69. package/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +58 -0
  70. package/{dist/esm2020 → esm2020}/chart/chart.module.mjs +8 -5
  71. package/esm2020/chart/core/axis/axis.mjs +105 -0
  72. package/{dist/esm2020 → esm2020}/chart/core/axis/builders/axis-size-builder.mjs +0 -0
  73. package/esm2020/chart/core/axis/builders/extremes-builder.mjs +31 -0
  74. package/{dist/esm2020 → esm2020}/chart/core/axis/builders/public-api.mjs +0 -0
  75. package/{dist/esm2020 → esm2020}/chart/core/utils/generate-ticks.mjs +0 -0
  76. package/{dist/esm2020 → esm2020}/chart/core/utils/get-text-width.mjs +0 -0
  77. package/{dist/esm2020 → esm2020}/chart/core/utils/public-api.mjs +0 -0
  78. package/esm2020/chart/default/default-axis-config.mjs +9 -0
  79. package/esm2020/chart/default/default-chart-config.mjs +23 -0
  80. package/esm2020/chart/default/default-series-config.mjs +8 -0
  81. package/{dist/esm2020 → esm2020}/chart/directives/brushable.directive.mjs +5 -3
  82. package/esm2020/chart/directives/zoomable.directive.mjs +36 -0
  83. package/esm2020/chart/legend/legend.component.mjs +27 -0
  84. package/esm2020/chart/model/axis-options.mjs +2 -0
  85. package/{dist/esm2020 → esm2020}/chart/model/base-point.mjs +1 -1
  86. package/{dist/esm2020 → esm2020}/chart/model/chart-bounds.mjs +0 -0
  87. package/{dist/esm2020 → esm2020}/chart/model/enum/axis-orientation.mjs +0 -0
  88. package/{dist/esm2020 → esm2020}/chart/model/enum/brush-type.mjs +0 -0
  89. package/{dist/esm2020 → esm2020}/chart/model/enum/drag-point-type.mjs +0 -0
  90. package/{dist/esm2020 → esm2020}/chart/model/enum/public-api.mjs +2 -2
  91. package/esm2020/chart/model/enum/scale-type.mjs +10 -0
  92. package/{dist/esm2020 → esm2020}/chart/model/enum/series-type.mjs +2 -1
  93. package/{dist/esm2020 → esm2020}/chart/model/enum/tooltip-tracking.mjs +0 -0
  94. package/{dist/esm2020 → esm2020}/chart/model/enum/zoom-type.mjs +0 -0
  95. package/esm2020/chart/model/i-broadcast-message.mjs +2 -0
  96. package/{dist/esm2020 → esm2020}/chart/model/i-builder.mjs +0 -0
  97. package/{dist/esm2020 → esm2020}/chart/model/i-chart-config.mjs +1 -1
  98. package/{dist/esm2020 → esm2020}/chart/model/i-chart-event.mjs +0 -0
  99. package/{dist/esm2020 → esm2020}/chart/model/i-display-tooltip.mjs +0 -0
  100. package/{dist/esm2020 → esm2020}/chart/model/i-point-move.mjs +0 -0
  101. package/{dist/esm2020 → esm2020}/chart/model/marker-options.mjs +0 -0
  102. package/esm2020/chart/model/plot-band.mjs +17 -0
  103. package/esm2020/chart/model/plot-line.mjs +13 -0
  104. package/{dist/esm2020 → esm2020}/chart/model/public-api.mjs +3 -3
  105. package/{dist/esm2020 → esm2020}/chart/model/series.mjs +0 -0
  106. package/{dist/esm2020 → esm2020}/chart/model/svg-attributes.mjs +0 -0
  107. package/{dist/esm2020 → esm2020}/chart/model/tooltip-options.mjs +0 -0
  108. package/esm2020/chart/service/broadcast.service.mjs +23 -0
  109. package/esm2020/chart/service/brush.service.mjs +70 -0
  110. package/esm2020/chart/service/chart.service.mjs +95 -0
  111. package/esm2020/chart/service/scale.service.mjs +152 -0
  112. package/esm2020/chart/service/zoom.service.mjs +114 -0
  113. package/esm2020/public-api.mjs +9 -0
  114. package/{dist/esm2020 → esm2020}/tetacom-svg-charts.mjs +0 -0
  115. package/fesm2015/tetacom-svg-charts.mjs +1912 -0
  116. package/fesm2015/tetacom-svg-charts.mjs.map +1 -0
  117. package/fesm2020/tetacom-svg-charts.mjs +1887 -0
  118. package/fesm2020/tetacom-svg-charts.mjs.map +1 -0
  119. package/package.json +22 -2
  120. package/{dist/public-api.d.ts → public-api.d.ts} +0 -0
  121. package/{dist/tetacom-svg-charts.d.ts → tetacom-svg-charts.d.ts} +0 -0
  122. package/dist/README.md +0 -24
  123. package/dist/chart/chart-container/chart-container.component.d.ts +0 -42
  124. package/dist/chart/chart-container/gridlines/gridlines.component.d.ts +0 -23
  125. package/dist/chart/chart-container/x-axis/x-axis.component.d.ts +0 -23
  126. package/dist/chart/chart-container/y-axis/y-axis.component.d.ts +0 -24
  127. package/dist/chart/model/axis-options.d.ts +0 -17
  128. package/dist/chart/model/enum/axis-type.d.ts +0 -7
  129. package/dist/chart/model/i-broadcast-message.d.ts +0 -5
  130. package/dist/chart/service/axes.service.d.ts +0 -11
  131. package/dist/chart/service/scale.service.d.ts +0 -14
  132. package/dist/esm2020/chart/base/series-base.component.mjs +0 -34
  133. package/dist/esm2020/chart/chart/chart.component.mjs +0 -73
  134. package/dist/esm2020/chart/chart-container/chart-container.component.mjs +0 -151
  135. package/dist/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +0 -41
  136. package/dist/esm2020/chart/chart-container/plotband/plotband.component.mjs +0 -139
  137. package/dist/esm2020/chart/chart-container/plotline/plotline.component.mjs +0 -79
  138. package/dist/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +0 -48
  139. package/dist/esm2020/chart/chart-container/series/line/line-series.component.mjs +0 -148
  140. package/dist/esm2020/chart/chart-container/series-host/series-host.component.mjs +0 -59
  141. package/dist/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +0 -81
  142. package/dist/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +0 -56
  143. package/dist/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +0 -63
  144. package/dist/esm2020/chart/core/axis/axis.mjs +0 -96
  145. package/dist/esm2020/chart/core/axis/builders/extremes-builder.mjs +0 -32
  146. package/dist/esm2020/chart/directives/zoomable.directive.mjs +0 -37
  147. package/dist/esm2020/chart/legend/legend.component.mjs +0 -30
  148. package/dist/esm2020/chart/model/axis-options.mjs +0 -2
  149. package/dist/esm2020/chart/model/enum/axis-type.mjs +0 -9
  150. package/dist/esm2020/chart/model/i-broadcast-message.mjs +0 -2
  151. package/dist/esm2020/chart/model/plotband.mjs +0 -16
  152. package/dist/esm2020/chart/model/plotline.mjs +0 -12
  153. package/dist/esm2020/chart/service/axes.service.mjs +0 -29
  154. package/dist/esm2020/chart/service/broadcast.service.mjs +0 -25
  155. package/dist/esm2020/chart/service/brush.service.mjs +0 -67
  156. package/dist/esm2020/chart/service/chart.service.mjs +0 -76
  157. package/dist/esm2020/chart/service/scale.service.mjs +0 -64
  158. package/dist/esm2020/chart/service/zoom.service.mjs +0 -117
  159. package/dist/esm2020/public-api.mjs +0 -8
  160. package/dist/fesm2015/tetacom-svg-charts.mjs +0 -1617
  161. package/dist/fesm2015/tetacom-svg-charts.mjs.map +0 -1
  162. package/dist/fesm2020/tetacom-svg-charts.mjs +0 -1603
  163. package/dist/fesm2020/tetacom-svg-charts.mjs.map +0 -1
  164. package/dist/package.json +0 -35
  165. package/karma.conf.js +0 -44
  166. package/ng-package.json +0 -7
  167. package/src/chart/Chart.stories.ts +0 -397
  168. package/src/chart/base/series-base.component.ts +0 -41
  169. package/src/chart/chart/chart.component.html +0 -5
  170. package/src/chart/chart/chart.component.scss +0 -6
  171. package/src/chart/chart/chart.component.spec.ts +0 -25
  172. package/src/chart/chart/chart.component.ts +0 -97
  173. package/src/chart/chart-container/chart-container.component.html +0 -78
  174. package/src/chart/chart-container/chart-container.component.scss +0 -15
  175. package/src/chart/chart-container/chart-container.component.spec.ts +0 -25
  176. package/src/chart/chart-container/chart-container.component.ts +0 -242
  177. package/src/chart/chart-container/gridlines/gridlines.component.html +0 -7
  178. package/src/chart/chart-container/gridlines/gridlines.component.scss +0 -8
  179. package/src/chart/chart-container/gridlines/gridlines.component.spec.ts +0 -25
  180. package/src/chart/chart-container/gridlines/gridlines.component.ts +0 -55
  181. package/src/chart/chart-container/plotband/plotband.component.html +0 -58
  182. package/src/chart/chart-container/plotband/plotband.component.scss +0 -13
  183. package/src/chart/chart-container/plotband/plotband.component.spec.ts +0 -25
  184. package/src/chart/chart-container/plotband/plotband.component.ts +0 -206
  185. package/src/chart/chart-container/plotline/plotline.component.html +0 -22
  186. package/src/chart/chart-container/plotline/plotline.component.scss +0 -6
  187. package/src/chart/chart-container/plotline/plotline.component.spec.ts +0 -25
  188. package/src/chart/chart-container/plotline/plotline.component.ts +0 -113
  189. package/src/chart/chart-container/series/bar/bar-series.component.html +0 -3
  190. package/src/chart/chart-container/series/bar/bar-series.component.scss +0 -0
  191. package/src/chart/chart-container/series/bar/bar-series.component.ts +0 -71
  192. package/src/chart/chart-container/series/line/line-series.component.html +0 -38
  193. package/src/chart/chart-container/series/line/line-series.component.scss +0 -9
  194. package/src/chart/chart-container/series/line/line-series.component.spec.ts +0 -25
  195. package/src/chart/chart-container/series/line/line-series.component.ts +0 -245
  196. package/src/chart/chart-container/series-host/series-host.component.ts +0 -80
  197. package/src/chart/chart-container/tooltip/tooltip.component.html +0 -14
  198. package/src/chart/chart-container/tooltip/tooltip.component.scss +0 -7
  199. package/src/chart/chart-container/tooltip/tooltip.component.spec.ts +0 -25
  200. package/src/chart/chart-container/tooltip/tooltip.component.ts +0 -134
  201. package/src/chart/chart-container/x-axis/x-axis.component.html +0 -1
  202. package/src/chart/chart-container/x-axis/x-axis.component.scss +0 -3
  203. package/src/chart/chart-container/x-axis/x-axis.component.spec.ts +0 -25
  204. package/src/chart/chart-container/x-axis/x-axis.component.ts +0 -80
  205. package/src/chart/chart-container/y-axis/y-axis.component.html +0 -4
  206. package/src/chart/chart-container/y-axis/y-axis.component.scss +0 -13
  207. package/src/chart/chart-container/y-axis/y-axis.component.spec.ts +0 -25
  208. package/src/chart/chart-container/y-axis/y-axis.component.ts +0 -90
  209. package/src/chart/chart.module.ts +0 -40
  210. package/src/chart/core/axis/axis.ts +0 -132
  211. package/src/chart/core/axis/builders/axis-size-builder.ts +0 -37
  212. package/src/chart/core/axis/builders/extremes-builder.ts +0 -45
  213. package/src/chart/core/axis/builders/public-api.ts +0 -2
  214. package/src/chart/core/utils/generate-ticks.ts +0 -14
  215. package/src/chart/core/utils/get-text-width.ts +0 -10
  216. package/src/chart/core/utils/public-api.ts +0 -2
  217. package/src/chart/default/default-chart-config.ts +0 -12
  218. package/src/chart/directives/brushable.directive.ts +0 -30
  219. package/src/chart/directives/zoomable.directive.ts +0 -31
  220. package/src/chart/legend/legend.component.html +0 -6
  221. package/src/chart/legend/legend.component.scss +0 -20
  222. package/src/chart/legend/legend.component.spec.ts +0 -25
  223. package/src/chart/legend/legend.component.ts +0 -35
  224. package/src/chart/model/axis-options.ts +0 -18
  225. package/src/chart/model/base-point.ts +0 -10
  226. package/src/chart/model/chart-bounds.ts +0 -18
  227. package/src/chart/model/enum/axis-orientation.ts +0 -4
  228. package/src/chart/model/enum/axis-type.ts +0 -7
  229. package/src/chart/model/enum/brush-type.ts +0 -5
  230. package/src/chart/model/enum/drag-point-type.ts +0 -5
  231. package/src/chart/model/enum/public-api.ts +0 -7
  232. package/src/chart/model/enum/series-type.ts +0 -4
  233. package/src/chart/model/enum/tooltip-tracking.ts +0 -4
  234. package/src/chart/model/enum/zoom-type.ts +0 -5
  235. package/src/chart/model/i-broadcast-message.ts +0 -5
  236. package/src/chart/model/i-builder.ts +0 -3
  237. package/src/chart/model/i-chart-config.ts +0 -33
  238. package/src/chart/model/i-chart-event.ts +0 -4
  239. package/src/chart/model/i-display-tooltip.ts +0 -7
  240. package/src/chart/model/i-drag-event.ts +0 -5
  241. package/src/chart/model/i-point-move.ts +0 -7
  242. package/src/chart/model/marker-options.ts +0 -8
  243. package/src/chart/model/plotband.ts +0 -45
  244. package/src/chart/model/plotline.ts +0 -29
  245. package/src/chart/model/public-api.ts +0 -14
  246. package/src/chart/model/series.ts +0 -18
  247. package/src/chart/model/svg-attributes.ts +0 -14
  248. package/src/chart/model/tooltip-options.ts +0 -37
  249. package/src/chart/service/axes.service.spec.ts +0 -16
  250. package/src/chart/service/axes.service.ts +0 -27
  251. package/src/chart/service/broadcast.service.spec.ts +0 -16
  252. package/src/chart/service/broadcast.service.ts +0 -24
  253. package/src/chart/service/brush.service.spec.ts +0 -16
  254. package/src/chart/service/brush.service.ts +0 -87
  255. package/src/chart/service/chart.service.spec.ts +0 -16
  256. package/src/chart/service/chart.service.ts +0 -100
  257. package/src/chart/service/scale.service.spec.ts +0 -16
  258. package/src/chart/service/scale.service.ts +0 -74
  259. package/src/chart/service/zoom.service.spec.ts +0 -16
  260. package/src/chart/service/zoom.service.ts +0 -153
  261. package/src/public-api.ts +0 -8
  262. package/src/test.ts +0 -27
  263. package/tsconfig.lib.json +0 -15
  264. package/tsconfig.lib.prod.json +0 -10
  265. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,174 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { SeriesBaseComponent } from '../../../base/series-base.component';
3
+ import { map, tap, withLatestFrom } from 'rxjs';
4
+ import * as d3 from 'd3';
5
+ import { TooltipTracking } from '../../../model/enum/tooltip-tracking';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../service/chart.service";
8
+ import * as i2 from "../../../service/scale.service";
9
+ import * as i3 from "../../../service/zoom.service";
10
+ import * as i4 from "@angular/common";
11
+ export class ScatterSeriesComponent extends SeriesBaseComponent {
12
+ constructor(svc, cdr, scaleService, zoomService, element) {
13
+ super(svc, cdr, scaleService, zoomService, element);
14
+ this.svc = svc;
15
+ this.cdr = cdr;
16
+ this.scaleService = scaleService;
17
+ this.zoomService = zoomService;
18
+ this.element = element;
19
+ }
20
+ ngOnInit() {
21
+ this.transform = this.svc.pointerMove.pipe(withLatestFrom(this.scaleService.xScaleMap, this.scaleService.yScaleMap), map((data) => {
22
+ const [event, x, y] = data;
23
+ return this.getTransform(event, x, y);
24
+ }), tap(() => this.cdr.detectChanges()));
25
+ this.x = this.scaleService.xScaleMap.pipe(map(_ => _.get(this.series.xAxisIndex)));
26
+ this.y = this.scaleService.yScaleMap.pipe(map(_ => _.get(this.series.yAxisIndex)));
27
+ // this.path = combineLatest([
28
+ // ,
29
+ // this.scaleService.yScaleMap,
30
+ // ]).pipe(
31
+ // map((data: [Map<number, any>, Map<number, any>]) => {
32
+ // const [x, y] = data;
33
+ // this.x = x.get(this.series.xAxisIndex);
34
+ // this.y = y.get(this.series.yAxisIndex);
35
+ //
36
+ // const line = d3
37
+ // .line<BasePoint>()
38
+ // .defined((point) => point.x !== null || point.y !== null)
39
+ // .x((point) => this.x(point.x))
40
+ // .y((point) => this.y(point.y));
41
+ //
42
+ // return line(this.series.data);
43
+ // })
44
+ // );
45
+ }
46
+ ngAfterViewInit() {
47
+ // const drag = (node, event: d3.D3DragEvent<any, any, any>, d: BasePoint) => {
48
+ // if (
49
+ // d.marker?.dragType === DragPointType.x ||
50
+ // d.marker?.dragType === DragPointType.xy
51
+ // ) {
52
+ // d.x = this.x.invert(event.x);
53
+ // }
54
+ //
55
+ // if (
56
+ // d.marker?.dragType === DragPointType.y ||
57
+ // d.marker?.dragType === DragPointType.xy
58
+ // ) {
59
+ // d.y = this.y.invert(event.y);
60
+ // }
61
+ //
62
+ // this.svc.emitPoint({
63
+ // target: {
64
+ // series: this.series,
65
+ // point: d,
66
+ // },
67
+ // event,
68
+ // });
69
+ //
70
+ // this.cdr.detectChanges();
71
+ // };
72
+ // // const dragMarkers = d3
73
+ // // .drag()
74
+ // // .subject(function (event, d: BasePoint) {
75
+ // // const node = d3.select(this);
76
+ // // return { x: node.attr('cx'), y: node.attr('cy') };
77
+ // // })
78
+ // // .on(
79
+ // // 'start drag end',
80
+ // // function (event: d3.D3DragEvent<any, any, any>, d: BasePoint) {
81
+ // // const node = d3.select(this);
82
+ // //
83
+ // // drag(node, event, d);
84
+ // // }
85
+ // // );
86
+ //
87
+ // const draggableMarkers = this.series.data?.filter(
88
+ // (_) => _?.marker && _?.marker?.draggable
89
+ // );
90
+ //
91
+ // const element = d3
92
+ // .select(this.element.nativeElement)
93
+ // .selectAll('.draggable-marker')
94
+ // .data(draggableMarkers);
95
+ //
96
+ // element.call(dragMarkers as any);
97
+ //
98
+ // this.svgElement = d3
99
+ // .select(this.element.nativeElement)
100
+ // .select('.line')
101
+ // .node() as SVGGeometryElement;
102
+ }
103
+ getMarkers() {
104
+ return this.series.data?.filter((_) => _?.marker);
105
+ }
106
+ getTransform(event, x, y) {
107
+ const mouse = [event?.offsetX, event?.offsetY];
108
+ const foundX = x.get(this.series.xAxisIndex);
109
+ const foundY = y.get(this.series.yAxisIndex);
110
+ const tooltipTracking = this.config?.tooltip?.tracking;
111
+ const lineIntersection = (p0_x, p0_y, p1_x, p1_y, p2_x, p2_y, p3_x, p3_y) => {
112
+ const rV = {};
113
+ let s1_x, s1_y, s2_x, s2_y;
114
+ s1_x = p1_x - p0_x;
115
+ s1_y = p1_y - p0_y;
116
+ s2_x = p3_x - p2_x;
117
+ s2_y = p3_y - p2_y;
118
+ let s, t;
119
+ s =
120
+ (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /
121
+ (-s2_x * s1_y + s1_x * s2_y);
122
+ t =
123
+ (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /
124
+ (-s2_x * s1_y + s1_x * s2_y);
125
+ if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {
126
+ // Collision detected
127
+ rV.x = p0_x + t * s1_x;
128
+ rV.y = p0_y + t * s1_y;
129
+ }
130
+ return rV;
131
+ };
132
+ if (tooltipTracking === TooltipTracking.x) {
133
+ const bisect = d3.bisector((_) => _.x).right;
134
+ const pointer = mouse[0];
135
+ const x0 = foundX.invert(pointer);
136
+ const rightId = bisect(this.series.data, x0);
137
+ const range = foundY.range();
138
+ const intersect = lineIntersection(pointer, range[0], pointer, range[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
139
+ this.svc.setTooltip({
140
+ point: { x: foundX.invert(intersect.x), y: foundY.invert(intersect.y) },
141
+ series: this.series,
142
+ });
143
+ return {
144
+ x: intersect.x,
145
+ y: intersect.y,
146
+ };
147
+ }
148
+ if (tooltipTracking === TooltipTracking.y) {
149
+ const bisect = d3.bisector((_) => _.y).right;
150
+ const y0 = foundY.invert(mouse[1]);
151
+ const rightId = bisect(this.series.data, y0);
152
+ const range = foundX.range();
153
+ const intersect = lineIntersection(range[0], mouse[1], range[1], mouse[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
154
+ this.svc.setTooltip({
155
+ point: {
156
+ x: foundX.invert(intersect.x),
157
+ y: foundY.invert(intersect.y),
158
+ },
159
+ series: this.series,
160
+ });
161
+ return {
162
+ x: intersect.x,
163
+ y: intersect.y,
164
+ };
165
+ }
166
+ }
167
+ }
168
+ ScatterSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ScatterSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
169
+ ScatterSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ScatterSeriesComponent, selector: "svg:svg[teta-scatter-series]", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n r=\"1\"\n [attr.stroke]=\"series.color\"\n [attr.fill]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n</ng-container>\n<!--<ng-container *ngIf=\"transform | async as t\">-->\n<!-- <svg:circle-->\n<!-- *ngIf=\"t.x !== undefined && t.y!== undefined\"-->\n<!-- r=\"3\"-->\n<!-- [attr.fill]=\"series.color\"-->\n<!-- [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"-->\n<!-- >-->\n<!-- </svg:circle>-->\n<!--</ng-container>-->\n\n<!--<ng-container *ngIf=\"getMarkers() as markers\">-->\n<!-- <svg:circle-->\n<!-- class=\"marker\"-->\n<!-- *ngFor=\"let point of markers\"-->\n<!-- [class.draggable-marker]=\"point?.marker?.draggable\"-->\n<!-- [attr.r]=\"point.marker.style?.radius ?? 5\"-->\n<!-- [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"-->\n<!-- [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"-->\n<!-- [attr.stroke-width]=\"point.marker.style?.strokeWidth\"-->\n<!-- [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"-->\n<!-- [attr.cx]=\"x(point.x)\"-->\n<!-- [attr.cy]=\"y(point.y)\"-->\n<!-- >-->\n<!-- </svg:circle>-->\n<!--</ng-container>-->\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ScatterSeriesComponent, decorators: [{
171
+ type: Component,
172
+ args: [{ selector: 'svg:svg[teta-scatter-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n r=\"1\"\n [attr.stroke]=\"series.color\"\n [attr.fill]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n</ng-container>\n<!--<ng-container *ngIf=\"transform | async as t\">-->\n<!-- <svg:circle-->\n<!-- *ngIf=\"t.x !== undefined && t.y!== undefined\"-->\n<!-- r=\"3\"-->\n<!-- [attr.fill]=\"series.color\"-->\n<!-- [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"-->\n<!-- >-->\n<!-- </svg:circle>-->\n<!--</ng-container>-->\n\n<!--<ng-container *ngIf=\"getMarkers() as markers\">-->\n<!-- <svg:circle-->\n<!-- class=\"marker\"-->\n<!-- *ngFor=\"let point of markers\"-->\n<!-- [class.draggable-marker]=\"point?.marker?.draggable\"-->\n<!-- [attr.r]=\"point.marker.style?.radius ?? 5\"-->\n<!-- [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"-->\n<!-- [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"-->\n<!-- [attr.stroke-width]=\"point.marker.style?.strokeWidth\"-->\n<!-- [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"-->\n<!-- [attr.cx]=\"x(point.x)\"-->\n<!-- [attr.cy]=\"y(point.y)\"-->\n<!-- >-->\n<!-- </svg:circle>-->\n<!--</ng-container>-->\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
173
+ }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhdHRlci1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQix1QkFBdUIsRUFBcUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV2SCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQWdCLEdBQUcsRUFBYyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSXpFLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxzQkFDWCxTQUFRLG1CQUFzQjtJQVU5QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUd4QyxDQUFDO0lBRVEsUUFBUTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFD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S0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO1lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xCLEtBQUssRUFBRTtvQkFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM3QixDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUM5QjtnQkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEIsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7bUhBM09VLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDJGQ2pCbkMsKzRDQTJDQTsyRkQxQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLDhCQUE4QixtQkFHdkIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1Nlcmllc0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCB0YXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0RyYWdQb2ludFR5cGV9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZHJhZy1wb2ludC10eXBlJztcbmltcG9ydCB7VG9vbHRpcFRyYWNraW5nfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdmc6c3ZnW3RldGEtc2NhdHRlci1zZXJpZXNdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYXR0ZXItc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NhdHRlci1zZXJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2NhdHRlclNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIFNlcmllc0Jhc2VDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXRcbntcbiAgdHJhbnNmb3JtOiBPYnNlcnZhYmxlPFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+PjtcbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBwYXRoOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHN2Z0VsZW1lbnQ6IFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgeDogT2JzZXJ2YWJsZTxhbnk+O1xuICB5OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2NhbGVTZXJ2aWNlLnhTY2FsZU1hcCwgdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlTWFwKSxcbiAgICAgIG1hcChcbiAgICAgICAgKFxuICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgIFBvaW50ZXJFdmVudCxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIGFueT4sXG4gICAgICAgICAgICBNYXA8bnVtYmVyLCBhbnk+XG4gICAgICAgICAgXVxuICAgICAgICApID0+IHtcbiAgICAgICAgICBjb25zdCBbZXZlbnQsIHgsIHldID0gZGF0YTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybShldmVudCwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG5cbiAgICB0aGlzLnggPSB0aGlzLnNjYWxlU2VydmljZS54U2NhbGVNYXAucGlwZShtYXAoXyA9PiBfLmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KSkpO1xuICAgIHRoaXMueSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcC5waXBlKG1hcChfID0+IF8uZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpKSk7XG5cbiAgICAvLyB0aGlzLnBhdGggPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAvLyAgICxcbiAgICAvLyAgIHRoaXMuc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcCxcbiAgICAvLyBdKS5waXBlKFxuICAgIC8vICAgbWFwKChkYXRhOiBbTWFwPG51bWJlciwgYW55PiwgTWFwPG51bWJlciwgYW55Pl0pID0+IHtcbiAgICAvLyAgICAgY29uc3QgW3gsIHldID0gZGF0YTtcbiAgICAvLyAgICAgdGhpcy54ID0geC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgLy8gICAgIHRoaXMueSA9IHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpO1xuICAgIC8vXG4gICAgLy8gICAgIGNvbnN0IGxpbmUgPSBkM1xuICAgIC8vICAgICAgIC5saW5lPEJhc2VQb2ludD4oKVxuICAgIC8vICAgICAgIC5kZWZpbmVkKChwb2ludCkgPT4gcG9pbnQueCAhPT0gbnVsbCB8fCBwb2ludC55ICE9PSBudWxsKVxuICAgIC8vICAgICAgIC54KChwb2ludCkgPT4gdGhpcy54KHBvaW50LngpKVxuICAgIC8vICAgICAgIC55KChwb2ludCkgPT4gdGhpcy55KHBvaW50LnkpKTtcbiAgICAvL1xuICAgIC8vICAgICByZXR1cm4gbGluZSh0aGlzLnNlcmllcy5kYXRhKTtcbiAgICAvLyAgIH0pXG4gICAgLy8gKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBjb25zdCBkcmFnID0gKG5vZGUsIGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSA9PiB7XG4gICAgLy8gICBpZiAoXG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54IHx8XG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54eVxuICAgIC8vICAgKSB7XG4gICAgLy8gICAgIGQueCA9IHRoaXMueC5pbnZlcnQoZXZlbnQueCk7XG4gICAgLy8gICB9XG4gICAgLy9cbiAgICAvLyAgIGlmIChcbiAgICAvLyAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnkgfHxcbiAgICAvLyAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnh5XG4gICAgLy8gICApIHtcbiAgICAvLyAgICAgZC55ID0gdGhpcy55LmludmVydChldmVudC55KTtcbiAgICAvLyAgIH1cbiAgICAvL1xuICAgIC8vICAgdGhpcy5zdmMuZW1pdFBvaW50KHtcbiAgICAvLyAgICAgdGFyZ2V0OiB7XG4gICAgLy8gICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAvLyAgICAgICBwb2ludDogZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgZXZlbnQsXG4gICAgLy8gICB9KTtcbiAgICAvL1xuICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIH07XG5cbiAgICAvLyAvLyBjb25zdCBkcmFnTWFya2VycyA9IGQzXG4gICAgLy8gLy8gICAuZHJhZygpXG4gICAgLy8gLy8gICAuc3ViamVjdChmdW5jdGlvbiAoZXZlbnQsIGQ6IEJhc2VQb2ludCkge1xuICAgIC8vIC8vICAgICBjb25zdCBub2RlID0gZDMuc2VsZWN0KHRoaXMpO1xuICAgIC8vIC8vICAgICByZXR1cm4geyB4OiBub2RlLmF0dHIoJ2N4JyksIHk6IG5vZGUuYXR0cignY3knKSB9O1xuICAgIC8vIC8vICAgfSlcbiAgICAvLyAvLyAgIC5vbihcbiAgICAvLyAvLyAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAvLyAvLyAgICAgZnVuY3Rpb24gKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSB7XG4gICAgLy8gLy8gICAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAvLyAvL1xuICAgIC8vIC8vICAgICAgIGRyYWcobm9kZSwgZXZlbnQsIGQpO1xuICAgIC8vIC8vICAgICB9XG4gICAgLy8gLy8gICApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZHJhZ2dhYmxlTWFya2VycyA9IHRoaXMuc2VyaWVzLmRhdGE/LmZpbHRlcihcbiAgICAvLyAgIChfKSA9PiBfPy5tYXJrZXIgJiYgXz8ubWFya2VyPy5kcmFnZ2FibGVcbiAgICAvLyApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdEFsbCgnLmRyYWdnYWJsZS1tYXJrZXInKVxuICAgIC8vICAgLmRhdGEoZHJhZ2dhYmxlTWFya2Vycyk7XG4gICAgLy9cbiAgICAvLyBlbGVtZW50LmNhbGwoZHJhZ01hcmtlcnMgYXMgYW55KTtcbiAgICAvL1xuICAgIC8vIHRoaXMuc3ZnRWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdCgnLmxpbmUnKVxuICAgIC8vICAgLm5vZGUoKSBhcyBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIH1cblxuICBnZXRNYXJrZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnNlcmllcy5kYXRhPy5maWx0ZXIoKF8pID0+IF8/Lm1hcmtlcik7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oXG4gICAgZXZlbnQ6IGFueSxcbiAgICB4OiBNYXA8bnVtYmVyLCBhbnk+LFxuICAgIHk6IE1hcDxudW1iZXIsIGFueT5cbiAgKTogUGljazxCYXNlUG9pbnQsICd4JyB8ICd5Jz4ge1xuICAgIGNvbnN0IG1vdXNlID0gW2V2ZW50Py5vZmZzZXRYLCBldmVudD8ub2Zmc2V0WV07XG5cbiAgICBjb25zdCBmb3VuZFggPSB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KTtcbiAgICBjb25zdCBmb3VuZFkgPSB5LmdldCh0aGlzLnNlcmllcy55QXhpc0luZGV4KTtcblxuICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IHRoaXMuY29uZmlnPy50b29sdGlwPy50cmFja2luZztcblxuICAgIGNvbnN0IGxpbmVJbnRlcnNlY3Rpb24gPSAoXG4gICAgICBwMF94LFxuICAgICAgcDBfeSxcbiAgICAgIHAxX3gsXG4gICAgICBwMV95LFxuICAgICAgcDJfeCxcbiAgICAgIHAyX3ksXG4gICAgICBwM194LFxuICAgICAgcDNfeVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgclYgPSB7fSBhcyBhbnk7XG4gICAgICBsZXQgczFfeCwgczFfeSwgczJfeCwgczJfeTtcbiAgICAgIHMxX3ggPSBwMV94IC0gcDBfeDtcbiAgICAgIHMxX3kgPSBwMV95IC0gcDBfeTtcbiAgICAgIHMyX3ggPSBwM194IC0gcDJfeDtcbiAgICAgIHMyX3kgPSBwM195IC0gcDJfeTtcblxuICAgICAgbGV0IHMsIHQ7XG4gICAgICBzID1cbiAgICAgICAgKC1zMV95ICogKHAwX3ggLSBwMl94KSArIHMxX3ggKiAocDBfeSAtIHAyX3kpKSAvXG4gICAgICAgICgtczJfeCAqIHMxX3kgKyBzMV94ICogczJfeSk7XG4gICAgICB0ID1cbiAgICAgICAgKHMyX3ggKiAocDBfeSAtIHAyX3kpIC0gczJfeSAqIChwMF94IC0gcDJfeCkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcblxuICAgICAgaWYgKHMgPj0gMCAmJiBzIDw9IDEgJiYgdCA+PSAwICYmIHQgPD0gMSkge1xuICAgICAgICAvLyBDb2xsaXNpb24gZGV0ZWN0ZWRcbiAgICAgICAgclYueCA9IHAwX3ggKyB0ICogczFfeDtcbiAgICAgICAgclYueSA9IHAwX3kgKyB0ICogczFfeTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJWO1xuICAgIH07XG5cbiAgICBpZiAodG9vbHRpcFRyYWNraW5nID09PSBUb29sdGlwVHJhY2tpbmcueCkge1xuICAgICAgY29uc3QgYmlzZWN0ID0gZDMuYmlzZWN0b3IoKF86IEJhc2VQb2ludCkgPT4gXy54KS5yaWdodDtcbiAgICAgIGNvbnN0IHBvaW50ZXIgPSBtb3VzZVswXTtcblxuICAgICAgY29uc3QgeDAgPSBmb3VuZFguaW52ZXJ0KHBvaW50ZXIpO1xuXG4gICAgICBjb25zdCByaWdodElkID0gYmlzZWN0KHRoaXMuc2VyaWVzLmRhdGEsIHgwKTtcblxuICAgICAgY29uc3QgcmFuZ2UgPSBmb3VuZFkucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICBwb2ludDogeyB4OiBmb3VuZFguaW52ZXJ0KGludGVyc2VjdC54KSwgeTogZm91bmRZLmludmVydChpbnRlcnNlY3QueSkgfSxcbiAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBpbnRlcnNlY3QueCxcbiAgICAgICAgeTogaW50ZXJzZWN0LnksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLnkpLnJpZ2h0O1xuXG4gICAgICBjb25zdCB5MCA9IGZvdW5kWS5pbnZlcnQobW91c2VbMV0pO1xuXG4gICAgICBjb25zdCByaWdodElkID0gYmlzZWN0KHRoaXMuc2VyaWVzLmRhdGEsIHkwKTtcbiAgICAgIGNvbnN0IHJhbmdlID0gZm91bmRYLnJhbmdlKCk7XG5cbiAgICAgIGNvbnN0IGludGVyc2VjdCA9IGxpbmVJbnRlcnNlY3Rpb24oXG4gICAgICAgIHJhbmdlWzBdLFxuICAgICAgICBtb3VzZVsxXSxcbiAgICAgICAgcmFuZ2VbMV0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcblxuICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgIHBvaW50OiB7XG4gICAgICAgICAgeDogZm91bmRYLmludmVydChpbnRlcnNlY3QueCksXG4gICAgICAgICAgeTogZm91bmRZLmludmVydChpbnRlcnNlY3QueSksXG4gICAgICAgIH0sXG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIHk6IHkgfCBhc3luYyxcbiAgeDogeCB8IGFzeW5jXG59IGFzIHNjYWxlc1wiPlxuICA8c3ZnOmNpcmNsZVxuICAgIGNsYXNzPVwibGluZVwiXG4gICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIHNlcmllcy5kYXRhXCJcbiAgICBbYXR0ci5jeF09XCJzY2FsZXMueChwb2ludC54KVwiXG4gICAgW2F0dHIuY3ldPVwic2NhbGVzLnkocG9pbnQueSlcIlxuICAgIHI9XCIxXCJcbiAgICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLmNvbG9yXCJcbiAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInNlcmllcy5zdHlsZT8uc3Ryb2tlV2lkdGhcIj5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG48IS0tPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zZm9ybSB8IGFzeW5jIGFzIHRcIj4tLT5cbjwhLS0gIDxzdmc6Y2lyY2xlLS0+XG48IS0tICAgICpuZ0lmPVwidC54ICE9PSB1bmRlZmluZWQgJiYgdC55IT09IHVuZGVmaW5lZFwiLS0+XG48IS0tICAgIHI9XCIzXCItLT5cbjwhLS0gICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIi0tPlxuPCEtLSAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgnKyB0LnggKycsICcrIHQueSArJyknXCItLT5cbjwhLS0gID4tLT5cbjwhLS0gIDwvc3ZnOmNpcmNsZT4tLT5cbjwhLS08L25nLWNvbnRhaW5lcj4tLT5cblxuPCEtLTxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRNYXJrZXJzKCkgYXMgbWFya2Vyc1wiPi0tPlxuPCEtLSAgPHN2ZzpjaXJjbGUtLT5cbjwhLS0gICAgY2xhc3M9XCJtYXJrZXJcIi0tPlxuPCEtLSAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2YgbWFya2Vyc1wiLS0+XG48IS0tICAgIFtjbGFzcy5kcmFnZ2FibGUtbWFya2VyXT1cInBvaW50Py5tYXJrZXI/LmRyYWdnYWJsZVwiLS0+XG48IS0tICAgIFthdHRyLnJdPVwicG9pbnQubWFya2VyLnN0eWxlPy5yYWRpdXMgPz8gNVwiLS0+XG48IS0tICAgIFthdHRyLmZpbGxdPVwicG9pbnQubWFya2VyLnN0eWxlPy5maWxsID8/ICd0cmFuc3BhcmVudCdcIi0tPlxuPCEtLSAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCItLT5cbjwhLS0gICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlV2lkdGhcIi0tPlxuPCEtLSAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCItLT5cbjwhLS0gICAgW2F0dHIuY3hdPVwieChwb2ludC54KVwiLS0+XG48IS0tICAgIFthdHRyLmN5XT1cInkocG9pbnQueSlcIi0tPlxuPCEtLSAgPi0tPlxuPCEtLSAgPC9zdmc6Y2lyY2xlPi0tPlxuPCEtLTwvbmctY29udGFpbmVyPi0tPlxuXG5cblxuIl19
@@ -0,0 +1,68 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
2
+ import { SeriesBaseComponent } from '../../base/series-base.component';
3
+ import { LineSeriesComponent } from '../series/line/line-series.component';
4
+ import { BarSeriesComponent } from '../series/bar/bar-series.component';
5
+ import { tap } from 'rxjs';
6
+ import { SeriesType } from '../../model/enum/series-type';
7
+ import { ScatterSeriesComponent } from '../series/scatter-series/scatter-series.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../service/chart.service";
10
+ export class SeriesHostComponent {
11
+ constructor(viewContainerRef, chartService) {
12
+ this.viewContainerRef = viewContainerRef;
13
+ this.chartService = chartService;
14
+ this.defaultSeriesTypeMapping = new Map()
15
+ .set(SeriesType.line, LineSeriesComponent)
16
+ .set(SeriesType.bar, BarSeriesComponent)
17
+ .set(SeriesType.scatter, ScatterSeriesComponent);
18
+ this._init = false;
19
+ this.chartService.size
20
+ .pipe(tap(() => {
21
+ this._componentRef?.injector.get(ChangeDetectorRef).detectChanges();
22
+ }))
23
+ .subscribe();
24
+ }
25
+ ngOnInit() {
26
+ if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {
27
+ this.series.component =
28
+ this.defaultSeriesTypeMapping.get(this.series.type) ||
29
+ LineSeriesComponent;
30
+ }
31
+ this._componentRef = this.viewContainerRef.createComponent(this.series.component);
32
+ this._componentRef.instance.config = this.config;
33
+ this._componentRef.instance.series = this.series;
34
+ this._componentRef.instance.size = this.size;
35
+ this._componentRef.instance.rect = this.rect;
36
+ this._init = true;
37
+ }
38
+ ngOnDestroy() { }
39
+ ngOnChanges(changes) {
40
+ if (this._init && changes.hasOwnProperty('series')) {
41
+ this._componentRef.instance.config = this.config;
42
+ this._componentRef.instance.series = this.series;
43
+ this._componentRef.instance.size = this.size;
44
+ this._componentRef.instance.rect = this.rect;
45
+ this._componentRef.injector.get(ChangeDetectorRef).markForCheck();
46
+ this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
47
+ }
48
+ }
49
+ }
50
+ SeriesHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesHostComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.ChartService }], target: i0.ɵɵFactoryTarget.Component });
51
+ SeriesHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: SeriesHostComponent, selector: "[teta-series-host]", inputs: { config: "config", series: "series", size: "size", rect: "rect" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesHostComponent, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: '[teta-series-host]',
56
+ template: '',
57
+ changeDetection: ChangeDetectionStrategy.OnPush,
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.ChartService }]; }, propDecorators: { config: [{
60
+ type: Input
61
+ }], series: [{
62
+ type: Input
63
+ }], size: [{
64
+ type: Input
65
+ }], rect: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMtaG9zdC9zZXJpZXMtaG9zdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUt4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7O0FBTzNGLE1BQU0sT0FBTyxtQkFBbUI7SUFpQjlCLFlBQ1UsZ0JBQWtDLEVBQ2xDLFlBQTBCO1FBRDFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFiNUIsNkJBQXdCLEdBQUcsSUFBSSxHQUFHLEVBR3ZDO2FBQ0EsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUM7YUFDekMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7YUFDdkMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUUzQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBT3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTthQUNuQixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNuRCxtQkFBbUIsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3RCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxLQUFVLENBQUM7SUFFdEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRTdDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQzs7Z0hBM0RVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJKQUhwQixFQUFFOzJGQUdELG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7a0lBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXJpZXNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGluZVNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4uL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXJTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuLi9zZXJpZXMvYmFyL2Jhci1zZXJpZXMuY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VyaWVzVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vc2VyaWVzLXR5cGUnO1xuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgU2NhdHRlclNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4uL3Nlcmllcy9zY2F0dGVyLXNlcmllcy9zY2F0dGVyLXNlcmllcy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdGV0YS1zZXJpZXMtaG9zdF0nLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJpZXNIb3N0Q29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIHNlcmllczogU2VyaWVzPFQ+O1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSByZWN0OiBhbnk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0U2VyaWVzVHlwZU1hcHBpbmcgPSBuZXcgTWFwPFxuICAgIFNlcmllc1R5cGUsXG4gICAgdHlwZW9mIFNlcmllc0Jhc2VDb21wb25lbnRcbiAgPigpXG4gICAgLnNldChTZXJpZXNUeXBlLmxpbmUsIExpbmVTZXJpZXNDb21wb25lbnQpXG4gICAgLnNldChTZXJpZXNUeXBlLmJhciwgQmFyU2VyaWVzQ29tcG9uZW50KVxuICAgIC5zZXQoU2VyaWVzVHlwZS5zY2F0dGVyLCBTY2F0dGVyU2VyaWVzQ29tcG9uZW50KTtcblxuICBwcml2YXRlIF9pbml0ID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmPy5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghU2VyaWVzQmFzZUNvbXBvbmVudC5pc1Byb3RvdHlwZU9mKHRoaXMuc2VyaWVzLmNvbXBvbmVudCkpIHtcbiAgICAgIHRoaXMuc2VyaWVzLmNvbXBvbmVudCA9XG4gICAgICAgIHRoaXMuZGVmYXVsdFNlcmllc1R5cGVNYXBwaW5nLmdldCh0aGlzLnNlcmllcy50eXBlKSB8fFxuICAgICAgICBMaW5lU2VyaWVzQ29tcG9uZW50O1xuICAgIH1cblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICB0aGlzLnNlcmllcy5jb21wb25lbnRcbiAgICApO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VyaWVzID0gdGhpcy5zZXJpZXM7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnNpemUgPSB0aGlzLnNpemU7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnJlY3QgPSB0aGlzLnJlY3Q7XG4gICAgdGhpcy5faW5pdCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbml0ICYmIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NlcmllcycpKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VyaWVzID0gdGhpcy5zZXJpZXM7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5yZWN0ID0gdGhpcy5yZWN0O1xuXG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { filter, map, merge, takeWhile, tap } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../service/chart.service";
5
+ import * as i2 from "../../service/zoom.service";
6
+ import * as i3 from "@angular/platform-browser";
7
+ import * as i4 from "@angular/common";
8
+ export class TooltipComponent {
9
+ constructor(svc, cdr, zoomService, sanitizer, _zone) {
10
+ this.svc = svc;
11
+ this.cdr = cdr;
12
+ this.zoomService = zoomService;
13
+ this.sanitizer = sanitizer;
14
+ this._zone = _zone;
15
+ this.tooltips = [];
16
+ this.alive = true;
17
+ }
18
+ ngOnInit() {
19
+ this.display = this.svc.pointerMove.pipe(map((event) => {
20
+ return event.type === 'mousemove' ? 1 : 0;
21
+ }), tap(() => {
22
+ setTimeout(() => {
23
+ this.cdr.detectChanges();
24
+ });
25
+ }));
26
+ this.position = this.svc.pointerMove.pipe(filter((event) => !!event), map((_) => {
27
+ return this.getPoisition(_);
28
+ }), tap(() => this.cdr.detectChanges()));
29
+ const transformHtml = (html) => {
30
+ return this.sanitizer.bypassSecurityTrustHtml(html);
31
+ };
32
+ const defaultFormatter = (tooltips) => {
33
+ let html = '';
34
+ tooltips.forEach((_) => {
35
+ const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;
36
+ html += `<div class="display-flex align-center"><span class="margin-right-1" style="${indicatorStyle}"></span>
37
+ <span class="font-title-3">${_.series.name}
38
+ <span class="font-body-3">x: ${_.point.x?.toFixed(2)} y: ${_.point.y?.toFixed(2)}</span></span></div>`;
39
+ });
40
+ return transformHtml(html);
41
+ };
42
+ const formatter = this.config?.tooltip?.format;
43
+ this.displayTooltips = merge(this.svc.pointerMove.pipe(tap((_) => (this.tooltips = []))), this.svc.tooltips).pipe(takeWhile((_) => this.alive), filter((data) => !(data instanceof MouseEvent)), map((tooltip) => {
44
+ if (tooltip) {
45
+ this.tooltips.push(tooltip);
46
+ }
47
+ const formatted = formatter
48
+ ? formatter(this.tooltips)
49
+ : defaultFormatter(this.tooltips);
50
+ return formatted;
51
+ }));
52
+ }
53
+ getPoisition(event) {
54
+ const centerX = this.size.width / 2;
55
+ const centerY = this.size.height / 2;
56
+ const padding = { x: 10, y: 10 };
57
+ const scene = {
58
+ left: event.pageX > centerX ? 'initial' : `${event.pageX + padding.x}px`,
59
+ top: event.pageY > centerY ? 'initial' : `${event.pageY + padding.y}px`,
60
+ bottom: event.pageY > centerY
61
+ ? `${window.innerHeight - event.pageY}px`
62
+ : 'initial',
63
+ right: event.pageX > centerX
64
+ ? `${window.innerWidth - event.pageX + padding.x}px`
65
+ : 'initial',
66
+ };
67
+ return scene;
68
+ }
69
+ ngOnDestroy() {
70
+ this.alive = false;
71
+ }
72
+ }
73
+ TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TooltipComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ZoomService }, { token: i3.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
74
+ TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, ngImport: i0, template: "<ng-container *ngIf=\"position | async as p\">\n\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2 padding-2 border-radius-1\"\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left]=\"p.left\"\n [style.top]=\"p.top\"\n [style.bottom]=\"p.bottom\"\n [style.right]=\"p.right\"\n [innerHTML]=\"displayTooltips | async\">\n </div>\n</ng-container>\n\n", styles: [":host{position:absolute;z-index:2}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TooltipComponent, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: 'teta-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"position | async as p\">\n\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2 padding-2 border-radius-1\"\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left]=\"p.left\"\n [style.top]=\"p.top\"\n [style.bottom]=\"p.bottom\"\n [style.right]=\"p.right\"\n [innerHTML]=\"displayTooltips | async\">\n </div>\n</ng-container>\n\n", styles: [":host{position:absolute;z-index:2}\n"] }]
78
+ }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { size: [{
79
+ type: Input
80
+ }], config: [{
81
+ type: Input
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQWF0RSxNQUFNLE9BQU8sZ0JBQWdCO0lBbUIzQixZQUNVLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFNBQXVCLEVBQ3ZCLEtBQWE7UUFKYixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQVh2QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRU4sVUFBSyxHQUFHLElBQUksQ0FBQztJQVVsQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZ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LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIHRha2VXaGlsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBJRGlzcGxheVRvb2x0aXAgfSBmcm9tICcuLi8uLi9tb2RlbC9pLWRpc3BsYXktdG9vbHRpcCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10b29sdGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcblxuICBwb3NpdGlvbjogT2JzZXJ2YWJsZTx7XG4gICAgbGVmdDogc3RyaW5nO1xuICAgIHRvcDogc3RyaW5nO1xuICAgIGJvdHRvbTogc3RyaW5nO1xuICAgIHJpZ2h0OiBzdHJpbmc7XG4gIH0+O1xuXG4gIGRpc3BsYXlUb29sdGlwczogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHRvb2x0aXBzID0gW107XG5cbiAgcHJpdmF0ZSBhbGl2ZSA9IHRydWU7XG5cbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLnN2Yy5wb2ludGVyTW92ZS5waXBlKFxuICAgICAgbWFwKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAnbW91c2Vtb3ZlJyA/IDEgOiAwO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiAhIWV2ZW50KSxcbiAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQb2lzaXRpb24oXyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybUh0bWwgPSAoaHRtbCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Rm9ybWF0dGVyID0gKHRvb2x0aXBzOiBJRGlzcGxheVRvb2x0aXBbXSkgPT4ge1xuICAgICAgbGV0IGh0bWwgPSAnJztcblxuICAgICAgdG9vbHRpcHMuZm9yRWFjaCgoXykgPT4ge1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JTdHlsZSA9IGBkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTBweDsgaGVpZ2h0OiAycHg7IGJhY2tncm91bmQtY29sb3I6ICR7Xz8uc2VyaWVzPy5jb2xvcn1gO1xuXG4gICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJkaXNwbGF5LWZsZXggYWxpZ24tY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJtYXJnaW4tcmlnaHQtMVwiIHN0eWxlPVwiJHtpbmRpY2F0b3JTdHlsZX1cIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXRpdGxlLTNcIj4ke18uc2VyaWVzLm5hbWV9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktM1wiPng6ICR7Xy5wb2ludC54Py50b0ZpeGVkKFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9IHk6ICR7Xy5wb2ludC55Py50b0ZpeGVkKDIpfTwvc3Bhbj48L3NwYW4+PC9kaXY+YDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdHJhbnNmb3JtSHRtbChodG1sKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZm9ybWF0dGVyID0gdGhpcy5jb25maWc/LnRvb2x0aXA/LmZvcm1hdDtcblxuICAgIHRoaXMuZGlzcGxheVRvb2x0aXBzID0gbWVyZ2UoXG4gICAgICB0aGlzLnN2Yy5wb2ludGVyTW92ZS5waXBlKHRhcCgoXykgPT4gKHRoaXMudG9vbHRpcHMgPSBbXSkpKSxcbiAgICAgIHRoaXMuc3ZjLnRvb2x0aXBzXG4gICAgKS5waXBlKFxuICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgIGZpbHRlcigoZGF0YSkgPT4gIShkYXRhIGluc3RhbmNlb2YgTW91c2VFdmVudCkpLFxuICAgICAgbWFwKCh0b29sdGlwOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRvb2x0aXApIHtcbiAgICAgICAgICB0aGlzLnRvb2x0aXBzLnB1c2godG9vbHRpcCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJcbiAgICAgICAgICA/IGZvcm1hdHRlcih0aGlzLnRvb2x0aXBzKVxuICAgICAgICAgIDogZGVmYXVsdEZvcm1hdHRlcih0aGlzLnRvb2x0aXBzKTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb2lzaXRpb24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGNvbnN0IGNlbnRlclggPSB0aGlzLnNpemUud2lkdGggLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSB0aGlzLnNpemUuaGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSB7IHg6IDEwLCB5OiAxMCB9O1xuXG4gICAgY29uc3Qgc2NlbmUgPSB7XG4gICAgICBsZWZ0OiBldmVudC5wYWdlWCA+IGNlbnRlclggPyAnaW5pdGlhbCcgOiBgJHtldmVudC5wYWdlWCArIHBhZGRpbmcueH1weGAsXG4gICAgICB0b3A6IGV2ZW50LnBhZ2VZID4gY2VudGVyWSA/ICdpbml0aWFsJyA6IGAke2V2ZW50LnBhZ2VZICsgcGFkZGluZy55fXB4YCxcbiAgICAgIGJvdHRvbTpcbiAgICAgICAgZXZlbnQucGFnZVkgPiBjZW50ZXJZXG4gICAgICAgICAgPyBgJHt3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5wYWdlWX1weGBcbiAgICAgICAgICA6ICdpbml0aWFsJyxcbiAgICAgIHJpZ2h0OlxuICAgICAgICBldmVudC5wYWdlWCA+IGNlbnRlclhcbiAgICAgICAgICA/IGAke3dpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQucGFnZVggKyBwYWRkaW5nLnh9cHhgXG4gICAgICAgICAgOiAnaW5pdGlhbCcsXG4gICAgfTtcblxuICAgIHJldHVybiBzY2VuZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvc2l0aW9uIHwgYXN5bmMgYXMgcFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjaGFydC10b29sdGlwIGNvbG9yLXRleHQtOTAgYmctYmFja2dyb3VuZC01MCBzaGFkb3ctMiBwYWRkaW5nLTIgYm9yZGVyLXJhZGl1cy0xXCJcbiAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiJ2ZpeGVkJ1wiXG4gICAgICAgW3N0eWxlLm9wYWNpdHldPVwiZGlzcGxheSB8IGFzeW5jXCJcbiAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lOyBtaW4td2lkdGg6IDIwMHB4O1wiXG4gICAgICAgW3N0eWxlLmxlZnRdPVwicC5sZWZ0XCJcbiAgICAgICBbc3R5bGUudG9wXT1cInAudG9wXCJcbiAgICAgICBbc3R5bGUuYm90dG9tXT1cInAuYm90dG9tXCJcbiAgICAgICBbc3R5bGUucmlnaHRdPVwicC5yaWdodFwiXG4gICAgICAgW2lubmVySFRNTF09XCJkaXNwbGF5VG9vbHRpcHMgfCBhc3luY1wiPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import * as i0 from "@angular/core";
4
+ export class XAxisComponent {
5
+ constructor() {
6
+ this._alive = true;
7
+ }
8
+ set scale(scale) {
9
+ this._scale = scale;
10
+ this.draw();
11
+ }
12
+ get scale() {
13
+ return this._scale;
14
+ }
15
+ ngOnInit() { }
16
+ ngOnDestroy() {
17
+ this._alive = false;
18
+ }
19
+ ngAfterViewInit() {
20
+ this.draw();
21
+ }
22
+ draw() {
23
+ if (!this.node || !this.axis) {
24
+ return;
25
+ }
26
+ const axis = this.axis.options.opposite
27
+ ? d3
28
+ .axisTop(this.scale)
29
+ .tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter())
30
+ : d3
31
+ .axisBottom(this.scale)
32
+ .tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter());
33
+ d3.select(this.node.nativeElement)
34
+ .call(axis)
35
+ .call((_) => _.select('.domain').remove());
36
+ }
37
+ }
38
+ XAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: XAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ XAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: XAxisComponent, selector: "[teta-x-axis]", inputs: { axis: "axis", scale: "scale", size: "size" }, viewQueries: [{ propertyName: "node", first: true, predicate: ["svg"], descendants: true }], ngImport: i0, template: "<svg:g #svg></svg:g>\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: XAxisComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: '[teta-x-axis]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:g #svg></svg:g>\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"] }]
43
+ }], ctorParameters: function () { return []; }, propDecorators: { axis: [{
44
+ type: Input
45
+ }], scale: [{
46
+ type: Input
47
+ }], size: [{
48
+ type: Input
49
+ }], node: [{
50
+ type: ViewChild,
51
+ args: ['svg']
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveC1heGlzL3gtYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3gtYXhpcy94LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFVekIsTUFBTSxPQUFPLGNBQWM7SUFrQnpCO1FBRlEsV0FBTSxHQUFHLElBQUksQ0FBQztJQUVQLENBQUM7SUFoQmhCLElBQWEsS0FBSyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBVUQsUUFBUSxLQUFVLENBQUM7SUFFbkIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNyQyxDQUFDLENBQUMsRUFBRTtpQkFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsVUFBVSxDQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQzdEO1lBQ0wsQ0FBQyxDQUFDLEVBQUU7aUJBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ3RCLFVBQVUsQ0FDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUM3RCxDQUFDO1FBRVIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7MkdBbERVLGNBQWM7K0ZBQWQsY0FBYywwTUMxQjNCLHdCQUNBOzJGRHlCYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTswRUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBVUcsSUFBSTtzQkFBWixLQUFLO2dCQUNZLElBQUk7c0JBQXJCLFNBQVM7dUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWVyZ2UsIHRha2VXaGlsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXgtYXhpc10nLFxuICB0ZW1wbGF0ZVVybDogJy4veC1heGlzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veC1heGlzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBYQXhpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2V0IHNjYWxlKHNjYWxlOiBhbnkpIHtcbiAgICB0aGlzLl9zY2FsZSA9IHNjYWxlO1xuXG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBnZXQgc2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjYWxlO1xuICB9XG5cbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQFZpZXdDaGlsZCgnc3ZnJykgbm9kZTogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9zY2FsZTogYW55O1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3KCkge1xuICAgIGlmICghdGhpcy5ub2RlIHx8ICF0aGlzLmF4aXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBheGlzID0gdGhpcy5heGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgID8gZDNcbiAgICAgICAgICAuYXhpc1RvcCh0aGlzLnNjYWxlKVxuICAgICAgICAgIC50aWNrRm9ybWF0KFxuICAgICAgICAgICAgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/PyB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpXG4gICAgICAgICAgKVxuICAgICAgOiBkM1xuICAgICAgICAgIC5heGlzQm90dG9tKHRoaXMuc2NhbGUpXG4gICAgICAgICAgLnRpY2tGb3JtYXQoXG4gICAgICAgICAgICB0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0ID8/IHRoaXMuYXhpcy5kZWZhdWx0Rm9ybWF0dGVyKClcbiAgICAgICAgICApO1xuXG4gICAgZDMuc2VsZWN0KHRoaXMubm9kZS5uYXRpdmVFbGVtZW50KVxuICAgICAgLmNhbGwoYXhpcylcbiAgICAgIC5jYWxsKChfKSA9PiBfLnNlbGVjdCgnLmRvbWFpbicpLnJlbW92ZSgpKTtcbiAgfVxufVxuIiwiPHN2ZzpnICNzdmc+PC9zdmc6Zz5cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import * as i0 from "@angular/core";
4
+ export class YAxisComponent {
5
+ constructor() {
6
+ this._alive = true;
7
+ }
8
+ set scale(scale) {
9
+ this._scale = scale;
10
+ this.draw();
11
+ }
12
+ get scale() {
13
+ return this._scale;
14
+ }
15
+ ngOnInit() { }
16
+ ngOnDestroy() {
17
+ this._alive = false;
18
+ }
19
+ ngAfterViewInit() {
20
+ this.draw();
21
+ }
22
+ getLabelTransform() {
23
+ return `translate(${this.axis.options.opposite
24
+ ? this.axis.selfSize - 24
25
+ : -this.axis.selfSize + 24}, ${this.size.height / 2}) rotate(${this.axis.options.opposite ? '90' : '-90'})`;
26
+ }
27
+ draw() {
28
+ if (!this.node || !this.axis) {
29
+ return;
30
+ }
31
+ const axis = this.axis.options.opposite
32
+ ? d3
33
+ .axisRight(this.scale)
34
+ .tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter())
35
+ : d3
36
+ .axisLeft(this.scale)
37
+ .tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter());
38
+ d3.select(this.node.nativeElement)
39
+ .call(axis)
40
+ .call((_) => _.select('.domain').remove());
41
+ }
42
+ }
43
+ YAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: YAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ YAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: YAxisComponent, selector: "[teta-y-axis]", inputs: { axis: "axis", scale: "scale", size: "size" }, viewQueries: [{ propertyName: "node", first: true, predicate: ["svg"], descendants: true }], ngImport: i0, template: "<svg:g #svg></svg:g>\n<svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text dy=\"-8px\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n</svg:g>\n", styles: [":host{shape-rendering:crispEdges}::ng-deep .tick text{fill:var(--color-text-70)}::ng-deep .tick line{stroke:var(--color-text-20)}:host .label-axis{fill:var(--color-text-70)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: YAxisComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: '[teta-y-axis]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:g #svg></svg:g>\n<svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text dy=\"-8px\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n</svg:g>\n", styles: [":host{shape-rendering:crispEdges}::ng-deep .tick text{fill:var(--color-text-70)}::ng-deep .tick line{stroke:var(--color-text-20)}:host .label-axis{fill:var(--color-text-70)}\n"] }]
48
+ }], ctorParameters: function () { return []; }, propDecorators: { axis: [{
49
+ type: Input
50
+ }], scale: [{
51
+ type: Input
52
+ }], size: [{
53
+ type: Input
54
+ }], node: [{
55
+ type: ViewChild,
56
+ args: ['svg', { static: false }]
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveS1heGlzL3ktYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFRekIsTUFBTSxPQUFPLGNBQWM7SUFnQnpCO1FBSFEsV0FBTSxHQUFHLElBQUksQ0FBQztJQUdQLENBQUM7SUFkaEIsSUFBYSxLQUFLLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFTRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxhQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUU7WUFDekIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFDNUIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUN0QyxHQUFHLENBQUM7SUFDTixDQUFDO0lBRU8sSUFBSTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ3JDLENBQUMsQ0FBQyxFQUFFO2lCQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2lCQUNyQixVQUFVLENBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDN0Q7WUFDTCxDQUFDLENBQUMsRUFBRTtpQkFDQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDcEIsVUFBVSxDQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQzdELENBQUM7UUFFUixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzsyR0ExRFUsY0FBYzsrRkFBZCxjQUFjLDBNQ3BCM0IsK05BSUE7MkZEZ0JhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzBFQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ08sS0FBSztzQkFBakIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQytCLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEteS1heGlzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi95LWF4aXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi95LWF4aXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFlBeGlzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2V0IHNjYWxlKHNjYWxlOiBhbnkpIHtcbiAgICB0aGlzLl9zY2FsZSA9IHNjYWxlO1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgZ2V0IHNjYWxlKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2FsZTtcbiAgfVxuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBAVmlld0NoaWxkKCdzdmcnLCB7IHN0YXRpYzogZmFsc2UgfSkgbm9kZTogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX3NjYWxlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgZ2V0TGFiZWxUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgIHRoaXMuYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgID8gdGhpcy5heGlzLnNlbGZTaXplIC0gMjRcbiAgICAgICAgOiAtdGhpcy5heGlzLnNlbGZTaXplICsgMjRcbiAgICB9LCAke3RoaXMuc2l6ZS5oZWlnaHQgLyAyfSkgcm90YXRlKCR7XG4gICAgICB0aGlzLmF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/ICc5MCcgOiAnLTkwJ1xuICAgIH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgZHJhdygpIHtcbiAgICBpZiAoIXRoaXMubm9kZSB8fCAhdGhpcy5heGlzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXhpcyA9IHRoaXMuYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICA/IGQzXG4gICAgICAgICAgLmF4aXNSaWdodCh0aGlzLnNjYWxlKVxuICAgICAgICAgIC50aWNrRm9ybWF0KFxuICAgICAgICAgICAgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/PyB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpXG4gICAgICAgICAgKVxuICAgICAgOiBkM1xuICAgICAgICAgIC5heGlzTGVmdCh0aGlzLnNjYWxlKVxuICAgICAgICAgIC50aWNrRm9ybWF0KFxuICAgICAgICAgICAgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/PyB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpXG4gICAgICAgICAgKTtcblxuICAgIGQzLnNlbGVjdCh0aGlzLm5vZGUubmF0aXZlRWxlbWVudClcbiAgICAgIC5jYWxsKGF4aXMpXG4gICAgICAuY2FsbCgoXykgPT4gXy5zZWxlY3QoJy5kb21haW4nKS5yZW1vdmUoKSk7XG4gIH1cbn1cbiIsIjxzdmc6ZyAjc3ZnPjwvc3ZnOmc+XG48c3ZnOmcgY2xhc3M9XCJsYWJlbC1heGlzIGZvbnQtY2FwdGlvblwiIFthdHRyLnRyYW5zZm9ybV09XCJnZXRMYWJlbFRyYW5zZm9ybSgpXCI+XG4gIDx0ZXh0IGR5PVwiLThweFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIj57eyBheGlzLm9wdGlvbnMudGl0bGUgfX08L3RleHQ+XG48L3N2ZzpnPlxuIl19
@@ -10,11 +10,12 @@ import { GridlinesComponent } from './chart-container/gridlines/gridlines.compon
10
10
  import { XAxisComponent } from './chart-container/x-axis/x-axis.component';
11
11
  import { YAxisComponent } from './chart-container/y-axis/y-axis.component';
12
12
  import { PlotlineComponent } from './chart-container/plotline/plotline.component';
13
- import { PlotbandComponent } from './chart-container/plotband/plotband.component';
13
+ import { PlotBandComponent } from './chart-container/plotband/plot-band.component';
14
14
  import { BarSeriesComponent } from './chart-container/series/bar/bar-series.component';
15
15
  import { TooltipComponent } from './chart-container/tooltip/tooltip.component';
16
16
  import { ZoomableDirective } from './directives/zoomable.directive';
17
17
  import { BrushableDirective } from './directives/brushable.directive';
18
+ import { ScatterSeriesComponent } from './chart-container/series/scatter-series/scatter-series.component';
18
19
  import * as i0 from "@angular/core";
19
20
  export class ChartModule {
20
21
  }
@@ -29,11 +30,12 @@ ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
29
30
  XAxisComponent,
30
31
  YAxisComponent,
31
32
  PlotlineComponent,
32
- PlotbandComponent,
33
+ PlotBandComponent,
33
34
  BarSeriesComponent,
34
35
  TooltipComponent,
35
36
  ZoomableDirective,
36
- BrushableDirective], imports: [CommonModule], exports: [ChartComponent] });
37
+ BrushableDirective,
38
+ ScatterSeriesComponent], imports: [CommonModule], exports: [ChartComponent] });
37
39
  ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, imports: [[CommonModule]] });
38
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, decorators: [{
39
41
  type: NgModule,
@@ -49,14 +51,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
49
51
  XAxisComponent,
50
52
  YAxisComponent,
51
53
  PlotlineComponent,
52
- PlotbandComponent,
54
+ PlotBandComponent,
53
55
  BarSeriesComponent,
54
56
  TooltipComponent,
55
57
  ZoomableDirective,
56
58
  BrushableDirective,
59
+ ScatterSeriesComponent,
57
60
  ],
58
61
  exports: [ChartComponent],
59
62
  imports: [CommonModule],
60
63
  }]
61
64
  }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBdUJ0RSxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQW5CcEIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixrQkFBa0IsYUFHVixZQUFZLGFBRFosY0FBYzt5R0FHYixXQUFXLFlBRmIsQ0FBQyxZQUFZLENBQUM7MkZBRVosV0FBVztrQkFyQnZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXJpZXNIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlcmllc0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZGxpbmVzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgWEF4aXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci94LWF4aXMveC1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBZQXhpc0NvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGxpbmUvcGxvdGxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RiYW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdGJhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhclNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWm9vbWFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJydXNoYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9icnVzaGFibGUuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhcnRDb21wb25lbnQsXG4gICAgU2VyaWVzSG9zdENvbXBvbmVudCxcbiAgICBDaGFydENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBMZWdlbmRDb21wb25lbnQsXG4gICAgU2VyaWVzQmFzZUNvbXBvbmVudCxcbiAgICBMaW5lU2VyaWVzQ29tcG9uZW50LFxuICAgIEdyaWRsaW5lc0NvbXBvbmVudCxcbiAgICBYQXhpc0NvbXBvbmVudCxcbiAgICBZQXhpc0NvbXBvbmVudCxcbiAgICBQbG90bGluZUNvbXBvbmVudCxcbiAgICBQbG90YmFuZENvbXBvbmVudCxcbiAgICBCYXJTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBab29tYWJsZURpcmVjdGl2ZSxcbiAgICBCcnVzaGFibGVEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtDaGFydENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydE1vZHVsZSB7fVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7O0FBd0IxRyxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQXBCcEIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsc0JBQXNCLGFBR2QsWUFBWSxhQURaLGNBQWM7eUdBR2IsV0FBVyxZQUZiLENBQUMsWUFBWSxDQUFDOzJGQUVaLFdBQVc7a0JBdEJ2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXJpZXNIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlcmllc0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZGxpbmVzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgWEF4aXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci94LWF4aXMveC1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBZQXhpc0NvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGxpbmUvcGxvdGxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RCYW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXJTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYmFyL2Jhci1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFpvb21hYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3pvb21hYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCcnVzaGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYnJ1c2hhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTY2F0dGVyU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL3NjYXR0ZXItc2VyaWVzL3NjYXR0ZXItc2VyaWVzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIFNlcmllc0hvc3RDb21wb25lbnQsXG4gICAgQ2hhcnRDb250YWluZXJDb21wb25lbnQsXG4gICAgTGVnZW5kQ29tcG9uZW50LFxuICAgIFNlcmllc0Jhc2VDb21wb25lbnQsXG4gICAgTGluZVNlcmllc0NvbXBvbmVudCxcbiAgICBHcmlkbGluZXNDb21wb25lbnQsXG4gICAgWEF4aXNDb21wb25lbnQsXG4gICAgWUF4aXNDb21wb25lbnQsXG4gICAgUGxvdGxpbmVDb21wb25lbnQsXG4gICAgUGxvdEJhbmRDb21wb25lbnQsXG4gICAgQmFyU2VyaWVzQ29tcG9uZW50LFxuICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgWm9vbWFibGVEaXJlY3RpdmUsXG4gICAgQnJ1c2hhYmxlRGlyZWN0aXZlLFxuICAgIFNjYXR0ZXJTZXJpZXNDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtDaGFydENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydE1vZHVsZSB7fVxuIl19