@tetacom/ng-components 1.0.9 → 1.0.13

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 (27) hide show
  1. package/assets/intersect.svg +3 -0
  2. package/assets/lithotype-icons.svg +7 -1
  3. package/component/chart/chart/chart.component.d.ts +2 -1
  4. package/component/chart/core/chart.d.ts +2 -0
  5. package/component/chart/model/enum/dispatch-type.d.ts +2 -1
  6. package/component/chart/model/plot-band.d.ts +2 -0
  7. package/component/chart/model/point/base-point.d.ts +2 -0
  8. package/component/chart/model/point/marker-options.d.ts +9 -0
  9. package/component/icon/icon-sprite.directive.d.ts +1 -1
  10. package/component/input/text-field/text-field.component.d.ts +3 -1
  11. package/esm2020/component/chart/chart/chart.component.mjs +11 -4
  12. package/esm2020/component/chart/core/chart.mjs +23 -5
  13. package/esm2020/component/chart/drawer/line-drawer.mjs +38 -2
  14. package/esm2020/component/chart/drawer/spline-drawer.mjs +2 -1
  15. package/esm2020/component/chart/model/enum/dispatch-type.mjs +2 -1
  16. package/esm2020/component/chart/model/plot-band.mjs +2 -1
  17. package/esm2020/component/chart/model/point/base-point.mjs +1 -1
  18. package/esm2020/component/chart/model/point/marker-options.mjs +2 -0
  19. package/esm2020/component/icon/icon-sprite.directive.mjs +9 -2
  20. package/esm2020/component/input/text-field/text-field.component.mjs +15 -6
  21. package/esm2020/directive/only-number/only-number.directive.mjs +1 -2
  22. package/fesm2015/tetacom-ng-components.mjs +95 -16
  23. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  24. package/fesm2020/tetacom-ng-components.mjs +94 -15
  25. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/style/scroll.scss +9 -0
@@ -247,7 +247,15 @@ class IconSpriteDirective {
247
247
  this.bypassInterceptors = true;
248
248
  }
249
249
  ngOnInit() {
250
- this._iconService.addSprite(this.tetaIconSprite, this.bypassInterceptors);
250
+ var _a;
251
+ if (typeof this.tetaIconSprite === 'string') {
252
+ this._iconService.addSprite(this.tetaIconSprite, this.bypassInterceptors);
253
+ }
254
+ if (this.tetaIconSprite instanceof Array && ((_a = this.tetaIconSprite) === null || _a === void 0 ? void 0 : _a.length)) {
255
+ this.tetaIconSprite.forEach((sprite) => {
256
+ this._iconService.addSprite(sprite, this.bypassInterceptors);
257
+ });
258
+ }
251
259
  }
252
260
  }
253
261
  IconSpriteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: IconSpriteDirective, deps: [{ token: IconService }], target: i0.ɵɵFactoryTarget.Directive });
@@ -2693,7 +2701,6 @@ class OnlyNumberDirective {
2693
2701
  value = '0.0';
2694
2702
  }
2695
2703
  const valid = new RegExp(regex).test(value.toString());
2696
- console.log(value, valid);
2697
2704
  this._control.control.setValue(valid ? value : (_a = this._previousValue) !== null && _a !== void 0 ? _a : 0);
2698
2705
  }
2699
2706
  }
@@ -3555,6 +3562,7 @@ class TextFieldComponent {
3555
3562
  this.placeholder = '';
3556
3563
  this.disabled = false;
3557
3564
  this.onlyNumber = false;
3565
+ this.tabindex = 0;
3558
3566
  this.textField = true;
3559
3567
  this.value = '';
3560
3568
  }
@@ -3566,6 +3574,9 @@ class TextFieldComponent {
3566
3574
  this.input.nativeElement.blur();
3567
3575
  }
3568
3576
  }
3577
+ emitBlur() {
3578
+ this.onTouched();
3579
+ }
3569
3580
  registerOnChange(fn) {
3570
3581
  this.onChange = fn;
3571
3582
  }
@@ -3580,17 +3591,19 @@ class TextFieldComponent {
3580
3591
  this.value = input;
3581
3592
  this._cdr.detectChanges();
3582
3593
  }
3583
- onChange(input) { }
3584
- onTouched(input) { }
3594
+ onChange(input) {
3595
+ }
3596
+ onTouched() {
3597
+ }
3585
3598
  }
3586
3599
  TextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3587
- TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TextFieldComponent, selector: "teta-text-field", inputs: { placeholder: "placeholder", leftIconName: "leftIconName", disabled: "disabled", onlyNumber: "onlyNumber", invalid: "invalid" }, host: { listeners: { "click": "onFocus()" }, properties: { "class.text-field_disabled": "this.disabled", "class.text-field_invalid": "this.invalid", "class.text-field": "this.textField" } }, providers: [
3600
+ TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TextFieldComponent, selector: "teta-text-field", inputs: { placeholder: "placeholder", leftIconName: "leftIconName", disabled: "disabled", onlyNumber: "onlyNumber", invalid: "invalid" }, host: { listeners: { "click": "onFocus()" }, properties: { "class.text-field_disabled": "this.disabled", "class.text-field_invalid": "this.invalid", "attr.tabindex": "this.tabindex", "class.text-field": "this.textField" } }, providers: [
3588
3601
  {
3589
3602
  provide: NG_VALUE_ACCESSOR,
3590
3603
  useExisting: forwardRef(() => TextFieldComponent),
3591
3604
  multi: true,
3592
3605
  },
3593
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\n", styles: [""], components: [{ type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: OnlyNumberDirective, selector: "[tetaOnlyNumber]", inputs: ["tetaOnlyNumber", "allowDecimals", "allowSign", "decimalSeparator", "commaSeparator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3606
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\n", styles: [""], components: [{ type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: OnlyNumberDirective, selector: "[tetaOnlyNumber]", inputs: ["tetaOnlyNumber", "allowDecimals", "allowSign", "decimalSeparator", "commaSeparator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3594
3607
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldComponent, decorators: [{
3595
3608
  type: Component,
3596
3609
  args: [{ selector: 'teta-text-field', providers: [
@@ -3599,7 +3612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
3599
3612
  useExisting: forwardRef(() => TextFieldComponent),
3600
3613
  multi: true,
3601
3614
  },
3602
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\n", styles: [""] }]
3615
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\n", styles: [""] }]
3603
3616
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
3604
3617
  type: Input
3605
3618
  }], leftIconName: [{
@@ -3619,6 +3632,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
3619
3632
  }], input: [{
3620
3633
  type: ViewChild,
3621
3634
  args: ['input', { static: false }]
3635
+ }], tabindex: [{
3636
+ type: HostBinding,
3637
+ args: ['attr.tabindex']
3622
3638
  }], textField: [{
3623
3639
  type: HostBinding,
3624
3640
  args: ['class.text-field']
@@ -10046,15 +10062,17 @@ class BarDrawer {
10046
10062
  var DispatchType;
10047
10063
  (function (DispatchType) {
10048
10064
  DispatchType["moveLine"] = "moveLine";
10065
+ DispatchType["movePoint"] = "movePoint";
10049
10066
  })(DispatchType || (DispatchType = {}));
10050
10067
 
10051
10068
  class LineDrawer {
10052
10069
  constructor() {
10053
- this.dispatch = d3.dispatch(DispatchType.moveLine);
10070
+ this.dispatch = d3.dispatch(DispatchType.moveLine, DispatchType.movePoint);
10054
10071
  }
10055
10072
  draw(series, context, scaleX, scaleY, options) {
10056
10073
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
10057
10074
  const points = series.data;
10075
+ const markerPoints = points.filter((_) => _.marker);
10058
10076
  const path = d3
10059
10077
  .line()
10060
10078
  .curve(series.curveType)
@@ -10062,6 +10080,40 @@ class LineDrawer {
10062
10080
  .x((d) => scaleX(d.x))
10063
10081
  .y((d) => scaleY(d.y));
10064
10082
  const seriesIndex = options.series.findIndex((_) => _.id === series.id);
10083
+ if (markerPoints === null || markerPoints === void 0 ? void 0 : markerPoints.length) {
10084
+ const emit = (event, target) => {
10085
+ this.dispatch.apply(DispatchType.movePoint, {
10086
+ target: series,
10087
+ point: Object.assign({}, target),
10088
+ event,
10089
+ });
10090
+ };
10091
+ context
10092
+ .selectAll('circle')
10093
+ .data(markerPoints)
10094
+ .enter()
10095
+ .append('circle')
10096
+ .attr('class', 'draggable-marker')
10097
+ .attr('r', (d) => { var _a, _b; return ((_b = (_a = d.marker) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.radius) || 5; })
10098
+ .attr('cx', function (d) {
10099
+ return scaleX(d.x);
10100
+ })
10101
+ .attr('cy', function (d) {
10102
+ return scaleY(d.y);
10103
+ })
10104
+ .style('cursor', 'pointer')
10105
+ .style('fill', (d) => { var _a, _b; return ((_b = (_a = d.marker) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.color) || 'red'; })
10106
+ .attr('stroke', (d) => { var _a, _b; return ((_b = (_a = d.marker) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.stroke) || 'none'; })
10107
+ .attr('stroke-width', (d) => { var _a, _b; return ((_b = (_a = d.marker) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.strokeWidth) || 0; });
10108
+ context.selectAll('.draggable-marker').call(d3.drag().on('drag start end', function dragged(event, d) {
10109
+ var _a, _b;
10110
+ d.x = scaleX.invert((_a = event.sourceEvent) === null || _a === void 0 ? void 0 : _a.offsetX);
10111
+ d.y = scaleY.invert((_b = event.sourceEvent) === null || _b === void 0 ? void 0 : _b.offsetY);
10112
+ d3.select(this).attr('cx', scaleX(d.x)).attr('cy', scaleY(d.y));
10113
+ context.select('path').attr('d', path);
10114
+ emit(event, d);
10115
+ }));
10116
+ }
10065
10117
  context
10066
10118
  .append('path')
10067
10119
  .attr('class', (d) => (series === null || series === void 0 ? void 0 : series.drag.enable) ? 'draggable' : null)
@@ -10164,6 +10216,7 @@ class SplineDrawer {
10164
10216
  const path = d3
10165
10217
  .line()
10166
10218
  .curve(d3.curveCatmullRom)
10219
+ .defined((d) => d.x != null && d.y != null)
10167
10220
  .x((d) => scaleX(d.x))
10168
10221
  .y((d) => scaleY(d.y));
10169
10222
  context
@@ -10522,6 +10575,7 @@ class TetaChart {
10522
10575
  this.plotLinesMove$ = new Subject();
10523
10576
  this.plotBandsMove$ = new Subject();
10524
10577
  this.seriesMove$ = new Subject();
10578
+ this.pointMove$ = new Subject();
10525
10579
  this.zoom$ = new Subject();
10526
10580
  this._container = null;
10527
10581
  this._width = 0;
@@ -10543,6 +10597,7 @@ class TetaChart {
10543
10597
  this.plotLinesMove = this.plotLinesMove$.asObservable();
10544
10598
  this.plotBandsMove = this.plotBandsMove$.asObservable();
10545
10599
  this.seriesMove = this.seriesMove$.asObservable();
10600
+ this.pointMove = this.pointMove$.asObservable();
10546
10601
  this.zoom = this.zoom$.asObservable();
10547
10602
  }
10548
10603
  redraw(options) {
@@ -11010,7 +11065,12 @@ class TetaChart {
11010
11065
  .attr('x', (d) => x(d.from))
11011
11066
  .attr('y', 0)
11012
11067
  .attr('width', (d) => Math.abs(x(d.to) - x(d.from)))
11013
- .attr('fill', (d) => d.color)
11068
+ .attr('fill', (d) => {
11069
+ if (d.image) {
11070
+ return `url(#${d.image})`;
11071
+ }
11072
+ return d.color;
11073
+ })
11014
11074
  .style('opacity', (d) => { var _a; return (_a = d.opacity) !== null && _a !== void 0 ? _a : 1; })
11015
11075
  .attr('height', plotBandHeight > 0 ? plotBandHeight : 0)
11016
11076
  .attr('transform', `translate(0, ${this._options.bounds.top})`);
@@ -11255,7 +11315,12 @@ class TetaChart {
11255
11315
  .attr('x', 0)
11256
11316
  .attr('y', (d) => y(d.from))
11257
11317
  .attr('width', (d) => plotBandWidth)
11258
- .attr('fill', (d) => d.color)
11318
+ .attr('fill', (d) => {
11319
+ if (d.image) {
11320
+ return `url(#${d.image})`;
11321
+ }
11322
+ return d.color;
11323
+ })
11259
11324
  .style('opacity', (d) => { var _a; return (_a = d.opacity) !== null && _a !== void 0 ? _a : 1; })
11260
11325
  .attr('height', (d) => Math.abs(y(d.to) - y(d.from)))
11261
11326
  .attr('cursor', (d) => (d.draggable ? 'move' : 'default'));
@@ -11339,7 +11404,7 @@ class TetaChart {
11339
11404
  .attr('class', 'series')
11340
11405
  .attr('clip-path', `url(#draw-window-${this.uniqId})`);
11341
11406
  series === null || series === void 0 ? void 0 : series.forEach((seriesItem, index) => {
11342
- var _a;
11407
+ var _a, _b;
11343
11408
  if (seriesItem.renderTo === 'canvas') {
11344
11409
  d3.select(this._container.nativeElement)
11345
11410
  .select('canvas')
@@ -11397,9 +11462,15 @@ class TetaChart {
11397
11462
  const emit = (event) => {
11398
11463
  this.seriesMove$.next(event);
11399
11464
  };
11465
+ const emitPoint = (event) => {
11466
+ this.pointMove$.next(event);
11467
+ };
11400
11468
  (_a = drawer === null || drawer === void 0 ? void 0 : drawer.dispatch) === null || _a === void 0 ? void 0 : _a.on(DispatchType.moveLine, function () {
11401
11469
  emit(this);
11402
11470
  });
11471
+ (_b = drawer === null || drawer === void 0 ? void 0 : drawer.dispatch) === null || _b === void 0 ? void 0 : _b.on(DispatchType.movePoint, function () {
11472
+ emitPoint(this);
11473
+ });
11403
11474
  });
11404
11475
  }
11405
11476
  createTooltip() {
@@ -11447,7 +11518,7 @@ class TetaChart {
11447
11518
  color: d.color,
11448
11519
  name: d.name,
11449
11520
  });
11450
- return `translate(${!isNaN(data === null || data === void 0 ? void 0 : data.x) ? foundX(data.x) : -10}, ${!isNaN(data === null || data === void 0 ? void 0 : data.y) ? foundY(data.y) : -10})`;
11521
+ return `translate(${!isNaN(data === null || data === void 0 ? void 0 : data.x) && (data === null || data === void 0 ? void 0 : data.x) != null ? foundX(data.x) : -10}, ${!isNaN(data === null || data === void 0 ? void 0 : data.y) && (data === null || data === void 0 ? void 0 : data.y) != null ? foundY(data.y) : -10})`;
11451
11522
  }
11452
11523
  if (this._options.tooltip.tracking === 'y') {
11453
11524
  const sorted = [...d.data].sort((a, b) => d3.ascending(a.y, b.y));
@@ -11460,7 +11531,7 @@ class TetaChart {
11460
11531
  color: d.color,
11461
11532
  name: d.name,
11462
11533
  });
11463
- return `translate(${foundX(data.x)}, ${foundY(data.y)})`;
11534
+ return `translate(${!isNaN(data === null || data === void 0 ? void 0 : data.x) && (data === null || data === void 0 ? void 0 : data.x) != null ? foundX(data.x) : -10}, ${!isNaN(data === null || data === void 0 ? void 0 : data.y) && (data === null || data === void 0 ? void 0 : data.y) != null ? foundY(data.y) : -10})`;
11464
11535
  }
11465
11536
  });
11466
11537
  if ((_a = this._options.tooltip) === null || _a === void 0 ? void 0 : _a.format) {
@@ -11848,6 +11919,7 @@ class ChartComponent {
11848
11919
  this.plotLinesMove = new EventEmitter();
11849
11920
  this.plotBandsMove = new EventEmitter();
11850
11921
  this.seriesMove = new EventEmitter();
11922
+ this.pointMove = new EventEmitter();
11851
11923
  this.zoomChange = new EventEmitter();
11852
11924
  this._alive = true;
11853
11925
  this.size$ = new Subject();
@@ -11896,8 +11968,7 @@ class ChartComponent {
11896
11968
  (_b = this._chart) === null || _b === void 0 ? void 0 : _b.setZoom(this.zoom);
11897
11969
  }
11898
11970
  }
11899
- ngOnInit() {
11900
- }
11971
+ ngOnInit() { }
11901
11972
  ngAfterViewInit() {
11902
11973
  this._observer = new ResizeObserver((entries) => {
11903
11974
  const { contentRect } = entries[0];
@@ -11945,6 +12016,11 @@ class ChartComponent {
11945
12016
  this._chart.seriesMove
11946
12017
  .pipe(takeWhile((_) => this._alive))
11947
12018
  .subscribe((_) => this.seriesMove.emit(_));
12019
+ this._chart.pointMove
12020
+ .pipe(takeWhile((_) => this._alive))
12021
+ .subscribe((_) => {
12022
+ this.pointMove.emit(_);
12023
+ });
11948
12024
  this._chart.zoom
11949
12025
  .pipe(takeWhile((_) => this._alive), map((_) => {
11950
12026
  this.zoomChange.emit(_);
@@ -11962,7 +12038,7 @@ class ChartComponent {
11962
12038
  }
11963
12039
  }
11964
12040
  ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
11965
- ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12041
+ ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", pointMove: "pointMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11966
12042
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, decorators: [{
11967
12043
  type: Component,
11968
12044
  args: [{ selector: 'teta-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"] }]
@@ -11976,6 +12052,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
11976
12052
  type: Output
11977
12053
  }], seriesMove: [{
11978
12054
  type: Output
12055
+ }], pointMove: [{
12056
+ type: Output
11979
12057
  }], zoomChange: [{
11980
12058
  type: Output
11981
12059
  }], chart: [{
@@ -12154,6 +12232,7 @@ class PlotBand {
12154
12232
  this.to = options === null || options === void 0 ? void 0 : options.to;
12155
12233
  this.label = options === null || options === void 0 ? void 0 : options.label;
12156
12234
  this.color = (options === null || options === void 0 ? void 0 : options.color) || '#59AE501A';
12235
+ this.image = options === null || options === void 0 ? void 0 : options.image;
12157
12236
  this.showGrabbers =
12158
12237
  (options === null || options === void 0 ? void 0 : options.showGrabbers) != null ? options.showGrabbers : true;
12159
12238
  this.draggable = (options === null || options === void 0 ? void 0 : options.draggable) != null ? options === null || options === void 0 ? void 0 : options.draggable : false;